Merge "Add install flag --bypass-low-target-sdk-block"
diff --git a/BROADCASTS_OWNERS b/BROADCASTS_OWNERS
new file mode 100644
index 0000000..01f1f8a
--- /dev/null
+++ b/BROADCASTS_OWNERS
@@ -0,0 +1,5 @@
+# Bug component: 316181
+ctate@android.com
+jsharkey@google.com
+sudheersai@google.com
+yamasani@google.com #{LAST_RESORT_SUGGESTION}
diff --git a/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java b/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java
index 203bb54..2e44d82 100644
--- a/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java
+++ b/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java
@@ -245,7 +245,9 @@
}
long measuredTimeNs = 0;
- while (state.keepRunning(measuredTimeNs)) {
+ boolean shouldRetry = false;
+ while (shouldRetry || state.keepRunning(measuredTimeNs)) {
+ shouldRetry = false;
killBaselineIme();
try (ImeSession imeSession = new ImeSession(BaselineIme.getName(
getInstrumentation().getContext()))) {
@@ -268,6 +270,14 @@
});
measuredTimeNs = waitForAnimationStart(latchStart, startTime);
+
+ if (measuredTimeNs == ANIMATION_NOT_STARTED) {
+ // Animation didn't start within timeout,
+ // retry for more samples.
+ // TODO(b/264722663): Investigate the animation start failure reason.
+ shouldRetry = true;
+ Log.w(TAG, "Insets animation didn't start within timeout.");
+ }
mActivityRule.finishActivity();
}
}
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobServiceEngine.java b/apex/jobscheduler/framework/java/android/app/job/JobServiceEngine.java
index 53e452f..697641e 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobServiceEngine.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobServiceEngine.java
@@ -418,11 +418,12 @@
/**
* Call in to engine to report data transfer progress.
*
- * @hide
* @see JobService#updateTransferredNetworkBytes(JobParameters, long, long)
+ * @see JobService#updateTransferredNetworkBytes(JobParameters, JobWorkItem, long, long)
*/
public void updateTransferredNetworkBytes(@NonNull JobParameters params,
- @Nullable JobWorkItem item, long downloadBytes, long uploadBytes) {
+ @Nullable JobWorkItem item,
+ @BytesLong long downloadBytes, @BytesLong long uploadBytes) {
if (params == null) {
throw new NullPointerException("params");
}
@@ -437,11 +438,11 @@
/**
* Call in to engine to report data transfer progress.
*
- * @hide
+ * @see JobService#updateEstimatedNetworkBytes(JobParameters, long, long)
* @see JobService#updateEstimatedNetworkBytes(JobParameters, JobWorkItem, long, long)
*/
public void updateEstimatedNetworkBytes(@NonNull JobParameters params,
- @NonNull JobWorkItem item,
+ @Nullable JobWorkItem item,
@BytesLong long downloadBytes, @BytesLong long uploadBytes) {
if (params == null) {
throw new NullPointerException("params");
@@ -457,7 +458,6 @@
/**
* Give JobScheduler a notification to tie to this job's lifecycle.
*
- * @hide
* @see JobService#setNotification(JobParameters, int, Notification, int)
*/
public void setNotification(@NonNull JobParameters params, int notificationId,
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
index 53c56e7..9ec74e5 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
@@ -1033,10 +1033,10 @@
}
boolean needFileMigration = false;
long nowElapsed = sElapsedRealtimeClock.millis();
- for (File file : files) {
- final AtomicFile aFile = createJobFile(file);
- try (FileInputStream fis = aFile.openRead()) {
- synchronized (mLock) {
+ synchronized (mLock) {
+ for (File file : files) {
+ final AtomicFile aFile = createJobFile(file);
+ try (FileInputStream fis = aFile.openRead()) {
jobs = readJobMapImpl(fis, rtcGood, nowElapsed);
if (jobs != null) {
for (int i = 0; i < jobs.size(); i++) {
@@ -1054,33 +1054,35 @@
}
}
}
+ } catch (FileNotFoundException e) {
+ // mJobFileDirectory.listFiles() gave us this file...why can't we find it???
+ Slog.e(TAG, "Could not find jobs file: " + file.getName());
+ } catch (XmlPullParserException | IOException e) {
+ Slog.wtf(TAG, "Error in " + file.getName(), e);
+ } catch (Exception e) {
+ // Crashing at this point would result in a boot loop, so live with a
+ // generic Exception for system stability's sake.
+ Slog.wtf(TAG, "Unexpected exception", e);
}
- } catch (FileNotFoundException e) {
- // mJobFileDirectory.listFiles() gave us this file...why can't we find it???
- Slog.e(TAG, "Could not find jobs file: " + file.getName());
- } catch (XmlPullParserException | IOException e) {
- Slog.wtf(TAG, "Error in " + file.getName(), e);
- } catch (Exception e) {
- // Crashing at this point would result in a boot loop, so live with a general
- // Exception for system stability's sake.
- Slog.wtf(TAG, "Unexpected exception", e);
- }
- if (mUseSplitFiles) {
- if (!file.getName().startsWith(JOB_FILE_SPLIT_PREFIX)) {
- // We're supposed to be using the split file architecture, but we still have
- // the old job file around. Fully migrate and remove the old file.
+ if (mUseSplitFiles) {
+ if (!file.getName().startsWith(JOB_FILE_SPLIT_PREFIX)) {
+ // We're supposed to be using the split file architecture,
+ // but we still have
+ // the old job file around. Fully migrate and remove the old file.
+ needFileMigration = true;
+ }
+ } else if (file.getName().startsWith(JOB_FILE_SPLIT_PREFIX)) {
+ // We're supposed to be using the legacy single file architecture,
+ // but we still have some job split files around. Fully migrate
+ // and remove the split files.
needFileMigration = true;
}
- } else if (file.getName().startsWith(JOB_FILE_SPLIT_PREFIX)) {
- // We're supposed to be using the legacy single file architecture, but we still
- // have some job split files around. Fully migrate and remove the split files.
- needFileMigration = true;
}
- }
- if (mPersistInfo.countAllJobsLoaded < 0) { // Only set them once.
- mPersistInfo.countAllJobsLoaded = numJobs;
- mPersistInfo.countSystemServerJobsLoaded = numSystemJobs;
- mPersistInfo.countSystemSyncManagerJobsLoaded = numSyncJobs;
+ if (mPersistInfo.countAllJobsLoaded < 0) { // Only set them once.
+ mPersistInfo.countAllJobsLoaded = numJobs;
+ mPersistInfo.countSystemServerJobsLoaded = numSystemJobs;
+ mPersistInfo.countSystemSyncManagerJobsLoaded = numSyncJobs;
+ }
}
Slog.i(TAG, "Read " + numJobs + " jobs");
if (needFileMigration) {
diff --git a/core/api/current.txt b/core/api/current.txt
index 5dd1b39..1b54cc9 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -125,6 +125,18 @@
field public static final String MANAGE_DEVICE_POLICY_ACROSS_USERS = "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS";
field public static final String MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL = "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL";
field public static final String MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL = "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL";
+ field public static final String MANAGE_DEVICE_POLICY_APPS_CONTROL = "android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL";
+ field public static final String MANAGE_DEVICE_POLICY_APP_RESTRICTIONS = "android.permission.MANAGE_DEVICE_POLICY_APP_RESTRICTIONS";
+ field public static final String MANAGE_DEVICE_POLICY_BACKUP_SERVICE = "android.permission.MANAGE_DEVICE_POLICY_BACKUP_SERVICE";
+ field public static final String MANAGE_DEVICE_POLICY_CALLS = "android.permission.MANAGE_DEVICE_POLICY_CALLS";
+ field public static final String MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES = "android.permission.MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES";
+ field public static final String MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES = "android.permission.MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES";
+ field public static final String MANAGE_DEVICE_POLICY_LOCK_TASK = "android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK";
+ field public static final String MANAGE_DEVICE_POLICY_MODIFY_USERS = "android.permission.MANAGE_DEVICE_POLICY_MODIFY_USERS";
+ field public static final String MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY = "android.permission.MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY";
+ field public static final String MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS = "android.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS";
+ field public static final String MANAGE_DEVICE_POLICY_SAFE_BOOT = "android.permission.MANAGE_DEVICE_POLICY_SAFE_BOOT";
+ field public static final String MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE = "android.permission.MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE";
field public static final String MANAGE_DEVICE_POLICY_TIME = "android.permission.MANAGE_DEVICE_POLICY_TIME";
field public static final String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";
field public static final String MANAGE_EXTERNAL_STORAGE = "android.permission.MANAGE_EXTERNAL_STORAGE";
@@ -7535,6 +7547,7 @@
method @Nullable public android.app.admin.PackagePolicy getManagedProfileCallerIdAccessPolicy();
method @Nullable public android.app.admin.PackagePolicy getManagedProfileContactsAccessPolicy();
method public long getManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName);
+ method @NonNull public android.app.admin.ManagedSubscriptionsPolicy getManagedSubscriptionsPolicy();
method public int getMaximumFailedPasswordsForWipe(@Nullable android.content.ComponentName);
method public long getMaximumTimeToLock(@Nullable android.content.ComponentName);
method @NonNull public java.util.List<java.lang.String> getMeteredDataDisabledPackages(@NonNull android.content.ComponentName);
@@ -7685,6 +7698,7 @@
method public void setManagedProfileCallerIdAccessPolicy(@Nullable android.app.admin.PackagePolicy);
method public void setManagedProfileContactsAccessPolicy(@Nullable android.app.admin.PackagePolicy);
method public void setManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName, long);
+ method public void setManagedSubscriptionsPolicy(@Nullable android.app.admin.ManagedSubscriptionsPolicy);
method public void setMasterVolumeMuted(@NonNull android.content.ComponentName, boolean);
method public void setMaximumFailedPasswordsForWipe(@NonNull android.content.ComponentName, int);
method public void setMaximumTimeToLock(@NonNull android.content.ComponentName, long);
@@ -7987,6 +8001,16 @@
method public java.time.MonthDay getStart();
}
+ public final class ManagedSubscriptionsPolicy implements android.os.Parcelable {
+ ctor public ManagedSubscriptionsPolicy(int);
+ method public int describeContents();
+ method public int getPolicyType();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.ManagedSubscriptionsPolicy> CREATOR;
+ field public static final int TYPE_ALL_MANAGED_SUBSCRIPTIONS = 1; // 0x1
+ field public static final int TYPE_ALL_PERSONAL_SUBSCRIPTIONS = 0; // 0x0
+ }
+
public abstract class NetworkEvent implements android.os.Parcelable {
method public int describeContents();
method public long getId();
@@ -8160,6 +8184,7 @@
field @NonNull public static final android.app.admin.TargetUser GLOBAL;
field @NonNull public static final android.app.admin.TargetUser LOCAL_USER;
field @NonNull public static final android.app.admin.TargetUser PARENT_USER;
+ field @NonNull public static final android.app.admin.TargetUser UNKNOWN_USER;
}
public final class UnsafeStateException extends java.lang.IllegalStateException implements android.os.Parcelable {
@@ -8615,6 +8640,9 @@
method public void jobFinished(android.app.job.JobParameters, boolean);
method public abstract boolean onStartJob(android.app.job.JobParameters);
method public abstract boolean onStopJob(android.app.job.JobParameters);
+ method public void setNotification(@NonNull android.app.job.JobParameters, int, @NonNull android.app.Notification, int);
+ method public void updateEstimatedNetworkBytes(@NonNull android.app.job.JobParameters, @Nullable android.app.job.JobWorkItem, long, long);
+ method public void updateTransferredNetworkBytes(@NonNull android.app.job.JobParameters, @Nullable android.app.job.JobWorkItem, long, long);
}
public final class JobWorkItem implements android.os.Parcelable {
@@ -13222,7 +13250,7 @@
ctor public ClearCredentialStateException(@NonNull String, @Nullable String, @Nullable Throwable);
ctor public ClearCredentialStateException(@NonNull String, @Nullable Throwable);
ctor public ClearCredentialStateException(@NonNull String);
- field @NonNull public final String errorType;
+ method @NonNull public String getType();
}
public final class ClearCredentialStateRequest implements android.os.Parcelable {
@@ -13238,7 +13266,8 @@
ctor public CreateCredentialException(@NonNull String, @Nullable String, @Nullable Throwable);
ctor public CreateCredentialException(@NonNull String, @Nullable Throwable);
ctor public CreateCredentialException(@NonNull String);
- field @NonNull public final String errorType;
+ method @NonNull public String getType();
+ field @NonNull public static final String TYPE_NO_CREDENTIAL = "android.credentials.CreateCredentialException.TYPE_NO_CREDENTIAL";
}
public final class CreateCredentialRequest implements android.os.Parcelable {
@@ -13267,6 +13296,7 @@
method @NonNull public String getType();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.credentials.Credential> CREATOR;
+ field @NonNull public static final String TYPE_PASSWORD_CREDENTIAL = "android.credentials.TYPE_PASSWORD_CREDENTIAL";
}
public final class CredentialManager {
@@ -13280,7 +13310,8 @@
ctor public GetCredentialException(@NonNull String, @Nullable String, @Nullable Throwable);
ctor public GetCredentialException(@NonNull String, @Nullable Throwable);
ctor public GetCredentialException(@NonNull String);
- field @NonNull public final String errorType;
+ method @NonNull public String getType();
+ field @NonNull public static final String TYPE_NO_CREDENTIAL = "android.credentials.GetCredentialException.TYPE_NO_CREDENTIAL";
}
public final class GetCredentialOption implements android.os.Parcelable {
@@ -15080,6 +15111,29 @@
ctor @Deprecated public EmbossMaskFilter(float[], float, float, float);
}
+ public class HardwareBufferRenderer implements java.lang.AutoCloseable {
+ ctor public HardwareBufferRenderer(@NonNull android.hardware.HardwareBuffer);
+ method public void close();
+ method public boolean isClosed();
+ method @NonNull public android.graphics.HardwareBufferRenderer.RenderRequest obtainRenderRequest();
+ method public void setContentRoot(@Nullable android.graphics.RenderNode);
+ method public void setLightSourceAlpha(@FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+ method public void setLightSourceGeometry(float, float, @FloatRange(from=0.0f) float, @FloatRange(from=0.0f) float);
+ }
+
+ public final class HardwareBufferRenderer.RenderRequest {
+ method public void draw(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.graphics.HardwareBufferRenderer.RenderResult>);
+ method @NonNull public android.graphics.HardwareBufferRenderer.RenderRequest setBufferTransform(int);
+ method @NonNull public android.graphics.HardwareBufferRenderer.RenderRequest setColorSpace(@Nullable android.graphics.ColorSpace);
+ }
+
+ public static final class HardwareBufferRenderer.RenderResult {
+ method @NonNull public android.hardware.SyncFence getFence();
+ method public int getStatus();
+ field public static final int ERROR_UNKNOWN = 1; // 0x1
+ field public static final int SUCCESS = 0; // 0x0
+ }
+
public class HardwareRenderer {
ctor public HardwareRenderer();
method public void clearContent();
@@ -17664,8 +17718,8 @@
method public boolean flush(android.hardware.SensorEventListener);
method public static float getAltitude(float, float);
method public static void getAngleChange(float[], float[], float[]);
- method public android.hardware.Sensor getDefaultSensor(int);
- method public android.hardware.Sensor getDefaultSensor(int, boolean);
+ method @Nullable public android.hardware.Sensor getDefaultSensor(int);
+ method @Nullable public android.hardware.Sensor getDefaultSensor(int, boolean);
method public java.util.List<android.hardware.Sensor> getDynamicSensorList(int);
method public static float getInclination(float[]);
method public static float[] getOrientation(float[], float[]);
@@ -23746,6 +23800,8 @@
method @NonNull public android.media.MediaRoute2Info.Builder setDescription(@Nullable CharSequence);
method @NonNull public android.media.MediaRoute2Info.Builder setExtras(@Nullable android.os.Bundle);
method @NonNull public android.media.MediaRoute2Info.Builder setIconUri(@Nullable android.net.Uri);
+ method @NonNull public android.media.MediaRoute2Info.Builder setVisibilityPublic();
+ method @NonNull public android.media.MediaRoute2Info.Builder setVisibilityRestricted(@NonNull java.util.Set<java.lang.String>);
method @NonNull public android.media.MediaRoute2Info.Builder setVolume(int);
method @NonNull public android.media.MediaRoute2Info.Builder setVolumeHandling(int);
method @NonNull public android.media.MediaRoute2Info.Builder setVolumeMax(int);
@@ -24287,15 +24343,19 @@
public final class RouteListingPreference implements android.os.Parcelable {
method public int describeContents();
+ method @Nullable public android.content.ComponentName getInAppOnlyItemRoutingReceiver();
method @NonNull public java.util.List<android.media.RouteListingPreference.Item> getItems();
method public boolean getUseSystemOrdering();
method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field public static final String ACTION_TRANSFER_MEDIA = "android.media.action.TRANSFER_MEDIA";
field @NonNull public static final android.os.Parcelable.Creator<android.media.RouteListingPreference> CREATOR;
+ field public static final String EXTRA_ROUTE_ID = "android.media.extra.ROUTE_ID";
}
public static final class RouteListingPreference.Builder {
ctor public RouteListingPreference.Builder();
method @NonNull public android.media.RouteListingPreference build();
+ method @NonNull public android.media.RouteListingPreference.Builder setInAppOnlyItemRoutingReceiver(@Nullable android.content.ComponentName);
method @NonNull public android.media.RouteListingPreference.Builder setItems(@NonNull java.util.List<android.media.RouteListingPreference.Item>);
method @NonNull public android.media.RouteListingPreference.Builder setUseSystemOrdering(boolean);
}
@@ -24310,6 +24370,7 @@
field @NonNull public static final android.os.Parcelable.Creator<android.media.RouteListingPreference.Item> CREATOR;
field public static final int DISABLE_REASON_AD = 3; // 0x3
field public static final int DISABLE_REASON_DOWNLOADED_CONTENT = 2; // 0x2
+ field public static final int DISABLE_REASON_IN_APP_ONLY = 4; // 0x4
field public static final int DISABLE_REASON_NONE = 0; // 0x0
field public static final int DISABLE_REASON_SUBSCRIPTION_REQUIRED = 1; // 0x1
field public static final int FLAG_ONGOING_SESSION = 1; // 0x1
@@ -36339,6 +36400,7 @@
field public static final String ACTION_PROCESS_WIFI_EASY_CONNECT_URI = "android.settings.PROCESS_WIFI_EASY_CONNECT_URI";
field public static final String ACTION_QUICK_ACCESS_WALLET_SETTINGS = "android.settings.QUICK_ACCESS_WALLET_SETTINGS";
field public static final String ACTION_QUICK_LAUNCH_SETTINGS = "android.settings.QUICK_LAUNCH_SETTINGS";
+ field public static final String ACTION_REGIONAL_PREFERENCES_SETTINGS = "android.settings.REGIONAL_PREFERENCES_SETTINGS";
field public static final String ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
field public static final String ACTION_REQUEST_MANAGE_MEDIA = "android.settings.REQUEST_MANAGE_MEDIA";
field public static final String ACTION_REQUEST_SCHEDULE_EXACT_ALARM = "android.settings.REQUEST_SCHEDULE_EXACT_ALARM";
@@ -39742,9 +39804,8 @@
package android.service.credentials {
public class Action implements android.os.Parcelable {
- ctor public Action(@NonNull android.app.slice.Slice, @NonNull android.app.PendingIntent);
+ ctor public Action(@NonNull android.app.slice.Slice);
method public int describeContents();
- method @NonNull public android.app.PendingIntent getPendingIntent();
method @NonNull public android.app.slice.Slice getSlice();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.service.credentials.Action> CREATOR;
@@ -39811,10 +39872,10 @@
}
public final class CallingAppInfo implements android.os.Parcelable {
- ctor public CallingAppInfo(@NonNull String, @NonNull java.util.Set<android.content.pm.Signature>);
+ ctor public CallingAppInfo(@NonNull String, @NonNull android.content.pm.SigningInfo);
method public int describeContents();
method @NonNull public String getPackageName();
- method @NonNull public java.util.Set<android.content.pm.Signature> getSignatures();
+ method @NonNull public android.content.pm.SigningInfo getSigningInfo();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.service.credentials.CallingAppInfo> CREATOR;
}
@@ -39839,21 +39900,18 @@
}
public class CreateEntry implements android.os.Parcelable {
- ctor public CreateEntry(@NonNull android.app.slice.Slice, @NonNull android.app.PendingIntent);
+ ctor public CreateEntry(@NonNull android.app.slice.Slice);
method public int describeContents();
- method @NonNull public android.app.PendingIntent getPendingIntent();
method @NonNull public android.app.slice.Slice getSlice();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.service.credentials.CreateEntry> CREATOR;
}
public class CredentialEntry implements android.os.Parcelable {
- ctor public CredentialEntry(@NonNull String, @NonNull android.app.slice.Slice, @NonNull android.app.PendingIntent, boolean);
+ ctor public CredentialEntry(@NonNull String, @NonNull android.app.slice.Slice);
method public int describeContents();
- method @NonNull public android.app.PendingIntent getPendingIntent();
method @NonNull public android.app.slice.Slice getSlice();
method @NonNull public String getType();
- method public boolean isAutoSelectAllowed();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.service.credentials.CredentialEntry> CREATOR;
}
@@ -40383,7 +40441,7 @@
method public void onTileRemoved();
method public static final void requestListeningState(android.content.Context, android.content.ComponentName);
method public final void showDialog(android.app.Dialog);
- method public final void startActivityAndCollapse(android.content.Intent);
+ method @Deprecated public final void startActivityAndCollapse(android.content.Intent);
method public final void startActivityAndCollapse(@NonNull android.app.PendingIntent);
method public final void unlockAndRun(Runnable);
field public static final String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
@@ -41252,6 +41310,7 @@
method public void disconnect(@NonNull android.telecom.DisconnectCause, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
method @NonNull public android.os.ParcelUuid getCallId();
method public void rejectCall(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
+ method public void requestCallEndpointChange(@NonNull android.telecom.CallEndpoint, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
method public void setActive(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
method public void setInactive(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
method public void startCallStreaming(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
@@ -41289,10 +41348,12 @@
public interface CallEventCallback {
method public void onAnswer(int, @NonNull java.util.function.Consumer<java.lang.Boolean>);
- method public void onCallAudioStateChanged(@NonNull android.telecom.CallAudioState);
+ method public void onAvailableCallEndpointsChanged(@NonNull java.util.List<android.telecom.CallEndpoint>);
+ method public void onCallEndpointChanged(@NonNull android.telecom.CallEndpoint);
method public void onCallStreamingFailed(int);
method public void onCallStreamingStarted(@NonNull java.util.function.Consumer<java.lang.Boolean>);
method public void onDisconnect(@NonNull java.util.function.Consumer<java.lang.Boolean>);
+ method public void onMuteStateChanged(boolean);
method public void onReject(@NonNull java.util.function.Consumer<java.lang.Boolean>);
method public void onSetActive(@NonNull java.util.function.Consumer<java.lang.Boolean>);
method public void onSetInactive(@NonNull java.util.function.Consumer<java.lang.Boolean>);
@@ -50482,6 +50543,8 @@
field public static final int AXIS_GENERIC_7 = 38; // 0x26
field public static final int AXIS_GENERIC_8 = 39; // 0x27
field public static final int AXIS_GENERIC_9 = 40; // 0x28
+ field public static final int AXIS_GESTURE_SCROLL_X_DISTANCE = 50; // 0x32
+ field public static final int AXIS_GESTURE_SCROLL_Y_DISTANCE = 51; // 0x33
field public static final int AXIS_GESTURE_X_OFFSET = 48; // 0x30
field public static final int AXIS_GESTURE_Y_OFFSET = 49; // 0x31
field public static final int AXIS_HAT_X = 15; // 0xf
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 447b113..3216bd1 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -171,6 +171,7 @@
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK) public void setHfpEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK) public void setHfpSamplingRate(int);
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK) public void setHfpVolume(int);
+ method @RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK) public void setLeAudioSuspended(boolean);
method public void setStreamVolumeForUid(int, int, int, @NonNull String, int, int, int);
field public static final int FLAG_FROM_KEY = 4096; // 0x1000
}
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 1251b72..137751b 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -121,6 +121,7 @@
field public static final String EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS = "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS";
field public static final String FORCE_BACK = "android.permission.FORCE_BACK";
field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
+ field public static final String GET_APP_METADATA = "android.permission.GET_APP_METADATA";
field public static final String GET_APP_OPS_STATS = "android.permission.GET_APP_OPS_STATS";
field public static final String GET_HISTORICAL_APP_OPS_STATS = "android.permission.GET_HISTORICAL_APP_OPS_STATS";
field public static final String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE";
@@ -3024,7 +3025,7 @@
method public int getDeviceId();
method @Nullable public android.companion.virtual.sensor.VirtualSensor getVirtualSensor(int, @NonNull String);
method public void launchPendingIntent(int, @NonNull android.app.PendingIntent, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.IntConsumer);
- method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void registerIntentInterceptor(@NonNull java.util.concurrent.Executor, @NonNull android.content.IntentFilter, @NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback);
+ method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void registerIntentInterceptor(@NonNull android.content.IntentFilter, @NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback);
method public void removeActivityListener(@NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener);
method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setShowPointerIcon(boolean);
method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void unregisterIntentInterceptor(@NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback);
@@ -3651,7 +3652,7 @@
method public abstract boolean arePermissionsIndividuallyControlled();
method @NonNull public boolean canUserUninstall(@NonNull String, @NonNull android.os.UserHandle);
method @NonNull public abstract java.util.List<android.content.IntentFilter> getAllIntentFilters(@NonNull String);
- method @NonNull @RequiresPermission("android.permission.GET_APP_METADATA") public android.os.PersistableBundle getAppMetadata(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_METADATA) public android.os.PersistableBundle getAppMetadata(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException;
method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
method @NonNull @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.pm.ApplicationInfo getApplicationInfoAsUser(@NonNull String, @NonNull android.content.pm.PackageManager.ApplicationInfoFlags, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
method @NonNull public android.content.pm.dex.ArtManager getArtManager();
@@ -5770,6 +5771,19 @@
package android.hardware.usb {
+ public final class DisplayPortAltModeInfo implements android.os.Parcelable {
+ method public int describeContents();
+ method public int getCableStatus();
+ method public int getNumberOfLanes();
+ method public int getPartnerSinkStatus();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.hardware.usb.DisplayPortAltModeInfo> CREATOR;
+ field public static final int DISPLAYPORT_ALT_MODE_STATUS_CAPABLE = 2; // 0x2
+ field public static final int DISPLAYPORT_ALT_MODE_STATUS_ENABLED = 3; // 0x3
+ field public static final int DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE = 1; // 0x1
+ field public static final int DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN = 0; // 0x0
+ }
+
public class UsbDeviceConnection {
method public boolean resetDevice();
}
@@ -5778,8 +5792,10 @@
method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public long getCurrentFunctions();
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_USB) public java.util.List<android.hardware.usb.UsbPort> getPorts();
method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void grantPermission(android.hardware.usb.UsbDevice, String);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public boolean registerDisplayPortAltModeInfoListener(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.usb.UsbManager.DisplayPortAltModeInfoListener);
method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void resetUsbGadget();
method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setCurrentFunctions(long);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void unregisterDisplayPortAltModeInfoListener(@NonNull android.hardware.usb.UsbManager.DisplayPortAltModeInfoListener);
field @RequiresPermission(android.Manifest.permission.MANAGE_USB) public static final String ACTION_USB_ACCESSORY_HANDSHAKE = "android.hardware.usb.action.USB_ACCESSORY_HANDSHAKE";
field @RequiresPermission(android.Manifest.permission.MANAGE_USB) public static final String ACTION_USB_PORT_CHANGED = "android.hardware.usb.action.USB_PORT_CHANGED";
field @RequiresPermission(android.Manifest.permission.MANAGE_USB) public static final String ACTION_USB_PORT_COMPLIANCE_CHANGED = "android.hardware.usb.action.USB_PORT_COMPLIANCE_CHANGED";
@@ -5803,11 +5819,16 @@
field public static final String USB_FUNCTION_RNDIS = "rndis";
}
+ public static interface UsbManager.DisplayPortAltModeInfoListener {
+ method public void onDisplayPortAltModeInfoChanged(@NonNull String, @NonNull android.hardware.usb.DisplayPortAltModeInfo);
+ }
+
public final class UsbPort {
method @CheckResult @RequiresPermission(android.Manifest.permission.MANAGE_USB) public int enableLimitPowerTransfer(boolean);
method @CheckResult @RequiresPermission(android.Manifest.permission.MANAGE_USB) public int enableUsbData(boolean);
method @CheckResult @RequiresPermission(android.Manifest.permission.MANAGE_USB) public int enableUsbDataWhileDocked();
method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USB) public android.hardware.usb.UsbPortStatus getStatus();
+ method public boolean isAltModeSupported(int);
method @CheckResult @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void resetUsbPort(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
method @RequiresPermission(android.Manifest.permission.MANAGE_USB) public void setRoles(int, int);
method @CheckResult @RequiresPermission(android.Manifest.permission.MANAGE_USB) public boolean supportsComplianceWarnings();
@@ -5827,6 +5848,7 @@
field public static final int ENABLE_USB_DATA_WHILE_DOCKED_ERROR_OTHER = 5; // 0x5
field public static final int ENABLE_USB_DATA_WHILE_DOCKED_ERROR_PORT_MISMATCH = 3; // 0x3
field public static final int ENABLE_USB_DATA_WHILE_DOCKED_SUCCESS = 0; // 0x0
+ field public static final int FLAG_ALT_MODE_TYPE_DISPLAYPORT = 1; // 0x1
field public static final int RESET_USB_PORT_ERROR_INTERNAL = 1; // 0x1
field public static final int RESET_USB_PORT_ERROR_NOT_SUPPORTED = 2; // 0x2
field public static final int RESET_USB_PORT_ERROR_OTHER = 4; // 0x4
@@ -5840,6 +5862,8 @@
method public int getCurrentDataRole();
method public int getCurrentMode();
method public int getCurrentPowerRole();
+ method @Nullable public android.hardware.usb.DisplayPortAltModeInfo getDisplayPortAltModeInfo();
+ method public int getPlugState();
method public int getPowerBrickConnectionStatus();
method public int getSupportedRoleCombinations();
method public int getUsbDataStatus();
@@ -5869,6 +5893,11 @@
field public static final int MODE_DFP = 2; // 0x2
field public static final int MODE_NONE = 0; // 0x0
field public static final int MODE_UFP = 1; // 0x1
+ field public static final int PLUG_STATE_PLUGGED_ORIENTATION_FLIPPED = 4; // 0x4
+ field public static final int PLUG_STATE_PLUGGED_ORIENTATION_NORMAL = 3; // 0x3
+ field public static final int PLUG_STATE_PLUGGED_ORIENTATION_UNKNOWN = 2; // 0x2
+ field public static final int PLUG_STATE_UNKNOWN = 0; // 0x0
+ field public static final int PLUG_STATE_UNPLUGGED = 1; // 0x1
field public static final int POWER_BRICK_STATUS_CONNECTED = 1; // 0x1
field public static final int POWER_BRICK_STATUS_DISCONNECTED = 2; // 0x2
field public static final int POWER_BRICK_STATUS_UNKNOWN = 0; // 0x0
@@ -10387,6 +10416,7 @@
field public static final String DISALLOW_RUN_IN_BACKGROUND = "no_run_in_background";
field public static final int REMOVE_RESULT_ALREADY_BEING_REMOVED = 2; // 0x2
field public static final int REMOVE_RESULT_DEFERRED = 1; // 0x1
+ field public static final int REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN = -5; // 0xfffffffb
field public static final int REMOVE_RESULT_ERROR_SYSTEM_USER = -4; // 0xfffffffc
field public static final int REMOVE_RESULT_ERROR_UNKNOWN = -1; // 0xffffffff
field public static final int REMOVE_RESULT_ERROR_USER_NOT_FOUND = -3; // 0xfffffffd
@@ -10980,6 +11010,7 @@
field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS = "android.settings.NOTIFICATION_POLICY_ACCESS_DETAIL_SETTINGS";
field public static final String ACTION_REQUEST_ENABLE_CONTENT_CAPTURE = "android.settings.REQUEST_ENABLE_CONTENT_CAPTURE";
field public static final String ACTION_SHOW_ADMIN_SUPPORT_DETAILS = "android.settings.SHOW_ADMIN_SUPPORT_DETAILS";
+ field public static final String ACTION_SHOW_RESTRICTED_SETTING_DIALOG = "android.settings.SHOW_RESTRICTED_SETTING_DIALOG";
field public static final String ACTION_TETHER_PROVISIONING_UI = "android.settings.TETHER_PROVISIONING_UI";
field public static final String ACTION_TETHER_SETTINGS = "android.settings.TETHER_SETTINGS";
field public static final String ACTION_TETHER_UNSUPPORTED_CARRIER_UI = "android.settings.TETHER_UNSUPPORTED_CARRIER_UI";
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index f675f70..e3554a5 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -997,7 +997,8 @@
public final class Entry implements android.os.Parcelable {
ctor public Entry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice);
- ctor public Entry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice, @NonNull android.app.PendingIntent, @Nullable android.content.Intent);
+ ctor public Entry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice, @NonNull android.app.PendingIntent, @NonNull android.content.Intent);
+ ctor public Entry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice, @NonNull android.content.Intent);
method public int describeContents();
method @Nullable public android.content.Intent getFrameworkExtrasIntent();
method @NonNull public String getKey();
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 32d88b2..c0239e8 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -9085,6 +9085,25 @@
state, sourceSpec, targetSpec, viewIds, uiTranslationSpec);
}
+ /**
+ * If set, any activity launch in the same task will be overridden to the locale of activity
+ * that started the task.
+ *
+ * <p>Currently, Android supports per app languages, and system apps are able to start
+ * activities of another package on the same task, which may cause users to set different
+ * languages in different apps and display two different languages in one app.</p>
+ *
+ * <p>The <a href="https://developer.android.com/guide/topics/large-screens/activity-embedding">
+ * activity embedding feature</a> will align the locale with root activity automatically, but
+ * it doesn't land on the phone yet. If activity embedding land on the phone in the future,
+ * please consider adapting activity embedding directly.</p>
+ *
+ * @hide
+ */
+ public void enableTaskLocaleOverride() {
+ ActivityClient.getInstance().enableTaskLocaleOverride(mToken);
+ }
+
class HostCallbacks extends FragmentHostCallback<Activity> {
public HostCallbacks() {
super(Activity.this /*activity*/);
diff --git a/core/java/android/app/ActivityClient.java b/core/java/android/app/ActivityClient.java
index 558dae5..aa868a7 100644
--- a/core/java/android/app/ActivityClient.java
+++ b/core/java/android/app/ActivityClient.java
@@ -563,6 +563,14 @@
}
}
+ void enableTaskLocaleOverride(IBinder token) {
+ try {
+ getActivityClientController().enableTaskLocaleOverride(token);
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ }
+
/**
* Shows or hides a Camera app compat toggle for stretched issues with the requested state.
*
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index afd8a52..86482c0 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -5773,10 +5773,6 @@
handleRelaunchActivityInner(r, configChanges, tmp.pendingResults, tmp.pendingIntents,
pendingActions, tmp.startsNotResumed, tmp.overrideConfig, "handleRelaunchActivity");
- if (pendingActions != null) {
- // Only report a successful relaunch to WindowManager.
- pendingActions.setReportRelaunchToWindowManager(true);
- }
}
void scheduleRelaunchActivity(IBinder token) {
@@ -5884,11 +5880,8 @@
}
@Override
- public void reportRelaunch(ActivityClientRecord r, PendingTransactionActions pendingActions) {
+ public void reportRelaunch(ActivityClientRecord r) {
ActivityClient.getInstance().activityRelaunched(r.token);
- if (pendingActions.shouldReportRelaunchToWindowManager() && r.window != null) {
- r.window.reportActivityRelaunched();
- }
}
private void callActivityOnSaveInstanceState(ActivityClientRecord r) {
diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java
index e658cb7..6bb38e7 100644
--- a/core/java/android/app/ClientTransactionHandler.java
+++ b/core/java/android/app/ClientTransactionHandler.java
@@ -234,9 +234,6 @@
/**
* Report that relaunch request was handled.
* @param r Target activity record.
- * @param pendingActions Pending actions initialized on earlier stages of activity transaction.
- * Used to check if we should report relaunch to WM.
- * */
- public abstract void reportRelaunch(@NonNull ActivityClientRecord r,
- PendingTransactionActions pendingActions);
+ */
+ public abstract void reportRelaunch(@NonNull ActivityClientRecord r);
}
diff --git a/core/java/android/app/IActivityClientController.aidl b/core/java/android/app/IActivityClientController.aidl
index ecea46a..03646c6 100644
--- a/core/java/android/app/IActivityClientController.aidl
+++ b/core/java/android/app/IActivityClientController.aidl
@@ -171,4 +171,10 @@
*/
oneway void requestCompatCameraControl(in IBinder token, boolean showControl,
boolean transformationApplied, in ICompatCameraControlCallback callback);
+
+ /**
+ * If set, any activity launch in the same task will be overridden to the locale of activity
+ * that started the task.
+ */
+ void enableTaskLocaleOverride(in IBinder token);
}
diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java
index 512b5e0..c58e627 100644
--- a/core/java/android/app/PendingIntent.java
+++ b/core/java/android/app/PendingIntent.java
@@ -879,6 +879,20 @@
}
/**
+ * Perform the operation associated with this PendingIntent, supplying additional
+ * options for the operation.
+ *
+ * @param options Additional options the caller would like to provide to modify the
+ * sending behavior. May be built from an {@link ActivityOptions} to apply to an
+ * activity start.
+ *
+ * @hide
+ */
+ public void send(Bundle options) throws CanceledException {
+ send(null, 0, null, null, null, null, options);
+ }
+
+ /**
* Perform the operation associated with this PendingIntent, allowing the
* caller to be notified when the send has completed.
*
diff --git a/core/java/android/app/admin/DeviceAdminService.java b/core/java/android/app/admin/DeviceAdminService.java
index 04fff04..e6f04c6 100644
--- a/core/java/android/app/admin/DeviceAdminService.java
+++ b/core/java/android/app/admin/DeviceAdminService.java
@@ -20,6 +20,7 @@
import android.content.Intent;
import android.os.IBinder;
+// TODO(b/263363091): Restrict to DPC and holders of a new role permission and update javadocs
/**
* Base class for a service that device owner/profile owners can optionally have.
*
@@ -45,6 +46,11 @@
*
* <p>Note the process may still be killed if the system is under heavy memory pressure, in which
* case the process will be re-started later.
+ *
+ * <p>Starting from Android {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE},
+ * non-DPC admins can also optionally implement this service using the details
+ * mentioned above to ensure they receive policy update broadcasts
+ * (see {@link PolicyUpdatesReceiver}).
*/
public class DeviceAdminService extends Service {
private final IDeviceAdminServiceImpl mImpl;
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 209b112..ad17e0d 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -1145,6 +1145,9 @@
* <p>Use only for device owner provisioning. This extra can be returned by the admin app when
* performing the admin-integrated provisioning flow as a result of the {@link
* #ACTION_GET_PROVISIONING_MODE} activity.
+ *
+ * <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_TIME_ZONE
= "android.app.extra.PROVISIONING_TIME_ZONE";
@@ -1156,6 +1159,9 @@
* <p>Use only for device owner provisioning. This extra can be returned by the admin app when
* performing the admin-integrated provisioning flow as a result of the {@link
* #ACTION_GET_PROVISIONING_MODE} activity.
+ *
+ * <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_LOCAL_TIME
= "android.app.extra.PROVISIONING_LOCAL_TIME";
@@ -1167,6 +1173,9 @@
* <p>Use only for device owner provisioning. This extra can be returned by the admin app when
* performing the admin-integrated provisioning flow as a result of the {@link
* #ACTION_GET_PROVISIONING_MODE} activity.
+ *
+ * <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_LOCALE
= "android.app.extra.PROVISIONING_LOCALE";
@@ -1176,7 +1185,7 @@
* owner provisioning for downloading the mobile device management application.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_WIFI_SSID
= "android.app.extra.PROVISIONING_WIFI_SSID";
@@ -1186,7 +1195,7 @@
* is hidden or not.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_WIFI_HIDDEN
= "android.app.extra.PROVISIONING_WIFI_HIDDEN";
@@ -1197,7 +1206,7 @@
* {@code WEP} or {@code EAP}.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
= "android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE";
@@ -1207,7 +1216,7 @@
* {@link #EXTRA_PROVISIONING_WIFI_SSID}.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_WIFI_PASSWORD =
"android.app.extra.PROVISIONING_WIFI_PASSWORD";
@@ -1298,7 +1307,7 @@
* {@link #EXTRA_PROVISIONING_WIFI_SSID}.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_WIFI_PROXY_HOST
= "android.app.extra.PROVISIONING_WIFI_PROXY_HOST";
@@ -1308,7 +1317,7 @@
* {@link #EXTRA_PROVISIONING_WIFI_SSID}.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_WIFI_PROXY_PORT
= "android.app.extra.PROVISIONING_WIFI_PROXY_PORT";
@@ -1318,7 +1327,7 @@
* {@link #EXTRA_PROVISIONING_WIFI_SSID}.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
= "android.app.extra.PROVISIONING_WIFI_PROXY_BYPASS";
@@ -1328,7 +1337,7 @@
* {@link #EXTRA_PROVISIONING_WIFI_SSID}.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_WIFI_PAC_URL
= "android.app.extra.PROVISIONING_WIFI_PAC_URL";
@@ -1338,7 +1347,7 @@
* package. When not provided it is assumed that the device admin package is already installed.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION
= "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION";
@@ -1418,7 +1427,7 @@
* installed package is less than this version code.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE
= "android.app.extra.PROVISIONING_DEVICE_ADMIN_MINIMUM_VERSION_CODE";
@@ -1428,7 +1437,7 @@
* url specified in {@link #EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION}.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER
= "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_COOKIE_HEADER";
@@ -1443,7 +1452,7 @@
* be asked to factory reset the device.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*
* <p><strong>Note:</strong> for devices running {@link android.os.Build.VERSION_CODES#LOLLIPOP}
* and {@link android.os.Build.VERSION_CODES#LOLLIPOP_MR1} only SHA-1 hash is supported.
@@ -1489,7 +1498,7 @@
* the user will be asked to factory reset the device.
*
* <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC} that starts device owner
- * provisioning via an NFC bump.
+ * provisioning via an NFC bump. It can also be used for QR code provisioning.
*/
public static final String EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM
= "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM";
@@ -3996,6 +4005,12 @@
*/
public static final String LOCK_TASK_POLICY = "lockTask";
+ // TODO: Expose this as SystemAPI once we add the query API
+ /**
+ * @hide
+ */
+ public static final String USER_CONTROL_DISABLED_PACKAGES = "userControlDisabledPackages";
+
/**
* This object is a single place to tack on invalidation and disable calls. All
* binder caches in this class derive from this Config, so all can be invalidated or
@@ -10982,6 +10997,51 @@
}
/**
+ * Called by a profile owner of an organization-owned device to specify {@link
+ * ManagedSubscriptionsPolicy}
+ *
+ * <p>Managed subscriptions policy controls how SIMs would be associated with the
+ * managed profile. For example a policy of type
+ * {@link ManagedSubscriptionsPolicy#TYPE_ALL_MANAGED_SUBSCRIPTIONS} assigns all
+ * SIM-based subscriptions to the managed profile. In this case OEM default
+ * dialer and messages app are automatically installed in the managed profile
+ * and all incoming and outgoing calls and text messages are handled by them.
+ * <p>This API can only be called during device setup.
+ *
+ * @param policy {@link ManagedSubscriptionsPolicy} policy, passing null for this resets the
+ * policy to be the default.
+ * @throws SecurityException if the caller is not a profile owner on an organization-owned
+ * managed profile.
+ * @throws IllegalStateException if called after the device setup has been completed.
+ * @see ManagedSubscriptionsPolicy
+ */
+ public void setManagedSubscriptionsPolicy(@Nullable ManagedSubscriptionsPolicy policy) {
+ throwIfParentInstance("setManagedSubscriptionsPolicy");
+ try {
+ mService.setManagedSubscriptionsPolicy(policy);
+ } catch (RemoteException re) {
+ throw re.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Returns the current {@link ManagedSubscriptionsPolicy}.
+ * If the policy has not been set, it will return a default policy of Type {@link
+ * ManagedSubscriptionsPolicy#TYPE_ALL_PERSONAL_SUBSCRIPTIONS}.
+ *
+ * @see #setManagedSubscriptionsPolicy(ManagedSubscriptionsPolicy)
+ */
+ @NonNull
+ public ManagedSubscriptionsPolicy getManagedSubscriptionsPolicy() {
+ throwIfParentInstance("getManagedSubscriptionsPolicy");
+ try {
+ return mService.getManagedSubscriptionsPolicy();
+ } catch (RemoteException re) {
+ throw re.rethrowFromSystemServer();
+ }
+ }
+
+ /**
* Similar to {@link #logoutUser(ComponentName)}, except:
*
* <ul>
@@ -14151,12 +14211,12 @@
* {@link DeviceAdminReceiver#DEVICE_ADMIN_META_DATA}. Otherwise an
* {@link IllegalArgumentException} will be thrown.
*
- * @param admin which {@link DeviceAdminReceiver} this request is associated with
- * @param target which {@link DeviceAdminReceiver} we want the new administrator to be
- * @param bundle data to be sent to the new administrator
- * @throws SecurityException if {@code admin} is not a device owner nor a profile owner
+ * @param admin which {@link DeviceAdminReceiver} this request is associated with.
+ * @param target which {@link DeviceAdminReceiver} we want the new administrator to be.
+ * @param bundle data to be sent to the new administrator.
+ * @throws SecurityException if {@code admin} is not a device owner nor a profile owner.
* @throws IllegalArgumentException if {@code admin} or {@code target} is {@code null}, they
- * are components in the same package or {@code target} is not an active admin
+ * are components in the same package or {@code target} is not an active admin.
*/
public void transferOwnership(@NonNull ComponentName admin, @NonNull ComponentName target,
@Nullable PersistableBundle bundle) {
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 26d7667..20695ca 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -34,6 +34,7 @@
import android.app.admin.FactoryResetProtectionPolicy;
import android.app.admin.ManagedProfileProvisioningParams;
import android.app.admin.FullyManagedDeviceProvisioningParams;
+import android.app.admin.ManagedSubscriptionsPolicy;
import android.app.admin.WifiSsidPolicy;
import android.content.ComponentName;
import android.content.Intent;
@@ -583,4 +584,7 @@
void setMtePolicy(int flag);
int getMtePolicy();
+
+ void setManagedSubscriptionsPolicy(in ManagedSubscriptionsPolicy policy);
+ ManagedSubscriptionsPolicy getManagedSubscriptionsPolicy();
}
diff --git a/core/java/android/app/timedetector/TimePoint.aidl b/core/java/android/app/admin/ManagedSubscriptionsPolicy.aidl
similarity index 74%
copy from core/java/android/app/timedetector/TimePoint.aidl
copy to core/java/android/app/admin/ManagedSubscriptionsPolicy.aidl
index 80d4bc1..f634f11 100644
--- a/core/java/android/app/timedetector/TimePoint.aidl
+++ b/core/java/android/app/admin/ManagedSubscriptionsPolicy.aidl
@@ -1,11 +1,11 @@
/*
- * Copyright (C) 2022, The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package android.app.timedetector;
+package android.app.admin;
-parcelable TimePoint;
+parcelable ManagedSubscriptionsPolicy;
\ No newline at end of file
diff --git a/core/java/android/app/admin/ManagedSubscriptionsPolicy.java b/core/java/android/app/admin/ManagedSubscriptionsPolicy.java
new file mode 100644
index 0000000..1098c38
--- /dev/null
+++ b/core/java/android/app/admin/ManagedSubscriptionsPolicy.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.admin;
+
+import android.annotation.IntDef;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.modules.utils.TypedXmlPullParser;
+import com.android.modules.utils.TypedXmlSerializer;
+
+import java.io.IOException;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+/**
+ * A policy class that describes how managed SIM subscriptions should behave on the device.
+ */
+public final class ManagedSubscriptionsPolicy implements Parcelable {
+ private static final String TAG = "ManagedSubscriptionsPolicy";
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(prefix = {"TYPE_"}, value = {TYPE_ALL_PERSONAL_SUBSCRIPTIONS,
+ TYPE_ALL_MANAGED_SUBSCRIPTIONS})
+ @interface ManagedSubscriptionsPolicyType {
+ }
+
+ /**
+ * Represents default policy to not have any managed subscriptions on the device.
+ */
+ public static final int TYPE_ALL_PERSONAL_SUBSCRIPTIONS = 0;
+
+ /**
+ * Represents policy to have only managed subscriptions on the device, any existing and
+ * future subscriptions on the device are exclusively associated with the managed profile.
+ *
+ * <p>When a subscription is associated with the managed profile, incoming/outgoing calls and
+ * text message using that subscription would only work via apps on managed profile.
+ * Also, Call logs and messages would be accessible only from the managed profile.
+ */
+ public static final int TYPE_ALL_MANAGED_SUBSCRIPTIONS = 1;
+
+ @ManagedSubscriptionsPolicyType
+ private final int mPolicyType;
+
+ private static final String KEY_POLICY_TYPE = "policy_type";
+
+ public ManagedSubscriptionsPolicy(@ManagedSubscriptionsPolicyType int policyType) {
+ if (policyType != TYPE_ALL_PERSONAL_SUBSCRIPTIONS
+ && policyType != TYPE_ALL_MANAGED_SUBSCRIPTIONS) {
+ throw new IllegalArgumentException("Invalid policy type");
+ }
+ mPolicyType = policyType;
+ }
+
+ @NonNull
+ public static final Parcelable.Creator<ManagedSubscriptionsPolicy> CREATOR =
+ new Parcelable.Creator<ManagedSubscriptionsPolicy>() {
+ public ManagedSubscriptionsPolicy createFromParcel(Parcel in) {
+ ManagedSubscriptionsPolicy policy = new ManagedSubscriptionsPolicy(
+ in.readInt());
+ return policy;
+ }
+
+ @Override
+ public ManagedSubscriptionsPolicy[] newArray(int size) {
+ return new ManagedSubscriptionsPolicy[size];
+ }
+ };
+
+ /**
+ * Returns the type of managed subscriptions policy, or {@link #TYPE_ALL_PERSONAL_SUBSCRIPTIONS}
+ * if no policy has been set.
+ *
+ * @return The policy type.
+ */
+ @ManagedSubscriptionsPolicyType
+ public int getPolicyType() {
+ return mPolicyType;
+ }
+
+ @Override
+ public String toString() {
+ return TextUtils.formatSimple("ManagedSubscriptionsPolicy (type: %d)", mPolicyType);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(mPolicyType);
+ }
+
+ @Override
+ public boolean equals(Object thatObject) {
+ if (this == thatObject) {
+ return true;
+ }
+ if (!(thatObject instanceof ManagedSubscriptionsPolicy)) {
+ return false;
+ }
+ ManagedSubscriptionsPolicy that = (ManagedSubscriptionsPolicy) thatObject;
+ return mPolicyType == that.mPolicyType;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mPolicyType);
+ }
+
+ /** @hide */
+ @Nullable
+ public static ManagedSubscriptionsPolicy readFromXml(@NonNull TypedXmlPullParser parser) {
+ try {
+ ManagedSubscriptionsPolicy policy = new ManagedSubscriptionsPolicy(
+ parser.getAttributeInt(null, KEY_POLICY_TYPE, -1));
+
+ return policy;
+ } catch (IllegalArgumentException e) {
+ // Fail through
+ Log.w(TAG, "Load xml failed", e);
+ }
+ return null;
+ }
+
+ /**
+ * @hide
+ */
+ public void saveToXml(TypedXmlSerializer out) throws IOException {
+ out.attributeInt(null, KEY_POLICY_TYPE, mPolicyType);
+ }
+}
diff --git a/core/java/android/app/admin/PolicyUpdatesReceiver.java b/core/java/android/app/admin/PolicyUpdatesReceiver.java
index ff30a5f..3ad3157 100644
--- a/core/java/android/app/admin/PolicyUpdatesReceiver.java
+++ b/core/java/android/app/admin/PolicyUpdatesReceiver.java
@@ -32,7 +32,6 @@
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;
-// TODO(b/261432333): Add more detailed javadocs on using DeviceAdminService.
/**
* Base class for implementing a policy update receiver. This class provides a convenience for
* interpreting the raw intent actions ({@link #ACTION_DEVICE_POLICY_SET_RESULT} and
@@ -43,6 +42,10 @@
*
* <p>When publishing your {@code PolicyUpdatesReceiver} subclass as a receiver, it must
* require the {@link android.Manifest.permission#BIND_DEVICE_ADMIN} permission.
+ *
+ * <p>Admins can implement {@link DeviceAdminService} to ensure they receive all policy updates
+ * (for policies they have set) via {@link #onPolicyChanged} by constantly being bound to by the
+ * system. For more information see {@link DeviceAdminService}.
*/
public abstract class PolicyUpdatesReceiver extends BroadcastReceiver {
private static String TAG = "PolicyUpdatesReceiver";
diff --git a/core/java/android/app/admin/TargetUser.java b/core/java/android/app/admin/TargetUser.java
index acbac29..1ec2d52 100644
--- a/core/java/android/app/admin/TargetUser.java
+++ b/core/java/android/app/admin/TargetUser.java
@@ -44,6 +44,11 @@
public static final int GLOBAL_USER_ID = -3;
/**
+ * @hide
+ */
+ public static final int UNKNOWN_USER_ID = -3;
+
+ /**
* Indicates that the policy relates to the user the admin is installed on.
*/
@NonNull
@@ -61,6 +66,15 @@
@NonNull
public static final TargetUser GLOBAL = new TargetUser(GLOBAL_USER_ID);
+ /**
+ * Indicates that the policy relates to some unknown user on the device. For example, if Admin1
+ * has set a global policy on a device and Admin2 has set a conflicting local
+ * policy on some other secondary user, Admin1 will get a policy update callback with
+ * {@code UNKNOWN_USER} as the target user.
+ */
+ @NonNull
+ public static final TargetUser UNKNOWN_USER = new TargetUser(UNKNOWN_USER_ID);
+
private final int mUserId;
/**
diff --git a/core/java/android/app/servertransaction/ActivityRelaunchItem.java b/core/java/android/app/servertransaction/ActivityRelaunchItem.java
index b26dac71..a8b058a 100644
--- a/core/java/android/app/servertransaction/ActivityRelaunchItem.java
+++ b/core/java/android/app/servertransaction/ActivityRelaunchItem.java
@@ -81,7 +81,7 @@
public void postExecute(ClientTransactionHandler client, IBinder token,
PendingTransactionActions pendingActions) {
final ActivityClientRecord r = getActivityClientRecord(client, token);
- client.reportRelaunch(r, pendingActions);
+ client.reportRelaunch(r);
}
// ObjectPoolItem implementation
diff --git a/core/java/android/app/servertransaction/PendingTransactionActions.java b/core/java/android/app/servertransaction/PendingTransactionActions.java
index 8174778..d1b6296 100644
--- a/core/java/android/app/servertransaction/PendingTransactionActions.java
+++ b/core/java/android/app/servertransaction/PendingTransactionActions.java
@@ -44,7 +44,6 @@
private boolean mCallOnPostCreate;
private Bundle mOldState;
private StopInfo mStopInfo;
- private boolean mReportRelaunchToWM;
public PendingTransactionActions() {
clear();
@@ -92,24 +91,6 @@
mStopInfo = stopInfo;
}
- /**
- * Check if we should report an activity relaunch to WindowManager. We report back for every
- * relaunch request to ActivityManager, but only for those that were actually finished to we
- * report to WindowManager.
- */
- public boolean shouldReportRelaunchToWindowManager() {
- return mReportRelaunchToWM;
- }
-
- /**
- * Set if we should report an activity relaunch to WindowManager. We report back for every
- * relaunch request to ActivityManager, but only for those that were actually finished we report
- * to WindowManager.
- */
- public void setReportRelaunchToWindowManager(boolean reportToWm) {
- mReportRelaunchToWM = reportToWm;
- }
-
/** Reports to server about activity stop. */
public static class StopInfo implements Runnable {
private static final String TAG = "ActivityStopInfo";
diff --git a/core/java/android/app/timedetector/ITimeDetectorService.aidl b/core/java/android/app/timedetector/ITimeDetectorService.aidl
index a0c898e..96eddd2 100644
--- a/core/java/android/app/timedetector/ITimeDetectorService.aidl
+++ b/core/java/android/app/timedetector/ITimeDetectorService.aidl
@@ -24,7 +24,6 @@
import android.app.time.UnixEpochTime;
import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.TelephonyTimeSuggestion;
-import android.app.timedetector.TimePoint;
/**
* Binder APIs to communicate with the time detector service.
@@ -55,5 +54,5 @@
boolean suggestManualTime(in ManualTimeSuggestion timeSuggestion);
void suggestTelephonyTime(in TelephonyTimeSuggestion timeSuggestion);
- TimePoint latestNetworkTime();
+ UnixEpochTime latestNetworkTime();
}
diff --git a/core/java/android/app/timedetector/TimePoint.java b/core/java/android/app/timedetector/TimePoint.java
deleted file mode 100644
index aa079a9..0000000
--- a/core/java/android/app/timedetector/TimePoint.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.app.timedetector;
-
-import android.annotation.NonNull;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.Objects;
-
-/**
- * Data class for passing a Unix epoch time anchored to the elapsed realtime clock.
- *
- * @hide
- */
-public final class TimePoint implements Parcelable {
-
- private final long mUnixEpochTimeMillis;
- private final long mElapsedRealtimeMillis;
-
- public TimePoint(long unixEpochTimeMillis, long elapsedRealtimeMillis) {
- mUnixEpochTimeMillis = unixEpochTimeMillis;
- mElapsedRealtimeMillis = elapsedRealtimeMillis;
- }
-
- /**
- * The current Unix epoch time, according to the external source.
- */
- public long getUnixEpochTimeMillis() {
- return mUnixEpochTimeMillis;
- }
-
- /**
- * The elapsed millis since boot when {@link #getUnixEpochTimeMillis} was computed.
- */
- public long getElapsedRealtimeMillis() {
- return mElapsedRealtimeMillis;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
- out.writeLong(mUnixEpochTimeMillis);
- out.writeLong(mElapsedRealtimeMillis);
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof TimePoint)) {
- return false;
- }
- TimePoint timePoint = (TimePoint) o;
- return mUnixEpochTimeMillis == timePoint.mUnixEpochTimeMillis
- && mElapsedRealtimeMillis == timePoint.mElapsedRealtimeMillis;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(mUnixEpochTimeMillis, mElapsedRealtimeMillis);
- }
-
- @Override
- public String toString() {
- return "TimePoint{"
- + "mUnixEpochTimeMillis=" + mUnixEpochTimeMillis
- + ", mElapsedRealtimeMillis=" + mElapsedRealtimeMillis
- + '}';
- }
-
- public static final @NonNull Creator<TimePoint> CREATOR =
- new Creator<TimePoint>() {
- public TimePoint createFromParcel(Parcel in) {
- long unixEpochTime = in.readLong();
- long elapsedRealtimeMillis = in.readLong();
- return new TimePoint(unixEpochTime, elapsedRealtimeMillis);
- }
-
- public TimePoint[] newArray(int size) {
- return new TimePoint[size];
- }
- };
-}
diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java
index adf59fb..6ad18d5 100644
--- a/core/java/android/companion/virtual/VirtualDeviceManager.java
+++ b/core/java/android/companion/virtual/VirtualDeviceManager.java
@@ -931,16 +931,16 @@
* when matching the provided IntentFilter and calls the callback with the intercepted
* intent.
*
- * @param executor The executor where the interceptor is executed on.
* @param interceptorFilter The filter to match intents intended for interception.
+ * @param executor The executor where the interceptor is executed on.
* @param interceptorCallback The callback called when an intent matching interceptorFilter
* is intercepted.
* @see #unregisterIntentInterceptor(IntentInterceptorCallback)
*/
@RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
public void registerIntentInterceptor(
- @CallbackExecutor @NonNull Executor executor,
@NonNull IntentFilter interceptorFilter,
+ @CallbackExecutor @NonNull Executor executor,
@NonNull IntentInterceptorCallback interceptorCallback) {
Objects.requireNonNull(executor);
Objects.requireNonNull(interceptorFilter);
diff --git a/core/java/android/content/OWNERS b/core/java/android/content/OWNERS
index 3e43ceb..d73f48a 100644
--- a/core/java/android/content/OWNERS
+++ b/core/java/android/content/OWNERS
@@ -14,3 +14,4 @@
per-file ComponentCallbacksController = file:/services/core/java/com/android/server/wm/OWNERS
per-file ComponentCallbacksController = charlesccchen@google.com
per-file AttributionSource* = file:/core/java/android/permission/OWNERS
+per-file Broadcast* = file:/BROADCASTS_OWNERS
diff --git a/core/java/android/content/pm/UserProperties.java b/core/java/android/content/pm/UserProperties.java
index 7f0f44b..51662af 100644
--- a/core/java/android/content/pm/UserProperties.java
+++ b/core/java/android/content/pm/UserProperties.java
@@ -50,6 +50,8 @@
"updateCrossProfileIntentFiltersOnOTA";
private static final String ATTR_CROSS_PROFILE_INTENT_FILTER_ACCESS_CONTROL =
"crossProfileIntentFilterAccessControl";
+ private static final String ATTR_CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY =
+ "crossProfileIntentResolutionStrategy";
/** Index values of each property (to indicate whether they are present in this object). */
@IntDef(prefix = "INDEX_", value = {
@@ -59,7 +61,8 @@
INDEX_INHERIT_DEVICE_POLICY,
INDEX_USE_PARENTS_CONTACTS,
INDEX_UPDATE_CROSS_PROFILE_INTENT_FILTERS_ON_OTA,
- INDEX_CROSS_PROFILE_INTENT_FILTER_ACCESS_CONTROL
+ INDEX_CROSS_PROFILE_INTENT_FILTER_ACCESS_CONTROL,
+ INDEX_CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY
})
@Retention(RetentionPolicy.SOURCE)
private @interface PropertyIndex {
@@ -71,6 +74,7 @@
private static final int INDEX_USE_PARENTS_CONTACTS = 4;
private static final int INDEX_UPDATE_CROSS_PROFILE_INTENT_FILTERS_ON_OTA = 5;
private static final int INDEX_CROSS_PROFILE_INTENT_FILTER_ACCESS_CONTROL = 6;
+ private static final int INDEX_CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY = 7;
/** A bit set, mapping each PropertyIndex to whether it is present (1) or absent (0). */
private long mPropertiesPresent = 0;
@@ -219,6 +223,39 @@
public static final int CROSS_PROFILE_INTENT_FILTER_ACCESS_LEVEL_SYSTEM_ADD_ONLY = 20;
/**
+ * Possible values for cross profile intent resolution strategy.
+ *
+ * @hide
+ */
+ @IntDef(prefix = {"CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_"}, value = {
+ CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_DEFAULT,
+ CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_NO_FILTERING
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface CrossProfileIntentResolutionStrategy {
+ }
+
+ /**
+ * Signifies to use {@link DefaultCrossProfileResolver} strategy, which
+ * check if it needs to skip the initiating profile, resolves intent in target profile.
+ * {@link DefaultCrossProfileResolver} also filters the {@link ResolveInfo} after intent
+ * resolution based on their domain approval level
+ *
+ * @hide
+ */
+ public static final int CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_DEFAULT = 0;
+
+ /**
+ * Signifies that there is no need to filter {@link ResolveInfo} after cross profile intent
+ * resolution across. This strategy is for profile acting transparent to end-user and resolves
+ * all allowed intent without giving any profile priority.
+ *
+ * @hide
+ */
+ public static final int CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_NO_FILTERING = 1;
+
+
+ /**
* Creates a UserProperties (intended for the SystemServer) that stores a reference to the given
* default properties, which it uses for any property not subsequently set.
* @hide
@@ -255,6 +292,7 @@
setUpdateCrossProfileIntentFiltersOnOTA(orig.getUpdateCrossProfileIntentFiltersOnOTA());
setCrossProfileIntentFilterAccessControl(
orig.getCrossProfileIntentFilterAccessControl());
+ setCrossProfileIntentResolutionStrategy(orig.getCrossProfileIntentResolutionStrategy());
}
if (hasManagePermission) {
// Add items that require MANAGE_USERS or stronger.
@@ -466,6 +504,36 @@
}
private @CrossProfileIntentFilterAccessControlLevel int mCrossProfileIntentFilterAccessControl;
+ /**
+ * Returns the user's {@link CrossProfileIntentResolutionStrategy}. If not explicitly
+ * configured, default value is {@link #CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_DEFAULT}.
+ * @return user's {@link CrossProfileIntentResolutionStrategy}.
+ *
+ * @hide
+ */
+ public @CrossProfileIntentResolutionStrategy int getCrossProfileIntentResolutionStrategy() {
+ if (isPresent(INDEX_CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY)) {
+ return mCrossProfileIntentResolutionStrategy;
+ }
+ if (mDefaultProperties != null) {
+ return mDefaultProperties.mCrossProfileIntentResolutionStrategy;
+ }
+ throw new SecurityException("You don't have permission to query "
+ + "crossProfileIntentResolutionStrategy");
+ }
+ /**
+ * Sets {@link CrossProfileIntentResolutionStrategy} for the user.
+ * @param val resolution strategy for user
+ * @hide
+ */
+ public void setCrossProfileIntentResolutionStrategy(
+ @CrossProfileIntentResolutionStrategy int val) {
+ this.mCrossProfileIntentResolutionStrategy = val;
+ setPresent(INDEX_CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY);
+ }
+ private @CrossProfileIntentResolutionStrategy int mCrossProfileIntentResolutionStrategy;
+
+
@Override
public String toString() {
// Please print in increasing order of PropertyIndex.
@@ -480,6 +548,8 @@
+ getUpdateCrossProfileIntentFiltersOnOTA()
+ ", mCrossProfileIntentFilterAccessControl="
+ getCrossProfileIntentFilterAccessControl()
+ + ", mCrossProfileIntentResolutionStrategy="
+ + getCrossProfileIntentResolutionStrategy()
+ "}";
}
@@ -500,6 +570,8 @@
+ getUpdateCrossProfileIntentFiltersOnOTA());
pw.println(prefix + " mCrossProfileIntentFilterAccessControl="
+ getCrossProfileIntentFilterAccessControl());
+ pw.println(prefix + " mCrossProfileIntentResolutionStrategy="
+ + getCrossProfileIntentResolutionStrategy());
}
/**
@@ -554,6 +626,9 @@
case ATTR_CROSS_PROFILE_INTENT_FILTER_ACCESS_CONTROL:
setCrossProfileIntentFilterAccessControl(parser.getAttributeInt(i));
break;
+ case ATTR_CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY:
+ setCrossProfileIntentResolutionStrategy(parser.getAttributeInt(i));
+ break;
default:
Slog.w(LOG_TAG, "Skipping unknown property " + attributeName);
}
@@ -597,6 +672,10 @@
serializer.attributeInt(null, ATTR_CROSS_PROFILE_INTENT_FILTER_ACCESS_CONTROL,
mCrossProfileIntentFilterAccessControl);
}
+ if (isPresent(INDEX_CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY)) {
+ serializer.attributeInt(null, ATTR_CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY,
+ mCrossProfileIntentResolutionStrategy);
+ }
}
// For use only with an object that has already had any permission-lacking fields stripped out.
@@ -610,6 +689,7 @@
dest.writeBoolean(mUseParentsContacts);
dest.writeBoolean(mUpdateCrossProfileIntentFiltersOnOTA);
dest.writeInt(mCrossProfileIntentFilterAccessControl);
+ dest.writeInt(mCrossProfileIntentResolutionStrategy);
}
/**
@@ -627,6 +707,7 @@
mUseParentsContacts = source.readBoolean();
mUpdateCrossProfileIntentFiltersOnOTA = source.readBoolean();
mCrossProfileIntentFilterAccessControl = source.readInt();
+ mCrossProfileIntentResolutionStrategy = source.readInt();
}
@Override
@@ -660,6 +741,8 @@
private @CrossProfileIntentFilterAccessControlLevel int
mCrossProfileIntentFilterAccessControl =
CROSS_PROFILE_INTENT_FILTER_ACCESS_LEVEL_ALL;
+ private @CrossProfileIntentResolutionStrategy int mCrossProfileIntentResolutionStrategy =
+ CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_DEFAULT;
public Builder setShowInLauncher(@ShowInLauncher int showInLauncher) {
mShowInLauncher = showInLauncher;
@@ -704,6 +787,13 @@
return this;
}
+ /** Sets the value for {@link #mCrossProfileIntentResolutionStrategy} */
+ public Builder setCrossProfileIntentResolutionStrategy(@CrossProfileIntentResolutionStrategy
+ int crossProfileIntentResolutionStrategy) {
+ mCrossProfileIntentResolutionStrategy = crossProfileIntentResolutionStrategy;
+ return this;
+ }
+
/** Builds a UserProperties object with *all* values populated. */
public UserProperties build() {
return new UserProperties(
@@ -713,7 +803,8 @@
mInheritDevicePolicy,
mUseParentsContacts,
mUpdateCrossProfileIntentFiltersOnOTA,
- mCrossProfileIntentFilterAccessControl);
+ mCrossProfileIntentFilterAccessControl,
+ mCrossProfileIntentResolutionStrategy);
}
} // end Builder
@@ -724,7 +815,8 @@
@ShowInSettings int showInSettings,
@InheritDevicePolicy int inheritDevicePolicy,
boolean useParentsContacts, boolean updateCrossProfileIntentFiltersOnOTA,
- @CrossProfileIntentFilterAccessControlLevel int crossProfileIntentFilterAccessControl) {
+ @CrossProfileIntentFilterAccessControlLevel int crossProfileIntentFilterAccessControl,
+ @CrossProfileIntentResolutionStrategy int crossProfileIntentResolutionStrategy) {
mDefaultProperties = null;
setShowInLauncher(showInLauncher);
@@ -734,5 +826,6 @@
setUseParentsContacts(useParentsContacts);
setUpdateCrossProfileIntentFiltersOnOTA(updateCrossProfileIntentFiltersOnOTA);
setCrossProfileIntentFilterAccessControl(crossProfileIntentFilterAccessControl);
+ setCrossProfileIntentResolutionStrategy(crossProfileIntentResolutionStrategy);
}
}
diff --git a/core/java/android/credentials/ClearCredentialStateException.java b/core/java/android/credentials/ClearCredentialStateException.java
index a6b76a7..c518461 100644
--- a/core/java/android/credentials/ClearCredentialStateException.java
+++ b/core/java/android/credentials/ClearCredentialStateException.java
@@ -33,44 +33,50 @@
public class ClearCredentialStateException extends Exception {
@NonNull
- public final String errorType;
+ private final String mType;
- /**
- * Constructs a {@link ClearCredentialStateException}.
- *
- * @throws IllegalArgumentException If errorType is empty.
- */
- public ClearCredentialStateException(@NonNull String errorType, @Nullable String message) {
- this(errorType, message, null);
+ /** Returns the specific exception type. */
+ @NonNull
+ public String getType() {
+ return mType;
}
/**
* Constructs a {@link ClearCredentialStateException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
+ */
+ public ClearCredentialStateException(@NonNull String type, @Nullable String message) {
+ this(type, message, null);
+ }
+
+ /**
+ * Constructs a {@link ClearCredentialStateException}.
+ *
+ * @throws IllegalArgumentException If type is empty.
*/
public ClearCredentialStateException(
- @NonNull String errorType, @Nullable String message, @Nullable Throwable cause) {
+ @NonNull String type, @Nullable String message, @Nullable Throwable cause) {
super(message, cause);
- this.errorType = Preconditions.checkStringNotEmpty(errorType,
- "errorType must not be empty");
+ this.mType = Preconditions.checkStringNotEmpty(type,
+ "type must not be empty");
}
/**
* Constructs a {@link ClearCredentialStateException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public ClearCredentialStateException(@NonNull String errorType, @Nullable Throwable cause) {
- this(errorType, null, cause);
+ public ClearCredentialStateException(@NonNull String type, @Nullable Throwable cause) {
+ this(type, null, cause);
}
/**
* Constructs a {@link ClearCredentialStateException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public ClearCredentialStateException(@NonNull String errorType) {
- this(errorType, null, null);
+ public ClearCredentialStateException(@NonNull String type) {
+ this(type, null, null);
}
}
diff --git a/core/java/android/credentials/CreateCredentialException.java b/core/java/android/credentials/CreateCredentialException.java
index 87af208..cb32690 100644
--- a/core/java/android/credentials/CreateCredentialException.java
+++ b/core/java/android/credentials/CreateCredentialException.java
@@ -32,46 +32,60 @@
* Activity, CancellationSignal, Executor, OutcomeReceiver)} operation.
*/
public class CreateCredentialException extends Exception {
+ /**
+ * The error type value for when no credential is available for the given {@link
+ * CredentialManager#executeCreateCredential(CreateCredentialRequest, Activity,
+ * CancellationSignal, Executor, OutcomeReceiver)} request.
+ */
+ @NonNull
+ public static final String TYPE_NO_CREDENTIAL =
+ "android.credentials.CreateCredentialException.TYPE_NO_CREDENTIAL";
@NonNull
- public final String errorType;
+ private final String mType;
- /**
- * Constructs a {@link CreateCredentialException}.
- *
- * @throws IllegalArgumentException If errorType is empty.
- */
- public CreateCredentialException(@NonNull String errorType, @Nullable String message) {
- this(errorType, message, null);
+ /** Returns the specific exception type. */
+ @NonNull
+ public String getType() {
+ return mType;
}
/**
* Constructs a {@link CreateCredentialException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
+ */
+ public CreateCredentialException(@NonNull String type, @Nullable String message) {
+ this(type, message, null);
+ }
+
+ /**
+ * Constructs a {@link CreateCredentialException}.
+ *
+ * @throws IllegalArgumentException If type is empty.
*/
public CreateCredentialException(
- @NonNull String errorType, @Nullable String message, @Nullable Throwable cause) {
+ @NonNull String type, @Nullable String message, @Nullable Throwable cause) {
super(message, cause);
- this.errorType = Preconditions.checkStringNotEmpty(errorType,
- "errorType must not be empty");
+ this.mType = Preconditions.checkStringNotEmpty(type,
+ "type must not be empty");
}
/**
* Constructs a {@link CreateCredentialException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public CreateCredentialException(@NonNull String errorType, @Nullable Throwable cause) {
- this(errorType, null, cause);
+ public CreateCredentialException(@NonNull String type, @Nullable Throwable cause) {
+ this(type, null, cause);
}
/**
* Constructs a {@link CreateCredentialException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public CreateCredentialException(@NonNull String errorType) {
- this(errorType, null, null);
+ public CreateCredentialException(@NonNull String type) {
+ this(type, null, null);
}
}
diff --git a/core/java/android/credentials/Credential.java b/core/java/android/credentials/Credential.java
index db89170..a4ed0bb 100644
--- a/core/java/android/credentials/Credential.java
+++ b/core/java/android/credentials/Credential.java
@@ -33,8 +33,6 @@
/**
* The type value for password credential related operations.
- *
- * @hide
*/
@NonNull public static final String TYPE_PASSWORD_CREDENTIAL =
"android.credentials.TYPE_PASSWORD_CREDENTIAL";
diff --git a/core/java/android/credentials/GetCredentialException.java b/core/java/android/credentials/GetCredentialException.java
index 4d80237..5d6e4df 100644
--- a/core/java/android/credentials/GetCredentialException.java
+++ b/core/java/android/credentials/GetCredentialException.java
@@ -32,46 +32,60 @@
* Activity, CancellationSignal, Executor, OutcomeReceiver)} operation.
*/
public class GetCredentialException extends Exception {
+ /**
+ * The error type value for when no credential is found available for the given {@link
+ * CredentialManager#executeGetCredential(GetCredentialRequest, Activity, CancellationSignal,
+ * Executor, OutcomeReceiver)} request.
+ */
+ @NonNull
+ public static final String TYPE_NO_CREDENTIAL =
+ "android.credentials.GetCredentialException.TYPE_NO_CREDENTIAL";
@NonNull
- public final String errorType;
+ private final String mType;
- /**
- * Constructs a {@link GetCredentialException}.
- *
- * @throws IllegalArgumentException If errorType is empty.
- */
- public GetCredentialException(@NonNull String errorType, @Nullable String message) {
- this(errorType, message, null);
+ /** Returns the specific exception type. */
+ @NonNull
+ public String getType() {
+ return mType;
}
/**
* Constructs a {@link GetCredentialException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
+ */
+ public GetCredentialException(@NonNull String type, @Nullable String message) {
+ this(type, message, null);
+ }
+
+ /**
+ * Constructs a {@link GetCredentialException}.
+ *
+ * @throws IllegalArgumentException If type is empty.
*/
public GetCredentialException(
- @NonNull String errorType, @Nullable String message, @Nullable Throwable cause) {
+ @NonNull String type, @Nullable String message, @Nullable Throwable cause) {
super(message, cause);
- this.errorType = Preconditions.checkStringNotEmpty(errorType,
- "errorType must not be empty");
+ this.mType = Preconditions.checkStringNotEmpty(type,
+ "type must not be empty");
}
/**
* Constructs a {@link GetCredentialException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public GetCredentialException(@NonNull String errorType, @Nullable Throwable cause) {
- this(errorType, null, cause);
+ public GetCredentialException(@NonNull String type, @Nullable Throwable cause) {
+ this(type, null, cause);
}
/**
* Constructs a {@link GetCredentialException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public GetCredentialException(@NonNull String errorType) {
- this(errorType, null, null);
+ public GetCredentialException(@NonNull String type) {
+ this(type, null, null);
}
}
diff --git a/core/java/android/credentials/ListEnabledProvidersException.java b/core/java/android/credentials/ListEnabledProvidersException.java
index c12c656..2903171 100644
--- a/core/java/android/credentials/ListEnabledProvidersException.java
+++ b/core/java/android/credentials/ListEnabledProvidersException.java
@@ -31,44 +31,50 @@
*/
public class ListEnabledProvidersException extends Exception {
- @NonNull public final String errorType;
+ @NonNull private final String mType;
- /**
- * Constructs a {@link ListEnabledProvidersException}.
- *
- * @throws IllegalArgumentException If errorType is empty.
- */
- public ListEnabledProvidersException(@NonNull String errorType, @Nullable String message) {
- this(errorType, message, null);
+ /** Returns the specific exception type. */
+ @NonNull
+ public String getType() {
+ return mType;
}
/**
* Constructs a {@link ListEnabledProvidersException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
+ */
+ public ListEnabledProvidersException(@NonNull String type, @Nullable String message) {
+ this(type, message, null);
+ }
+
+ /**
+ * Constructs a {@link ListEnabledProvidersException}.
+ *
+ * @throws IllegalArgumentException If type is empty.
*/
public ListEnabledProvidersException(
- @NonNull String errorType, @Nullable String message, @Nullable Throwable cause) {
+ @NonNull String type, @Nullable String message, @Nullable Throwable cause) {
super(message, cause);
- this.errorType =
- Preconditions.checkStringNotEmpty(errorType, "errorType must not be empty");
+ this.mType =
+ Preconditions.checkStringNotEmpty(type, "type must not be empty");
}
/**
* Constructs a {@link ListEnabledProvidersException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public ListEnabledProvidersException(@NonNull String errorType, @Nullable Throwable cause) {
- this(errorType, null, cause);
+ public ListEnabledProvidersException(@NonNull String type, @Nullable Throwable cause) {
+ this(type, null, cause);
}
/**
* Constructs a {@link ListEnabledProvidersException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public ListEnabledProvidersException(@NonNull String errorType) {
- this(errorType, null, null);
+ public ListEnabledProvidersException(@NonNull String type) {
+ this(type, null, null);
}
}
diff --git a/core/java/android/credentials/SetEnabledProvidersException.java b/core/java/android/credentials/SetEnabledProvidersException.java
index 6178f349..28c4edf 100644
--- a/core/java/android/credentials/SetEnabledProvidersException.java
+++ b/core/java/android/credentials/SetEnabledProvidersException.java
@@ -31,44 +31,50 @@
*/
public class SetEnabledProvidersException extends Exception {
- @NonNull public final String errorType;
+ @NonNull private final String mType;
- /**
- * Constructs a {@link SetEnabledProvidersException}.
- *
- * @throws IllegalArgumentException If errorType is empty.
- */
- public SetEnabledProvidersException(@NonNull String errorType, @Nullable String message) {
- this(errorType, message, null);
+ /** Returns the specific exception type. */
+ @NonNull
+ public String getType() {
+ return mType;
}
/**
* Constructs a {@link SetEnabledProvidersException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
+ */
+ public SetEnabledProvidersException(@NonNull String type, @Nullable String message) {
+ this(type, message, null);
+ }
+
+ /**
+ * Constructs a {@link SetEnabledProvidersException}.
+ *
+ * @throws IllegalArgumentException If type is empty.
*/
public SetEnabledProvidersException(
- @NonNull String errorType, @Nullable String message, @Nullable Throwable cause) {
+ @NonNull String type, @Nullable String message, @Nullable Throwable cause) {
super(message, cause);
- this.errorType =
- Preconditions.checkStringNotEmpty(errorType, "errorType must not be empty");
+ this.mType =
+ Preconditions.checkStringNotEmpty(type, "type must not be empty");
}
/**
* Constructs a {@link SetEnabledProvidersException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public SetEnabledProvidersException(@NonNull String errorType, @Nullable Throwable cause) {
- this(errorType, null, cause);
+ public SetEnabledProvidersException(@NonNull String type, @Nullable Throwable cause) {
+ this(type, null, cause);
}
/**
* Constructs a {@link SetEnabledProvidersException}.
*
- * @throws IllegalArgumentException If errorType is empty.
+ * @throws IllegalArgumentException If type is empty.
*/
- public SetEnabledProvidersException(@NonNull String errorType) {
- this(errorType, null, null);
+ public SetEnabledProvidersException(@NonNull String type) {
+ this(type, null, null);
}
}
diff --git a/core/java/android/credentials/ui/Constants.java b/core/java/android/credentials/ui/Constants.java
index 53ad40d..7092f29 100644
--- a/core/java/android/credentials/ui/Constants.java
+++ b/core/java/android/credentials/ui/Constants.java
@@ -24,9 +24,12 @@
public class Constants {
/**
- * The intent extra key for the {@code ResultReceiver} object when launching the UX
- * activities.
- */
+ * The intent extra key for the {@code ResultReceiver} object when launching the UX activities.
+ */
public static final String EXTRA_RESULT_RECEIVER =
"android.credentials.ui.extra.RESULT_RECEIVER";
+
+ /** The intent action for when the enabled Credential Manager providers has been updated. */
+ public static final String CREDMAN_ENABLED_PROVIDERS_UPDATED =
+ "android.credentials.ui.action.CREDMAN_ENABLED_PROVIDERS_UPDATED";
}
diff --git a/core/java/android/credentials/ui/Entry.java b/core/java/android/credentials/ui/Entry.java
index b7718ac..9f2edae 100644
--- a/core/java/android/credentials/ui/Entry.java
+++ b/core/java/android/credentials/ui/Entry.java
@@ -89,12 +89,21 @@
* when clicked.
*/
public Entry(@NonNull String key, @NonNull String subkey, @NonNull Slice slice,
- @NonNull PendingIntent pendingIntent, @Nullable Intent intent) {
+ @NonNull PendingIntent pendingIntent, @NonNull Intent intent) {
this(key, subkey, slice);
mPendingIntent = pendingIntent;
mFrameworkExtrasIntent = intent;
}
+ /** Constructor to be used for an entry that requires a pending intent to be invoked
+ * when clicked.
+ */
+ public Entry(@NonNull String key, @NonNull String subkey, @NonNull Slice slice,
+ @NonNull Intent intent) {
+ this(key, subkey, slice);
+ mFrameworkExtrasIntent = intent;
+ }
+
/**
* Returns the identifier of this entry that's unique within the context of the CredentialManager
* request.
diff --git a/core/java/android/credentials/ui/IntentFactory.java b/core/java/android/credentials/ui/IntentFactory.java
index 83ebe1c..67634dc 100644
--- a/core/java/android/credentials/ui/IntentFactory.java
+++ b/core/java/android/credentials/ui/IntentFactory.java
@@ -39,14 +39,19 @@
public static Intent createCredentialSelectorIntent(
@NonNull RequestInfo requestInfo,
@SuppressLint("ConcreteCollection") // Concrete collection needed for marshalling.
- @NonNull ArrayList<ProviderData> enabledProviderDataList,
+ @NonNull
+ ArrayList<ProviderData> enabledProviderDataList,
@SuppressLint("ConcreteCollection") // Concrete collection needed for marshalling.
- @NonNull ArrayList<DisabledProviderData> disabledProviderDataList,
+ @NonNull
+ ArrayList<DisabledProviderData> disabledProviderDataList,
@NonNull ResultReceiver resultReceiver) {
Intent intent = new Intent();
- ComponentName componentName = ComponentName.unflattenFromString(
- Resources.getSystem().getString(
- com.android.internal.R.string.config_credentialManagerDialogComponent));
+ ComponentName componentName =
+ ComponentName.unflattenFromString(
+ Resources.getSystem()
+ .getString(
+ com.android.internal.R.string
+ .config_credentialManagerDialogComponent));
intent.setComponent(componentName);
intent.putParcelableArrayListExtra(
@@ -54,17 +59,35 @@
intent.putParcelableArrayListExtra(
ProviderData.EXTRA_DISABLED_PROVIDER_DATA_LIST, disabledProviderDataList);
intent.putExtra(RequestInfo.EXTRA_REQUEST_INFO, requestInfo);
- intent.putExtra(Constants.EXTRA_RESULT_RECEIVER,
- toIpcFriendlyResultReceiver(resultReceiver));
+ intent.putExtra(
+ Constants.EXTRA_RESULT_RECEIVER, toIpcFriendlyResultReceiver(resultReceiver));
return intent;
}
/**
- * Convert an instance of a "locally-defined" ResultReceiver to an instance of
- * {@link android.os.ResultReceiver} itself, which the receiving process will be able to
- * unmarshall.
- */
+ * Notify the UI that providers have been enabled/disabled.
+ *
+ * @hide
+ */
+ @NonNull
+ public static Intent createProviderUpdateIntent() {
+ Intent intent = new Intent();
+ ComponentName componentName =
+ ComponentName.unflattenFromString(
+ Resources.getSystem()
+ .getString(
+ com.android.internal.R.string
+ .config_credentialManagerDialogComponent));
+ intent.setComponent(componentName);
+ intent.setAction(Constants.CREDMAN_ENABLED_PROVIDERS_UPDATED);
+ return intent;
+ }
+
+ /**
+ * Convert an instance of a "locally-defined" ResultReceiver to an instance of {@link
+ * android.os.ResultReceiver} itself, which the receiving process will be able to unmarshall.
+ */
private static <T extends ResultReceiver> ResultReceiver toIpcFriendlyResultReceiver(
T resultReceiver) {
final Parcel parcel = Parcel.obtain();
diff --git a/core/java/android/hardware/HardwareBuffer.java b/core/java/android/hardware/HardwareBuffer.java
index 11892fe..ddbfb9e 100644
--- a/core/java/android/hardware/HardwareBuffer.java
+++ b/core/java/android/hardware/HardwareBuffer.java
@@ -320,6 +320,15 @@
/**
* Returns the system-wide unique id for this buffer
*
+ * This can be useful as a cache key for associating additional objects with
+ * a given HardwareBuffer, such as associating an imported EGLImage with
+ * the target HardwareBuffer when processing a stream of buffers from
+ * ImageReader.
+ *
+ * This can also be useful for doing cross-process buffer caching. As sending
+ * a HardwareBuffer over Binder is slower than sending a long, this can be
+ * used as reliable cache key after an initial handshake that passes the
+ * HardwareBuffers themselves to later be referred to using only the id.
*/
public long getId() {
checkClosed("id");
diff --git a/core/java/android/hardware/OWNERS b/core/java/android/hardware/OWNERS
index 3b6a564..d2a2f12 100644
--- a/core/java/android/hardware/OWNERS
+++ b/core/java/android/hardware/OWNERS
@@ -16,3 +16,6 @@
# Buffers
per-file HardwareBuffer* = file:/graphics/java/android/graphics/OWNERS
per-file DataSpace* = file:/graphics/java/android/graphics/OWNERS
+
+# OverlayProperties
+per-file OverlayProperties* = file:/graphics/java/android/graphics/OWNERS
diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java
index dec424c..6d8c4a9 100644
--- a/core/java/android/hardware/SensorManager.java
+++ b/core/java/android/hardware/SensorManager.java
@@ -16,6 +16,7 @@
package android.hardware;
+import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.compat.annotation.UnsupportedAppUsage;
@@ -496,7 +497,7 @@
* @see #getSensorList(int)
* @see Sensor
*/
- public Sensor getDefaultSensor(int type) {
+ public @Nullable Sensor getDefaultSensor(int type) {
// TODO: need to be smarter, for now, just return the 1st sensor
List<Sensor> l = getSensorList(type);
boolean wakeUpSensor = false;
@@ -544,7 +545,7 @@
* and the application has the necessary permissions, or null otherwise.
* @see Sensor#isWakeUpSensor()
*/
- public Sensor getDefaultSensor(int type, boolean wakeUp) {
+ public @Nullable Sensor getDefaultSensor(int type, boolean wakeUp) {
List<Sensor> l = getSensorList(type);
for (Sensor sensor : l) {
if (sensor.isWakeUpSensor() == wakeUp) {
diff --git a/core/java/android/hardware/SyncFence.java b/core/java/android/hardware/SyncFence.java
index 1660013..d6052cd 100644
--- a/core/java/android/hardware/SyncFence.java
+++ b/core/java/android/hardware/SyncFence.java
@@ -87,8 +87,8 @@
// is well worth making.
private final Runnable mCloser;
- private SyncFence(@NonNull ParcelFileDescriptor wrapped) {
- mNativePtr = nCreate(wrapped.detachFd());
+ private SyncFence(int fileDescriptor) {
+ mNativePtr = nCreate(fileDescriptor);
mCloser = sRegistry.registerNativeAllocation(this, mNativePtr);
}
@@ -136,14 +136,26 @@
}
/**
- * Create a new SyncFence wrapped around another descriptor. By default, all method calls are
- * delegated to the wrapped descriptor.
+ * Create a new SyncFence wrapped around another {@link ParcelFileDescriptor}. By default, all
+ * method calls are delegated to the wrapped descriptor. This takes ownership of the
+ * {@link ParcelFileDescriptor}.
*
* @param wrapped The descriptor to be wrapped.
* @hide
*/
public static @NonNull SyncFence create(@NonNull ParcelFileDescriptor wrapped) {
- return new SyncFence(wrapped);
+ return new SyncFence(wrapped.detachFd());
+ }
+
+ /**
+ * Create a new SyncFence wrapped around another descriptor. The returned {@link SyncFence}
+ * instance takes ownership of the file descriptor.
+ *
+ * @param fileDescriptor The descriptor to be wrapped.
+ * @hide
+ */
+ public static @NonNull SyncFence adopt(int fileDescriptor) {
+ return new SyncFence(fileDescriptor);
}
/**
diff --git a/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java
index 2d591c3..9437ea7 100644
--- a/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java
@@ -176,7 +176,7 @@
}
Surface postviewSurface = null;
- if (burstCaptureSurface != null) {
+ if (burstCaptureSurface != null && config.getPostviewOutputConfiguration() != null) {
CameraExtensionUtils.SurfaceInfo burstCaptureSurfaceInfo =
CameraExtensionUtils.querySurface(burstCaptureSurface);
Size burstCaptureSurfaceSize =
@@ -193,8 +193,7 @@
postviewSurface = CameraExtensionUtils.getPostviewSurface(
config.getPostviewOutputConfiguration(), supportedPostviewSizes,
burstCaptureSurfaceInfo.mFormat);
-
- if ((config.getPostviewOutputConfiguration() != null) && (postviewSurface == null)) {
+ if (postviewSurface == null) {
throw new IllegalArgumentException("Unsupported output surface for postview!");
}
}
@@ -456,11 +455,17 @@
}
private void validateCaptureRequestTargets(@NonNull CaptureRequest request) {
- if ((request.getTargets().size() == 1) &&
- (!request.containsTarget(mClientRepeatingRequestSurface) ||
- !request.containsTarget(mClientCaptureSurface))) {
- throw new IllegalArgumentException("Target output combination requested is " +
- "not supported!");
+ if (request.getTargets().size() == 1) {
+ boolean containsCaptureTarget =
+ mClientCaptureSurface != null && request.containsTarget(mClientCaptureSurface);
+ boolean containsRepeatingTarget =
+ mClientRepeatingRequestSurface != null &&
+ request.containsTarget(mClientRepeatingRequestSurface);
+
+ if (!containsCaptureTarget && !containsRepeatingTarget) {
+ throw new IllegalArgumentException("Target output combination requested is " +
+ "not supported!");
+ }
}
if ((request.getTargets().size() == 2) &&
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index a6c79b3..cb1efe8 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -20,15 +20,13 @@
import android.annotation.NonNull;
import android.content.Context;
-import android.graphics.ImageFormat;
import android.hardware.ICameraService;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCaptureSession;
import android.hardware.camera2.CameraCharacteristics;
-import android.hardware.camera2.CameraExtensionCharacteristics;
-import android.hardware.camera2.CameraExtensionSession;
-import android.hardware.camera2.CameraOfflineSession;
import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraExtensionCharacteristics;
+import android.hardware.camera2.CameraOfflineSession;
import android.hardware.camera2.CaptureFailure;
import android.hardware.camera2.CaptureRequest;
import android.hardware.camera2.CaptureResult;
@@ -63,17 +61,17 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashSet;
import java.util.HashMap;
-import java.util.Map;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* HAL2.1+ implementation of CameraDevice. Use CameraManager#open to instantiate
@@ -87,6 +85,7 @@
// TODO: guard every function with if (!mRemoteDevice) check (if it was closed)
private ICameraDeviceUserWrapper mRemoteDevice;
+ private boolean mRemoteDeviceInit = false;
// Lock to synchronize cross-thread access to device public interface
final Object mInterfaceLock = new Object(); // access from this class and Session only!
@@ -338,6 +337,8 @@
mDeviceExecutor.execute(mCallOnOpened);
mDeviceExecutor.execute(mCallOnUnconfigured);
+
+ mRemoteDeviceInit = true;
}
}
@@ -1754,8 +1755,8 @@
}
synchronized(mInterfaceLock) {
- if (mRemoteDevice == null) {
- return; // Camera already closed
+ if (mRemoteDevice == null && mRemoteDeviceInit) {
+ return; // Camera already closed, user is not interested in errors anymore.
}
// Redirect device callback to the offline session in case we are in the middle
diff --git a/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java
index 5b84ec0..ed48a6d 100644
--- a/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java
@@ -200,7 +200,7 @@
}
Surface postviewSurface = null;
- if (burstCaptureSurface != null) {
+ if (burstCaptureSurface != null && config.getPostviewOutputConfiguration() != null) {
CameraExtensionUtils.SurfaceInfo burstCaptureSurfaceInfo =
CameraExtensionUtils.querySurface(burstCaptureSurface);
Size burstCaptureSurfaceSize =
@@ -218,7 +218,7 @@
config.getPostviewOutputConfiguration(), supportedPostviewSizes,
burstCaptureSurfaceInfo.mFormat);
- if ((config.getPostviewOutputConfiguration() != null) && (postviewSurface == null)) {
+ if (postviewSurface == null) {
throw new IllegalArgumentException("Unsupported output surface for postview!");
}
}
@@ -717,11 +717,17 @@
}
private void validateCaptureRequestTargets(@NonNull CaptureRequest request) {
- if ((request.getTargets().size() == 1) &&
- (!request.containsTarget(mClientRepeatingRequestSurface) ||
- !request.containsTarget(mClientCaptureSurface))) {
- throw new IllegalArgumentException("Target output combination requested is " +
- "not supported!");
+ if (request.getTargets().size() == 1) {
+ boolean containsCaptureTarget =
+ mClientCaptureSurface != null && request.containsTarget(mClientCaptureSurface);
+ boolean containsRepeatingTarget =
+ mClientRepeatingRequestSurface != null &&
+ request.containsTarget(mClientRepeatingRequestSurface);
+
+ if (!containsCaptureTarget && !containsRepeatingTarget) {
+ throw new IllegalArgumentException("Target output combination requested is " +
+ "not supported!");
+ }
}
if ((request.getTargets().size() == 2) &&
diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
index 8d742b5..9640b0e 100644
--- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
+++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
@@ -1037,6 +1037,19 @@
return fixedFaceRectangles;
}
+ private boolean setLensShadingMap(LensShadingMap lensShadingMap) {
+ if (lensShadingMap == null) {
+ return false;
+ }
+ float[] lsmArray = new float[lensShadingMap.getGainFactorCount()];
+ lensShadingMap.copyGainFactors(lsmArray, 0);
+ setBase(CaptureResult.STATISTICS_LENS_SHADING_MAP, lsmArray);
+
+ Size s = new Size(lensShadingMap.getRowCount(), lensShadingMap.getColumnCount());
+ setBase(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE, s);
+ return true;
+ }
+
private LensShadingMap getLensShadingMap() {
float[] lsmArray = getBase(CaptureResult.STATISTICS_LENS_SHADING_MAP);
Size s = get(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE);
@@ -1916,6 +1929,13 @@
metadata.setAERegions(value);
}
});
+ sSetCommandMap.put(CaptureResult.STATISTICS_LENS_SHADING_CORRECTION_MAP.getNativeKey(),
+ new SetCommand() {
+ @Override
+ public <T> void setValue(CameraMetadataNative metadata, T value) {
+ metadata.setLensShadingMap((LensShadingMap) value);
+ }
+ });
}
private boolean setAvailableFormats(int[] value) {
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index a748b60..04a204a 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -464,6 +464,12 @@
* @param remaining The number of remaining steps
*/
public void onEnrollmentProgress(int remaining) { }
+
+ /**
+ * Called when a fingerprint image has been acquired.
+ * @param isAcquiredGood whether the fingerprint image was good.
+ */
+ public void onAcquired(boolean isAcquiredGood){ }
}
/**
@@ -1392,6 +1398,9 @@
if (mAuthenticationCallback != null) {
mAuthenticationCallback.onAuthenticationAcquired(acquireInfo);
}
+ if (mEnrollmentCallback != null) {
+ mEnrollmentCallback.onAcquired(acquireInfo == FINGERPRINT_ACQUIRED_GOOD);
+ }
final String msg = getAcquiredString(mContext, acquireInfo, vendorCode);
if (msg == null) {
return;
diff --git a/core/java/android/app/timedetector/TimePoint.aidl b/core/java/android/hardware/usb/DisplayPortAltModeInfo.aidl
similarity index 74%
rename from core/java/android/app/timedetector/TimePoint.aidl
rename to core/java/android/hardware/usb/DisplayPortAltModeInfo.aidl
index 80d4bc1..14986d0 100644
--- a/core/java/android/app/timedetector/TimePoint.aidl
+++ b/core/java/android/hardware/usb/DisplayPortAltModeInfo.aidl
@@ -1,11 +1,11 @@
/*
- * Copyright (C) 2022, The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package android.app.timedetector;
+package android.hardware.usb;
-parcelable TimePoint;
+parcelable DisplayPortAltModeInfo;
\ No newline at end of file
diff --git a/core/java/android/hardware/usb/DisplayPortAltModeInfo.java b/core/java/android/hardware/usb/DisplayPortAltModeInfo.java
new file mode 100644
index 0000000..febc643
--- /dev/null
+++ b/core/java/android/hardware/usb/DisplayPortAltModeInfo.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.usb;
+
+import android.Manifest;
+import android.annotation.CheckResult;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+/**
+ * Holds information related to DisplayPort Alt Mode statuses
+ *
+ * @hide
+ */
+@SystemApi
+public final class DisplayPortAltModeInfo implements Parcelable {
+ private final @DisplayPortAltModeStatus int mPartnerSinkStatus;
+ private final @DisplayPortAltModeStatus int mCableStatus;
+ private final int mNumLanes;
+
+ /**
+ * Port Partners:
+ * The port partner status is currently unknown for one of the following reasons:
+ * <ul>
+ * <li> No port partner is connected to the device
+ * <li> The USB Power Delivery Discover Identity command has not been issued to the port
+ * partner via SOP messaging.
+ * </ul>
+ * <p>
+ * Cables:
+ * The cable’s capabilities are not yet known to the device, or no cable is plugged in.
+ */
+ public static final int DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN = 0;
+
+ /**
+ * Port Partners:
+ * The current port partner does not list DisplayPort as one of its Alt Modes, or does not list
+ * the capability to act as a DisplayPort Source or Sink device, or a compatible configuration
+ * could not be established.
+ * <p>
+ * Cables:
+ * The cable/adapter’s capabilities do not list DisplayPort as one of its Alt Modes, or a
+ * compatible configuration could not be established.
+ */
+ public static final int DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE = 1;
+
+ /**
+ * Port Partners:
+ * The current port partner lists compatible DisplayPort capabilities with the device, however
+ * may not yet have entered DisplayPort Alt Mode or has configured its port for data
+ * transmission.
+ * <p>
+ * Cables:
+ * The Type-C cable/adapter’s capabilities have been discovered and list DisplayPort Alt Mode
+ * as one of its capabilities, however may not yet have entered DisplayPort Alt Mode or has been
+ * configured for data transmission.
+ */
+ public static final int DISPLAYPORT_ALT_MODE_STATUS_CAPABLE = 2;
+
+ /**
+ * Port Partners:
+ * The port partner and device are both configured for DisplayPort Alt Mode.
+ * <p>
+ * Cables:
+ * The Type-C cable/adapter is configured for DisplayPort Alt Mode.
+ */
+ public static final int DISPLAYPORT_ALT_MODE_STATUS_ENABLED = 3;
+
+ /** @hide */
+ @IntDef(prefix = { "DISPLAYPORT_ALT_MODE_STATUS_" }, value = {
+ DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN,
+ DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE,
+ DISPLAYPORT_ALT_MODE_STATUS_CAPABLE,
+ DISPLAYPORT_ALT_MODE_STATUS_ENABLED,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface DisplayPortAltModeStatus {}
+
+ /** @hide */
+ public DisplayPortAltModeInfo() {
+ mPartnerSinkStatus = DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN;
+ mCableStatus = DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN;
+ mNumLanes = 0;
+ }
+
+ /** @hide */
+ public DisplayPortAltModeInfo(int partnerSinkStatus, int cableStatus,
+ int numLanes) {
+ mPartnerSinkStatus = partnerSinkStatus;
+ mCableStatus = cableStatus;
+ mNumLanes = numLanes;
+ }
+
+ /**
+ * Returns the DisplayPort Alt Mode Status for a port partner acting as a sink.
+ *
+ * @return {@link #DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN}
+ * or {@link #DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE}
+ * or {@link #DISPLAYPORT_ALT_MODE_STATUS_CAPABLE}
+ * or {@link #DISPLAYPORT_ALT_MODE_STATUS_ENABLED}
+ */
+ public @DisplayPortAltModeStatus int getPartnerSinkStatus() {
+ return mPartnerSinkStatus;
+ }
+
+ /**
+ * Returns the DisplayPort Alt Mode Status for the attached cable
+ *
+ * @return {@link #DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN}
+ * or {@link #DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE}
+ * or {@link #DISPLAYPORT_ALT_MODE_STATUS_CAPABLE}
+ * or {@link #DISPLAYPORT_ALT_MODE_STATUS_ENABLED}
+ */
+ public @DisplayPortAltModeStatus int getCableStatus() {
+ return mCableStatus;
+ }
+
+ /**
+ * Returns the number of lanes used to transmit display data.
+ *
+ */
+ public int getNumberOfLanes() {
+ return mNumLanes;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(mPartnerSinkStatus);
+ dest.writeInt(mCableStatus);
+ dest.writeInt(mNumLanes);
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "DisplayPortAltModeInfo{partnerSink="
+ + mPartnerSinkStatus
+ + " cable="
+ + mCableStatus
+ + " numLanes="
+ + mNumLanes
+ + "}";
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof DisplayPortAltModeInfo)) {
+ return false;
+ }
+ DisplayPortAltModeInfo other = (DisplayPortAltModeInfo) o;
+ return this.mPartnerSinkStatus == other.mPartnerSinkStatus
+ && this.mCableStatus == other.mCableStatus
+ && this.mNumLanes == other.mNumLanes;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mPartnerSinkStatus, mCableStatus, mNumLanes);
+ }
+
+ public static final @NonNull Parcelable.Creator<DisplayPortAltModeInfo> CREATOR =
+ new Parcelable.Creator<DisplayPortAltModeInfo>() {
+ @Override
+ public DisplayPortAltModeInfo createFromParcel(Parcel in) {
+ int partnerSinkStatus = in.readInt();
+ int cableStatus = in.readInt();
+ int numLanes = in.readInt();
+ return new DisplayPortAltModeInfo(partnerSinkStatus, cableStatus, numLanes);
+ }
+
+ @Override
+ public DisplayPortAltModeInfo[] newArray(int size) {
+ return new DisplayPortAltModeInfo[size];
+ }
+ };
+}
diff --git a/core/java/android/hardware/usb/IDisplayPortAltModeInfoListener.aidl b/core/java/android/hardware/usb/IDisplayPortAltModeInfoListener.aidl
new file mode 100644
index 0000000..e93e0fb
--- /dev/null
+++ b/core/java/android/hardware/usb/IDisplayPortAltModeInfoListener.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.usb;
+
+import android.hardware.usb.DisplayPortAltModeInfo;
+
+/**
+ * @hide
+ */
+oneway interface IDisplayPortAltModeInfoListener {
+ void onDisplayPortAltModeInfoChanged(in String portId,
+ in DisplayPortAltModeInfo DisplayPortAltModeInfo);
+}
\ No newline at end of file
diff --git a/core/java/android/hardware/usb/IUsbManager.aidl b/core/java/android/hardware/usb/IUsbManager.aidl
index 248b5d0..21b00e3 100644
--- a/core/java/android/hardware/usb/IUsbManager.aidl
+++ b/core/java/android/hardware/usb/IUsbManager.aidl
@@ -18,6 +18,7 @@
import android.app.PendingIntent;
import android.content.ComponentName;
+import android.hardware.usb.IDisplayPortAltModeInfoListener;
import android.hardware.usb.IUsbOperationInternal;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbDevice;
@@ -184,4 +185,15 @@
/* Sets USB device connection handler. */
void setUsbDeviceConnectionHandler(in ComponentName usbDeviceConnectionHandler);
+
+ /* Registers callback for Usb events */
+ @JavaPassthrough(annotation=
+ "@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_USB)")
+ boolean registerForDisplayPortEvents(IDisplayPortAltModeInfoListener listener);
+
+ /* Unregisters Usb event callback */
+ @JavaPassthrough(annotation=
+ "@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_USB)")
+ void unregisterForDisplayPortEvents(IDisplayPortAltModeInfoListener listener);
+
}
diff --git a/core/java/android/hardware/usb/ParcelableUsbPort.java b/core/java/android/hardware/usb/ParcelableUsbPort.java
index 7fc282c..eb6501a 100644
--- a/core/java/android/hardware/usb/ParcelableUsbPort.java
+++ b/core/java/android/hardware/usb/ParcelableUsbPort.java
@@ -35,12 +35,14 @@
private final boolean mSupportsEnableContaminantPresenceProtection;
private final boolean mSupportsEnableContaminantPresenceDetection;
private final boolean mSupportsComplianceWarnings;
+ private final int mSupportedAltModesMask;
private ParcelableUsbPort(@NonNull String id, int supportedModes,
int supportedContaminantProtectionModes,
boolean supportsEnableContaminantPresenceProtection,
boolean supportsEnableContaminantPresenceDetection,
- boolean supportsComplianceWarnings) {
+ boolean supportsComplianceWarnings,
+ int supportedAltModesMask) {
mId = id;
mSupportedModes = supportedModes;
mSupportedContaminantProtectionModes = supportedContaminantProtectionModes;
@@ -50,6 +52,7 @@
supportsEnableContaminantPresenceDetection;
mSupportsComplianceWarnings =
supportsComplianceWarnings;
+ mSupportedAltModesMask = supportedAltModesMask;
}
/**
@@ -64,7 +67,8 @@
port.getSupportedContaminantProtectionModes(),
port.supportsEnableContaminantPresenceProtection(),
port.supportsEnableContaminantPresenceDetection(),
- port.supportsComplianceWarnings());
+ port.supportsComplianceWarnings(),
+ port.getSupportedAltModesMask());
}
/**
@@ -78,7 +82,8 @@
return new UsbPort(usbManager, mId, mSupportedModes, mSupportedContaminantProtectionModes,
mSupportsEnableContaminantPresenceProtection,
mSupportsEnableContaminantPresenceDetection,
- mSupportsComplianceWarnings);
+ mSupportsComplianceWarnings,
+ mSupportedAltModesMask);
}
@Override
@@ -94,6 +99,7 @@
dest.writeBoolean(mSupportsEnableContaminantPresenceProtection);
dest.writeBoolean(mSupportsEnableContaminantPresenceDetection);
dest.writeBoolean(mSupportsComplianceWarnings);
+ dest.writeInt(mSupportedAltModesMask);
}
public static final @android.annotation.NonNull Creator<ParcelableUsbPort> CREATOR =
@@ -106,12 +112,14 @@
boolean supportsEnableContaminantPresenceProtection = in.readBoolean();
boolean supportsEnableContaminantPresenceDetection = in.readBoolean();
boolean supportsComplianceWarnings = in.readBoolean();
+ int supportedAltModesMask = in.readInt();
return new ParcelableUsbPort(id, supportedModes,
supportedContaminantProtectionModes,
supportsEnableContaminantPresenceProtection,
supportsEnableContaminantPresenceDetection,
- supportsComplianceWarnings);
+ supportsComplianceWarnings,
+ supportedAltModesMask);
}
@Override
diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java
index 7a8117c..909d147 100644
--- a/core/java/android/hardware/usb/UsbManager.java
+++ b/core/java/android/hardware/usb/UsbManager.java
@@ -20,6 +20,7 @@
import static android.hardware.usb.UsbPortStatus.DATA_STATUS_DISABLED_FORCE;
import android.Manifest;
+import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
import android.annotation.LongDef;
import android.annotation.NonNull;
@@ -44,16 +45,24 @@
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.os.RemoteException;
+import android.util.ArrayMap;
import android.util.Log;
+import android.util.Slog;
+
+import com.android.internal.annotations.GuardedBy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.StringJoiner;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.Executor;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
/**
* This class allows you to access the state of USB and communicate with USB devices.
@@ -724,8 +733,60 @@
})
public @interface UsbHalVersion {}
+ /**
+ * Listener to register for when the {@link DisplayPortAltModeInfo} changes on a
+ * {@link UsbPort}.
+ *
+ * @hide
+ */
+ @SystemApi
+ public interface DisplayPortAltModeInfoListener {
+ /**
+ * Callback to be executed when the {@link DisplayPortAltModeInfo} changes on a
+ * {@link UsbPort}.
+ *
+ * @param portId String describing the {@link UsbPort} that was changed.
+ * @param info New {@link DisplayPortAltModeInfo} for the corresponding portId.
+ */
+ public void onDisplayPortAltModeInfoChanged(@NonNull String portId,
+ @NonNull DisplayPortAltModeInfo info);
+ }
+
+ /**
+ * Holds callback and executor data to be passed across UsbService.
+ */
+ private class DisplayPortAltModeInfoDispatchingListener extends
+ IDisplayPortAltModeInfoListener.Stub {
+
+ public void onDisplayPortAltModeInfoChanged(String portId,
+ DisplayPortAltModeInfo displayPortAltModeInfo) {
+ synchronized (mDisplayPortListenersLock) {
+ for (Map.Entry<DisplayPortAltModeInfoListener, Executor> entry :
+ mDisplayPortListeners.entrySet()) {
+ Executor executor = entry.getValue();
+ DisplayPortAltModeInfoListener callback = entry.getKey();
+ final long token = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> callback.onDisplayPortAltModeInfoChanged(portId,
+ displayPortAltModeInfo));
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception during onDisplayPortAltModeInfoChanged from "
+ + "executor: " + executor, e);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ }
+ }
+ }
+
private final Context mContext;
private final IUsbManager mService;
+ private final Object mDisplayPortListenersLock = new Object();
+ @GuardedBy("mDisplayPortListenersLock")
+ private ArrayMap<DisplayPortAltModeInfoListener, Executor> mDisplayPortListeners;
+ @GuardedBy("mDisplayPortListenersLock")
+ private DisplayPortAltModeInfoDispatchingListener mDisplayPortServiceListener;
/**
* @hide
@@ -1524,6 +1585,109 @@
}
}
+ @GuardedBy("mDisplayPortListenersLock")
+ @RequiresPermission(Manifest.permission.MANAGE_USB)
+ private boolean registerDisplayPortAltModeEventsIfNeededLocked() {
+ DisplayPortAltModeInfoDispatchingListener displayPortDispatchingListener =
+ new DisplayPortAltModeInfoDispatchingListener();
+ try {
+ if (mService.registerForDisplayPortEvents(displayPortDispatchingListener)) {
+ mDisplayPortServiceListener = displayPortDispatchingListener;
+ return true;
+ }
+ return false;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Registers the given listener to listen for DisplayPort Alt Mode changes.
+ * <p>
+ * If this method returns true, the caller should ensure to call
+ * {@link #unregisterDisplayPortAltModeListener} when it no longer requires updates.
+ *
+ * @param executor Executor on which to run the listener.
+ * @param listener DisplayPortAltModeInfoListener invoked on DisplayPortAltModeInfo
+ * changes. See {@link #DisplayPortAltModeInfoListener} for listener
+ * details.
+ *
+ * @return true on successful register, false on failed register due to listener already being
+ * registered or an internal error.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.MANAGE_USB)
+ public boolean registerDisplayPortAltModeInfoListener(
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull DisplayPortAltModeInfoListener listener) {
+ Objects.requireNonNull(executor, "registerDisplayPortAltModeInfoListener: "
+ + "executor must not be null.");
+ Objects.requireNonNull(listener, "registerDisplayPortAltModeInfoListener: "
+ + "listener must not be null.");
+
+ synchronized (mDisplayPortListenersLock) {
+ if (mDisplayPortListeners == null) {
+ mDisplayPortListeners = new ArrayMap<DisplayPortAltModeInfoListener,
+ Executor>();
+ }
+
+ if (mDisplayPortServiceListener == null) {
+ if (!registerDisplayPortAltModeEventsIfNeededLocked()) {
+ return false;
+ }
+ }
+ if (mDisplayPortListeners.containsKey(listener)) {
+ return false;
+ }
+
+ mDisplayPortListeners.put(listener, executor);
+ return true;
+ }
+ }
+
+ @GuardedBy("mDisplayPortListenersLock")
+ @RequiresPermission(Manifest.permission.MANAGE_USB)
+ private void unregisterDisplayPortAltModeEventsLocked() {
+ if (mDisplayPortServiceListener != null) {
+ try {
+ mService.unregisterForDisplayPortEvents(mDisplayPortServiceListener);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ } finally {
+ // If there was a RemoteException, the system server may have died,
+ // and this listener probably became unregistered, so clear it for re-registration.
+ mDisplayPortServiceListener = null;
+ }
+ }
+ }
+
+ /**
+ * Unregisters the given listener if it was previously passed to
+ * registerDisplayPortAltModeInfoListener.
+ *
+ * @param listener DisplayPortAltModeInfoListener used to register the listener
+ * in registerDisplayPortAltModeInfoListener.
+ *
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.MANAGE_USB)
+ public void unregisterDisplayPortAltModeInfoListener(
+ @NonNull DisplayPortAltModeInfoListener listener) {
+ synchronized (mDisplayPortListenersLock) {
+ if (mDisplayPortListeners == null) {
+ return;
+ }
+ mDisplayPortListeners.remove(listener);
+ if (mDisplayPortListeners.isEmpty()) {
+ unregisterDisplayPortAltModeEventsLocked();
+ }
+ }
+ return;
+ }
+
/**
* Sets the component that will handle USB device connection.
* <p>
diff --git a/core/java/android/hardware/usb/UsbPort.java b/core/java/android/hardware/usb/UsbPort.java
index cdd67b7..73dcb36 100644
--- a/core/java/android/hardware/usb/UsbPort.java
+++ b/core/java/android/hardware/usb/UsbPort.java
@@ -52,6 +52,10 @@
import static android.hardware.usb.UsbPortStatus.COMPLIANCE_WARNING_BC_1_2;
import static android.hardware.usb.UsbPortStatus.COMPLIANCE_WARNING_MISSING_RP;
import static android.hardware.usb.UsbPortStatus.COMPLIANCE_WARNING_OTHER;
+import static android.hardware.usb.DisplayPortAltModeInfo.DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN;
+import static android.hardware.usb.DisplayPortAltModeInfo.DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE;
+import static android.hardware.usb.DisplayPortAltModeInfo.DISPLAYPORT_ALT_MODE_STATUS_CAPABLE;
+import static android.hardware.usb.DisplayPortAltModeInfo.DISPLAYPORT_ALT_MODE_STATUS_ENABLED;
import android.Manifest;
import android.annotation.CallbackExecutor;
@@ -90,6 +94,7 @@
private final boolean mSupportsEnableContaminantPresenceProtection;
private final boolean mSupportsEnableContaminantPresenceDetection;
private final boolean mSupportsComplianceWarnings;
+ private final @AltModeType int mSupportedAltModes;
private static final int NUM_DATA_ROLES = Constants.PortDataRole.NUM_DATA_ROLES;
/**
@@ -252,6 +257,18 @@
@Retention(RetentionPolicy.SOURCE)
@interface EnableUsbDataWhileDockedStatus{}
+ /**
+ * Indicates that the Alt Mode being described is DisplayPort.
+ */
+ public static final int FLAG_ALT_MODE_TYPE_DISPLAYPORT = 1 << 0;
+
+ /** @hide */
+ @IntDef(prefix = { "FLAG_ALT_MODE_TYPE_" }, flag = true, value = {
+ FLAG_ALT_MODE_TYPE_DISPLAYPORT,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface AltModeType {}
+
/** @hide */
public UsbPort(@NonNull UsbManager usbManager, @NonNull String id, int supportedModes,
int supportedContaminantProtectionModes,
@@ -260,7 +277,7 @@
this(usbManager, id, supportedModes, supportedContaminantProtectionModes,
supportsEnableContaminantPresenceProtection,
supportsEnableContaminantPresenceDetection,
- false);
+ false, 0);
}
/** @hide */
@@ -268,7 +285,8 @@
int supportedContaminantProtectionModes,
boolean supportsEnableContaminantPresenceProtection,
boolean supportsEnableContaminantPresenceDetection,
- boolean supportsComplianceWarnings) {
+ boolean supportsComplianceWarnings,
+ int supportedAltModes) {
Objects.requireNonNull(id);
Preconditions.checkFlagsArgument(supportedModes,
MODE_DFP | MODE_UFP | MODE_AUDIO_ACCESSORY | MODE_DEBUG_ACCESSORY);
@@ -282,6 +300,7 @@
mSupportsEnableContaminantPresenceDetection =
supportsEnableContaminantPresenceDetection;
mSupportsComplianceWarnings = supportsComplianceWarnings;
+ mSupportedAltModes = supportedAltModes;
}
/**
@@ -366,6 +385,27 @@
}
/**
+ * Returns all Alt Modes supported by the port.
+ *
+ * @hide
+ */
+ public @AltModeType int getSupportedAltModesMask() {
+ return mSupportedAltModes;
+ }
+
+ /**
+ * Returns whether all Alt Mode types in a given mask are supported
+ * by the port.
+ *
+ * @return true if all given Alt Modes are supported, false otherwise.
+ *
+ */
+ public boolean isAltModeSupported(@AltModeType int typeMask) {
+ return (mSupportedAltModes & typeMask) == typeMask;
+ }
+
+
+ /**
* Sets the desired role combination of the port.
* <p>
* The supported role combinations depend on what is connected to the port and may be
@@ -761,6 +801,22 @@
}
/** @hide */
+ public static String dpAltModeStatusToString(int dpAltModeStatus) {
+ switch (dpAltModeStatus) {
+ case DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN:
+ return "Unknown";
+ case DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE:
+ return "Not Capable";
+ case DISPLAYPORT_ALT_MODE_STATUS_CAPABLE:
+ return "Capable";
+ case DISPLAYPORT_ALT_MODE_STATUS_ENABLED:
+ return "Enabled";
+ default:
+ return Integer.toString(dpAltModeStatus);
+ }
+ }
+
+ /** @hide */
public static void checkMode(int powerRole) {
Preconditions.checkArgumentInRange(powerRole, Constants.PortMode.NONE,
Constants.PortMode.NUM_MODES - 1, "portMode");
diff --git a/core/java/android/hardware/usb/UsbPortStatus.java b/core/java/android/hardware/usb/UsbPortStatus.java
index e61703d..8c13307 100644
--- a/core/java/android/hardware/usb/UsbPortStatus.java
+++ b/core/java/android/hardware/usb/UsbPortStatus.java
@@ -20,6 +20,7 @@
import android.annotation.CheckResult;
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.os.Parcel;
@@ -27,6 +28,7 @@
import com.android.internal.annotations.Immutable;
+import java.lang.StringBuilder;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -49,6 +51,13 @@
private final @UsbDataStatus int mUsbDataStatus;
private final @PowerBrickConnectionStatus int mPowerBrickConnectionStatus;
private final @NonNull @ComplianceWarning int[] mComplianceWarnings;
+ private final @PlugState int mPlugState;
+ /**
+ * Holds the DisplayPort Alt Mode info for the Port. This field
+ * is null if the device does not support DisplayPort Alt Mode.
+ */
+ private final @Nullable DisplayPortAltModeInfo mDisplayPortAltModeInfo;
+
/**
* Power role: This USB port does not have a power role.
@@ -300,6 +309,35 @@
*/
public static final int COMPLIANCE_WARNING_MISSING_RP = 4;
+ /**
+ * Indicates that the Type-C plug orientation cannot be
+ * determined.
+ */
+ public static final int PLUG_STATE_UNKNOWN = 0;
+
+ /**
+ * Indicates no Type-C plug is inserted into the device.
+ */
+ public static final int PLUG_STATE_UNPLUGGED = 1;
+
+ /**
+ * Indicates a Type-C plug is inserted into the device, but
+ * the orientation cannot be determined.
+ */
+ public static final int PLUG_STATE_PLUGGED_ORIENTATION_UNKNOWN = 2;
+
+ /**
+ * Indicates that the connected plug uses its CC1
+ * pin to manage the Source-to-Sink connection.
+ */
+ public static final int PLUG_STATE_PLUGGED_ORIENTATION_NORMAL = 3;
+
+ /**
+ * Indicates that the connected plug uses its CC2
+ * pin to manage the Source-to-Sink connection.
+ */
+ public static final int PLUG_STATE_PLUGGED_ORIENTATION_FLIPPED = 4;
+
@IntDef(prefix = { "CONTAMINANT_DETECTION_" }, value = {
CONTAMINANT_DETECTION_NOT_SUPPORTED,
CONTAMINANT_DETECTION_DISABLED,
@@ -338,6 +376,16 @@
@Retention(RetentionPolicy.SOURCE)
@interface ComplianceWarning{}
+ @IntDef(prefix = { "PLUG_STATE_" }, value = {
+ PLUG_STATE_UNKNOWN,
+ PLUG_STATE_UNPLUGGED,
+ PLUG_STATE_PLUGGED_ORIENTATION_UNKNOWN,
+ PLUG_STATE_PLUGGED_ORIENTATION_NORMAL,
+ PLUG_STATE_PLUGGED_ORIENTATION_FLIPPED,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ @interface PlugState{}
+
/** @hide */
@IntDef(prefix = { "DATA_STATUS_" }, flag = true, value = {
DATA_STATUS_UNKNOWN,
@@ -348,7 +396,7 @@
DATA_STATUS_DISABLED_DOCK_HOST_MODE,
DATA_STATUS_DISABLED_DOCK_DEVICE_MODE,
DATA_STATUS_DISABLED_FORCE,
- DATA_STATUS_DISABLED_DEBUG
+ DATA_STATUS_DISABLED_DEBUG,
})
@Retention(RetentionPolicy.SOURCE)
@interface UsbDataStatus{}
@@ -368,7 +416,9 @@
int contaminantDetectionStatus, @UsbDataStatus int usbDataStatus,
boolean powerTransferLimited,
@PowerBrickConnectionStatus int powerBrickConnectionStatus,
- @NonNull @ComplianceWarning int[] complianceWarnings) {
+ @NonNull @ComplianceWarning int[] complianceWarnings,
+ int plugState,
+ @Nullable DisplayPortAltModeInfo displayPortAltModeInfo) {
mCurrentMode = currentMode;
mCurrentPowerRole = currentPowerRole;
mCurrentDataRole = currentDataRole;
@@ -393,6 +443,8 @@
mPowerTransferLimited = powerTransferLimited;
mPowerBrickConnectionStatus = powerBrickConnectionStatus;
mComplianceWarnings = complianceWarnings;
+ mPlugState = plugState;
+ mDisplayPortAltModeInfo = displayPortAltModeInfo;
}
/** @hide */
@@ -404,7 +456,7 @@
this(currentMode, currentPowerRole, currentDataRole, supportedRoleCombinations,
contaminantProtectionStatus, contaminantDetectionStatus,
usbDataStatus, powerTransferLimited, powerBrickConnectionStatus,
- new int[] {});
+ new int[] {}, PLUG_STATE_UNKNOWN, null);
}
/** @hide */
@@ -414,7 +466,7 @@
this(currentMode, currentPowerRole, currentDataRole, supportedRoleCombinations,
contaminantProtectionStatus, contaminantDetectionStatus,
DATA_STATUS_UNKNOWN, false, POWER_BRICK_STATUS_UNKNOWN,
- new int[] {});
+ new int[] {}, PLUG_STATE_UNKNOWN, null);
}
/**
@@ -547,10 +599,34 @@
return mComplianceWarnings;
}
+ /**
+ * Returns the orientation state of the attached cable/adapter.
+ *
+ * @return one of {@link #PLUG_STATE_UNKNOWN},
+ * {@link #PLUG_STATE_UNPLUGGED},
+ * {@link #PLUG_STATE_PLUGGED_ORIENTATION_UNKNOWN},
+ * {@link #PLUG_STATE_PLUGGED_ORIENTATION_NORMAL},
+ * {@link #PLUG_STATE_PLUGGED_ORIENTATION_FLIPPED},
+ */
+ public @PlugState int getPlugState() {
+ return mPlugState;
+ }
+
+ /**
+ * Returns the DisplayPortInfo of the USB Port, if applicable.
+ *
+ * @return an instance of type DisplayPortInfo
+ * or null if not applicable.
+ */
+ @Nullable
+ public DisplayPortAltModeInfo getDisplayPortAltModeInfo() {
+ return (mDisplayPortAltModeInfo == null) ? null : mDisplayPortAltModeInfo;
+ }
+
@NonNull
@Override
public String toString() {
- return "UsbPortStatus{connected=" + isConnected()
+ StringBuilder mString = new StringBuilder("UsbPortStatus{connected=" + isConnected()
+ ", currentMode=" + UsbPort.modeToString(mCurrentMode)
+ ", currentPowerRole=" + UsbPort.powerRoleToString(mCurrentPowerRole)
+ ", currentDataRole=" + UsbPort.dataRoleToString(mCurrentDataRole)
@@ -569,7 +645,12 @@
.powerBrickConnectionStatusToString(getPowerBrickConnectionStatus())
+ ", complianceWarnings="
+ UsbPort.complianceWarningsToString(getComplianceWarnings())
- + "}";
+ + ", plugState="
+ + getPlugState()
+ + ", displayPortAltModeInfo="
+ + mDisplayPortAltModeInfo
+ + "}");
+ return mString.toString();
}
@Override
@@ -589,6 +670,13 @@
dest.writeBoolean(mPowerTransferLimited);
dest.writeInt(mPowerBrickConnectionStatus);
dest.writeIntArray(mComplianceWarnings);
+ dest.writeInt(mPlugState);
+ if (mDisplayPortAltModeInfo == null) {
+ dest.writeBoolean(false);
+ } else {
+ dest.writeBoolean(true);
+ mDisplayPortAltModeInfo.writeToParcel(dest, 0);
+ }
}
public static final @NonNull Parcelable.Creator<UsbPortStatus> CREATOR =
@@ -605,11 +693,19 @@
boolean powerTransferLimited = in.readBoolean();
int powerBrickConnectionStatus = in.readInt();
@ComplianceWarning int[] complianceWarnings = in.createIntArray();
+ int plugState = in.readInt();
+ boolean supportsDisplayPortAltMode = in.readBoolean();
+ DisplayPortAltModeInfo displayPortAltModeInfo;
+ if (supportsDisplayPortAltMode) {
+ displayPortAltModeInfo = DisplayPortAltModeInfo.CREATOR.createFromParcel(in);
+ } else {
+ displayPortAltModeInfo = null;
+ }
return new UsbPortStatus(currentMode, currentPowerRole, currentDataRole,
supportedRoleCombinations, contaminantProtectionStatus,
contaminantDetectionStatus, usbDataStatus, powerTransferLimited,
powerBrickConnectionStatus,
- complianceWarnings);
+ complianceWarnings, plugState, displayPortAltModeInfo);
}
@Override
@@ -634,6 +730,8 @@
private @UsbDataStatus int mUsbDataStatus;
private @PowerBrickConnectionStatus int mPowerBrickConnectionStatus;
private @ComplianceWarning int[] mComplianceWarnings;
+ private @PlugState int mPlugState;
+ private @Nullable DisplayPortAltModeInfo mDisplayPortAltModeInfo;
public Builder() {
mCurrentMode = MODE_NONE;
@@ -644,6 +742,8 @@
mUsbDataStatus = DATA_STATUS_UNKNOWN;
mPowerBrickConnectionStatus = POWER_BRICK_STATUS_UNKNOWN;
mComplianceWarnings = new int[] {};
+ mPlugState = PLUG_STATE_UNKNOWN;
+ mDisplayPortAltModeInfo = null;
}
/**
@@ -742,6 +842,28 @@
return this;
}
+ /**
+ * Sets the plug orientation of {@link UsbPortStatus}
+ *
+ * @return Instance of {@link Builder}
+ */
+ @NonNull
+ public Builder setPlugState(int plugState) {
+ mPlugState = plugState;
+ return this;
+ }
+
+ /**
+ * Sets the plug orientation of {@link UsbPortStatus}
+ *
+ * @return Instance of {@link Builder}
+ */
+ @NonNull
+ public Builder setDisplayPortAltModeInfo(
+ @Nullable DisplayPortAltModeInfo displayPortAltModeInfo) {
+ mDisplayPortAltModeInfo = displayPortAltModeInfo;
+ return this;
+ }
/**
* Creates the {@link UsbPortStatus} object.
@@ -751,7 +873,8 @@
UsbPortStatus status = new UsbPortStatus(mCurrentMode, mCurrentPowerRole,
mCurrentDataRole, mSupportedRoleCombinations, mContaminantProtectionStatus,
mContaminantDetectionStatus, mUsbDataStatus, mPowerTransferLimited,
- mPowerBrickConnectionStatus, mComplianceWarnings);
+ mPowerBrickConnectionStatus, mComplianceWarnings,
+ mPlugState, mDisplayPortAltModeInfo);
return status;
}
};
diff --git a/core/java/android/nfc/NfcActivityManager.java b/core/java/android/nfc/NfcActivityManager.java
index 935374d1..911aaf3 100644
--- a/core/java/android/nfc/NfcActivityManager.java
+++ b/core/java/android/nfc/NfcActivityManager.java
@@ -122,7 +122,7 @@
Binder token;
public NfcActivityState(Activity activity) {
- if (activity.getWindow().isDestroyed()) {
+ if (activity.isDestroyed()) {
throw new IllegalStateException("activity is already destroyed");
}
// Check if activity is resumed right now, as we will not
diff --git a/core/java/android/nfc/TechListParcel.java b/core/java/android/nfc/TechListParcel.java
index 90645dd..9f01559 100644
--- a/core/java/android/nfc/TechListParcel.java
+++ b/core/java/android/nfc/TechListParcel.java
@@ -53,7 +53,7 @@
int count = source.readInt();
String[][] techLists = new String[count][];
for (int i = 0; i < count; i++) {
- techLists[i] = source.readStringArray();
+ techLists[i] = source.createStringArray();
}
return new TechListParcel(techLists);
}
diff --git a/core/java/android/os/SystemClock.java b/core/java/android/os/SystemClock.java
index 2b75a23..831ca86 100644
--- a/core/java/android/os/SystemClock.java
+++ b/core/java/android/os/SystemClock.java
@@ -18,8 +18,8 @@
import android.annotation.NonNull;
import android.app.IAlarmManager;
+import android.app.time.UnixEpochTime;
import android.app.timedetector.ITimeDetectorService;
-import android.app.timedetector.TimePoint;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.location.ILocationManager;
@@ -300,7 +300,7 @@
ITimeDetectorService timeDetectorService = ITimeDetectorService.Stub
.asInterface(ServiceManager.getService(Context.TIME_DETECTOR_SERVICE));
if (timeDetectorService != null) {
- TimePoint time;
+ UnixEpochTime time;
try {
time = timeDetectorService.latestNetworkTime();
} catch (ParcelableException e) {
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 92ee393..0e4c2b2 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -599,8 +599,11 @@
/**
* Specifies if a user is disallowed from transferring files over USB.
*
- * <p>This restriction can only be set by a device owner, a profile owner on the primary
- * user or a profile owner of an organization-owned managed profile on the parent profile.
+ * <p>This restriction can only be set by a <a href="https://developers.google.com/android/work/terminology#device_owner_do">
+ * device owner</a> or a <a href="https://developers.google.com/android/work/terminology#profile_owner_po">
+ * profile owner</a> on the primary user's profile or a profile owner of an organization-owned
+ * <a href="https://developers.google.com/android/work/terminology#managed_profile">
+ * managed profile</a> on the parent profile.
* When it is set by a device owner, it applies globally. When it is set by a profile owner
* on the primary user or by a profile owner of an organization-owned managed profile on
* the parent profile, it disables the primary user from transferring files over USB. No other
@@ -1824,6 +1827,15 @@
public static final int REMOVE_RESULT_ERROR_SYSTEM_USER = -4;
/**
+ * A response code from {@link #removeUserWhenPossible(UserHandle, boolean)} indicating that
+ * user being removed is a {@link UserInfo#FLAG_MAIN} user and can't be removed because
+ * system property {@link com.android.internal.R.bool.isMainUserPermanentAdmin} is true.
+ * @hide
+ */
+ @SystemApi
+ public static final int REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN = -5;
+
+ /**
* Possible response codes from {@link #removeUserWhenPossible(UserHandle, boolean)}.
*
* @hide
@@ -1835,6 +1847,7 @@
REMOVE_RESULT_ERROR_USER_RESTRICTION,
REMOVE_RESULT_ERROR_USER_NOT_FOUND,
REMOVE_RESULT_ERROR_SYSTEM_USER,
+ REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN,
REMOVE_RESULT_ERROR_UNKNOWN,
})
@Retention(RetentionPolicy.SOURCE)
@@ -5233,8 +5246,9 @@
* @return the {@link RemoveResult} code: {@link #REMOVE_RESULT_REMOVED},
* {@link #REMOVE_RESULT_DEFERRED}, {@link #REMOVE_RESULT_ALREADY_BEING_REMOVED},
* {@link #REMOVE_RESULT_ERROR_USER_RESTRICTION}, {@link #REMOVE_RESULT_ERROR_USER_NOT_FOUND},
- * {@link #REMOVE_RESULT_ERROR_SYSTEM_USER}, or {@link #REMOVE_RESULT_ERROR_UNKNOWN}. All error
- * codes have negative values.
+ * {@link #REMOVE_RESULT_ERROR_SYSTEM_USER},
+ * {@link #REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN}, or
+ * {@link #REMOVE_RESULT_ERROR_UNKNOWN}. All error codes have negative values.
*
* @hide
*/
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 2bdd360..190b738 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1079,6 +1079,17 @@
"android.settings.APP_LOCALE_SETTINGS";
/**
+ * Activity Action: Show settings to allow configuration of regional preferences
+ * <p>
+ * Input: Nothing
+ * <p>
+ * Output: Nothing.
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_REGIONAL_PREFERENCES_SETTINGS =
+ "android.settings.REGIONAL_PREFERENCES_SETTINGS";
+
+ /**
* Activity Action: Show settings to allow configuration of lockscreen.
* <p>
* In some cases, a matching Activity may not exist, so ensure you
@@ -2501,6 +2512,7 @@
*
* @hide
*/
+ @SystemApi
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_SHOW_RESTRICTED_SETTING_DIALOG =
"android.settings.SHOW_RESTRICTED_SETTING_DIALOG";
@@ -18088,6 +18100,14 @@
* @hide
*/
public static final int EARLY_UPDATES_STATUS_ABORTED = 4;
+
+ /**
+ * Whether dynamic color theming (e.g. Material You) is enabled for apps which support
+ * it.
+ *
+ * @hide
+ */
+ public static final String DYNAMIC_COLOR_THEME_ENABLED = "dynamic_color_theme_enabled";
}
}
diff --git a/core/java/android/service/credentials/Action.java b/core/java/android/service/credentials/Action.java
index e187505..7487ac0 100644
--- a/core/java/android/service/credentials/Action.java
+++ b/core/java/android/service/credentials/Action.java
@@ -29,6 +29,9 @@
* An action defined by the provider that intents into the provider's app for specific
* user actions.
*
+ * <p>If user selects this action entry, the corresponding {@link PendingIntent} set on the
+ * {@code slice} as a {@link androidx.slice.core.SliceAction} will get invoked.
+ *
* <p>Any class that derives this class must only add extra field values to the {@code slice}
* object passed into the constructor. Any other field will not be parceled through. If the
* derived class has custom parceling implementation, this class will not be able to unpack
@@ -37,9 +40,8 @@
@SuppressLint("ParcelNotFinal")
public class Action implements Parcelable {
/** Slice object containing display content to be displayed with this action on the UI. */
- private final @NonNull Slice mSlice;
- /** The pending intent to be invoked when the user selects this action. */
- private final @NonNull PendingIntent mPendingIntent;
+ @NonNull
+ private final Slice mSlice;
/**
* Constructs an action to be displayed on the UI.
@@ -52,21 +54,18 @@
* {@link BeginCreateCredentialResponse} and {@link BeginGetCredentialResponse}.
*
* @param slice the display content to be displayed on the UI, along with this action
- * @param pendingIntent the intent to be invoked when the user selects this action
*/
- public Action(@NonNull Slice slice, @NonNull PendingIntent pendingIntent) {
+ public Action(@NonNull Slice slice) {
Objects.requireNonNull(slice, "slice must not be null");
- Objects.requireNonNull(pendingIntent, "pendingIntent must not be null");
mSlice = slice;
- mPendingIntent = pendingIntent;
}
private Action(@NonNull Parcel in) {
mSlice = in.readTypedObject(Slice.CREATOR);
- mPendingIntent = in.readTypedObject(PendingIntent.CREATOR);
}
- public static final @NonNull Creator<Action> CREATOR = new Creator<Action>() {
+ @NonNull
+ public static final Creator<Action> CREATOR = new Creator<Action>() {
@Override
public Action createFromParcel(@NonNull Parcel in) {
return new Action(in);
@@ -86,20 +85,13 @@
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeTypedObject(mSlice, flags);
- dest.writeTypedObject(mPendingIntent, flags);
}
/**
* Returns a {@code Slice} object containing the display content to be displayed on the UI.
*/
- public @NonNull Slice getSlice() {
+ @NonNull
+ public Slice getSlice() {
return mSlice;
}
-
- /**
- * Returns the {@link PendingIntent} to be invoked when the action is selected.
- */
- public @NonNull PendingIntent getPendingIntent() {
- return mPendingIntent;
- }
}
diff --git a/core/java/android/service/credentials/CallingAppInfo.java b/core/java/android/service/credentials/CallingAppInfo.java
index 6116726..53d24b1 100644
--- a/core/java/android/service/credentials/CallingAppInfo.java
+++ b/core/java/android/service/credentials/CallingAppInfo.java
@@ -17,15 +17,9 @@
package android.service.credentials;
import android.annotation.NonNull;
-import android.content.pm.Signature;
+import android.content.pm.SigningInfo;
import android.os.Parcel;
import android.os.Parcelable;
-import android.util.ArraySet;
-
-import com.android.internal.util.Preconditions;
-
-import java.util.Objects;
-import java.util.Set;
/**
* Information pertaining to the calling application, including the package name and a list of
@@ -33,26 +27,23 @@
*/
public final class CallingAppInfo implements Parcelable {
@NonNull private final String mPackageName;
- @NonNull private final Set<Signature> mSignatures;
+ @NonNull private final SigningInfo mSigningInfo;
/**
* Constructs a new instance.
*
* @throws IllegalArgumentException If {@code packageName} is null or empty.
- * @throws NullPointerException If {@code signatures} is null.
+ * @throws NullPointerException If {@code signingInfo} is null.
*/
public CallingAppInfo(@NonNull String packageName,
- @NonNull Set<Signature> signatures) {
- mPackageName = Preconditions.checkStringNotEmpty(packageName,
- "packageName must not be null or empty");
- mSignatures = Objects.requireNonNull(signatures);
+ @NonNull SigningInfo signingInfo) {
+ mPackageName = packageName;
+ mSigningInfo = signingInfo;
}
private CallingAppInfo(@NonNull Parcel in) {
- final ClassLoader boot = Object.class.getClassLoader();
mPackageName = in.readString8();
- ArraySet<Signature> signatures = (ArraySet<Signature>) in.readArraySet(boot);
- mSignatures = signatures == null ? new ArraySet<>() : signatures;
+ mSigningInfo = in.readTypedObject(SigningInfo.CREATOR);
}
public static final @NonNull Creator<CallingAppInfo> CREATOR = new Creator<CallingAppInfo>() {
@@ -72,9 +63,12 @@
return mPackageName;
}
- /** Returns the Set of signatures belonging to the app */
- @NonNull public Set<Signature> getSignatures() {
- return mSignatures;
+ /**
+ * Returns the SigningInfo object that contains an array of
+ * {@link android.content.pm.Signature} belonging to the app.
+ */
+ @NonNull public SigningInfo getSigningInfo() {
+ return mSigningInfo;
}
@Override
@@ -85,14 +79,20 @@
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString8(mPackageName);
- dest.writeArraySet(new ArraySet<>(mSignatures));
+ dest.writeTypedObject(mSigningInfo, flags);
}
@Override
public String toString() {
- return "CallingAppInfo {"
- + "packageName= " + mPackageName
- + ", No. of signatures: " + mSignatures.size()
- + " }";
+ StringBuilder builder = new StringBuilder("CallingAppInfo {"
+ + "packageName= " + mPackageName);
+ if (mSigningInfo != null) {
+ builder.append(", mSigningInfo : No. of signatures: " + mSigningInfo
+ .getApkContentsSigners().length);
+ } else {
+ builder.append(", mSigningInfo: null");
+ }
+ builder.append(" }");
+ return builder.toString();
}
}
diff --git a/core/java/android/service/credentials/CreateEntry.java b/core/java/android/service/credentials/CreateEntry.java
index 84a5f1c..106e65c 100644
--- a/core/java/android/service/credentials/CreateEntry.java
+++ b/core/java/android/service/credentials/CreateEntry.java
@@ -27,6 +27,13 @@
* An entry to be shown on the UI. This entry represents where the credential to be created will
* be stored. Examples include user's account, family group etc.
*
+ * <p>If user selects this entry, the corresponding {@link PendingIntent} set on the
+ * {@code slice} as a {@link androidx.slice.core.SliceAction} will get invoked.
+ * Once the resulting activity fulfills the required user engagement,
+ * the {@link android.app.Activity} result should be set to {@link android.app.Activity#RESULT_OK},
+ * and the {@link CredentialProviderService#EXTRA_CREATE_CREDENTIAL_RESPONSE} must be set with a
+ * {@link android.credentials.CreateCredentialResponse} object.
+ *
* <p>Any class that derives this class must only add extra field values to the {@code slice}
* object passed into the constructor. Any other field will not be parceled through. If the
* derived class has custom parceling implementation, this class will not be able to unpack
@@ -35,14 +42,13 @@
@SuppressLint("ParcelNotFinal")
public class CreateEntry implements Parcelable {
private final @NonNull Slice mSlice;
- private final @NonNull PendingIntent mPendingIntent;
private CreateEntry(@NonNull Parcel in) {
mSlice = in.readTypedObject(Slice.CREATOR);
- mPendingIntent = in.readTypedObject(PendingIntent.CREATOR);
}
- public static final @NonNull Creator<CreateEntry> CREATOR = new Creator<CreateEntry>() {
+ @NonNull
+ public static final Creator<CreateEntry> CREATOR = new Creator<CreateEntry>() {
@Override
public CreateEntry createFromParcel(@NonNull Parcel in) {
return new CreateEntry(in);
@@ -62,33 +68,23 @@
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeTypedObject(mSlice, flags);
- dest.writeTypedObject(mPendingIntent, flags);
}
/**
* Constructs a CreateEntry to be displayed on the UI.
*
* @param slice the display content to be displayed on the UI, along with this entry
- * @param pendingIntent the intent to be invoked when the user selects this entry
*/
public CreateEntry(
- @NonNull Slice slice,
- @NonNull PendingIntent pendingIntent) {
+ @NonNull Slice slice) {
this.mSlice = slice;
com.android.internal.util.AnnotationValidations.validate(
NonNull.class, null, mSlice);
- this.mPendingIntent = pendingIntent;
- com.android.internal.util.AnnotationValidations.validate(
- NonNull.class, null, mPendingIntent);
}
/** Returns the content to be displayed with this create entry on the UI. */
- public @NonNull Slice getSlice() {
+ @NonNull
+ public Slice getSlice() {
return mSlice;
}
-
- /** Returns the pendingIntent to be invoked when this create entry on the UI is selectcd. */
- public @NonNull PendingIntent getPendingIntent() {
- return mPendingIntent;
- }
}
diff --git a/core/java/android/service/credentials/CredentialEntry.java b/core/java/android/service/credentials/CredentialEntry.java
index 21e7b80..b037268 100644
--- a/core/java/android/service/credentials/CredentialEntry.java
+++ b/core/java/android/service/credentials/CredentialEntry.java
@@ -24,17 +24,14 @@
import android.os.Parcel;
import android.os.Parcelable;
-import com.android.internal.util.Preconditions;
-
-import java.util.Objects;
-
/**
* A credential entry that is to be displayed on the account selector that is presented to the
* user.
*
- * <p>If user selects this entry, the corresponding {@code pendingIntent} will be invoked to
- * launch activities that require some user engagement before getting the credential
- * corresponding to this entry, e.g. authentication, confirmation etc.
+ * <p>If user selects this entry, the corresponding {@link PendingIntent},
+ * set on the {@code slice} as a {@link androidx.slice.core.SliceAction} will be
+ * invoked to launch activities that require some user engagement before getting
+ * the credential corresponding to this entry, e.g. authentication, confirmation etc.
*
* Once the activity fulfills the required user engagement, the {@link android.app.Activity}
* result should be set to {@link android.app.Activity#RESULT_OK}, and the
@@ -55,51 +52,29 @@
* on the UI. */
private final @NonNull Slice mSlice;
- /** The pending intent to be invoked when this credential entry is selected. */
- private final @NonNull PendingIntent mPendingIntent;
-
- /** A flag denoting whether auto-select is enabled for this entry. */
- private final boolean mAutoSelectAllowed;
-
- /**
- * Constructs an instance of the credential entry to be displayed on the UI
- * @param type the type of credential underlying this credential entry
- * @param slice the content to be displayed with this entry on the UI
- * @param pendingIntent the pendingIntent to be invoked when this entry is selected by the user
- * @param autoSelectAllowed whether this entry should be auto selected if it is the only one
- * on the selector
- *
- * @throws NullPointerException If {@code slice}, or {@code pendingIntent} is null.
- * @throws IllegalArgumentException If {@code type} is null or empty, or if
- * {@code pendingIntent} is null.
- */
- public CredentialEntry(@NonNull String type, @NonNull Slice slice,
- @NonNull PendingIntent pendingIntent, boolean autoSelectAllowed) {
- mType = Preconditions.checkStringNotEmpty(type, "type must not be null");
- mSlice = Objects.requireNonNull(slice, "slice must not be null");
- mPendingIntent = Objects.requireNonNull(pendingIntent, "pendingintent must not be null");
- mAutoSelectAllowed = autoSelectAllowed;
+ public CredentialEntry(@NonNull String type, @NonNull Slice slice) {
+ mType = type;
+ mSlice = slice;
}
private CredentialEntry(@NonNull Parcel in) {
mType = in.readString8();
mSlice = in.readTypedObject(Slice.CREATOR);
- mPendingIntent = in.readTypedObject(PendingIntent.CREATOR);
- mAutoSelectAllowed = in.readBoolean();
}
- public static final @NonNull Creator<CredentialEntry> CREATOR =
+ @NonNull
+ public static final Creator<CredentialEntry> CREATOR =
new Creator<CredentialEntry>() {
- @Override
- public CredentialEntry createFromParcel(@NonNull Parcel in) {
- return new CredentialEntry(in);
- }
+ @Override
+ public CredentialEntry createFromParcel(@NonNull Parcel in) {
+ return new CredentialEntry(in);
+ }
- @Override
- public CredentialEntry[] newArray(int size) {
- return new CredentialEntry[size];
- }
- };
+ @Override
+ public CredentialEntry[] newArray(int size) {
+ return new CredentialEntry[size];
+ }
+ };
@Override
public int describeContents() {
@@ -110,35 +85,21 @@
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString8(mType);
dest.writeTypedObject(mSlice, flags);
- dest.writeTypedObject(mPendingIntent, flags);
- dest.writeBoolean(mAutoSelectAllowed);
}
/**
* Returns the specific credential type of the entry.
*/
- public @NonNull String getType() {
+ @NonNull
+ public String getType() {
return mType;
}
/**
* Returns the {@link Slice} object containing UI display content to be shown for this entry.
*/
- public @NonNull Slice getSlice() {
+ @NonNull
+ public Slice getSlice() {
return mSlice;
}
-
- /**
- * Returns the pending intent to be invoked if the user selects this entry.
- */
- public @NonNull PendingIntent getPendingIntent() {
- return mPendingIntent;
- }
-
- /**
- * Returns whether this entry can be auto selected if it is the only option for the user.
- */
- public boolean isAutoSelectAllowed() {
- return mAutoSelectAllowed;
- }
}
diff --git a/core/java/android/service/credentials/CredentialProviderService.java b/core/java/android/service/credentials/CredentialProviderService.java
index 41d20f2..70dd16c 100644
--- a/core/java/android/service/credentials/CredentialProviderService.java
+++ b/core/java/android/service/credentials/CredentialProviderService.java
@@ -181,7 +181,7 @@
@Override
public void onError(GetCredentialException e) {
try {
- callback.onFailure(e.errorType, e.getMessage());
+ callback.onFailure(e.getType(), e.getMessage());
} catch (RemoteException ex) {
ex.rethrowFromSystemServer();
}
@@ -216,7 +216,7 @@
@Override
public void onError(CreateCredentialException e) {
try {
- callback.onFailure(e.errorType, e.getMessage());
+ callback.onFailure(e.getType(), e.getMessage());
} catch (RemoteException ex) {
ex.rethrowFromSystemServer();
}
@@ -250,7 +250,7 @@
@Override
public void onError(ClearCredentialStateException e) {
try {
- callback.onFailure(e.errorType, e.getMessage());
+ callback.onFailure(e.getType(), e.getMessage());
} catch (RemoteException ex) {
ex.rethrowFromSystemServer();
}
diff --git a/core/java/android/service/quicksettings/TileService.java b/core/java/android/service/quicksettings/TileService.java
index 7b6ff97..d957029 100644
--- a/core/java/android/service/quicksettings/TileService.java
+++ b/core/java/android/service/quicksettings/TileService.java
@@ -24,6 +24,9 @@
import android.app.PendingIntent;
import android.app.Service;
import android.app.StatusBarManager;
+import android.app.compat.CompatChanges;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledSince;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -166,6 +169,17 @@
*/
public static final String EXTRA_STATE = "state";
+ /**
+ * The method {@link TileService#startActivityAndCollapse(Intent)} will verify that only
+ * apps targeting {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE} or higher will
+ * not be allowed to use it.
+ *
+ * @hide
+ */
+ @ChangeId
+ @EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+ public static final long START_ACTIVITY_NEEDS_PENDING_INTENT = 241766793L;
+
private final H mHandler = new H(Looper.getMainLooper());
private boolean mListening = false;
@@ -251,7 +265,6 @@
* This will collapse the Quick Settings panel and show the dialog.
*
* @param dialog Dialog to show.
- *
* @see #isLocked()
*/
public final void showDialog(Dialog dialog) {
@@ -330,8 +343,19 @@
/**
* Start an activity while collapsing the panel.
+ *
+ * @deprecated for versions {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE} and up,
+ * use {@link TileService#startActivityAndCollapse(PendingIntent)} instead.
+ * @throws UnsupportedOperationException if called in versions
+ * {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE} and up
*/
+ @Deprecated
public final void startActivityAndCollapse(Intent intent) {
+ if (CompatChanges.isChangeEnabled(START_ACTIVITY_NEEDS_PENDING_INTENT)) {
+ throw new UnsupportedOperationException(
+ "startActivityAndCollapse: Starting activity from TileService using an Intent"
+ + " is not allowed.");
+ }
startActivity(intent);
try {
mService.onStartActivity(mTileToken);
@@ -410,7 +434,7 @@
}
@Override
- public void onUnlockComplete() throws RemoteException{
+ public void onUnlockComplete() throws RemoteException {
mHandler.sendEmptyMessage(H.MSG_UNLOCK_COMPLETE);
}
};
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index 57ade13..70b04a1 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -141,6 +141,13 @@
public static final String SETTINGS_ACCESSIBILITY_HEARING_AID_PAGE =
"settings_accessibility_hearing_aid_page";
+ /**
+ * Flag to enable/disable preferring the AccessibilityMenu service in the system.
+ * @hide
+ */
+ public static final String SETTINGS_PREFER_ACCESSIBILITY_MENU_IN_SYSTEM =
+ "settings_prefer_accessibility_menu_in_system";
+
/** Flag to enable/disable audio routing change
* @hide
*/
@@ -151,6 +158,14 @@
*/
public static final String SETTINGS_FLASH_ALERTS = "settings_flash_alerts";
+ /**
+ * Flag to disable/enable showing udfps enroll view in settings. If it's disabled, udfps enroll
+ * view is shown in system ui.
+ * @hide
+ */
+ public static final String SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS =
+ "settings_show_udfps_enroll_in_settings";
+
private static final Map<String, String> DEFAULT_FLAGS;
static {
@@ -188,8 +203,10 @@
DEFAULT_FLAGS.put(SETTINGS_SHOW_STYLUS_PREFERENCES, "false");
DEFAULT_FLAGS.put(SETTINGS_BIOMETRICS2_ENROLLMENT, "false");
DEFAULT_FLAGS.put(SETTINGS_ACCESSIBILITY_HEARING_AID_PAGE, "false");
+ DEFAULT_FLAGS.put(SETTINGS_PREFER_ACCESSIBILITY_MENU_IN_SYSTEM, "false");
DEFAULT_FLAGS.put(SETTINGS_AUDIO_ROUTING, "false");
DEFAULT_FLAGS.put(SETTINGS_FLASH_ALERTS, "false");
+ DEFAULT_FLAGS.put(SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, "false");
}
private static final Set<String> PERSISTENT_FLAGS;
@@ -207,6 +224,7 @@
PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_TRACKPAD);
PERSISTENT_FLAGS.add(SETTINGS_NEW_KEYBOARD_TRACKPAD_GESTURE);
PERSISTENT_FLAGS.add(SETTINGS_ENABLE_SPA);
+ PERSISTENT_FLAGS.add(SETTINGS_PREFER_ACCESSIBILITY_MENU_IN_SYSTEM);
}
/**
diff --git a/core/java/android/view/ISurfaceControlViewHost.aidl b/core/java/android/view/ISurfaceControlViewHost.aidl
index bf72a30..15008ae 100644
--- a/core/java/android/view/ISurfaceControlViewHost.aidl
+++ b/core/java/android/view/ISurfaceControlViewHost.aidl
@@ -19,13 +19,19 @@
import android.content.res.Configuration;
import android.graphics.Rect;
import android.view.InsetsState;
+import android.window.ISurfaceSyncGroup;
/**
* API from content embedder back to embedded content in SurfaceControlViewHost
* {@hide}
*/
-oneway interface ISurfaceControlViewHost {
- void onConfigurationChanged(in Configuration newConfig);
- void onDispatchDetachedFromWindow();
- void onInsetsChanged(in InsetsState state, in Rect insetFrame);
+interface ISurfaceControlViewHost {
+ /**
+ * TODO (b/263273252): Investigate the need for these to be blocking calls or add additional
+ * APIs that are blocking
+ */
+ oneway void onConfigurationChanged(in Configuration newConfig);
+ oneway void onDispatchDetachedFromWindow();
+ oneway void onInsetsChanged(in InsetsState state, in Rect insetFrame);
+ ISurfaceSyncGroup getSurfaceSyncGroup();
}
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index e38e537..9fdda29 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -65,6 +65,8 @@
import android.view.SurfaceControl;
import android.view.displayhash.DisplayHash;
import android.view.displayhash.VerifiedDisplayHash;
+import android.window.AddToSurfaceSyncGroupResult;
+import android.window.ISurfaceSyncGroupCompletedListener;
import android.window.ITaskFpsCallback;
import android.window.ScreenCapture;
@@ -984,4 +986,18 @@
* @return {@code true} if the key will be handled globally.
*/
boolean isGlobalKey(int keyCode);
+
+ /**
+ * Create or add to a SurfaceSyncGroup in WindowManager. WindowManager maintains some
+ * SurfaceSyncGroups to ensure multiple processes can sync with each other without sharing
+ * SurfaceControls
+ */
+ boolean addToSurfaceSyncGroup(in IBinder syncGroupToken, boolean parentSyncGroupMerge,
+ in @nullable ISurfaceSyncGroupCompletedListener completedListener,
+ out AddToSurfaceSyncGroupResult addToSurfaceSyncGroupResult);
+
+ /**
+ * Mark a SurfaceSyncGroup stored in WindowManager as ready.
+ */
+ oneway void markSurfaceSyncGroupReady(in IBinder syncGroupToken);
}
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index 943d64a..fc47e69 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -353,4 +353,6 @@
* Returns whether this window needs to cancel draw and retry later.
*/
boolean cancelDraw(IWindow window);
+
+ boolean transferEmbeddedTouchFocusToHost(IWindow embeddedWindow);
}
diff --git a/core/java/android/view/ImeInsetsSourceConsumer.java b/core/java/android/view/ImeInsetsSourceConsumer.java
index f06ba3b..e89be47 100644
--- a/core/java/android/view/ImeInsetsSourceConsumer.java
+++ b/core/java/android/view/ImeInsetsSourceConsumer.java
@@ -173,6 +173,7 @@
ImeTracker.PHASE_CLIENT_INSETS_CONSUMER_NOTIFY_HIDDEN);
getImm().notifyImeHidden(mController.getHost().getWindowToken(), statsToken);
+ mIsRequestedVisibleAwaitingControl = false;
Trace.asyncTraceEnd(TRACE_TAG_VIEW, "IC.hideRequestFromApi", 0);
}
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index 829321e..8e8e28a 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -552,7 +552,7 @@
this.useInsetsAnimationThread = useInsetsAnimationThread;
}
- final @InsetsType int types;
+ @InsetsType int types;
final WindowInsetsAnimationControlListener listener;
final long durationMs;
final Interpolator interpolator;
@@ -1006,19 +1006,7 @@
}
// Handle pending request ready in case there was one set.
if (fromIme && mPendingImeControlRequest != null) {
- PendingControlRequest pendingRequest = mPendingImeControlRequest;
- mPendingImeControlRequest = null;
- mHandler.removeCallbacks(mPendingControlTimeout);
-
- // We are about to playing the default animation. Passing a null frame indicates the
- // controlled types should be animated regardless of the frame.
- controlAnimationUnchecked(
- pendingRequest.types, pendingRequest.cancellationSignal,
- pendingRequest.listener, null /* frame */,
- true /* fromIme */, pendingRequest.durationMs, pendingRequest.interpolator,
- pendingRequest.animationType,
- pendingRequest.layoutInsetsDuringAnimation,
- pendingRequest.useInsetsAnimationThread, statsToken);
+ handlePendingControlRequest(statsToken);
return;
}
@@ -1061,6 +1049,27 @@
applyAnimation(typesReady, true /* show */, fromIme, statsToken);
}
+ /**
+ * Handle the {@link #mPendingImeControlRequest} when
+ * - The IME insets is ready to show.
+ * - The IME insets has being requested invisible.
+ */
+ private void handlePendingControlRequest(@Nullable ImeTracker.Token statsToken) {
+ PendingControlRequest pendingRequest = mPendingImeControlRequest;
+ mPendingImeControlRequest = null;
+ mHandler.removeCallbacks(mPendingControlTimeout);
+
+ // We are about to playing the default animation. Passing a null frame indicates the
+ // controlled types should be animated regardless of the frame.
+ controlAnimationUnchecked(
+ pendingRequest.types, pendingRequest.cancellationSignal,
+ pendingRequest.listener, null /* frame */,
+ true /* fromIme */, pendingRequest.durationMs, pendingRequest.interpolator,
+ pendingRequest.animationType,
+ pendingRequest.layoutInsetsDuringAnimation,
+ pendingRequest.useInsetsAnimationThread, statsToken);
+ }
+
@Override
public void hide(@InsetsType int types) {
ImeTracker.Token statsToken = null;
@@ -1084,6 +1093,8 @@
Trace.asyncTraceBegin(TRACE_TAG_VIEW, "IC.hideRequestFromApi", 0);
}
int typesReady = 0;
+ boolean hasImeRequestedHidden = false;
+ final boolean hadPendingImeControlRequest = mPendingImeControlRequest != null;
for (int type = FIRST; type <= LAST; type = type << 1) {
if ((types & type) == 0) {
continue;
@@ -1091,6 +1102,22 @@
@AnimationType final int animationType = getAnimationType(type);
final boolean requestedVisible = (type & mRequestedVisibleTypes) != 0;
final boolean isImeAnimation = type == ime();
+ if (mPendingImeControlRequest != null && !requestedVisible) {
+ // Remove the hide insets type from the pending show request.
+ mPendingImeControlRequest.types &= ~type;
+ if (mPendingImeControlRequest.types == 0) {
+ abortPendingImeControlRequest();
+ }
+ }
+ if (isImeAnimation && !requestedVisible && animationType == ANIMATION_TYPE_NONE) {
+ hasImeRequestedHidden = true;
+ // Ensure to request hide IME in case there is any pending requested visible
+ // being applied from setControl when receiving the insets control.
+ if (hadPendingImeControlRequest
+ || getImeSourceConsumer().isRequestedVisibleAwaitingControl()) {
+ getImeSourceConsumer().requestHide(fromIme, statsToken);
+ }
+ }
if (!requestedVisible && animationType == ANIMATION_TYPE_NONE
|| animationType == ANIMATION_TYPE_HIDE) {
// no-op: already hidden or animating out (because window visibility is
@@ -1106,6 +1133,12 @@
}
typesReady |= type;
}
+ if (hasImeRequestedHidden && mPendingImeControlRequest != null) {
+ // Handle the pending show request for other insets types since the IME insets has being
+ // requested hidden.
+ handlePendingControlRequest(statsToken);
+ getImeSourceConsumer().removeSurface();
+ }
applyAnimation(typesReady, false /* show */, fromIme, statsToken);
}
diff --git a/core/java/android/view/InsetsFrameProvider.java b/core/java/android/view/InsetsFrameProvider.java
index 58ee59d..0a2b06c 100644
--- a/core/java/android/view/InsetsFrameProvider.java
+++ b/core/java/android/view/InsetsFrameProvider.java
@@ -323,7 +323,8 @@
public String toString() {
StringBuilder sb = new StringBuilder(32);
sb.append("TypedInsetsSize: {");
- sb.append("windowType=").append(windowType);
+ sb.append("windowType=").append(ViewDebug.intToString(
+ WindowManager.LayoutParams.class, "type", windowType));
sb.append(", insetsSize=").append(insetsSize);
sb.append("}");
return sb.toString();
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 1ff7ae6..b91019c 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1293,6 +1293,23 @@
*/
public static final int AXIS_GESTURE_Y_OFFSET = 49;
+ /**
+ * Axis constant: X scroll distance axis of a motion event.
+ * <p>
+ * <ul>
+ * <li>For a touch pad, reports the distance that should be scrolled in the X axis as a result
+ * of the user's two-finger scroll gesture, in display pixels.
+ * </ul>
+ */
+ public static final int AXIS_GESTURE_SCROLL_X_DISTANCE = 50;
+
+ /**
+ * Axis constant: Y scroll distance axis of a motion event.
+ *
+ * The same as {@link #AXIS_GESTURE_SCROLL_X_DISTANCE}, but for the Y axis.
+ */
+ public static final int AXIS_GESTURE_SCROLL_Y_DISTANCE = 51;
+
// NOTE: If you add a new axis here you must also add it to:
// frameworks/native/include/android/input.h
// frameworks/native/libs/input/InputEventLabels.cpp
@@ -1350,6 +1367,8 @@
names.append(AXIS_GENERIC_16, "AXIS_GENERIC_16");
names.append(AXIS_GESTURE_X_OFFSET, "AXIS_GESTURE_X_OFFSET");
names.append(AXIS_GESTURE_Y_OFFSET, "AXIS_GESTURE_Y_OFFSET");
+ names.append(AXIS_GESTURE_SCROLL_X_DISTANCE, "AXIS_GESTURE_SCROLL_X_DISTANCE");
+ names.append(AXIS_GESTURE_SCROLL_Y_DISTANCE, "AXIS_GESTURE_SCROLL_Y_DISTANCE");
}
/**
@@ -4234,6 +4253,13 @@
public float relativeY;
/**
+ * Whether these coordinate data were generated by resampling.
+ *
+ * @hide
+ */
+ public boolean isResampled;
+
+ /**
* Clears the contents of this object.
* Resets all axes to zero.
*/
@@ -4251,6 +4277,7 @@
orientation = 0;
relativeX = 0;
relativeY = 0;
+ isResampled = false;
}
/**
@@ -4283,6 +4310,7 @@
orientation = other.orientation;
relativeX = other.relativeX;
relativeY = other.relativeY;
+ isResampled = other.isResampled;
}
/**
diff --git a/core/java/android/view/MotionPredictor.java b/core/java/android/view/MotionPredictor.java
new file mode 100644
index 0000000..3e58a31
--- /dev/null
+++ b/core/java/android/view/MotionPredictor.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.view;
+
+import android.annotation.NonNull;
+import android.content.Context;
+
+import libcore.util.NativeAllocationRegistry;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Calculates motion predictions.
+ *
+ * Add motions here to get predicted events!
+ * @hide
+ */
+// Acts as a pass-through to the native MotionPredictor object.
+// Do not store any state in this Java layer, or add any business logic here. All of the
+// implementation details should go into the native MotionPredictor.
+// The context / resource access must be here rather than in native layer due to the lack of the
+// corresponding native API surface.
+public final class MotionPredictor {
+
+ private static class RegistryHolder {
+ public static final NativeAllocationRegistry REGISTRY =
+ NativeAllocationRegistry.createMalloced(
+ MotionPredictor.class.getClassLoader(),
+ nativeGetNativeMotionPredictorFinalizer());
+ }
+
+ // Pointer to the native object.
+ private final long mPtr;
+ private final Context mContext;
+
+ /**
+ * Create a new MotionPredictor for the provided {@link Context}.
+ * @param context The context for the predictions
+ */
+ public MotionPredictor(@NonNull Context context) {
+ mContext = context;
+ final int offsetNanos = mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_motionPredictionOffsetNanos);
+ mPtr = nativeInitialize(offsetNanos);
+ RegistryHolder.REGISTRY.registerNativeAllocation(this, mPtr);
+ }
+
+ /**
+ * Record a movement so that in the future, a prediction for the current gesture can be
+ * generated. Ensure to add all motions from the gesture of interest to generate the correct
+ * prediction.
+ * @param event The received event
+ */
+ public void record(@NonNull MotionEvent event) {
+ nativeRecord(mPtr, event);
+ }
+
+ /**
+ * Get predicted events for all gestures that have been provided to the 'record' function.
+ * If events from multiple devices were sent to 'record', this will produce a separate
+ * {@link MotionEvent} for each device id. The returned list may be empty if no predictions for
+ * any of the added events are available.
+ * Predictions may not reach the requested timestamp if the confidence in the prediction results
+ * is low.
+ *
+ * @param predictionTimeNanos The time that the prediction should target, in the
+ * {@link android.os.SystemClock#uptimeMillis} time base, but in nanoseconds.
+ *
+ * @return the list of predicted motion events, for each device id. Ensure to check the
+ * historical data in addition to the latest ({@link MotionEvent#getX getX()},
+ * {@link MotionEvent#getY getY()}) coordinates for smoothest prediction curves. Empty list is
+ * returned if predictions are not supported, or not possible for the current set of gestures.
+ */
+ @NonNull
+ public List<MotionEvent> predict(long predictionTimeNanos) {
+ return Arrays.asList(nativePredict(mPtr, predictionTimeNanos));
+ }
+
+ /**
+ * Check whether this device supports motion predictions for the given source type.
+ *
+ * @param deviceId The input device id
+ * @param source The source of input events
+ * @return True if the current device supports predictions, false otherwise.
+ */
+ public boolean isPredictionAvailable(int deviceId, int source) {
+ // Device-specific override
+ if (!mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_enableMotionPrediction)) {
+ return false;
+ }
+ return nativeIsPredictionAvailable(mPtr, deviceId, source);
+ }
+
+ private static native long nativeInitialize(int offsetNanos);
+ private static native void nativeRecord(long nativePtr, MotionEvent event);
+ private static native MotionEvent[] nativePredict(long nativePtr, long predictionTimeNanos);
+ private static native boolean nativeIsPredictionAvailable(long nativePtr, int deviceId,
+ int source);
+ private static native long nativeGetNativeMotionPredictorFinalizer();
+}
diff --git a/core/java/android/view/SurfaceControlViewHost.java b/core/java/android/view/SurfaceControlViewHost.java
index 50ce7b6..3efbb75 100644
--- a/core/java/android/view/SurfaceControlViewHost.java
+++ b/core/java/android/view/SurfaceControlViewHost.java
@@ -29,9 +29,14 @@
import android.os.RemoteException;
import android.util.Log;
import android.view.accessibility.IAccessibilityEmbeddedConnection;
+import android.window.ISurfaceSyncGroup;
import android.window.WindowTokenClient;
import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
/**
* Utility class for adding a View hierarchy to a {@link SurfaceControl}. The View hierarchy
@@ -87,6 +92,19 @@
}
mWm.setInsetsState(state);
}
+
+ @Override
+ public ISurfaceSyncGroup getSurfaceSyncGroup() {
+ CompletableFuture<ISurfaceSyncGroup> surfaceSyncGroup = new CompletableFuture<>();
+ mViewRoot.mHandler.post(
+ () -> surfaceSyncGroup.complete(mViewRoot.getOrCreateSurfaceSyncGroup()));
+ try {
+ return surfaceSyncGroup.get(1, TimeUnit.SECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ Log.e(TAG, "Failed to get SurfaceSyncGroup for SCVH", e);
+ }
+ return null;
+ }
}
private ISurfaceControlViewHost mRemoteInterface = new ISurfaceControlViewHostImpl();
@@ -194,7 +212,7 @@
* is more akin to a PopupWindow in that the size is user specified
* independent of configuration width and height.
*
- * In order to receive the configuration change via
+ * In order to receive the configuration change via
* {@link View#onConfigurationChanged}, the context used with the
* SurfaceControlViewHost and it's embedded view hierarchy must
* be a WindowContext obtained from {@link Context#createWindowContext}.
@@ -274,7 +292,7 @@
public SurfaceControlViewHost(@NonNull Context c, @NonNull Display d,
@NonNull WindowlessWindowManager wwm) {
mWm = wwm;
- mViewRoot = new ViewRootImpl(c, d, mWm, new WindowlessWindowLayout());
+ mViewRoot = new ViewRootImpl(c, d, mWm);
addConfigCallback(c, d);
WindowManagerGlobal.getInstance().addWindowlessRoot(mViewRoot);
@@ -304,7 +322,7 @@
mWm = new WindowlessWindowManager(context.getResources().getConfiguration(),
mSurfaceControl, hostToken);
- mViewRoot = new ViewRootImpl(context, display, mWm, new WindowlessWindowLayout());
+ mViewRoot = new ViewRootImpl(context, display, mWm);
addConfigCallback(context, display);
WindowManagerGlobal.getInstance().addWindowlessRoot(mViewRoot);
@@ -460,5 +478,26 @@
(WindowManagerImpl) mViewRoot.mContext.getSystemService(Context.WINDOW_SERVICE);
attrs.token = wm.getDefaultToken();
}
-}
+ /**
+ * Transfer the currently in progress touch gesture to the parent
+ * (if any) of this SurfaceControlViewHost. This requires that the
+ * SurfaceControlViewHost was created with an associated hostInputToken.
+ *
+ * @return Whether the touch stream was transferred.
+ * @hide
+ */
+ public boolean transferTouchGestureToHost() {
+ if (mViewRoot == null) {
+ return false;
+ }
+
+ final IWindowSession realWm = WindowManagerGlobal.getWindowSession();
+ try {
+ return realWm.transferEmbeddedTouchFocusToHost(mViewRoot.mWindow);
+ } catch (RemoteException e) {
+ e.rethrowAsRuntimeException();
+ }
+ return false;
+ }
+}
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index c64a2e8..e559a71 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -1091,7 +1091,8 @@
t = syncBufferTransactionCallback.waitForTransaction();
}
- surfaceSyncGroup.onTransactionReady(t);
+ surfaceSyncGroup.addTransactionToSync(t);
+ surfaceSyncGroup.markSyncReady();
onDrawFinished();
});
}
@@ -1106,7 +1107,7 @@
synchronized (mSyncGroups) {
mSyncGroups.remove(surfaceSyncGroup);
}
- surfaceSyncGroup.onTransactionReady(null);
+ surfaceSyncGroup.markSyncReady();
onDrawFinished();
});
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index e129767..3502c34 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -227,9 +227,11 @@
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
+import java.util.OptionalInt;
import java.util.Queue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
+import java.util.function.Consumer;
/**
* The top of a view hierarchy, implementing the needed protocol between View
@@ -515,8 +517,6 @@
private boolean mInvalidateRootRequested;
private int mCanvasOffsetX;
private int mCanvasOffsetY;
- private boolean mActivityRelaunched;
-
CompatibilityInfo.Translator mTranslator;
@UnsupportedAppUsage
@@ -862,6 +862,8 @@
// animations until all are done.
private static int sNumSyncsInProgress = 0;
+ private int mNumPausedForSync = 0;
+
private HashSet<ScrollCaptureCallback> mRootScrollCaptureCallbacks;
private long mScrollCaptureRequestTimeout = SCROLL_CAPTURE_REQUEST_TIMEOUT_MILLIS;
@@ -919,14 +921,13 @@
private String mTag = TAG;
public ViewRootImpl(Context context, Display display) {
- this(context, display, WindowManagerGlobal.getWindowSession(), new WindowLayout());
+ this(context, display, WindowManagerGlobal.getWindowSession());
}
- public ViewRootImpl(@UiContext Context context, Display display, IWindowSession session,
- WindowLayout windowLayout) {
+ public ViewRootImpl(@UiContext Context context, Display display, IWindowSession session) {
mContext = context;
mWindowSession = session;
- mWindowLayout = windowLayout;
+ mWindowLayout = new WindowLayout();
mDisplay = display;
mBasePackageName = context.getBasePackageName();
mThread = Thread.currentThread();
@@ -2810,6 +2811,19 @@
return;
}
+ if (mNumPausedForSync > 0) {
+ if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
+ Trace.instant(Trace.TRACE_TAG_VIEW,
+ TextUtils.formatSimple("performTraversals#mNumPausedForSync=%d",
+ mNumPausedForSync));
+ }
+ if (DEBUG_BLAST) {
+ Log.d(mTag, "Skipping traversal due to sync " + mNumPausedForSync);
+ }
+ mLastPerformTraversalsSkipDrawReason = "paused_for_sync";
+ return;
+ }
+
mIsInTraversal = true;
mWillDrawSoon = true;
boolean cancelDraw = false;
@@ -3021,11 +3035,6 @@
frame.height() < desiredWindowHeight && frame.height() != mHeight));
windowShouldResize |= mDragResizing && mPendingDragResizing;
- // If the activity was just relaunched, it might have unfrozen the task bounds (while
- // relaunching), so we need to force a call into window manager to pick up the latest
- // bounds.
- windowShouldResize |= mActivityRelaunched;
-
// Determine whether to compute insets.
// If there are no inset listeners remaining then we may still need to compute
// insets in case the old insets were non-empty and must be reset.
@@ -3640,7 +3649,6 @@
mFirst = false;
mWillDrawSoon = false;
mNewSurfaceNeeded = false;
- mActivityRelaunched = false;
mViewVisibility = viewVisibility;
final boolean hasWindowFocus = mAttachInfo.mHasWindowFocus && isViewVisible;
@@ -3677,7 +3685,7 @@
}
if (mActiveSurfaceSyncGroup != null) {
- mActiveSurfaceSyncGroup.onTransactionReady(null);
+ mActiveSurfaceSyncGroup.markSyncReady();
}
} else if (cancelAndRedraw) {
mLastPerformTraversalsSkipDrawReason = cancelDueToPreDrawListener
@@ -3693,7 +3701,7 @@
mPendingTransitions.clear();
}
if (!performDraw() && mActiveSurfaceSyncGroup != null) {
- mActiveSurfaceSyncGroup.onTransactionReady(null);
+ mActiveSurfaceSyncGroup.markSyncReady();
}
}
@@ -3710,7 +3718,7 @@
mActiveSurfaceSyncGroup = null;
mSyncBuffer = false;
if (isInWMSRequestedSync()) {
- mWmsRequestSyncGroup.onTransactionReady(null);
+ mWmsRequestSyncGroup.markSyncReady();
mWmsRequestSyncGroup = null;
mWmsRequestSyncGroupState = WMS_SYNC_NONE;
}
@@ -4552,7 +4560,7 @@
if (mSurfaceHolder != null && mSurface.isValid()) {
final SurfaceSyncGroup surfaceSyncGroup = mActiveSurfaceSyncGroup;
SurfaceCallbackHelper sch = new SurfaceCallbackHelper(() ->
- mHandler.post(() -> surfaceSyncGroup.onTransactionReady(null)));
+ mHandler.post(() -> surfaceSyncGroup.markSyncReady()));
mActiveSurfaceSyncGroup = null;
SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks();
@@ -4565,7 +4573,7 @@
}
}
if (mActiveSurfaceSyncGroup != null && !usingAsyncReport) {
- mActiveSurfaceSyncGroup.onTransactionReady(null);
+ mActiveSurfaceSyncGroup.markSyncReady();
}
if (mPerformContentCapture) {
performContentCaptureInitialReport();
@@ -10545,15 +10553,6 @@
}
}
- /**
- * Tells this instance that its corresponding activity has just relaunched. In this case, we
- * need to force a relayout of the window to make sure we get the correct bounds from window
- * manager.
- */
- public void reportActivityRelaunched() {
- mActivityRelaunched = true;
- }
-
public SurfaceControl getSurfaceControl() {
return mSurfaceControl;
}
@@ -10867,6 +10866,12 @@
public View mSource;
public long mLastEventTimeMillis;
/**
+ * Keep track of action that caused the event.
+ * This is empty if there's no performing actions for pending events.
+ * This is zero if there're multiple events performed for pending events.
+ */
+ @NonNull public OptionalInt mAction = OptionalInt.empty();
+ /**
* Override for {@link AccessibilityEvent#originStackTrace} to provide the stack trace
* of the original {@link #runOrPost} call instead of one for sending the delayed event
* from a looper.
@@ -10889,6 +10894,7 @@
AccessibilityEvent event = AccessibilityEvent.obtain();
event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
event.setContentChangeTypes(mChangeTypes);
+ if (mAction.isPresent()) event.setAction(mAction.getAsInt());
if (AccessibilityEvent.DEBUG_ORIGIN) event.originStackTrace = mOrigin;
source.sendAccessibilityEventUnchecked(event);
} else {
@@ -10897,6 +10903,7 @@
// In any case reset to initial state.
source.resetSubtreeAccessibilityStateChanged();
mChangeTypes = 0;
+ mAction = OptionalInt.empty();
if (AccessibilityEvent.DEBUG_ORIGIN) mOrigin = null;
}
@@ -10926,10 +10933,27 @@
}
mSource = (predecessor != null) ? predecessor : source;
mChangeTypes |= changeType;
+
+ final int performingAction = mAccessibilityManager.getPerformingAction();
+ if (performingAction != 0) {
+ if (mAction.isEmpty()) {
+ mAction = OptionalInt.of(performingAction);
+ } else if (mAction.getAsInt() != performingAction) {
+ // Multiple actions are performed for pending events. We cannot decide one
+ // action here.
+ // We're doing best effort to set action value, and it's fine to set
+ // no action this case.
+ mAction = OptionalInt.of(0);
+ }
+ }
+
return;
}
mSource = source;
mChangeTypes = changeType;
+ if (mAccessibilityManager.getPerformingAction() != 0) {
+ mAction = OptionalInt.of(mAccessibilityManager.getPerformingAction());
+ }
if (AccessibilityEvent.DEBUG_ORIGIN) {
mOrigin = Thread.currentThread().getStackTrace();
}
@@ -11280,8 +11304,9 @@
// pendingDrawFinished.
if ((syncResult
& (SYNC_LOST_SURFACE_REWARD_IF_FOUND | SYNC_CONTEXT_IS_STOPPED)) != 0) {
- surfaceSyncGroup.onTransactionReady(
+ surfaceSyncGroup.addTransactionToSync(
mBlastBufferQueue.gatherPendingTransactions(frame));
+ surfaceSyncGroup.markSyncReady();
return null;
}
@@ -11290,8 +11315,13 @@
}
if (syncBuffer) {
- mBlastBufferQueue.syncNextTransaction(
- surfaceSyncGroup::onTransactionReady);
+ mBlastBufferQueue.syncNextTransaction(new Consumer<Transaction>() {
+ @Override
+ public void accept(Transaction transaction) {
+ surfaceSyncGroup.addTransactionToSync(transaction);
+ surfaceSyncGroup.markSyncReady();
+ }
+ });
}
return didProduceBuffer -> {
@@ -11311,8 +11341,9 @@
// since the frame didn't draw on this vsync. It's possible the frame will
// draw later, but it's better to not be sync than to block on a frame that
// may never come.
- surfaceSyncGroup.onTransactionReady(
+ surfaceSyncGroup.addTransactionToSync(
mBlastBufferQueue.gatherPendingTransactions(frame));
+ surfaceSyncGroup.markSyncReady();
return;
}
@@ -11320,22 +11351,41 @@
// syncNextTransaction callback. Instead, just report back to the Syncer so it
// knows that this sync request is complete.
if (!syncBuffer) {
- surfaceSyncGroup.onTransactionReady(null);
+ surfaceSyncGroup.markSyncReady();
}
};
}
});
}
+ private class VRISurfaceSyncGroup extends SurfaceSyncGroup {
+ VRISurfaceSyncGroup(String name) {
+ super(name);
+ }
+
+ @Override
+ public void onSyncReady() {
+ Runnable runnable = () -> {
+ mNumPausedForSync--;
+ if (!mIsInTraversal && mNumPausedForSync == 0) {
+ scheduleTraversals();
+ }
+ };
+
+ if (Thread.currentThread() == mThread) {
+ runnable.run();
+ } else {
+ mHandler.post(runnable);
+ }
+ }
+ }
+
@Override
public SurfaceSyncGroup getOrCreateSurfaceSyncGroup() {
boolean newSyncGroup = false;
if (mActiveSurfaceSyncGroup == null) {
- mActiveSurfaceSyncGroup = new SurfaceSyncGroup(mTag);
+ mActiveSurfaceSyncGroup = new VRISurfaceSyncGroup(mTag);
updateSyncInProgressCount(mActiveSurfaceSyncGroup);
- if (!mIsInTraversal && !mTraversalScheduled) {
- scheduleTraversals();
- }
newSyncGroup = true;
}
@@ -11351,6 +11401,7 @@
}
}
+ mNumPausedForSync++;
return mActiveSurfaceSyncGroup;
};
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 02027e4..a208cb3 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -2773,13 +2773,6 @@
public abstract void onPictureInPictureModeChanged(boolean isInPictureInPictureMode);
/**
- * Called when the activity just relaunched.
- * @hide
- */
- @SuppressWarnings("HiddenAbstractMethod")
- public abstract void reportActivityRelaunched();
-
- /**
* @return The {@link WindowInsetsController} associated with this window
* @see View#getWindowInsetsController()
*/
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 43cf758..d0f0d4a 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -4798,10 +4798,10 @@
}
if (providedInsets != null) {
sb.append(System.lineSeparator());
- sb.append(" providedInsets=");
+ sb.append(prefix).append(" providedInsets:");
for (int i = 0; i < providedInsets.length; ++i) {
- if (i > 0) sb.append(' ');
- sb.append((providedInsets[i]));
+ sb.append(System.lineSeparator());
+ sb.append(prefix).append(" ").append(providedInsets[i]);
}
}
if (insetsRoundedCornerFrame) {
@@ -4810,10 +4810,12 @@
}
if (paramsForRotation != null && paramsForRotation.length != 0) {
sb.append(System.lineSeparator());
- sb.append(prefix).append(" paramsForRotation=");
+ sb.append(prefix).append(" paramsForRotation:");
for (int i = 0; i < paramsForRotation.length; ++i) {
- if (i > 0) sb.append(' ');
- sb.append(paramsForRotation[i].toString());
+ // Additional prefix needed for the beginning of the params of the new rotation.
+ sb.append(System.lineSeparator()).append(prefix).append(" ");
+ sb.append(Surface.rotationToString(i)).append("=");
+ sb.append(paramsForRotation[i].toString(prefix + " "));
}
}
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index 4a9dc5b..acc0c0b 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -388,8 +388,7 @@
if (windowlessSession == null) {
root = new ViewRootImpl(view.getContext(), display);
} else {
- root = new ViewRootImpl(view.getContext(), display,
- windowlessSession, new WindowlessWindowLayout());
+ root = new ViewRootImpl(view.getContext(), display, windowlessSession);
}
view.setLayoutParams(wparams);
diff --git a/core/java/android/view/WindowManagerPolicyConstants.java b/core/java/android/view/WindowManagerPolicyConstants.java
index 9472d86..afc567e 100644
--- a/core/java/android/view/WindowManagerPolicyConstants.java
+++ b/core/java/android/view/WindowManagerPolicyConstants.java
@@ -162,6 +162,9 @@
case PowerManager.WAKE_REASON_POWER_BUTTON:
case PowerManager.WAKE_REASON_PLUGGED_IN:
case PowerManager.WAKE_REASON_GESTURE:
+ case PowerManager.WAKE_REASON_TAP:
+ case PowerManager.WAKE_REASON_LIFT:
+ case PowerManager.WAKE_REASON_BIOMETRIC:
case PowerManager.WAKE_REASON_CAMERA_LAUNCH:
case PowerManager.WAKE_REASON_WAKE_KEY:
case PowerManager.WAKE_REASON_WAKE_MOTION:
diff --git a/core/java/android/view/WindowlessWindowLayout.java b/core/java/android/view/WindowlessWindowLayout.java
deleted file mode 100644
index 8ef4d78..0000000
--- a/core/java/android/view/WindowlessWindowLayout.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.view;
-
-import android.app.WindowConfiguration.WindowingMode;
-import android.graphics.Rect;
-import android.view.WindowInsets.Type.InsetsType;
-import android.window.ClientWindowFrames;
-
-/**
- * Computes window frames for the windowless window.
- * @hide
- */
-public class WindowlessWindowLayout extends WindowLayout {
-
- @Override
- public void computeFrames(WindowManager.LayoutParams attrs, InsetsState state,
- Rect displayCutoutSafe, Rect windowBounds, @WindowingMode int windowingMode,
- int requestedWidth, int requestedHeight, @InsetsType int requestedVisibleTypes,
- float compatScale, ClientWindowFrames frames) {
- frames.frame.set(0, 0, attrs.width, attrs.height);
- frames.displayFrame.set(frames.frame);
- frames.parentFrame.set(frames.frame);
- }
-}
-
diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java
index edf33f1..4ddd485 100644
--- a/core/java/android/view/WindowlessWindowManager.java
+++ b/core/java/android/view/WindowlessWindowManager.java
@@ -17,6 +17,7 @@
package android.view;
import android.annotation.Nullable;
+import android.app.WindowConfiguration;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.graphics.Rect;
@@ -53,13 +54,21 @@
IBinder mInputChannelToken;
Region mInputRegion;
IWindow mClient;
- State(SurfaceControl sc, WindowManager.LayoutParams p, int displayId,
- IBinder inputChannelToken, IWindow client) {
+ SurfaceControl mLeash;
+ Rect mFrame;
+ Rect mAttachedFrame;
+
+ State(SurfaceControl sc, WindowManager.LayoutParams p,
+ int displayId, IBinder inputChannelToken, IWindow client, SurfaceControl leash,
+ Rect frame, Rect attachedFrame) {
mSurfaceControl = sc;
mParams.copyFrom(p);
mDisplayId = displayId;
mInputChannelToken = inputChannelToken;
mClient = client;
+ mLeash = leash;
+ mFrame = frame;
+ mAttachedFrame = attachedFrame;
}
};
@@ -85,6 +94,10 @@
private InsetsState mInsetsState;
private final ClientWindowFrames mTmpFrames = new ClientWindowFrames();
private final MergedConfiguration mTmpConfig = new MergedConfiguration();
+ private final InsetsState mTmpInsetsState = new InsetsState();
+ private final Rect mTmpDisplayCutoutSafe = new Rect();
+ private final Rect mTmpWindowBounds = new Rect();
+ private final WindowLayout mLayout = new WindowLayout();
public WindowlessWindowManager(Configuration c, SurfaceControl rootSurface,
IBinder hostInputToken) {
@@ -137,8 +150,15 @@
}
}
- protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) {
- b.setParent(mRootSurface);
+ protected SurfaceControl getParentSurface(IWindow window, WindowManager.LayoutParams attrs) {
+ // If this is the first window, the state map is empty and the parent surface is the
+ // root. Otherwise, the parent surface is in the state map.
+ synchronized (this) {
+ if (mStateForWindow.isEmpty()) {
+ return mRootSurface;
+ }
+ return mStateForWindow.get(attrs.token).mLeash;
+ }
}
/**
@@ -150,13 +170,20 @@
InputChannel outInputChannel, InsetsState outInsetsState,
InsetsSourceControl.Array outActiveControls, Rect outAttachedFrame,
float[] outSizeCompatScale) {
- final SurfaceControl.Builder b = new SurfaceControl.Builder(mSurfaceSession)
+ final SurfaceControl leash = new SurfaceControl.Builder(mSurfaceSession)
+ .setName(attrs.getTitle().toString() + "Leash")
+ .setCallsite("WindowlessWindowManager.addToDisplay")
+ .setParent(getParentSurface(window, attrs))
+ .build();
+
+ final SurfaceControl sc = new SurfaceControl.Builder(mSurfaceSession)
.setFormat(attrs.format)
.setBLASTLayer()
.setName(attrs.getTitle().toString())
- .setCallsite("WindowlessWindowManager.addToDisplay");
- attachToParentSurface(window, b);
- final SurfaceControl sc = b.build();
+ .setCallsite("WindowlessWindowManager.addToDisplay")
+ .setHidden(false)
+ .setParent(leash)
+ .build();
if (((attrs.inputFeatures &
WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHANNEL) == 0)) {
@@ -178,11 +205,22 @@
}
final State state = new State(sc, attrs, displayId,
- outInputChannel != null ? outInputChannel.getToken() : null, window);
+ outInputChannel != null ? outInputChannel.getToken() : null, window,
+ leash, /* frame= */ new Rect(), /* attachedFrame= */ null);
+ Rect parentFrame = null;
synchronized (this) {
+ State parentState = mStateForWindow.get(attrs.token);
+ if (parentState != null) {
+ parentFrame = parentState.mFrame;
+ }
mStateForWindow.put(window.asBinder(), state);
}
- outAttachedFrame.set(0, 0, -1, -1);
+ state.mAttachedFrame = parentFrame;
+ if (parentFrame == null) {
+ outAttachedFrame.set(0, 0, -1, -1);
+ } else {
+ outAttachedFrame.set(parentFrame);
+ }
outSizeCompatScale[0] = 1f;
final int res = WindowManagerGlobal.ADD_OKAY | WindowManagerGlobal.ADD_FLAG_APP_VISIBLE |
@@ -227,6 +265,7 @@
"Invalid window token (never added or removed already)");
}
removeSurface(state.mSurfaceControl);
+ removeSurface(state.mLeash);
}
/** Separate from {@link #remove} so that subclasses can put removal on a sync transaction. */
@@ -301,6 +340,7 @@
"Invalid window token (never added or removed already)");
}
SurfaceControl sc = state.mSurfaceControl;
+ SurfaceControl leash = state.mLeash;
SurfaceControl.Transaction t = new SurfaceControl.Transaction();
int attrChanges = 0;
@@ -309,21 +349,42 @@
}
WindowManager.LayoutParams attrs = state.mParams;
+ mTmpFrames.attachedFrame = state.mAttachedFrame;
+
+ if (state.mAttachedFrame == null) {
+ mTmpWindowBounds.set(0, 0, requestedWidth, requestedHeight);
+ } else {
+ mTmpWindowBounds.set(state.mAttachedFrame);
+ }
+
+ mLayout.computeFrames(attrs, mTmpInsetsState, mTmpDisplayCutoutSafe, mTmpWindowBounds,
+ WindowConfiguration.WINDOWING_MODE_UNDEFINED, requestedWidth, requestedHeight, 0,
+ 1f, mTmpFrames);
+
+ state.mFrame.set(mTmpFrames.frame);
+ if (outFrames != null) {
+ outFrames.frame.set(mTmpFrames.frame);
+ outFrames.parentFrame.set(mTmpFrames.parentFrame);
+ outFrames.displayFrame.set(mTmpFrames.displayFrame);
+ }
+
+ t.setPosition(leash, mTmpFrames.frame.left, mTmpFrames.frame.top);
+ t.setWindowCrop(leash, mTmpFrames.frame.width(), mTmpFrames.frame.height());
+
if (viewFlags == View.VISIBLE) {
- t.setOpaque(sc, isOpaque(attrs)).show(sc).apply();
+ // TODO(b/262892794) ViewRootImpl modifies the app's rendering SurfaceControl
+ // opaqueness. We shouldn't need to modify opaqueness for this SurfaceControl here or
+ // in the real WindowManager.
+ t.setOpaque(sc, isOpaque(attrs)).show(leash).apply();
if (outSurfaceControl != null) {
outSurfaceControl.copyFrom(sc, "WindowlessWindowManager.relayout");
}
} else {
- t.hide(sc).apply();
+ t.hide(leash).apply();
if (outSurfaceControl != null) {
outSurfaceControl.release();
}
}
- if (outFrames != null) {
- outFrames.frame.set(0, 0, attrs.width, attrs.height);
- outFrames.displayFrame.set(outFrames.frame);
- }
if (outMergedConfiguration != null) {
outMergedConfiguration.setConfiguration(mConfiguration, mConfiguration);
@@ -561,4 +622,11 @@
public boolean cancelDraw(IWindow window) {
return false;
}
+
+ @Override
+ public boolean transferEmbeddedTouchFocusToHost(IWindow window) {
+ Log.e(TAG, "Received request to transferEmbeddedTouch focus on WindowlessWindowManager" +
+ " we shouldn't get here!");
+ return false;
+ }
}
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index 9abbba9..8e335e8 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -1275,6 +1275,15 @@
}
/**
+ * Get the id of {@link AccessibilityNodeInfo.AccessibilityAction} currently being performed.
+ *
+ * @hide
+ */
+ public int getPerformingAction() {
+ return mPerformingAction;
+ }
+
+ /**
* Registers a {@link HighTextContrastChangeListener} for changes in
* the global high text contrast state of the system.
*
diff --git a/core/java/android/window/AddToSurfaceSyncGroupResult.aidl b/core/java/android/window/AddToSurfaceSyncGroupResult.aidl
new file mode 100644
index 0000000..ea38e65
--- /dev/null
+++ b/core/java/android/window/AddToSurfaceSyncGroupResult.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.window;
+
+import android.window.ISurfaceSyncGroup;
+import android.window.ITransactionReadyCallback;
+
+/**
+ * Data class that contains the results when adding a SufarceSyncGroup to WindowManagerService
+ * @hide
+ */
+parcelable AddToSurfaceSyncGroupResult {
+ /**
+ * The ISurfaceSyncGroup that the child was added to.
+ */
+ ISurfaceSyncGroup mParentSyncGroup;
+
+ /**
+ * The ITransactionReadyCallback that should be called when the child SurfaceSyncGroup
+ * completes.
+ */
+ ITransactionReadyCallback mTransactionReadyCallback;
+}
\ No newline at end of file
diff --git a/core/java/android/window/BackEvent.java b/core/java/android/window/BackEvent.java
index 40c0fee..f53737a 100644
--- a/core/java/android/window/BackEvent.java
+++ b/core/java/android/window/BackEvent.java
@@ -74,6 +74,9 @@
* and animation should seek to its end state. Exact end value may vary depending on
* screen size.
* </ol>
+ * <li> After the gesture finishes in cancel state, this method keeps getting invoked until the
+ * progress value animates back to 0.
+ * </ol>
* In-between locations are linearly interpolated based on horizontal distance from the starting
* edge and smooth clamped to 1 when the distance exceeds a system-wide threshold.
*/
diff --git a/core/java/android/window/BackProgressAnimator.java b/core/java/android/window/BackProgressAnimator.java
index 14a57e0..618670a 100644
--- a/core/java/android/window/BackProgressAnimator.java
+++ b/core/java/android/window/BackProgressAnimator.java
@@ -16,8 +16,10 @@
package android.window;
+import android.annotation.NonNull;
import android.util.FloatProperty;
+import com.android.internal.dynamicanimation.animation.DynamicAnimation;
import com.android.internal.dynamicanimation.animation.SpringAnimation;
import com.android.internal.dynamicanimation.animation.SpringForce;
@@ -126,6 +128,27 @@
mProgress = 0;
}
+ /**
+ * Animate the back progress animation from current progress to start position.
+ * This should be called when back is cancelled.
+ *
+ * @param finishCallback the callback to be invoked when the progress is reach to 0.
+ */
+ public void onBackCancelled(@NonNull Runnable finishCallback) {
+ final DynamicAnimation.OnAnimationEndListener listener =
+ new DynamicAnimation.OnAnimationEndListener() {
+ @Override
+ public void onAnimationEnd(DynamicAnimation animation, boolean canceled, float value,
+ float velocity) {
+ mSpring.removeEndListener(this);
+ finishCallback.run();
+ reset();
+ }
+ };
+ mSpring.addEndListener(listener);
+ mSpring.animateToFinalPosition(0);
+ }
+
private void updateProgressValue(float progress) {
if (mLastBackEvent == null || mCallback == null || !mStarted) {
return;
diff --git a/core/java/android/window/ISurfaceSyncGroup.aidl b/core/java/android/window/ISurfaceSyncGroup.aidl
new file mode 100644
index 0000000..c60133b
--- /dev/null
+++ b/core/java/android/window/ISurfaceSyncGroup.aidl
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.window;
+
+import android.os.IBinder;
+
+/**
+ * An ISurfaceSyncGroup that can be added to another ISurfaceSyncGroup or is the root
+ * ISurfaceSyncGroup.
+ *
+ * See SurfaceSyncGroup.md
+ *
+ * {@hide}
+ */
+interface ISurfaceSyncGroup {
+ /**
+ * Called when the ISurfaceSyncGroup is ready to begin handling a sync request. When invoked,
+ * the implementor should set up the {@link android.window.ITransactionReadyCallback}, either
+ * via system server or in the local process.
+ *
+ * @param parentSyncGroup The parent that added this ISurfaceSyncGroup
+ * @param parentSyncGroupMerge true if the ISurfaceSyncGroup is added because its child was
+ * added to a new SurfaceSyncGroup.
+ * @return true if it was successfully added to the sync, false otherwise.
+ */
+ boolean onAddedToSyncGroup(in IBinder parentSyncGroupToken, boolean parentSyncGroupMerge);
+
+ /**
+ * Call to add a ISurfaceSyncGroup to this ISurfaceSyncGroup. This is adding a child
+ * ISurfaceSyncGroup so this group can't complete until the child does.
+ *
+ * @param The child ISurfaceSyncGroup to add to this ISurfaceSyncGroup.
+ * @param parentSyncGroupMerge true if the current ISurfaceSyncGroup is added because its child
+ * was added to a new SurfaceSyncGroup. That would require the code
+ * to call newParent.addToSync(oldParent). When this occurs, we need
+ * to reverse the merge order because the oldParent should always be
+ * considered older than any other SurfaceSyncGroups.
+ * @return true if it was successfully added to the sync, false otherwise.
+ */
+ boolean addToSync(in ISurfaceSyncGroup surfaceSyncGroup, boolean parentSyncGroupMerge);
+}
\ No newline at end of file
diff --git a/core/java/android/window/ISurfaceSyncGroupCompletedListener.aidl b/core/java/android/window/ISurfaceSyncGroupCompletedListener.aidl
new file mode 100644
index 0000000..cac1079
--- /dev/null
+++ b/core/java/android/window/ISurfaceSyncGroupCompletedListener.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.window;
+
+/**
+ * A listener used to notify when a SurfaceSyncGroup has completed. This doesn't indicate anything
+ * about the state of what's on screen, but means everything in the SurfaceSyncGroup has
+ * completed, including all children. This is similar to
+ * {@link SurfaceSyncGroup#addSyncCompleteCallback}, except allows the callback to be invoked to
+ * another process.
+ *
+ * @hide
+ */
+interface ISurfaceSyncGroupCompletedListener {
+ /**
+ * Invoked when the SurfaceSyncGroup has completed.
+ */
+ oneway void onSurfaceSyncGroupComplete();
+}
\ No newline at end of file
diff --git a/core/java/android/window/ITransactionReadyCallback.aidl b/core/java/android/window/ITransactionReadyCallback.aidl
new file mode 100644
index 0000000..36b1579
--- /dev/null
+++ b/core/java/android/window/ITransactionReadyCallback.aidl
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.window;
+
+import android.view.SurfaceControl.Transaction;
+
+/**
+ * Interface that is invoked when the ISurfaceSyncGroup has completed. The parent ISurfaceSyncGroup
+ * creates an ITransactionReadyCallback and sends it to the children who will invoke the
+ * {@link onTransactionReady} when they have completed, including waiting on their children.
+ *
+ * @hide
+ */
+interface ITransactionReadyCallback {
+ /**
+ * Invoked when ISurfaceSyncGroup has completed. This means the ISurfaceSyncGroup has been
+ * marked as ready and all children it was waiting on have been completed.
+ *
+ * @param t The transaction that contains everything to be included in the sync. This can be
+ null if there's nothing to sync
+ */
+ void onTransactionReady(in @nullable Transaction t);
+}
\ No newline at end of file
diff --git a/core/java/android/window/ImeOnBackInvokedDispatcher.java b/core/java/android/window/ImeOnBackInvokedDispatcher.java
index be9cbff..a0bd7f7 100644
--- a/core/java/android/window/ImeOnBackInvokedDispatcher.java
+++ b/core/java/android/window/ImeOnBackInvokedDispatcher.java
@@ -226,8 +226,8 @@
previous.getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(imeCallback);
}
if (current != null) {
- current.getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
- imeCallback.mPriority, imeCallback);
+ current.getOnBackInvokedDispatcher().registerOnBackInvokedCallbackUnchecked(
+ imeCallback, imeCallback.mPriority);
}
}
}
diff --git a/core/java/android/window/SurfaceSyncGroup.java b/core/java/android/window/SurfaceSyncGroup.java
index e1a9a48..12cd340 100644
--- a/core/java/android/window/SurfaceSyncGroup.java
+++ b/core/java/android/window/SurfaceSyncGroup.java
@@ -16,20 +16,26 @@
package android.window;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UiThread;
+import android.os.Binder;
+import android.os.BinderProxy;
import android.os.Debug;
+import android.os.IBinder;
+import android.os.RemoteException;
import android.os.Trace;
import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
import android.view.AttachedSurfaceControl;
import android.view.SurfaceControl.Transaction;
+import android.view.SurfaceControlViewHost;
import android.view.SurfaceView;
+import android.view.WindowManagerGlobal;
import com.android.internal.annotations.GuardedBy;
-import java.util.Set;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
@@ -37,43 +43,13 @@
/**
* Used to organize syncs for surfaces.
- *
- * The SurfaceSyncGroup allows callers to add desired syncs into a set and wait for them to all
- * complete before getting a callback. The purpose of the SurfaceSyncGroup is to be an accounting
- * mechanism so each sync implementation doesn't need to handle it themselves. The SurfaceSyncGroup
- * class is used the following way.
- *
- * 1. {@link #addToSync(SurfaceSyncGroup, boolean)} is called for every SurfaceSyncGroup object that
- * wants to be included in the sync. If the addSync is called for an {@link AttachedSurfaceControl}
- * or {@link SurfaceView} it needs to be called on the UI thread. When addToSync is called, it's
- * guaranteed that any UI updates that were requested before addToSync but after the last frame
- * drew, will be included in the sync.
- * 2. {@link #markSyncReady()} should be called when all the {@link SurfaceSyncGroup}s have been
- * added to the SurfaceSyncGroup. At this point, the SurfaceSyncGroup is closed and no more
- * SurfaceSyncGroups can be added to it.
- * 3. The SurfaceSyncGroup will gather the data for each SurfaceSyncGroup using the steps described
- * below. When all the SurfaceSyncGroups have finished, the syncRequestComplete will be invoked and
- * the transaction will either be applied or sent to the caller. In most cases, only the
- * SurfaceSyncGroup should be handling the Transaction object directly. However, there are some
- * cases where the framework needs to send the Transaction elsewhere, like in ViewRootImpl, so that
- * option is provided.
- *
- * The following is what happens within the {@link android.window.SurfaceSyncGroup}
- * 1. Each SurfaceSyncGroup will get a
- * {@link SurfaceSyncGroup#onAddedToSyncGroup(SurfaceSyncGroup, TransactionReadyCallback)} callback
- * that contains a {@link TransactionReadyCallback}.
- * 2. Each {@link SurfaceSyncGroup} needs to invoke
- * {@link SurfaceSyncGroup#onTransactionReady(Transaction)}.
- * This makes sure the parent SurfaceSyncGroup knows when the SurfaceSyncGroup is complete, allowing
- * the parent SurfaceSyncGroup to get the Transaction that contains the changes for the child
- * SurfaceSyncGroup
- * 3. When the final TransactionReadyCallback finishes for the child SurfaceSyncGroups, the
- * transaction is either applied if it's the top most parent or the final merged transaction is sent
- * up to its parent SurfaceSyncGroup.
+ * </p>
+ * See SurfaceSyncGroup.md
+ * </p>
*
* @hide
*/
-public class SurfaceSyncGroup {
+public class SurfaceSyncGroup extends ISurfaceSyncGroup.Stub {
private static final String TAG = "SurfaceSyncGroup";
private static final boolean DEBUG = false;
@@ -92,7 +68,7 @@
private final String mName;
@GuardedBy("mLock")
- private final Set<TransactionReadyCallback> mPendingSyncs = new ArraySet<>();
+ private final ArraySet<ITransactionReadyCallback> mPendingSyncs = new ArraySet<>();
@GuardedBy("mLock")
private final Transaction mTransaction = sTransactionFactory.get();
@GuardedBy("mLock")
@@ -102,14 +78,38 @@
private boolean mFinished;
@GuardedBy("mLock")
- private TransactionReadyCallback mTransactionReadyCallback;
+ private Consumer<Transaction> mTransactionReadyConsumer;
@GuardedBy("mLock")
- private SurfaceSyncGroup mParentSyncGroup;
+ private ISurfaceSyncGroup mParentSyncGroup;
@GuardedBy("mLock")
private final ArraySet<Pair<Executor, Runnable>> mSyncCompleteCallbacks = new ArraySet<>();
+ @GuardedBy("mLock")
+ private boolean mHasWMSync;
+
+ @GuardedBy("mLock")
+ private ISurfaceSyncGroupCompletedListener mSurfaceSyncGroupCompletedListener;
+
+ /**
+ * Token to identify this SurfaceSyncGroup. This is used to register the SurfaceSyncGroup in
+ * WindowManager. This token is also sent to other processes' SurfaceSyncGroup that want to be
+ * included in this SurfaceSyncGroup.
+ */
+ private final Binder mToken = new Binder();
+
+ private static boolean isLocalBinder(IBinder binder) {
+ return !(binder instanceof BinderProxy);
+ }
+
+ private static SurfaceSyncGroup getSurfaceSyncGroup(ISurfaceSyncGroup iSurfaceSyncGroup) {
+ if (iSurfaceSyncGroup instanceof SurfaceSyncGroup) {
+ return (SurfaceSyncGroup) iSurfaceSyncGroup;
+ }
+ return null;
+ }
+
/**
* @hide
*/
@@ -129,20 +129,19 @@
transaction.apply();
}
});
-
}
/**
* Creates a sync.
*
- * @param transactionReadyCallback The complete callback that contains the syncId and
+ * @param transactionReadyConsumer The complete callback that contains the syncId and
* transaction with all the sync data merged. The Transaction
* passed back can be null.
- *
+ * <p>
* NOTE: Only should be used by ViewRootImpl
* @hide
*/
- public SurfaceSyncGroup(String name, Consumer<Transaction> transactionReadyCallback) {
+ public SurfaceSyncGroup(String name, Consumer<Transaction> transactionReadyConsumer) {
// sCounter is a way to give the SurfaceSyncGroup a unique name even if the name passed in
// is not.
// Avoid letting the count get too big so just reset to 0. It's unlikely that we'll have
@@ -153,17 +152,19 @@
mName = name + "#" + sCounter.getAndIncrement();
- mTransactionReadyCallback = transaction -> {
+ mTransactionReadyConsumer = (transaction) -> {
if (DEBUG && transaction != null) {
Log.d(TAG, "Sending non null transaction " + transaction + " to callback for "
+ mName);
}
Trace.instant(Trace.TRACE_TAG_VIEW,
"Final TransactionCallback with " + transaction + " for " + mName);
- transactionReadyCallback.accept(transaction);
+ transactionReadyConsumer.accept(transaction);
synchronized (mLock) {
- for (Pair<Executor, Runnable> callback : mSyncCompleteCallbacks) {
- callback.first.execute(callback.second);
+ // If there's a registered listener with WMS, that means we aren't actually complete
+ // until WMS notifies us that the parent has completed.
+ if (mSurfaceSyncGroupCompletedListener == null) {
+ invokeSyncCompleteListeners();
}
}
};
@@ -175,6 +176,13 @@
}
}
+ @GuardedBy("mLock")
+ private void invokeSyncCompleteListeners() {
+ mSyncCompleteCallbacks.forEach(
+ executorRunnablePair -> executorRunnablePair.first.execute(
+ executorRunnablePair.second));
+ }
+
/**
* Add a {@link Runnable} to be executed when the sync completes.
*
@@ -194,22 +202,15 @@
* set have completed their sync
*/
public void markSyncReady() {
- onTransactionReady(null);
- }
-
- /**
- * Similar to {@link #markSyncReady()}, but a transaction is passed in to merge with the
- * SurfaceSyncGroup.
- *
- * @param t The transaction that merges into the main Transaction for the SurfaceSyncGroup.
- */
- public void onTransactionReady(@Nullable Transaction t) {
Trace.traceBegin(Trace.TRACE_TAG_VIEW, "markSyncReady " + mName);
synchronized (mLock) {
- mSyncReady = true;
- if (t != null) {
- mTransaction.merge(t);
+ if (mHasWMSync) {
+ try {
+ WindowManagerGlobal.getWindowManagerService().markSurfaceSyncGroupReady(mToken);
+ } catch (RemoteException e) {
+ }
}
+ mSyncReady = true;
checkIfSyncIsComplete();
}
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
@@ -232,21 +233,40 @@
Consumer<SurfaceViewFrameCallback> frameCallbackConsumer) {
SurfaceSyncGroup surfaceSyncGroup = new SurfaceSyncGroup(surfaceView.getName());
if (addToSync(surfaceSyncGroup, false /* parentSyncGroupMerge */)) {
- frameCallbackConsumer.accept(
- () -> surfaceView.syncNextFrame(surfaceSyncGroup::onTransactionReady));
+ frameCallbackConsumer.accept(() -> surfaceView.syncNextFrame(transaction -> {
+ surfaceSyncGroup.addTransactionToSync(transaction);
+ surfaceSyncGroup.markSyncReady();
+ }));
return true;
}
return false;
}
/**
- * Add a View's rootView to a sync set.
+ * Add an AttachedSurfaceControl to a sync set.
*
- * @param viewRoot The viewRoot that will be add to the sync set
+ * @param viewRoot The viewRoot that will be add to the sync set.
* @return true if the View was successfully added to the SyncGroup, false otherwise.
+ * @see #addToSync(AttachedSurfaceControl, Runnable)
*/
@UiThread
public boolean addToSync(@Nullable AttachedSurfaceControl viewRoot) {
+ return addToSync(viewRoot, null /* runnable */);
+ }
+
+ /**
+ * Add an AttachedSurfaceControl to a sync set. The AttachedSurfaceControl will pause rendering
+ * to ensure the runnable can be invoked and the sync picks up the frame that contains the
+ * changes.
+ *
+ * @param viewRoot The viewRoot that will be add to the sync set.
+ * @param runnable The runnable to be invoked before adding to the sync group.
+ * @return true if the View was successfully added to the SyncGroup, false otherwise.
+ * @see #addToSync(AttachedSurfaceControl)
+ */
+ @UiThread
+ public boolean addToSync(@Nullable AttachedSurfaceControl viewRoot,
+ @Nullable Runnable runnable) {
if (viewRoot == null) {
return false;
}
@@ -254,67 +274,133 @@
if (surfaceSyncGroup == null) {
return false;
}
- return addToSync(surfaceSyncGroup, false /* parentSyncGroupMerge */);
+
+ return addToSync(surfaceSyncGroup, false /* parentSyncGroupMerge */, runnable);
+ }
+
+ /**
+ * Helper method to add a SurfaceControlViewHost.SurfacePackage to the sync group. This will
+ * get the SurfaceSyncGroup from the SurfacePackage, which will pause rendering for the
+ * SurfaceControlViewHost. The runnable will be invoked to allow the host to update the SCVH
+ * in a synchronized way. Finally, it will add the SCVH to the SurfaceSyncGroup and unpause
+ * rendering in the SCVH, allowing the changes to get picked up and included in the sync.
+ *
+ * @param surfacePackage The SurfacePackage that should be synced
+ * @param runnable The Runnable that's invoked before getting the frame to sync.
+ * @return true if the SCVH was successfully added to the current SyncGroup, false
+ * otherwise.
+ */
+ public boolean addToSync(@NonNull SurfaceControlViewHost.SurfacePackage surfacePackage,
+ @Nullable Runnable runnable) {
+ ISurfaceSyncGroup surfaceSyncGroup;
+ try {
+ surfaceSyncGroup = surfacePackage.getRemoteInterface().getSurfaceSyncGroup();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Failed to add SurfaceControlViewHost to SurfaceSyncGroup");
+ return false;
+ }
+
+ if (surfaceSyncGroup == null) {
+ Log.e(TAG, "Failed to add SurfaceControlViewHost to SurfaceSyncGroup. "
+ + "SCVH returned null SurfaceSyncGroup");
+ return false;
+ }
+ return addToSync(surfaceSyncGroup, false /* parentSyncGroupMerge */, runnable);
+ }
+
+ @Override
+ public boolean addToSync(ISurfaceSyncGroup surfaceSyncGroup, boolean parentSyncGroupMerge) {
+ return addToSync(surfaceSyncGroup, parentSyncGroupMerge, null);
}
/**
* Add a {@link SurfaceSyncGroup} to a sync set. The sync set will wait for all
* SyncableSurfaces to complete before notifying.
*
- * @param surfaceSyncGroup A SyncableSurface that implements how to handle syncing
- * buffers.
+ * @param surfaceSyncGroup A SyncableSurface that implements how to handle syncing
+ * buffers.
+ * @param parentSyncGroupMerge true if the ISurfaceSyncGroup is added because its child was
+ * added to a new SurfaceSyncGroup. That would require the code to
+ * call newParent.addToSync(oldParent). When this occurs, we need to
+ * reverse the merge order because the oldParent should always be
+ * considered older than any other SurfaceSyncGroups.
+ * @param runnable The Runnable that's invoked before adding the SurfaceSyncGroup
* @return true if the SyncGroup was successfully added to the current SyncGroup, false
* otherwise.
*/
- public boolean addToSync(SurfaceSyncGroup surfaceSyncGroup, boolean parentSyncGroupMerge) {
+ public boolean addToSync(ISurfaceSyncGroup surfaceSyncGroup, boolean parentSyncGroupMerge,
+ @Nullable Runnable runnable) {
Trace.traceBegin(Trace.TRACE_TAG_VIEW,
- "addToSync child=" + surfaceSyncGroup.mName + " parent=" + mName);
- TransactionReadyCallback transactionReadyCallback = new TransactionReadyCallback() {
- @Override
- public void onTransactionReady(Transaction t) {
- if (DEBUG) {
- Log.d(TAG, "onTransactionReady called for" + surfaceSyncGroup.mName
- + " and sent to " + mName);
- }
- synchronized (mLock) {
- if (t != null) {
- // When an older parent sync group is added due to a child syncGroup getting
- // added to multiple groups, we need to maintain merge order so the older
- // parentSyncGroup transactions are overwritten by anything in the newer
- // parentSyncGroup.
- if (parentSyncGroupMerge) {
- t.merge(mTransaction);
- }
- mTransaction.merge(t);
- }
- mPendingSyncs.remove(this);
- Trace.instant(Trace.TRACE_TAG_VIEW,
- "onTransactionReady child=" + surfaceSyncGroup.mName + " parent="
- + mName);
- checkIfSyncIsComplete();
- }
- }
- };
-
+ "addToSync token=" + mToken.hashCode() + " parent=" + mName);
synchronized (mLock) {
if (mSyncReady) {
- Log.e(TAG, "Sync " + mName + " was already marked as ready. No more "
- + "SurfaceSyncGroups can be added.");
+ Log.w(TAG, "Trying to add to sync when already marked as ready " + mName);
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
return false;
}
- mPendingSyncs.add(transactionReadyCallback);
- if (DEBUG) {
- Log.d(TAG, "addToSync " + surfaceSyncGroup.mName + " to " + mName + " mSyncReady="
- + mSyncReady + " mPendingSyncs=" + mPendingSyncs.size());
+ }
+
+ if (runnable != null) {
+ runnable.run();
+ }
+
+ if (isLocalBinder(surfaceSyncGroup.asBinder())) {
+ boolean didAddLocalSync = addLocalSync(surfaceSyncGroup, parentSyncGroupMerge);
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ return didAddLocalSync;
+ }
+
+ synchronized (mLock) {
+ if (!mHasWMSync) {
+ // We need to add a signal into WMS since WMS will be creating a new parent
+ // SurfaceSyncGroup. When the parent SSG in WMS completes, only then do we
+ // notify the registered listeners that the entire SurfaceSyncGroup is complete.
+ // This is because the callers don't realize that when adding a different process
+ // to this SSG, it isn't actually adding to this SSG and really just creating a
+ // link in WMS. Because of this, the callers would expect the complete listeners
+ // to only be called when everything, including the other process's
+ // SurfaceSyncGroups, have completed. Only WMS has that info so we need to send the
+ // listener to WMS when we set up a server side sync.
+ mSurfaceSyncGroupCompletedListener = new ISurfaceSyncGroupCompletedListener.Stub() {
+ @Override
+ public void onSurfaceSyncGroupComplete() {
+ synchronized (mLock) {
+ invokeSyncCompleteListeners();
+ }
+ }
+ };
+ if (!addSyncToWm(mToken, false /* parentSyncGroupMerge */,
+ mSurfaceSyncGroupCompletedListener)) {
+ mSurfaceSyncGroupCompletedListener = null;
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ return false;
+ }
+ mHasWMSync = true;
}
}
- surfaceSyncGroup.onAddedToSyncGroup(this, transactionReadyCallback);
+ try {
+ surfaceSyncGroup.onAddedToSyncGroup(mToken, parentSyncGroupMerge);
+ } catch (RemoteException e) {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ return false;
+ }
+
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
return true;
}
+ @Override
+ public final boolean onAddedToSyncGroup(IBinder parentSyncGroupToken,
+ boolean parentSyncGroupMerge) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW,
+ "onAddedToSyncGroup token=" + parentSyncGroupToken.hashCode() + " child=" + mName);
+ boolean didAdd = addSyncToWm(parentSyncGroupToken, parentSyncGroupMerge, null);
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ return didAdd;
+ }
+
+
/**
* Add a Transaction to this sync set. This allows the caller to provide other info that
* should be synced with the transactions.
@@ -325,39 +411,75 @@
}
}
- @GuardedBy("mLock")
- private void checkIfSyncIsComplete() {
- if (mFinished) {
- if (DEBUG) {
- Log.d(TAG, "SurfaceSyncGroup=" + mName + " is already complete");
- }
- return;
- }
-
- Trace.instant(Trace.TRACE_TAG_VIEW,
- "checkIfSyncIsComplete " + mName + " mSyncReady=" + mSyncReady + " mPendingSyncs="
- + mPendingSyncs.size());
- if (!mSyncReady || !mPendingSyncs.isEmpty()) {
- if (DEBUG) {
- Log.d(TAG,
- "SurfaceSyncGroup=" + mName + " is not complete. mSyncReady=" + mSyncReady
- + " mPendingSyncs=" + mPendingSyncs.size());
- }
- return;
- }
-
- if (DEBUG) {
- Log.d(TAG, "Successfully finished sync id=" + mName);
- }
- mTransactionReadyCallback.onTransactionReady(mTransaction);
- mFinished = true;
+ /**
+ * Invoked when the SurfaceSyncGroup has been added to another SurfaceSyncGroup and is ready
+ * to proceed.
+ */
+ public void onSyncReady() {
}
- private void onAddedToSyncGroup(SurfaceSyncGroup parentSyncGroup,
- TransactionReadyCallback transactionReadyCallback) {
+ private boolean addSyncToWm(IBinder token, boolean parentSyncGroupMerge,
+ @Nullable ISurfaceSyncGroupCompletedListener surfaceSyncGroupCompletedListener) {
+ try {
+ if (DEBUG) {
+ Log.d(TAG, "Attempting to add remote sync to " + mName
+ + ". Setting up Sync in WindowManager.");
+ }
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW,
+ "addSyncToWm=" + token.hashCode() + " group=" + mName);
+ AddToSurfaceSyncGroupResult addToSyncGroupResult = new AddToSurfaceSyncGroupResult();
+ if (!WindowManagerGlobal.getWindowManagerService().addToSurfaceSyncGroup(token,
+ parentSyncGroupMerge, surfaceSyncGroupCompletedListener,
+ addToSyncGroupResult)) {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ return false;
+ }
+
+ setTransactionCallbackFromParent(addToSyncGroupResult.mParentSyncGroup,
+ addToSyncGroupResult.mTransactionReadyCallback);
+ } catch (RemoteException e) {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ return false;
+ }
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ return true;
+ }
+
+ private boolean addLocalSync(ISurfaceSyncGroup childSyncToken, boolean parentSyncGroupMerge) {
+ if (DEBUG) {
+ Log.d(TAG, "Adding local sync " + mName);
+ }
+
+ SurfaceSyncGroup childSurfaceSyncGroup = getSurfaceSyncGroup(childSyncToken);
+ if (childSurfaceSyncGroup == null) {
+ Log.e(TAG, "Trying to add a local sync that's either not valid or not from the"
+ + " local process=" + childSyncToken);
+ return false;
+ }
+
Trace.traceBegin(Trace.TRACE_TAG_VIEW,
- "onAddedToSyncGroup child=" + mName + " parent=" + parentSyncGroup.mName);
+ "addLocalSync=" + childSurfaceSyncGroup.mName + " parent=" + mName);
+ ITransactionReadyCallback callback =
+ createTransactionReadyCallback(parentSyncGroupMerge);
+
+ if (callback == null) {
+ return false;
+ }
+
+ childSurfaceSyncGroup.setTransactionCallbackFromParent(this, callback);
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ return true;
+ }
+
+ private void setTransactionCallbackFromParent(ISurfaceSyncGroup parentSyncGroup,
+ ITransactionReadyCallback transactionReadyCallback) {
+ if (DEBUG) {
+ Log.d(TAG, "setTransactionCallbackFromParent " + mName);
+ }
boolean finished = false;
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW,
+ "setTransactionCallbackFromParent " + mName + " callback="
+ + transactionReadyCallback.hashCode());
synchronized (mLock) {
if (mFinished) {
finished = true;
@@ -370,26 +492,34 @@
// from the original parent are also combined with the new parent SurfaceSyncGroup.
if (mParentSyncGroup != null && mParentSyncGroup != parentSyncGroup) {
if (DEBUG) {
- Log.d(TAG, "Trying to add to " + parentSyncGroup.mName
- + " but already part of sync group " + mParentSyncGroup.mName + " "
+ Log.d(TAG, "Trying to add to " + parentSyncGroup
+ + " but already part of sync group " + mParentSyncGroup + " "
+ mName);
}
- parentSyncGroup.addToSync(mParentSyncGroup, true /* parentSyncGroupMerge */);
- }
-
- if (mParentSyncGroup == parentSyncGroup) {
- if (DEBUG) {
- Log.d(TAG, "Added to parent that was already the parent");
+ try {
+ parentSyncGroup.addToSync(mParentSyncGroup,
+ true /* parentSyncGroupMerge */);
+ } catch (RemoteException e) {
}
}
+
+ if (DEBUG && mParentSyncGroup == parentSyncGroup) {
+ Log.d(TAG, "Added to parent that was already the parent");
+ }
+
+ Consumer<Transaction> lastCallback = mTransactionReadyConsumer;
mParentSyncGroup = parentSyncGroup;
- final TransactionReadyCallback lastCallback = mTransactionReadyCallback;
- mTransactionReadyCallback = t -> {
+ mTransactionReadyConsumer = (transaction) -> {
Trace.traceBegin(Trace.TRACE_TAG_VIEW,
- "transactionReadyCallback " + mName + " parent="
- + parentSyncGroup.mName);
- lastCallback.onTransactionReady(null);
- transactionReadyCallback.onTransactionReady(t);
+ "transactionReadyCallback " + mName + " callback="
+ + transactionReadyCallback.hashCode());
+ lastCallback.accept(null);
+
+ try {
+ transactionReadyCallback.onTransactionReady(transaction);
+ } catch (RemoteException e) {
+ transaction.apply();
+ }
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
};
}
@@ -398,7 +528,12 @@
// Invoke the callback outside of the lock when the SurfaceSyncGroup being added was already
// complete.
if (finished) {
- transactionReadyCallback.onTransactionReady(null);
+ try {
+ transactionReadyCallback.onTransactionReady(null);
+ } catch (RemoteException e) {
+ }
+ } else {
+ onSyncReady();
}
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}
@@ -407,19 +542,89 @@
return mName;
}
+ @GuardedBy("mLock")
+ private void checkIfSyncIsComplete() {
+ if (mFinished) {
+ if (DEBUG) {
+ Log.d(TAG, "SurfaceSyncGroup=" + mName + " is already complete");
+ }
+ mTransaction.apply();
+ return;
+ }
+
+ Trace.instant(Trace.TRACE_TAG_VIEW,
+ "checkIfSyncIsComplete " + mName + " mSyncReady=" + mSyncReady + " mPendingSyncs="
+ + mPendingSyncs.size());
+
+ if (!mSyncReady || !mPendingSyncs.isEmpty()) {
+ if (DEBUG) {
+ Log.d(TAG, "SurfaceSyncGroup=" + mName + " is not complete. mSyncReady="
+ + mSyncReady + " mPendingSyncs=" + mPendingSyncs.size());
+ }
+ return;
+ }
+
+ if (DEBUG) {
+ Log.d(TAG, "Successfully finished sync id=" + mName);
+ }
+ mTransactionReadyConsumer.accept(mTransaction);
+ mFinished = true;
+ }
+
/**
- * Interface so the SurfaceSyncer can know when it's safe to start and when everything has been
- * completed. The caller should invoke the calls when the rendering has started and finished a
- * frame.
+ * Create an {@link ITransactionReadyCallback} that the current SurfaceSyncGroup will wait on
+ * before completing. The caller must ensure that the
+ * {@link ITransactionReadyCallback#onTransactionReady(Transaction)} in order for this
+ * SurfaceSyncGroup to complete.
+ *
+ * @param parentSyncGroupMerge true if the ISurfaceSyncGroup is added because its child was
+ * added to a new SurfaceSyncGroup. That would require the code to
+ * call newParent.addToSync(oldParent). When this occurs, we need to
+ * reverse the merge order because the oldParent should always be
+ * considered older than any other SurfaceSyncGroups.
*/
- private interface TransactionReadyCallback {
- /**
- * Invoked when the transaction is ready to sync.
- *
- * @param t The transaction that contains the anything to be included in the synced. This
- * can be null if there's nothing to sync
- */
- void onTransactionReady(@Nullable Transaction t);
+ public ITransactionReadyCallback createTransactionReadyCallback(boolean parentSyncGroupMerge) {
+ if (DEBUG) {
+ Log.d(TAG, "createTransactionReadyCallback " + mName);
+ }
+ ITransactionReadyCallback transactionReadyCallback =
+ new ITransactionReadyCallback.Stub() {
+ @Override
+ public void onTransactionReady(Transaction t) {
+ synchronized (mLock) {
+ if (t != null) {
+ // When an older parent sync group is added due to a child syncGroup
+ // getting added to multiple groups, we need to maintain merge order
+ // so the older parentSyncGroup transactions are overwritten by
+ // anything in the newer parentSyncGroup.
+ if (parentSyncGroupMerge) {
+ t.merge(mTransaction);
+ }
+ mTransaction.merge(t);
+ }
+ mPendingSyncs.remove(this);
+ Trace.instant(Trace.TRACE_TAG_VIEW,
+ "onTransactionReady group=" + mName + " callback="
+ + hashCode());
+ checkIfSyncIsComplete();
+ }
+ }
+ };
+
+ synchronized (mLock) {
+ if (mSyncReady) {
+ Log.e(TAG, "Sync " + mName
+ + " was already marked as ready. No more SurfaceSyncGroups can be added.");
+ return null;
+ }
+ mPendingSyncs.add(transactionReadyCallback);
+ Trace.instant(Trace.TRACE_TAG_VIEW,
+ "createTransactionReadyCallback " + mName + " mPendingSyncs="
+ + mPendingSyncs.size() + " transactionReady="
+ + transactionReadyCallback.hashCode());
+ }
+
+ return transactionReadyCallback;
}
/**
diff --git a/core/java/android/window/SurfaceSyncGroup.md b/core/java/android/window/SurfaceSyncGroup.md
index b4faeac..406c230 100644
--- a/core/java/android/window/SurfaceSyncGroup.md
+++ b/core/java/android/window/SurfaceSyncGroup.md
@@ -2,7 +2,7 @@
### Overview
-A generic way for data to be gathered so multiple surfaces can be synced. This is intended to be used with Views, SurfaceView, and any other surface that wants to be involved in a sync. This allows different parts of the Android system to synchronize different windows and layers themselves without having to go through WindowManagerService
+A generic way for data to be gathered so multiple surfaces can be synced. This is intended to be used with Views, SurfaceView, and any other surface that wants to be involved in a sync. This allows different parts of the Android system to synchronize different windows and layers themselves.
### Code
@@ -12,47 +12,47 @@
The first step is to create a sync request. This is done by creating a new `SurfaceSyncGroup`.
There are two constructors: one that accepts a `Consumer<Transaction>` and one that's empty. The empty constructor will automatically apply the final transaction. The second constructor should only be used by ViewRootImpl. The purpose of this one is to allow the caller to get back the merged transaction without it being applied. ViewRootImpl uses it to send the transaction to WindowManagerService to be synced there. Using this one for other cases is unsafe because the caller may hold the transaction longer than expected and prevent buffers from being latched and released.
-##### markSyncReady
-
-When the caller has added all the `SyncTarget` to the sync, they should call `markSyncReady()` If the caller doesn't call this, the sync will never complete since the SurfaceSyncGroup wants to give the caller a chance to add all the SyncTargets before considering the sync ready. Before `markSyncReady` is called, the `SyncTargets` can actually produce a frame, which will just be held in a transaction until all other `SyncTargets` are ready AND `markSyncReady` has been called. Once markSyncReady has been called, you cannot add any more `SyncTargets` to that particular SurfaceSyncGroup.
-
##### addToSync
-The caller will invoke `addToSync` for every `SyncTarget` that it wants included. There are a few helper methods since the most common cases are Views and SurfaceView
+The caller will invoke `addToSync` for every `SurfaceSyncGroup` that it wants included. There are a few helper methods since the most common cases are Views and SurfaceView
* `addToSync(AttachedSurfaceControl)` - This is used for syncing the root of the View, specificially the ViewRootImpl
* `addToSync(SurfaceView, Consumer<SurfaceViewFrameCallback>)` - This is to sync a SurfaceView. Since SurfaceViews are rendered by the app, the caller will be expected to provide a way to get back the buffer to sync. More details about that [below](#surfaceviewframecallback)
-* `addToSync(SyncTarget)` - This is the generic method. It can be used to sync arbitrary info. The SyncTarget interface has required methods that need to be implemented to properly get the transaction to sync.
+* `addToSync(SurfaceControlViewHost.SurfacePackage)` - This is to sync an embedded window. The host can call addToSync and pass in the SurfacePackage, where the SurfaceSyncGroup will ensure it's added to the sync.
+* `addToSync(ISurfaceSyncGroup)` - This is the generic method. It can be used to sync arbitrary info. Most likely the caller will pass in a SurfaceSyncGroup object and then they are responsible for calling markSyncReady for the child SurfaceSyncGroup.
When calling addToSync with either AttachedSurfaceControl or SurfaceView, it must be called on the UI Thread. This is to ensure consistent behavior, where any UI changes done while still on the UI thread are included in this frame. The next vsync will pick up those changes and request to draw.
+An additional Runnable argument can be passed in which ensures the Runnable has executed before adding the child SurfaceSyncGroup to the parent. The purpose of this Runnable is to execute any changes the caller wants and they are guaranteed to be picked up in the sync.
+
+##### markSyncReady
+
+When the caller has added all the `SurfaceSyncGroup` to the sync, they should call `markSyncReady()` If the caller doesn't call this, the sync will never complete since the SurfaceSyncGroup wants to give the caller a chance to add SurfaceSyncGroups before considering the sync ready. Before `markSyncReady` is called, the `SurfaceSyncGroups` can actually produce a frame, which will just be held in a transaction until all other `SurfaceSyncGroup` are ready AND `markSyncReady` has been called. Once markSyncReady has been called, you cannot add any more `SurfaceSyncGroup` to that particular SurfaceSyncGroup.
+
##### addTransactionToSync
This is a simple method that allows callers to add generic Transactions to the sync. The caller invokes `addTransactionToSync(Transaction)`. This can be used for any additional things that need to be included in the same SyncGroup.
-##### merge
-
-To add more flexibility to Syncs, an API is provided to merge SurfaceSyncGroups. The caller provides the SurfaceSyncGroup it wants merged. The current SurfaceSyncGroup will now wait for the passed in SurfaceSyncGroup to complete, as well as its own SyncTargets to complete before invoking the callback. The passed in SurfaceSyncGroup will also get a complete callback but only when its SurfaceSyncGroup completes, not the one it merged into. If a `Consumer<Transaction>` was passed in to the SurfaceSyncGroup, it will get back an emtpy Transaction so it can't accidentally apply things that were meant to be merged.
-
##### addSyncCompleteCallback
-This allows callers to receive a callback when the sync is complete. The method takes in an Executor and a Runnable that will be invoked when the SurfaceSyncGroup has completed. The Executor is used to invoke the callback on the desired thread. You can add more than one callback.
-
-##### SyncTarget
-
-This interface is used to handle syncs. The interface has two methods
-* `onReadyToSync(SyncBufferCallback)` - This one must be implemented. The sync will notify the `SyncTarget` so it can invoke the `SyncBufferCallback`, letting the sync know when it's ready.
-* `onSyncComplete()` - This method is optional. It's used to notify the `SyncTarget` that the entire sync is complete. This is similar to the callback sent in `setupSync`, but it's invoked to the `SyncTargets` rather than the caller who started the sync. This is used by ViewRootImpl to restore the state when the entire sync is done
-
-When syncing ViewRootImpl, these methods are implemented already since ViewRootImpl handles the rendering requests and timing.
-
-##### SyncBufferCallback
-
-This interface is used to tell the sync that this SyncTarget is ready. There's only method here, `onBufferReady(Transaction)`, that sends back the transaction that contains the data to be synced, normally with a buffer.
+This allows callers to receive a callback when the sync is complete. The caller will only receive a complete callback when the specific SurfaceSyncGroup it registered with is complete. This means that the SurfaceSyncGroup has been marked as ready and all children are complete. This doesn't mean the transaction has been applied since it could be passed to a parent SurfaceSyncGroup or passed to another process. This can be helpful if the caller wants to know that all the children have rendered their frame and possibly to ensure they can pace. The method takes in an Executor and a Runnable that will be invoked when the SurfaceSyncGroup has completed. The Executor is used to invoke the callback on the desired thread. You can add more than one callback.
##### SurfaceViewFrameCallback
As mentioned above, SurfaceViews are a special case because the buffers produced are handled by the app, and not the framework. Because of this, the SurfaceSyncGroup doesn't know which frame to sync. Therefore, to sync SurfaceViews, the caller must provide a way to notify the SurfaceSyncGroup that it's going to render a buffer and that this next buffer is the one to sync. The `SurfaceViewFrameCallback` has one method `onFrameStarted()`. When this is invoked, the SurfaceSyncGroup sets up a request to sync the next buffer for the SurfaceView.
+#### ViewRootImpl's SurfaceSyncGroup
+
+The most common way to use SurfaceSyncGroups is to sync multiple ViewRootImpls. The framework handles the timing and rendering of the ViewRootImpl, so it's expected that the caller doesn't need to know about this to ensure it's properly synced. This is done by the following flow.
+
+When ViewRootImpl is added to a SurfaceSyncGroup, it's done so via `addToSync(AttachedSurfaceControl)`. The SurfaceSyncGroup code will call into ViewRootImpl, where either a new SurfaceSyncGroup is created or it returns an already active SurfaceSyncGroup. This active SurfaceSyncGroup is stored in ViewRootImpl and is tied to a rendering cycle. If multiple syncs are requested before VRI draws, they will all get back the same SurfaceSyncGroup object. This is to ensure we can make multiple changes without having to queue up several frames and causing things to get backed up. For example, if SurfaceSyncGroup1 wants to resize VRI and then SurfaceSyncGroup2 wants to change an attribute, if they are both done before a frame is drawn, then both those changes are picked up together. Once VRI starts a draw pass, it will clear the reference to the active SurfaceSyncGroup so any new changes that want to be synced are done with a new SurfaceSyncGroup object. The old active SurfaceSyncGroup is passed via lambda when the rendering is occuring. Once RenderThread completes the frame, VRI calls `SurfaceSyncGroup.addTransactionToSync(Transaction)`, passing in the transaction that contains the buffer and then `SurfaceSyncGroup.markSyncReady()` so the VRI SurfaceSyncGroup knows it's complete. This way we can start additional syncs without having to wait for the RenderThread to complete.
+
+#### SurfaceSyncGroup added to Multiple SurfaceSyncGroups
+There are cases where multiple places are trying to sync the same object. This is more common with VRI where you may have multiple changes for the same vsync rendering cycle, but different places requested the sync. Because each SurfaceSyncGroup may also contain other SurfaceSyncGroups, we need to combine everything. So for example, if SurfaceSyncGroup1 wants to sync VRI and SurfaceSyncGroup2 wants to sync VRI, but SSG-1 already contains SSG-A and SSG-2 already contains SSG-B, we need to ensure SSG-A, SSG-B, and VRI are all applied together to ensure the contract is held. This is done by creating a tree like structure and merging parents when needed. VRI will be added to SSG-1. Then SSG-2 also requests to sync VRI. VRI's SSG will see that it already is part of a SSG and keeps track of its last parent. The SSG will call newParentSyncGroup.add(oldParentSyncGroup). VRI is now added to both SSG-1 and SSG-2, but will only send it's transaction to SSG-2 (the one it was added to last). SSG-1 is also now added to SSG-2 so it will not apply it's transaction, but send it to SSG-2 to apply. SSG-2 will end up waiting for SSG-1 which is waiting for SSG-A so we know that SSG-2 will have the final transaction that includes everything from SSG-1 and its own children.
+
+#### WindowManagerService Involvement
+
+The above works fine when everything is in process. However, we don't want to expose transactions that are tied to SurfaceControls to other processes. This is because they can inject any call if they have a way to get the SurfaceControl object. Instead, use WMS as an intermediary when trying to sync cross-process. The APIs from the client perspectives don't change and the callers don't have to worry about the implementation. This is all done via the SurfaceSyncGroup code. When SurfaceSyncGroup recognizes that a process is trying to add another SurfaceSyncGroup from a different process, it will not be able to add it locally. Instead, it will call into WMS and register a new SurfaceSyncGroup that will be managed by WMS. It then notifies the other process that it should add itself to this SSG that was created in WMS. The other process will also call into WMS and add its own SSG. WMS is now the parent of both SSG from different processes. This means both processes will send their transaction to WMS, which is secure. When the original SSG calls markSyncReady, it will also mark the SSG in WMS as ready so the WMS created SSG can apply the transaction when all children have completed.
+
### Example
@@ -70,6 +70,7 @@
```
A SurfaceView example:
+
See `frameworks/base/tests/SurfaceViewSyncTest` for a working example
```java
@@ -83,4 +84,26 @@
frameCallback.onFrameStarted()
}
syncGroup.markSyncReady();
+```
+
+A SurfaceControlViewHost example (also an cross process example):
+
+See `frameworks/base/tests/SurfaceControlViewHostTest/.../SurfaceControlViewHostSyncTest.java` for working example
+
+This would sync both the view resize and the embedded resize in the same frame
+```java
+SurfaceSyncGroup syncGroup = new SurfaceSyncGroup(NAME);
+SyncGroup.addSyncCompleteCallback(mMainThreadExecutor, () -> {
+ Log.d(TAG, "syncComplete");
+};
+syncGroup.addToSync(getWindow().getRootSurfaceControl(), () -> {
+ view.getLayoutParams().width = 20;
+ view.getLayoutParams().height = 40;
+ view.requestLayout();
+});
+syncGroup.addToSync(mSurfacePackage, () -> {
+ // Side channel API that's decided between the two processes
+ mEmbedded.resize(20, 40);
+});
+syncGroup.markSyncReady();
```
\ No newline at end of file
diff --git a/core/java/android/window/TaskFragmentCreationParams.java b/core/java/android/window/TaskFragmentCreationParams.java
index c9ddf92..203d79a 100644
--- a/core/java/android/window/TaskFragmentCreationParams.java
+++ b/core/java/android/window/TaskFragmentCreationParams.java
@@ -71,20 +71,42 @@
*
* This is needed in case we need to launch a placeholder Activity to split below a transparent
* always-expand Activity.
+ *
+ * This should not be used with {@link #mPairedActivityToken}.
*/
@Nullable
private final IBinder mPairedPrimaryFragmentToken;
+ /**
+ * The Activity token to place the new TaskFragment on top of.
+ * When it is set, the new TaskFragment will be positioned right above the target Activity.
+ * Otherwise, the new TaskFragment will be positioned on the top of the Task by default.
+ *
+ * This is needed in case we need to place an Activity into TaskFragment to launch placeholder
+ * below a transparent always-expand Activity, or when there is another Intent being started in
+ * a TaskFragment above.
+ *
+ * This should not be used with {@link #mPairedPrimaryFragmentToken}.
+ */
+ @Nullable
+ private final IBinder mPairedActivityToken;
+
private TaskFragmentCreationParams(
@NonNull TaskFragmentOrganizerToken organizer, @NonNull IBinder fragmentToken,
@NonNull IBinder ownerToken, @NonNull Rect initialBounds,
- @WindowingMode int windowingMode, @Nullable IBinder pairedPrimaryFragmentToken) {
+ @WindowingMode int windowingMode, @Nullable IBinder pairedPrimaryFragmentToken,
+ @Nullable IBinder pairedActivityToken) {
+ if (pairedPrimaryFragmentToken != null && pairedActivityToken != null) {
+ throw new IllegalArgumentException("pairedPrimaryFragmentToken and"
+ + " pairedActivityToken should not be set at the same time.");
+ }
mOrganizer = organizer;
mFragmentToken = fragmentToken;
mOwnerToken = ownerToken;
mInitialBounds.set(initialBounds);
mWindowingMode = windowingMode;
mPairedPrimaryFragmentToken = pairedPrimaryFragmentToken;
+ mPairedActivityToken = pairedActivityToken;
}
@NonNull
@@ -121,6 +143,15 @@
return mPairedPrimaryFragmentToken;
}
+ /**
+ * TODO(b/232476698): remove the hide with adding CTS for this in next release.
+ * @hide
+ */
+ @Nullable
+ public IBinder getPairedActivityToken() {
+ return mPairedActivityToken;
+ }
+
private TaskFragmentCreationParams(Parcel in) {
mOrganizer = TaskFragmentOrganizerToken.CREATOR.createFromParcel(in);
mFragmentToken = in.readStrongBinder();
@@ -128,6 +159,7 @@
mInitialBounds.readFromParcel(in);
mWindowingMode = in.readInt();
mPairedPrimaryFragmentToken = in.readStrongBinder();
+ mPairedActivityToken = in.readStrongBinder();
}
/** @hide */
@@ -139,6 +171,7 @@
mInitialBounds.writeToParcel(dest, flags);
dest.writeInt(mWindowingMode);
dest.writeStrongBinder(mPairedPrimaryFragmentToken);
+ dest.writeStrongBinder(mPairedActivityToken);
}
@NonNull
@@ -164,6 +197,7 @@
+ " initialBounds=" + mInitialBounds
+ " windowingMode=" + mWindowingMode
+ " pairedFragmentToken=" + mPairedPrimaryFragmentToken
+ + " pairedActivityToken=" + mPairedActivityToken
+ "}";
}
@@ -194,6 +228,9 @@
@Nullable
private IBinder mPairedPrimaryFragmentToken;
+ @Nullable
+ private IBinder mPairedActivityToken;
+
public Builder(@NonNull TaskFragmentOrganizerToken organizer,
@NonNull IBinder fragmentToken, @NonNull IBinder ownerToken) {
mOrganizer = organizer;
@@ -224,6 +261,8 @@
* This is needed in case we need to launch a placeholder Activity to split below a
* transparent always-expand Activity.
*
+ * This should not be used with {@link #setPairedActivityToken}.
+ *
* TODO(b/232476698): remove the hide with adding CTS for this in next release.
* @hide
*/
@@ -233,11 +272,32 @@
return this;
}
+ /**
+ * Sets the Activity token to place the new TaskFragment on top of.
+ * When it is set, the new TaskFragment will be positioned right above the target Activity.
+ * Otherwise, the new TaskFragment will be positioned on the top of the Task by default.
+ *
+ * This is needed in case we need to place an Activity into TaskFragment to launch
+ * placeholder below a transparent always-expand Activity, or when there is another Intent
+ * being started in a TaskFragment above.
+ *
+ * This should not be used with {@link #setPairedPrimaryFragmentToken}.
+ *
+ * TODO(b/232476698): remove the hide with adding CTS for this in next release.
+ * @hide
+ */
+ @NonNull
+ public Builder setPairedActivityToken(@Nullable IBinder activityToken) {
+ mPairedActivityToken = activityToken;
+ return this;
+ }
+
/** Constructs the options to create TaskFragment with. */
@NonNull
public TaskFragmentCreationParams build() {
return new TaskFragmentCreationParams(mOrganizer, mFragmentToken, mOwnerToken,
- mInitialBounds, mWindowingMode, mPairedPrimaryFragmentToken);
+ mInitialBounds, mWindowingMode, mPairedPrimaryFragmentToken,
+ mPairedActivityToken);
}
}
}
diff --git a/core/java/android/window/WindowOnBackInvokedDispatcher.java b/core/java/android/window/WindowOnBackInvokedDispatcher.java
index 64992b9..7a5510c 100644
--- a/core/java/android/window/WindowOnBackInvokedDispatcher.java
+++ b/core/java/android/window/WindowOnBackInvokedDispatcher.java
@@ -266,11 +266,12 @@
@Override
public void onBackCancelled() {
Handler.getMain().post(() -> {
- mProgressAnimator.reset();
- final OnBackAnimationCallback callback = getBackAnimationCallback();
- if (callback != null) {
- callback.onBackCancelled();
- }
+ mProgressAnimator.onBackCancelled(() -> {
+ final OnBackAnimationCallback callback = getBackAnimationCallback();
+ if (callback != null) {
+ callback.onBackCancelled();
+ }
+ });
});
}
diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
index e0b0110..bf55255 100644
--- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
+++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
@@ -21,6 +21,7 @@
import static android.view.accessibility.AccessibilityManager.ACCESSIBILITY_SHORTCUT_KEY;
import static com.android.internal.accessibility.dialog.AccessibilityTargetHelper.getTargets;
+import static com.android.internal.os.RoSystemProperties.SUPPORT_ONE_HANDED_MODE;
import static com.android.internal.util.ArrayUtils.convertToLongArray;
import android.accessibilityservice.AccessibilityServiceInfo;
@@ -91,6 +92,10 @@
public static final ComponentName ACCESSIBILITY_BUTTON_COMPONENT_NAME =
new ComponentName("com.android.server.accessibility", "AccessibilityButton");
+ // The component name for the sub setting of Hearing aids in Accessibility settings
+ public static final ComponentName ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME =
+ new ComponentName("com.android.server.accessibility", "HearingAids");
+
public static final ComponentName COLOR_INVERSION_TILE_COMPONENT_NAME =
new ComponentName("com.android.server.accessibility", "ColorInversionTile");
public static final ComponentName DALTONIZER_TILE_COMPONENT_NAME =
@@ -104,7 +109,7 @@
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY)
.build();
- private static Map<ComponentName, ToggleableFrameworkFeatureInfo> sFrameworkShortcutFeaturesMap;
+ private static Map<ComponentName, FrameworkFeatureInfo> sFrameworkShortcutFeaturesMap;
private final Context mContext;
private final Handler mHandler;
@@ -133,10 +138,10 @@
* @return An immutable map from placeholder component names to feature
* info for toggling a framework feature
*/
- public static Map<ComponentName, ToggleableFrameworkFeatureInfo>
+ public static Map<ComponentName, FrameworkFeatureInfo>
getFrameworkShortcutFeaturesMap() {
if (sFrameworkShortcutFeaturesMap == null) {
- Map<ComponentName, ToggleableFrameworkFeatureInfo> featuresMap = new ArrayMap<>(4);
+ Map<ComponentName, FrameworkFeatureInfo> featuresMap = new ArrayMap<>(4);
featuresMap.put(COLOR_INVERSION_COMPONENT_NAME,
new ToggleableFrameworkFeatureInfo(
Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED,
@@ -147,16 +152,20 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
"1" /* Value to enable */, "0" /* Value to disable */,
R.string.color_correction_feature_name));
- featuresMap.put(ONE_HANDED_COMPONENT_NAME,
- new ToggleableFrameworkFeatureInfo(
- Settings.Secure.ONE_HANDED_MODE_ACTIVATED,
- "1" /* Value to enable */, "0" /* Value to disable */,
- R.string.one_handed_mode_feature_name));
+ if (SUPPORT_ONE_HANDED_MODE) {
+ featuresMap.put(ONE_HANDED_COMPONENT_NAME,
+ new ToggleableFrameworkFeatureInfo(
+ Settings.Secure.ONE_HANDED_MODE_ACTIVATED,
+ "1" /* Value to enable */, "0" /* Value to disable */,
+ R.string.one_handed_mode_feature_name));
+ }
featuresMap.put(REDUCE_BRIGHT_COLORS_COMPONENT_NAME,
new ToggleableFrameworkFeatureInfo(
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED,
"1" /* Value to enable */, "0" /* Value to disable */,
R.string.reduce_bright_colors_feature_name));
+ featuresMap.put(ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME,
+ new LaunchableFrameworkFeatureInfo(R.string.hearing_aids_feature_name));
sFrameworkShortcutFeaturesMap = Collections.unmodifiableMap(featuresMap);
}
return sFrameworkShortcutFeaturesMap;
@@ -391,7 +400,7 @@
if (targetComponentName == null) {
return null;
}
- final ToggleableFrameworkFeatureInfo frameworkFeatureInfo =
+ final FrameworkFeatureInfo frameworkFeatureInfo =
getFrameworkShortcutFeaturesMap().get(targetComponentName);
if (frameworkFeatureInfo != null) {
return frameworkFeatureInfo.getLabel(mContext);
@@ -670,15 +679,13 @@
/**
* Immutable class to hold info about framework features that can be controlled by shortcut
*/
- public static class ToggleableFrameworkFeatureInfo {
+ public abstract static class FrameworkFeatureInfo {
private final String mSettingKey;
private final String mSettingOnValue;
private final String mSettingOffValue;
private final int mLabelStringResourceId;
- // These go to the settings wrapper
- private int mIconDrawableId;
- ToggleableFrameworkFeatureInfo(String settingKey, String settingOnValue,
+ FrameworkFeatureInfo(String settingKey, String settingOnValue,
String settingOffValue, int labelStringResourceId) {
mSettingKey = settingKey;
mSettingOnValue = settingOnValue;
@@ -696,7 +703,7 @@
/**
* @return The value to write to settings to turn the feature on
*/
- public String getSettingOnValue() {
+ public String getSettingOnValue() {
return mSettingOnValue;
}
@@ -711,6 +718,29 @@
return context.getString(mLabelStringResourceId);
}
}
+ /**
+ * Immutable class to hold framework features that have on/off state settings key and can be
+ * controlled by shortcut.
+ */
+ public static class ToggleableFrameworkFeatureInfo extends FrameworkFeatureInfo {
+
+ ToggleableFrameworkFeatureInfo(String settingKey, String settingOnValue,
+ String settingOffValue, int labelStringResourceId) {
+ super(settingKey, settingOnValue, settingOffValue, labelStringResourceId);
+ }
+ }
+
+ /**
+ * Immutable class to hold framework features that don't have settings key and can be controlled
+ * by shortcut.
+ */
+ public static class LaunchableFrameworkFeatureInfo extends FrameworkFeatureInfo {
+
+ LaunchableFrameworkFeatureInfo(int labelStringResourceId) {
+ super(/* settingKey= */ null, /* settingOnValue= */ null, /* settingOffValue= */ null,
+ labelStringResourceId);
+ }
+ }
// Class to allow mocking of static framework calls
public static class FrameworkObjectProvider {
diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
index fc2c8cc..a47a97c 100644
--- a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
+++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java
@@ -18,6 +18,7 @@
import static android.view.accessibility.AccessibilityManager.ACCESSIBILITY_BUTTON;
+import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
@@ -25,6 +26,7 @@
import static com.android.internal.accessibility.AccessibilityShortcutController.REDUCE_BRIGHT_COLORS_COMPONENT_NAME;
import static com.android.internal.accessibility.util.AccessibilityUtils.getAccessibilityServiceFragmentType;
import static com.android.internal.accessibility.util.ShortcutUtils.isShortcutContained;
+import static com.android.internal.os.RoSystemProperties.SUPPORT_ONE_HANDED_MODE;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.accessibilityservice.AccessibilityShortcutInfo;
@@ -209,6 +211,7 @@
context.getString(R.string.accessibility_magnification_chooser_text),
context.getDrawable(R.drawable.ic_accessibility_magnification),
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED);
+ targets.add(magnification);
final ToggleAllowListingFeatureTarget daltonizer =
new ToggleAllowListingFeatureTarget(context,
@@ -219,6 +222,7 @@
context.getString(R.string.color_correction_feature_name),
context.getDrawable(R.drawable.ic_accessibility_color_correction),
Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED);
+ targets.add(daltonizer);
final ToggleAllowListingFeatureTarget colorInversion =
new ToggleAllowListingFeatureTarget(context,
@@ -229,16 +233,20 @@
context.getString(R.string.color_inversion_feature_name),
context.getDrawable(R.drawable.ic_accessibility_color_inversion),
Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED);
+ targets.add(colorInversion);
- final ToggleAllowListingFeatureTarget oneHandedMode =
- new ToggleAllowListingFeatureTarget(context,
- shortcutType,
- isShortcutContained(context, shortcutType,
- ONE_HANDED_COMPONENT_NAME.flattenToString()),
- ONE_HANDED_COMPONENT_NAME.flattenToString(),
- context.getString(R.string.one_handed_mode_feature_name),
- context.getDrawable(R.drawable.ic_accessibility_one_handed),
- Settings.Secure.ONE_HANDED_MODE_ACTIVATED);
+ if (SUPPORT_ONE_HANDED_MODE) {
+ final ToggleAllowListingFeatureTarget oneHandedMode =
+ new ToggleAllowListingFeatureTarget(context,
+ shortcutType,
+ isShortcutContained(context, shortcutType,
+ ONE_HANDED_COMPONENT_NAME.flattenToString()),
+ ONE_HANDED_COMPONENT_NAME.flattenToString(),
+ context.getString(R.string.one_handed_mode_feature_name),
+ context.getDrawable(R.drawable.ic_accessibility_one_handed),
+ Settings.Secure.ONE_HANDED_MODE_ACTIVATED);
+ targets.add(oneHandedMode);
+ }
final ToggleAllowListingFeatureTarget reduceBrightColors =
new ToggleAllowListingFeatureTarget(context,
@@ -249,13 +257,19 @@
context.getString(R.string.reduce_bright_colors_feature_name),
context.getDrawable(R.drawable.ic_accessibility_reduce_bright_colors),
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED);
-
- targets.add(magnification);
- targets.add(daltonizer);
- targets.add(colorInversion);
- targets.add(oneHandedMode);
targets.add(reduceBrightColors);
+ final InvisibleToggleAllowListingFeatureTarget hearingAids =
+ new InvisibleToggleAllowListingFeatureTarget(context,
+ shortcutType,
+ isShortcutContained(context, shortcutType,
+ ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.flattenToString()),
+ ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.flattenToString(),
+ context.getString(R.string.hearing_aids_feature_name),
+ context.getDrawable(R.drawable.ic_accessibility_hearing_aid),
+ /* key= */ null);
+ targets.add(hearingAids);
+
return targets;
}
diff --git a/core/java/com/android/internal/os/RoSystemProperties.java b/core/java/com/android/internal/os/RoSystemProperties.java
index 6870d09..af205d2 100644
--- a/core/java/com/android/internal/os/RoSystemProperties.java
+++ b/core/java/com/android/internal/os/RoSystemProperties.java
@@ -31,6 +31,8 @@
SystemProperties.getInt("ro.factorytest", 0);
public static final String CONTROL_PRIVAPP_PERMISSIONS =
SystemProperties.get("ro.control_privapp_permissions");
+ public static final boolean SUPPORT_ONE_HANDED_MODE =
+ SystemProperties.getBoolean("ro.support_one_handed_mode", /* def= */ false);
// ------ ro.hdmi.* -------- //
/**
diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java
index b5b27f52..47e6b6e 100644
--- a/core/java/com/android/internal/policy/DecorView.java
+++ b/core/java/com/android/internal/policy/DecorView.java
@@ -57,14 +57,12 @@
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Insets;
-import android.graphics.LinearGradient;
import android.graphics.Outline;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.RecordingCanvas;
import android.graphics.Rect;
import android.graphics.Region;
-import android.graphics.Shader;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
@@ -274,9 +272,6 @@
private boolean mApplyFloatingVerticalInsets = false;
private boolean mApplyFloatingHorizontalInsets = false;
- private final int mResizeShadowSize;
- private final Paint mVerticalResizeShadowPaint = new Paint();
- private final Paint mHorizontalResizeShadowPaint = new Paint();
private final Paint mLegacyNavigationBarBackgroundPaint = new Paint();
private Insets mBackgroundInsets = Insets.NONE;
private Insets mLastBackgroundInsets = Insets.NONE;
@@ -317,10 +312,6 @@
updateLogTag(params);
- mResizeShadowSize = context.getResources().getDimensionPixelSize(
- R.dimen.resize_shadow_size);
- initResizingPaints();
-
mLegacyNavigationBarBackgroundPaint.setColor(Color.BLACK);
}
@@ -2447,38 +2438,9 @@
@Override
public void onPostDraw(RecordingCanvas canvas) {
- drawResizingShadowIfNeeded(canvas);
drawLegacyNavigationBarBackground(canvas);
}
- private void initResizingPaints() {
- final int startColor = mContext.getResources().getColor(
- R.color.resize_shadow_start_color, null);
- final int endColor = mContext.getResources().getColor(
- R.color.resize_shadow_end_color, null);
- final int middleColor = (startColor + endColor) / 2;
- mHorizontalResizeShadowPaint.setShader(new LinearGradient(
- 0, 0, 0, mResizeShadowSize, new int[] { startColor, middleColor, endColor },
- new float[] { 0f, 0.3f, 1f }, Shader.TileMode.CLAMP));
- mVerticalResizeShadowPaint.setShader(new LinearGradient(
- 0, 0, mResizeShadowSize, 0, new int[] { startColor, middleColor, endColor },
- new float[] { 0f, 0.3f, 1f }, Shader.TileMode.CLAMP));
- }
-
- private void drawResizingShadowIfNeeded(RecordingCanvas canvas) {
- if (mWindow.mIsFloating || mWindow.isTranslucent() || mWindow.isShowingWallpaper()) {
- return;
- }
- canvas.save();
- canvas.translate(0, getHeight() - mFrameOffsets.bottom);
- canvas.drawRect(0, 0, getWidth(), mResizeShadowSize, mHorizontalResizeShadowPaint);
- canvas.restore();
- canvas.save();
- canvas.translate(getWidth() - mFrameOffsets.right, 0);
- canvas.drawRect(0, 0, mResizeShadowSize, getHeight(), mVerticalResizeShadowPaint);
- canvas.restore();
- }
-
private void drawLegacyNavigationBarBackground(RecordingCanvas canvas) {
if (!mDrawLegacyNavigationBarBackground || mDrawLegacyNavigationBarBackgroundHandled) {
return;
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index ca98b50..c6aca44 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -785,13 +785,6 @@
}
}
- @Override
- public void reportActivityRelaunched() {
- if (mDecor != null && mDecor.getViewRootImpl() != null) {
- mDecor.getViewRootImpl().reportActivityRelaunched();
- }
- }
-
private static void clearMenuViews(PanelFeatureState st) {
// This can be called on config changes, so we should make sure
// the views will be reconstructed based on the new orientation, etc.
diff --git a/core/java/com/android/internal/util/FunctionalUtils.java b/core/java/com/android/internal/util/FunctionalUtils.java
index 91cc4b9..d64a474 100644
--- a/core/java/com/android/internal/util/FunctionalUtils.java
+++ b/core/java/com/android/internal/util/FunctionalUtils.java
@@ -248,6 +248,19 @@
}
/**
+ * A {@link Supplier} that allows the caller to specify a custom checked {@link Exception} that
+ * can be thrown by the implementer. This is usually used when proxying/wrapping calls between
+ * different classes.
+ *
+ * @param <Output> Method return type
+ * @param <ExceptionType> Checked exception type
+ */
+ @FunctionalInterface
+ public interface ThrowingCheckedSupplier<Output, ExceptionType extends Exception> {
+ Output get() throws ExceptionType;
+ }
+
+ /**
* A {@link Consumer} that allows the caller to specify a custom checked {@link Exception} that
* can be thrown by the implementer. This is usually used when proxying/wrapping calls between
* different classes.
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index a43f0b3..21f1d6d 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -129,6 +129,7 @@
"android_view_KeyCharacterMap.cpp",
"android_view_KeyEvent.cpp",
"android_view_MotionEvent.cpp",
+ "android_view_MotionPredictor.cpp",
"android_view_PointerIcon.cpp",
"android_view_Surface.cpp",
"android_view_SurfaceControl.cpp",
@@ -283,6 +284,7 @@
"libhwui",
"libmediandk",
"libpermission",
+ "libPlatformProperties",
"libsensor",
"libinput",
"libcamera_client",
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 6ceffde..578cf24 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -187,6 +187,7 @@
extern int register_android_view_KeyCharacterMap(JNIEnv *env);
extern int register_android_view_KeyEvent(JNIEnv* env);
extern int register_android_view_MotionEvent(JNIEnv* env);
+extern int register_android_view_MotionPredictor(JNIEnv* env);
extern int register_android_view_PointerIcon(JNIEnv* env);
extern int register_android_view_VelocityTracker(JNIEnv* env);
extern int register_android_view_VerifiedKeyEvent(JNIEnv* env);
@@ -1643,6 +1644,7 @@
REG_JNI(register_android_view_InputQueue),
REG_JNI(register_android_view_KeyEvent),
REG_JNI(register_android_view_MotionEvent),
+ REG_JNI(register_android_view_MotionPredictor),
REG_JNI(register_android_view_PointerIcon),
REG_JNI(register_android_view_VelocityTracker),
REG_JNI(register_android_view_VerifiedKeyEvent),
diff --git a/core/jni/LayoutlibLoader.cpp b/core/jni/LayoutlibLoader.cpp
index 93ba23b..d7cbf74 100644
--- a/core/jni/LayoutlibLoader.cpp
+++ b/core/jni/LayoutlibLoader.cpp
@@ -102,6 +102,7 @@
extern int register_android_view_KeyEvent(JNIEnv* env);
extern int register_android_view_MotionEvent(JNIEnv* env);
extern int register_android_view_ThreadedRenderer(JNIEnv* env);
+extern int register_android_graphics_HardwareBufferRenderer(JNIEnv* env);
extern int register_android_view_VelocityTracker(JNIEnv* env);
extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv *env);
diff --git a/core/jni/android_view_InputDevice.cpp b/core/jni/android_view_InputDevice.cpp
index 7002d9b..7d379e5 100644
--- a/core/jni/android_view_InputDevice.cpp
+++ b/core/jni/android_view_InputDevice.cpp
@@ -97,7 +97,6 @@
return env->NewLocalRef(inputDeviceObj.get());
}
-
int register_android_view_InputDevice(JNIEnv* env)
{
gInputDeviceClassInfo.clazz = FindClassOrDie(env, "android/view/InputDevice");
@@ -108,9 +107,8 @@
"String;ZIILandroid/view/KeyCharacterMap;Ljava/"
"lang/String;Ljava/lang/String;ZZZZZZ)V");
- gInputDeviceClassInfo.addMotionRange = GetMethodIDOrDie(env, gInputDeviceClassInfo.clazz,
- "addMotionRange", "(IIFFFFF)V");
-
+ gInputDeviceClassInfo.addMotionRange =
+ GetMethodIDOrDie(env, gInputDeviceClassInfo.clazz, "addMotionRange", "(IIFFFFF)V");
return 0;
}
diff --git a/core/jni/android_view_MotionEvent.cpp b/core/jni/android_view_MotionEvent.cpp
index 403c583..88444cb 100644
--- a/core/jni/android_view_MotionEvent.cpp
+++ b/core/jni/android_view_MotionEvent.cpp
@@ -59,6 +59,7 @@
jfieldID orientation;
jfieldID relativeX;
jfieldID relativeY;
+ jfieldID isResampled;
} gPointerCoordsClassInfo;
static struct {
@@ -102,6 +103,20 @@
return eventObj;
}
+jobject android_view_MotionEvent_obtainFromNative(JNIEnv* env, std::unique_ptr<MotionEvent> event) {
+ if (event == nullptr) {
+ return nullptr;
+ }
+ jobject eventObj =
+ env->CallStaticObjectMethod(gMotionEventClassInfo.clazz, gMotionEventClassInfo.obtain);
+ if (env->ExceptionCheck() || !eventObj) {
+ LOGE_EX(env);
+ LOG_ALWAYS_FATAL("An exception occurred while obtaining a Java motion event.");
+ }
+ android_view_MotionEvent_setNativePtr(env, eventObj, event.release());
+ return eventObj;
+}
+
status_t android_view_MotionEvent_recycle(JNIEnv* env, jobject eventObj) {
env->CallVoidMethod(eventObj, gMotionEventClassInfo.recycle);
if (env->ExceptionCheck()) {
@@ -223,6 +238,8 @@
outRawPointerCoords->setAxisValue(AMOTION_EVENT_AXIS_RELATIVE_Y,
env->GetFloatField(pointerCoordsObj,
gPointerCoordsClassInfo.relativeY));
+ outRawPointerCoords->isResampled =
+ env->GetBooleanField(pointerCoordsObj, gPointerCoordsClassInfo.isResampled);
BitSet64 bits =
BitSet64(env->GetLongField(pointerCoordsObj, gPointerCoordsClassInfo.mPackedAxisBits));
@@ -440,6 +457,11 @@
bits.clearBit(axis);
}
pointerCoordsFromNative(env, rawPointerCoords, bits, outPointerCoordsObj);
+
+ const bool isResampled = historyPos == HISTORY_CURRENT
+ ? event->isResampled(pointerIndex, event->getHistorySize())
+ : event->isResampled(pointerIndex, historyPos);
+ env->SetBooleanField(outPointerCoordsObj, gPointerCoordsClassInfo.isResampled, isResampled);
}
static void android_view_MotionEvent_nativeGetPointerProperties(JNIEnv* env, jclass clazz,
@@ -881,6 +903,7 @@
gPointerCoordsClassInfo.orientation = GetFieldIDOrDie(env, clazz, "orientation", "F");
gPointerCoordsClassInfo.relativeX = GetFieldIDOrDie(env, clazz, "relativeX", "F");
gPointerCoordsClassInfo.relativeY = GetFieldIDOrDie(env, clazz, "relativeY", "F");
+ gPointerCoordsClassInfo.isResampled = GetFieldIDOrDie(env, clazz, "isResampled", "Z");
clazz = FindClassOrDie(env, "android/view/MotionEvent$PointerProperties");
diff --git a/core/jni/android_view_MotionEvent.h b/core/jni/android_view_MotionEvent.h
index 32a280e..e812136 100644
--- a/core/jni/android_view_MotionEvent.h
+++ b/core/jni/android_view_MotionEvent.h
@@ -28,6 +28,11 @@
* Returns NULL on error. */
extern jobject android_view_MotionEvent_obtainAsCopy(JNIEnv* env, const MotionEvent& event);
+/* Obtains an instance of a Java MotionEvent object, taking over the ownership of the provided
+ * native MotionEvent instance. Crashes on error. */
+extern jobject android_view_MotionEvent_obtainFromNative(JNIEnv* env,
+ std::unique_ptr<MotionEvent> event);
+
/* Gets the underlying native MotionEvent instance within a DVM MotionEvent object.
* Returns NULL if the event is NULL or if it is uninitialized. */
extern MotionEvent* android_view_MotionEvent_getNativePtr(JNIEnv* env, jobject eventObj);
diff --git a/core/jni/android_view_MotionPredictor.cpp b/core/jni/android_view_MotionPredictor.cpp
new file mode 100644
index 0000000..2c232fa
--- /dev/null
+++ b/core/jni/android_view_MotionPredictor.cpp
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "MotionPredictor-JNI"
+
+#include <input/Input.h>
+#include <input/MotionPredictor.h>
+
+#include "android_view_MotionEvent.h"
+#include "core_jni_converters.h"
+#include "core_jni_helpers.h"
+
+/**
+ * This file is a bridge from Java to native for MotionPredictor class.
+ * It should be pass-through only. Do not store any state or put any business logic into this file.
+ */
+
+namespace android {
+
+// ----------------------------------------------------------------------------
+
+static struct {
+ jclass clazz;
+} gMotionEventClassInfo;
+
+// ----------------------------------------------------------------------------
+
+static void release(void* ptr) {
+ delete reinterpret_cast<MotionPredictor*>(ptr);
+}
+
+static jlong android_view_MotionPredictor_nativeGetNativeMotionPredictorFinalizer(JNIEnv* env,
+ jclass clazz) {
+ return reinterpret_cast<jlong>(release);
+}
+
+static jlong android_view_MotionPredictor_nativeInitialize(JNIEnv* env, jclass clazz,
+ jint offsetNanos) {
+ const nsecs_t offset = static_cast<nsecs_t>(offsetNanos);
+ return reinterpret_cast<jlong>(new MotionPredictor(offset));
+}
+
+static void android_view_MotionPredictor_nativeRecord(JNIEnv* env, jclass clazz, jlong ptr,
+ jobject event) {
+ MotionPredictor* predictor = reinterpret_cast<MotionPredictor*>(ptr);
+ MotionEvent* motionEvent = android_view_MotionEvent_getNativePtr(env, event);
+ predictor->record(*motionEvent);
+}
+
+static jobject android_view_MotionPredictor_nativePredict(JNIEnv* env, jclass clazz, jlong ptr,
+ jlong predictionTimeNanos) {
+ MotionPredictor* predictor = reinterpret_cast<MotionPredictor*>(ptr);
+ return toJavaArray(env, predictor->predict(static_cast<nsecs_t>(predictionTimeNanos)),
+ gMotionEventClassInfo.clazz, &android_view_MotionEvent_obtainFromNative);
+}
+
+static jboolean android_view_MotionPredictor_nativeIsPredictionAvailable(JNIEnv* env, jclass clazz,
+ jlong ptr, jint deviceId,
+ jint source) {
+ MotionPredictor* predictor = reinterpret_cast<MotionPredictor*>(ptr);
+ return predictor->isPredictionAvailable(static_cast<int32_t>(deviceId),
+ static_cast<int32_t>(source));
+}
+
+// ----------------------------------------------------------------------------
+
+static const std::array<JNINativeMethod, 5> gMotionPredictorMethods{{
+ /* name, signature, funcPtr */
+ {"nativeInitialize", "(I)J", (void*)android_view_MotionPredictor_nativeInitialize},
+ {"nativeGetNativeMotionPredictorFinalizer", "()J",
+ (void*)android_view_MotionPredictor_nativeGetNativeMotionPredictorFinalizer},
+ {"nativeRecord", "(JLandroid/view/MotionEvent;)V",
+ (void*)android_view_MotionPredictor_nativeRecord},
+ {"nativePredict", "(JJ)[Landroid/view/MotionEvent;",
+ (void*)android_view_MotionPredictor_nativePredict},
+ {"nativeIsPredictionAvailable", "(JII)Z",
+ (void*)android_view_MotionPredictor_nativeIsPredictionAvailable},
+}};
+
+int register_android_view_MotionPredictor(JNIEnv* env) {
+ jclass motionEventClazz = FindClassOrDie(env, "android/view/MotionEvent");
+ gMotionEventClassInfo.clazz = MakeGlobalRefOrDie(env, motionEventClazz);
+ return RegisterMethodsOrDie(env, "android/view/MotionPredictor", gMotionPredictorMethods.data(),
+ gMotionPredictorMethods.size());
+}
+
+} // namespace android
diff --git a/core/jni/core_jni_converters.h b/core/jni/core_jni_converters.h
new file mode 100644
index 0000000..cb9bdf7
--- /dev/null
+++ b/core/jni/core_jni_converters.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <nativehelper/scoped_local_ref.h>
+
+template <class T>
+static jobject toJavaArray(JNIEnv* env, std::vector<T>&& list, jclass clazz,
+ jobject (*convert)(JNIEnv* env, T)) {
+ jobjectArray arr = env->NewObjectArray(list.size(), clazz, nullptr);
+ LOG_ALWAYS_FATAL_IF(arr == nullptr);
+ for (size_t i = 0; i < list.size(); i++) {
+ T& t = list[i];
+ ScopedLocalRef<jobject> javaObj(env, convert(env, std::move(t)));
+ env->SetObjectArrayElement(arr, i, javaObj.get());
+ }
+ return arr;
+}
\ No newline at end of file
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index bfa5301..5136fcb 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -3119,12 +3119,99 @@
<!-- @SystemApi @hide Allows an application to exempt apps from platform restrictions.-->
<permission android:name="android.permission.MANAGE_DEVICE_POLICY_APP_EXEMPTIONS"
- android:protectionLevel="signature|role" />
+ android:protectionLevel="internal|role" />
- <!-- Allows an application to manage date and time device policy. -->
+ <!-- Allows an application to manage device policy relating to time.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.-->
<permission android:name="android.permission.MANAGE_DEVICE_POLICY_TIME"
android:protectionLevel="internal|role" />
+ <!-- Allows an application to set the grant state of runtime permissions on packages.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage the identity of the managing organization.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to set support messages for when a user action is affected by an
+ active policy.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage backup service policy.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_BACKUP_SERVICE"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage lock task policy.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage policy regarding modifying applications.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage installing from unknown sources policy.
+ <p>MANAGE_SECURITY_CRITICAL_DEVICE_POLICY_ACROSS_USERS is required to call APIs protected
+ by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage application restrictions.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_APP_RESTRICTIONS"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage calling policy.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_CALLS"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage debugging features policy.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage policy preventing users from modifying users.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_MODIFY_USERS"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to manage safe boot policy.
+ <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+ APIs protected by this permission on users different to the calling user.
+ -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_SAFE_BOOT"
+ android:protectionLevel="internal|role" />
+
<!-- Allows an application to set device policies outside the current user
that are critical for securing data within the current user.
<p>Holding this permission allows the use of other held MANAGE_DEVICE_POLICY_*
@@ -6895,9 +6982,11 @@
android:protectionLevel="normal|appop"/>
<!-- Allows an app access to the installer provided app metadata.
- @hide -->
+ @SystemApi
+ @hide
+ -->
<permission android:name="android.permission.GET_APP_METADATA"
- android:protectionLevel="signature" />
+ android:protectionLevel="signature|installer" />
<!-- @SystemApi Allows the holder to call health connect migration APIs.
@hide -->
diff --git a/core/res/res/drawable/ic_accessibility_hearing_aid.xml b/core/res/res/drawable/ic_accessibility_hearing_aid.xml
new file mode 100644
index 0000000..e5ffeb0
--- /dev/null
+++ b/core/res/res/drawable/ic_accessibility_hearing_aid.xml
@@ -0,0 +1,24 @@
+<!--
+ Copyright (C) 2022 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@color/accessibility_feature_background" />
+ <foreground>
+ <inset
+ android:drawable="@drawable/ic_accessibility_hearing_aid_foreground"
+ android:inset="@dimen/accessibility_icon_foreground_padding_ratio" />
+ </foreground>
+</adaptive-icon>
diff --git a/core/res/res/drawable/ic_accessibility_hearing_aid_foreground.xml b/core/res/res/drawable/ic_accessibility_hearing_aid_foreground.xml
new file mode 100644
index 0000000..7ced795
--- /dev/null
+++ b/core/res/res/drawable/ic_accessibility_hearing_aid_foreground.xml
@@ -0,0 +1,25 @@
+<!--
+ Copyright (C) 2022 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="18dp"
+ android:height="18dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="#ffffff"
+ android:pathData="M17,20c-0.29,0 -0.56,-0.06 -0.76,-0.15 -0.71,-0.37 -1.21,-0.88 -1.71,-2.38 -0.51,-1.56 -1.47,-2.29 -2.39,-3 -0.79,-0.61 -1.61,-1.24 -2.32,-2.53C9.29,10.98 9,9.93 9,9c0,-2.8 2.2,-5 5,-5s5,2.2 5,5h2c0,-3.93 -3.07,-7 -7,-7S7,5.07 7,9c0,1.26 0.38,2.65 1.07,3.9 0.91,1.65 1.98,2.48 2.85,3.15 0.81,0.62 1.39,1.07 1.71,2.05 0.6,1.82 1.37,2.84 2.73,3.55 0.51,0.23 1.07,0.35 1.64,0.35 2.21,0 4,-1.79 4,-4h-2c0,1.1 -0.9,2 -2,2zM7.64,2.64L6.22,1.22C4.23,3.21 3,5.96 3,9s1.23,5.79 3.22,7.78l1.41,-1.41C6.01,13.74 5,11.49 5,9s1.01,-4.74 2.64,-6.36zM11.5,9c0,1.38 1.12,2.5 2.5,2.5s2.5,-1.12 2.5,-2.5 -1.12,-2.5 -2.5,-2.5 -2.5,1.12 -2.5,2.5z"/>
+</vector>
\ No newline at end of file
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index d3692b8..48614ed 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Die PIN\'e wat jy ingevoer het, pas nie by mekaar nie."</string>
<string name="invalidPin" msgid="7542498253319440408">"Sleutel \'n PIN wat 4 to 8 nommers lank is, in."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Voer \'n PUK van 8 syfers of langer in."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Jou SIM is PUK-gesluit. Voer die PUK-kode in om dit te ontsluit."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Tik PUK2 in om SIM te deblokkeer."</string>
<string name="enablePin" msgid="2543771964137091212">"Onsuksesvol, aktiveer SIM-/RUIM-slot."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Jy het <xliff:g id="NUMBER_1">%d</xliff:g> pogings oor voordat SIM gesluit word.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Laat die program toe om agtergrondprosesse van ander programme te beëindig. Dit kan moontlik veroorsaak dat ander programme ophou werk."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Hierdie program kan bo-op ander programme verskyn"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Hierdie program kan bokant ander programme of ander dele van die skerm verskyn. Dit kan met normale programgebruik inmeng en die voorkoms van ander programme verander."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"versteek ander apps se oorleggers"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Hierdie app kan versoek dat die stelsel oorleggers wat oorspronklik van apps af kom, versteek sodat hulle nie bo-op hulle wys nie."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"loop op die agtergrond"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Hierdie program kan op die agtergrond loop. Dit kan die battery vinniger laat pap word."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"gebruik data op die agtergrond"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Probeer weer"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Ontsluit vir alle kenmerke en data"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Maksimum Gesigslot-pogings oorskry"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Geen SIM nie"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Geen SIM in tablet nie."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Geen SIM in jou Android TV-toestel nie."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Geen SIM in foon nie."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Voeg ’n SIM by."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Die SIM is weg of nie leesbaar nie. Voeg ’n SIM by."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Onbruikbare SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Jou SIM is permanent gedeaktiveer.\n Kontak jou draadlose diensverskaffer vir ’n ander SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Vorige snit"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Volgende snit"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Wag"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Vinnig vorentoe"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Net noodoproepe"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Netwerk gesluit"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM is PUK-gesluit."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Sien die handleiding of kontak kliëntediens."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM is gesluit."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Ontsluit tans SIM …"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Jy het jou ontsluitpatroon <xliff:g id="NUMBER_0">%1$d</xliff:g> keer verkeerd geteken. \n\nProbeer weer oor <xliff:g id="NUMBER_1">%2$d</xliff:g> sekondes."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Jy het jou wagwoord <xliff:g id="NUMBER_0">%1$d</xliff:g> keer verkeerd ingevoer. \n\nProbeer weer oor <xliff:g id="NUMBER_1">%2$d</xliff:g> sekondes."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Jy het jou wagwoord <xliff:g id="NUMBER_0">%1$d</xliff:g> keer verkeerd ingevoer. \n\nProbeer weer oor <xliff:g id="NUMBER_1">%2$d</xliff:g> sekondes."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Verlaat hierdie bladsy"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Bly op hierdie bladsy"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nIs jy seker dat jy weg van hierdie bladsy af wil navigeer?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Bevestig"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Wenk: Dubbeltik om in en uit te zoem."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Outovul"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Stel outovul op"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Outovul met <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provinsie"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Poskode"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Deelstaat"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Poskode"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Land"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Eiland"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrik"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departement"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektuur"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Gemeente"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Area"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emiraat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"lees jou web-boekmerke en geskiedenis"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Laat die program toe om die geskiedenis van alle URL\'e wat die leser besoek het, en al die blaaier se boekmerke, te lees. Let wel: hierdie toestemming mag dalk nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"skryf webboekmerke en -geskiedenis"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou tablet gestoor is, te verander. Dit kan moontlik die program toelaat om blaaierdata uit te vee of te verander. Let wel: hierdie toestemming mag dalk nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou Android TV-toestel geberg is, te wysig. Dit kan die program dalk toelaat om blaaierdata uit te vee of te wysig. Let wel: Hierdie toestemming mag nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Laat die program toe om die blaaier se geskiedenis of boekmerke wat op jou foon gestoor is, te verander. Dit kan moontlik die program toelaat om blaaierdata uit te vee of te verander. Let wel: hierdie toestemming mag dalk nie deur derdeparty-blaaiers of ander programme met webblaaivermoëns afgedwing word nie."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"stel \'n wekker"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Laat die program toe om \'n alarm in \'n geïnstalleerde wekkerprogram te stel. Sommige wekkerprogramme werk dalk nie met hierdie funksie nie."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"voeg stemboodskap by"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Laat die program toe om boodskappe by te voeg by jou stempos-inkassie."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"verander blaaier se geoligging-toestemmings"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Laat die program toe om die blaaier se geoligging-toestemmings te verander. Kwaadwillige programme kan dit gebruik om hulle toe te laat om ligginginligting aan enige webwerf te stuur."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Wil jy hê die blaaier moet hierdie wagwoord onthou?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Nie nou nie"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Onthou"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nooit"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Jy hoef nie toestemming te hê om hierdie bladsy oop te maak nie."</string>
- <string name="text_copied" msgid="2531420577879738860">"Teks na knipbord gekopieër."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het uit <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> geplak"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het van jou knipbord af geplak"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het teks geplak wat jy gekopieer het"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het \'n prent geplak wat jy gekopieer het"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het inhoud geplak wat jy gekopieer het"</string>
<string name="more_item_label" msgid="7419249600215749115">"Meer"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Kieslys+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Jy kan dit later verander in Instellings > Programme"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Laat altyd toe"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Moet nooit toelaat nie"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM is verwyder"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Die selnetwerk sal nie beskikbaar wees nie totdat jy weer begin met ’n geldige SIM."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Klaar"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM is bygevoeg"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Herbegin jou toestel om toegang tot die mobiele netwerk te kry."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Herbegin"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktiveer mobiele diens"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM is nou gedeaktiveer. Voer PUK-kode in om voort te gaan. Kontak diensverskaffer vir details."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Voer die gewenste PIN-kode in"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Bevestig gewenste PIN-kode"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Ontsluit tans SIM …"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Verkeerde PIN-kode."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Tik \'n PIN in wat 4 tot 8 syfers lank is."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-kode moet 8 syfers wees."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Verwyder"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Verhoog volume bo aanbevole vlak?\n\nOm lang tydperke teen hoë volume te luister, kan jou gehoor beskadig."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Waarskuwing:\nJy het in ’n week meer kere na harde klankseine deur oorfone geluister as wat veilig is vir jou gehoor.\n\nAs jy oor hierdie limiet gaan, sal dit jou gehoor vir altyd beskadig."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Waarskuwing:\nJy het in ’n week 5 keer meer na harde klankseine deur oorfone geluister as wat veilig is vir jou gehoor.\n\nVolume is verlaag om jou gehoor te beskerm."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Die vlak waarteen jy na media luister, kan tot gehoorskade lei wanneer dit vir lang tydperke volgehou word.\n\nAs jy aanhou om vir lang tydperke so hard te luister, kan jy jou gehoor beskadig."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Waarskuwing:\nJy luister tans na inhoud wat teen ’n onveilige vlak speel.\n\nAs jy aanhou om so hard te luister, sal dit jou gehoor vir altyd beskadig."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gebruik toeganklikheidkortpad?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Wanneer die kortpad aan is, sal \'n toeganklikheidkenmerk begin word as albei volumeknoppies 3 sekondes lank gedruk word."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Skakel kortpad vir toeganklikheidskenmerke aan?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Skakel kortpad af"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gebruik kortpad"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Kleuromkering"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Kleurregstelling"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Eenhandmodus"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra donker"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Het volumesleutels ingehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aangeskakel."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Laat ’n metgeselapp toe om metgeselboodskappe aan ander toestelle af te lewer."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Begin voorgronddienste van agtergrond af"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Laat ’n metgeselapp toe om voorgronddienste van agtergrond af te begin"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofoon is beskikbaar"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofoon is geblokkeer"</string>
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 341e623..3843df9 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"ያስገባሃቸው ፒኖች አይዛመዱም"</string>
<string name="invalidPin" msgid="7542498253319440408">"ከ4 እስከ 8 ቁጥሮች የያዘ ፒን ተይብ"</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 ወይም ከዛ በላይ የሆኑ ቁጥሮችንPUK ተይብ።"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"ሲምዎ በPUK-የተቆለፈ ነው። ለመክፈት የPUK ኮዱን ይተይቡ።"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"የሲም እገዳን ለማንሳት PUK2ን ይተይቡ።"</string>
<string name="enablePin" msgid="2543771964137091212">"አልተሳካም፣ የሲም/RUIM ቁልፍን አንቃ።"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">ሲምዎ ከመቆለፉ በፊት <xliff:g id="NUMBER_1">%d</xliff:g> ሙከራዎች ይቀሩዎታል።</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"መተግበሪያው የሌሎች መተግበሪያዎችን የጀርባ ሂደት እንዲያቆም ይፈቅድለታል። ይህ ሌሎች መተግበሪያዎች መሄድ እንዲያቆሙ ሊያደርግ ይችላል።"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"ይህ መተግበሪያ በሌሎች መተግበሪያዎች ላይ ከላይ ወጣ ብሎ ሊታይ ይችላል"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"ይህ መተግበሪያ ከሌሎች መተግበሪያዎች ወይም ሌሎች የማያ ገጹ ክፍሎች በላይ ወጣ ብሎ ሊታይ ይችላል። ይህ በመደበኛው የመተግበሪያ አጠቃቀም ላይ ጣልቃ ሊገባ እና ሌሎች መተግበሪያዎች የሚታዩበትን መንገድ ሊለውጥ ይችላል።"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"የሌሎች መተግበሪያዎች ተደራቢዎችን ይደብቁ"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"ይህ መተግበሪያ ከመተግበሪያዎች የሚጀምሩ ተደራቢዎችን በላዩ ላይ እንዳይታዩ ሥርዓቱን እንዲደብቃቸው መጠየቅ ይችላል።"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"በጀርባ ላይ አሂድ"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ይህ መተግበሪያ በጀርባ ላይ ማሄድ ይችላል። ይሄ ባትሪውን በይበልጥ ሊጨርሰው ይችላል።"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"በጀርባ ላይ ውሂብ ይጠቀማል"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"እንደገና ሞክር"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ለሁሉም ባህሪያት እና ውሂብ ያስከፍቱ"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"የመጨረሻውን በመልክ መክፈት ሙከራዎችን አልፏል"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"ምንም SIM የለም"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"በጡባዊ ውስጥ ምንም ሲም የለም።"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"በእርስዎ የAndroid TV መሣሪያ ውስጥ ምንም ሲም የለም።"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"በስልክ ውስጥ ምንም ሲም የለም።"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"ሲም ያክሉ።"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"ሲሙ ጠፍቷል ወይም አይነበብም። ሲም ያክሉ።"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ጥቅም ላይ የማይውል ሲም።"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"ሲምዎ በቋሚነት ቦዝኗል።\n ለሌላ ሲም የእርስዎን አገልግሎት ሰጪ ያግኙ።"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"ቀዳሚ ትራክ"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"ቀጣይ ትራክ"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"ለአፍታ አቁም"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"በፍጥነት አሳልፍ"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"የአደጋ ጊዜ ጥሪ ብቻ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"አውታረመረብ ተሸንጉሯል"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"ሲም በPUK የተቆለፈ ነው።"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"እባክህ የተጠቃሚ መመሪያን ተመልከት ወይም የደንበኞች አገልግሎትአግኝ።"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"ሲም ተቆልፏል።"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"ሲምን በመክፈት ላይ…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"የመክፈቻ ስርዓተ ጥለቱን <xliff:g id="NUMBER_0">%1$d</xliff:g>ጊዜ በስህተት ስለውታል።\n\nእባክህ እንደገና ከ<xliff:g id="NUMBER_1">%2$d</xliff:g>ሰከንዶች በኋላ ሞክር።"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"<xliff:g id="NUMBER_0">%1$d</xliff:g>ጊዚያቶች የይለፍ ቃልህን በስህተት ተይበኻል፡፡በ<xliff:g id="NUMBER_1">%2$d</xliff:g> ሰኮንዶች ውስጥ \n\nእንደገና ሞክር፡፡"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"<xliff:g id="NUMBER_0">%1$d</xliff:g>ጊዚያቶች ፒንህን በስህተት ተይበኻል፡፡በ\nሰኮንዶች ውስጥ \n<xliff:g id="NUMBER_1">%2$d</xliff:g>እንደገና ሞክር፡፡"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ከዚህ ገጽ ውጣ"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"እዚህ ገፅ ላይ ቆይ"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nእርግጠኛ ነዎት ከዚህ ገጽ ወደ ሌላ ቦታ መሄድ ይፈልጋሉ?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"አረጋግጥ"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"ጠቃሚ ምክር፦ ለማጉላት እና ለማሳነስ ሁለቴ-መታ አድርግ።"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ራስ ሙላ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"በራስ ሰር ሙላ አዘጋጅ"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"በ<xliff:g id="SERVICENAME">%1$s</xliff:g> በራስ-ሙላ"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">"፣ "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"ክልል"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"የፖስታ ኮድ"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ክልል፡"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ዚፕ ኮድ"</string>
- <string name="autofill_county" msgid="7781382735643492173">"ወረዳ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"ደሴት"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ወረዳ"</string>
- <string name="autofill_department" msgid="9047276226873531529">"ክፍል"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"ሥራ አስፈፃሚ"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"ፓሪሽ"</string>
- <string name="autofill_area" msgid="8289022370678448983">"አካባቢ"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"ኢሚሬት"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"የድር ዕልባቶችህንና ታሪክህን አንብብ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"መተግበሪያው አሳሹ የጎበኛቸውን የሁሉንም URL ታሪኮች እና የአሳሹን እልባቶች ሁሉ እንዲያነብ ይፈቅድለታል። ማስታወሻ፦ይህ ፈቃድ በሶስተኛ ወገን አሳሾች ወይም ድር የማሰስ ችሎታ ባላቸው ሌሎች መተግበሪያዎች ላይፈፀሙ ይችላሉ።"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"የድር ዕልባቶችንና ታሪክ ጻፍ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"መተግበሪያው ጡባዊ ተኮህ ላይ የተከማቹ የአሳሹን ታሪክ ወይም ዕልባቶችን እንዲቀይር ይፈቅድለታል። ይህ መተግበሪያው የአሳሽ ውሂብ እንዲያጠፋ ወይም እንዲያስተካክል ሊፈቅድለት ይችላል። ማስታወሻ፦ ይህ ፈቃድ በሶስተኛ ወገን አሳሾች ወይም በሌላ የድር አሳሽነት አቅም ባላቸው መተግበሪያዎች ላይፈጸም ይችላል።"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"መተግበሪያው በእርስዎ Android TV ላይ የተከማቸ የአሳሹ ታሪኮችን ወይም ዕልባቶችን እንዲቀይር ያስችለዋል። ይሄ መተግበሪያው የአሳሽ ውሂብ እንዲደመስስ ወይም እንዲቀይር ያስችለዋል። ማሳሰቢያ፦ ይህ ፍቃድ በሶስተኛ ወገን አሳሾች ወይም የድር አሰሳ ችሎታዎች ባላቸው ሌሎች መተግበሪያዎች ተፈጻሚ ሊሆን አይችልም።"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"መተግበሪያው ስልክህ ላይ የተከማቹ የአሳሹን ታሪክ ወይም ዕልባቶችን እንዲቀይር ይፈቅድለታል። ይህ መተግበሪያው የአሳሽ ውሂብ እንዲያጠፋ ወይም እንዲያስተካክል ሊፈቅድለት ይችላል። ማስታወሻ፦ ይህ ፈቃድ በሶስተኛ ወገን አሳሾች ወይም በሌላ የድር አሳሽነት አቅም ባላቸው መተግበሪያዎች ላይፈጸም ይችላል።"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ማንቂያ አስቀምጥ"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"በተጫነው የማንቂያ ሰዓት መተግበሪያ ውስጥ ማንቅያን ለማደራጀት ለመተግበሪያው ይፈቅዳሉ፡፡አንዳንድ የማንቂያ ሰዓት መተግበሪያዎች ይሄንን ባህሪ ላይፈፅሙ ይችላሉ፡፡"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"የድምፅ መልዕክት አክል"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ወደ ድምፅ መልዕክት የገቢ መልዕክትህ መልዕክቶች ለማከል ለመተግበሪያው ይፈቅዳሉ።"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"የአሳሽ ገፀ ሥፍራ ፍቃዶችን ቀይር"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"የአሳሹን የጂኦ-አካባቢ ፍቃዶችን እንዲለውጥ ለመተግበሪያው ይፈቅዳል፡፡ተንኮል አዘል መተግበሪያዎች የመላኪያ አከባቢን መረጃ ወደ አጠራጣሪ የድር ጣቢያዎች ለመፍቀድ ይሄንን ሊጠቀሙበት ይችላሉ፡፡"</string>
- <string name="save_password_message" msgid="2146409467245462965">"አሳሹ ይህን ይለፍ ቃል እንዲያስታወስ ይፈልጋሉ?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"አሁን አይደለም"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"አስታውስ"</string>
- <string name="save_password_never" msgid="6776808375903410659">"በፍፁም"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ይህን ገጽ ለመክፈት ፈቃድ የለህም።"</string>
- <string name="text_copied" msgid="2531420577879738860">"ጽሁፍ ወደ ቅንጥብ ሰሌዳ ተገልብጧል።"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ከ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ተለጥፏል"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ከእርስዎ ቅንጥብ ሰሌዳ ተለጥፏል"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ጽሁፍ ለጥፏል"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ምስል ለጥፏል"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ይዘት ለጥፏል"</string>
<string name="more_item_label" msgid="7419249600215749115">"ተጨማሪ"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"ምናሌ+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"ይሄንን በኋላ ላይ በቅንብሮች > መተግበሪያዎች ውስጥ ሊቀይሩት ይችላሉ"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"ሁልጊዜ ፍቀድ"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"በጭራሽ አትፍቀድ"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"ሲም ተወግዷል"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"በትክክለኛ ሲም እንደገና እስከሚያስጀምሩ ድረስ የተንቀሳቃሽ ስልክ አውታረ መረቡ አይገኝም።"</string>
<string name="sim_done_button" msgid="6464250841528410598">"ተከናውኗል"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"ሲም ታክሏል"</string>
<string name="sim_added_message" msgid="6602906609509958680">"የተንቀሳቃሽ አውታረ መረብን ለመድረስ መሣሪያህን ድጋሚ አስነሳ።"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ዳግም ጀምር"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"የሞባይል አገልግሎትን አግብር"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"ሲም አሁን ተሰናክሏል። ለመቀጠል የPUK ኮድ ያስገቡ። ለዝርዝር ድምጸ ተያያዥ ሞደምን ያግኙ።"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"የተፈለገውን የፒን ኮድ ያስገቡ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"የተፈለገውን የፒን ኮድ ያረጋግጡ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"ሲምን በመክፈት ላይ…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ትክክል ያልሆነ ፒን ኮድ።"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"ከ4 እስከ 8 ቁጥሮች የያዘ ፒን ይተይቡ።"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"የPUK ኮድ 8 ቁጥሮች ነው መሆን ያለበት።"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"አስወግድ"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ድምጹ ከሚመከረው መጠን በላይ ከፍ ይበል?\n\nበከፍተኛ ድምፅ ለረጅም ጊዜ ማዳመጥ ጆሮዎን ሊጎዳው ይችላል።"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"ማስጠንቀቂያ፣\nእርስዎ አንድ ሰው በአንድ ሳምንት ውስጥ ደህንነቱ በተጠበቀ ሁኔታ በራስ ላይ ማዳመጫዎች መስማት ከሚችላቸው ጮክ ያሉ የድምፅ ምልክቶች መጠንን አልፈዋል።\n\nከዚህ ገደብ በላይ መሄድ የመስማት ችሎታዎን በቋሚነት ይጎዳል።"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"ማስጠንቀቂያ፣\nእርስዎ አንድ ሰው በአንድ ሳምንት ውስጥ ደህንነቱ በተጠበቀ ሁኔታ በራስ ላይ ማዳመጫዎች መስማት ከሚችላቸው ጮክ ያሉ የድምፅ ምልክቶች መጠን 5 እጥፍ አልፈዋል።\n\nየድምፅ መጠን የመስማት ችሎታዎን ለመጠበቅ ዝቅ ተደርጓል።"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"እርስዎ ሚዲያን እያዳመጡ ያሉበት ደረጃ በዘላቂነት ለረጅም ጊዜ ሲቆይ የመስማት ችሎታ ጉዳትን ያስከትላል።\n\nበዚህ ደረጃ ላይ ለረጅም ጊዜ ማጫወት መቀጠል የመስማት ችሎታዎን ሊጎዳ ይችላል።"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"ማስጠንቀቂያ፣\nበአሁኑ ጊዜ እርስዎ ደህንነቱ ባልተጠበቀ ደረጃ ላይ ጮክ ያለ ይዘት እያዳመጡ ነው።\n\nእንደዚህ ጮክ ብሎ ማዳመጥ መቀጠል የመስማት ችሎታዎን በቋሚነት ይጎዳል።"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"የተደራሽነት አቋራጭ ጥቅም ላይ ይዋል?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"አቋራጩ ሲበራ ሁለቱንም የድምጽ አዝራሮች ለ3 ሰከንዶች ተጭኖ መቆየት የተደራሽነት ባህሪን ያስጀምረዋል።"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"የተደራሽነት ባህሪዎች አቋራጭ ይብራ?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"አቋራጩን አጥፋ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"አቋራጭ ይጠቀሙ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ተቃራኒ ቀለም"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"የቀለም ማስተካከያ"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"የአንድ እጅ ሁነታ"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ተጨማሪ ደብዛዛ"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> በርቷል።"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"አጃቢ መተግበሪያ አጃቢ መልዕክቶችን ወደ ሌሎች መሣሪያዎች እንዲያደርስ ያስችላል።"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"የፊት አገልግሎቶችን ከዳራ ይጀምሩ"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"አጃቢ መተግበሪያ ከዳራ የፊት አገልግሎቶችን እንዲጀምር ያስችላል።"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"ማይክሮፎን ይገኛል"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"ማይክሮፎን ታግዷል"</string>
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index ad1d34f..3514ff1 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"أرقام التعريف الشخصية التي كتبتها غير مطابقة."</string>
<string name="invalidPin" msgid="7542498253319440408">"ادخل رقم تعريف شخصي مكون من ٤ إلى ٨ أرقام."</string>
<string name="invalidPuk" msgid="8831151490931907083">"اكتب رمز PUK مكونًا من ٨ أرقام أو أكثر."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"شريحة SIM مُقفَلة برمز PUK. اكتب رمز PUK لإلغاء قفلها."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"اكتب رمز PUK2 لإلغاء قفل شريحة SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"محاولة غير ناجحة، فعّل قفل SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="zero">لم يتبق لديك أي محاولات (<xliff:g id="NUMBER_1">%d</xliff:g>) يتم بعدها قفل شريحة SIM.</item>
@@ -392,6 +390,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"للسماح للتطبيق بإنهاء عمليات التطبيقات الأخرى في الخلفية. وقد يؤدي هذا إلى توقف تطبيقات أخرى عن العمل."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"يمكن لهذا التطبيق الظهور في مقدمة التطبيقات الأخرى"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"يمكن لهذا التطبيق الظهور في مقدمة التطبيقات أو أجزاء الشاشة الأخرى. وقد يتداخل هذا مع الاستخدام العادي للتطبيقات أو يؤدي إلى تغيير طريقة ظهور التطبيقات الأخرى."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"إخفاء النوافذ المركّبة الخاصة بالتطبيقات الأخرى"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"يمكن أن يطلب هذا التطبيق من النظام إخفاء النوافذ المركّبة التي تنشأ من التطبيقات حتى لا تظهر فوقه."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"العمل في الخلفية"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"يمكن أن يعمل هذا التطبيق في الخلفية. وهذا قد يستنفد البطارية بشكل أسرع."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"استخدام البيانات في الخلفية"</string>
@@ -967,22 +967,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"أعد المحاولة"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"فتح قفل جميع الميزات والبيانات"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"تم تجاوز الحد الأقصى لعدد محاولات فتح الجهاز بالتعرف على الوجه"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"لا تتوفر شريحة SIM."</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"لا تتوفر شريحة SIM في الجهاز اللوحي."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"لا تتوفر شريحة SIM في جهاز Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"لا تتوفر شريحة SIM في الهاتف."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"يجب إضافة شريحة SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"شريحة SIM مفقودة أو غير قابلة للقراءة. يجب إضافة شريحة SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"شريحة SIM غير قابلة للاستخدام."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"تم إيقاف شريحة SIM نهائيًا.\n عليك التواصل مع مقدم خدمة اللاسلكي للحصول على شريحة SIM أخرى."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"المقطع الصوتي السابق"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"المقطع الصوتي التالي"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"إيقاف مؤقت"</string>
@@ -992,13 +984,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"تقديم سريع"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"مكالمات الطوارئ فقط"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"الشبكة مؤمّنة"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"شريحة SIM مُقفَلة برمز PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"راجع دليل المستخدم أو اتصل بخدمة العملاء."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"شريحة SIM مُقفَلة."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"جارٍ إلغاء قفل شريحة SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"لقد رسمت نقش فتح القفل بطريقة غير صحيحة <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة.\n\nيُرجى إعادة المحاولة خلال <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانية."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"لقد كتبت كلمة المرور <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة بشكل غير صحيح. \n\nأعد المحاولة خلال <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانية."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"لقد كتبت رمز PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة بشكل غير صحيح. \n\nأعد المحاولة خلال <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانية."</string>
@@ -1071,50 +1060,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"مغادرة هذه الصفحة"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"البقاء في هذه الصفحة"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nهل تريد فعلًا الانتقال بعيدًا عن هذه الصفحة؟"</string>
- <string name="save_password_label" msgid="9161712335355510035">"تأكيد"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"نصيحة: اضغط مرتين للتكبير والتصغير."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ملء تلقائي"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"إعداد الملء التلقائي"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"الملء التلقائي من خلال <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">"، "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"الإقليم"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"الرمز البريدي"</string>
- <string name="autofill_state" msgid="3341725337190434069">"الولاية"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"الرمز البريدي"</string>
- <string name="autofill_county" msgid="7781382735643492173">"المقاطعة"</string>
- <string name="autofill_island" msgid="5367139008536593734">"جزيرة"</string>
- <string name="autofill_district" msgid="6428712062213557327">"المنطقة"</string>
- <string name="autofill_department" msgid="9047276226873531529">"القسم"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"المحافظة"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"الدائرة"</string>
- <string name="autofill_area" msgid="8289022370678448983">"المنطقة"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"الإمارة"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"قراءة إشارات ويب والسجل"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"للسماح للتطبيق بقراءة سجل جميع عناوين URL التي زارها المتصفح، وجميع الإشارات المرجعية في المتصفح. ملاحظة: لا يجوز فرض هذا الإذن من قِبل متصفحات جهة خارجية أو تطبيقات أخرى تتوفر بها إمكانيات تصفح الويب."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"كتابة إشارات ويب والسجل"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"للسماح للتطبيق بتعديل سجل المتصفح أو الإشارات المرجعية المخزنة على جهازك اللوحي. وقد يتيح هذا للتطبيق محو بيانات المتصفح أو تعديلها. ملاحظة: لا يجوز فرض هذا الإذن من قِبل متصفحات جهات خارجية أو تطبيقات أخرى بها إمكانيات تصفح الويب."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"للسماح للتطبيق بتعديل سجلّ المتصفّح أو الإشارات المرجعية المخزّنة على جهاز Android TV. وقد يتيح هذا الإذن للتطبيق إمكانية محو بيانات المتصفّح أو تعديلها. ملاحظة: لا يجوز فرض هذا الإذن بواسطة متصفّحات الجهات الخارجية أو التطبيقات الأخرى المزوّدة بإمكانيات تصفّح الويب."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"للسماح للتطبيق بتعديل سجل المتصفح أو الإشارات المرجعية المخزنة على هاتفك. وقد يتيح هذا للتطبيق محو بيانات المتصفح أو تعديلها. ملاحظة: لا يجوز فرض هذا الإذن من قِبل متصفحات جهات خارجية أو تطبيقات أخرى بها إمكانيات تصفح الويب."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"تعيين منبه"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"للسماح للتطبيق بضبط المنبّه في تطبيق المنبّه المثبّت. ربما لا تنفذ بعض تطبيقات المنبّه هذه الميزة."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"إضافة بريد صوتي"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"للسماح للتطبيق بإضافة رسائل إلى صندوق البريد الصوتي."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"تعديل أذونات الموقع الجغرافي للمتصفح"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"للسماح لأحد التطبيقات بتعديل أذونات الموقع الجغرافي للمتصفح. يمكن أن تستخدم التطبيقات الضارة هذا للسماح بإرسال معلومات الموقع إلى مواقع إلكترونية عشوائية."</string>
- <string name="save_password_message" msgid="2146409467245462965">"هل تريد من المتصفح تذكر كلمة المرور هذه؟"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ليس الآن"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"تذكّر"</string>
- <string name="save_password_never" msgid="6776808375903410659">"مطلقًا"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ليس لديك إذن بفتح هذه الصفحة."</string>
- <string name="text_copied" msgid="2531420577879738860">"تم نسخ النص إلى الحافظة."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"تم لصق محتوى في <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> من <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"لصَق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> محتوىً من الحافظة."</string>
- <string name="pasted_text" msgid="4298871641549173733">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> النص الذي نسخته."</string>
- <string name="pasted_image" msgid="4729097394781491022">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> الصورة التي نسختها."</string>
- <string name="pasted_content" msgid="646276353060777131">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> المحتوى الذي نسخته."</string>
<string name="more_item_label" msgid="7419249600215749115">"المزيد"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"القائمة+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1382,13 +1333,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"يمكنك تغيير ذلك لاحقًا من إعدادات > تطبيقات"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"السماح دومًا"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"عدم السماح مطلقًا"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"تمت إزالة شريحة SIM"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"لن تتوفّر شبكة الجوال إلى أن تتم إعادة تشغيل الهاتف باستخدام شريحة SIM صالحة."</string>
<string name="sim_done_button" msgid="6464250841528410598">"تم"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"تمت إضافة شريحة SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"أعد تشغيل جهازك للدخول إلى شبكة الجوال."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"إعادة التشغيل"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"تفعيل خدمة الجوّال"</string>
@@ -1700,8 +1648,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"شريحة SIM غير مفعّلة الآن. أدخل رمز PUK للمتابعة. اتصل بمشغل شبكة الجوال للاطلاع على التفاصيل."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"إدخال رمز رمز PIN المراد"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"تأكيد رمز رمز PIN المراد"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"جارٍ إلغاء قفل شريحة SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"رمز PIN غير صحيح."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"اكتب رقم التعريف الشخصي المكون من ٤ إلى ٨ أرقام."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"يجب أن يتكون رمز PUK من ۸ أرقام."</string>
@@ -1730,6 +1677,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"إزالة"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"هل تريد رفع مستوى الصوت فوق المستوى الموصى به؟\n\nقد يضر سماع صوت عالٍ لفترات طويلة بسمعك."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"تحذير:\nلقد تجاوزت مقدار الإشارات الصوتية العالية التي يمكن للشخص الاستماع إليها بأمان خلال أسبوع باستخدام سماعات الرأس.\n\nتجاوز هذا الحدّ سيضر بسمعك بشكل دائم."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"تحذير:\nلقد تجاوزت بمقدار 5 مرات الإشارات الصوتية العالية التي يمكن للشخص الاستماع إليها بأمان خلال أسبوع باستخدام سماعات الرأس.\n\nتم خفض مستوى الصوت لحماية سمعك."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"يمكن أن يؤدي التعرض لفترات طويلة للمستوى الذي تسمع به الوسائط إلى حدوث ضرر في السمع.\n\nقد يؤدي استمرار التشغيل بهذا المستوى لفترات طويلة إلى حدوث ضرر في السمع."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"تحذير:\nأنت تستمع حاليًا إلى محتوى صاخب يتم تشغيله بمستوى صوت غير آمن.\n\nسيؤدي الاستمرار في الاستماع إلى هذا الصوت الصاخب إلى حدوث ضرر في سمعك بشكل دائم."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"هل تريد استخدام اختصار \"سهولة الاستخدام\"؟"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"عند تفعيل الاختصار، يؤدي الضغط على زرّي التحكّم في مستوى الصوت معًا لمدة 3 ثوانٍ إلى تفعيل إحدى ميزات إمكانية الوصول."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"هل تريد تفعيل الاختصار لميزات إمكانية الوصول؟"</string>
@@ -1758,8 +1709,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"إيقاف الاختصار"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استخدام الاختصار"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"قلب الألوان"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"تصحيح الألوان"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"وضع \"التصفح بيد واحدة\""</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"زيادة تعتيم الشاشة"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم تفعيل <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2356,8 +2306,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"يسمح هذا الإذن للتطبيق المصاحب بتسليم الرسائل المصاحبة إلى الأجهزة الأخرى."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"بدء الخدمات التي تعمل في المقدّمة من الخلفية"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"يسمح هذا الإذن للتطبيق المصاحب ببدء الخدمات التي تعمل في المقدّمة من الخلفية."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"الميكروفون متاح."</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"تم حظر الميكروفون."</string>
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 31b62be..234534a 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"আপুনি লিখা পিনবিলাক মিলা নাই।"</string>
<string name="invalidPin" msgid="7542498253319440408">"৪টাৰ পৰা ৮টা সংখ্যাযুক্ত এটা পিন লিখক।"</string>
<string name="invalidPuk" msgid="8831151490931907083">"৮টা সংখ্যা বা তাতকৈ বেছি সংখ্যাৰ এটা PUK লিখক।"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"আপোনাৰ ছিমখন PUKৰ দ্বাৰা লক হৈ আছে। এইখন আনলক কৰিবলৈ PUK ক’ডটো টাইপ কৰক।"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"ছিম অৱৰোধৰ পৰা আঁতৰাবলৈ PUK2 টাইপ কৰক।"</string>
<string name="enablePin" msgid="2543771964137091212">"অসফল, ছিম/RUIM লক সক্ষম কৰক।"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">ছিম লক হোৱাৰ পূৰ্বে আপোনাৰ <xliff:g id="NUMBER_1">%d</xliff:g>টা প্ৰয়াস বাকী আছে।</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"এপ্টোক অন্য এপসমূহৰ নেপথ্যৰ প্ৰক্ৰিয়াসমূহ শেষ কৰিবলৈ অনুমতি দিয়ে৷ এই কার্যৰ বাবে অন্য এপসমূহ চলাটো বন্ধ হ\'ব পাৰে৷"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"এই এপ্টো অইন এপৰ ওপৰত প্ৰদৰ্শিত হ\'ব পাৰে"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"এই এপ্টো অন্য এপৰ ওপৰত বা স্ক্ৰীনৰ অন্য অংশত প্ৰদৰ্শিত হ\'ব পাৰে। এই কাৰ্যই এপৰ স্বাভাৱিক ব্যৱহাৰত ব্যাঘাত জন্মাব পাৰে আৰু অন্য এপ্সমূহক স্ক্ৰীনত কেনেকৈ দেখা পোৱা যায় সেইটো সলনি কৰিব পাৰে।"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"অন্য এপৰ অ’ভাৰলে’ লুকুৱাওক"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"এই এপ্টোৱে অনুৰোধ কৰিব পাৰে যে ছিষ্টেমটোৱে ইয়াৰ ওপৰত দেখুওৱাৰ পৰা এপৰ পৰা উদ্ভৱ হোৱা অ’ভাৰলে’সমূহ লুকুৱাই ৰাখে।"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"নেপথ্যত চলিব পাৰে"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"এই এপ্টো নেপথ্যত চলিব পাৰে। ইয়াৰ ফলত বেটাৰী সোনকালে শেষ হ’ব পাৰে।"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"নেপথ্যত ডেটা ব্যৱহাৰ কৰিব পাৰে"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"আকৌ চেষ্টা কৰক"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"আটাইবোৰ সুবিধা আৰু ডেটাৰ বাবে আনলক কৰক"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"গৰাকীৰ ফেচ আনলক কৰা সৰ্বাধিক সীমা অতিক্ৰম কৰা হ’ল"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"কোনো ছিম নাই"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"টেবলেটত কোনো ছিম নাই।"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"আপোনাৰ Android TV ডিভাইচটোত কোনো ছিম নাই।"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ফ’নত কোনো ছিম নাই।"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"এখন ছিম যোগ দিয়ক।"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"ছিম নাই অথবা সেইখন পঢ়িব নোৱাৰি। এখন ছিম যোগ দিয়ক।"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ব্যৱহাৰ কৰিব নোৱৰা ছিম।"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"আপোনাৰ ছিমখন স্থায়ীভাৱে নিষ্ক্ৰিয় কৰা হৈছে।\n অন্য এখন ছিমৰ বাবে আপোনাৰ ৱায়াৰলেছ সেৱা প্ৰদানকাৰীৰ সৈতে যোগাযোগ কৰক।"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"পূৰ্বৱৰ্তী ট্ৰেক"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"পৰৱৰ্তী ট্ৰেক"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"পজ কৰক"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"ফাষ্ট ফৰৱাৰ্ড"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"জৰুৰীকালীন কল মাত্ৰ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"নেটৱর্ক অৱৰোধিত"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"ছিমখন PUKৰ দ্বাৰা লক হৈ আছে।"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ব্যৱহাৰকাৰীৰ নিৰ্দেশনা চাওক বা গ্ৰাহক সেৱা কেন্দ্ৰৰ সৈতে যোগাযোগ কৰক।"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"ছিমখন লক হৈ আছে।"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"ছিম আনলক কৰি থকা হৈছে…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"আপুনি অশুদ্ধভাৱে আপোনাৰ আনলক আৰ্হি <xliff:g id="NUMBER_0">%1$d</xliff:g> বাৰ আঁকিছে। \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> ছেকেণ্ডৰ পাছত পুনৰ চেষ্টা কৰক।"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"আপুনি অশুদ্ধভাৱে আপোনাৰ পাছৱৰ্ড <xliff:g id="NUMBER_0">%1$d</xliff:g> বাৰ লিখিছে। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ছেকেণ্ডৰ পাছত পুনৰ চেষ্টা কৰক।"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"আপুনি অশুদ্ধভাৱে আপোনাৰ পিন <xliff:g id="NUMBER_0">%1$d</xliff:g> বাৰ লিখিছে। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ছেকেণ্ডৰ পাছত পুনৰ চেষ্টা কৰক।"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"এই পৃষ্ঠাটোৰ পৰা আঁতৰি যাওক"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"এই পৃষ্ঠাটোতে থাকক"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nআপুনি এই পৃষ্ঠাটো এৰি বেলেগলৈ যাব বিচাৰে নেকি?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"নিশ্চিত কৰক"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"পৰামৰ্শ: জুম ইন আৰু আউট কৰিবলৈ দুবাৰ টিপক৷"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"স্বয়ংপূৰ্তি"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"স্বয়ংপূৰ্তি ছেট আপ কৰক"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g>ৰ জৰিয়তে স্বয়ংক্ৰিয়ভাৱে পূৰ্ণ কৰা সুবিধা"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"প্ৰদেশ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"পিন ক\'ড"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ৰাজ্য"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"পিন ক\'ড"</string>
- <string name="autofill_county" msgid="7781382735643492173">"জিলা"</string>
- <string name="autofill_island" msgid="5367139008536593734">"দ্বীপ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"জিলা"</string>
- <string name="autofill_department" msgid="9047276226873531529">"বিভাগ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"জিলাৰ মুৰব্বী"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"গাঁও"</string>
- <string name="autofill_area" msgid="8289022370678448983">"ক্ষেত্ৰ"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"এমিৰেট"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"আপোনাৰ ৱেব বুকমার্কবোৰ আৰু ইতিহাস পঢ়ক"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ব্ৰাউজাৰৰ বুকমার্ক আৰু ব্ৰাউজাৰে ব্যৱহাৰ কৰা আটাইবোৰ URLৰ ইতিহাস পঢ়িবলৈ এপক অনুমতি দিয়ে। টোকা: এই অনুমতি তৃতীয় পক্ষৰ ব্ৰাউজাৰবোৰ বা ৱেব ব্ৰাউজিং কৰিব পৰা অন্য এপ্লিকেশ্বনবোৰৰ দ্বাৰা বলৱৎ নহ\'বও পাৰে।"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"আপোনাৰ ৱেব বুকমার্কবোৰ আৰু ইতিহাস লিখক"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"আপোনাৰ টেবলেটত সঞ্চয় কৰি ৰখা ব্ৰাউজাৰৰ বুকমার্ক আৰু ব্ৰাউজাৰৰ ইতিহাস সংশোধন কৰিবলৈ এপক অনুমতি দিয়ে। টোকা: এই অনুমতি তৃতীয় পক্ষৰ ব্ৰাউজাৰবোৰ বা ৱেব ব্ৰাউজিং কৰিব পৰা অন্য এপ্লিকেশ্বনবোৰৰ দ্বাৰা বলৱৎ নহ\'বও পাৰে।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"এপ্টোক আপোনাৰ Android TV ডিভাইচত ষ্ট’ৰ কৰি ৰখা ব্ৰাউজাৰৰ ইতিহাস আৰু বুকমার্কবোৰ সংশোধন কৰিবলৈ অনুমতি দিয়ে। ব্ৰাউজাৰ ডেটা মোহাৰিবলৈ অথবা সংশোধন কৰিবলৈ ই এপ্টোক অনুমতি দিব পাৰে। টোকা: এই অনুমতি তৃতীয় পক্ষৰ ব্ৰাউজাৰবোৰ অথবা ৱেব ব্ৰাউজিঙৰ ক্ষমতা থকা অন্য এপ্লিকেশ্বনবোৰৰ দ্বাৰা বলৱৎ কৰা নহ’বও পাৰে।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"আপোনাৰ ফ\'নত সঞ্চয় কৰি ৰখা ব্ৰাউজাৰৰ বুকমার্ক আৰু ব্ৰাউজাৰৰ ইতিহাস সংশোধন কৰিবলৈ এপক অনুমতি দিয়ে। টোকা: এই অনুমতি তৃতীয় পক্ষৰ ব্ৰাউজাৰবোৰ বা ৱেব ব্ৰাউজিং কৰিব পৰা অন্য এপ্লিকেশ্বনবোৰৰ দ্বাৰা বলৱৎ নহ\'বও পাৰে।"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"এলাৰ্ম ছেট কৰক"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"এপ্টোক ইনষ্টল হৈ থকা এলাৰ্ম ক্লক এপত এলাৰ্ম ছেট কৰিবলৈ অনুমতি দিয়ে। কিছুমান এলাৰ্ম ক্লক এপত এই সুবিধাটো প্ৰযোজ্য নহ’ব পাৰে।"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ভইচমেইল যোগ কৰক"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"আপোনাৰ ভইচমেইল ইনবক্সত বাৰ্তাবোৰ যোগ কৰিবলৈ এপ্টোক অনুমতি দিয়ক।"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ব্ৰাউজাৰৰ জিঅ\'লোকেশ্বনৰ অনুমতিসমূহ সংশোধন কৰক"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ব্ৰাউজাৰৰ জিঅ\'লোকেশ্বন বিষয়ক অনুমতিসমূহ সংশোধন কৰিবলৈ এপ্টোক অনুমতি দিয়ে৷ ক্ষতিকাৰক এপবোৰে একপক্ষীয় ৱেবছাইটসমূহলৈ অৱস্থান সেৱাৰ তথ্য পঠিয়াবলৈ ইয়াক ব্যৱহাৰ কৰিব পাৰে৷"</string>
- <string name="save_password_message" msgid="2146409467245462965">"ব্ৰাউজাৰে এই পাছৱর্ডটো মনত ৰখাটো বিচাৰেনে?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"এতিয়াই নহয়"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"মনত ৰাখিব"</string>
- <string name="save_password_never" msgid="6776808375903410659">"কেতিয়াও মনত নাৰাখিব"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"এই পৃষ্ঠাটো খুলিবলৈ আপোনাৰ অনুমতি নাই।"</string>
- <string name="text_copied" msgid="2531420577879738860">"ক্লিপব\'র্ডলৈ বাৰ্তা প্ৰতিলিপি কৰা হ’ল।"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>ৰ পৰা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> পে’ষ্ট কৰা হৈছে"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপোনাৰ ক্লিপব’ৰ্ডৰ পৰা পে’ষ্ট কৰিছে"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা সমল পে’ষ্ট কৰিছে"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা এটা প্ৰতিচ্ছবি পে’ষ্ট কৰিছে"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা সমল পে’ষ্ট কৰিছে"</string>
<string name="more_item_label" msgid="7419249600215749115">"অধিক"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"মেনু+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"মেটা+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"আপুনি ইয়াক পাছত ছেটিং > এপত সলনি কৰিব পাৰে"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"যিকোনো সময়ত অনুমতি দিয়ক"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"কেতিয়াও অনুমতি নিদিব"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"ছিম আঁতৰোৱা হৈছে"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"আপুনি এখন মান্য ছিম ভৰাই ৰিষ্টাৰ্ট নকৰা পৰ্যন্ত ম’বাইলৰ নেটৱৰ্ক উপলব্ধ নহয়।"</string>
<string name="sim_done_button" msgid="6464250841528410598">"সম্পন্ন হ’ল"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"ছিম যোগ দিয়া হৈছে"</string>
<string name="sim_added_message" msgid="6602906609509958680">"ম\'বাইলৰ নেটৱর্ক ব্যৱহাৰ কৰিবলৈ আপোনাৰ ডিভাইচটো ৰিষ্টার্ট কৰক।"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ৰিষ্টাৰ্ট কৰক"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"ম’বাইল সেৱা সক্ৰিয় কৰক"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"ছিমখন বর্তমান অক্ষম অৱস্থাত আছে। অব্যাহত ৰাখিবলৈ PUK ক\'ড লিখক। সবিশেষ জানিবলৈ বাহকৰ সৈতে যোগাযোগ কৰক।"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"ইচ্ছা কৰা পিন ক\'ড লিখক"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"ইচ্ছা কৰা পিন ক\'ড নিশ্চিত কৰক"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"ছিম আনলক কৰি থকা হৈছে…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ভুল পিন ক\'ড।"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"৪ ৰ পৰা ৮ টা লৈকে সংখ্য়া সন্নিবিষ্ট হোৱা পিন লিখক।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK ক\'ড ৮টা সংখ্যাৰ হ\'ব লাগিব।"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"আঁতৰাওক"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"অনুমোদিত স্তৰতকৈ ওপৰলৈ ভলিউম বঢ়াব নেকি?\n\nদীৰ্ঘ সময়ৰ বাবে উচ্চ ভলিউমত শুনাৰ ফলত শ্ৰৱণ ক্ষমতাৰ ক্ষতি হ\'ব পাৰে।"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"সকীয়নি,\nএগৰাকী ব্যক্তিয়ে এসপ্তাহত হেডফ’নৰ জৰিয়তে সুৰক্ষিতভাৱে শুনিব পৰা ডাঙৰ ধ্বনিৰ ছিগনেলৰ পৰিমাণ আপুনি অতিক্ৰম কৰিছে।\n\nএই সীমা অতিক্ৰম কৰাটোৱে আপোনাৰ শ্ৰৱণ শক্তি স্থায়ীভাৱে নষ্ট কৰিব পাৰে।"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"সকীয়নি,\nএগৰাকী ব্যক্তিয়ে এসপ্তাহত হেডফ’নৰ জৰিয়তে সুৰক্ষিতভাৱে শুনিব পৰা ডাঙৰ ধ্বনিৰ ছিগনেলৰ পৰিমাণৰ ৫ গুণ আপুনি অতিক্ৰম কৰিছে।\n\nআপোনাৰ শ্ৰৱণ শক্তি সুৰক্ষিত কৰিবলৈ ভলিউম কমোৱা হৈছে।"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"আপুনি যিটো স্তৰত মিডিয়া শুনি আছে, দীঘলীয়া সময় ধৰি সেইটো স্তৰত শুনি থাকিলে আপোনাৰ শ্ৰৱণ শক্তি নষ্ট হ’ব পাৰে।\n\nএইটো স্তৰত দীঘলীয়া সময়ৰ বাবে প্লে’ কৰি থাকিলে আপোনাৰ শ্ৰৱণ শক্তি নষ্ট হ’ব পাৰে।"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"সকীয়নি,\nআপুনি বৰ্তমান অসুৰক্ষিত স্তৰ এটাত ডাঙৰ ধ্বনিৰ সমল প্লে’ কৰি শুনি আছে।\n\nএই ডাঙৰ ধ্বনিৰ সমলটো শুনি থাকিলে আপোনাৰ শ্ৰৱণ শক্তি নষ্ট হ’ব পাৰে।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"দিব্যাংগসকলৰ সুবিধাৰ শ্বৰ্টকাট ব্যৱহাৰ কৰেনে?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"শ্বৰ্টকাটটো অন হৈ থকাৰ সময়ত দুয়োটা ভলিউম বুটাম ৩ ছেকেণ্ডৰ বাবে হেঁচি ধৰি ৰাখিলে এটা সাধ্য সুবিধা আৰম্ভ হ’ব।"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"সাধ্য সুবিধাসমূহৰ বাবে শ্বৰ্টকাট অন কৰিবনে?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"শ্বৰ্টকাট অফ কৰক"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শ্বৰ্টকাট ব্যৱহাৰ কৰক"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ৰং বিপৰীতকৰণ"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"ৰং শুধৰণী"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"এখন হাতেৰে ব্যৱহাৰ কৰাৰ ম’ড"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"এক্সট্ৰা ডিম"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কীসমূহ ধৰি ৰাখক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অন কৰা হ\'ল।"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"এটা সহযোগী এপক অন্য ডিভাইচলৈ সহযোগী বাৰ্তাসমূহ ডেলিভাৰ কৰিবলৈ দিয়ে।"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"নেপথ্যৰ পৰা অগ্ৰভূমি সেৱাসমূহ আৰম্ভ কৰক"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"এটা সহযোগী এপক নেপথ্যৰ পৰা অগ্ৰভূমি সেৱাসমূহ আৰম্ভ কৰিবলৈ দিয়ে।"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"মাইক্ৰ’ফ’নটো উপলব্ধ"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"মাইক্ৰ’ফ’নটো অৱৰোধ কৰি থোৱা আছে"</string>
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 253a894..f35da2d 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Daxil etdiyiniz PİN kodlar uyğun gəlmir."</string>
<string name="invalidPin" msgid="7542498253319440408">"4-dən 8-ə qədər rəqəmi olan PIN yazın."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 və daha çox rəqəmi olan PUK yazın."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Sizin SIM kart PUK ilə kilidlənib. Onu açmaq üçün PUK kodu yazın."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM kartı blokdan çıxarmaq üçün PUK2 daxil edin."</string>
<string name="enablePin" msgid="2543771964137091212">"Alınmadı, SIM/RUIM Kilidini aktiv edin."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">SIM kartınızın kilidlənməsindən öncə <xliff:g id="NUMBER_1">%d</xliff:g> cəhdiniz qalır.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Tətbiqə başqa tətbiqlərin arxafon proseslərini dayandırmaq icazəsi verir. Bu digər tətbiqlərin dayanmasına səbəb ola bilər."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Bu tətbiq digər tətbiqlərin üzərində görünə bilər"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Bu tətbiq digər tətbiqlərin və ya ekran hissələrinin üzərində görünə bilər. Bu, normal tətbiq istifadəsinə müdaxilə edə və digər tətbiqlərin görünüşünün dəyişməsinə səbəb ola bilər."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"digər tətbiq üst-üstə düşmələrini gizlədin"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Bu tətbiq sistemin tətbiqlərdən yaranan üst-üstə düşmələri gizlətməsini tələb edə bilər."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"arxa fonda işləmə"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Bu tətbiq arxa fonda işləsə, batareya daha tez qurtara bilər."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"datanın arxa fonda istifadəsi"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Bir daha cəhd et"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Bütün funksiyalar və data üçün kiliddən çıxarın"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Üz ilə Kiliddən Açma cəhdləriniz bitdi"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM yoxdur"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Planşetdə SIM kart yoxdur."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV cihazında SIM kart yoxdur."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Telefonda SIM kart yoxdur."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM əlavə edin."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM kart yoxdur və ya oxuna bilinmir. SIM əlavə edin."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"İstifadəyə yararsız SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM kartınız həmişəlik deaktiv edilib.\n Başqa SIM kart üçün simsiz xidmət provayderinizə müraciət edin."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Öncəki trek"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Növbəti trek"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pauza"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Sürətlə irəli"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Yalnız təcili zənglər"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Şəbəkə kilidlidir"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM kart PUK ilə kilidlənib."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"İstifadəçi Təlimatlarına baxın və ya Müştəri Xidmətlərinə müraciət edin."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM kilidlənib."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM kiliddən çıxarılır…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Siz kilid modelini <xliff:g id="NUMBER_0">%1$d</xliff:g> dəfə yanlış çəkdiniz. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> saniyə içində yenidən sınayın."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Şifrənizi <xliff:g id="NUMBER_0">%1$d</xliff:g> dəfə yanlış daxil etdiniz.\n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> saniyə ərzində yenidən yoxlayın"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Siz PIN nömrənizi <xliff:g id="NUMBER_0">%1$d</xliff:g> dəfə yanlış daxil etdiniz. \n \n <xliff:g id="NUMBER_1">%2$d</xliff:g> saniyə içində təkrar sınayın."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Bu Səhifəni Tərk edin"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Bu səhifədə qalın"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nBu səhifədən kənara naviqasiya etmək istədiyinizə əminsiniz mi?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Təsdiq edin"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Məsləhət: Böyütmək və kiçiltmək üçün iki dəfə tıklayın."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Avtodoldurma"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"AvtoDoldurmanı ayarla"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ilə avtomatik daxil etmə"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Vilayət"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Poçt kodu"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Dövlət"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Poçt indeksi"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Ölkə"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ada"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Sahə"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departament"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Pariş"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Sahə"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Əmirlik"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"Veb əlfəcinlərinizi və tarixçələrinizi oxumaq"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Tətbiqə Brauzerin daxil olduğu bütün linkləri və bütün Brauzer əlfəcinlərini oxumaq imkanı verir. Qeyd: bu icazə veb brauzer imkanları olan üçüncü tərəf brazuerləri və digər tətbiqlər tərəfindən yerinə yetirilə bilməz."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"veb əlfəcinləri və tarixçəsi yazmaq"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Tətbiqə planşetinizdəki brauzer tarixini və əlfəcinləri redaktə etmək icazəsi verir. Bu tətbizə brauzer məlumatlarını silmək və ya redaktə etmək imkanı verə bilər. Qeyd: Bu icazə 3-cü partiya brauzerlərə və ya veb brauzing xüsusiyyətli digər tətbiqlərə şamil olunmaya bilər."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Tətbiqə Android TV cihazında saxlanılan brauzer tarixçəsi və ya əlfəcinləri dəyişdirmək icazəsi verir. Bu, tətbiqə Brauzer datasını silmək və ya dəyişdirmək icazəsi verə bilər. Qeyd: bu icazə vebdə axtarış imkanları olan üçüncü tərəf brauzerləri və ya digər tətbiqlər üçün aktiv deyil."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Tətbiqə Brauzer tarixçəsi və telefonunuzda saxlanılan əlfəcinlərə dəyişiklik etmək imkanı verir. Bununla tətbiqlə Brauzer datanızı silə və ya dəyişdirə bilər. Qeyd: bu icazə veb brauzer imkanları olan üçüncü tərəf brazuerləri və digər tətbiqlər tərəfindən yerinə yetirilə bilməz."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"siqnal qurur"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Tətbiqə quraşdırlmış zəngli saata alarm ayarlamağa imkan verir. Bəzi zəngli saat tətbiqləri bu özəlliyi dəstəkləməyə bilər."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"Səsli poçt əlavə et"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Tətbiqə səsli poçt qutunuza mesaj əlavə etməyə imkan verir."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Brauzerin geolokasiya icazələrini dəyişir"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Tətbiqə Brauzerin geolokasiya icazələrini dəyişməyə imkan verir. Zərərli tətbiqlər bundan istifadə edərək məkan məlumatlarını təsadüfi saytlara göndərə bilər."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Brauzerin bu şifrəni yadda saxlamasını istəyirsiz?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"İndi yox"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Yadda saxlayın"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Heç vaxt"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Bu səhifəni açmaq üçün icazəniz yoxdur."</string>
- <string name="text_copied" msgid="2531420577879738860">"Mətn panoya kopyalandı."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> tətbiqindən əlavə edilib"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> datanı panodan əlavə edib"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız mətni əlavə etdi"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız şəkli əlavə etdi"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız kontenti əlavə etdi"</string>
<string name="more_item_label" msgid="7419249600215749115">"Digər"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menyu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Bunu sonra Ayarlarda dəyişə bilərsiniz > Tətbiqlər"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Həmişə icazə ver"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Heç vaxt icazə verməyin"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM çıxarılıb"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Cihazınızı etibarlı SIM kart ilə başladana kimi mobil şəbəkə əlçatmaz olacaq."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Bitdi"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM əlavə edilib"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Mobil şəbəkəyə qoşulmaq üçün cihazınızı yenidən başladın."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Yenidən başlat"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Mobil xidməti aktiv edin"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM indi deaktivdir. Davam etmək üçün PUK kodu daxil edin. Əlavə məlumat üçün operatora müraciət edin."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"İstədiyiniz PİN kodu daxil edin"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"İstədiyiniz PIN kodu təsdiqləyin"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM kiliddən çıxarılır…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Yanlış PİN kod."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4-dən 8-ə qədər rəqəmi olan PIN yazın."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kod 8 rəqəmli olmalıdır."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" - "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Yığışdır"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Səsin həcmi tövsiyə olunan səviyyədən artıq olsun?\n\nYüksək səsi uzun zaman dinləmək eşitmə qabiliyyətinizə zərər vura bilər."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Xəbərdarlıq,\nQulaqlıqlar vasitəsilə bir həftə ərzində güvənli şəkildə dinləyə biləcəyiniz yüksək səs siqnallarının miqdarını keçmisiniz.\n\nBu həddi aşmaq eşitmə qabiliyyətini həmişəlik zədələyəcək."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Xəbərdarlıq,\nQulaqlıqlar vasitəsilə bir həftə ərzində güvənli şəkildə dinləyə biləcəyiniz yüksək səs siqnallarının miqdarını 5 dəfə keçmisiniz.\n\nEşitmə qabiliyyətinizi qorumaq üçün səs səviyyəsi azaldılıb."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Mediaya qulaq asdığınız səviyyə uzun müddət davam etdikdə eşitmə qabuliyyətinin zədələnməsi ilə nəticələnə bilər.\n\nBu səviyyədə uzun müddət oxutmağa davam etmək eşitmə qabiliyyətinizə zərər verə bilər."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Xəbərdarlıq,\nHazırda təhlükəli səviyyədə oxudulan yüksək səsli məzmunu dinləyirsiniz.\n\nBu yüksək səslə dinləməyə davam etmək eşitmə qabiliyyətinizi həmişəlik zədələyəcək."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Əlçatımlılıq Qısayolu istifadə edilsin?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Qısayol aktiv olduqda, hər iki səs düyməsinə 3 saniyə basıb saxlamaqla əlçatımlılıq funksiyası başladılacaq."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Əlçatımlılıq funksiyaları üçün qısayol aktiv edilsin?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Qısayolu Deaktiv edin"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Qısayol İstifadə edin"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Rəng İnversiyası"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Rəng korreksiyası"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Birəlli rejim"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Əlavə tündləşmə"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Səs səviyyəsi düymələrinə basıb saxlayın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktiv edildi."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Kompanyon tətbiqinə kompanyon mesajlarını digər cihazlara çatdırmaq icazəsi verir."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Ön fon xidmətlərini arxa fondan başlatmaq"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Kompanyon tətbiqinə ön fon xidmətlərini arxa fondan başlatmaq icazəsi verir."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon əlçatandır"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon blok edilib"</string>
</resources>
diff --git a/core/res/res/values-b+sr+Latn-television/strings.xml b/core/res/res/values-b+sr+Latn-television/strings.xml
index 8643593..df5d8ea 100644
--- a/core/res/res/values-b+sr+Latn-television/strings.xml
+++ b/core/res/res/values-b+sr+Latn-television/strings.xml
@@ -17,6 +17,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="7002619958660406548">"Микрофон је блокиран"</string>
- <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="2131954635322568179">"Камера је блокирана"</string>
+ <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="7002619958660406548">"Mikrofon je blokiran"</string>
+ <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="2131954635322568179">"Kamera je blokirana"</string>
</resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 562ffec..d849bb0 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -22,844 +22,844 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="byteShort" msgid="202579285008794431">"B"</string>
<string name="fileSizeSuffix" msgid="4233671691980131257">"<xliff:g id="NUMBER">%1$s</xliff:g> <xliff:g id="UNIT">%2$s</xliff:g>"</string>
- <string name="untitled" msgid="3381766946944136678">"<Без имена>"</string>
- <string name="emptyPhoneNumber" msgid="5812172618020360048">"(Нема броја телефона)"</string>
- <string name="unknownName" msgid="7078697621109055330">"Непознато"</string>
- <string name="defaultVoiceMailAlphaTag" msgid="2190754495304236490">"Гласовна пошта"</string>
+ <string name="untitled" msgid="3381766946944136678">"<Bez imena>"</string>
+ <string name="emptyPhoneNumber" msgid="5812172618020360048">"(Nema broja telefona)"</string>
+ <string name="unknownName" msgid="7078697621109055330">"Nepoznato"</string>
+ <string name="defaultVoiceMailAlphaTag" msgid="2190754495304236490">"Glasovna pošta"</string>
<string name="defaultMsisdnAlphaTag" msgid="2285034592902077488">"MSISDN1"</string>
- <string name="mmiError" msgid="2862759606579822246">"Проблеми са везом или неважећи MMI кôд."</string>
- <string name="mmiErrorNotSupported" msgid="5001803469335286099">"Функција није подржана."</string>
- <string name="mmiFdnError" msgid="3975490266767565852">"Рад је ограничен само на бројеве фиксног бирања."</string>
- <string name="mmiErrorWhileRoaming" msgid="1204173664713870114">"Не можете да промените подешавања преусмеравања позива са телефона док сте у ромингу."</string>
- <string name="serviceEnabled" msgid="7549025003394765639">"Услуга је омогућена."</string>
- <string name="serviceEnabledFor" msgid="1463104778656711613">"Услуга је омогућена за:"</string>
- <string name="serviceDisabled" msgid="641878791205871379">"Услуга је онемогућена."</string>
- <string name="serviceRegistered" msgid="3856192211729577482">"Регистрација је успела."</string>
- <string name="serviceErased" msgid="997354043770513494">"Брисање је довршено."</string>
- <string name="passwordIncorrect" msgid="917087532676155877">"Неисправна лозинка."</string>
- <string name="mmiComplete" msgid="6341884570892520140">"MMI кôд је извршен."</string>
- <string name="badPin" msgid="888372071306274355">"Стари PIN који сте унели није тачан."</string>
- <string name="badPuk" msgid="4232069163733147376">"PUK који сте унели није тачан."</string>
- <string name="mismatchPin" msgid="2929611853228707473">"PIN кодови које сте унели се не подударају."</string>
- <string name="invalidPin" msgid="7542498253319440408">"Откуцајте PIN који има од 4 до 8 бројева."</string>
- <string name="invalidPuk" msgid="8831151490931907083">"Унесите PUK који се састоји од 8 цифара или више."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
- <string name="enablePin" msgid="2543771964137091212">"Није успело. Омогућите закључавање SIM/RUIM картице."</string>
+ <string name="mmiError" msgid="2862759606579822246">"Problemi sa vezom ili nevažeći MMI kôd."</string>
+ <string name="mmiErrorNotSupported" msgid="5001803469335286099">"Funkcija nije podržana."</string>
+ <string name="mmiFdnError" msgid="3975490266767565852">"Rad je ograničen samo na brojeve fiksnog biranja."</string>
+ <string name="mmiErrorWhileRoaming" msgid="1204173664713870114">"Ne možete da promenite podešavanja preusmeravanja poziva sa telefona dok ste u romingu."</string>
+ <string name="serviceEnabled" msgid="7549025003394765639">"Usluga je omogućena."</string>
+ <string name="serviceEnabledFor" msgid="1463104778656711613">"Usluga je omogućena za:"</string>
+ <string name="serviceDisabled" msgid="641878791205871379">"Usluga je onemogućena."</string>
+ <string name="serviceRegistered" msgid="3856192211729577482">"Registracija je uspela."</string>
+ <string name="serviceErased" msgid="997354043770513494">"Brisanje je dovršeno."</string>
+ <string name="passwordIncorrect" msgid="917087532676155877">"Neispravna lozinka."</string>
+ <string name="mmiComplete" msgid="6341884570892520140">"MMI kôd je izvršen."</string>
+ <string name="badPin" msgid="888372071306274355">"Stari PIN koji ste uneli nije tačan."</string>
+ <string name="badPuk" msgid="4232069163733147376">"PUK koji ste uneli nije tačan."</string>
+ <string name="mismatchPin" msgid="2929611853228707473">"PIN kodovi koje ste uneli se ne podudaraju."</string>
+ <string name="invalidPin" msgid="7542498253319440408">"Otkucajte PIN koji ima od 4 do 8 brojeva."</string>
+ <string name="invalidPuk" msgid="8831151490931907083">"Unesite PUK koji se sastoji od 8 cifara ili više."</string>
+ <string name="needPuk" msgid="3503414069503752211">"SIM je zaključan PUK-om. Unesite PUK da biste ga otključali."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Unesite PUK2 da biste odblokirali SIM."</string>
+ <string name="enablePin" msgid="2543771964137091212">"Nije uspelo. Omogućite zaključavanje SIM/RUIM kartice."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
- <item quantity="one">Имате још <xliff:g id="NUMBER_1">%d</xliff:g> покушај пре него што се SIM картица закључа.</item>
- <item quantity="few">Имате још <xliff:g id="NUMBER_1">%d</xliff:g> покушаја пре него што се SIM картица закључа.</item>
- <item quantity="other">Имате још <xliff:g id="NUMBER_1">%d</xliff:g> покушаја пре него што се SIM картица закључа.</item>
+ <item quantity="one">Imate još <xliff:g id="NUMBER_1">%d</xliff:g> pokušaj pre nego što se SIM kartica zaključa.</item>
+ <item quantity="few">Imate još <xliff:g id="NUMBER_1">%d</xliff:g> pokušaja pre nego što se SIM kartica zaključa.</item>
+ <item quantity="other">Imate još <xliff:g id="NUMBER_1">%d</xliff:g> pokušaja pre nego što se SIM kartica zaključa.</item>
</plurals>
<string name="imei" msgid="2157082351232630390">"IMEI"</string>
<string name="meid" msgid="3291227361605924674">"MEID"</string>
- <string name="ClipMmi" msgid="4110549342447630629">"Долазни ИД позиваоца"</string>
- <string name="ClirMmi" msgid="6752346475055446417">"Сакријте ИД одлазног позиваоца"</string>
- <string name="ColpMmi" msgid="4736462893284419302">"ИД повезане линије"</string>
- <string name="ColrMmi" msgid="5889782479745764278">"Ограничење ИД-а повезане линије"</string>
- <string name="CfMmi" msgid="8390012691099787178">"Преусмеравање позива"</string>
- <string name="CwMmi" msgid="3164609577675404761">"Позив на чекању"</string>
- <string name="BaMmi" msgid="7205614070543372167">"Ограничавање позива"</string>
- <string name="PwdMmi" msgid="3360991257288638281">"Промена лозинке"</string>
- <string name="PinMmi" msgid="7133542099618330959">"Промена PIN кода"</string>
- <string name="CnipMmi" msgid="4897531155968151160">"Позивање постојећег броја"</string>
- <string name="CnirMmi" msgid="885292039284503036">"Позивање броја је ограничено"</string>
- <string name="ThreeWCMmi" msgid="2436550866139999411">"Тросмерно позивање"</string>
- <string name="RuacMmi" msgid="1876047385848991110">"Одбијање непожељних позива"</string>
- <string name="CndMmi" msgid="185136449405618437">"Испорука броја за позивање"</string>
- <string name="DndMmi" msgid="8797375819689129800">"Не узнемиравај"</string>
- <string name="CLIRDefaultOnNextCallOn" msgid="4511621022859867988">"ИД позиваоца је подразумевано ограничен. Следећи позив: ограничен."</string>
- <string name="CLIRDefaultOnNextCallOff" msgid="5036749051007098105">"ИД позиваоца је подразумевано ограничен. Следећи позив: Није ограничен."</string>
- <string name="CLIRDefaultOffNextCallOn" msgid="1022781126694885017">"ИД позиваоца подразумевано није ограничен. Следећи позив: ограничен."</string>
- <string name="CLIRDefaultOffNextCallOff" msgid="2491576172356463443">"ИД позиваоца подразумевано није ограничен. Следећи позив: Није ограничен."</string>
- <string name="serviceNotProvisioned" msgid="8289333510236766193">"Услуга није добављена."</string>
- <string name="CLIRPermanent" msgid="166443681876381118">"Не можете да промените подешавање ИД-а корисника."</string>
- <string name="auto_data_switch_title" msgid="3286350716870518297">"Мобилни подаци су пребачени на оператера <xliff:g id="CARRIERDISPLAY">%s</xliff:g>"</string>
- <string name="auto_data_switch_content" msgid="803557715007110959">"Ово можете у сваком тренутку да промените у Подешавањима"</string>
- <string name="RestrictedOnDataTitle" msgid="1500576417268169774">"Нема услуге мобилних података"</string>
- <string name="RestrictedOnEmergencyTitle" msgid="2852916906106191866">"Хитни позиви нису доступни"</string>
- <string name="RestrictedOnNormalTitle" msgid="7009474589746551737">"Нема гласовне услуге"</string>
- <string name="RestrictedOnAllVoiceTitle" msgid="3982069078579103087">"Нема гласовне услуге ни хитних позива"</string>
- <string name="RestrictedStateContent" msgid="7693575344608618926">"Привремено искључио мобилни оператер"</string>
- <string name="RestrictedStateContentMsimTemplate" msgid="5228235722511044687">"Привремено је искључио мобилни оператер за SIM <xliff:g id="SIMNUMBER">%d</xliff:g>"</string>
- <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Повезивање са мобилном мрежом није успело"</string>
- <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Пробајте да промените жељену мрежу. Додирните да бисте променили."</string>
- <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Хитни позиви нису доступни"</string>
- <string name="EmergencyCallWarningSummary" msgid="1194185880092805497">"Не можете да упућујете хитне позиве преко Wi‑Fi-ја"</string>
- <string name="notification_channel_network_alert" msgid="4788053066033851841">"Обавештења"</string>
- <string name="notification_channel_call_forward" msgid="8230490317314272406">"Преусмеравање позива"</string>
- <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Режим за хитан повратни позив"</string>
- <string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Статус мобилних података"</string>
- <string name="notification_channel_sms" msgid="1243384981025535724">"SMS-ови"</string>
- <string name="notification_channel_voice_mail" msgid="8457433203106654172">"Поруке говорне поште"</string>
- <string name="notification_channel_wfc" msgid="9048240466765169038">"Позивање преко WiFi мреже"</string>
- <string name="notification_channel_sim" msgid="5098802350325677490">"Статус SIM-а"</string>
- <string name="notification_channel_sim_high_prio" msgid="642361929452850928">"Обавештења SIM картице са статусом „висок приоритет“"</string>
- <string name="peerTtyModeFull" msgid="337553730440832160">"Корисник захтева ПОТПУН режим TTY"</string>
- <string name="peerTtyModeHco" msgid="5626377160840915617">"Корисник захтева ПРЕНОС ЗВУКА за режим TTY"</string>
- <string name="peerTtyModeVco" msgid="572208600818270944">"Корисник захтева ПРЕНОС ГЛАСА за режим TTY"</string>
- <string name="peerTtyModeOff" msgid="2420380956369226583">"Корисник захтева ИСКЉУЧЕН режим TTY"</string>
+ <string name="ClipMmi" msgid="4110549342447630629">"Dolazni ID pozivaoca"</string>
+ <string name="ClirMmi" msgid="6752346475055446417">"Sakrijte ID odlaznog pozivaoca"</string>
+ <string name="ColpMmi" msgid="4736462893284419302">"ID povezane linije"</string>
+ <string name="ColrMmi" msgid="5889782479745764278">"Ograničenje ID-a povezane linije"</string>
+ <string name="CfMmi" msgid="8390012691099787178">"Preusmeravanje poziva"</string>
+ <string name="CwMmi" msgid="3164609577675404761">"Poziv na čekanju"</string>
+ <string name="BaMmi" msgid="7205614070543372167">"Ograničavanje poziva"</string>
+ <string name="PwdMmi" msgid="3360991257288638281">"Promena lozinke"</string>
+ <string name="PinMmi" msgid="7133542099618330959">"Promena PIN koda"</string>
+ <string name="CnipMmi" msgid="4897531155968151160">"Pozivanje postojećeg broja"</string>
+ <string name="CnirMmi" msgid="885292039284503036">"Pozivanje broja je ograničeno"</string>
+ <string name="ThreeWCMmi" msgid="2436550866139999411">"Trosmerno pozivanje"</string>
+ <string name="RuacMmi" msgid="1876047385848991110">"Odbijanje nepoželjnih poziva"</string>
+ <string name="CndMmi" msgid="185136449405618437">"Isporuka broja za pozivanje"</string>
+ <string name="DndMmi" msgid="8797375819689129800">"Ne uznemiravaj"</string>
+ <string name="CLIRDefaultOnNextCallOn" msgid="4511621022859867988">"ID pozivaoca je podrazumevano ograničen. Sledeći poziv: ograničen."</string>
+ <string name="CLIRDefaultOnNextCallOff" msgid="5036749051007098105">"ID pozivaoca je podrazumevano ograničen. Sledeći poziv: Nije ograničen."</string>
+ <string name="CLIRDefaultOffNextCallOn" msgid="1022781126694885017">"ID pozivaoca podrazumevano nije ograničen. Sledeći poziv: ograničen."</string>
+ <string name="CLIRDefaultOffNextCallOff" msgid="2491576172356463443">"ID pozivaoca podrazumevano nije ograničen. Sledeći poziv: Nije ograničen."</string>
+ <string name="serviceNotProvisioned" msgid="8289333510236766193">"Usluga nije dobavljena."</string>
+ <string name="CLIRPermanent" msgid="166443681876381118">"Ne možete da promenite podešavanje ID-a korisnika."</string>
+ <string name="auto_data_switch_title" msgid="3286350716870518297">"Mobilni podaci su prebačeni na operatera <xliff:g id="CARRIERDISPLAY">%s</xliff:g>"</string>
+ <string name="auto_data_switch_content" msgid="803557715007110959">"Ovo možete u svakom trenutku da promenite u Podešavanjima"</string>
+ <string name="RestrictedOnDataTitle" msgid="1500576417268169774">"Nema usluge mobilnih podataka"</string>
+ <string name="RestrictedOnEmergencyTitle" msgid="2852916906106191866">"Hitni pozivi nisu dostupni"</string>
+ <string name="RestrictedOnNormalTitle" msgid="7009474589746551737">"Nema glasovne usluge"</string>
+ <string name="RestrictedOnAllVoiceTitle" msgid="3982069078579103087">"Nema glasovne usluge ni hitnih poziva"</string>
+ <string name="RestrictedStateContent" msgid="7693575344608618926">"Privremeno isključio mobilni operater"</string>
+ <string name="RestrictedStateContentMsimTemplate" msgid="5228235722511044687">"Privremeno je isključio mobilni operater za SIM <xliff:g id="SIMNUMBER">%d</xliff:g>"</string>
+ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Povezivanje sa mobilnom mrežom nije uspelo"</string>
+ <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Probajte da promenite željenu mrežu. Dodirnite da biste promenili."</string>
+ <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Hitni pozivi nisu dostupni"</string>
+ <string name="EmergencyCallWarningSummary" msgid="1194185880092805497">"Ne možete da upućujete hitne pozive preko Wi‑Fi-ja"</string>
+ <string name="notification_channel_network_alert" msgid="4788053066033851841">"Obaveštenja"</string>
+ <string name="notification_channel_call_forward" msgid="8230490317314272406">"Preusmeravanje poziva"</string>
+ <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Režim za hitan povratni poziv"</string>
+ <string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Status mobilnih podataka"</string>
+ <string name="notification_channel_sms" msgid="1243384981025535724">"SMS-ovi"</string>
+ <string name="notification_channel_voice_mail" msgid="8457433203106654172">"Poruke govorne pošte"</string>
+ <string name="notification_channel_wfc" msgid="9048240466765169038">"Pozivanje preko WiFi mreže"</string>
+ <string name="notification_channel_sim" msgid="5098802350325677490">"Status SIM-a"</string>
+ <string name="notification_channel_sim_high_prio" msgid="642361929452850928">"Obaveštenja SIM kartice sa statusom „visok prioritet“"</string>
+ <string name="peerTtyModeFull" msgid="337553730440832160">"Korisnik zahteva POTPUN režim TTY"</string>
+ <string name="peerTtyModeHco" msgid="5626377160840915617">"Korisnik zahteva PRENOS ZVUKA za režim TTY"</string>
+ <string name="peerTtyModeVco" msgid="572208600818270944">"Korisnik zahteva PRENOS GLASA za režim TTY"</string>
+ <string name="peerTtyModeOff" msgid="2420380956369226583">"Korisnik zahteva ISKLJUČEN režim TTY"</string>
<string name="serviceClassVoice" msgid="2065556932043454987">"Voice"</string>
- <string name="serviceClassData" msgid="4148080018967300248">"Подаци"</string>
- <string name="serviceClassFAX" msgid="2561653371698904118">"ФАКС"</string>
+ <string name="serviceClassData" msgid="4148080018967300248">"Podaci"</string>
+ <string name="serviceClassFAX" msgid="2561653371698904118">"FAKS"</string>
<string name="serviceClassSMS" msgid="1547664561704509004">"SMS"</string>
- <string name="serviceClassDataAsync" msgid="2029856900898545984">"Асинхрони подаци"</string>
- <string name="serviceClassDataSync" msgid="7895071363569133704">"Синхронизовано"</string>
- <string name="serviceClassPacket" msgid="1430642951399303804">"Пакет"</string>
- <string name="serviceClassPAD" msgid="6850244583416306321">"ПОДЛОГА"</string>
- <string name="roamingText0" msgid="7793257871609854208">"Индикатор роминга је укључен"</string>
- <string name="roamingText1" msgid="5073028598334616445">"Индикатор роминга је искључен"</string>
- <string name="roamingText2" msgid="2834048284153110598">"Треперење индикатора роминга"</string>
- <string name="roamingText3" msgid="831690234035748988">"Изван комшилука"</string>
- <string name="roamingText4" msgid="2171252529065590728">"Изван зграде"</string>
- <string name="roamingText5" msgid="4294671587635796641">"Роминг – жељени систем"</string>
- <string name="roamingText6" msgid="5536156746637992029">"Роминг – доступни систем"</string>
- <string name="roamingText7" msgid="1783303085512907706">"Роминг – партнер"</string>
- <string name="roamingText8" msgid="7774800704373721973">"Роминг – премијум партнер"</string>
- <string name="roamingText9" msgid="1933460020190244004">"Роминг – потпуно функционисање услуге"</string>
- <string name="roamingText10" msgid="7434767033595769499">"Роминг – делимично функционисање услуге"</string>
- <string name="roamingText11" msgid="5245687407203281407">"Банер роминга је укључен"</string>
- <string name="roamingText12" msgid="673537506362152640">"Банер роминга је искључен"</string>
- <string name="roamingTextSearching" msgid="5323235489657753486">"Претраживање услуге"</string>
- <string name="wfcRegErrorTitle" msgid="3193072971584858020">"Подешавање позивања преко WiFi-а није успело"</string>
+ <string name="serviceClassDataAsync" msgid="2029856900898545984">"Asinhroni podaci"</string>
+ <string name="serviceClassDataSync" msgid="7895071363569133704">"Sinhronizovano"</string>
+ <string name="serviceClassPacket" msgid="1430642951399303804">"Paket"</string>
+ <string name="serviceClassPAD" msgid="6850244583416306321">"PODLOGA"</string>
+ <string name="roamingText0" msgid="7793257871609854208">"Indikator rominga je uključen"</string>
+ <string name="roamingText1" msgid="5073028598334616445">"Indikator rominga je isključen"</string>
+ <string name="roamingText2" msgid="2834048284153110598">"Treperenje indikatora rominga"</string>
+ <string name="roamingText3" msgid="831690234035748988">"Izvan komšiluka"</string>
+ <string name="roamingText4" msgid="2171252529065590728">"Izvan zgrade"</string>
+ <string name="roamingText5" msgid="4294671587635796641">"Roming – željeni sistem"</string>
+ <string name="roamingText6" msgid="5536156746637992029">"Roming – dostupni sistem"</string>
+ <string name="roamingText7" msgid="1783303085512907706">"Roming – partner"</string>
+ <string name="roamingText8" msgid="7774800704373721973">"Roming – premijum partner"</string>
+ <string name="roamingText9" msgid="1933460020190244004">"Roming – potpuno funkcionisanje usluge"</string>
+ <string name="roamingText10" msgid="7434767033595769499">"Roming – delimično funkcionisanje usluge"</string>
+ <string name="roamingText11" msgid="5245687407203281407">"Baner rominga je uključen"</string>
+ <string name="roamingText12" msgid="673537506362152640">"Baner rominga je isključen"</string>
+ <string name="roamingTextSearching" msgid="5323235489657753486">"Pretraživanje usluge"</string>
+ <string name="wfcRegErrorTitle" msgid="3193072971584858020">"Podešavanje pozivanja preko WiFi-a nije uspelo"</string>
<string-array name="wfcOperatorErrorAlertMessages">
- <item msgid="468830943567116703">"Да бисте упућивали позиве и слали поруке преко WiFi-а, прво затражите од мобилног оператера да вам омогући ову услугу. Затим у Подешавањима поново укључите Позивање преко WiFi-а. (кôд грешке: <xliff:g id="CODE">%1$s</xliff:g>)"</item>
+ <item msgid="468830943567116703">"Da biste upućivali pozive i slali poruke preko WiFi-a, prvo zatražite od mobilnog operatera da vam omogući ovu uslugu. Zatim u Podešavanjima ponovo uključite Pozivanje preko WiFi-a. (kôd greške: <xliff:g id="CODE">%1$s</xliff:g>)"</item>
</string-array>
<string-array name="wfcOperatorErrorNotificationMessages">
- <item msgid="4795145070505729156">"Проблем у вези са регистровањем позивања преко Wi‑Fi-ја код мобилног оператера: <xliff:g id="CODE">%1$s</xliff:g>"</item>
+ <item msgid="4795145070505729156">"Problem u vezi sa registrovanjem pozivanja preko Wi‑Fi-ja kod mobilnog operatera: <xliff:g id="CODE">%1$s</xliff:g>"</item>
</string-array>
<!-- no translation found for wfcSpnFormat_spn (2982505428519096311) -->
<skip />
- <string name="wfcSpnFormat_spn_wifi_calling" msgid="3165949348000906194">"<xliff:g id="SPN">%s</xliff:g> позивање преко WiFi-а"</string>
- <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="3836827895369365298">"<xliff:g id="SPN">%s</xliff:g> – позивање преко WiFi-а"</string>
- <string name="wfcSpnFormat_wlan_call" msgid="4895315549916165700">"WLAN позив"</string>
- <string name="wfcSpnFormat_spn_wlan_call" msgid="255919245825481510">"<xliff:g id="SPN">%s</xliff:g> WLAN позив"</string>
+ <string name="wfcSpnFormat_spn_wifi_calling" msgid="3165949348000906194">"<xliff:g id="SPN">%s</xliff:g> pozivanje preko WiFi-a"</string>
+ <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="3836827895369365298">"<xliff:g id="SPN">%s</xliff:g> – pozivanje preko WiFi-a"</string>
+ <string name="wfcSpnFormat_wlan_call" msgid="4895315549916165700">"WLAN poziv"</string>
+ <string name="wfcSpnFormat_spn_wlan_call" msgid="255919245825481510">"<xliff:g id="SPN">%s</xliff:g> WLAN poziv"</string>
<string name="wfcSpnFormat_spn_wifi" msgid="7232899594327126970">"<xliff:g id="SPN">%s</xliff:g> WiFi"</string>
- <string name="wfcSpnFormat_wifi_calling_bar_spn" msgid="8383917598312067365">"Позивање преко WiFi-а | <xliff:g id="SPN">%s</xliff:g>"</string>
+ <string name="wfcSpnFormat_wifi_calling_bar_spn" msgid="8383917598312067365">"Pozivanje preko WiFi-a | <xliff:g id="SPN">%s</xliff:g>"</string>
<string name="wfcSpnFormat_spn_vowifi" msgid="6865214948822061486">"<xliff:g id="SPN">%s</xliff:g> VoWifi"</string>
- <string name="wfcSpnFormat_wifi_calling" msgid="6178935388378661755">"Позивање преко WiFi-а"</string>
+ <string name="wfcSpnFormat_wifi_calling" msgid="6178935388378661755">"Pozivanje preko WiFi-a"</string>
<string name="wfcSpnFormat_wifi" msgid="1376356951297043426">"WiFi"</string>
- <string name="wfcSpnFormat_wifi_calling_wo_hyphen" msgid="7178561009225028264">"Позивање преко WiFi-а"</string>
+ <string name="wfcSpnFormat_wifi_calling_wo_hyphen" msgid="7178561009225028264">"Pozivanje preko WiFi-a"</string>
<string name="wfcSpnFormat_vowifi" msgid="8371335230890725606">"VoWifi"</string>
- <string name="wifi_calling_off_summary" msgid="5626710010766902560">"Искључено"</string>
- <string name="wfc_mode_wifi_preferred_summary" msgid="1035175836270943089">"Позивање преко WiFi-а"</string>
- <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"Позив преко мобилне мреже"</string>
- <string name="wfc_mode_wifi_only_summary" msgid="104951993894678665">"Само WiFi"</string>
+ <string name="wifi_calling_off_summary" msgid="5626710010766902560">"Isključeno"</string>
+ <string name="wfc_mode_wifi_preferred_summary" msgid="1035175836270943089">"Pozivanje preko WiFi-a"</string>
+ <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"Poziv preko mobilne mreže"</string>
+ <string name="wfc_mode_wifi_only_summary" msgid="104951993894678665">"Samo WiFi"</string>
<!-- no translation found for crossSimFormat_spn (9125246077491634262) -->
<skip />
- <string name="crossSimFormat_spn_cross_sim_calling" msgid="5620807020002879057">"<xliff:g id="SPN">%s</xliff:g> резервни начин за позивање"</string>
- <string name="cfTemplateNotForwarded" msgid="862202427794270501">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Није прослеђено"</string>
+ <string name="crossSimFormat_spn_cross_sim_calling" msgid="5620807020002879057">"<xliff:g id="SPN">%s</xliff:g> rezervni način za pozivanje"</string>
+ <string name="cfTemplateNotForwarded" msgid="862202427794270501">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Nije prosleđeno"</string>
<string name="cfTemplateForwarded" msgid="9132506315842157860">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string>
- <string name="cfTemplateForwardedTime" msgid="735042369233323609">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> након <xliff:g id="TIME_DELAY">{2}</xliff:g> секунде/и"</string>
- <string name="cfTemplateRegistered" msgid="5619930473441550596">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Није прослеђено"</string>
- <string name="cfTemplateRegisteredTime" msgid="5222794399642525045">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Није прослеђено"</string>
- <string name="fcComplete" msgid="1080909484660507044">"Кôд функције је извршен."</string>
- <string name="fcError" msgid="5325116502080221346">"Проблеми са везом или неважећи кôд функције."</string>
- <string name="httpErrorOk" msgid="6206751415788256357">"Потврди"</string>
- <string name="httpError" msgid="3406003584150566720">"Дошло је до грешке на мрежи."</string>
- <string name="httpErrorLookup" msgid="3099834738227549349">"Није могуће пронаћи URL адресу"</string>
- <string name="httpErrorUnsupportedAuthScheme" msgid="3976195595501606787">"Шема потврда аутентичности сајта није подржана."</string>
- <string name="httpErrorAuth" msgid="469553140922938968">"Није могуће потврдити аутентичност."</string>
- <string name="httpErrorProxyAuth" msgid="7229662162030113406">"Потврда идентитета преко прокси сервера није успела."</string>
- <string name="httpErrorConnect" msgid="3295081579893205617">"Није могуће повезати се са сервером."</string>
- <string name="httpErrorIO" msgid="3860318696166314490">"Није могуће комуницирати са сервером. Пробајте поново касније."</string>
- <string name="httpErrorTimeout" msgid="7446272815190334204">"Веза са сервером је истекла."</string>
- <string name="httpErrorRedirectLoop" msgid="8455757777509512098">"Страница садржи превише веза за преусмеравање са сервера."</string>
- <string name="httpErrorUnsupportedScheme" msgid="2664108769858966374">"Протокол није подржан."</string>
- <string name="httpErrorFailedSslHandshake" msgid="546319061228876290">"Није могуће успоставити безбедну везу."</string>
- <string name="httpErrorBadUrl" msgid="754447723314832538">"Страницу није могуће отворити зато што је URL адреса неважећа."</string>
- <string name="httpErrorFile" msgid="3400658466057744084">"Није могуће приступити датотеци."</string>
- <string name="httpErrorFileNotFound" msgid="5191433324871147386">"Није могуће пронаћи тражену датотеку."</string>
- <string name="httpErrorTooManyRequests" msgid="2149677715552037198">"Превише захтева се обрађује. Пробајте поново касније."</string>
- <string name="notification_title" msgid="5783748077084481121">"Грешка при пријављивању за <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
- <string name="contentServiceSync" msgid="2341041749565687871">"Синхронизација"</string>
- <string name="contentServiceSyncNotificationTitle" msgid="5766411446676388623">"Синхронизација није успела"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="4562226280528716090">"Превише покушаја брисања садржаја <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
- <string name="low_memory" product="tablet" msgid="5557552311566179924">"Меморија таблета је пуна! Избришите неке датотеке да бисте ослободили простор."</string>
- <string name="low_memory" product="watch" msgid="3479447988234030194">"Меморија сата је пуна. Избришите неке датотеке да бисте ослободили простор."</string>
- <string name="low_memory" product="tv" msgid="6663680413790323318">"Меморијски простор на Android TV уређају је пун. Избришите неке датотеке да бисте ослободили простор."</string>
- <string name="low_memory" product="default" msgid="2539532364144025569">"Меморија телефона је пуна! Избришите неке датотеке да бисте ослободили простор."</string>
- <string name="ssl_ca_cert_warning" msgid="7233573909730048571">"{count,plural, =1{Инсталиран је ауторитет за издавање сертификата}one{Инсталирани су ауторитети за издавање сертификата}few{Инсталирани су ауторитети за издавање сертификата}other{Инсталирани су ауторитети за издавање сертификата}}"</string>
- <string name="ssl_ca_cert_noti_by_unknown" msgid="4961102218216815242">"Од стране непознате треће стране"</string>
- <string name="ssl_ca_cert_noti_by_administrator" msgid="4564941950768783879">"Од стране администратора пословног профила"</string>
- <string name="ssl_ca_cert_noti_managed" msgid="217337232273211674">"Од стране <xliff:g id="MANAGING_DOMAIN">%s</xliff:g>"</string>
- <string name="work_profile_deleted" msgid="5891181538182009328">"Пословни профил је избрисан"</string>
- <string name="work_profile_deleted_details" msgid="3773706828364418016">"Апликација за администраторе на пословном профилу недостаје или је оштећена. Због тога су пословни профил и повезани подаци избрисани. Обратите се администратору за помоћ."</string>
- <string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Пословни профил више није доступан на овом уређају"</string>
- <string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Превише покушаја уноса лозинке"</string>
- <string name="device_ownership_relinquished" msgid="4080886992183195724">"Администратор је уступио уређај за личну употребу"</string>
- <string name="network_logging_notification_title" msgid="554983187553845004">"Уређајем се управља"</string>
- <string name="network_logging_notification_text" msgid="1327373071132562512">"Организација управља овим уређајем и може да надгледа мрежни саобраћај. Додирните за детаље."</string>
- <string name="location_changed_notification_title" msgid="3620158742816699316">"Апликације могу да приступају вашој локацији"</string>
- <string name="location_changed_notification_text" msgid="7158423339982706912">"Обратите се ИТ администратору да бисте сазнали више"</string>
- <string name="geofencing_service" msgid="3826902410740315456">"Услуга виртуелног географског опсега"</string>
- <string name="country_detector" msgid="7023275114706088854">"Детектор земље"</string>
- <string name="location_service" msgid="2439187616018455546">"Услуга локације"</string>
- <string name="gnss_service" msgid="8907781262179951385">"GNSS услуга"</string>
- <string name="sensor_notification_service" msgid="7474531979178682676">"Услуга обавештења сензора"</string>
- <string name="twilight_service" msgid="8964898045693187224">"Услуга Сумрак"</string>
- <string name="gnss_time_update_service" msgid="9039489496037616095">"GNSS услуга за ажурирање времена"</string>
- <string name="device_policy_manager_service" msgid="5085762851388850332">"Услуга Менаџер смерница за уређаје"</string>
- <string name="music_recognition_manager_service" msgid="7481956037950276359">"Услуга Менаџер препознавања музике"</string>
- <string name="factory_reset_warning" msgid="6858705527798047809">"Уређај ће бити обрисан"</string>
- <string name="factory_reset_message" msgid="2657049595153992213">"Не можете да користите ову апликацију за администраторе. Уређај ће сада бити обрисан.\n\nАко имате питања, контактирајте администратора организације."</string>
- <string name="printing_disabled_by" msgid="3517499806528864633">"Штампање је онемогућила апликација <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
- <string name="personal_apps_suspension_title" msgid="7561416677884286600">"Укључите пословни профил"</string>
- <string name="personal_apps_suspension_text" msgid="6115455688932935597">"Личне апликације су блокиране док не укључите пословни профил"</string>
- <string name="personal_apps_suspension_soon_text" msgid="8123898693479590">"Личне апликације ће бити блокиране: <xliff:g id="DATE">%1$s</xliff:g> у <xliff:g id="TIME">%2$s</xliff:g>. ИТ администратор не дозвољава да пословни профил буде искључен дуже од <xliff:g id="NUMBER">%3$d</xliff:g> дана."</string>
- <string name="personal_apps_suspended_turn_profile_on" msgid="2758012869627513689">"Укључи"</string>
- <string name="me" msgid="6207584824693813140">"Ја"</string>
- <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Опције за таблет"</string>
- <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опције Android TV-а"</string>
- <string name="power_dialog" product="default" msgid="1107775420270203046">"Опције телефона"</string>
- <string name="silent_mode" msgid="8796112363642579333">"Нечујни режим"</string>
- <string name="turn_on_radio" msgid="2961717788170634233">"Укључи бежични сигнал"</string>
- <string name="turn_off_radio" msgid="7222573978109933360">"Искључи бежични сигнал"</string>
- <string name="screen_lock" msgid="2072642720826409809">"Закључај екран"</string>
- <string name="power_off" msgid="4111692782492232778">"Угаси"</string>
- <string name="silent_mode_silent" msgid="5079789070221150912">"Звоно је искључено"</string>
- <string name="silent_mode_vibrate" msgid="8821830448369552678">"Вибрација звона"</string>
- <string name="silent_mode_ring" msgid="6039011004781526678">"Звоно је укључено"</string>
- <string name="reboot_to_update_title" msgid="2125818841916373708">"Android ажурирање система"</string>
- <string name="reboot_to_update_prepare" msgid="6978842143587422365">"Ажурирање се припрема…"</string>
- <string name="reboot_to_update_package" msgid="4644104795527534811">"Пакет ажурирања се обрађује..."</string>
- <string name="reboot_to_update_reboot" msgid="4474726009984452312">"Поново се покреће..."</string>
- <string name="reboot_to_reset_title" msgid="2226229680017882787">"Ресетовање на фабричка подешавања"</string>
- <string name="reboot_to_reset_message" msgid="3347690497972074356">"Поново се покреће..."</string>
- <string name="shutdown_progress" msgid="5017145516412657345">"Искључивање…"</string>
- <string name="shutdown_confirm" product="tablet" msgid="2872769463279602432">"Таблет ће се искључити."</string>
- <string name="shutdown_confirm" product="tv" msgid="7975942887313518330">"Android TV уређај ће се угасити."</string>
- <string name="shutdown_confirm" product="watch" msgid="2977299851200240146">"Сат ће се угасити."</string>
- <string name="shutdown_confirm" product="default" msgid="136816458966692315">"Телефон ће се искључити."</string>
- <string name="shutdown_confirm_question" msgid="796151167261608447">"Да ли желите да искључите телефон?"</string>
- <string name="reboot_safemode_title" msgid="5853949122655346734">"Рестартуј систем у безбедном режиму"</string>
- <string name="reboot_safemode_confirm" msgid="1658357874737219624">"Да ли желите да поново покренете систем у безбедном режиму? Ово ће онемогућити све инсталиране апликације независних произвођача. Оне ће бити враћене када поново покренете систем."</string>
- <string name="recent_tasks_title" msgid="8183172372995396653">"Недавно"</string>
- <string name="no_recent_tasks" msgid="9063946524312275906">"Нема недавних апликација."</string>
- <string name="global_actions" product="tablet" msgid="4412132498517933867">"Опције за таблет"</string>
- <string name="global_actions" product="tv" msgid="3871763739487450369">"Опције Android TV-а"</string>
- <string name="global_actions" product="default" msgid="6410072189971495460">"Опције телефона"</string>
- <string name="global_action_lock" msgid="6949357274257655383">"Закључај екран"</string>
- <string name="global_action_power_off" msgid="4404936470711393203">"Угаси"</string>
- <string name="global_action_power_options" msgid="1185286119330160073">"Напајање"</string>
- <string name="global_action_restart" msgid="4678451019561687074">"Рестартуј"</string>
- <string name="global_action_emergency" msgid="1387617624177105088">"Хитан позив"</string>
- <string name="global_action_bug_report" msgid="5127867163044170003">"Извештај о грешци"</string>
- <string name="global_action_logout" msgid="6093581310002476511">"Заврши сесију"</string>
- <string name="global_action_screenshot" msgid="2610053466156478564">"Снимак екрана"</string>
- <string name="bugreport_title" msgid="8549990811777373050">"Извештај о грешци"</string>
- <string name="bugreport_message" msgid="5212529146119624326">"Овим ће се прикупити информације о тренутном стању уређаја како би биле послате у поруци е-поште. Од започињања извештаја о грешци до тренутка за његово слање проћи ће неко време; будите стрпљиви."</string>
- <string name="bugreport_option_interactive_title" msgid="7968287837902871289">"Интерактив. извештај"</string>
- <string name="bugreport_option_interactive_summary" msgid="8493795476325339542">"Користите ово у већини случајева. То вам омогућава да пратите напредак извештаја, да уносите додатне детаље о проблему и да снимате снимке екрана. Вероватно ће изоставити неке мање коришћене одељке за које прављење извештаја дуго траје."</string>
- <string name="bugreport_option_full_title" msgid="7681035745950045690">"Комплетан извештај"</string>
- <string name="bugreport_option_full_summary" msgid="1975130009258435885">"Користите ову опцију ради минималних системских сметњи када уређај не реагује, преспор је или су вам потребни сви одељци извештаја. Не дозвољава вам унос додатних детаља нити снимање додатних снимака екрана."</string>
- <string name="bugreport_countdown" msgid="6418620521782120755">"{count,plural, =1{Направићемо снимак екрана ради извештаја о грешци за # секунду.}one{Направићемо снимак екрана ради извештаја о грешци за # секунду.}few{Направићемо снимак екрана ради извештаја о грешци за # секунде.}other{Направићемо снимак екрана ради извештаја о грешци за # секунди.}}"</string>
- <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Екран са извештајем о грешци је снимљен"</string>
- <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Снимање екрана са извештајем о грешци није успело"</string>
- <string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Нечујни режим"</string>
- <string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Звук је ИСКЉУЧЕН"</string>
- <string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Звук је УКЉУЧЕН"</string>
- <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"Режим рада у авиону"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"Режим рада у авиону је УКЉУЧЕН"</string>
- <string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"Режим рада у авиону је ИСКЉУЧЕН"</string>
- <string name="global_action_settings" msgid="4671878836947494217">"Подешавања"</string>
- <string name="global_action_assist" msgid="2517047220311505805">"Помоћ"</string>
- <string name="global_action_voice_assist" msgid="6655788068555086695">"Гласовна помоћ"</string>
- <string name="global_action_lockdown" msgid="2475471405907902963">"Закључавање"</string>
+ <string name="cfTemplateForwardedTime" msgid="735042369233323609">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g> nakon <xliff:g id="TIME_DELAY">{2}</xliff:g> sekunde/i"</string>
+ <string name="cfTemplateRegistered" msgid="5619930473441550596">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Nije prosleđeno"</string>
+ <string name="cfTemplateRegisteredTime" msgid="5222794399642525045">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: Nije prosleđeno"</string>
+ <string name="fcComplete" msgid="1080909484660507044">"Kôd funkcije je izvršen."</string>
+ <string name="fcError" msgid="5325116502080221346">"Problemi sa vezom ili nevažeći kôd funkcije."</string>
+ <string name="httpErrorOk" msgid="6206751415788256357">"Potvrdi"</string>
+ <string name="httpError" msgid="3406003584150566720">"Došlo je do greške na mreži."</string>
+ <string name="httpErrorLookup" msgid="3099834738227549349">"Nije moguće pronaći URL adresu"</string>
+ <string name="httpErrorUnsupportedAuthScheme" msgid="3976195595501606787">"Šema potvrda autentičnosti sajta nije podržana."</string>
+ <string name="httpErrorAuth" msgid="469553140922938968">"Nije moguće potvrditi autentičnost."</string>
+ <string name="httpErrorProxyAuth" msgid="7229662162030113406">"Potvrda identiteta preko proksi servera nije uspela."</string>
+ <string name="httpErrorConnect" msgid="3295081579893205617">"Nije moguće povezati se sa serverom."</string>
+ <string name="httpErrorIO" msgid="3860318696166314490">"Nije moguće komunicirati sa serverom. Probajte ponovo kasnije."</string>
+ <string name="httpErrorTimeout" msgid="7446272815190334204">"Veza sa serverom je istekla."</string>
+ <string name="httpErrorRedirectLoop" msgid="8455757777509512098">"Stranica sadrži previše veza za preusmeravanje sa servera."</string>
+ <string name="httpErrorUnsupportedScheme" msgid="2664108769858966374">"Protokol nije podržan."</string>
+ <string name="httpErrorFailedSslHandshake" msgid="546319061228876290">"Nije moguće uspostaviti bezbednu vezu."</string>
+ <string name="httpErrorBadUrl" msgid="754447723314832538">"Stranicu nije moguće otvoriti zato što je URL adresa nevažeća."</string>
+ <string name="httpErrorFile" msgid="3400658466057744084">"Nije moguće pristupiti datoteci."</string>
+ <string name="httpErrorFileNotFound" msgid="5191433324871147386">"Nije moguće pronaći traženu datoteku."</string>
+ <string name="httpErrorTooManyRequests" msgid="2149677715552037198">"Previše zahteva se obrađuje. Probajte ponovo kasnije."</string>
+ <string name="notification_title" msgid="5783748077084481121">"Greška pri prijavljivanju za <xliff:g id="ACCOUNT">%1$s</xliff:g>"</string>
+ <string name="contentServiceSync" msgid="2341041749565687871">"Sinhronizacija"</string>
+ <string name="contentServiceSyncNotificationTitle" msgid="5766411446676388623">"Sinhronizacija nije uspela"</string>
+ <string name="contentServiceTooManyDeletesNotificationDesc" msgid="4562226280528716090">"Previše pokušaja brisanja sadržaja <xliff:g id="CONTENT_TYPE">%s</xliff:g>."</string>
+ <string name="low_memory" product="tablet" msgid="5557552311566179924">"Memorija tableta je puna! Izbrišite neke datoteke da biste oslobodili prostor."</string>
+ <string name="low_memory" product="watch" msgid="3479447988234030194">"Memorija sata je puna. Izbrišite neke datoteke da biste oslobodili prostor."</string>
+ <string name="low_memory" product="tv" msgid="6663680413790323318">"Memorijski prostor na Android TV uređaju je pun. Izbrišite neke datoteke da biste oslobodili prostor."</string>
+ <string name="low_memory" product="default" msgid="2539532364144025569">"Memorija telefona je puna! Izbrišite neke datoteke da biste oslobodili prostor."</string>
+ <string name="ssl_ca_cert_warning" msgid="7233573909730048571">"{count,plural, =1{Instaliran je autoritet za izdavanje sertifikata}one{Instalirani su autoriteti za izdavanje sertifikata}few{Instalirani su autoriteti za izdavanje sertifikata}other{Instalirani su autoriteti za izdavanje sertifikata}}"</string>
+ <string name="ssl_ca_cert_noti_by_unknown" msgid="4961102218216815242">"Od strane nepoznate treće strane"</string>
+ <string name="ssl_ca_cert_noti_by_administrator" msgid="4564941950768783879">"Od strane administratora poslovnog profila"</string>
+ <string name="ssl_ca_cert_noti_managed" msgid="217337232273211674">"Od strane <xliff:g id="MANAGING_DOMAIN">%s</xliff:g>"</string>
+ <string name="work_profile_deleted" msgid="5891181538182009328">"Poslovni profil je izbrisan"</string>
+ <string name="work_profile_deleted_details" msgid="3773706828364418016">"Aplikacija za administratore na poslovnom profilu nedostaje ili je oštećena. Zbog toga su poslovni profil i povezani podaci izbrisani. Obratite se administratoru za pomoć."</string>
+ <string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Poslovni profil više nije dostupan na ovom uređaju"</string>
+ <string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Previše pokušaja unosa lozinke"</string>
+ <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator je ustupio uređaj za ličnu upotrebu"</string>
+ <string name="network_logging_notification_title" msgid="554983187553845004">"Uređajem se upravlja"</string>
+ <string name="network_logging_notification_text" msgid="1327373071132562512">"Organizacija upravlja ovim uređajem i može da nadgleda mrežni saobraćaj. Dodirnite za detalje."</string>
+ <string name="location_changed_notification_title" msgid="3620158742816699316">"Aplikacije mogu da pristupaju vašoj lokaciji"</string>
+ <string name="location_changed_notification_text" msgid="7158423339982706912">"Obratite se IT administratoru da biste saznali više"</string>
+ <string name="geofencing_service" msgid="3826902410740315456">"Usluga virtuelnog geografskog opsega"</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detektor zemlje"</string>
+ <string name="location_service" msgid="2439187616018455546">"Usluga lokacije"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS usluga"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Usluga obaveštenja senzora"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Usluga Sumrak"</string>
+ <string name="gnss_time_update_service" msgid="9039489496037616095">"GNSS usluga za ažuriranje vremena"</string>
+ <string name="device_policy_manager_service" msgid="5085762851388850332">"Usluga Menadžer smernica za uređaje"</string>
+ <string name="music_recognition_manager_service" msgid="7481956037950276359">"Usluga Menadžer prepoznavanja muzike"</string>
+ <string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti obrisan"</string>
+ <string name="factory_reset_message" msgid="2657049595153992213">"Ne možete da koristite ovu aplikaciju za administratore. Uređaj će sada biti obrisan.\n\nAko imate pitanja, kontaktirajte administratora organizacije."</string>
+ <string name="printing_disabled_by" msgid="3517499806528864633">"Štampanje je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
+ <string name="personal_apps_suspension_title" msgid="7561416677884286600">"Uključite poslovni profil"</string>
+ <string name="personal_apps_suspension_text" msgid="6115455688932935597">"Lične aplikacije su blokirane dok ne uključite poslovni profil"</string>
+ <string name="personal_apps_suspension_soon_text" msgid="8123898693479590">"Lične aplikacije će biti blokirane: <xliff:g id="DATE">%1$s</xliff:g> u <xliff:g id="TIME">%2$s</xliff:g>. IT administrator ne dozvoljava da poslovni profil bude isključen duže od <xliff:g id="NUMBER">%3$d</xliff:g> dana."</string>
+ <string name="personal_apps_suspended_turn_profile_on" msgid="2758012869627513689">"Uključi"</string>
+ <string name="me" msgid="6207584824693813140">"Ja"</string>
+ <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcije za tablet"</string>
+ <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcije Android TV-a"</string>
+ <string name="power_dialog" product="default" msgid="1107775420270203046">"Opcije telefona"</string>
+ <string name="silent_mode" msgid="8796112363642579333">"Nečujni režim"</string>
+ <string name="turn_on_radio" msgid="2961717788170634233">"Uključi bežični signal"</string>
+ <string name="turn_off_radio" msgid="7222573978109933360">"Isključi bežični signal"</string>
+ <string name="screen_lock" msgid="2072642720826409809">"Zaključaj ekran"</string>
+ <string name="power_off" msgid="4111692782492232778">"Ugasi"</string>
+ <string name="silent_mode_silent" msgid="5079789070221150912">"Zvono je isključeno"</string>
+ <string name="silent_mode_vibrate" msgid="8821830448369552678">"Vibracija zvona"</string>
+ <string name="silent_mode_ring" msgid="6039011004781526678">"Zvono je uključeno"</string>
+ <string name="reboot_to_update_title" msgid="2125818841916373708">"Android ažuriranje sistema"</string>
+ <string name="reboot_to_update_prepare" msgid="6978842143587422365">"Ažuriranje se priprema…"</string>
+ <string name="reboot_to_update_package" msgid="4644104795527534811">"Paket ažuriranja se obrađuje..."</string>
+ <string name="reboot_to_update_reboot" msgid="4474726009984452312">"Ponovo se pokreće..."</string>
+ <string name="reboot_to_reset_title" msgid="2226229680017882787">"Resetovanje na fabrička podešavanja"</string>
+ <string name="reboot_to_reset_message" msgid="3347690497972074356">"Ponovo se pokreće..."</string>
+ <string name="shutdown_progress" msgid="5017145516412657345">"Isključivanje…"</string>
+ <string name="shutdown_confirm" product="tablet" msgid="2872769463279602432">"Tablet će se isključiti."</string>
+ <string name="shutdown_confirm" product="tv" msgid="7975942887313518330">"Android TV uređaj će se ugasiti."</string>
+ <string name="shutdown_confirm" product="watch" msgid="2977299851200240146">"Sat će se ugasiti."</string>
+ <string name="shutdown_confirm" product="default" msgid="136816458966692315">"Telefon će se isključiti."</string>
+ <string name="shutdown_confirm_question" msgid="796151167261608447">"Da li želite da isključite telefon?"</string>
+ <string name="reboot_safemode_title" msgid="5853949122655346734">"Restartuj sistem u bezbednom režimu"</string>
+ <string name="reboot_safemode_confirm" msgid="1658357874737219624">"Da li želite da ponovo pokrenete sistem u bezbednom režimu? Ovo će onemogućiti sve instalirane aplikacije nezavisnih proizvođača. One će biti vraćene kada ponovo pokrenete sistem."</string>
+ <string name="recent_tasks_title" msgid="8183172372995396653">"Nedavno"</string>
+ <string name="no_recent_tasks" msgid="9063946524312275906">"Nema nedavnih aplikacija."</string>
+ <string name="global_actions" product="tablet" msgid="4412132498517933867">"Opcije za tablet"</string>
+ <string name="global_actions" product="tv" msgid="3871763739487450369">"Opcije Android TV-a"</string>
+ <string name="global_actions" product="default" msgid="6410072189971495460">"Opcije telefona"</string>
+ <string name="global_action_lock" msgid="6949357274257655383">"Zaključaj ekran"</string>
+ <string name="global_action_power_off" msgid="4404936470711393203">"Ugasi"</string>
+ <string name="global_action_power_options" msgid="1185286119330160073">"Napajanje"</string>
+ <string name="global_action_restart" msgid="4678451019561687074">"Restartuj"</string>
+ <string name="global_action_emergency" msgid="1387617624177105088">"Hitan poziv"</string>
+ <string name="global_action_bug_report" msgid="5127867163044170003">"Izveštaj o grešci"</string>
+ <string name="global_action_logout" msgid="6093581310002476511">"Završi sesiju"</string>
+ <string name="global_action_screenshot" msgid="2610053466156478564">"Snimak ekrana"</string>
+ <string name="bugreport_title" msgid="8549990811777373050">"Izveštaj o grešci"</string>
+ <string name="bugreport_message" msgid="5212529146119624326">"Ovim će se prikupiti informacije o trenutnom stanju uređaja kako bi bile poslate u poruci e-pošte. Od započinjanja izveštaja o grešci do trenutka za njegovo slanje proći će neko vreme; budite strpljivi."</string>
+ <string name="bugreport_option_interactive_title" msgid="7968287837902871289">"Interaktiv. izveštaj"</string>
+ <string name="bugreport_option_interactive_summary" msgid="8493795476325339542">"Koristite ovo u većini slučajeva. To vam omogućava da pratite napredak izveštaja, da unosite dodatne detalje o problemu i da snimate snimke ekrana. Verovatno će izostaviti neke manje korišćene odeljke za koje pravljenje izveštaja dugo traje."</string>
+ <string name="bugreport_option_full_title" msgid="7681035745950045690">"Kompletan izveštaj"</string>
+ <string name="bugreport_option_full_summary" msgid="1975130009258435885">"Koristite ovu opciju radi minimalnih sistemskih smetnji kada uređaj ne reaguje, prespor je ili su vam potrebni svi odeljci izveštaja. Ne dozvoljava vam unos dodatnih detalja niti snimanje dodatnih snimaka ekrana."</string>
+ <string name="bugreport_countdown" msgid="6418620521782120755">"{count,plural, =1{Napravićemo snimak ekrana radi izveštaja o grešci za # sekundu.}one{Napravićemo snimak ekrana radi izveštaja o grešci za # sekundu.}few{Napravićemo snimak ekrana radi izveštaja o grešci za # sekunde.}other{Napravićemo snimak ekrana radi izveštaja o grešci za # sekundi.}}"</string>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Ekran sa izveštajem o grešci je snimljen"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Snimanje ekrana sa izveštajem o grešci nije uspelo"</string>
+ <string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Nečujni režim"</string>
+ <string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Zvuk je ISKLJUČEN"</string>
+ <string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Zvuk je UKLJUČEN"</string>
+ <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"Režim rada u avionu"</string>
+ <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"Režim rada u avionu je UKLJUČEN"</string>
+ <string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"Režim rada u avionu je ISKLJUČEN"</string>
+ <string name="global_action_settings" msgid="4671878836947494217">"Podešavanja"</string>
+ <string name="global_action_assist" msgid="2517047220311505805">"Pomoć"</string>
+ <string name="global_action_voice_assist" msgid="6655788068555086695">"Glasovna pomoć"</string>
+ <string name="global_action_lockdown" msgid="2475471405907902963">"Zaključavanje"</string>
<string name="status_bar_notification_info_overflow" msgid="3330152558746563475">"999+"</string>
- <string name="notification_hidden_text" msgid="2835519769868187223">"Ново обавештење"</string>
- <string name="notification_channel_physical_keyboard" msgid="5417306456125988096">"Физичка тастатура"</string>
- <string name="notification_channel_security" msgid="8516754650348238057">"Безбедност"</string>
- <string name="notification_channel_car_mode" msgid="2123919247040988436">"Режим рада у аутомобилу"</string>
- <string name="notification_channel_account" msgid="6436294521740148173">"Статус налога"</string>
- <string name="notification_channel_developer" msgid="1691059964407549150">"Поруке за програмере"</string>
- <string name="notification_channel_developer_important" msgid="7197281908918789589">"Важне поруке програмера"</string>
- <string name="notification_channel_updates" msgid="7907863984825495278">"Ажурирања"</string>
- <string name="notification_channel_network_status" msgid="2127687368725272809">"Статус мреже"</string>
- <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Обавештења у вези са мрежом"</string>
- <string name="notification_channel_network_available" msgid="6083697929214165169">"Мрежа је доступна"</string>
- <string name="notification_channel_vpn" msgid="1628529026203808999">"Статус VPN-а"</string>
- <string name="notification_channel_device_admin" msgid="6384932669406095506">"Обавештења од ИТ администратора"</string>
- <string name="notification_channel_alerts" msgid="5070241039583668427">"Обавештења"</string>
- <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Режим демонстрације за малопродајне објекте"</string>
- <string name="notification_channel_usb" msgid="1528280969406244896">"USB веза"</string>
- <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Активна апликација"</string>
- <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Апликације које троше батерију"</string>
- <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Увећање"</string>
- <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Коришћење Приступачности"</string>
- <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> користи батерију"</string>
- <string name="foreground_service_apps_in_background" msgid="7340037176412387863">"Апликације (<xliff:g id="NUMBER">%1$d</xliff:g>) користе батерију"</string>
- <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"Додирните за детаље о батерији и потрошњи података"</string>
+ <string name="notification_hidden_text" msgid="2835519769868187223">"Novo obaveštenje"</string>
+ <string name="notification_channel_physical_keyboard" msgid="5417306456125988096">"Fizička tastatura"</string>
+ <string name="notification_channel_security" msgid="8516754650348238057">"Bezbednost"</string>
+ <string name="notification_channel_car_mode" msgid="2123919247040988436">"Režim rada u automobilu"</string>
+ <string name="notification_channel_account" msgid="6436294521740148173">"Status naloga"</string>
+ <string name="notification_channel_developer" msgid="1691059964407549150">"Poruke za programere"</string>
+ <string name="notification_channel_developer_important" msgid="7197281908918789589">"Važne poruke programera"</string>
+ <string name="notification_channel_updates" msgid="7907863984825495278">"Ažuriranja"</string>
+ <string name="notification_channel_network_status" msgid="2127687368725272809">"Status mreže"</string>
+ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Obaveštenja u vezi sa mrežom"</string>
+ <string name="notification_channel_network_available" msgid="6083697929214165169">"Mreža je dostupna"</string>
+ <string name="notification_channel_vpn" msgid="1628529026203808999">"Status VPN-a"</string>
+ <string name="notification_channel_device_admin" msgid="6384932669406095506">"Obaveštenja od IT administratora"</string>
+ <string name="notification_channel_alerts" msgid="5070241039583668427">"Obaveštenja"</string>
+ <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Režim demonstracije za maloprodajne objekte"</string>
+ <string name="notification_channel_usb" msgid="1528280969406244896">"USB veza"</string>
+ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aktivna aplikacija"</string>
+ <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikacije koje troše bateriju"</string>
+ <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Uvećanje"</string>
+ <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Korišćenje Pristupačnosti"</string>
+ <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> koristi bateriju"</string>
+ <string name="foreground_service_apps_in_background" msgid="7340037176412387863">"Aplikacije (<xliff:g id="NUMBER">%1$d</xliff:g>) koriste bateriju"</string>
+ <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"Dodirnite za detalje o bateriji i potrošnji podataka"</string>
<string name="foreground_service_multiple_separator" msgid="5002287361849863168">"<xliff:g id="LEFT_SIDE">%1$s</xliff:g>, <xliff:g id="RIGHT_SIDE">%2$s</xliff:g>"</string>
- <string name="safeMode" msgid="8974401416068943888">"Безбедни режим"</string>
- <string name="android_system_label" msgid="5974767339591067210">"Android систем"</string>
- <string name="user_owner_label" msgid="8628726904184471211">"Пређи на лични профил"</string>
- <string name="managed_profile_label" msgid="7316778766973512382">"Пређи на пословни профил"</string>
- <string name="permgrouplab_contacts" msgid="4254143639307316920">"Контакти"</string>
- <string name="permgroupdesc_contacts" msgid="9163927941244182567">"приступи контактима"</string>
- <string name="permgrouplab_location" msgid="1858277002233964394">"Локација"</string>
- <string name="permgroupdesc_location" msgid="1995955142118450685">"приступи локацији овог уређаја"</string>
- <string name="permgrouplab_calendar" msgid="6426860926123033230">"Календар"</string>
- <string name="permgroupdesc_calendar" msgid="6762751063361489379">"приступи календару"</string>
+ <string name="safeMode" msgid="8974401416068943888">"Bezbedni režim"</string>
+ <string name="android_system_label" msgid="5974767339591067210">"Android sistem"</string>
+ <string name="user_owner_label" msgid="8628726904184471211">"Pređi na lični profil"</string>
+ <string name="managed_profile_label" msgid="7316778766973512382">"Pređi na poslovni profil"</string>
+ <string name="permgrouplab_contacts" msgid="4254143639307316920">"Kontakti"</string>
+ <string name="permgroupdesc_contacts" msgid="9163927941244182567">"pristupi kontaktima"</string>
+ <string name="permgrouplab_location" msgid="1858277002233964394">"Lokacija"</string>
+ <string name="permgroupdesc_location" msgid="1995955142118450685">"pristupi lokaciji ovog uređaja"</string>
+ <string name="permgrouplab_calendar" msgid="6426860926123033230">"Kalendar"</string>
+ <string name="permgroupdesc_calendar" msgid="6762751063361489379">"pristupi kalendaru"</string>
<string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string>
- <string name="permgroupdesc_sms" msgid="5726462398070064542">"шаље и прегледа SMS поруке"</string>
- <string name="permgrouplab_storage" msgid="17339216290379241">"Фајлови"</string>
- <string name="permgroupdesc_storage" msgid="5378659041354582769">"приступ фајловима на уређају"</string>
- <string name="permgrouplab_readMediaAural" msgid="1858331312624942053">"Музика и звук"</string>
- <string name="permgroupdesc_readMediaAural" msgid="7565467343667089595">"приступ музици и аудио садржају на уређају"</string>
- <string name="permgrouplab_readMediaVisual" msgid="4724874717811908660">"Слике и видео снимци"</string>
- <string name="permgroupdesc_readMediaVisual" msgid="4080463241903508688">"приступ сликама и видео снимцима на уређају"</string>
- <string name="permgrouplab_microphone" msgid="2480597427667420076">"Микрофон"</string>
- <string name="permgroupdesc_microphone" msgid="1047786732792487722">"снима звук"</string>
- <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Физичке активности"</string>
- <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"приступ физичким активностима"</string>
- <string name="permgrouplab_camera" msgid="9090413408963547706">"Камера"</string>
- <string name="permgroupdesc_camera" msgid="7585150538459320326">"снима слике и видео"</string>
- <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Уређаји у близини"</string>
- <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"откривање уређаја у близини и повезивање са њима"</string>
- <string name="permgrouplab_calllog" msgid="7926834372073550288">"Евиденције позива"</string>
- <string name="permgroupdesc_calllog" msgid="2026996642917801803">"читање и писање евиденције позива на телефону"</string>
- <string name="permgrouplab_phone" msgid="570318944091926620">"Телефон"</string>
- <string name="permgroupdesc_phone" msgid="270048070781478204">"упућује телефонске позиве и управља њима"</string>
- <string name="permgrouplab_sensors" msgid="9134046949784064495">"Сензори за тело"</string>
- <string name="permgroupdesc_sensors" msgid="2610631290633747752">"приступа подацима сензора о виталним функцијама"</string>
- <string name="permgrouplab_notifications" msgid="5472972361980668884">"Обавештења"</string>
- <string name="permgroupdesc_notifications" msgid="4608679556801506580">"приказивање обавештења"</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"да преузима садржај прозора"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Проверава садржај прозора са којим остварујете интеракцију."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"да укључи Истраживања додиром"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="4394677060796752976">"Ставке које додирнете ће бити изговорене наглас, а можете да се крећете по екрану покретима."</string>
- <string name="capability_title_canRequestFilterKeyEvents" msgid="2772371671541753254">"да прати текст који уносите"</string>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="2381315802405773092">"Обухвата личне податке као што су бројеви кредитних картица и лозинке."</string>
- <string name="capability_title_canControlMagnification" msgid="7701572187333415795">"да управља увећањем приказа"</string>
- <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"Управља нивоом зумирања приказа и одређивањем положаја."</string>
- <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"Обављање покрета"</string>
- <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"Може да додирује, листа, скупља приказ и обавља друге покрете."</string>
- <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Покрети за отисак прста"</string>
- <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Може да региструје покрете на сензору за отисак прста на уређају."</string>
- <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Направи снимак екрана"</string>
- <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Може да направи снимак екрана."</string>
- <string name="permlab_statusBar" msgid="8798267849526214017">"онемогућавање или измена статусне траке"</string>
- <string name="permdesc_statusBar" msgid="5809162768651019642">"Дозвољава апликацији да онемогући статусну траку или да додаје и уклања системске иконе."</string>
- <string name="permlab_statusBarService" msgid="2523421018081437981">"функционисање као статусна трака"</string>
- <string name="permdesc_statusBarService" msgid="6652917399085712557">"Дозвољава апликацији да функционише као статусна трака."</string>
- <string name="permlab_expandStatusBar" msgid="1184232794782141698">"проширење/скупљање статусне траке"</string>
- <string name="permdesc_expandStatusBar" msgid="7180756900448498536">"Дозвољава апликацији да проширује или скупља статусну траку."</string>
- <string name="permlab_fullScreenIntent" msgid="4310888199502509104">"приказује обавештења као активности преко целог екрана на закључаном уређају"</string>
- <string name="permdesc_fullScreenIntent" msgid="1100721419406643997">"Омогућава апликацији да на закључаном уређају приказује обавештења као активности преко целог екрана."</string>
- <string name="permlab_install_shortcut" msgid="7451554307502256221">"Инсталирање пречица"</string>
- <string name="permdesc_install_shortcut" msgid="4476328467240212503">"да додају пречице на почетни екран без интервенције корисника."</string>
- <string name="permlab_uninstall_shortcut" msgid="295263654781900390">"деинсталирање пречица"</string>
- <string name="permdesc_uninstall_shortcut" msgid="1924735350988629188">"Омогућава апликацији да уклања пречице са почетног екрана без интервенције корисника."</string>
- <string name="permlab_processOutgoingCalls" msgid="4075056020714266558">"преусмеравање одлазних позива"</string>
- <string name="permdesc_processOutgoingCalls" msgid="7833149750590606334">"Дозвољава апликацији да види који број се бира при одлазном позиву уз опцију да преусмери позив на други број или га потпуно прекине."</string>
- <string name="permlab_answerPhoneCalls" msgid="4131324833663725855">"одговарај на телефонске позиве"</string>
- <string name="permdesc_answerPhoneCalls" msgid="894386681983116838">"Дозвољава апликацији да одговори на долазни телефонски позив."</string>
- <string name="permlab_receiveSms" msgid="505961632050451881">"пријем текстуалних порука (SMS)"</string>
- <string name="permdesc_receiveSms" msgid="1797345626687832285">"Дозвољава апликацији да прима и обрађује SMS поруке. То значи да апликација може да надгледа или брише поруке које се шаљу уређају, а да вам их не прикаже."</string>
- <string name="permlab_receiveMms" msgid="4000650116674380275">"пријем текстуалних порука (MMS)"</string>
- <string name="permdesc_receiveMms" msgid="958102423732219710">"Дозвољава апликацији да прима и обрађује MMS поруке. То значи да апликација може да надгледа или брише поруке које се шаљу уређају, а да вам их не прикаже."</string>
- <string name="permlab_bindCellBroadcastService" msgid="586746677002040651">"Прослеђивање порука за мобилне уређаје на локалитету"</string>
- <string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Дозвољава апликацији да се везује за модул порука за мобилне уређаје на локалитету да би прослеђивала поруке за мобилне уређаје на локалитету онако како су примљене. Обавештења порука за мобилне уређаје на локалитету се на неким локацијама примају као упозорења на хитне случајеве. Злонамерне апликације могу да утичу на перформансе или ометају рад уређаја када се прими порука о хитном случају за мобилне уређаје на локалитету."</string>
- <string name="permlab_manageOngoingCalls" msgid="281244770664231782">"Управљање одлазним позивима"</string>
- <string name="permdesc_manageOngoingCalls" msgid="7003138133829915265">"Омогућава апликацији да види детаље о одлазним позивима на уређају и да контролише те позиве."</string>
- <string name="permlab_readCellBroadcasts" msgid="5869884450872137693">"читање порука инфо сервиса"</string>
- <string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"Омогућава апликацији да чита поруке инфо сервиса које уређај прима. Упозорења инфо сервиса се на неким локацијама примају као упозорења на хитне случајеве. Злонамерне апликације могу да утичу на перформансе или ометају функционисање уређаја када се прими порука инфо сервиса о хитном случају."</string>
- <string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"читање пријављених фидова"</string>
- <string name="permdesc_subscribedFeedsRead" msgid="6911349196661811865">"Дозвољава апликацији да преузима детаље о тренутно синхронизованим фидовима."</string>
- <string name="permlab_sendSms" msgid="7757368721742014252">"шаље и прегледа SMS поруке"</string>
- <string name="permdesc_sendSms" msgid="6757089798435130769">"Дозвољава апликацији да шаље SMS поруке. Ово може да доведе до неочекиваних трошкова. Злонамерне апликације могу да шаљу поруке без ваше потврде, што може да изазове трошкове."</string>
- <string name="permlab_readSms" msgid="5164176626258800297">"читање текстуалних порука (SMS или MMS)"</string>
- <string name="permdesc_readSms" product="tablet" msgid="7912990447198112829">"Ова апликација може да чита све SMS (текстуалне) поруке које се чувају на таблету."</string>
- <string name="permdesc_readSms" product="tv" msgid="3054753345758011986">"Ова апликација може да чита све SMS (текстуалне) поруке које се чувају на Android TV уређају."</string>
- <string name="permdesc_readSms" product="default" msgid="774753371111699782">"Ова апликација може да чита све SMS (текстуалне) поруке које се чувају на телефону."</string>
- <string name="permlab_receiveWapPush" msgid="4223747702856929056">"пријем текстуалних порука (WAP)"</string>
- <string name="permdesc_receiveWapPush" msgid="1638677888301778457">"Дозвољава апликацији да прима и обрађује WAP поруке. Ова дозвола укључује могућност праћења или брисања порука које вам се шаљу, а које вам се не приказују."</string>
- <string name="permlab_getTasks" msgid="7460048811831750262">"преузимање покренутих апликација"</string>
- <string name="permdesc_getTasks" msgid="7388138607018233726">"Дозвољава апликацији да преузима информације о актуелним и недавно покренутим задацима. Ово може да омогући апликацији да открије информације о томе које се апликације користе на уређају."</string>
- <string name="permlab_manageProfileAndDeviceOwners" msgid="639849495253987493">"управљање власницима профила и уређаја"</string>
- <string name="permdesc_manageProfileAndDeviceOwners" msgid="7304240671781989283">"Дозвољава апликацији да подеси власнике профила и власника уређаја."</string>
- <string name="permlab_reorderTasks" msgid="7598562301992923804">"промена редоследа покренутих апликација"</string>
- <string name="permdesc_reorderTasks" msgid="8796089937352344183">"Дозвољава апликацији да премешта задатке у први план и у позадину. Апликација може да ради ово без вашег уноса."</string>
- <string name="permlab_enableCarMode" msgid="893019409519325311">"омогућавање режима рада у аутомобилу"</string>
- <string name="permdesc_enableCarMode" msgid="56419168820473508">"Дозвољава апликацији да омогући режим рада у аутомобилу."</string>
- <string name="permlab_killBackgroundProcesses" msgid="6559320515561928348">"затварање других апликација"</string>
- <string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Дозвољава апликацији да заустави позадинске процесе других апликација. Ово може да заустави друге апликације."</string>
- <string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Ова апликација може да се приказује преко других апликација"</string>
- <string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Ова апликација може да се приказује преко других апликација или других делова делова екрана. То може да омета стандардно коришћење апликација и начин на који се друге апликације приказују."</string>
- <string name="permlab_runInBackground" msgid="541863968571682785">"покретање у позадини"</string>
- <string name="permdesc_runInBackground" msgid="4344539472115495141">"Ова апликација може да се покреће у позадини. То може брже да истроши батерију."</string>
- <string name="permlab_useDataInBackground" msgid="783415807623038947">"коришћење података у позадини"</string>
- <string name="permdesc_useDataInBackground" msgid="1230753883865891987">"Ова апликација може да користи податке у позадини. То може да повећа потрошњу података."</string>
- <string name="permlab_schedule_exact_alarm" msgid="6683283918033029730">"Заказивање временски прецизних радњи"</string>
- <string name="permdesc_schedule_exact_alarm" msgid="8198009212013211497">"Ова апликација може да закаже да се рад догоди у жељено време у будућности. То значи и да апликација може да ради када не користите активно уређај."</string>
- <string name="permlab_use_exact_alarm" msgid="348045139777131552">"Заказивање аларма или подсетника за догађаје"</string>
- <string name="permdesc_use_exact_alarm" msgid="7033761461886938912">"Ова апликација може да заказује радње попут аларма и подсетника да би вас обавештавала у жељено време у будућности."</string>
- <string name="permlab_persistentActivity" msgid="464970041740567970">"омогућавање непрекидне активности апликације"</string>
- <string name="permdesc_persistentActivity" product="tablet" msgid="6055271149187369916">"Дозвољава апликацији да учини сопствене компоненте трајним у меморији. Ово може да ограничи меморију доступну другим апликацијама и успори таблет."</string>
- <string name="permdesc_persistentActivity" product="tv" msgid="6800526387664131321">"Дозвољава апликацији да трајно задржи неке своје делове у меморији. Ово може да ограничи меморију доступну другим апликацијама и успори Android TV уређај."</string>
- <string name="permdesc_persistentActivity" product="default" msgid="1914841924366562051">"Дозвољава апликацији да учини сопствене компоненте трајним у меморији. Ово може да ограничи меморију доступну другим апликацијама и успори телефон."</string>
- <string name="permlab_foregroundService" msgid="1768855976818467491">"покрени услугу у првом плану"</string>
- <string name="permdesc_foregroundService" msgid="8720071450020922795">"Дозвољава апликацији да користи услуге у првом плану."</string>
- <string name="permlab_foregroundServiceCamera" msgid="7814751737955715297">"покретање услуге у првом плану која припада типу „camera“"</string>
- <string name="permdesc_foregroundServiceCamera" msgid="6973701931250595727">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „camera“"</string>
- <string name="permlab_foregroundServiceConnectedDevice" msgid="3019650546176872501">"покретање услуге у првом плану која припада типу „connectedDevice“"</string>
- <string name="permdesc_foregroundServiceConnectedDevice" msgid="1067457315741352963">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „connectedDevice“"</string>
- <string name="permlab_foregroundServiceDataSync" msgid="5847463514326881076">"покретање услуге у првом плану која припада типу „dataSync“"</string>
- <string name="permdesc_foregroundServiceDataSync" msgid="2267140263423973050">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „dataSync“"</string>
- <string name="permlab_foregroundServiceLocation" msgid="3745428302378535690">"покретање услуге у првом плану која припада типу „location“"</string>
- <string name="permdesc_foregroundServiceLocation" msgid="118894034365177183">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „location“"</string>
- <string name="permlab_foregroundServiceMediaPlayback" msgid="4002687983891935514">"покретање услуге у првом плану која припада типу „mediaPlayback“"</string>
- <string name="permdesc_foregroundServiceMediaPlayback" msgid="3638032446063968043">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „mediaPlayback“"</string>
- <string name="permlab_foregroundServiceMediaProjection" msgid="2630868915733312527">"покретање услуге у првом плану која припада типу „mediaProjection“"</string>
- <string name="permdesc_foregroundServiceMediaProjection" msgid="4805677128082002298">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „mediaProjection“"</string>
- <string name="permlab_foregroundServiceMicrophone" msgid="7390033424890545399">"покретање услуге у првом плану која припада типу „microphone“"</string>
- <string name="permdesc_foregroundServiceMicrophone" msgid="1206041516173483201">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „microphone“"</string>
- <string name="permlab_foregroundServicePhoneCall" msgid="627937743867697892">"покретање услуге у првом плану која припада типу „phoneCall“"</string>
- <string name="permdesc_foregroundServicePhoneCall" msgid="5941660252587015147">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „phoneCall“"</string>
- <string name="permlab_foregroundServiceHealth" msgid="3675776442080928184">"покретање услуге у првом плану која припада типу „health“"</string>
- <string name="permdesc_foregroundServiceHealth" msgid="2024586220562667185">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „health“"</string>
- <string name="permlab_foregroundServiceRemoteMessaging" msgid="105670277002780950">"покретање услуге у првом плану која припада типу „remoteMessaging“"</string>
- <string name="permdesc_foregroundServiceRemoteMessaging" msgid="8767598075877576277">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „remoteMessaging“"</string>
- <string name="permlab_foregroundServiceSystemExempted" msgid="1597663713590612685">"покретање услуге у првом плану која припада типу „systemExempted“"</string>
- <string name="permdesc_foregroundServiceSystemExempted" msgid="947381760834649622">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „systemExempted“"</string>
- <string name="permlab_foregroundServiceFileManagement" msgid="2585000987966045030">"покретање услуге у првом плану која припада типу „fileManagement“"</string>
- <string name="permdesc_foregroundServiceFileManagement" msgid="417103601269698508">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „fileManagement“"</string>
- <string name="permlab_foregroundServiceSpecialUse" msgid="7973536745876645082">"покретање услуге у првом плану која припада типу „specialUse“"</string>
- <string name="permdesc_foregroundServiceSpecialUse" msgid="646713654541885919">"Дозвољава апликацији да користи услуге у првом плану које припадају типу „specialUse“"</string>
- <string name="permlab_getPackageSize" msgid="375391550792886641">"мерење меморијског простора у апликацији"</string>
- <string name="permdesc_getPackageSize" msgid="742743530909966782">"Дозвољава апликацији да преузме величине кôда, података и кеша."</string>
- <string name="permlab_writeSettings" msgid="8057285063719277394">"измена подешавања система"</string>
- <string name="permdesc_writeSettings" msgid="8293047411196067188">"Дозвољава апликацији да мења податке о подешавању система. Злонамерне апликације могу да оштете конфигурацију система."</string>
- <string name="permlab_receiveBootCompleted" msgid="6643339400247325379">"покретање при покретању система"</string>
- <string name="permdesc_receiveBootCompleted" product="tablet" msgid="5565659082718177484">"Омогућава да се апликација покрене одмах након покретања система. То може да успори покретање таблета, при чему ова апликација може да успори функционисање целог таблета тиме што ће увек бити активна."</string>
- <string name="permdesc_receiveBootCompleted" product="tv" msgid="4900842256047614307">"Дозвољава апликацији да се покрене одмах по укључивању система. То може да успори покретање Android TV уређаја и апликација може да успори функционисање уређаја у целини тако што ће увек бити активна."</string>
- <string name="permdesc_receiveBootCompleted" product="default" msgid="7912677044558690092">"Омогућава да се апликација покрене чим се систем покрене. То може да успори покретање телефона, при чему ова апликација може да успори функционисање целог телефона тиме што ће увек бити активна."</string>
- <string name="permlab_broadcastSticky" msgid="4552241916400572230">"слање пријемчивих емитовања"</string>
- <string name="permdesc_broadcastSticky" product="tablet" msgid="5058486069846384013">"Дозвољава апликацији да шаље пријемчива емитовања, која остају по завршетку емитовања. Прекомерна употреба може да успори или дестабилизује таблет тако што ће га приморати да троши превише меморије."</string>
- <string name="permdesc_broadcastSticky" product="tv" msgid="2338185920171000650">"Дозвољава апликацији да шаље лепљива емитовања која остају по завршетку емитовања. Прекомерна употреба може да успори или дестабилизује Android TV уређај тако што ће га приморати да троши превише меморије."</string>
- <string name="permdesc_broadcastSticky" product="default" msgid="134529339678913453">"Дозвољава апликацији да шаље пријемчива емитовања, која остају по завршетку емитовања. Прекомерна употреба може да успори или дестабилизује телефон тако што ће га приморати да троши превише меморије."</string>
- <string name="permlab_readContacts" msgid="8776395111787429099">"читање контаката"</string>
- <string name="permdesc_readContacts" product="tablet" msgid="6430093481659992692">"Дозвољава апликацији да чита податке о контактима које чувате на таблету. Апликације ће имати приступ и налозима на вашем таблету на којима су направљени контакти. Ту могу да спадају налози које су отвориле апликације које сте инсталирали. Ова дозвола омогућава апликацијама да чувају податке о контактима и злонамерне апликације могу да деле податке о контактима без вашег знања."</string>
- <string name="permdesc_readContacts" product="tv" msgid="8400138591135554789">"Дозвољава апликацији да чита податке о контактима које чувате на Android TV уређају. Апликације ће имати приступ и налозима на вашем Android TV уређају на којима су направљени контакти. Ту могу да спадају налози које су отвориле апликације које сте инсталирали. Ова дозвола омогућава апликацијама да чувају податке о контактима и злонамерне апликације могу да деле податке о контактима без вашег знања."</string>
- <string name="permdesc_readContacts" product="default" msgid="4911989776203207644">"Дозвољава апликацији да чита податке о контактима које чувате на телефону. Апликације ће имати приступ и налозима на вашем телефону на којима су направљени контакти. Ту могу да спадају налози које су отвориле апликације које сте инсталирали. Ова дозвола омогућава апликацијама да чувају податке о контактима и злонамерне апликације могу да деле податке о контактима без вашег знања."</string>
- <string name="permlab_writeContacts" msgid="8919430536404830430">"измена контаката"</string>
- <string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"Дозвољава апликацији да мења податке о контактима које чувате на таблету. Ова дозвола омогућава апликацијама да бришу податке о контактима."</string>
- <string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"Дозвољава апликацији да мења податке о контактима које чувате на Android TV уређају. Ова дозвола омогућава апликацијама да бришу податке о контактима."</string>
- <string name="permdesc_writeContacts" product="default" msgid="8304795696237065281">"Дозвољава апликацији да мења податке о контактима које чувате на телефону. Ова дозвола омогућава апликацијама да бришу податке о контактима."</string>
- <string name="permlab_readCallLog" msgid="1739990210293505948">"читање евиденције позива"</string>
- <string name="permdesc_readCallLog" msgid="8964770895425873433">"Ова апликација може да чита историју позива."</string>
- <string name="permlab_writeCallLog" msgid="670292975137658895">"писање евиденције позива"</string>
- <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Дозвољава апликацији да мења евиденцију позива на таблету, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе да би брисале или мењале евиденцију позива."</string>
- <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Дозвољава апликацији да мења евиденцију позива на Android TV уређају, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе за брисање или мењање евиденције позива."</string>
- <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Дозвољава апликацији да мења евиденцију позива на телефону, укључујући податке о долазним и одлазним позивима. Злонамерне апликације могу ово да користе да би брисале или мењале евиденцију позива."</string>
- <string name="permlab_bodySensors" msgid="662918578601619569">"Приступ подацима сензора за тело, као што је пулс, у току коришћења"</string>
- <string name="permdesc_bodySensors" product="default" msgid="7652650410295512140">"Дозвољава апликацији да приступа подацима сензора за тело, као што су пулс, температура и проценат кисеоника у крви док се апликација користи."</string>
- <string name="permlab_bodySensors_background" msgid="4912560779957760446">"Приступ подацима сензора за тело, као што је пулс, у позадини"</string>
- <string name="permdesc_bodySensors_background" product="default" msgid="8870726027557749417">"Дозвољава апликацији да приступа подацима сензора за тело, као што су пулс, температура и проценат кисеоника у крви док је апликација у позадини."</string>
- <string name="permlab_readCalendar" msgid="6408654259475396200">"Читање догађаја и података из календара"</string>
- <string name="permdesc_readCalendar" product="tablet" msgid="515452384059803326">"Ова апликација може да чита све догађаје из календара које чувате на таблету, као и да дели или чува податке из календара."</string>
- <string name="permdesc_readCalendar" product="tv" msgid="5811726712981647628">"Ова апликација може да чита све догађаје из календара које чувате на Android TV уређају, као и да дели или чува податке из календара."</string>
- <string name="permdesc_readCalendar" product="default" msgid="9118823807655829957">"Ова апликација може да чита све догађаје из календара које чувате на телефону, као и да дели или чува податке из календара."</string>
- <string name="permlab_writeCalendar" msgid="6422137308329578076">"додавање или измена календарских догађаја и слање порука е-поште гостима без знања власника"</string>
- <string name="permdesc_writeCalendar" product="tablet" msgid="8722230940717092850">"Ова апликацији може да додаје, уклања или мења догађаје из календара на таблету. Ова апликација може да шаље поруке које изгледају као да их шаљу власници календара или да мења догађаје без знања власника."</string>
- <string name="permdesc_writeCalendar" product="tv" msgid="951246749004952706">"Ова апликација може да додаје, уклања или мења догађаје из календара на Android TV уређају. Ова апликација може да шаље поруке које изгледају као да их шаљу власници календара или да мења догађаје без знања власника."</string>
- <string name="permdesc_writeCalendar" product="default" msgid="5416380074475634233">"Ова апликацији може да додаје, уклања или мења догађаје из календара на телефону. Ова апликација може да шаље поруке које изгледају као да их шаљу власници календара или да мења догађаје без знања власника."</string>
- <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"приступ додатним командама добављача локације"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Омогућава апликацији да приступа додатним командама даваоца услуга локације. То може да омогући апликацији да утиче на рад GPS-а или других извора локације."</string>
- <string name="permlab_accessFineLocation" msgid="6426318438195622966">"приступ прецизној локацији само у првом плану"</string>
- <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ова апликација може да одреди вашу тачну локацију на основу услуга локације док се апликација користи. Услуге локације за уређај морају да буду укључене да би апликација одредила локацију. То може да повећа потрошњу батерије."</string>
- <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"приступ приближној локацији само у првом плану"</string>
- <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ова апликација може да одреди вашу приближну локацију на основу услуга локације док се апликација користи. Услуге локације за уређај морају да буду укључене да би апликација одредила локацију."</string>
- <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"приступ локацији у позадини"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ова апликација може да приступа локацији у било ком тренутку, чак и док се апликација не користи."</string>
- <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"промена аудио подешавања"</string>
- <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Дозвољава апликацији да мења глобална аудио подешавања као што су јачина звука и избор звучника који се користи као излаз."</string>
- <string name="permlab_recordAudio" msgid="1208457423054219147">"снимање аудио записа"</string>
- <string name="permdesc_recordAudio" msgid="5857246765327514062">"Ова апликација може да снима звук помоћу микрофона док се апликација користи."</string>
- <string name="permlab_recordBackgroundAudio" msgid="5891032812308878254">"да снима звук у позадини"</string>
- <string name="permdesc_recordBackgroundAudio" msgid="1992623135737407516">"Ова апликација може да снима звук помоћу микрофона у било ком тренутку."</string>
- <string name="permlab_detectScreenCapture" msgid="4447042362828799433">"откривање снимања екрана у прозорима апликација"</string>
- <string name="permdesc_detectScreenCapture" msgid="3485784917960342284">"Ако се током коришћења ове апликације направи снимак екрана, апликација ће добити обавештење."</string>
- <string name="permlab_sim_communication" msgid="176788115994050692">"слање команди на SIM"</string>
- <string name="permdesc_sim_communication" msgid="4179799296415957960">"Омогућава апликацији да шаље команде SIM картици. То је веома опасно."</string>
- <string name="permlab_activityRecognition" msgid="1782303296053990884">"препознавање физичких активности"</string>
- <string name="permdesc_activityRecognition" msgid="8667484762991357519">"Ова апликација може да препозна физичке активности."</string>
- <string name="permlab_camera" msgid="6320282492904119413">"снимање фотографија и видео снимака"</string>
- <string name="permdesc_camera" msgid="5240801376168647151">"Ова апликација може да снима слике и видео снимке помоћу камере док се апликација користи."</string>
- <string name="permlab_backgroundCamera" msgid="7549917926079731681">"да снима слике и видео снимке у позадини"</string>
- <string name="permdesc_backgroundCamera" msgid="1615291686191138250">"Ова апликација може да снима фотографије и видео снимке помоћу камере у било ком тренутку."</string>
- <string name="permlab_systemCamera" msgid="3642917457796210580">"Дозволите некој апликацији или услузи да приступа камерама система да би снимала слике и видео снимке"</string>
- <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ова привилегована системска апликација може да снима слике и видео снимке помоћу камере система у било ком тренутку. Апликација треба да има и дозволу android.permission.CAMERA"</string>
- <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дозволите апликацији или услузи да добија повратне позиве о отварању или затварању уређаја са камером."</string>
- <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ова апликација може да добија повратне позиве када се било који уређај са камером отвара или затвара (помоћу неке апликације)."</string>
- <string name="permlab_vibrate" msgid="8596800035791962017">"контрола вибрације"</string>
- <string name="permdesc_vibrate" msgid="8733343234582083721">"Дозвољава апликацији да контролише вибрацију."</string>
- <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Дозвољава апликацији да приступа стању вибрирања."</string>
- <string name="permlab_callPhone" msgid="1798582257194643320">"директно позивање бројева телефона"</string>
- <string name="permdesc_callPhone" msgid="5439809516131609109">"Дозвољава апликацији да позива бројеве телефона без ваше дозволе. Ово може да доведе до неочекиваних трошкова или позива. Имајте на уму да ово не дозвољава апликацији да позива бројеве за хитне случајеве. Злонамерне апликације могу да позивају без ваше потврде, што може да доведе до трошкова."</string>
- <string name="permlab_accessImsCallService" msgid="442192920714863782">"приступ услузи позива помоћу размене тренутних порука"</string>
- <string name="permdesc_accessImsCallService" msgid="6328551241649687162">"Дозвољава апликацији да користи услугу размене тренутних порука да би упућивала позиве без ваше интервенције."</string>
- <string name="permlab_readPhoneState" msgid="8138526903259297969">"читање статуса и идентитета телефона"</string>
- <string name="permdesc_readPhoneState" msgid="7229063553502788058">"Дозвољава апликацији да приступа функцијама телефона на уређају. Ова дозвола омогућава апликацији да утврди број телефона и ИД-ове уређаја, затим да ли је позив активан, као и број даљинског уређаја са којим је успостављен позив."</string>
- <string name="permlab_readBasicPhoneState" msgid="3214853233263871347">"очитавање основног телефонског статуса и идентитета"</string>
- <string name="permdesc_readBasicPhoneState" msgid="828185691675460520">"Омогућава апликацији да приступа основним телефонским функцијама уређаја."</string>
- <string name="permlab_manageOwnCalls" msgid="9033349060307561370">"преусмеравање позива преко система"</string>
- <string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Дозвољава апликацији да преусмерава позиве преко система да би побољшала доживљај позивања."</string>
- <string name="permlab_callCompanionApp" msgid="3654373653014126884">"преглед и контрола позива преко система."</string>
- <string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Дозвољава апликацији да прегледа и контролише тренутне позиве на уређају. То обухвата информације попут бројева телефона и статуса позива."</string>
- <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"изузимање из ограничења за снимање звука"</string>
- <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Изузмите апликацију из ограничења за снимање звука."</string>
- <string name="permlab_acceptHandover" msgid="2925523073573116523">"настави позив у другој апликацији"</string>
- <string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Дозвољава апликацији да настави позив који је започет у другој апликацији."</string>
- <string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"читање бројева телефона"</string>
- <string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Дозвољава апликацији да приступа бројевима телефона на уређају."</string>
- <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"не искључуј екран у аутомобилу"</string>
- <string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"спречавање преласка таблета у стање спавања"</string>
- <string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"спречава Android TV уређај да пређе у стање спавања"</string>
- <string name="permlab_wakeLock" product="default" msgid="569409726861695115">"спречавање преласка телефона у стање спавања"</string>
- <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Дозвољава апликацији да не искључује екран у аутомобилу."</string>
- <string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Дозвољава апликацији да спречи таблет да пређе у стање спавања."</string>
- <string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Дозвољава апликацији да спречи Android TV уређај да пређе у стање спавања."</string>
- <string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Дозвољава апликацији да спречи телефон да пређе у стање спавања."</string>
- <string name="permlab_transmitIr" msgid="8077196086358004010">"пренос инфрацрвених зрака"</string>
- <string name="permdesc_transmitIr" product="tablet" msgid="5884738958581810253">"Дозвољава апликацији да користи одашиљач инфрацрвених зрака таблета."</string>
- <string name="permdesc_transmitIr" product="tv" msgid="3278506969529173281">"Дозвољава да апликација користи одашиљач инфрацрвених зрака на Android TV уређају."</string>
- <string name="permdesc_transmitIr" product="default" msgid="8484193849295581808">"Дозвољава апликацији да користи одашиљач инфрацрвених зрака телефона."</string>
- <string name="permlab_setWallpaper" msgid="6959514622698794511">"подешавање позадине"</string>
- <string name="permdesc_setWallpaper" msgid="2973996714129021397">"Дозвољава апликацији да поставља позадину система."</string>
- <string name="permlab_setWallpaperHints" msgid="1153485176642032714">"прилагођавање величине позадине"</string>
- <string name="permdesc_setWallpaperHints" msgid="6257053376990044668">"Дозвољава апликацији да подеси савете за системску величину позадине."</string>
- <string name="permlab_setTimeZone" msgid="7922618798611542432">"подешавање временске зоне"</string>
- <string name="permdesc_setTimeZone" product="tablet" msgid="1788868809638682503">"Дозвољава апликацији да промени временску зону таблета."</string>
- <string name="permdesc_setTimeZone" product="tv" msgid="9069045914174455938">"Дозвољава апликацији да мења временску зону Android TV уређаја."</string>
- <string name="permdesc_setTimeZone" product="default" msgid="4611828585759488256">"Дозвољава апликацији да промени временску зону телефона."</string>
- <string name="permlab_getAccounts" msgid="5304317160463582791">"проналажење налога на уређају"</string>
- <string name="permdesc_getAccounts" product="tablet" msgid="1784452755887604512">"Дозвољава апликацији да преузима листу налога познатих таблету. Ово може да обухвата било које налоге које праве апликације које инсталирате."</string>
- <string name="permdesc_getAccounts" product="tv" msgid="437604680436540822">"Дозвољава апликацији да дође до листе налога познатих Android TV уређају. Ово може да обухвата све налоге које отварају апликације које сте инсталирали."</string>
- <string name="permdesc_getAccounts" product="default" msgid="2491273043569751867">"Дозвољава апликацији да преузима листу налога познатих телефону. Ово може да обухвата било које налоге које праве апликације које инсталирате."</string>
- <string name="permlab_accessNetworkState" msgid="2349126720783633918">"преглед мрежних веза"</string>
- <string name="permdesc_accessNetworkState" msgid="4394564702881662849">"Дозвољава апликацији да прегледа информације о мрежним везама као што су информације о томе које мреже постоје и које мреже су повезане."</string>
- <string name="permlab_createNetworkSockets" msgid="3224420491603590541">"има пун мрежни приступ"</string>
- <string name="permdesc_createNetworkSockets" msgid="7722020828749535988">"Дозвољава апликацији да прави мрежне прикључке и користи прилагођене мрежне протоколе. Прегледач и друге апликације омогућавају слање података на Интернет, па ова дозвола није потребна за слање података на Интернет."</string>
- <string name="permlab_changeNetworkState" msgid="8945711637530425586">"промена везе са мрежом"</string>
- <string name="permdesc_changeNetworkState" msgid="649341947816898736">"Дозвољава апликацији да мења статус повезивања са мрежом."</string>
- <string name="permlab_changeTetherState" msgid="9079611809931863861">"промена повезивања привезивањем"</string>
- <string name="permdesc_changeTetherState" msgid="3025129606422533085">"Дозвољава апликацији да мења статус везе са привезаном мрежом."</string>
- <string name="permlab_accessWifiState" msgid="5552488500317911052">"преглед WiFi веза"</string>
- <string name="permdesc_accessWifiState" msgid="6913641669259483363">"Дозвољава апликацији да прегледа информације о WiFi умрежавању, као што су информације о томе да ли је WiFi омогућен и називи повезаних WiFi уређаја."</string>
- <string name="permlab_changeWifiState" msgid="7947824109713181554">"повезивање и прекид везе са WiFi мрежом"</string>
- <string name="permdesc_changeWifiState" msgid="7170350070554505384">"Дозвољава апликацији да се повезује са приступним тачкама за WiFi и прекида везу са њима, као и да уноси промене у конфигурацију уређаја за WiFi мреже."</string>
- <string name="permlab_changeWifiMulticastState" msgid="285626875870754696">"омогућавање пријема вишесмерног WiFi саобраћаја"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="191079868596433554">"Дозвољава апликацији да прима пакете који се шаљу на све уређаје на WiFi мрежи помоћу вишесмерних адреса, а не само на таблет. Користи више напајања од режима једносмерног саобраћаја."</string>
- <string name="permdesc_changeWifiMulticastState" product="tv" msgid="1336952358450652595">"Дозвољава апликацији да прима пакете који се шаљу на све уређаје на WiFi мрежи помоћу вишесмерних адреса, а не само на Android TV уређај. Користи више енергије од режима без вишесмерног слања."</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="8296627590220222740">"Дозвољава апликацији да прима пакете који се шаљу на све уређаје на WiFi мрежи помоћу вишесмерних адреса, а не само на телефон. Користи више напајања од режима једносмерног саобраћаја."</string>
- <string name="permlab_bluetoothAdmin" msgid="6490373569441946064">"приступ Bluetooth подешавањима"</string>
- <string name="permdesc_bluetoothAdmin" product="tablet" msgid="5370837055438574863">"Дозвољава апликацији да конфигурише локални Bluetooth таблет, као и да открије даљинске уређаје и упари се са њима."</string>
- <string name="permdesc_bluetoothAdmin" product="tv" msgid="1623992984547014588">"Дозвољава апликацији да конфигурише Bluetooth на Android TV уређају и да открије удаљене уређаје и упари се са њима."</string>
- <string name="permdesc_bluetoothAdmin" product="default" msgid="7381341743021234863">"Дозвољава апликацији да конфигурише локални Bluetooth телефон, као и да открије даљинске уређаје и упари се са њима."</string>
- <string name="permlab_accessWimaxState" msgid="7029563339012437434">"повезивање и прекид везе са WiMAX-ом"</string>
- <string name="permdesc_accessWimaxState" msgid="5372734776802067708">"Дозвољава апликацији да утврди да ли је WiMAX омогућен, као и информације о било којим повезаним WiMAX мрежама."</string>
- <string name="permlab_changeWimaxState" msgid="6223305780806267462">"промени WiMAX статуса"</string>
- <string name="permdesc_changeWimaxState" product="tablet" msgid="4011097664859480108">"Дозвољава апликацији да повезује таблет са WiMAX мрежама и прекида везе са њима."</string>
- <string name="permdesc_changeWimaxState" product="tv" msgid="5373274458799425276">"Дозвољава апликацији да повезује Android TV уређај са WiMAX мрежама и да прекида ту везу."</string>
- <string name="permdesc_changeWimaxState" product="default" msgid="1551666203780202101">"Дозвољава апликацији да повезује телефон са WiMAX мрежама и прекида везе са њима."</string>
- <string name="permlab_bluetooth" msgid="586333280736937209">"упаривање са Bluetooth уређајима"</string>
- <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"Дозвољава апликацији да прегледа конфигурацију Bluetooth-а на таблету, као и да успоставља и прихвата везе са упареним уређајима."</string>
- <string name="permdesc_bluetooth" product="tv" msgid="8851534496561034998">"Дозвољава апликацији да прегледа конфигурацију Bluetooth-а на Android TV уређају и да успоставља и прихвата везе са упареним уређајима."</string>
- <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"Дозвољава апликацији да прегледа конфигурацију Bluetooth-а на телефону, као и да успоставља и прихвата везе са упареним уређајима."</string>
- <string name="permlab_bluetooth_scan" msgid="5402587142833124594">"откривање и упаривање са оближњим Bluetooth уређ."</string>
- <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Дозвољава апликацији да открива Bluetooth уређаје у близини и упарује се са њима"</string>
- <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"повезивање са упареним Bluetooth уређајима"</string>
- <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Дозвољава апликацији да се повезује са упареним Bluetooth уређајима"</string>
- <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"оглашавање на Bluetooth уређајима у близини"</string>
- <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Дозвољава апликацији да се оглашава на Bluetooth уређајима у близини"</string>
- <string name="permlab_uwb_ranging" msgid="8141915781475770665">"одређивање раздаљине између уређаја ултра-широког појаса у близини"</string>
- <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Дозвољава апликацији да одређује релативну раздаљину између уређаја ултра-широког појаса у близини"</string>
- <string name="permlab_nearby_wifi_devices" msgid="392774237063608500">"интеракција са WiFi уређајима у близини"</string>
- <string name="permdesc_nearby_wifi_devices" msgid="3054307728646332906">"Дозвољава апликацији да се оглашава, повезује и утврђује релативну позицију WiFi уређаја у близини"</string>
- <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Информације о жељеној NFC услузи за плаћање"</string>
- <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Дозвољава апликацији да преузима информације о жељеној NFC услузи за плаћање, попут регистрованих идентификатора апликација и одредишта преусмеравања."</string>
- <string name="permlab_nfc" msgid="1904455246837674977">"контрола комуникације у ужем пољу (Near Field Communication)"</string>
- <string name="permdesc_nfc" msgid="8352737680695296741">"Дозвољава апликацији да комуницира са ознакама, картицама и читачима комуникације кратког домета (NFC)."</string>
- <string name="permlab_disableKeyguard" msgid="3605253559020928505">"онемогућавање закључавања екрана"</string>
- <string name="permdesc_disableKeyguard" msgid="3223710003098573038">"Дозвољава апликацији да онемогући закључавање тастатуре и све повезане безбедносне мере са лозинкама. На пример, телефон онемогућава закључавање тастатуре при пријему долазног телефонског позива, а затим га поново омогућава по завршетку позива."</string>
- <string name="permlab_requestPasswordComplexity" msgid="1808977190557794109">"тражење сложености закључавања екрана"</string>
- <string name="permdesc_requestPasswordComplexity" msgid="1130556896836258567">"Дозвољава апликацији да сазна ниво сложености закључавања екрана (висока, средња, ниска или ниједна), што указује на могући опсег трајања и тип закључавања екрана. Апликација може и да предлаже корисницима да ажурирају закључавање екрана на одређени ниво, али корисници слободно могу да занемаре то и да иду на друге странице. Имајте на уму да се подаци за закључавање екрана не чувају као обичан текст, па апликација не зна тачну лозинку."</string>
- <string name="permlab_postNotification" msgid="4875401198597803658">"приказивање обавештења"</string>
- <string name="permdesc_postNotification" msgid="5974977162462877075">"Дозвољава апликацији да приказује обавештења"</string>
- <string name="permlab_turnScreenOn" msgid="219344053664171492">"укључивање екрана"</string>
- <string name="permdesc_turnScreenOn" msgid="4394606875897601559">"Дозвољава апликацији да укључи екран."</string>
- <string name="permlab_useBiometric" msgid="6314741124749633786">"користи биометријски хардвер"</string>
- <string name="permdesc_useBiometric" msgid="7502858732677143410">"Дозвољава апликацији да користи биометријски хардвер за потврду идентитета"</string>
- <string name="permlab_manageFingerprint" msgid="7432667156322821178">"управљај хардвером за отиске прстију"</string>
- <string name="permdesc_manageFingerprint" msgid="2025616816437339865">"Дозвољава апликацији да активира методе за додавање и брисање шаблона отисака прстију који ће се користити."</string>
- <string name="permlab_useFingerprint" msgid="1001421069766751922">"користи хардвер за отиске прстију"</string>
- <string name="permdesc_useFingerprint" msgid="412463055059323742">"Дозвољава апликацији да користи хардвер за отиске прстију ради потврде идентитета"</string>
- <string name="permlab_audioWrite" msgid="8501705294265669405">"измена музичке колекције"</string>
- <string name="permdesc_audioWrite" msgid="8057399517013412431">"Дозвољава апликацији да мења музичку колекцију."</string>
- <string name="permlab_videoWrite" msgid="5940738769586451318">"измена видео колекције"</string>
- <string name="permdesc_videoWrite" msgid="6124731210613317051">"Дозвољава апликацији да мења видео колекцију."</string>
- <string name="permlab_imagesWrite" msgid="1774555086984985578">"измена колекције слика"</string>
- <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Дозвољава апликацији да мења колекцију слика."</string>
- <string name="permlab_mediaLocation" msgid="7368098373378598066">"читање локација из медијске колекције"</string>
- <string name="permdesc_mediaLocation" msgid="597912899423578138">"Дозвољава апликацији да чита локације из медијске колекције."</string>
- <string name="biometric_app_setting_name" msgid="3339209978734534457">"Користите биометрију"</string>
- <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Користите биометрију или закључавање екрана"</string>
- <string name="biometric_dialog_default_title" msgid="55026799173208210">"Потврдите свој идентитет"</string>
- <string name="biometric_dialog_default_subtitle" msgid="8457232339298571992">"Користите биометријски податак да бисте наставили"</string>
- <string name="biometric_or_screen_lock_dialog_default_subtitle" msgid="159539678371552009">"Користите биометријски податак или закључавање екрана да бисте наставили"</string>
- <string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"Биометријски хардвер није доступан"</string>
- <string name="biometric_error_user_canceled" msgid="6732303949695293730">"Потврда идентитета је отказана"</string>
- <string name="biometric_not_recognized" msgid="5106687642694635888">"Није препознато"</string>
- <string name="biometric_error_canceled" msgid="8266582404844179778">"Потврда идентитета је отказана"</string>
- <string name="biometric_error_device_not_secured" msgid="3129845065043995924">"Нисте подесили ни PIN, ни шаблон, ни лозинку"</string>
- <string name="biometric_error_generic" msgid="6784371929985434439">"Грешка при потврди идентитета"</string>
- <string name="screen_lock_app_setting_name" msgid="6054944352976789228">"Користите закључавање екрана"</string>
- <string name="screen_lock_dialog_default_subtitle" msgid="120359538048533695">"Употребите закључавање екрана да бисте наставили"</string>
- <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Јако притисните сензор"</string>
- <string name="fingerprint_acquired_insufficient" msgid="623888149088216458">"Препознавање отиска прста није успело. Пробајте поново."</string>
- <string name="fingerprint_acquired_imager_dirty" msgid="1770676120848224250">"Обришите сензор за отисак прста и пробајте поново"</string>
- <string name="fingerprint_acquired_imager_dirty_alt" msgid="9169582140486372897">"Обришите сензор и пробајте поново"</string>
- <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Јако притисните сензор"</string>
- <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Превише споро сте померили прст. Пробајте поново."</string>
- <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Пробајте са другим отиском прста"</string>
- <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Превише је светло"</string>
- <string name="fingerprint_acquired_power_press" msgid="3107864151278434961">"Откривен је притисак дугмета за укључивање"</string>
- <string name="fingerprint_acquired_try_adjusting" msgid="3667006071003809364">"Пробајте да прилагодите"</string>
- <string name="fingerprint_acquired_immobile" msgid="1621891895241888048">"Сваки пут помало промените положај прста"</string>
+ <string name="permgroupdesc_sms" msgid="5726462398070064542">"šalje i pregleda SMS poruke"</string>
+ <string name="permgrouplab_storage" msgid="17339216290379241">"Fajlovi"</string>
+ <string name="permgroupdesc_storage" msgid="5378659041354582769">"pristup fajlovima na uređaju"</string>
+ <string name="permgrouplab_readMediaAural" msgid="1858331312624942053">"Muzika i zvuk"</string>
+ <string name="permgroupdesc_readMediaAural" msgid="7565467343667089595">"pristup muzici i audio sadržaju na uređaju"</string>
+ <string name="permgrouplab_readMediaVisual" msgid="4724874717811908660">"Slike i video snimci"</string>
+ <string name="permgroupdesc_readMediaVisual" msgid="4080463241903508688">"pristup slikama i video snimcima na uređaju"</string>
+ <string name="permgrouplab_microphone" msgid="2480597427667420076">"Mikrofon"</string>
+ <string name="permgroupdesc_microphone" msgid="1047786732792487722">"snima zvuk"</string>
+ <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Fizičke aktivnosti"</string>
+ <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"pristup fizičkim aktivnostima"</string>
+ <string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string>
+ <string name="permgroupdesc_camera" msgid="7585150538459320326">"snima slike i video"</string>
+ <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Uređaji u blizini"</string>
+ <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"otkrivanje uređaja u blizini i povezivanje sa njima"</string>
+ <string name="permgrouplab_calllog" msgid="7926834372073550288">"Evidencije poziva"</string>
+ <string name="permgroupdesc_calllog" msgid="2026996642917801803">"čitanje i pisanje evidencije poziva na telefonu"</string>
+ <string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
+ <string name="permgroupdesc_phone" msgid="270048070781478204">"upućuje telefonske pozive i upravlja njima"</string>
+ <string name="permgrouplab_sensors" msgid="9134046949784064495">"Senzori za telo"</string>
+ <string name="permgroupdesc_sensors" msgid="2610631290633747752">"pristupa podacima senzora o vitalnim funkcijama"</string>
+ <string name="permgrouplab_notifications" msgid="5472972361980668884">"Obaveštenja"</string>
+ <string name="permgroupdesc_notifications" msgid="4608679556801506580">"prikazivanje obaveštenja"</string>
+ <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"da preuzima sadržaj prozora"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Proverava sadržaj prozora sa kojim ostvarujete interakciju."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"da uključi Istraživanja dodirom"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="4394677060796752976">"Stavke koje dodirnete će biti izgovorene naglas, a možete da se krećete po ekranu pokretima."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2772371671541753254">"da prati tekst koji unosite"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="2381315802405773092">"Obuhvata lične podatke kao što su brojevi kreditnih kartica i lozinke."</string>
+ <string name="capability_title_canControlMagnification" msgid="7701572187333415795">"da upravlja uvećanjem prikaza"</string>
+ <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"Upravlja nivoom zumiranja prikaza i određivanjem položaja."</string>
+ <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"Obavljanje pokreta"</string>
+ <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"Može da dodiruje, lista, skuplja prikaz i obavlja druge pokrete."</string>
+ <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Pokreti za otisak prsta"</string>
+ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Može da registruje pokrete na senzoru za otisak prsta na uređaju."</string>
+ <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Napravi snimak ekrana"</string>
+ <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Može da napravi snimak ekrana."</string>
+ <string name="permlab_statusBar" msgid="8798267849526214017">"onemogućavanje ili izmena statusne trake"</string>
+ <string name="permdesc_statusBar" msgid="5809162768651019642">"Dozvoljava aplikaciji da onemogući statusnu traku ili da dodaje i uklanja sistemske ikone."</string>
+ <string name="permlab_statusBarService" msgid="2523421018081437981">"funkcionisanje kao statusna traka"</string>
+ <string name="permdesc_statusBarService" msgid="6652917399085712557">"Dozvoljava aplikaciji da funkcioniše kao statusna traka."</string>
+ <string name="permlab_expandStatusBar" msgid="1184232794782141698">"proširenje/skupljanje statusne trake"</string>
+ <string name="permdesc_expandStatusBar" msgid="7180756900448498536">"Dozvoljava aplikaciji da proširuje ili skuplja statusnu traku."</string>
+ <string name="permlab_fullScreenIntent" msgid="4310888199502509104">"prikazuje obaveštenja kao aktivnosti preko celog ekrana na zaključanom uređaju"</string>
+ <string name="permdesc_fullScreenIntent" msgid="1100721419406643997">"Omogućava aplikaciji da na zaključanom uređaju prikazuje obaveštenja kao aktivnosti preko celog ekrana."</string>
+ <string name="permlab_install_shortcut" msgid="7451554307502256221">"Instaliranje prečica"</string>
+ <string name="permdesc_install_shortcut" msgid="4476328467240212503">"da dodaju prečice na početni ekran bez intervencije korisnika."</string>
+ <string name="permlab_uninstall_shortcut" msgid="295263654781900390">"deinstaliranje prečica"</string>
+ <string name="permdesc_uninstall_shortcut" msgid="1924735350988629188">"Omogućava aplikaciji da uklanja prečice sa početnog ekrana bez intervencije korisnika."</string>
+ <string name="permlab_processOutgoingCalls" msgid="4075056020714266558">"preusmeravanje odlaznih poziva"</string>
+ <string name="permdesc_processOutgoingCalls" msgid="7833149750590606334">"Dozvoljava aplikaciji da vidi koji broj se bira pri odlaznom pozivu uz opciju da preusmeri poziv na drugi broj ili ga potpuno prekine."</string>
+ <string name="permlab_answerPhoneCalls" msgid="4131324833663725855">"odgovaraj na telefonske pozive"</string>
+ <string name="permdesc_answerPhoneCalls" msgid="894386681983116838">"Dozvoljava aplikaciji da odgovori na dolazni telefonski poziv."</string>
+ <string name="permlab_receiveSms" msgid="505961632050451881">"prijem tekstualnih poruka (SMS)"</string>
+ <string name="permdesc_receiveSms" msgid="1797345626687832285">"Dozvoljava aplikaciji da prima i obrađuje SMS poruke. To znači da aplikacija može da nadgleda ili briše poruke koje se šalju uređaju, a da vam ih ne prikaže."</string>
+ <string name="permlab_receiveMms" msgid="4000650116674380275">"prijem tekstualnih poruka (MMS)"</string>
+ <string name="permdesc_receiveMms" msgid="958102423732219710">"Dozvoljava aplikaciji da prima i obrađuje MMS poruke. To znači da aplikacija može da nadgleda ili briše poruke koje se šalju uređaju, a da vam ih ne prikaže."</string>
+ <string name="permlab_bindCellBroadcastService" msgid="586746677002040651">"Prosleđivanje poruka za mobilne uređaje na lokalitetu"</string>
+ <string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Dozvoljava aplikaciji da se vezuje za modul poruka za mobilne uređaje na lokalitetu da bi prosleđivala poruke za mobilne uređaje na lokalitetu onako kako su primljene. Obaveštenja poruka za mobilne uređaje na lokalitetu se na nekim lokacijama primaju kao upozorenja na hitne slučajeve. Zlonamerne aplikacije mogu da utiču na performanse ili ometaju rad uređaja kada se primi poruka o hitnom slučaju za mobilne uređaje na lokalitetu."</string>
+ <string name="permlab_manageOngoingCalls" msgid="281244770664231782">"Upravljanje odlaznim pozivima"</string>
+ <string name="permdesc_manageOngoingCalls" msgid="7003138133829915265">"Omogućava aplikaciji da vidi detalje o odlaznim pozivima na uređaju i da kontroliše te pozive."</string>
+ <string name="permlab_readCellBroadcasts" msgid="5869884450872137693">"čitanje poruka info servisa"</string>
+ <string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"Omogućava aplikaciji da čita poruke info servisa koje uređaj prima. Upozorenja info servisa se na nekim lokacijama primaju kao upozorenja na hitne slučajeve. Zlonamerne aplikacije mogu da utiču na performanse ili ometaju funkcionisanje uređaja kada se primi poruka info servisa o hitnom slučaju."</string>
+ <string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"čitanje prijavljenih fidova"</string>
+ <string name="permdesc_subscribedFeedsRead" msgid="6911349196661811865">"Dozvoljava aplikaciji da preuzima detalje o trenutno sinhronizovanim fidovima."</string>
+ <string name="permlab_sendSms" msgid="7757368721742014252">"šalje i pregleda SMS poruke"</string>
+ <string name="permdesc_sendSms" msgid="6757089798435130769">"Dozvoljava aplikaciji da šalje SMS poruke. Ovo može da dovede do neočekivanih troškova. Zlonamerne aplikacije mogu da šalju poruke bez vaše potvrde, što može da izazove troškove."</string>
+ <string name="permlab_readSms" msgid="5164176626258800297">"čitanje tekstualnih poruka (SMS ili MMS)"</string>
+ <string name="permdesc_readSms" product="tablet" msgid="7912990447198112829">"Ova aplikacija može da čita sve SMS (tekstualne) poruke koje se čuvaju na tabletu."</string>
+ <string name="permdesc_readSms" product="tv" msgid="3054753345758011986">"Ova aplikacija može da čita sve SMS (tekstualne) poruke koje se čuvaju na Android TV uređaju."</string>
+ <string name="permdesc_readSms" product="default" msgid="774753371111699782">"Ova aplikacija može da čita sve SMS (tekstualne) poruke koje se čuvaju na telefonu."</string>
+ <string name="permlab_receiveWapPush" msgid="4223747702856929056">"prijem tekstualnih poruka (WAP)"</string>
+ <string name="permdesc_receiveWapPush" msgid="1638677888301778457">"Dozvoljava aplikaciji da prima i obrađuje WAP poruke. Ova dozvola uključuje mogućnost praćenja ili brisanja poruka koje vam se šalju, a koje vam se ne prikazuju."</string>
+ <string name="permlab_getTasks" msgid="7460048811831750262">"preuzimanje pokrenutih aplikacija"</string>
+ <string name="permdesc_getTasks" msgid="7388138607018233726">"Dozvoljava aplikaciji da preuzima informacije o aktuelnim i nedavno pokrenutim zadacima. Ovo može da omogući aplikaciji da otkrije informacije o tome koje se aplikacije koriste na uređaju."</string>
+ <string name="permlab_manageProfileAndDeviceOwners" msgid="639849495253987493">"upravljanje vlasnicima profila i uređaja"</string>
+ <string name="permdesc_manageProfileAndDeviceOwners" msgid="7304240671781989283">"Dozvoljava aplikaciji da podesi vlasnike profila i vlasnika uređaja."</string>
+ <string name="permlab_reorderTasks" msgid="7598562301992923804">"promena redosleda pokrenutih aplikacija"</string>
+ <string name="permdesc_reorderTasks" msgid="8796089937352344183">"Dozvoljava aplikaciji da premešta zadatke u prvi plan i u pozadinu. Aplikacija može da radi ovo bez vašeg unosa."</string>
+ <string name="permlab_enableCarMode" msgid="893019409519325311">"omogućavanje režima rada u automobilu"</string>
+ <string name="permdesc_enableCarMode" msgid="56419168820473508">"Dozvoljava aplikaciji da omogući režim rada u automobilu."</string>
+ <string name="permlab_killBackgroundProcesses" msgid="6559320515561928348">"zatvaranje drugih aplikacija"</string>
+ <string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Dozvoljava aplikaciji da zaustavi pozadinske procese drugih aplikacija. Ovo može da zaustavi druge aplikacije."</string>
+ <string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Ova aplikacija može da se prikazuje preko drugih aplikacija"</string>
+ <string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Ova aplikacija može da se prikazuje preko drugih aplikacija ili drugih delova delova ekrana. To može da ometa standardno korišćenje aplikacija i način na koji se druge aplikacije prikazuju."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"sakrij preklopne elemente drugih aplikacija"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ova aplikacija može da zahteva da sistem sakriva preklopne elemente iz aplikacija koji se prikazuju preko nje."</string>
+ <string name="permlab_runInBackground" msgid="541863968571682785">"pokretanje u pozadini"</string>
+ <string name="permdesc_runInBackground" msgid="4344539472115495141">"Ova aplikacija može da se pokreće u pozadini. To može brže da istroši bateriju."</string>
+ <string name="permlab_useDataInBackground" msgid="783415807623038947">"korišćenje podataka u pozadini"</string>
+ <string name="permdesc_useDataInBackground" msgid="1230753883865891987">"Ova aplikacija može da koristi podatke u pozadini. To može da poveća potrošnju podataka."</string>
+ <string name="permlab_schedule_exact_alarm" msgid="6683283918033029730">"Zakazivanje vremenski preciznih radnji"</string>
+ <string name="permdesc_schedule_exact_alarm" msgid="8198009212013211497">"Ova aplikacija može da zakaže da se rad dogodi u željeno vreme u budućnosti. To znači i da aplikacija može da radi kada ne koristite aktivno uređaj."</string>
+ <string name="permlab_use_exact_alarm" msgid="348045139777131552">"Zakazivanje alarma ili podsetnika za događaje"</string>
+ <string name="permdesc_use_exact_alarm" msgid="7033761461886938912">"Ova aplikacija može da zakazuje radnje poput alarma i podsetnika da bi vas obaveštavala u željeno vreme u budućnosti."</string>
+ <string name="permlab_persistentActivity" msgid="464970041740567970">"omogućavanje neprekidne aktivnosti aplikacije"</string>
+ <string name="permdesc_persistentActivity" product="tablet" msgid="6055271149187369916">"Dozvoljava aplikaciji da učini sopstvene komponente trajnim u memoriji. Ovo može da ograniči memoriju dostupnu drugim aplikacijama i uspori tablet."</string>
+ <string name="permdesc_persistentActivity" product="tv" msgid="6800526387664131321">"Dozvoljava aplikaciji da trajno zadrži neke svoje delove u memoriji. Ovo može da ograniči memoriju dostupnu drugim aplikacijama i uspori Android TV uređaj."</string>
+ <string name="permdesc_persistentActivity" product="default" msgid="1914841924366562051">"Dozvoljava aplikaciji da učini sopstvene komponente trajnim u memoriji. Ovo može da ograniči memoriju dostupnu drugim aplikacijama i uspori telefon."</string>
+ <string name="permlab_foregroundService" msgid="1768855976818467491">"pokreni uslugu u prvom planu"</string>
+ <string name="permdesc_foregroundService" msgid="8720071450020922795">"Dozvoljava aplikaciji da koristi usluge u prvom planu."</string>
+ <string name="permlab_foregroundServiceCamera" msgid="7814751737955715297">"pokretanje usluge u prvom planu koja pripada tipu „camera“"</string>
+ <string name="permdesc_foregroundServiceCamera" msgid="6973701931250595727">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „camera“"</string>
+ <string name="permlab_foregroundServiceConnectedDevice" msgid="3019650546176872501">"pokretanje usluge u prvom planu koja pripada tipu „connectedDevice“"</string>
+ <string name="permdesc_foregroundServiceConnectedDevice" msgid="1067457315741352963">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „connectedDevice“"</string>
+ <string name="permlab_foregroundServiceDataSync" msgid="5847463514326881076">"pokretanje usluge u prvom planu koja pripada tipu „dataSync“"</string>
+ <string name="permdesc_foregroundServiceDataSync" msgid="2267140263423973050">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „dataSync“"</string>
+ <string name="permlab_foregroundServiceLocation" msgid="3745428302378535690">"pokretanje usluge u prvom planu koja pripada tipu „location“"</string>
+ <string name="permdesc_foregroundServiceLocation" msgid="118894034365177183">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „location“"</string>
+ <string name="permlab_foregroundServiceMediaPlayback" msgid="4002687983891935514">"pokretanje usluge u prvom planu koja pripada tipu „mediaPlayback“"</string>
+ <string name="permdesc_foregroundServiceMediaPlayback" msgid="3638032446063968043">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „mediaPlayback“"</string>
+ <string name="permlab_foregroundServiceMediaProjection" msgid="2630868915733312527">"pokretanje usluge u prvom planu koja pripada tipu „mediaProjection“"</string>
+ <string name="permdesc_foregroundServiceMediaProjection" msgid="4805677128082002298">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „mediaProjection“"</string>
+ <string name="permlab_foregroundServiceMicrophone" msgid="7390033424890545399">"pokretanje usluge u prvom planu koja pripada tipu „microphone“"</string>
+ <string name="permdesc_foregroundServiceMicrophone" msgid="1206041516173483201">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „microphone“"</string>
+ <string name="permlab_foregroundServicePhoneCall" msgid="627937743867697892">"pokretanje usluge u prvom planu koja pripada tipu „phoneCall“"</string>
+ <string name="permdesc_foregroundServicePhoneCall" msgid="5941660252587015147">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „phoneCall“"</string>
+ <string name="permlab_foregroundServiceHealth" msgid="3675776442080928184">"pokretanje usluge u prvom planu koja pripada tipu „health“"</string>
+ <string name="permdesc_foregroundServiceHealth" msgid="2024586220562667185">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „health“"</string>
+ <string name="permlab_foregroundServiceRemoteMessaging" msgid="105670277002780950">"pokretanje usluge u prvom planu koja pripada tipu „remoteMessaging“"</string>
+ <string name="permdesc_foregroundServiceRemoteMessaging" msgid="8767598075877576277">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „remoteMessaging“"</string>
+ <string name="permlab_foregroundServiceSystemExempted" msgid="1597663713590612685">"pokretanje usluge u prvom planu koja pripada tipu „systemExempted“"</string>
+ <string name="permdesc_foregroundServiceSystemExempted" msgid="947381760834649622">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „systemExempted“"</string>
+ <string name="permlab_foregroundServiceFileManagement" msgid="2585000987966045030">"pokretanje usluge u prvom planu koja pripada tipu „fileManagement“"</string>
+ <string name="permdesc_foregroundServiceFileManagement" msgid="417103601269698508">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „fileManagement“"</string>
+ <string name="permlab_foregroundServiceSpecialUse" msgid="7973536745876645082">"pokretanje usluge u prvom planu koja pripada tipu „specialUse“"</string>
+ <string name="permdesc_foregroundServiceSpecialUse" msgid="646713654541885919">"Dozvoljava aplikaciji da koristi usluge u prvom planu koje pripadaju tipu „specialUse“"</string>
+ <string name="permlab_getPackageSize" msgid="375391550792886641">"merenje memorijskog prostora u aplikaciji"</string>
+ <string name="permdesc_getPackageSize" msgid="742743530909966782">"Dozvoljava aplikaciji da preuzme veličine kôda, podataka i keša."</string>
+ <string name="permlab_writeSettings" msgid="8057285063719277394">"izmena podešavanja sistema"</string>
+ <string name="permdesc_writeSettings" msgid="8293047411196067188">"Dozvoljava aplikaciji da menja podatke o podešavanju sistema. Zlonamerne aplikacije mogu da oštete konfiguraciju sistema."</string>
+ <string name="permlab_receiveBootCompleted" msgid="6643339400247325379">"pokretanje pri pokretanju sistema"</string>
+ <string name="permdesc_receiveBootCompleted" product="tablet" msgid="5565659082718177484">"Omogućava da se aplikacija pokrene odmah nakon pokretanja sistema. To može da uspori pokretanje tableta, pri čemu ova aplikacija može da uspori funkcionisanje celog tableta time što će uvek biti aktivna."</string>
+ <string name="permdesc_receiveBootCompleted" product="tv" msgid="4900842256047614307">"Dozvoljava aplikaciji da se pokrene odmah po uključivanju sistema. To može da uspori pokretanje Android TV uređaja i aplikacija može da uspori funkcionisanje uređaja u celini tako što će uvek biti aktivna."</string>
+ <string name="permdesc_receiveBootCompleted" product="default" msgid="7912677044558690092">"Omogućava da se aplikacija pokrene čim se sistem pokrene. To može da uspori pokretanje telefona, pri čemu ova aplikacija može da uspori funkcionisanje celog telefona time što će uvek biti aktivna."</string>
+ <string name="permlab_broadcastSticky" msgid="4552241916400572230">"slanje prijemčivih emitovanja"</string>
+ <string name="permdesc_broadcastSticky" product="tablet" msgid="5058486069846384013">"Dozvoljava aplikaciji da šalje prijemčiva emitovanja, koja ostaju po završetku emitovanja. Prekomerna upotreba može da uspori ili destabilizuje tablet tako što će ga primorati da troši previše memorije."</string>
+ <string name="permdesc_broadcastSticky" product="tv" msgid="2338185920171000650">"Dozvoljava aplikaciji da šalje lepljiva emitovanja koja ostaju po završetku emitovanja. Prekomerna upotreba može da uspori ili destabilizuje Android TV uređaj tako što će ga primorati da troši previše memorije."</string>
+ <string name="permdesc_broadcastSticky" product="default" msgid="134529339678913453">"Dozvoljava aplikaciji da šalje prijemčiva emitovanja, koja ostaju po završetku emitovanja. Prekomerna upotreba može da uspori ili destabilizuje telefon tako što će ga primorati da troši previše memorije."</string>
+ <string name="permlab_readContacts" msgid="8776395111787429099">"čitanje kontakata"</string>
+ <string name="permdesc_readContacts" product="tablet" msgid="6430093481659992692">"Dozvoljava aplikaciji da čita podatke o kontaktima koje čuvate na tabletu. Aplikacije će imati pristup i nalozima na vašem tabletu na kojima su napravljeni kontakti. Tu mogu da spadaju nalozi koje su otvorile aplikacije koje ste instalirali. Ova dozvola omogućava aplikacijama da čuvaju podatke o kontaktima i zlonamerne aplikacije mogu da dele podatke o kontaktima bez vašeg znanja."</string>
+ <string name="permdesc_readContacts" product="tv" msgid="8400138591135554789">"Dozvoljava aplikaciji da čita podatke o kontaktima koje čuvate na Android TV uređaju. Aplikacije će imati pristup i nalozima na vašem Android TV uređaju na kojima su napravljeni kontakti. Tu mogu da spadaju nalozi koje su otvorile aplikacije koje ste instalirali. Ova dozvola omogućava aplikacijama da čuvaju podatke o kontaktima i zlonamerne aplikacije mogu da dele podatke o kontaktima bez vašeg znanja."</string>
+ <string name="permdesc_readContacts" product="default" msgid="4911989776203207644">"Dozvoljava aplikaciji da čita podatke o kontaktima koje čuvate na telefonu. Aplikacije će imati pristup i nalozima na vašem telefonu na kojima su napravljeni kontakti. Tu mogu da spadaju nalozi koje su otvorile aplikacije koje ste instalirali. Ova dozvola omogućava aplikacijama da čuvaju podatke o kontaktima i zlonamerne aplikacije mogu da dele podatke o kontaktima bez vašeg znanja."</string>
+ <string name="permlab_writeContacts" msgid="8919430536404830430">"izmena kontakata"</string>
+ <string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"Dozvoljava aplikaciji da menja podatke o kontaktima koje čuvate na tabletu. Ova dozvola omogućava aplikacijama da brišu podatke o kontaktima."</string>
+ <string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"Dozvoljava aplikaciji da menja podatke o kontaktima koje čuvate na Android TV uređaju. Ova dozvola omogućava aplikacijama da brišu podatke o kontaktima."</string>
+ <string name="permdesc_writeContacts" product="default" msgid="8304795696237065281">"Dozvoljava aplikaciji da menja podatke o kontaktima koje čuvate na telefonu. Ova dozvola omogućava aplikacijama da brišu podatke o kontaktima."</string>
+ <string name="permlab_readCallLog" msgid="1739990210293505948">"čitanje evidencije poziva"</string>
+ <string name="permdesc_readCallLog" msgid="8964770895425873433">"Ova aplikacija može da čita istoriju poziva."</string>
+ <string name="permlab_writeCallLog" msgid="670292975137658895">"pisanje evidencije poziva"</string>
+ <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Dozvoljava aplikaciji da menja evidenciju poziva na tabletu, uključujući podatke o dolaznim i odlaznim pozivima. Zlonamerne aplikacije mogu ovo da koriste da bi brisale ili menjale evidenciju poziva."</string>
+ <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Dozvoljava aplikaciji da menja evidenciju poziva na Android TV uređaju, uključujući podatke o dolaznim i odlaznim pozivima. Zlonamerne aplikacije mogu ovo da koriste za brisanje ili menjanje evidencije poziva."</string>
+ <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Dozvoljava aplikaciji da menja evidenciju poziva na telefonu, uključujući podatke o dolaznim i odlaznim pozivima. Zlonamerne aplikacije mogu ovo da koriste da bi brisale ili menjale evidenciju poziva."</string>
+ <string name="permlab_bodySensors" msgid="662918578601619569">"Pristup podacima senzora za telo, kao što je puls, u toku korišćenja"</string>
+ <string name="permdesc_bodySensors" product="default" msgid="7652650410295512140">"Dozvoljava aplikaciji da pristupa podacima senzora za telo, kao što su puls, temperatura i procenat kiseonika u krvi dok se aplikacija koristi."</string>
+ <string name="permlab_bodySensors_background" msgid="4912560779957760446">"Pristup podacima senzora za telo, kao što je puls, u pozadini"</string>
+ <string name="permdesc_bodySensors_background" product="default" msgid="8870726027557749417">"Dozvoljava aplikaciji da pristupa podacima senzora za telo, kao što su puls, temperatura i procenat kiseonika u krvi dok je aplikacija u pozadini."</string>
+ <string name="permlab_readCalendar" msgid="6408654259475396200">"Čitanje događaja i podataka iz kalendara"</string>
+ <string name="permdesc_readCalendar" product="tablet" msgid="515452384059803326">"Ova aplikacija može da čita sve događaje iz kalendara koje čuvate na tabletu, kao i da deli ili čuva podatke iz kalendara."</string>
+ <string name="permdesc_readCalendar" product="tv" msgid="5811726712981647628">"Ova aplikacija može da čita sve događaje iz kalendara koje čuvate na Android TV uređaju, kao i da deli ili čuva podatke iz kalendara."</string>
+ <string name="permdesc_readCalendar" product="default" msgid="9118823807655829957">"Ova aplikacija može da čita sve događaje iz kalendara koje čuvate na telefonu, kao i da deli ili čuva podatke iz kalendara."</string>
+ <string name="permlab_writeCalendar" msgid="6422137308329578076">"dodavanje ili izmena kalendarskih događaja i slanje poruka e-pošte gostima bez znanja vlasnika"</string>
+ <string name="permdesc_writeCalendar" product="tablet" msgid="8722230940717092850">"Ova aplikaciji može da dodaje, uklanja ili menja događaje iz kalendara na tabletu. Ova aplikacija može da šalje poruke koje izgledaju kao da ih šalju vlasnici kalendara ili da menja događaje bez znanja vlasnika."</string>
+ <string name="permdesc_writeCalendar" product="tv" msgid="951246749004952706">"Ova aplikacija može da dodaje, uklanja ili menja događaje iz kalendara na Android TV uređaju. Ova aplikacija može da šalje poruke koje izgledaju kao da ih šalju vlasnici kalendara ili da menja događaje bez znanja vlasnika."</string>
+ <string name="permdesc_writeCalendar" product="default" msgid="5416380074475634233">"Ova aplikaciji može da dodaje, uklanja ili menja događaje iz kalendara na telefonu. Ova aplikacija može da šalje poruke koje izgledaju kao da ih šalju vlasnici kalendara ili da menja događaje bez znanja vlasnika."</string>
+ <string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pristup dodatnim komandama dobavljača lokacije"</string>
+ <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Omogućava aplikaciji da pristupa dodatnim komandama davaoca usluga lokacije. To može da omogući aplikaciji da utiče na rad GPS-a ili drugih izvora lokacije."</string>
+ <string name="permlab_accessFineLocation" msgid="6426318438195622966">"pristup preciznoj lokaciji samo u prvom planu"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ova aplikacija može da odredi vašu tačnu lokaciju na osnovu usluga lokacije dok se aplikacija koristi. Usluge lokacije za uređaj moraju da budu uključene da bi aplikacija odredila lokaciju. To može da poveća potrošnju baterije."</string>
+ <string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pristup približnoj lokaciji samo u prvom planu"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ova aplikacija može da odredi vašu približnu lokaciju na osnovu usluga lokacije dok se aplikacija koristi. Usluge lokacije za uređaj moraju da budu uključene da bi aplikacija odredila lokaciju."</string>
+ <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"pristup lokaciji u pozadini"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ova aplikacija može da pristupa lokaciji u bilo kom trenutku, čak i dok se aplikacija ne koristi."</string>
+ <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"promena audio podešavanja"</string>
+ <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Dozvoljava aplikaciji da menja globalna audio podešavanja kao što su jačina zvuka i izbor zvučnika koji se koristi kao izlaz."</string>
+ <string name="permlab_recordAudio" msgid="1208457423054219147">"snimanje audio zapisa"</string>
+ <string name="permdesc_recordAudio" msgid="5857246765327514062">"Ova aplikacija može da snima zvuk pomoću mikrofona dok se aplikacija koristi."</string>
+ <string name="permlab_recordBackgroundAudio" msgid="5891032812308878254">"da snima zvuk u pozadini"</string>
+ <string name="permdesc_recordBackgroundAudio" msgid="1992623135737407516">"Ova aplikacija može da snima zvuk pomoću mikrofona u bilo kom trenutku."</string>
+ <string name="permlab_detectScreenCapture" msgid="4447042362828799433">"otkrivanje snimanja ekrana u prozorima aplikacija"</string>
+ <string name="permdesc_detectScreenCapture" msgid="3485784917960342284">"Ako se tokom korišćenja ove aplikacije napravi snimak ekrana, aplikacija će dobiti obaveštenje."</string>
+ <string name="permlab_sim_communication" msgid="176788115994050692">"slanje komandi na SIM"</string>
+ <string name="permdesc_sim_communication" msgid="4179799296415957960">"Omogućava aplikaciji da šalje komande SIM kartici. To je veoma opasno."</string>
+ <string name="permlab_activityRecognition" msgid="1782303296053990884">"prepoznavanje fizičkih aktivnosti"</string>
+ <string name="permdesc_activityRecognition" msgid="8667484762991357519">"Ova aplikacija može da prepozna fizičke aktivnosti."</string>
+ <string name="permlab_camera" msgid="6320282492904119413">"snimanje fotografija i video snimaka"</string>
+ <string name="permdesc_camera" msgid="5240801376168647151">"Ova aplikacija može da snima slike i video snimke pomoću kamere dok se aplikacija koristi."</string>
+ <string name="permlab_backgroundCamera" msgid="7549917926079731681">"da snima slike i video snimke u pozadini"</string>
+ <string name="permdesc_backgroundCamera" msgid="1615291686191138250">"Ova aplikacija može da snima fotografije i video snimke pomoću kamere u bilo kom trenutku."</string>
+ <string name="permlab_systemCamera" msgid="3642917457796210580">"Dozvolite nekoj aplikaciji ili usluzi da pristupa kamerama sistema da bi snimala slike i video snimke"</string>
+ <string name="permdesc_systemCamera" msgid="5938360914419175986">"Ova privilegovana sistemska aplikacija može da snima slike i video snimke pomoću kamere sistema u bilo kom trenutku. Aplikacija treba da ima i dozvolu android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Dozvolite aplikaciji ili usluzi da dobija povratne pozive o otvaranju ili zatvaranju uređaja sa kamerom."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Ova aplikacija može da dobija povratne pozive kada se bilo koji uređaj sa kamerom otvara ili zatvara (pomoću neke aplikacije)."</string>
+ <string name="permlab_vibrate" msgid="8596800035791962017">"kontrola vibracije"</string>
+ <string name="permdesc_vibrate" msgid="8733343234582083721">"Dozvoljava aplikaciji da kontroliše vibraciju."</string>
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dozvoljava aplikaciji da pristupa stanju vibriranja."</string>
+ <string name="permlab_callPhone" msgid="1798582257194643320">"direktno pozivanje brojeva telefona"</string>
+ <string name="permdesc_callPhone" msgid="5439809516131609109">"Dozvoljava aplikaciji da poziva brojeve telefona bez vaše dozvole. Ovo može da dovede do neočekivanih troškova ili poziva. Imajte na umu da ovo ne dozvoljava aplikaciji da poziva brojeve za hitne slučajeve. Zlonamerne aplikacije mogu da pozivaju bez vaše potvrde, što može da dovede do troškova."</string>
+ <string name="permlab_accessImsCallService" msgid="442192920714863782">"pristup usluzi poziva pomoću razmene trenutnih poruka"</string>
+ <string name="permdesc_accessImsCallService" msgid="6328551241649687162">"Dozvoljava aplikaciji da koristi uslugu razmene trenutnih poruka da bi upućivala pozive bez vaše intervencije."</string>
+ <string name="permlab_readPhoneState" msgid="8138526903259297969">"čitanje statusa i identiteta telefona"</string>
+ <string name="permdesc_readPhoneState" msgid="7229063553502788058">"Dozvoljava aplikaciji da pristupa funkcijama telefona na uređaju. Ova dozvola omogućava aplikaciji da utvrdi broj telefona i ID-ove uređaja, zatim da li je poziv aktivan, kao i broj daljinskog uređaja sa kojim je uspostavljen poziv."</string>
+ <string name="permlab_readBasicPhoneState" msgid="3214853233263871347">"očitavanje osnovnog telefonskog statusa i identiteta"</string>
+ <string name="permdesc_readBasicPhoneState" msgid="828185691675460520">"Omogućava aplikaciji da pristupa osnovnim telefonskim funkcijama uređaja."</string>
+ <string name="permlab_manageOwnCalls" msgid="9033349060307561370">"preusmeravanje poziva preko sistema"</string>
+ <string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Dozvoljava aplikaciji da preusmerava pozive preko sistema da bi poboljšala doživljaj pozivanja."</string>
+ <string name="permlab_callCompanionApp" msgid="3654373653014126884">"pregled i kontrola poziva preko sistema."</string>
+ <string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Dozvoljava aplikaciji da pregleda i kontroliše trenutne pozive na uređaju. To obuhvata informacije poput brojeva telefona i statusa poziva."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"izuzimanje iz ograničenja za snimanje zvuka"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Izuzmite aplikaciju iz ograničenja za snimanje zvuka."</string>
+ <string name="permlab_acceptHandover" msgid="2925523073573116523">"nastavi poziv u drugoj aplikaciji"</string>
+ <string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Dozvoljava aplikaciji da nastavi poziv koji je započet u drugoj aplikaciji."</string>
+ <string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"čitanje brojeva telefona"</string>
+ <string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Dozvoljava aplikaciji da pristupa brojevima telefona na uređaju."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ne isključuj ekran u automobilu"</string>
+ <string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"sprečavanje prelaska tableta u stanje spavanja"</string>
+ <string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"sprečava Android TV uređaj da pređe u stanje spavanja"</string>
+ <string name="permlab_wakeLock" product="default" msgid="569409726861695115">"sprečavanje prelaska telefona u stanje spavanja"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Dozvoljava aplikaciji da ne isključuje ekran u automobilu."</string>
+ <string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Dozvoljava aplikaciji da spreči tablet da pređe u stanje spavanja."</string>
+ <string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Dozvoljava aplikaciji da spreči Android TV uređaj da pređe u stanje spavanja."</string>
+ <string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Dozvoljava aplikaciji da spreči telefon da pređe u stanje spavanja."</string>
+ <string name="permlab_transmitIr" msgid="8077196086358004010">"prenos infracrvenih zraka"</string>
+ <string name="permdesc_transmitIr" product="tablet" msgid="5884738958581810253">"Dozvoljava aplikaciji da koristi odašiljač infracrvenih zraka tableta."</string>
+ <string name="permdesc_transmitIr" product="tv" msgid="3278506969529173281">"Dozvoljava da aplikacija koristi odašiljač infracrvenih zraka na Android TV uređaju."</string>
+ <string name="permdesc_transmitIr" product="default" msgid="8484193849295581808">"Dozvoljava aplikaciji da koristi odašiljač infracrvenih zraka telefona."</string>
+ <string name="permlab_setWallpaper" msgid="6959514622698794511">"podešavanje pozadine"</string>
+ <string name="permdesc_setWallpaper" msgid="2973996714129021397">"Dozvoljava aplikaciji da postavlja pozadinu sistema."</string>
+ <string name="permlab_setWallpaperHints" msgid="1153485176642032714">"prilagođavanje veličine pozadine"</string>
+ <string name="permdesc_setWallpaperHints" msgid="6257053376990044668">"Dozvoljava aplikaciji da podesi savete za sistemsku veličinu pozadine."</string>
+ <string name="permlab_setTimeZone" msgid="7922618798611542432">"podešavanje vremenske zone"</string>
+ <string name="permdesc_setTimeZone" product="tablet" msgid="1788868809638682503">"Dozvoljava aplikaciji da promeni vremensku zonu tableta."</string>
+ <string name="permdesc_setTimeZone" product="tv" msgid="9069045914174455938">"Dozvoljava aplikaciji da menja vremensku zonu Android TV uređaja."</string>
+ <string name="permdesc_setTimeZone" product="default" msgid="4611828585759488256">"Dozvoljava aplikaciji da promeni vremensku zonu telefona."</string>
+ <string name="permlab_getAccounts" msgid="5304317160463582791">"pronalaženje naloga na uređaju"</string>
+ <string name="permdesc_getAccounts" product="tablet" msgid="1784452755887604512">"Dozvoljava aplikaciji da preuzima listu naloga poznatih tabletu. Ovo može da obuhvata bilo koje naloge koje prave aplikacije koje instalirate."</string>
+ <string name="permdesc_getAccounts" product="tv" msgid="437604680436540822">"Dozvoljava aplikaciji da dođe do liste naloga poznatih Android TV uređaju. Ovo može da obuhvata sve naloge koje otvaraju aplikacije koje ste instalirali."</string>
+ <string name="permdesc_getAccounts" product="default" msgid="2491273043569751867">"Dozvoljava aplikaciji da preuzima listu naloga poznatih telefonu. Ovo može da obuhvata bilo koje naloge koje prave aplikacije koje instalirate."</string>
+ <string name="permlab_accessNetworkState" msgid="2349126720783633918">"pregled mrežnih veza"</string>
+ <string name="permdesc_accessNetworkState" msgid="4394564702881662849">"Dozvoljava aplikaciji da pregleda informacije o mrežnim vezama kao što su informacije o tome koje mreže postoje i koje mreže su povezane."</string>
+ <string name="permlab_createNetworkSockets" msgid="3224420491603590541">"ima pun mrežni pristup"</string>
+ <string name="permdesc_createNetworkSockets" msgid="7722020828749535988">"Dozvoljava aplikaciji da pravi mrežne priključke i koristi prilagođene mrežne protokole. Pregledač i druge aplikacije omogućavaju slanje podataka na Internet, pa ova dozvola nije potrebna za slanje podataka na Internet."</string>
+ <string name="permlab_changeNetworkState" msgid="8945711637530425586">"promena veze sa mrežom"</string>
+ <string name="permdesc_changeNetworkState" msgid="649341947816898736">"Dozvoljava aplikaciji da menja status povezivanja sa mrežom."</string>
+ <string name="permlab_changeTetherState" msgid="9079611809931863861">"promena povezivanja privezivanjem"</string>
+ <string name="permdesc_changeTetherState" msgid="3025129606422533085">"Dozvoljava aplikaciji da menja status veze sa privezanom mrežom."</string>
+ <string name="permlab_accessWifiState" msgid="5552488500317911052">"pregled WiFi veza"</string>
+ <string name="permdesc_accessWifiState" msgid="6913641669259483363">"Dozvoljava aplikaciji da pregleda informacije o WiFi umrežavanju, kao što su informacije o tome da li je WiFi omogućen i nazivi povezanih WiFi uređaja."</string>
+ <string name="permlab_changeWifiState" msgid="7947824109713181554">"povezivanje i prekid veze sa WiFi mrežom"</string>
+ <string name="permdesc_changeWifiState" msgid="7170350070554505384">"Dozvoljava aplikaciji da se povezuje sa pristupnim tačkama za WiFi i prekida vezu sa njima, kao i da unosi promene u konfiguraciju uređaja za WiFi mreže."</string>
+ <string name="permlab_changeWifiMulticastState" msgid="285626875870754696">"omogućavanje prijema višesmernog WiFi saobraćaja"</string>
+ <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="191079868596433554">"Dozvoljava aplikaciji da prima pakete koji se šalju na sve uređaje na WiFi mreži pomoću višesmernih adresa, a ne samo na tablet. Koristi više napajanja od režima jednosmernog saobraćaja."</string>
+ <string name="permdesc_changeWifiMulticastState" product="tv" msgid="1336952358450652595">"Dozvoljava aplikaciji da prima pakete koji se šalju na sve uređaje na WiFi mreži pomoću višesmernih adresa, a ne samo na Android TV uređaj. Koristi više energije od režima bez višesmernog slanja."</string>
+ <string name="permdesc_changeWifiMulticastState" product="default" msgid="8296627590220222740">"Dozvoljava aplikaciji da prima pakete koji se šalju na sve uređaje na WiFi mreži pomoću višesmernih adresa, a ne samo na telefon. Koristi više napajanja od režima jednosmernog saobraćaja."</string>
+ <string name="permlab_bluetoothAdmin" msgid="6490373569441946064">"pristup Bluetooth podešavanjima"</string>
+ <string name="permdesc_bluetoothAdmin" product="tablet" msgid="5370837055438574863">"Dozvoljava aplikaciji da konfiguriše lokalni Bluetooth tablet, kao i da otkrije daljinske uređaje i upari se sa njima."</string>
+ <string name="permdesc_bluetoothAdmin" product="tv" msgid="1623992984547014588">"Dozvoljava aplikaciji da konfiguriše Bluetooth na Android TV uređaju i da otkrije udaljene uređaje i upari se sa njima."</string>
+ <string name="permdesc_bluetoothAdmin" product="default" msgid="7381341743021234863">"Dozvoljava aplikaciji da konfiguriše lokalni Bluetooth telefon, kao i da otkrije daljinske uređaje i upari se sa njima."</string>
+ <string name="permlab_accessWimaxState" msgid="7029563339012437434">"povezivanje i prekid veze sa WiMAX-om"</string>
+ <string name="permdesc_accessWimaxState" msgid="5372734776802067708">"Dozvoljava aplikaciji da utvrdi da li je WiMAX omogućen, kao i informacije o bilo kojim povezanim WiMAX mrežama."</string>
+ <string name="permlab_changeWimaxState" msgid="6223305780806267462">"promeni WiMAX statusa"</string>
+ <string name="permdesc_changeWimaxState" product="tablet" msgid="4011097664859480108">"Dozvoljava aplikaciji da povezuje tablet sa WiMAX mrežama i prekida veze sa njima."</string>
+ <string name="permdesc_changeWimaxState" product="tv" msgid="5373274458799425276">"Dozvoljava aplikaciji da povezuje Android TV uređaj sa WiMAX mrežama i da prekida tu vezu."</string>
+ <string name="permdesc_changeWimaxState" product="default" msgid="1551666203780202101">"Dozvoljava aplikaciji da povezuje telefon sa WiMAX mrežama i prekida veze sa njima."</string>
+ <string name="permlab_bluetooth" msgid="586333280736937209">"uparivanje sa Bluetooth uređajima"</string>
+ <string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"Dozvoljava aplikaciji da pregleda konfiguraciju Bluetooth-a na tabletu, kao i da uspostavlja i prihvata veze sa uparenim uređajima."</string>
+ <string name="permdesc_bluetooth" product="tv" msgid="8851534496561034998">"Dozvoljava aplikaciji da pregleda konfiguraciju Bluetooth-a na Android TV uređaju i da uspostavlja i prihvata veze sa uparenim uređajima."</string>
+ <string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"Dozvoljava aplikaciji da pregleda konfiguraciju Bluetooth-a na telefonu, kao i da uspostavlja i prihvata veze sa uparenim uređajima."</string>
+ <string name="permlab_bluetooth_scan" msgid="5402587142833124594">"otkrivanje i uparivanje sa obližnjim Bluetooth uređ."</string>
+ <string name="permdesc_bluetooth_scan" product="default" msgid="6540723536925289276">"Dozvoljava aplikaciji da otkriva Bluetooth uređaje u blizini i uparuje se sa njima"</string>
+ <string name="permlab_bluetooth_connect" msgid="6657463246355003528">"povezivanje sa uparenim Bluetooth uređajima"</string>
+ <string name="permdesc_bluetooth_connect" product="default" msgid="4546016548795544617">"Dozvoljava aplikaciji da se povezuje sa uparenim Bluetooth uređajima"</string>
+ <string name="permlab_bluetooth_advertise" msgid="2781147747928853177">"oglašavanje na Bluetooth uređajima u blizini"</string>
+ <string name="permdesc_bluetooth_advertise" product="default" msgid="6085174451034210183">"Dozvoljava aplikaciji da se oglašava na Bluetooth uređajima u blizini"</string>
+ <string name="permlab_uwb_ranging" msgid="8141915781475770665">"određivanje razdaljine između uređaja ultra-širokog pojasa u blizini"</string>
+ <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Dozvoljava aplikaciji da određuje relativnu razdaljinu između uređaja ultra-širokog pojasa u blizini"</string>
+ <string name="permlab_nearby_wifi_devices" msgid="392774237063608500">"interakcija sa WiFi uređajima u blizini"</string>
+ <string name="permdesc_nearby_wifi_devices" msgid="3054307728646332906">"Dozvoljava aplikaciji da se oglašava, povezuje i utvrđuje relativnu poziciju WiFi uređaja u blizini"</string>
+ <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"Informacije o željenoj NFC usluzi za plaćanje"</string>
+ <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Dozvoljava aplikaciji da preuzima informacije o željenoj NFC usluzi za plaćanje, poput registrovanih identifikatora aplikacija i odredišta preusmeravanja."</string>
+ <string name="permlab_nfc" msgid="1904455246837674977">"kontrola komunikacije u užem polju (Near Field Communication)"</string>
+ <string name="permdesc_nfc" msgid="8352737680695296741">"Dozvoljava aplikaciji da komunicira sa oznakama, karticama i čitačima komunikacije kratkog dometa (NFC)."</string>
+ <string name="permlab_disableKeyguard" msgid="3605253559020928505">"onemogućavanje zaključavanja ekrana"</string>
+ <string name="permdesc_disableKeyguard" msgid="3223710003098573038">"Dozvoljava aplikaciji da onemogući zaključavanje tastature i sve povezane bezbednosne mere sa lozinkama. Na primer, telefon onemogućava zaključavanje tastature pri prijemu dolaznog telefonskog poziva, a zatim ga ponovo omogućava po završetku poziva."</string>
+ <string name="permlab_requestPasswordComplexity" msgid="1808977190557794109">"traženje složenosti zaključavanja ekrana"</string>
+ <string name="permdesc_requestPasswordComplexity" msgid="1130556896836258567">"Dozvoljava aplikaciji da sazna nivo složenosti zaključavanja ekrana (visoka, srednja, niska ili nijedna), što ukazuje na mogući opseg trajanja i tip zaključavanja ekrana. Aplikacija može i da predlaže korisnicima da ažuriraju zaključavanje ekrana na određeni nivo, ali korisnici slobodno mogu da zanemare to i da idu na druge stranice. Imajte na umu da se podaci za zaključavanje ekrana ne čuvaju kao običan tekst, pa aplikacija ne zna tačnu lozinku."</string>
+ <string name="permlab_postNotification" msgid="4875401198597803658">"prikazivanje obaveštenja"</string>
+ <string name="permdesc_postNotification" msgid="5974977162462877075">"Dozvoljava aplikaciji da prikazuje obaveštenja"</string>
+ <string name="permlab_turnScreenOn" msgid="219344053664171492">"uključivanje ekrana"</string>
+ <string name="permdesc_turnScreenOn" msgid="4394606875897601559">"Dozvoljava aplikaciji da uključi ekran."</string>
+ <string name="permlab_useBiometric" msgid="6314741124749633786">"koristi biometrijski hardver"</string>
+ <string name="permdesc_useBiometric" msgid="7502858732677143410">"Dozvoljava aplikaciji da koristi biometrijski hardver za potvrdu identiteta"</string>
+ <string name="permlab_manageFingerprint" msgid="7432667156322821178">"upravljaj hardverom za otiske prstiju"</string>
+ <string name="permdesc_manageFingerprint" msgid="2025616816437339865">"Dozvoljava aplikaciji da aktivira metode za dodavanje i brisanje šablona otisaka prstiju koji će se koristiti."</string>
+ <string name="permlab_useFingerprint" msgid="1001421069766751922">"koristi hardver za otiske prstiju"</string>
+ <string name="permdesc_useFingerprint" msgid="412463055059323742">"Dozvoljava aplikaciji da koristi hardver za otiske prstiju radi potvrde identiteta"</string>
+ <string name="permlab_audioWrite" msgid="8501705294265669405">"izmena muzičke kolekcije"</string>
+ <string name="permdesc_audioWrite" msgid="8057399517013412431">"Dozvoljava aplikaciji da menja muzičku kolekciju."</string>
+ <string name="permlab_videoWrite" msgid="5940738769586451318">"izmena video kolekcije"</string>
+ <string name="permdesc_videoWrite" msgid="6124731210613317051">"Dozvoljava aplikaciji da menja video kolekciju."</string>
+ <string name="permlab_imagesWrite" msgid="1774555086984985578">"izmena kolekcije slika"</string>
+ <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Dozvoljava aplikaciji da menja kolekciju slika."</string>
+ <string name="permlab_mediaLocation" msgid="7368098373378598066">"čitanje lokacija iz medijske kolekcije"</string>
+ <string name="permdesc_mediaLocation" msgid="597912899423578138">"Dozvoljava aplikaciji da čita lokacije iz medijske kolekcije."</string>
+ <string name="biometric_app_setting_name" msgid="3339209978734534457">"Koristite biometriju"</string>
+ <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Koristite biometriju ili zaključavanje ekrana"</string>
+ <string name="biometric_dialog_default_title" msgid="55026799173208210">"Potvrdite svoj identitet"</string>
+ <string name="biometric_dialog_default_subtitle" msgid="8457232339298571992">"Koristite biometrijski podatak da biste nastavili"</string>
+ <string name="biometric_or_screen_lock_dialog_default_subtitle" msgid="159539678371552009">"Koristite biometrijski podatak ili zaključavanje ekrana da biste nastavili"</string>
+ <string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"Biometrijski hardver nije dostupan"</string>
+ <string name="biometric_error_user_canceled" msgid="6732303949695293730">"Potvrda identiteta je otkazana"</string>
+ <string name="biometric_not_recognized" msgid="5106687642694635888">"Nije prepoznato"</string>
+ <string name="biometric_error_canceled" msgid="8266582404844179778">"Potvrda identiteta je otkazana"</string>
+ <string name="biometric_error_device_not_secured" msgid="3129845065043995924">"Niste podesili ni PIN, ni šablon, ni lozinku"</string>
+ <string name="biometric_error_generic" msgid="6784371929985434439">"Greška pri potvrdi identiteta"</string>
+ <string name="screen_lock_app_setting_name" msgid="6054944352976789228">"Koristite zaključavanje ekrana"</string>
+ <string name="screen_lock_dialog_default_subtitle" msgid="120359538048533695">"Upotrebite zaključavanje ekrana da biste nastavili"</string>
+ <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Jako pritisnite senzor"</string>
+ <string name="fingerprint_acquired_insufficient" msgid="623888149088216458">"Prepoznavanje otiska prsta nije uspelo. Probajte ponovo."</string>
+ <string name="fingerprint_acquired_imager_dirty" msgid="1770676120848224250">"Obrišite senzor za otisak prsta i probajte ponovo"</string>
+ <string name="fingerprint_acquired_imager_dirty_alt" msgid="9169582140486372897">"Obrišite senzor i probajte ponovo"</string>
+ <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Jako pritisnite senzor"</string>
+ <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Previše sporo ste pomerili prst. Probajte ponovo."</string>
+ <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Probajte sa drugim otiskom prsta"</string>
+ <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Previše je svetlo"</string>
+ <string name="fingerprint_acquired_power_press" msgid="3107864151278434961">"Otkriven je pritisak dugmeta za uključivanje"</string>
+ <string name="fingerprint_acquired_try_adjusting" msgid="3667006071003809364">"Probajte da prilagodite"</string>
+ <string name="fingerprint_acquired_immobile" msgid="1621891895241888048">"Svaki put pomalo promenite položaj prsta"</string>
<string-array name="fingerprint_acquired_vendor">
</string-array>
- <string name="fingerprint_error_not_match" msgid="4599441812893438961">"Отисак прста није препознат"</string>
- <string name="fingerprint_udfps_error_not_match" msgid="8236930793223158856">"Отисак прста није препознат"</string>
- <string name="fingerprint_authenticated" msgid="2024862866860283100">"Отисак прста је потврђен"</string>
- <string name="face_authenticated_no_confirmation_required" msgid="8867889115112348167">"Лице је потврђено"</string>
- <string name="face_authenticated_confirmation_required" msgid="6872632732508013755">"Лице је потврђено. Притисните Потврди"</string>
- <string name="fingerprint_error_hw_not_available" msgid="4571700896929561202">"Хардвер за отиске прстију није доступан."</string>
- <string name="fingerprint_error_no_space" msgid="7285481581905967580">"Подешавање отиска прста није успело"</string>
- <string name="fingerprint_error_timeout" msgid="7361192266621252164">"Време за подешавање отиска прста је истекло. Пробајте поново."</string>
- <string name="fingerprint_error_canceled" msgid="540026881380070750">"Радња са отиском прста је отказана."</string>
- <string name="fingerprint_error_user_canceled" msgid="7685676229281231614">"Корисник је отказао радњу са отиском прста."</string>
- <string name="fingerprint_error_lockout" msgid="6626753679019351368">"Превише покушаја. Користите закључавање екрана уместо тога."</string>
- <string name="fingerprint_error_lockout_permanent" msgid="9060651300306264843">"Превише покушаја. Користите закључавање екрана уместо тога."</string>
- <string name="fingerprint_error_unable_to_process" msgid="2446280592818621224">"Обрађивање отиска прста није успело. Пробајте поново."</string>
- <string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Није регистрован ниједан отисак прста."</string>
- <string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Овај уређај нема сензор за отисак прста."</string>
- <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сензор је привремено онемогућен."</string>
- <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Не можете да користите сензор за отисак прста. Посетите добављача за поправке"</string>
- <string name="fingerprint_error_power_pressed" msgid="5479524500542129414">"Притиснуто је дугме за укључивање"</string>
- <string name="fingerprint_name_template" msgid="8941662088160289778">"Прст <xliff:g id="FINGERID">%d</xliff:g>"</string>
- <string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Користите отисак прста"</string>
- <string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Користите отисак прста или закључавање екрана"</string>
- <string name="fingerprint_dialog_default_subtitle" msgid="3879832845486835905">"Наставите помоћу отиска прста"</string>
- <string name="fingerprint_or_screen_lock_dialog_default_subtitle" msgid="5195808203117992200">"Користите отисак прста или закључавање екрана да бисте наставили"</string>
+ <string name="fingerprint_error_not_match" msgid="4599441812893438961">"Otisak prsta nije prepoznat"</string>
+ <string name="fingerprint_udfps_error_not_match" msgid="8236930793223158856">"Otisak prsta nije prepoznat"</string>
+ <string name="fingerprint_authenticated" msgid="2024862866860283100">"Otisak prsta je potvrđen"</string>
+ <string name="face_authenticated_no_confirmation_required" msgid="8867889115112348167">"Lice je potvrđeno"</string>
+ <string name="face_authenticated_confirmation_required" msgid="6872632732508013755">"Lice je potvrđeno. Pritisnite Potvrdi"</string>
+ <string name="fingerprint_error_hw_not_available" msgid="4571700896929561202">"Hardver za otiske prstiju nije dostupan."</string>
+ <string name="fingerprint_error_no_space" msgid="7285481581905967580">"Podešavanje otiska prsta nije uspelo"</string>
+ <string name="fingerprint_error_timeout" msgid="7361192266621252164">"Vreme za podešavanje otiska prsta je isteklo. Probajte ponovo."</string>
+ <string name="fingerprint_error_canceled" msgid="540026881380070750">"Radnja sa otiskom prsta je otkazana."</string>
+ <string name="fingerprint_error_user_canceled" msgid="7685676229281231614">"Korisnik je otkazao radnju sa otiskom prsta."</string>
+ <string name="fingerprint_error_lockout" msgid="6626753679019351368">"Previše pokušaja. Koristite zaključavanje ekrana umesto toga."</string>
+ <string name="fingerprint_error_lockout_permanent" msgid="9060651300306264843">"Previše pokušaja. Koristite zaključavanje ekrana umesto toga."</string>
+ <string name="fingerprint_error_unable_to_process" msgid="2446280592818621224">"Obrađivanje otiska prsta nije uspelo. Probajte ponovo."</string>
+ <string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nije registrovan nijedan otisak prsta."</string>
+ <string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ovaj uređaj nema senzor za otisak prsta."</string>
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je privremeno onemogućen."</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Ne možete da koristite senzor za otisak prsta. Posetite dobavljača za popravke"</string>
+ <string name="fingerprint_error_power_pressed" msgid="5479524500542129414">"Pritisnuto je dugme za uključivanje"</string>
+ <string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
+ <string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Koristite otisak prsta"</string>
+ <string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Koristite otisak prsta ili zaključavanje ekrana"</string>
+ <string name="fingerprint_dialog_default_subtitle" msgid="3879832845486835905">"Nastavite pomoću otiska prsta"</string>
+ <string name="fingerprint_or_screen_lock_dialog_default_subtitle" msgid="5195808203117992200">"Koristite otisak prsta ili zaključavanje ekrana da biste nastavili"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
- <string name="fingerprint_error_vendor_unknown" msgid="4170002184907291065">"Дошло је до проблема. Пробајте поново."</string>
- <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Икона отиска прста"</string>
- <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Откључавање лицем"</string>
- <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Проблем са откључавање лицем"</string>
- <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Додирните да бисте избрисали модел лица, па поново додајте своје лице"</string>
- <string name="face_setup_notification_title" msgid="8843461561970741790">"Подесите откључавање лицем"</string>
- <string name="face_setup_notification_content" msgid="5463999831057751676">"Откључајте телефон тако што ћете га погледати"</string>
- <string name="face_sensor_privacy_enabled" msgid="7407126963510598508">"Да бисте користили откључавање лицем, укључите "<b>"приступ камери"</b>" у одељку Подешавања > Приватност"</string>
- <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Подесите још начина за откључавање"</string>
- <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Додирните да бисте додали отисак прста"</string>
- <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Откључавање отиском прста"</string>
- <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Не можете да користите сензор за отисак прста"</string>
- <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Посетите добављача за поправке."</string>
- <string name="face_acquired_insufficient" msgid="6889245852748492218">"Прављење модела лица није успело. Пробајте поново."</string>
- <string name="face_acquired_too_bright" msgid="8070756048978079164">"Превише је светло. Пробајте са слабијим осветљењем."</string>
- <string name="face_acquired_too_dark" msgid="8539853432479385326">"Нема довољно светла"</string>
- <string name="face_acquired_too_close" msgid="4453646176196302462">"Удаљите телефон"</string>
- <string name="face_acquired_too_far" msgid="2922278214231064859">"Приближите телефон"</string>
- <string name="face_acquired_too_high" msgid="8278815780046368576">"Померите телефон нагоре"</string>
- <string name="face_acquired_too_low" msgid="4075391872960840081">"Померите телефон надоле"</string>
- <string name="face_acquired_too_right" msgid="6245286514593540859">"Померите телефон улево"</string>
- <string name="face_acquired_too_left" msgid="9201762240918405486">"Померите телефон удесно"</string>
- <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"Гледајте право у уређај."</string>
- <string name="face_acquired_not_detected" msgid="1057966913397548150">"Не види се лице. Држите телефон у висини очију."</string>
- <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Много се померате. Држите телефон мирно."</string>
- <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Поново региструјте лице."</string>
- <string name="face_acquired_too_different" msgid="2520389515612972889">"Лице није препознато. Пробајте поново."</string>
- <string name="face_acquired_too_similar" msgid="8882920552674125694">"Мало померите главу"</string>
- <string name="face_acquired_pan_too_extreme" msgid="5417928604710621088">"Гледајте право у телефон"</string>
- <string name="face_acquired_tilt_too_extreme" msgid="5715715666540716620">"Гледајте право у телефон"</string>
- <string name="face_acquired_roll_too_extreme" msgid="8261939882838881194">"Гледајте право у телефон"</string>
- <string name="face_acquired_obscured" msgid="4917643294953326639">"Уклоните све што вам заклања лице."</string>
- <string name="face_acquired_sensor_dirty" msgid="8968391891086721678">"Очистите горњи део екрана, укључујући црну траку"</string>
+ <string name="fingerprint_error_vendor_unknown" msgid="4170002184907291065">"Došlo je do problema. Probajte ponovo."</string>
+ <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona otiska prsta"</string>
+ <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Otključavanje licem"</string>
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problem sa otključavanje licem"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Dodirnite da biste izbrisali model lica, pa ponovo dodajte svoje lice"</string>
+ <string name="face_setup_notification_title" msgid="8843461561970741790">"Podesite otključavanje licem"</string>
+ <string name="face_setup_notification_content" msgid="5463999831057751676">"Otključajte telefon tako što ćete ga pogledati"</string>
+ <string name="face_sensor_privacy_enabled" msgid="7407126963510598508">"Da biste koristili otključavanje licem, uključite "<b>"pristup kameri"</b>" u odeljku Podešavanja > Privatnost"</string>
+ <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Podesite još načina za otključavanje"</string>
+ <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dodirnite da biste dodali otisak prsta"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Otključavanje otiskom prsta"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Ne možete da koristite senzor za otisak prsta"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Posetite dobavljača za popravke."</string>
+ <string name="face_acquired_insufficient" msgid="6889245852748492218">"Pravljenje modela lica nije uspelo. Probajte ponovo."</string>
+ <string name="face_acquired_too_bright" msgid="8070756048978079164">"Previše je svetlo. Probajte sa slabijim osvetljenjem."</string>
+ <string name="face_acquired_too_dark" msgid="8539853432479385326">"Nema dovoljno svetla"</string>
+ <string name="face_acquired_too_close" msgid="4453646176196302462">"Udaljite telefon"</string>
+ <string name="face_acquired_too_far" msgid="2922278214231064859">"Približite telefon"</string>
+ <string name="face_acquired_too_high" msgid="8278815780046368576">"Pomerite telefon nagore"</string>
+ <string name="face_acquired_too_low" msgid="4075391872960840081">"Pomerite telefon nadole"</string>
+ <string name="face_acquired_too_right" msgid="6245286514593540859">"Pomerite telefon ulevo"</string>
+ <string name="face_acquired_too_left" msgid="9201762240918405486">"Pomerite telefon udesno"</string>
+ <string name="face_acquired_poor_gaze" msgid="4427153558773628020">"Gledajte pravo u uređaj."</string>
+ <string name="face_acquired_not_detected" msgid="1057966913397548150">"Ne vidi se lice. Držite telefon u visini očiju."</string>
+ <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Mnogo se pomerate. Držite telefon mirno."</string>
+ <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Ponovo registrujte lice."</string>
+ <string name="face_acquired_too_different" msgid="2520389515612972889">"Lice nije prepoznato. Probajte ponovo."</string>
+ <string name="face_acquired_too_similar" msgid="8882920552674125694">"Malo pomerite glavu"</string>
+ <string name="face_acquired_pan_too_extreme" msgid="5417928604710621088">"Gledajte pravo u telefon"</string>
+ <string name="face_acquired_tilt_too_extreme" msgid="5715715666540716620">"Gledajte pravo u telefon"</string>
+ <string name="face_acquired_roll_too_extreme" msgid="8261939882838881194">"Gledajte pravo u telefon"</string>
+ <string name="face_acquired_obscured" msgid="4917643294953326639">"Uklonite sve što vam zaklanja lice."</string>
+ <string name="face_acquired_sensor_dirty" msgid="8968391891086721678">"Očistite gornji deo ekrana, uključujući crnu traku"</string>
<!-- no translation found for face_acquired_dark_glasses_detected (5643703296620631986) -->
<skip />
<!-- no translation found for face_acquired_mouth_covering_detected (8219428572168642593) -->
<skip />
- <string name="face_acquired_recalibrate_alt" msgid="5702674220280332115">"Прављење модела лица није успело. Пробајте поново."</string>
- <string name="face_acquired_dark_glasses_detected_alt" msgid="4052123776406041972">"Откривене су тамне наочари. Лице мора да буде потпуно видљиво."</string>
- <string name="face_acquired_mouth_covering_detected_alt" msgid="1122294982850589766">"Откривено је прекривање лица. Лице мора да буде потпуно видљиво."</string>
+ <string name="face_acquired_recalibrate_alt" msgid="5702674220280332115">"Pravljenje modela lica nije uspelo. Probajte ponovo."</string>
+ <string name="face_acquired_dark_glasses_detected_alt" msgid="4052123776406041972">"Otkrivene su tamne naočari. Lice mora da bude potpuno vidljivo."</string>
+ <string name="face_acquired_mouth_covering_detected_alt" msgid="1122294982850589766">"Otkriveno je prekrivanje lica. Lice mora da bude potpuno vidljivo."</string>
<string-array name="face_acquired_vendor">
</string-array>
- <string name="face_error_hw_not_available" msgid="5085202213036026288">"Провера лица није успела. Хардвер није доступан."</string>
- <string name="face_error_timeout" msgid="2598544068593889762">"Пробајте поново откључавање лицем"</string>
- <string name="face_error_no_space" msgid="5649264057026021723">"Нови подаци о лицу нису сачувани. Прво избришете претходне."</string>
- <string name="face_error_canceled" msgid="2164434737103802131">"Обрада лица је отказана."</string>
- <string name="face_error_user_canceled" msgid="5766472033202928373">"Корисник је отказао откључавање лицем"</string>
- <string name="face_error_lockout" msgid="7864408714994529437">"Превише покушаја. Пробајте поново касније."</string>
- <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Превише покушаја. Откључавање лицем је онемогућено."</string>
- <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Превише покушаја. Користите закључавање екрана за то."</string>
- <string name="face_error_unable_to_process" msgid="5723292697366130070">"Провера лица није успела. Пробајте поново."</string>
- <string name="face_error_not_enrolled" msgid="1134739108536328412">"Нисте подесили откључавање лицем"</string>
- <string name="face_error_hw_not_present" msgid="7940978724978763011">"Откључавање лицем није подржано на овом уређају"</string>
- <string name="face_error_security_update_required" msgid="5076017208528750161">"Сензор је привремено онемогућен."</string>
- <string name="face_name_template" msgid="3877037340223318119">"Лице <xliff:g id="FACEID">%d</xliff:g>"</string>
- <string name="face_app_setting_name" msgid="5854024256907828015">"Користите откључавање лицем"</string>
- <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Користите закључавање лицем или закључавање екрана"</string>
- <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Потврдите идентитет лицем да бисте наставили"</string>
- <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Користите лице или закључавање екрана да бисте наставили"</string>
+ <string name="face_error_hw_not_available" msgid="5085202213036026288">"Provera lica nije uspela. Hardver nije dostupan."</string>
+ <string name="face_error_timeout" msgid="2598544068593889762">"Probajte ponovo otključavanje licem"</string>
+ <string name="face_error_no_space" msgid="5649264057026021723">"Novi podaci o licu nisu sačuvani. Prvo izbrišete prethodne."</string>
+ <string name="face_error_canceled" msgid="2164434737103802131">"Obrada lica je otkazana."</string>
+ <string name="face_error_user_canceled" msgid="5766472033202928373">"Korisnik je otkazao otključavanje licem"</string>
+ <string name="face_error_lockout" msgid="7864408714994529437">"Previše pokušaja. Probajte ponovo kasnije."</string>
+ <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Previše pokušaja. Otključavanje licem je onemogućeno."</string>
+ <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Previše pokušaja. Koristite zaključavanje ekrana za to."</string>
+ <string name="face_error_unable_to_process" msgid="5723292697366130070">"Provera lica nije uspela. Probajte ponovo."</string>
+ <string name="face_error_not_enrolled" msgid="1134739108536328412">"Niste podesili otključavanje licem"</string>
+ <string name="face_error_hw_not_present" msgid="7940978724978763011">"Otključavanje licem nije podržano na ovom uređaju"</string>
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je privremeno onemogućen."</string>
+ <string name="face_name_template" msgid="3877037340223318119">"Lice <xliff:g id="FACEID">%d</xliff:g>"</string>
+ <string name="face_app_setting_name" msgid="5854024256907828015">"Koristite otključavanje licem"</string>
+ <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Koristite zaključavanje licem ili zaključavanje ekrana"</string>
+ <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Potvrdite identitet licem da biste nastavili"</string>
+ <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Koristite lice ili zaključavanje ekrana da biste nastavili"</string>
<string-array name="face_error_vendor">
</string-array>
- <string name="face_error_vendor_unknown" msgid="7387005932083302070">"Дошло је до проблема. Пробајте поново."</string>
- <string name="face_icon_content_description" msgid="465030547475916280">"Икона лица"</string>
- <string name="permlab_readSyncSettings" msgid="6250532864893156277">"читање подешавања синхронизације"</string>
- <string name="permdesc_readSyncSettings" msgid="1325658466358779298">"Дозвољава апликацији да чита подешавања синхронизације за налог. На пример, овако може да се утврди да ли је апликација Људи синхронизована са налогом."</string>
- <string name="permlab_writeSyncSettings" msgid="6583154300780427399">"укључивање и искључивање синхронизације"</string>
- <string name="permdesc_writeSyncSettings" msgid="6029151549667182687">"Дозвољава апликацији да мења подешавања синхронизације за налог. На пример, овако може да се омогући синхронизација апликације Људи са налогом."</string>
- <string name="permlab_readSyncStats" msgid="3747407238320105332">"читање статистике о синхронизацији"</string>
- <string name="permdesc_readSyncStats" msgid="3867809926567379434">"Дозвољава апликацији да чита статистику синхронизације за налог, укључујући историју синхронизованих догађаја и количину података који се синхронизују."</string>
- <string name="permlab_sdcardRead" msgid="5791467020950064920">"читање садржаја дељеног меморијског простора"</string>
- <string name="permdesc_sdcardRead" msgid="6872973242228240382">"Дозвољава апликацији да чита садржај дељеног меморијског простора."</string>
- <string name="permlab_readMediaAudio" msgid="8723513075731763810">"читање аудио фајлова из дељеног меморијског простора"</string>
- <string name="permdesc_readMediaAudio" msgid="5299772574434619399">"Омогућава апликацији да чита аудио фајлове из дељеног меморијског простора."</string>
- <string name="permlab_readMediaVideo" msgid="7768003311260655007">"читање видео фајлова из дељеног меморијског простора"</string>
- <string name="permdesc_readMediaVideo" msgid="3846400073770403528">"Омогућава апликацији да чита видео фајлове из дељеног меморијског простора."</string>
- <string name="permlab_readMediaImages" msgid="4057590631020986789">"читање фајлова слика из дељеног меморијског простора"</string>
- <string name="permdesc_readMediaImages" msgid="5836219373138469259">"Омогућава апликацији да чита фајлове слика из дељеног меморијског простора."</string>
- <string name="permlab_readVisualUserSelect" msgid="5516204215354667586">"читање фајлова слика и видео снимака које корисник бира из дељеног меморијског простора"</string>
- <string name="permdesc_readVisualUserSelect" msgid="8027174717714968217">"Омогућава апликацији да чита фајлове слика и видео снимака које изаберете из дељеног меморијског простора."</string>
- <string name="permlab_sdcardWrite" msgid="4863021819671416668">"мењање или брисање садржаја дељеног меморијског простора"</string>
- <string name="permdesc_sdcardWrite" msgid="8376047679331387102">"Дозвољава апликацији да уписује садржај дељеног меморијског простора."</string>
- <string name="permlab_use_sip" msgid="8250774565189337477">"упућивање/пријем SIP позива"</string>
- <string name="permdesc_use_sip" msgid="3590270893253204451">"Омогућава апликацији да упућује и прима SIP позиве."</string>
- <string name="permlab_register_sim_subscription" msgid="1653054249287576161">"региструје нове везе са телекомуникационим мрежама преко SIM картице"</string>
- <string name="permdesc_register_sim_subscription" msgid="4183858662792232464">"Дозвољава апликацији да региструје нове везе са телекомуникационим мрежама преко SIM картице."</string>
- <string name="permlab_register_call_provider" msgid="6135073566140050702">"региструје нове везе са телекомуникационим мрежама"</string>
- <string name="permdesc_register_call_provider" msgid="4201429251459068613">"Дозвољава апликацији да региструје нове везе са телекомуникационим мрежама."</string>
- <string name="permlab_connection_manager" msgid="3179365584691166915">"управљање везама са телекомуникационим мрежама"</string>
- <string name="permdesc_connection_manager" msgid="1426093604238937733">"Дозвољава апликацији да управља везама са телекомуникационим мрежама."</string>
- <string name="permlab_bind_incall_service" msgid="5990625112603493016">"комуницирај са екраном током позива"</string>
- <string name="permdesc_bind_incall_service" msgid="4124917526967765162">"Дозвољава апликацији да контролише када и како се кориснику приказује екран током позива."</string>
- <string name="permlab_bind_connection_service" msgid="5409268245525024736">"да ступа у интеракцију са телефонским услугама"</string>
- <string name="permdesc_bind_connection_service" msgid="6261796725253264518">"Дозвољава интеракцију апликације са телефонским услугама ради упућивања/примања позива."</string>
- <string name="permlab_control_incall_experience" msgid="6436863486094352987">"пружај кориснички доживљај током позива"</string>
- <string name="permdesc_control_incall_experience" msgid="5896723643771737534">"Дозвољава апликацији да пружа кориснички доживљај током позива."</string>
- <string name="permlab_readNetworkUsageHistory" msgid="8470402862501573795">"чита историју коришћења мреже"</string>
- <string name="permdesc_readNetworkUsageHistory" msgid="1112962304941637102">"Дозвољава апликацији да чита историју коришћења мреже за посебне мреже и апликације."</string>
- <string name="permlab_manageNetworkPolicy" msgid="6872549423152175378">"управљање смерницама за мрежу"</string>
- <string name="permdesc_manageNetworkPolicy" msgid="1865663268764673296">"Дозвољава апликацији да управља смерницама за мрежу и одређује посебна правила за апликацију."</string>
- <string name="permlab_modifyNetworkAccounting" msgid="7448790834938749041">"измените обрачунавање коришћења мреже"</string>
- <string name="permdesc_modifyNetworkAccounting" msgid="5076042642247205390">"Дозвољава апликацији да измени начин на који апликације користе мрежу. Не користе је уобичајене апликације."</string>
- <string name="permlab_accessNotifications" msgid="7130360248191984741">"приступ обавештењима"</string>
- <string name="permdesc_accessNotifications" msgid="761730149268789668">"Дозвољава апликацији да преузима, испитује и брише обавештења, укључујући она која постављају друге апликације."</string>
- <string name="permlab_bindNotificationListenerService" msgid="5848096702733262458">"повезивање са услугом монитора обавештења"</string>
- <string name="permdesc_bindNotificationListenerService" msgid="4970553694467137126">"Дозвољава власнику да се повеже са интерфејсом услуге монитора обавештења највишег нивоа. Уобичајене апликације никада не би требало да је користе."</string>
- <string name="permlab_bindConditionProviderService" msgid="5245421224814878483">"повежи са услугом добављача услова"</string>
- <string name="permdesc_bindConditionProviderService" msgid="6106018791256120258">"Дозвољава власнику да се повеже са интерфејсом највишег нивоа услуге добављача услова. Не би требало никада да буде потребно за уобичајене апликације."</string>
- <string name="permlab_bindDreamService" msgid="4776175992848982706">"повезивање са услугом сањарења"</string>
- <string name="permdesc_bindDreamService" msgid="9129615743300572973">"Дозвољава власнику да се повеже са интерфејсом услуге сањарења највишег нивоа. Уобичајене апликације никада не би требало да је користе."</string>
- <string name="permlab_invokeCarrierSetup" msgid="5098810760209818140">"позивање апликације са конфигурацијом коју одређује оператер"</string>
- <string name="permdesc_invokeCarrierSetup" msgid="4790845896063237887">"Дозвољава власнику да позива апликацију са конфигурацијом коју одређује оператер. Уобичајене апликације никада не би требало да је користе."</string>
- <string name="permlab_accessNetworkConditions" msgid="1270732533356286514">"праћење података о условима на мрежи"</string>
- <string name="permdesc_accessNetworkConditions" msgid="2959269186741956109">"Дозвољава апликацији да прати податке о условима на мрежи. Не би никада требало да буде потребно за нормалне апликације."</string>
- <string name="permlab_setInputCalibration" msgid="932069700285223434">"промени калибрацију улазног уређаја"</string>
- <string name="permdesc_setInputCalibration" msgid="2937872391426631726">"Дозвољава апликацији да модификује параметре калибрације додирног екрана. Не би требало да буде потребно за нормалне апликације."</string>
- <string name="permlab_accessDrmCertificates" msgid="6473765454472436597">"приступ DRM сертификатима"</string>
- <string name="permdesc_accessDrmCertificates" msgid="6983139753493781941">"Дозвољава апликацији да додељује и користи DRM сертификате. Никада не би требало да се користи за уобичајене апликације."</string>
- <string name="permlab_handoverStatus" msgid="7620438488137057281">"пријем статуса пребацивања помоћу Android пребацивања"</string>
- <string name="permdesc_handoverStatus" msgid="3842269451732571070">"Дозвољава овој апликацији да прима информације о актуелним пребацивањима помоћу Android пребацивања"</string>
- <string name="permlab_removeDrmCertificates" msgid="710576248717404416">"уклањај DRM сертификате"</string>
- <string name="permdesc_removeDrmCertificates" msgid="4068445390318355716">"Дозвољава апликацији да уклања DRM сертификате. Никада не би требало да се користи за обичне апликације."</string>
- <string name="permlab_bindCarrierMessagingService" msgid="3363450860593096967">"повезивање са услугом за размену порука мобилног оператера"</string>
- <string name="permdesc_bindCarrierMessagingService" msgid="6316457028173478345">"Дозвољава власнику да се повеже са интерфејсом највишег нивоа за услугу за размену порука мобилног оператера. Никада не би требало да буде потребно за стандардне апликације."</string>
- <string name="permlab_bindCarrierServices" msgid="2395596978626237474">"повезивање са услугама оператера"</string>
- <string name="permdesc_bindCarrierServices" msgid="9185614481967262900">"Дозвољава власнику да се повеже са услугама оператера. Никада не би требало да буде потребно за обичне апликације."</string>
- <string name="permlab_access_notification_policy" msgid="5524112842876975537">"приступај подешавању Не узнемиравај"</string>
- <string name="permdesc_access_notification_policy" msgid="8538374112403845013">"Дозвољава апликацији да чита и уписује конфигурацију подешавања Не узнемиравај."</string>
- <string name="permlab_startViewPermissionUsage" msgid="1504564328641112341">"почетак коришћења дозволе за преглед"</string>
- <string name="permdesc_startViewPermissionUsage" msgid="2820325605959586538">"Дозвољава власнику да започне коришћење дозволе за апликацију. Никада не би требало да буде потребна за уобичајене апликације."</string>
- <string name="permlab_startReviewPermissionDecisions" msgid="8690578688476599284">"покретање прегледа одлука о дозволама"</string>
- <string name="permdesc_startReviewPermissionDecisions" msgid="2775556853503004236">"Дозвољава власнику да покрене екран за проверу одлука о дозволама. Никада не би требало да буде потребно за обичне апликације."</string>
- <string name="permlab_startViewAppFeatures" msgid="7955084203185903001">"покретање приказа функција апликације"</string>
- <string name="permdesc_startViewAppFeatures" msgid="7207240860165206107">"Дозвољава носиоцу дозволе да започне прегледање информација о функцијама апликације."</string>
- <string name="permlab_highSamplingRateSensors" msgid="3941068435726317070">"приступ подацима сензора при великој брзини узорковања"</string>
- <string name="permdesc_highSamplingRateSensors" msgid="8430061978931155995">"Дозвољава апликацији да узима узорак података сензора при брзини већој од 200 Hz"</string>
- <string name="policylab_limitPassword" msgid="4851829918814422199">"Подешавање правила за лозинку"</string>
- <string name="policydesc_limitPassword" msgid="4105491021115793793">"Контролише дужину и знакове дозвољене у лозинкама и PIN-овима за закључавање екрана."</string>
- <string name="policylab_watchLogin" msgid="7599669460083719504">"Надгледајте покушаје откључавања екрана"</string>
- <string name="policydesc_watchLogin" product="tablet" msgid="2388436408621909298">"Прати број нетачно унетих лозинки приликом откључавања екрана и закључава таблет или брише податке са таблета ако је нетачна лозинка унета превише пута."</string>
- <string name="policydesc_watchLogin" product="tv" msgid="2140588224468517507">"Надгледа број нетачних лозинки унетих при откључавању екрана и закључава Android TV уређај или брише све податке са Android TV уређаја ако се унесе превише нетачних лозинки."</string>
- <string name="policydesc_watchLogin" product="automotive" msgid="7011438994051251521">"Прати број нетачно унетих лозинки при откључавању екрана и закључава систем за инфо-забаву или брише све податке са система за инфо-забаву ако је нетачна лозинка унета превише пута."</string>
- <string name="policydesc_watchLogin" product="default" msgid="4885030206253600299">"Прати број нетачно унетих лозинки при откључавању екрана и закључава телефон или брише све податке са телефона ако је нетачна лозинка унета превише пута."</string>
- <string name="policydesc_watchLogin_secondaryUser" product="tablet" msgid="2049038943004297474">"Надгледа број нетачних лозинки унетих при откључавању екрана и закључава таблет или брише све податке овог корисника ако се унесе превише нетачних лозинки."</string>
- <string name="policydesc_watchLogin_secondaryUser" product="tv" msgid="8965224107449407052">"Надгледа број нетачних лозинки унетих при откључавању екрана и закључава Android TV уређај или брише све податке овог корисника ако се унесе превише нетачних лозинки."</string>
- <string name="policydesc_watchLogin_secondaryUser" product="automotive" msgid="7180857406058327941">"Надгледа број нетачних лозинки унетих при откључавању екрана и закључава систем за инфо-забаву или брише све податке овог профила ако се унесе превише нетачних лозинки."</string>
- <string name="policydesc_watchLogin_secondaryUser" product="default" msgid="9177645136475155924">"Надгледа број нетачних лозинки унетих при откључавању екрана и закључава телефон или брише све податке овог корисника ако се унесе превише нетачних лозинки."</string>
- <string name="policylab_resetPassword" msgid="214556238645096520">"Промена закључавања екрана"</string>
- <string name="policydesc_resetPassword" msgid="4626419138439341851">"Мења закључавање екрана."</string>
- <string name="policylab_forceLock" msgid="7360335502968476434">"Закључавање екрана"</string>
- <string name="policydesc_forceLock" msgid="1008844760853899693">"Контрола начина и времена закључавања екрана."</string>
- <string name="policylab_wipeData" msgid="1359485247727537311">"Брисање свих података"</string>
- <string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"Брисање података на таблету без упозорења ресетовањем на фабричка подешавања."</string>
- <string name="policydesc_wipeData" product="tv" msgid="513862488950801261">"Брише податке Android TV уређаја без упозорења помоћу ресетовања на фабричка подешавања."</string>
- <string name="policydesc_wipeData" product="automotive" msgid="660804547737323300">"Брише податке на систему за инфо-забаву без упозорења ресетовањем на фабричка подешавања."</string>
- <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"Брисање података на телефону без упозорења ресетовањем на фабричка подешавања."</string>
- <string name="policylab_wipeData_secondaryUser" product="automotive" msgid="115034358520328373">"Брисање података профила"</string>
- <string name="policylab_wipeData_secondaryUser" product="default" msgid="413813645323433166">"Обриши податке корисника"</string>
- <string name="policydesc_wipeData_secondaryUser" product="tablet" msgid="2336676480090926470">"Брише податке овог корисника на овом таблету без упозорења."</string>
- <string name="policydesc_wipeData_secondaryUser" product="tv" msgid="2293713284515865200">"Брише податке овог корисника на овом Android TV уређају без упозорења."</string>
- <string name="policydesc_wipeData_secondaryUser" product="automotive" msgid="4658832487305780879">"Брише податке овог профила на овом систему за инфо-забаву без упозорења."</string>
- <string name="policydesc_wipeData_secondaryUser" product="default" msgid="2788325512167208654">"Брише податке овог корисника на овом телефону без упозорења."</string>
- <string name="policylab_setGlobalProxy" msgid="215332221188670221">"Подесите глобални прокси сервер уређаја"</string>
- <string name="policydesc_setGlobalProxy" msgid="7149665222705519604">"Подешава глобални прокси уређаја који ће се користити док су смернице омогућене. Само власник уређаја може да подеси глобални прокси."</string>
- <string name="policylab_expirePassword" msgid="6015404400532459169">"Подеси истек. лозин. за закљ. екр."</string>
- <string name="policydesc_expirePassword" msgid="9136524319325960675">"Мења колико често лозинка, PIN или шаблон за закључавање екрана мора да се мења."</string>
- <string name="policylab_encryptedStorage" msgid="9012936958126670110">"Подешавање шифровања складишта"</string>
- <string name="policydesc_encryptedStorage" msgid="1102516950740375617">"Захтева да сачувани подаци апликације буду шифровани."</string>
- <string name="policylab_disableCamera" msgid="5749486347810162018">"Онемогућавање камера"</string>
- <string name="policydesc_disableCamera" msgid="3204405908799676104">"Спречите коришћење свих камера уређаја."</string>
- <string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"Онемогућавање функција закљ. екрана"</string>
- <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Спречава коришћење неких функција закључавања екрана."</string>
+ <string name="face_error_vendor_unknown" msgid="7387005932083302070">"Došlo je do problema. Probajte ponovo."</string>
+ <string name="face_icon_content_description" msgid="465030547475916280">"Ikona lica"</string>
+ <string name="permlab_readSyncSettings" msgid="6250532864893156277">"čitanje podešavanja sinhronizacije"</string>
+ <string name="permdesc_readSyncSettings" msgid="1325658466358779298">"Dozvoljava aplikaciji da čita podešavanja sinhronizacije za nalog. Na primer, ovako može da se utvrdi da li je aplikacija Ljudi sinhronizovana sa nalogom."</string>
+ <string name="permlab_writeSyncSettings" msgid="6583154300780427399">"uključivanje i isključivanje sinhronizacije"</string>
+ <string name="permdesc_writeSyncSettings" msgid="6029151549667182687">"Dozvoljava aplikaciji da menja podešavanja sinhronizacije za nalog. Na primer, ovako može da se omogući sinhronizacija aplikacije Ljudi sa nalogom."</string>
+ <string name="permlab_readSyncStats" msgid="3747407238320105332">"čitanje statistike o sinhronizaciji"</string>
+ <string name="permdesc_readSyncStats" msgid="3867809926567379434">"Dozvoljava aplikaciji da čita statistiku sinhronizacije za nalog, uključujući istoriju sinhronizovanih događaja i količinu podataka koji se sinhronizuju."</string>
+ <string name="permlab_sdcardRead" msgid="5791467020950064920">"čitanje sadržaja deljenog memorijskog prostora"</string>
+ <string name="permdesc_sdcardRead" msgid="6872973242228240382">"Dozvoljava aplikaciji da čita sadržaj deljenog memorijskog prostora."</string>
+ <string name="permlab_readMediaAudio" msgid="8723513075731763810">"čitanje audio fajlova iz deljenog memorijskog prostora"</string>
+ <string name="permdesc_readMediaAudio" msgid="5299772574434619399">"Omogućava aplikaciji da čita audio fajlove iz deljenog memorijskog prostora."</string>
+ <string name="permlab_readMediaVideo" msgid="7768003311260655007">"čitanje video fajlova iz deljenog memorijskog prostora"</string>
+ <string name="permdesc_readMediaVideo" msgid="3846400073770403528">"Omogućava aplikaciji da čita video fajlove iz deljenog memorijskog prostora."</string>
+ <string name="permlab_readMediaImages" msgid="4057590631020986789">"čitanje fajlova slika iz deljenog memorijskog prostora"</string>
+ <string name="permdesc_readMediaImages" msgid="5836219373138469259">"Omogućava aplikaciji da čita fajlove slika iz deljenog memorijskog prostora."</string>
+ <string name="permlab_readVisualUserSelect" msgid="5516204215354667586">"čitanje fajlova slika i video snimaka koje korisnik bira iz deljenog memorijskog prostora"</string>
+ <string name="permdesc_readVisualUserSelect" msgid="8027174717714968217">"Omogućava aplikaciji da čita fajlove slika i video snimaka koje izaberete iz deljenog memorijskog prostora."</string>
+ <string name="permlab_sdcardWrite" msgid="4863021819671416668">"menjanje ili brisanje sadržaja deljenog memorijskog prostora"</string>
+ <string name="permdesc_sdcardWrite" msgid="8376047679331387102">"Dozvoljava aplikaciji da upisuje sadržaj deljenog memorijskog prostora."</string>
+ <string name="permlab_use_sip" msgid="8250774565189337477">"upućivanje/prijem SIP poziva"</string>
+ <string name="permdesc_use_sip" msgid="3590270893253204451">"Omogućava aplikaciji da upućuje i prima SIP pozive."</string>
+ <string name="permlab_register_sim_subscription" msgid="1653054249287576161">"registruje nove veze sa telekomunikacionim mrežama preko SIM kartice"</string>
+ <string name="permdesc_register_sim_subscription" msgid="4183858662792232464">"Dozvoljava aplikaciji da registruje nove veze sa telekomunikacionim mrežama preko SIM kartice."</string>
+ <string name="permlab_register_call_provider" msgid="6135073566140050702">"registruje nove veze sa telekomunikacionim mrežama"</string>
+ <string name="permdesc_register_call_provider" msgid="4201429251459068613">"Dozvoljava aplikaciji da registruje nove veze sa telekomunikacionim mrežama."</string>
+ <string name="permlab_connection_manager" msgid="3179365584691166915">"upravljanje vezama sa telekomunikacionim mrežama"</string>
+ <string name="permdesc_connection_manager" msgid="1426093604238937733">"Dozvoljava aplikaciji da upravlja vezama sa telekomunikacionim mrežama."</string>
+ <string name="permlab_bind_incall_service" msgid="5990625112603493016">"komuniciraj sa ekranom tokom poziva"</string>
+ <string name="permdesc_bind_incall_service" msgid="4124917526967765162">"Dozvoljava aplikaciji da kontroliše kada i kako se korisniku prikazuje ekran tokom poziva."</string>
+ <string name="permlab_bind_connection_service" msgid="5409268245525024736">"da stupa u interakciju sa telefonskim uslugama"</string>
+ <string name="permdesc_bind_connection_service" msgid="6261796725253264518">"Dozvoljava interakciju aplikacije sa telefonskim uslugama radi upućivanja/primanja poziva."</string>
+ <string name="permlab_control_incall_experience" msgid="6436863486094352987">"pružaj korisnički doživljaj tokom poziva"</string>
+ <string name="permdesc_control_incall_experience" msgid="5896723643771737534">"Dozvoljava aplikaciji da pruža korisnički doživljaj tokom poziva."</string>
+ <string name="permlab_readNetworkUsageHistory" msgid="8470402862501573795">"čita istoriju korišćenja mreže"</string>
+ <string name="permdesc_readNetworkUsageHistory" msgid="1112962304941637102">"Dozvoljava aplikaciji da čita istoriju korišćenja mreže za posebne mreže i aplikacije."</string>
+ <string name="permlab_manageNetworkPolicy" msgid="6872549423152175378">"upravljanje smernicama za mrežu"</string>
+ <string name="permdesc_manageNetworkPolicy" msgid="1865663268764673296">"Dozvoljava aplikaciji da upravlja smernicama za mrežu i određuje posebna pravila za aplikaciju."</string>
+ <string name="permlab_modifyNetworkAccounting" msgid="7448790834938749041">"izmenite obračunavanje korišćenja mreže"</string>
+ <string name="permdesc_modifyNetworkAccounting" msgid="5076042642247205390">"Dozvoljava aplikaciji da izmeni način na koji aplikacije koriste mrežu. Ne koriste je uobičajene aplikacije."</string>
+ <string name="permlab_accessNotifications" msgid="7130360248191984741">"pristup obaveštenjima"</string>
+ <string name="permdesc_accessNotifications" msgid="761730149268789668">"Dozvoljava aplikaciji da preuzima, ispituje i briše obaveštenja, uključujući ona koja postavljaju druge aplikacije."</string>
+ <string name="permlab_bindNotificationListenerService" msgid="5848096702733262458">"povezivanje sa uslugom monitora obaveštenja"</string>
+ <string name="permdesc_bindNotificationListenerService" msgid="4970553694467137126">"Dozvoljava vlasniku da se poveže sa interfejsom usluge monitora obaveštenja najvišeg nivoa. Uobičajene aplikacije nikada ne bi trebalo da je koriste."</string>
+ <string name="permlab_bindConditionProviderService" msgid="5245421224814878483">"poveži sa uslugom dobavljača uslova"</string>
+ <string name="permdesc_bindConditionProviderService" msgid="6106018791256120258">"Dozvoljava vlasniku da se poveže sa interfejsom najvišeg nivoa usluge dobavljača uslova. Ne bi trebalo nikada da bude potrebno za uobičajene aplikacije."</string>
+ <string name="permlab_bindDreamService" msgid="4776175992848982706">"povezivanje sa uslugom sanjarenja"</string>
+ <string name="permdesc_bindDreamService" msgid="9129615743300572973">"Dozvoljava vlasniku da se poveže sa interfejsom usluge sanjarenja najvišeg nivoa. Uobičajene aplikacije nikada ne bi trebalo da je koriste."</string>
+ <string name="permlab_invokeCarrierSetup" msgid="5098810760209818140">"pozivanje aplikacije sa konfiguracijom koju određuje operater"</string>
+ <string name="permdesc_invokeCarrierSetup" msgid="4790845896063237887">"Dozvoljava vlasniku da poziva aplikaciju sa konfiguracijom koju određuje operater. Uobičajene aplikacije nikada ne bi trebalo da je koriste."</string>
+ <string name="permlab_accessNetworkConditions" msgid="1270732533356286514">"praćenje podataka o uslovima na mreži"</string>
+ <string name="permdesc_accessNetworkConditions" msgid="2959269186741956109">"Dozvoljava aplikaciji da prati podatke o uslovima na mreži. Ne bi nikada trebalo da bude potrebno za normalne aplikacije."</string>
+ <string name="permlab_setInputCalibration" msgid="932069700285223434">"promeni kalibraciju ulaznog uređaja"</string>
+ <string name="permdesc_setInputCalibration" msgid="2937872391426631726">"Dozvoljava aplikaciji da modifikuje parametre kalibracije dodirnog ekrana. Ne bi trebalo da bude potrebno za normalne aplikacije."</string>
+ <string name="permlab_accessDrmCertificates" msgid="6473765454472436597">"pristup DRM sertifikatima"</string>
+ <string name="permdesc_accessDrmCertificates" msgid="6983139753493781941">"Dozvoljava aplikaciji da dodeljuje i koristi DRM sertifikate. Nikada ne bi trebalo da se koristi za uobičajene aplikacije."</string>
+ <string name="permlab_handoverStatus" msgid="7620438488137057281">"prijem statusa prebacivanja pomoću Android prebacivanja"</string>
+ <string name="permdesc_handoverStatus" msgid="3842269451732571070">"Dozvoljava ovoj aplikaciji da prima informacije o aktuelnim prebacivanjima pomoću Android prebacivanja"</string>
+ <string name="permlab_removeDrmCertificates" msgid="710576248717404416">"uklanjaj DRM sertifikate"</string>
+ <string name="permdesc_removeDrmCertificates" msgid="4068445390318355716">"Dozvoljava aplikaciji da uklanja DRM sertifikate. Nikada ne bi trebalo da se koristi za obične aplikacije."</string>
+ <string name="permlab_bindCarrierMessagingService" msgid="3363450860593096967">"povezivanje sa uslugom za razmenu poruka mobilnog operatera"</string>
+ <string name="permdesc_bindCarrierMessagingService" msgid="6316457028173478345">"Dozvoljava vlasniku da se poveže sa interfejsom najvišeg nivoa za uslugu za razmenu poruka mobilnog operatera. Nikada ne bi trebalo da bude potrebno za standardne aplikacije."</string>
+ <string name="permlab_bindCarrierServices" msgid="2395596978626237474">"povezivanje sa uslugama operatera"</string>
+ <string name="permdesc_bindCarrierServices" msgid="9185614481967262900">"Dozvoljava vlasniku da se poveže sa uslugama operatera. Nikada ne bi trebalo da bude potrebno za obične aplikacije."</string>
+ <string name="permlab_access_notification_policy" msgid="5524112842876975537">"pristupaj podešavanju Ne uznemiravaj"</string>
+ <string name="permdesc_access_notification_policy" msgid="8538374112403845013">"Dozvoljava aplikaciji da čita i upisuje konfiguraciju podešavanja Ne uznemiravaj."</string>
+ <string name="permlab_startViewPermissionUsage" msgid="1504564328641112341">"početak korišćenja dozvole za pregled"</string>
+ <string name="permdesc_startViewPermissionUsage" msgid="2820325605959586538">"Dozvoljava vlasniku da započne korišćenje dozvole za aplikaciju. Nikada ne bi trebalo da bude potrebna za uobičajene aplikacije."</string>
+ <string name="permlab_startReviewPermissionDecisions" msgid="8690578688476599284">"pokretanje pregleda odluka o dozvolama"</string>
+ <string name="permdesc_startReviewPermissionDecisions" msgid="2775556853503004236">"Dozvoljava vlasniku da pokrene ekran za proveru odluka o dozvolama. Nikada ne bi trebalo da bude potrebno za obične aplikacije."</string>
+ <string name="permlab_startViewAppFeatures" msgid="7955084203185903001">"pokretanje prikaza funkcija aplikacije"</string>
+ <string name="permdesc_startViewAppFeatures" msgid="7207240860165206107">"Dozvoljava nosiocu dozvole da započne pregledanje informacija o funkcijama aplikacije."</string>
+ <string name="permlab_highSamplingRateSensors" msgid="3941068435726317070">"pristup podacima senzora pri velikoj brzini uzorkovanja"</string>
+ <string name="permdesc_highSamplingRateSensors" msgid="8430061978931155995">"Dozvoljava aplikaciji da uzima uzorak podataka senzora pri brzini većoj od 200 Hz"</string>
+ <string name="policylab_limitPassword" msgid="4851829918814422199">"Podešavanje pravila za lozinku"</string>
+ <string name="policydesc_limitPassword" msgid="4105491021115793793">"Kontroliše dužinu i znakove dozvoljene u lozinkama i PIN-ovima za zaključavanje ekrana."</string>
+ <string name="policylab_watchLogin" msgid="7599669460083719504">"Nadgledajte pokušaje otključavanja ekrana"</string>
+ <string name="policydesc_watchLogin" product="tablet" msgid="2388436408621909298">"Prati broj netačno unetih lozinki prilikom otključavanja ekrana i zaključava tablet ili briše podatke sa tableta ako je netačna lozinka uneta previše puta."</string>
+ <string name="policydesc_watchLogin" product="tv" msgid="2140588224468517507">"Nadgleda broj netačnih lozinki unetih pri otključavanju ekrana i zaključava Android TV uređaj ili briše sve podatke sa Android TV uređaja ako se unese previše netačnih lozinki."</string>
+ <string name="policydesc_watchLogin" product="automotive" msgid="7011438994051251521">"Prati broj netačno unetih lozinki pri otključavanju ekrana i zaključava sistem za info-zabavu ili briše sve podatke sa sistema za info-zabavu ako je netačna lozinka uneta previše puta."</string>
+ <string name="policydesc_watchLogin" product="default" msgid="4885030206253600299">"Prati broj netačno unetih lozinki pri otključavanju ekrana i zaključava telefon ili briše sve podatke sa telefona ako je netačna lozinka uneta previše puta."</string>
+ <string name="policydesc_watchLogin_secondaryUser" product="tablet" msgid="2049038943004297474">"Nadgleda broj netačnih lozinki unetih pri otključavanju ekrana i zaključava tablet ili briše sve podatke ovog korisnika ako se unese previše netačnih lozinki."</string>
+ <string name="policydesc_watchLogin_secondaryUser" product="tv" msgid="8965224107449407052">"Nadgleda broj netačnih lozinki unetih pri otključavanju ekrana i zaključava Android TV uređaj ili briše sve podatke ovog korisnika ako se unese previše netačnih lozinki."</string>
+ <string name="policydesc_watchLogin_secondaryUser" product="automotive" msgid="7180857406058327941">"Nadgleda broj netačnih lozinki unetih pri otključavanju ekrana i zaključava sistem za info-zabavu ili briše sve podatke ovog profila ako se unese previše netačnih lozinki."</string>
+ <string name="policydesc_watchLogin_secondaryUser" product="default" msgid="9177645136475155924">"Nadgleda broj netačnih lozinki unetih pri otključavanju ekrana i zaključava telefon ili briše sve podatke ovog korisnika ako se unese previše netačnih lozinki."</string>
+ <string name="policylab_resetPassword" msgid="214556238645096520">"Promena zaključavanja ekrana"</string>
+ <string name="policydesc_resetPassword" msgid="4626419138439341851">"Menja zaključavanje ekrana."</string>
+ <string name="policylab_forceLock" msgid="7360335502968476434">"Zaključavanje ekrana"</string>
+ <string name="policydesc_forceLock" msgid="1008844760853899693">"Kontrola načina i vremena zaključavanja ekrana."</string>
+ <string name="policylab_wipeData" msgid="1359485247727537311">"Brisanje svih podataka"</string>
+ <string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"Brisanje podataka na tabletu bez upozorenja resetovanjem na fabrička podešavanja."</string>
+ <string name="policydesc_wipeData" product="tv" msgid="513862488950801261">"Briše podatke Android TV uređaja bez upozorenja pomoću resetovanja na fabrička podešavanja."</string>
+ <string name="policydesc_wipeData" product="automotive" msgid="660804547737323300">"Briše podatke na sistemu za info-zabavu bez upozorenja resetovanjem na fabrička podešavanja."</string>
+ <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"Brisanje podataka na telefonu bez upozorenja resetovanjem na fabrička podešavanja."</string>
+ <string name="policylab_wipeData_secondaryUser" product="automotive" msgid="115034358520328373">"Brisanje podataka profila"</string>
+ <string name="policylab_wipeData_secondaryUser" product="default" msgid="413813645323433166">"Obriši podatke korisnika"</string>
+ <string name="policydesc_wipeData_secondaryUser" product="tablet" msgid="2336676480090926470">"Briše podatke ovog korisnika na ovom tabletu bez upozorenja."</string>
+ <string name="policydesc_wipeData_secondaryUser" product="tv" msgid="2293713284515865200">"Briše podatke ovog korisnika na ovom Android TV uređaju bez upozorenja."</string>
+ <string name="policydesc_wipeData_secondaryUser" product="automotive" msgid="4658832487305780879">"Briše podatke ovog profila na ovom sistemu za info-zabavu bez upozorenja."</string>
+ <string name="policydesc_wipeData_secondaryUser" product="default" msgid="2788325512167208654">"Briše podatke ovog korisnika na ovom telefonu bez upozorenja."</string>
+ <string name="policylab_setGlobalProxy" msgid="215332221188670221">"Podesite globalni proksi server uređaja"</string>
+ <string name="policydesc_setGlobalProxy" msgid="7149665222705519604">"Podešava globalni proksi uređaja koji će se koristiti dok su smernice omogućene. Samo vlasnik uređaja može da podesi globalni proksi."</string>
+ <string name="policylab_expirePassword" msgid="6015404400532459169">"Podesi istek. lozin. za zaklj. ekr."</string>
+ <string name="policydesc_expirePassword" msgid="9136524319325960675">"Menja koliko često lozinka, PIN ili šablon za zaključavanje ekrana mora da se menja."</string>
+ <string name="policylab_encryptedStorage" msgid="9012936958126670110">"Podešavanje šifrovanja skladišta"</string>
+ <string name="policydesc_encryptedStorage" msgid="1102516950740375617">"Zahteva da sačuvani podaci aplikacije budu šifrovani."</string>
+ <string name="policylab_disableCamera" msgid="5749486347810162018">"Onemogućavanje kamera"</string>
+ <string name="policydesc_disableCamera" msgid="3204405908799676104">"Sprečite korišćenje svih kamera uređaja."</string>
+ <string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"Onemogućavanje funkcija zaklj. ekrana"</string>
+ <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Sprečava korišćenje nekih funkcija zaključavanja ekrana."</string>
<string-array name="phoneTypes">
- <item msgid="8996339953292723951">"Кућа"</item>
- <item msgid="7740243458912727194">"Мобилни"</item>
- <item msgid="8526146065496663766">"Посао"</item>
- <item msgid="8150904584178569699">"Факс на послу"</item>
- <item msgid="4537253139152229577">"Факс код куће"</item>
- <item msgid="6751245029698664340">"Пејџер"</item>
- <item msgid="1692790665884224905">"Друго"</item>
- <item msgid="6216981255272016212">"Прилагођено"</item>
+ <item msgid="8996339953292723951">"Kuća"</item>
+ <item msgid="7740243458912727194">"Mobilni"</item>
+ <item msgid="8526146065496663766">"Posao"</item>
+ <item msgid="8150904584178569699">"Faks na poslu"</item>
+ <item msgid="4537253139152229577">"Faks kod kuće"</item>
+ <item msgid="6751245029698664340">"Pejdžer"</item>
+ <item msgid="1692790665884224905">"Drugo"</item>
+ <item msgid="6216981255272016212">"Prilagođeno"</item>
</string-array>
<string-array name="emailAddressTypes">
- <item msgid="7786349763648997741">"Кућа"</item>
- <item msgid="435564470865989199">"Посао"</item>
- <item msgid="4199433197875490373">"Друго"</item>
- <item msgid="3233938986670468328">"Прилагођено"</item>
+ <item msgid="7786349763648997741">"Kuća"</item>
+ <item msgid="435564470865989199">"Posao"</item>
+ <item msgid="4199433197875490373">"Drugo"</item>
+ <item msgid="3233938986670468328">"Prilagođeno"</item>
</string-array>
<string-array name="postalAddressTypes">
- <item msgid="3861463339764243038">"Кућа"</item>
- <item msgid="5472578890164979109">"Посао"</item>
- <item msgid="5718921296646594739">"Друго"</item>
- <item msgid="5523122236731783179">"Прилагођено"</item>
+ <item msgid="3861463339764243038">"Kuća"</item>
+ <item msgid="5472578890164979109">"Posao"</item>
+ <item msgid="5718921296646594739">"Drugo"</item>
+ <item msgid="5523122236731783179">"Prilagođeno"</item>
</string-array>
<string-array name="imAddressTypes">
- <item msgid="588088543406993772">"Кућа"</item>
- <item msgid="5503060422020476757">"Посао"</item>
- <item msgid="2530391194653760297">"Друго"</item>
- <item msgid="7640927178025203330">"Прилагођено"</item>
+ <item msgid="588088543406993772">"Kuća"</item>
+ <item msgid="5503060422020476757">"Posao"</item>
+ <item msgid="2530391194653760297">"Drugo"</item>
+ <item msgid="7640927178025203330">"Prilagođeno"</item>
</string-array>
<string-array name="organizationTypes">
- <item msgid="6144047813304847762">"Посао"</item>
- <item msgid="7402720230065674193">"Друго"</item>
- <item msgid="808230403067569648">"Прилагођено"</item>
+ <item msgid="6144047813304847762">"Posao"</item>
+ <item msgid="7402720230065674193">"Drugo"</item>
+ <item msgid="808230403067569648">"Prilagođeno"</item>
</string-array>
<string-array name="imProtocols">
<item msgid="7535761744432206400">"AIM"</item>
@@ -871,45 +871,45 @@
<item msgid="4717545739447438044">"ICQ"</item>
<item msgid="8293711853624033835">"Jabber"</item>
</string-array>
- <string name="phoneTypeCustom" msgid="5120365721260686814">"Прилагођено"</string>
- <string name="phoneTypeHome" msgid="3880132427643623588">"Кућа"</string>
- <string name="phoneTypeMobile" msgid="1178852541462086735">"Мобилни"</string>
- <string name="phoneTypeWork" msgid="6604967163358864607">"Посао"</string>
- <string name="phoneTypeFaxWork" msgid="6757519896109439123">"Факс на послу"</string>
- <string name="phoneTypeFaxHome" msgid="6678559953115904345">"Факс код куће"</string>
- <string name="phoneTypePager" msgid="576402072263522767">"Пејџер"</string>
- <string name="phoneTypeOther" msgid="6918196243648754715">"Друго"</string>
- <string name="phoneTypeCallback" msgid="3455781500844157767">"Повратни позив"</string>
- <string name="phoneTypeCar" msgid="4604775148963129195">"Аутомобил"</string>
- <string name="phoneTypeCompanyMain" msgid="4482773154536455441">"Пословни главни"</string>
+ <string name="phoneTypeCustom" msgid="5120365721260686814">"Prilagođeno"</string>
+ <string name="phoneTypeHome" msgid="3880132427643623588">"Kuća"</string>
+ <string name="phoneTypeMobile" msgid="1178852541462086735">"Mobilni"</string>
+ <string name="phoneTypeWork" msgid="6604967163358864607">"Posao"</string>
+ <string name="phoneTypeFaxWork" msgid="6757519896109439123">"Faks na poslu"</string>
+ <string name="phoneTypeFaxHome" msgid="6678559953115904345">"Faks kod kuće"</string>
+ <string name="phoneTypePager" msgid="576402072263522767">"Pejdžer"</string>
+ <string name="phoneTypeOther" msgid="6918196243648754715">"Drugo"</string>
+ <string name="phoneTypeCallback" msgid="3455781500844157767">"Povratni poziv"</string>
+ <string name="phoneTypeCar" msgid="4604775148963129195">"Automobil"</string>
+ <string name="phoneTypeCompanyMain" msgid="4482773154536455441">"Poslovni glavni"</string>
<string name="phoneTypeIsdn" msgid="2496238954533998512">"ISDN"</string>
- <string name="phoneTypeMain" msgid="5199722006991000111">"Главни"</string>
- <string name="phoneTypeOtherFax" msgid="3037145630364770357">"Други факс"</string>
- <string name="phoneTypeRadio" msgid="2637819130239264771">"Радио"</string>
- <string name="phoneTypeTelex" msgid="2558783611711876562">"Телекс"</string>
+ <string name="phoneTypeMain" msgid="5199722006991000111">"Glavni"</string>
+ <string name="phoneTypeOtherFax" msgid="3037145630364770357">"Drugi faks"</string>
+ <string name="phoneTypeRadio" msgid="2637819130239264771">"Radio"</string>
+ <string name="phoneTypeTelex" msgid="2558783611711876562">"Teleks"</string>
<string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string>
- <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"Пословни мобилни"</string>
- <string name="phoneTypeWorkPager" msgid="3748332310638505234">"Пословни пејџер"</string>
- <string name="phoneTypeAssistant" msgid="757550783842231039">"Помоћник"</string>
+ <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"Poslovni mobilni"</string>
+ <string name="phoneTypeWorkPager" msgid="3748332310638505234">"Poslovni pejdžer"</string>
+ <string name="phoneTypeAssistant" msgid="757550783842231039">"Pomoćnik"</string>
<string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string>
- <string name="eventTypeCustom" msgid="3257367158986466481">"Прилагођено"</string>
- <string name="eventTypeBirthday" msgid="7770026752793912283">"Рођендан"</string>
- <string name="eventTypeAnniversary" msgid="4684702412407916888">"Годишњица"</string>
- <string name="eventTypeOther" msgid="530671238533887997">"Други"</string>
- <string name="emailTypeCustom" msgid="1809435350482181786">"Прилагођено"</string>
- <string name="emailTypeHome" msgid="1597116303154775999">"Кућа"</string>
- <string name="emailTypeWork" msgid="2020095414401882111">"Посао"</string>
- <string name="emailTypeOther" msgid="5131130857030897465">"Друго"</string>
- <string name="emailTypeMobile" msgid="787155077375364230">"Мобилни"</string>
- <string name="postalTypeCustom" msgid="5645590470242939129">"Прилагођено"</string>
- <string name="postalTypeHome" msgid="7562272480949727912">"Кућа"</string>
- <string name="postalTypeWork" msgid="8553425424652012826">"Посао"</string>
- <string name="postalTypeOther" msgid="7094245413678857420">"Друго"</string>
- <string name="imTypeCustom" msgid="5653384545085765570">"Прилагођено"</string>
- <string name="imTypeHome" msgid="6996507981044278216">"Кућа"</string>
- <string name="imTypeWork" msgid="2099668940169903123">"Посао"</string>
- <string name="imTypeOther" msgid="8068447383276219810">"Друго"</string>
- <string name="imProtocolCustom" msgid="4437878287653764692">"Прилагођено"</string>
+ <string name="eventTypeCustom" msgid="3257367158986466481">"Prilagođeno"</string>
+ <string name="eventTypeBirthday" msgid="7770026752793912283">"Rođendan"</string>
+ <string name="eventTypeAnniversary" msgid="4684702412407916888">"Godišnjica"</string>
+ <string name="eventTypeOther" msgid="530671238533887997">"Drugi"</string>
+ <string name="emailTypeCustom" msgid="1809435350482181786">"Prilagođeno"</string>
+ <string name="emailTypeHome" msgid="1597116303154775999">"Kuća"</string>
+ <string name="emailTypeWork" msgid="2020095414401882111">"Posao"</string>
+ <string name="emailTypeOther" msgid="5131130857030897465">"Drugo"</string>
+ <string name="emailTypeMobile" msgid="787155077375364230">"Mobilni"</string>
+ <string name="postalTypeCustom" msgid="5645590470242939129">"Prilagođeno"</string>
+ <string name="postalTypeHome" msgid="7562272480949727912">"Kuća"</string>
+ <string name="postalTypeWork" msgid="8553425424652012826">"Posao"</string>
+ <string name="postalTypeOther" msgid="7094245413678857420">"Drugo"</string>
+ <string name="imTypeCustom" msgid="5653384545085765570">"Prilagođeno"</string>
+ <string name="imTypeHome" msgid="6996507981044278216">"Kuća"</string>
+ <string name="imTypeWork" msgid="2099668940169903123">"Posao"</string>
+ <string name="imTypeOther" msgid="8068447383276219810">"Drugo"</string>
+ <string name="imProtocolCustom" msgid="4437878287653764692">"Prilagođeno"</string>
<string name="imProtocolAim" msgid="4050198236506604378">"AIM"</string>
<string name="imProtocolMsn" msgid="2257148557766499232">"Windows Live"</string>
<string name="imProtocolYahoo" msgid="5373338758093392231">"Yahoo"</string>
@@ -919,865 +919,815 @@
<string name="imProtocolIcq" msgid="2410325380427389521">"ICQ"</string>
<string name="imProtocolJabber" msgid="7919269388889582015">"Jabber"</string>
<string name="imProtocolNetMeeting" msgid="4985002408136148256">"NetMeeting"</string>
- <string name="orgTypeWork" msgid="8684458700669564172">"Посао"</string>
- <string name="orgTypeOther" msgid="5450675258408005553">"Друго"</string>
- <string name="orgTypeCustom" msgid="1126322047677329218">"Прилагођено"</string>
- <string name="relationTypeCustom" msgid="282938315217441351">"Прилагођено"</string>
- <string name="relationTypeAssistant" msgid="4057605157116589315">"Помоћник"</string>
- <string name="relationTypeBrother" msgid="7141662427379247820">"Брат"</string>
- <string name="relationTypeChild" msgid="9076258911292693601">"Дете"</string>
- <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"Невенчани партнер"</string>
- <string name="relationTypeFather" msgid="3856225062864790596">"Отац"</string>
- <string name="relationTypeFriend" msgid="3192092625893980574">"Пријатељ"</string>
- <string name="relationTypeManager" msgid="2272860813153171857">"Менаџер"</string>
- <string name="relationTypeMother" msgid="2331762740982699460">"Мајка"</string>
- <string name="relationTypeParent" msgid="4177920938333039882">"Родитељ"</string>
- <string name="relationTypePartner" msgid="4018017075116766194">"Партнер"</string>
- <string name="relationTypeReferredBy" msgid="5285082289602849400">"Упутио/ла"</string>
- <string name="relationTypeRelative" msgid="3396498519818009134">"Рођак"</string>
- <string name="relationTypeSister" msgid="3721676005094140671">"Сестра"</string>
- <string name="relationTypeSpouse" msgid="6916682664436031703">"Супруг/а"</string>
- <string name="sipAddressTypeCustom" msgid="6283889809842649336">"Прилагођено"</string>
- <string name="sipAddressTypeHome" msgid="5918441930656878367">"Почетна"</string>
- <string name="sipAddressTypeWork" msgid="7873967986701216770">"Посао"</string>
- <string name="sipAddressTypeOther" msgid="6317012577345187275">"Други"</string>
- <string name="quick_contacts_not_available" msgid="1262709196045052223">"Није пронађена ниједна апликација за приказ овог контакта."</string>
- <string name="keyguard_password_enter_pin_code" msgid="6401406801060956153">"Унесите PIN кôд"</string>
- <string name="keyguard_password_enter_puk_code" msgid="3112256684547584093">"Унесите PUK и нови PIN кôд"</string>
- <string name="keyguard_password_enter_puk_prompt" msgid="2825313071899938305">"PUK кôд"</string>
- <string name="keyguard_password_enter_pin_prompt" msgid="5505434724229581207">"Нови PIN кôд"</string>
- <string name="keyguard_password_entry_touch_hint" msgid="4032288032993261520"><font size="17">"Додирните за унос лозинке"</font></string>
- <string name="keyguard_password_enter_password_code" msgid="2751130557661643482">"Откуцајте лозинку да бисте откључали"</string>
- <string name="keyguard_password_enter_pin_password_code" msgid="7792964196473964340">"Унесите PIN за откључавање"</string>
- <string name="keyguard_password_wrong_pin_code" msgid="8583732939138432793">"PIN кôд је нетачан."</string>
- <string name="keyguard_label_text" msgid="3841953694564168384">"Да бисте откључали, притисните „Мени“, а затим 0."</string>
- <string name="emergency_call_dialog_number_for_display" msgid="2978165477085612673">"Број за хитне случајеве"</string>
- <string name="lockscreen_carrier_default" msgid="6192313772955399160">"Мобилна мрежа није доступна"</string>
- <string name="lockscreen_screen_locked" msgid="7364905540516041817">"Екран је закључан."</string>
- <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Притисните „Мени“ да бисте откључали телефон или упутите хитан позив."</string>
- <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Притисните „Мени“ за откључавање."</string>
- <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Унесите шаблон за откључавање"</string>
- <string name="lockscreen_emergency_call" msgid="7500692654885445299">"Хитне службе"</string>
- <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Назад на позив"</string>
- <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Тачно!"</string>
- <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Пробајте поново"</string>
- <string name="lockscreen_password_wrong" msgid="8605355913868947490">"Пробајте поново"</string>
- <string name="lockscreen_storage_locked" msgid="634993789186443380">"Откључај за све функције и податке"</string>
- <string name="faceunlock_multiple_failures" msgid="681991538434031708">"Премашен је највећи дозвољени број покушаја Откључавања лицем"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
- <string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Претходна песма"</string>
- <string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Следећа песма"</string>
- <string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Пауза"</string>
- <string name="lockscreen_transport_play_description" msgid="106868788691652733">"Пусти"</string>
- <string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"Заустави"</string>
- <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"Премотај уназад"</string>
- <string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Премотај унапред"</string>
- <string name="emergency_calls_only" msgid="3057351206678279851">"Само хитни позиви"</string>
- <string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Мрежа је закључана"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
- <string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Погледајте Кориснички водич или контактирајте Корисничку подршку."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
- <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"<xliff:g id="NUMBER_0">%1$d</xliff:g> пута сте неправилно нацртали шаблон за откључавање. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
- <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"<xliff:g id="NUMBER_0">%1$d</xliff:g> пута сте погрешно унели лозинку. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
- <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"<xliff:g id="NUMBER_0">%1$d</xliff:g> пута сте погрешно унели PIN. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="3069635524964070596">"<xliff:g id="NUMBER_0">%1$d</xliff:g> пута сте нетачно унели шаблон за откључавање. Након још <xliff:g id="NUMBER_1">%2$d</xliff:g> несупешна(их) покушаја, од вас ће бити затражено да откључате таблет помоћу података за пријављивање на Google.\n\n Пробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> секунде/и."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"Нетачно сте нацртали шаблон за откључавање <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још пута (<xliff:g id="NUMBER_1">%2$d</xliff:g>), затражићемо да откључате телефон помоћу Android TV уређаја.\n\n Пробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> сек."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"<xliff:g id="NUMBER_0">%1$d</xliff:g> пута сте нетачно унели шаблон за откључавање. Након још <xliff:g id="NUMBER_1">%2$d</xliff:g> несупешна(их) покушаја, од вас ће бити затражено да откључате телефон помоћу података за пријављивање на Google.\n\n Пробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> секунде/и."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"Неправилно сте покушали да откључате таблет <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Након још неуспешних покушаја (<xliff:g id="NUMBER_1">%2$d</xliff:g>) таблет ће бити ресетован на фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"Број ваших неуспешних покушаја да откључате Android TV уређај: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Број преосталих неуспешних покушаја после којих ће се Android TV ресетовати на фабричка подешавања и сви подаци корисника ће бити изгубљени: <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"Неисправно сте покушали да откључате телефон <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Након још неуспешних покушаја (<xliff:g id="NUMBER_1">%2$d</xliff:g>) телефон ће бити ресетован на фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"Неисправно сте покушали да откључате таблет <xliff:g id="NUMBER">%d</xliff:g> пута. Таблет ће сада бити враћен на подразумевана фабричка подешавања."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="2205435033340091883">"Број ваших неуспешних покушаја да откључате Android TV уређај: <xliff:g id="NUMBER">%d</xliff:g>. Android TV уређај ће се сада ресетовати на фабричка подешавања."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="2203704707679895487">"Неисправно сте покушали да откључате телефон <xliff:g id="NUMBER">%d</xliff:g> пута. Телефон ће сада бити враћен на подразумевана фабричка подешавања."</string>
- <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6807200118164539589">"Пробајте поново за <xliff:g id="NUMBER">%d</xliff:g> секунде/и."</string>
- <string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"Заборавили сте шаблон?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="9218940117797602518">"Откључавање налога"</string>
- <string name="lockscreen_glogin_too_many_attempts" msgid="3775904917743034195">"Превише покушаја уноса шаблона"</string>
- <string name="lockscreen_glogin_instructions" msgid="4695162942525531700">"Да бисте откључали, пријавите се помоћу Google налога."</string>
- <string name="lockscreen_glogin_username_hint" msgid="6916101478673157045">"Корисничко име (имејл адреса)"</string>
- <string name="lockscreen_glogin_password_hint" msgid="3031027901286812848">"Лозинка"</string>
- <string name="lockscreen_glogin_submit_button" msgid="3590556636347843733">"Пријави ме"</string>
- <string name="lockscreen_glogin_invalid_input" msgid="4369219936865697679">"Неважеће корисничко име или лозинка."</string>
- <string name="lockscreen_glogin_account_recovery_hint" msgid="1683405808525090649">"Заборавили сте корисничко име или лозинку?\nПосетите адресу "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="lockscreen_glogin_checking_password" msgid="2607271802803381645">"Проверавање..."</string>
- <string name="lockscreen_unlock_label" msgid="4648257878373307582">"Откључај"</string>
- <string name="lockscreen_sound_on_label" msgid="1660281470535492430">"Укључи звук"</string>
- <string name="lockscreen_sound_off_label" msgid="2331496559245450053">"Искључи звук"</string>
- <string name="lockscreen_access_pattern_start" msgid="3778502525702613399">"Образац је започет"</string>
- <string name="lockscreen_access_pattern_cleared" msgid="7493849102641167049">"Образац је обрисан"</string>
- <string name="lockscreen_access_pattern_cell_added" msgid="6746676335293144163">"Ћелија је додата"</string>
- <string name="lockscreen_access_pattern_cell_added_verbose" msgid="2931364927622563465">"Ћелија <xliff:g id="CELL_INDEX">%1$s</xliff:g> је додата"</string>
- <string name="lockscreen_access_pattern_detected" msgid="3931150554035194012">"Образац је довршен"</string>
- <string name="lockscreen_access_pattern_area" msgid="1288780416685002841">"Област шаблона."</string>
- <string name="keyguard_accessibility_widget_changed" msgid="7298011259508200234">"%1$s. Виџет %2$d од %3$d."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8245795023551343672">"Додај виџет."</string>
- <string name="keyguard_accessibility_widget_empty_slot" msgid="544239307077644480">"Празно"</string>
- <string name="keyguard_accessibility_unlock_area_expanded" msgid="7768634718706488951">"Област откључавања је проширена."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="4729922043778400434">"Област откључавања је скупљена."</string>
- <string name="keyguard_accessibility_widget" msgid="6776892679715699875">"Виџет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
- <string name="keyguard_accessibility_user_selector" msgid="1466067610235696600">"Избор корисника"</string>
- <string name="keyguard_accessibility_status" msgid="6792745049712397237">"Статус"</string>
- <string name="keyguard_accessibility_camera" msgid="7862557559464986528">"Камера"</string>
- <string name="keygaurd_accessibility_media_controls" msgid="2267379779900620614">"Контроле за медије"</string>
- <string name="keyguard_accessibility_widget_reorder_start" msgid="7066213328912939191">"Започела је промена редоследа виџета."</string>
- <string name="keyguard_accessibility_widget_reorder_end" msgid="1083806817600593490">"Промена редоследа виџета је завршена."</string>
- <string name="keyguard_accessibility_widget_deleted" msgid="1509738950119878705">"Виџет <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> је избрисан."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Прошири област откључавања."</string>
- <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Откључавање превлачењем."</string>
- <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Откључавање шаблоном."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Откључавање лицем."</string>
- <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Откључавање PIN-ом."</string>
- <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Откључава SIM картицу PIN-ом."</string>
- <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Откључава SIM картицу PUK-ом."</string>
- <string name="keyguard_accessibility_password_unlock" msgid="6130186108581153265">"Откључавање лозинком."</string>
- <string name="keyguard_accessibility_pattern_area" msgid="1419570880512350689">"Област шаблона."</string>
- <string name="keyguard_accessibility_slide_area" msgid="4331399051142520176">"Област превлачења."</string>
+ <string name="orgTypeWork" msgid="8684458700669564172">"Posao"</string>
+ <string name="orgTypeOther" msgid="5450675258408005553">"Drugo"</string>
+ <string name="orgTypeCustom" msgid="1126322047677329218">"Prilagođeno"</string>
+ <string name="relationTypeCustom" msgid="282938315217441351">"Prilagođeno"</string>
+ <string name="relationTypeAssistant" msgid="4057605157116589315">"Pomoćnik"</string>
+ <string name="relationTypeBrother" msgid="7141662427379247820">"Brat"</string>
+ <string name="relationTypeChild" msgid="9076258911292693601">"Dete"</string>
+ <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"Nevenčani partner"</string>
+ <string name="relationTypeFather" msgid="3856225062864790596">"Otac"</string>
+ <string name="relationTypeFriend" msgid="3192092625893980574">"Prijatelj"</string>
+ <string name="relationTypeManager" msgid="2272860813153171857">"Menadžer"</string>
+ <string name="relationTypeMother" msgid="2331762740982699460">"Majka"</string>
+ <string name="relationTypeParent" msgid="4177920938333039882">"Roditelj"</string>
+ <string name="relationTypePartner" msgid="4018017075116766194">"Partner"</string>
+ <string name="relationTypeReferredBy" msgid="5285082289602849400">"Uputio/la"</string>
+ <string name="relationTypeRelative" msgid="3396498519818009134">"Rođak"</string>
+ <string name="relationTypeSister" msgid="3721676005094140671">"Sestra"</string>
+ <string name="relationTypeSpouse" msgid="6916682664436031703">"Suprug/a"</string>
+ <string name="sipAddressTypeCustom" msgid="6283889809842649336">"Prilagođeno"</string>
+ <string name="sipAddressTypeHome" msgid="5918441930656878367">"Početna"</string>
+ <string name="sipAddressTypeWork" msgid="7873967986701216770">"Posao"</string>
+ <string name="sipAddressTypeOther" msgid="6317012577345187275">"Drugi"</string>
+ <string name="quick_contacts_not_available" msgid="1262709196045052223">"Nije pronađena nijedna aplikacija za prikaz ovog kontakta."</string>
+ <string name="keyguard_password_enter_pin_code" msgid="6401406801060956153">"Unesite PIN kôd"</string>
+ <string name="keyguard_password_enter_puk_code" msgid="3112256684547584093">"Unesite PUK i novi PIN kôd"</string>
+ <string name="keyguard_password_enter_puk_prompt" msgid="2825313071899938305">"PUK kôd"</string>
+ <string name="keyguard_password_enter_pin_prompt" msgid="5505434724229581207">"Novi PIN kôd"</string>
+ <string name="keyguard_password_entry_touch_hint" msgid="4032288032993261520"><font size="17">"Dodirnite za unos lozinke"</font></string>
+ <string name="keyguard_password_enter_password_code" msgid="2751130557661643482">"Otkucajte lozinku da biste otključali"</string>
+ <string name="keyguard_password_enter_pin_password_code" msgid="7792964196473964340">"Unesite PIN za otključavanje"</string>
+ <string name="keyguard_password_wrong_pin_code" msgid="8583732939138432793">"PIN kôd je netačan."</string>
+ <string name="keyguard_label_text" msgid="3841953694564168384">"Da biste otključali, pritisnite „Meni“, a zatim 0."</string>
+ <string name="emergency_call_dialog_number_for_display" msgid="2978165477085612673">"Broj za hitne slučajeve"</string>
+ <string name="lockscreen_carrier_default" msgid="6192313772955399160">"Mobilna mreža nije dostupna"</string>
+ <string name="lockscreen_screen_locked" msgid="7364905540516041817">"Ekran je zaključan."</string>
+ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pritisnite „Meni“ da biste otključali telefon ili uputite hitan poziv."</string>
+ <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pritisnite „Meni“ za otključavanje."</string>
+ <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Unesite šablon za otključavanje"</string>
+ <string name="lockscreen_emergency_call" msgid="7500692654885445299">"Hitne službe"</string>
+ <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Nazad na poziv"</string>
+ <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Tačno!"</string>
+ <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Probajte ponovo"</string>
+ <string name="lockscreen_password_wrong" msgid="8605355913868947490">"Probajte ponovo"</string>
+ <string name="lockscreen_storage_locked" msgid="634993789186443380">"Otključaj za sve funkcije i podatke"</string>
+ <string name="faceunlock_multiple_failures" msgid="681991538434031708">"Premašen je najveći dozvoljeni broj pokušaja Otključavanja licem"</string>
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Nema SIM-a"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Nema SIM-a u tabletu."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Nema SIM-a u Android TV uređaju."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Nema SIM-a u telefonu."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Dodajte SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM nedostaje ili ne može da se pročita. Dodajte SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Neupotrebljiv SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM je trajno deaktiviran.\n Obratite se dobavljaču usluge bežične telefonije da biste dobili drugi SIM."</string>
+ <string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Prethodna pesma"</string>
+ <string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Sledeća pesma"</string>
+ <string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pauza"</string>
+ <string name="lockscreen_transport_play_description" msgid="106868788691652733">"Pusti"</string>
+ <string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"Zaustavi"</string>
+ <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"Premotaj unazad"</string>
+ <string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Premotaj unapred"</string>
+ <string name="emergency_calls_only" msgid="3057351206678279851">"Samo hitni pozivi"</string>
+ <string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Mreža je zaključana"</string>
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM je zaključan PUK-om."</string>
+ <string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Pogledajte Korisnički vodič ili kontaktirajte Korisničku podršku."</string>
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM je zaključan."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Otključava se SIM…"</string>
+ <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"<xliff:g id="NUMBER_0">%1$d</xliff:g> puta ste nepravilno nacrtali šablon za otključavanje. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunde/i."</string>
+ <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"<xliff:g id="NUMBER_0">%1$d</xliff:g> puta ste pogrešno uneli lozinku. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunde/i."</string>
+ <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"<xliff:g id="NUMBER_0">%1$d</xliff:g> puta ste pogrešno uneli PIN. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunde/i."</string>
+ <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="3069635524964070596">"<xliff:g id="NUMBER_0">%1$d</xliff:g> puta ste netačno uneli šablon za otključavanje. Nakon još <xliff:g id="NUMBER_1">%2$d</xliff:g> nesupešna(ih) pokušaja, od vas će biti zatraženo da otključate tablet pomoću podataka za prijavljivanje na Google.\n\n Probajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunde/i."</string>
+ <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"Netačno ste nacrtali šablon za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još puta (<xliff:g id="NUMBER_1">%2$d</xliff:g>), zatražićemo da otključate telefon pomoću Android TV uređaja.\n\n Probajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sek."</string>
+ <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"<xliff:g id="NUMBER_0">%1$d</xliff:g> puta ste netačno uneli šablon za otključavanje. Nakon još <xliff:g id="NUMBER_1">%2$d</xliff:g> nesupešna(ih) pokušaja, od vas će biti zatraženo da otključate telefon pomoću podataka za prijavljivanje na Google.\n\n Probajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunde/i."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"Nepravilno ste pokušali da otključate tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Nakon još neuspešnih pokušaja (<xliff:g id="NUMBER_1">%2$d</xliff:g>) tablet će biti resetovan na fabrička podešavanja i svi korisnički podaci će biti izgubljeni."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"Broj vaših neuspešnih pokušaja da otključate Android TV uređaj: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Broj preostalih neuspešnih pokušaja posle kojih će se Android TV resetovati na fabrička podešavanja i svi podaci korisnika će biti izgubljeni: <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"Neispravno ste pokušali da otključate telefon <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Nakon još neuspešnih pokušaja (<xliff:g id="NUMBER_1">%2$d</xliff:g>) telefon će biti resetovan na fabrička podešavanja i svi korisnički podaci će biti izgubljeni."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"Neispravno ste pokušali da otključate tablet <xliff:g id="NUMBER">%d</xliff:g> puta. Tablet će sada biti vraćen na podrazumevana fabrička podešavanja."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="2205435033340091883">"Broj vaših neuspešnih pokušaja da otključate Android TV uređaj: <xliff:g id="NUMBER">%d</xliff:g>. Android TV uređaj će se sada resetovati na fabrička podešavanja."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="2203704707679895487">"Neispravno ste pokušali da otključate telefon <xliff:g id="NUMBER">%d</xliff:g> puta. Telefon će sada biti vraćen na podrazumevana fabrička podešavanja."</string>
+ <string name="lockscreen_too_many_failed_attempts_countdown" msgid="6807200118164539589">"Probajte ponovo za <xliff:g id="NUMBER">%d</xliff:g> sekunde/i."</string>
+ <string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"Zaboravili ste šablon?"</string>
+ <string name="lockscreen_glogin_forgot_pattern" msgid="9218940117797602518">"Otključavanje naloga"</string>
+ <string name="lockscreen_glogin_too_many_attempts" msgid="3775904917743034195">"Previše pokušaja unosa šablona"</string>
+ <string name="lockscreen_glogin_instructions" msgid="4695162942525531700">"Da biste otključali, prijavite se pomoću Google naloga."</string>
+ <string name="lockscreen_glogin_username_hint" msgid="6916101478673157045">"Korisničko ime (imejl adresa)"</string>
+ <string name="lockscreen_glogin_password_hint" msgid="3031027901286812848">"Lozinka"</string>
+ <string name="lockscreen_glogin_submit_button" msgid="3590556636347843733">"Prijavi me"</string>
+ <string name="lockscreen_glogin_invalid_input" msgid="4369219936865697679">"Nevažeće korisničko ime ili lozinka."</string>
+ <string name="lockscreen_glogin_account_recovery_hint" msgid="1683405808525090649">"Zaboravili ste korisničko ime ili lozinku?\nPosetite adresu "<b>"google.com/accounts/recovery"</b>"."</string>
+ <string name="lockscreen_glogin_checking_password" msgid="2607271802803381645">"Proveravanje..."</string>
+ <string name="lockscreen_unlock_label" msgid="4648257878373307582">"Otključaj"</string>
+ <string name="lockscreen_sound_on_label" msgid="1660281470535492430">"Uključi zvuk"</string>
+ <string name="lockscreen_sound_off_label" msgid="2331496559245450053">"Isključi zvuk"</string>
+ <string name="lockscreen_access_pattern_start" msgid="3778502525702613399">"Obrazac je započet"</string>
+ <string name="lockscreen_access_pattern_cleared" msgid="7493849102641167049">"Obrazac je obrisan"</string>
+ <string name="lockscreen_access_pattern_cell_added" msgid="6746676335293144163">"Ćelija je dodata"</string>
+ <string name="lockscreen_access_pattern_cell_added_verbose" msgid="2931364927622563465">"Ćelija <xliff:g id="CELL_INDEX">%1$s</xliff:g> je dodata"</string>
+ <string name="lockscreen_access_pattern_detected" msgid="3931150554035194012">"Obrazac je dovršen"</string>
+ <string name="lockscreen_access_pattern_area" msgid="1288780416685002841">"Oblast šablona."</string>
+ <string name="keyguard_accessibility_widget_changed" msgid="7298011259508200234">"%1$s. Vidžet %2$d od %3$d."</string>
+ <string name="keyguard_accessibility_add_widget" msgid="8245795023551343672">"Dodaj vidžet."</string>
+ <string name="keyguard_accessibility_widget_empty_slot" msgid="544239307077644480">"Prazno"</string>
+ <string name="keyguard_accessibility_unlock_area_expanded" msgid="7768634718706488951">"Oblast otključavanja je proširena."</string>
+ <string name="keyguard_accessibility_unlock_area_collapsed" msgid="4729922043778400434">"Oblast otključavanja je skupljena."</string>
+ <string name="keyguard_accessibility_widget" msgid="6776892679715699875">"Vidžet <xliff:g id="WIDGET_INDEX">%1$s</xliff:g>."</string>
+ <string name="keyguard_accessibility_user_selector" msgid="1466067610235696600">"Izbor korisnika"</string>
+ <string name="keyguard_accessibility_status" msgid="6792745049712397237">"Status"</string>
+ <string name="keyguard_accessibility_camera" msgid="7862557559464986528">"Kamera"</string>
+ <string name="keygaurd_accessibility_media_controls" msgid="2267379779900620614">"Kontrole za medije"</string>
+ <string name="keyguard_accessibility_widget_reorder_start" msgid="7066213328912939191">"Započela je promena redosleda vidžeta."</string>
+ <string name="keyguard_accessibility_widget_reorder_end" msgid="1083806817600593490">"Promena redosleda vidžeta je završena."</string>
+ <string name="keyguard_accessibility_widget_deleted" msgid="1509738950119878705">"Vidžet <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> je izbrisan."</string>
+ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Proširi oblast otključavanja."</string>
+ <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Otključavanje prevlačenjem."</string>
+ <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Otključavanje šablonom."</string>
+ <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Otključavanje licem."</string>
+ <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Otključavanje PIN-om."</string>
+ <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Otključava SIM karticu PIN-om."</string>
+ <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Otključava SIM karticu PUK-om."</string>
+ <string name="keyguard_accessibility_password_unlock" msgid="6130186108581153265">"Otključavanje lozinkom."</string>
+ <string name="keyguard_accessibility_pattern_area" msgid="1419570880512350689">"Oblast šablona."</string>
+ <string name="keyguard_accessibility_slide_area" msgid="4331399051142520176">"Oblast prevlačenja."</string>
<string name="password_keyboard_label_symbol_key" msgid="2716255580853511949">"?123"</string>
<string name="password_keyboard_label_alpha_key" msgid="5294837425652726684">"ABC"</string>
<string name="password_keyboard_label_alt_key" msgid="8528261816395508841">"ALT"</string>
- <string name="granularity_label_character" msgid="8903387663153706317">"знак"</string>
- <string name="granularity_label_word" msgid="3686589158760620518">"реч"</string>
- <string name="granularity_label_link" msgid="9007852307112046526">"линк"</string>
- <string name="granularity_label_line" msgid="376204904280620221">"ред"</string>
- <string name="factorytest_failed" msgid="3190979160945298006">"Фабричко тестирање није успело"</string>
- <string name="factorytest_not_system" msgid="5658160199925519869">"Радња FACTORY_TEST је подржана само за пакете инсталиране у фолдеру /system/app."</string>
- <string name="factorytest_no_action" msgid="339252838115675515">"Није пронађен ниједан пакет који обезбеђује радњу FACTORY_TEST."</string>
- <string name="factorytest_reboot" msgid="2050147445567257365">"Рестартуј"</string>
- <string name="js_dialog_title" msgid="7464775045615023241">"На страници на адреси „<xliff:g id="TITLE">%s</xliff:g>“ пише:"</string>
+ <string name="granularity_label_character" msgid="8903387663153706317">"znak"</string>
+ <string name="granularity_label_word" msgid="3686589158760620518">"reč"</string>
+ <string name="granularity_label_link" msgid="9007852307112046526">"link"</string>
+ <string name="granularity_label_line" msgid="376204904280620221">"red"</string>
+ <string name="factorytest_failed" msgid="3190979160945298006">"Fabričko testiranje nije uspelo"</string>
+ <string name="factorytest_not_system" msgid="5658160199925519869">"Radnja FACTORY_TEST je podržana samo za pakete instalirane u folderu /system/app."</string>
+ <string name="factorytest_no_action" msgid="339252838115675515">"Nije pronađen nijedan paket koji obezbeđuje radnju FACTORY_TEST."</string>
+ <string name="factorytest_reboot" msgid="2050147445567257365">"Restartuj"</string>
+ <string name="js_dialog_title" msgid="7464775045615023241">"Na stranici na adresi „<xliff:g id="TITLE">%s</xliff:g>“ piše:"</string>
<string name="js_dialog_title_default" msgid="3769524569903332476">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="7012587995876771246">"Потврда навигације"</string>
- <string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Затвори ову страницу"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Остани на овој страници"</string>
- <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nДа ли стварно желите да напустите ову страницу?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Потврда"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Савет: Додирните двапут да бисте увећали и умањили приказ."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Аутом. поп."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Подеш. аут. поп."</string>
- <string name="autofill_window_title" msgid="4379134104008111961">"Аутоматски попуњава <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Покрајина"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Поштански број"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Држава"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Поштански број"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Округ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Острво"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Дистрикт"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Одељење"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Префектура"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Парохија"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Област"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Емират"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"читање веб обележивача и историје"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Дозвољава апликацији да чита историју свих URL адреса које су посећене помоћу Прегледача, као и све обележиваче у Прегледачу. Напомена: Ова дозвола се можда на примењује на прегледаче треће стране и друге апликације са могућношћу веб прегледања."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"писање веб обележивача и историје"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Дозвољава апликацији да мења историју Прегледача или обележиваче ускладиштене на таблету. Ово може да омогући апликацији да брише или мења податке Прегледача. Напомена: Ова дозвола се можда на примењује на прегледаче треће стране и друге апликације са могућношћу веб прегледања."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Дозвољава апликацији да мења историју прегледача или обележиваче који се чувају на Android TV уређају. Ово може да омогући апликацији да брише или мења податке прегледача. Напомена: ова дозвола се можда не примењује на прегледаче треће стране ни друге апликације са могућностима веб-прегледања."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Дозвољава апликацији да мења историју Прегледача или обележиваче ускладиштене на телефону. Ово може да омогући апликацији да брише или мења податке Прегледача. Напомена: Ова дозвола се можда на примењује на прегледаче треће стране и друге апликације са могућношћу веб прегледања."</string>
- <string name="permlab_setAlarm" msgid="1158001610254173567">"подешавање аларма"</string>
- <string name="permdesc_setAlarm" msgid="2185033720060109640">"Дозвољава апликацији да подеси аларм у инсталираној апликацији будилника. Неке апликације будилника можда не примењују ову функцију."</string>
- <string name="permlab_addVoicemail" msgid="4770245808840814471">"додавање говорне поште"</string>
- <string name="permdesc_addVoicemail" msgid="5470312139820074324">"Дозвољава апликацији да додаје поруке у пријемно сандуче говорне поште."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"измена дозвола за географске локације Прегледача"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дозвољава апликацији да измени дозволе Прегледача за утврђивање географске локације. Злонамерне апликације то могу да злоупотребе и искористе за слање информација о локацији насумичним веб-сајтовима."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Желите ли да прегледач запамти ову лозинку?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Не сада"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Запамти"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Никад"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Немате дозволу да отворите ову страницу."</string>
- <string name="text_copied" msgid="2531420577879738860">"Текст је копиран у привремену меморију."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила податке из апликације <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
- <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је прелепио/ла из привремене меморије"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила текст који сте копирали"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила слику коју сте копирали"</string>
- <string name="pasted_content" msgid="646276353060777131">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила садржај који сте копирали"</string>
- <string name="more_item_label" msgid="7419249600215749115">"Још"</string>
- <string name="prepend_shortcut_label" msgid="1743716737502867951">"Мени+"</string>
+ <string name="js_dialog_before_unload_title" msgid="7012587995876771246">"Potvrda navigacije"</string>
+ <string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Zatvori ovu stranicu"</string>
+ <string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Ostani na ovoj stranici"</string>
+ <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nDa li stvarno želite da napustite ovu stranicu?"</string>
+ <string name="autofill_window_title" msgid="4379134104008111961">"Automatski popunjava <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
+ <string name="permlab_setAlarm" msgid="1158001610254173567">"podešavanje alarma"</string>
+ <string name="permdesc_setAlarm" msgid="2185033720060109640">"Dozvoljava aplikaciji da podesi alarm u instaliranoj aplikaciji budilnika. Neke aplikacije budilnika možda ne primenjuju ovu funkciju."</string>
+ <string name="permlab_addVoicemail" msgid="4770245808840814471">"dodavanje govorne pošte"</string>
+ <string name="permdesc_addVoicemail" msgid="5470312139820074324">"Dozvoljava aplikaciji da dodaje poruke u prijemno sanduče govorne pošte."</string>
+ <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prelepio/la iz privremene memorije"</string>
+ <string name="more_item_label" msgid="7419249600215749115">"Još"</string>
+ <string name="prepend_shortcut_label" msgid="1743716737502867951">"Meni+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
<string name="menu_ctrl_shortcut_label" msgid="131911133027196485">"Ctrl+"</string>
<string name="menu_alt_shortcut_label" msgid="343761069945250991">"Alt+"</string>
<string name="menu_shift_shortcut_label" msgid="5443936876111232346">"Shift+"</string>
<string name="menu_sym_shortcut_label" msgid="4037566049061218776">"Sym+"</string>
<string name="menu_function_shortcut_label" msgid="2367112760987662566">"Function+"</string>
- <string name="menu_space_shortcut_label" msgid="5949311515646872071">"размак"</string>
+ <string name="menu_space_shortcut_label" msgid="5949311515646872071">"razmak"</string>
<string name="menu_enter_shortcut_label" msgid="6709499510082897320">"enter"</string>
- <string name="menu_delete_shortcut_label" msgid="4365787714477739080">"избриши"</string>
- <string name="search_go" msgid="2141477624421347086">"Претражи"</string>
- <string name="search_hint" msgid="455364685740251925">"Претражите…"</string>
- <string name="searchview_description_search" msgid="1045552007537359343">"Претражи"</string>
- <string name="searchview_description_query" msgid="7430242366971716338">"Упит за претрагу"</string>
- <string name="searchview_description_clear" msgid="1989371719192982900">"Обриши упит"</string>
- <string name="searchview_description_submit" msgid="6771060386117334686">"Пошаљи упит"</string>
- <string name="searchview_description_voice" msgid="42360159504884679">"Гласовна претрага"</string>
- <string name="enable_explore_by_touch_warning_title" msgid="5095399706284943314">"Oмогућити Истраживање додиром?"</string>
- <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> жели да омогући Истраживање додиром. Када је Истраживање додиром укључено, можете да чујете или видите описе ставке на коју сте ставили прст или да комуницирате са таблетом помоћу покрета."</string>
- <string name="enable_explore_by_touch_warning_message" product="default" msgid="4312979647356179250">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> жели да омогући Истраживање додиром. Када је Истраживање додиром укључено, можете да чујете или видите описе ставке на коју сте ставили прст или да комуницирате са телефоном помоћу покрета."</string>
- <string name="oneMonthDurationPast" msgid="4538030857114635777">"Пре месец дана"</string>
- <string name="beforeOneMonthDurationPast" msgid="8315149541372065392">"Пре месец дана"</string>
- <string name="last_num_days" msgid="2393660431490280537">"{count,plural, =1{Последњи # дан}one{Последњи # дан}few{Последња # дана}other{Последњих # дана}}"</string>
- <string name="last_month" msgid="1528906781083518683">"Прошлог месеца"</string>
- <string name="older" msgid="1645159827884647400">"Старије"</string>
+ <string name="menu_delete_shortcut_label" msgid="4365787714477739080">"izbriši"</string>
+ <string name="search_go" msgid="2141477624421347086">"Pretraži"</string>
+ <string name="search_hint" msgid="455364685740251925">"Pretražite…"</string>
+ <string name="searchview_description_search" msgid="1045552007537359343">"Pretraži"</string>
+ <string name="searchview_description_query" msgid="7430242366971716338">"Upit za pretragu"</string>
+ <string name="searchview_description_clear" msgid="1989371719192982900">"Obriši upit"</string>
+ <string name="searchview_description_submit" msgid="6771060386117334686">"Pošalji upit"</string>
+ <string name="searchview_description_voice" msgid="42360159504884679">"Glasovna pretraga"</string>
+ <string name="enable_explore_by_touch_warning_title" msgid="5095399706284943314">"Omogućiti Istraživanje dodirom?"</string>
+ <string name="enable_explore_by_touch_warning_message" product="tablet" msgid="1037295476738940824">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> želi da omogući Istraživanje dodirom. Kada je Istraživanje dodirom uključeno, možete da čujete ili vidite opise stavke na koju ste stavili prst ili da komunicirate sa tabletom pomoću pokreta."</string>
+ <string name="enable_explore_by_touch_warning_message" product="default" msgid="4312979647356179250">"<xliff:g id="ACCESSIBILITY_SERVICE_NAME">%1$s</xliff:g> želi da omogući Istraživanje dodirom. Kada je Istraživanje dodirom uključeno, možete da čujete ili vidite opise stavke na koju ste stavili prst ili da komunicirate sa telefonom pomoću pokreta."</string>
+ <string name="oneMonthDurationPast" msgid="4538030857114635777">"Pre mesec dana"</string>
+ <string name="beforeOneMonthDurationPast" msgid="8315149541372065392">"Pre mesec dana"</string>
+ <string name="last_num_days" msgid="2393660431490280537">"{count,plural, =1{Poslednji # dan}one{Poslednji # dan}few{Poslednja # dana}other{Poslednjih # dana}}"</string>
+ <string name="last_month" msgid="1528906781083518683">"Prošlog meseca"</string>
+ <string name="older" msgid="1645159827884647400">"Starije"</string>
<string name="preposition_for_date" msgid="2780767868832729599">"<xliff:g id="DATE">%s</xliff:g>"</string>
- <string name="preposition_for_time" msgid="4336835286453822053">"у <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="preposition_for_year" msgid="3149809685340130039">"у <xliff:g id="YEAR">%s</xliff:g>."</string>
- <string name="day" msgid="8394717255950176156">"дан"</string>
- <string name="days" msgid="4570879797423034973">"дана"</string>
- <string name="hour" msgid="7796325297097314653">"сат"</string>
- <string name="hours" msgid="8517014849629200683">"сата"</string>
- <string name="minute" msgid="8369209540986467610">"мин"</string>
- <string name="minutes" msgid="3456532942641808971">"мин"</string>
- <string name="second" msgid="9210875257112211713">"сек"</string>
- <string name="seconds" msgid="2175052687727971048">"сек"</string>
- <string name="week" msgid="907127093960923779">"недеља"</string>
- <string name="weeks" msgid="3516247214269821391">"недеље/а"</string>
- <string name="year" msgid="5182610307741238982">"година"</string>
- <string name="years" msgid="5797714729103773425">"годинe(а)"</string>
- <string name="now_string_shortest" msgid="3684914126941650330">"сада"</string>
- <string name="duration_minutes_shortest" msgid="5744379079540806690">"<xliff:g id="COUNT">%d</xliff:g> мин"</string>
- <string name="duration_hours_shortest" msgid="1477752094141971675">"<xliff:g id="COUNT">%d</xliff:g> с"</string>
- <string name="duration_days_shortest" msgid="4083124701676227233">"<xliff:g id="COUNT">%d</xliff:g> д"</string>
- <string name="duration_years_shortest" msgid="483982719231145618">"<xliff:g id="COUNT">%d</xliff:g> год"</string>
- <string name="duration_minutes_shortest_future" msgid="5260857299282734759">"за <xliff:g id="COUNT">%d</xliff:g> мин"</string>
- <string name="duration_hours_shortest_future" msgid="2979276794547981674">"за <xliff:g id="COUNT">%d</xliff:g> с"</string>
- <string name="duration_days_shortest_future" msgid="3392722163935571543">"за <xliff:g id="COUNT">%d</xliff:g> д"</string>
- <string name="duration_years_shortest_future" msgid="5537464088352970388">"за <xliff:g id="COUNT">%d</xliff:g> год"</string>
- <string name="duration_minutes_relative" msgid="8620337701051015593">"{count,plural, =1{Пре # минут}one{Пре # минут}few{Пре # минута}other{Пре # минута}}"</string>
- <string name="duration_hours_relative" msgid="4836449961693180253">"{count,plural, =1{Пре # сат}one{Пре # сат}few{Пре # сата}other{Пре # сати}}"</string>
- <string name="duration_days_relative" msgid="621965767567258302">"{count,plural, =1{Пре # дан}one{Пре # дан}few{Пре # дана}other{Пре # дана}}"</string>
- <string name="duration_years_relative" msgid="8731202348869424370">"{count,plural, =1{Пре # годину}one{Пре # годину}few{Пре # године}other{Пре # година}}"</string>
- <string name="duration_minutes_relative_future" msgid="5259574171747708115">"{count,plural, =1{# минут}one{# минут}few{# минута}other{# минута}}"</string>
- <string name="duration_hours_relative_future" msgid="6670440478481140565">"{count,plural, =1{# сат}one{# сат}few{# сата}other{# сати}}"</string>
- <string name="duration_days_relative_future" msgid="8870658635774250746">"{count,plural, =1{# дан}one{# дан}few{# дана}other{# дана}}"</string>
- <string name="duration_years_relative_future" msgid="8855853883925918380">"{count,plural, =1{# година}one{# година}few{# године}other{# година}}"</string>
- <string name="VideoView_error_title" msgid="5750686717225068016">"Проблем са видео снимком"</string>
- <string name="VideoView_error_text_invalid_progressive_playback" msgid="3782449246085134720">"Овај видео не може да се стримује на овом уређају."</string>
- <string name="VideoView_error_text_unknown" msgid="7658683339707607138">"Не можете да пустите овај видео."</string>
- <string name="VideoView_error_button" msgid="5138809446603764272">"Потврди"</string>
+ <string name="preposition_for_time" msgid="4336835286453822053">"u <xliff:g id="TIME">%s</xliff:g>"</string>
+ <string name="preposition_for_year" msgid="3149809685340130039">"u <xliff:g id="YEAR">%s</xliff:g>."</string>
+ <string name="day" msgid="8394717255950176156">"dan"</string>
+ <string name="days" msgid="4570879797423034973">"dana"</string>
+ <string name="hour" msgid="7796325297097314653">"sat"</string>
+ <string name="hours" msgid="8517014849629200683">"sata"</string>
+ <string name="minute" msgid="8369209540986467610">"min"</string>
+ <string name="minutes" msgid="3456532942641808971">"min"</string>
+ <string name="second" msgid="9210875257112211713">"sek"</string>
+ <string name="seconds" msgid="2175052687727971048">"sek"</string>
+ <string name="week" msgid="907127093960923779">"nedelja"</string>
+ <string name="weeks" msgid="3516247214269821391">"nedelje/a"</string>
+ <string name="year" msgid="5182610307741238982">"godina"</string>
+ <string name="years" msgid="5797714729103773425">"godine(a)"</string>
+ <string name="now_string_shortest" msgid="3684914126941650330">"sada"</string>
+ <string name="duration_minutes_shortest" msgid="5744379079540806690">"<xliff:g id="COUNT">%d</xliff:g> min"</string>
+ <string name="duration_hours_shortest" msgid="1477752094141971675">"<xliff:g id="COUNT">%d</xliff:g> s"</string>
+ <string name="duration_days_shortest" msgid="4083124701676227233">"<xliff:g id="COUNT">%d</xliff:g> d"</string>
+ <string name="duration_years_shortest" msgid="483982719231145618">"<xliff:g id="COUNT">%d</xliff:g> god"</string>
+ <string name="duration_minutes_shortest_future" msgid="5260857299282734759">"za <xliff:g id="COUNT">%d</xliff:g> min"</string>
+ <string name="duration_hours_shortest_future" msgid="2979276794547981674">"za <xliff:g id="COUNT">%d</xliff:g> s"</string>
+ <string name="duration_days_shortest_future" msgid="3392722163935571543">"za <xliff:g id="COUNT">%d</xliff:g> d"</string>
+ <string name="duration_years_shortest_future" msgid="5537464088352970388">"za <xliff:g id="COUNT">%d</xliff:g> god"</string>
+ <string name="duration_minutes_relative" msgid="8620337701051015593">"{count,plural, =1{Pre # minut}one{Pre # minut}few{Pre # minuta}other{Pre # minuta}}"</string>
+ <string name="duration_hours_relative" msgid="4836449961693180253">"{count,plural, =1{Pre # sat}one{Pre # sat}few{Pre # sata}other{Pre # sati}}"</string>
+ <string name="duration_days_relative" msgid="621965767567258302">"{count,plural, =1{Pre # dan}one{Pre # dan}few{Pre # dana}other{Pre # dana}}"</string>
+ <string name="duration_years_relative" msgid="8731202348869424370">"{count,plural, =1{Pre # godinu}one{Pre # godinu}few{Pre # godine}other{Pre # godina}}"</string>
+ <string name="duration_minutes_relative_future" msgid="5259574171747708115">"{count,plural, =1{# minut}one{# minut}few{# minuta}other{# minuta}}"</string>
+ <string name="duration_hours_relative_future" msgid="6670440478481140565">"{count,plural, =1{# sat}one{# sat}few{# sata}other{# sati}}"</string>
+ <string name="duration_days_relative_future" msgid="8870658635774250746">"{count,plural, =1{# dan}one{# dan}few{# dana}other{# dana}}"</string>
+ <string name="duration_years_relative_future" msgid="8855853883925918380">"{count,plural, =1{# godina}one{# godina}few{# godine}other{# godina}}"</string>
+ <string name="VideoView_error_title" msgid="5750686717225068016">"Problem sa video snimkom"</string>
+ <string name="VideoView_error_text_invalid_progressive_playback" msgid="3782449246085134720">"Ovaj video ne može da se strimuje na ovom uređaju."</string>
+ <string name="VideoView_error_text_unknown" msgid="7658683339707607138">"Ne možete da pustite ovaj video."</string>
+ <string name="VideoView_error_button" msgid="5138809446603764272">"Potvrdi"</string>
<string name="relative_time" msgid="8572030016028033243">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <string name="noon" msgid="8365974533050605886">"подне"</string>
- <string name="Noon" msgid="6902418443846838189">"Подне"</string>
- <string name="midnight" msgid="3646671134282785114">"поноћ"</string>
- <string name="Midnight" msgid="8176019203622191377">"Поноћ"</string>
+ <string name="noon" msgid="8365974533050605886">"podne"</string>
+ <string name="Noon" msgid="6902418443846838189">"Podne"</string>
+ <string name="midnight" msgid="3646671134282785114">"ponoć"</string>
+ <string name="Midnight" msgid="8176019203622191377">"Ponoć"</string>
<string name="elapsed_time_short_format_mm_ss" msgid="8689459651807876423">"<xliff:g id="MINUTES">%1$02d</xliff:g>:<xliff:g id="SECONDS">%2$02d</xliff:g>"</string>
<string name="elapsed_time_short_format_h_mm_ss" msgid="2302144714803345056">"<xliff:g id="HOURS">%1$d</xliff:g>:<xliff:g id="MINUTES">%2$02d</xliff:g>:<xliff:g id="SECONDS">%3$02d</xliff:g>"</string>
- <string name="selectAll" msgid="1532369154488982046">"Изабери све"</string>
- <string name="cut" msgid="2561199725874745819">"Исеци"</string>
- <string name="copy" msgid="5472512047143665218">"Копирај"</string>
- <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Копирање у привремену меморију није успело"</string>
- <string name="paste" msgid="461843306215520225">"Налепи"</string>
- <string name="paste_as_plain_text" msgid="7664800665823182587">"Налепи као обичан текст"</string>
- <string name="replace" msgid="7842675434546657444">"Замени..."</string>
- <string name="delete" msgid="1514113991712129054">"Избриши"</string>
- <string name="copyUrl" msgid="6229645005987260230">"Копирај URL адресу"</string>
- <string name="selectTextMode" msgid="3225108910999318778">"Изабери текст"</string>
- <string name="undo" msgid="3175318090002654673">"Опозови"</string>
- <string name="redo" msgid="7231448494008532233">"Понови"</string>
- <string name="autofill" msgid="511224882647795296">"Аутоматско попуњавање"</string>
- <string name="textSelectionCABTitle" msgid="5151441579532476940">"Избор текста"</string>
- <string name="addToDictionary" msgid="8041821113480950096">"Додај у речник"</string>
- <string name="deleteText" msgid="4200807474529938112">"Избриши"</string>
- <string name="inputMethod" msgid="1784759500516314751">"Метод уноса"</string>
- <string name="editTextMenuTitle" msgid="857666911134482176">"Радње у вези са текстом"</string>
- <string name="input_method_nav_back_button_desc" msgid="3655838793765691787">"Назад"</string>
- <string name="input_method_ime_switch_button_desc" msgid="2736542240252198501">"Промените метод уноса"</string>
- <string name="low_internal_storage_view_title" msgid="9024241779284783414">"Меморијски простор је на измаку"</string>
- <string name="low_internal_storage_view_text" msgid="8172166728369697835">"Неке системске функције можда не функционишу"</string>
- <string name="low_internal_storage_view_text_no_boot" msgid="7368968163411251788">"Нема довољно меморијског простора за систем. Уверите се да имате 250 MB слободног простора и поново покрените."</string>
- <string name="app_running_notification_title" msgid="8985999749231486569">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> је покренута"</string>
- <string name="app_running_notification_text" msgid="5120815883400228566">"Додирните за више информација или заустављање апликације."</string>
- <string name="ok" msgid="2646370155170753815">"Потврди"</string>
- <string name="cancel" msgid="6908697720451760115">"Откажи"</string>
- <string name="yes" msgid="9069828999585032361">"Потврди"</string>
- <string name="no" msgid="5122037903299899715">"Откажи"</string>
- <string name="dialog_alert_title" msgid="651856561974090712">"Пажња"</string>
- <string name="loading" msgid="3138021523725055037">"Учитава се…"</string>
- <string name="capital_on" msgid="2770685323900821829">"ДА"</string>
- <string name="capital_off" msgid="7443704171014626777">"НЕ"</string>
- <string name="checked" msgid="9179896827054513119">"означено је"</string>
- <string name="not_checked" msgid="7972320087569023342">"није означено"</string>
- <string name="selected" msgid="6614607926197755875">"изабрано"</string>
- <string name="not_selected" msgid="410652016565864475">"није изабрано"</string>
- <string name="rating_label" msgid="1837085249662154601">"{rating,plural, =1{Једна звездица од {max}}one{# звездица од {max}}few{# звездице од {max}}other{# звездица од {max}}}"</string>
- <string name="in_progress" msgid="2149208189184319441">"у току"</string>
- <string name="whichApplication" msgid="5432266899591255759">"Доврши радњу преко"</string>
- <string name="whichApplicationNamed" msgid="6969946041713975681">"Завршите радњу помоћу апликације %1$s"</string>
- <string name="whichApplicationLabel" msgid="7852182961472531728">"Заврши радњу"</string>
- <string name="whichViewApplication" msgid="5733194231473132945">"Отворите помоћу"</string>
- <string name="whichViewApplicationNamed" msgid="415164730629690105">"Отворите помоћу апликације %1$s"</string>
- <string name="whichViewApplicationLabel" msgid="7367556735684742409">"Отвори"</string>
- <string name="whichOpenHostLinksWith" msgid="7645631470199397485">"Отварајте <xliff:g id="HOST">%1$s</xliff:g> линкове помоћу"</string>
- <string name="whichOpenLinksWith" msgid="1120936181362907258">"Отварај линкове помоћу"</string>
- <string name="whichOpenLinksWithApp" msgid="6917864367861910086">"Отварајте линкове помоћу апликације <xliff:g id="APPLICATION">%1$s</xliff:g>"</string>
- <string name="whichOpenHostLinksWithApp" msgid="2401668560768463004">"Отварајте <xliff:g id="HOST">%1$s</xliff:g> линкове помоћу апликације <xliff:g id="APPLICATION">%2$s</xliff:g>"</string>
- <string name="whichGiveAccessToApplicationLabel" msgid="7805857277166106236">"Дозволи приступ"</string>
- <string name="whichEditApplication" msgid="6191568491456092812">"Измените помоћу"</string>
- <string name="whichEditApplicationNamed" msgid="8096494987978521514">"Измените помоћу апликације %1$s"</string>
- <string name="whichEditApplicationLabel" msgid="1463288652070140285">"Измени"</string>
- <string name="whichSendApplication" msgid="4143847974460792029">"Делите"</string>
- <string name="whichSendApplicationNamed" msgid="4470386782693183461">"Делите помоћу апликације %1$s"</string>
- <string name="whichSendApplicationLabel" msgid="7467813004769188515">"Дели"</string>
- <string name="whichSendToApplication" msgid="77101541959464018">"Пошаљите помоћу:"</string>
- <string name="whichSendToApplicationNamed" msgid="3385686512014670003">"Пошаљите помоћу: %1$s"</string>
- <string name="whichSendToApplicationLabel" msgid="3543240188816513303">"Пошаљи"</string>
- <string name="whichHomeApplication" msgid="8276350727038396616">"Изаберите апликацију за почетну страницу"</string>
- <string name="whichHomeApplicationNamed" msgid="5855990024847433794">"Користите %1$s за почетну"</string>
- <string name="whichHomeApplicationLabel" msgid="8907334282202933959">"Снимите слику"</string>
- <string name="whichImageCaptureApplication" msgid="2737413019463215284">"Снимите слику помоћу апликације"</string>
- <string name="whichImageCaptureApplicationNamed" msgid="8820702441847612202">"Снимите слику помоћу апликације %1$s"</string>
- <string name="whichImageCaptureApplicationLabel" msgid="6505433734824988277">"Снимите слику"</string>
- <string name="alwaysUse" msgid="3153558199076112903">"Подразумевано користи за ову радњу."</string>
- <string name="use_a_different_app" msgid="4987790276170972776">"Користите другу апликацију"</string>
- <string name="clearDefaultHintMsg" msgid="1325866337702524936">"Обришите подразумевано подешавање у менију Подешавања система > Апликације > Преузето."</string>
- <string name="chooseActivity" msgid="8563390197659779956">"Изаберите радњу"</string>
- <string name="chooseUsbActivity" msgid="2096269989990986612">"Избор апликације за USB уређај"</string>
- <string name="noApplications" msgid="1186909265235544019">"Ниједна апликација не може да обавља ову радњу."</string>
- <string name="aerr_application" msgid="4090916809370389109">"Апликација <xliff:g id="APPLICATION">%1$s</xliff:g> је заустављена"</string>
- <string name="aerr_process" msgid="4268018696970966407">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> је заустављен"</string>
- <string name="aerr_application_repeated" msgid="7804378743218496566">"<xliff:g id="APPLICATION">%1$s</xliff:g> се стално зауставља"</string>
- <string name="aerr_process_repeated" msgid="1153152413537954974">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> се стално зауставља"</string>
- <string name="aerr_restart" msgid="2789618625210505419">"Поново отвори апликацију"</string>
- <string name="aerr_report" msgid="3095644466849299308">"Пошаљите повратне информације"</string>
- <string name="aerr_close" msgid="3398336821267021852">"Затвори"</string>
- <string name="aerr_mute" msgid="2304972923480211376">"Игнориши док се уређај не покрене поново"</string>
- <string name="aerr_wait" msgid="3198677780474548217">"Чекај"</string>
- <string name="aerr_close_app" msgid="8318883106083050970">"Затвори апликацију"</string>
+ <string name="selectAll" msgid="1532369154488982046">"Izaberi sve"</string>
+ <string name="cut" msgid="2561199725874745819">"Iseci"</string>
+ <string name="copy" msgid="5472512047143665218">"Kopiraj"</string>
+ <string name="failed_to_copy_to_clipboard" msgid="725919885138539875">"Kopiranje u privremenu memoriju nije uspelo"</string>
+ <string name="paste" msgid="461843306215520225">"Nalepi"</string>
+ <string name="paste_as_plain_text" msgid="7664800665823182587">"Nalepi kao običan tekst"</string>
+ <string name="replace" msgid="7842675434546657444">"Zameni..."</string>
+ <string name="delete" msgid="1514113991712129054">"Izbriši"</string>
+ <string name="copyUrl" msgid="6229645005987260230">"Kopiraj URL adresu"</string>
+ <string name="selectTextMode" msgid="3225108910999318778">"Izaberi tekst"</string>
+ <string name="undo" msgid="3175318090002654673">"Opozovi"</string>
+ <string name="redo" msgid="7231448494008532233">"Ponovi"</string>
+ <string name="autofill" msgid="511224882647795296">"Automatsko popunjavanje"</string>
+ <string name="textSelectionCABTitle" msgid="5151441579532476940">"Izbor teksta"</string>
+ <string name="addToDictionary" msgid="8041821113480950096">"Dodaj u rečnik"</string>
+ <string name="deleteText" msgid="4200807474529938112">"Izbriši"</string>
+ <string name="inputMethod" msgid="1784759500516314751">"Metod unosa"</string>
+ <string name="editTextMenuTitle" msgid="857666911134482176">"Radnje u vezi sa tekstom"</string>
+ <string name="input_method_nav_back_button_desc" msgid="3655838793765691787">"Nazad"</string>
+ <string name="input_method_ime_switch_button_desc" msgid="2736542240252198501">"Promenite metod unosa"</string>
+ <string name="low_internal_storage_view_title" msgid="9024241779284783414">"Memorijski prostor je na izmaku"</string>
+ <string name="low_internal_storage_view_text" msgid="8172166728369697835">"Neke sistemske funkcije možda ne funkcionišu"</string>
+ <string name="low_internal_storage_view_text_no_boot" msgid="7368968163411251788">"Nema dovoljno memorijskog prostora za sistem. Uverite se da imate 250 MB slobodnog prostora i ponovo pokrenite."</string>
+ <string name="app_running_notification_title" msgid="8985999749231486569">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je pokrenuta"</string>
+ <string name="app_running_notification_text" msgid="5120815883400228566">"Dodirnite za više informacija ili zaustavljanje aplikacije."</string>
+ <string name="ok" msgid="2646370155170753815">"Potvrdi"</string>
+ <string name="cancel" msgid="6908697720451760115">"Otkaži"</string>
+ <string name="yes" msgid="9069828999585032361">"Potvrdi"</string>
+ <string name="no" msgid="5122037903299899715">"Otkaži"</string>
+ <string name="dialog_alert_title" msgid="651856561974090712">"Pažnja"</string>
+ <string name="loading" msgid="3138021523725055037">"Učitava se…"</string>
+ <string name="capital_on" msgid="2770685323900821829">"DA"</string>
+ <string name="capital_off" msgid="7443704171014626777">"NE"</string>
+ <string name="checked" msgid="9179896827054513119">"označeno je"</string>
+ <string name="not_checked" msgid="7972320087569023342">"nije označeno"</string>
+ <string name="selected" msgid="6614607926197755875">"izabrano"</string>
+ <string name="not_selected" msgid="410652016565864475">"nije izabrano"</string>
+ <string name="rating_label" msgid="1837085249662154601">"{rating,plural, =1{Jedna zvezdica od {max}}one{# zvezdica od {max}}few{# zvezdice od {max}}other{# zvezdica od {max}}}"</string>
+ <string name="in_progress" msgid="2149208189184319441">"u toku"</string>
+ <string name="whichApplication" msgid="5432266899591255759">"Dovrši radnju preko"</string>
+ <string name="whichApplicationNamed" msgid="6969946041713975681">"Završite radnju pomoću aplikacije %1$s"</string>
+ <string name="whichApplicationLabel" msgid="7852182961472531728">"Završi radnju"</string>
+ <string name="whichViewApplication" msgid="5733194231473132945">"Otvorite pomoću"</string>
+ <string name="whichViewApplicationNamed" msgid="415164730629690105">"Otvorite pomoću aplikacije %1$s"</string>
+ <string name="whichViewApplicationLabel" msgid="7367556735684742409">"Otvori"</string>
+ <string name="whichOpenHostLinksWith" msgid="7645631470199397485">"Otvarajte <xliff:g id="HOST">%1$s</xliff:g> linkove pomoću"</string>
+ <string name="whichOpenLinksWith" msgid="1120936181362907258">"Otvaraj linkove pomoću"</string>
+ <string name="whichOpenLinksWithApp" msgid="6917864367861910086">"Otvarajte linkove pomoću aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>"</string>
+ <string name="whichOpenHostLinksWithApp" msgid="2401668560768463004">"Otvarajte <xliff:g id="HOST">%1$s</xliff:g> linkove pomoću aplikacije <xliff:g id="APPLICATION">%2$s</xliff:g>"</string>
+ <string name="whichGiveAccessToApplicationLabel" msgid="7805857277166106236">"Dozvoli pristup"</string>
+ <string name="whichEditApplication" msgid="6191568491456092812">"Izmenite pomoću"</string>
+ <string name="whichEditApplicationNamed" msgid="8096494987978521514">"Izmenite pomoću aplikacije %1$s"</string>
+ <string name="whichEditApplicationLabel" msgid="1463288652070140285">"Izmeni"</string>
+ <string name="whichSendApplication" msgid="4143847974460792029">"Delite"</string>
+ <string name="whichSendApplicationNamed" msgid="4470386782693183461">"Delite pomoću aplikacije %1$s"</string>
+ <string name="whichSendApplicationLabel" msgid="7467813004769188515">"Deli"</string>
+ <string name="whichSendToApplication" msgid="77101541959464018">"Pošaljite pomoću:"</string>
+ <string name="whichSendToApplicationNamed" msgid="3385686512014670003">"Pošaljite pomoću: %1$s"</string>
+ <string name="whichSendToApplicationLabel" msgid="3543240188816513303">"Pošalji"</string>
+ <string name="whichHomeApplication" msgid="8276350727038396616">"Izaberite aplikaciju za početnu stranicu"</string>
+ <string name="whichHomeApplicationNamed" msgid="5855990024847433794">"Koristite %1$s za početnu"</string>
+ <string name="whichHomeApplicationLabel" msgid="8907334282202933959">"Snimite sliku"</string>
+ <string name="whichImageCaptureApplication" msgid="2737413019463215284">"Snimite sliku pomoću aplikacije"</string>
+ <string name="whichImageCaptureApplicationNamed" msgid="8820702441847612202">"Snimite sliku pomoću aplikacije %1$s"</string>
+ <string name="whichImageCaptureApplicationLabel" msgid="6505433734824988277">"Snimite sliku"</string>
+ <string name="alwaysUse" msgid="3153558199076112903">"Podrazumevano koristi za ovu radnju."</string>
+ <string name="use_a_different_app" msgid="4987790276170972776">"Koristite drugu aplikaciju"</string>
+ <string name="clearDefaultHintMsg" msgid="1325866337702524936">"Obrišite podrazumevano podešavanje u meniju Podešavanja sistema > Aplikacije > Preuzeto."</string>
+ <string name="chooseActivity" msgid="8563390197659779956">"Izaberite radnju"</string>
+ <string name="chooseUsbActivity" msgid="2096269989990986612">"Izbor aplikacije za USB uređaj"</string>
+ <string name="noApplications" msgid="1186909265235544019">"Nijedna aplikacija ne može da obavlja ovu radnju."</string>
+ <string name="aerr_application" msgid="4090916809370389109">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> je zaustavljena"</string>
+ <string name="aerr_process" msgid="4268018696970966407">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> je zaustavljen"</string>
+ <string name="aerr_application_repeated" msgid="7804378743218496566">"<xliff:g id="APPLICATION">%1$s</xliff:g> se stalno zaustavlja"</string>
+ <string name="aerr_process_repeated" msgid="1153152413537954974">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> se stalno zaustavlja"</string>
+ <string name="aerr_restart" msgid="2789618625210505419">"Ponovo otvori aplikaciju"</string>
+ <string name="aerr_report" msgid="3095644466849299308">"Pošaljite povratne informacije"</string>
+ <string name="aerr_close" msgid="3398336821267021852">"Zatvori"</string>
+ <string name="aerr_mute" msgid="2304972923480211376">"Ignoriši dok se uređaj ne pokrene ponovo"</string>
+ <string name="aerr_wait" msgid="3198677780474548217">"Čekaj"</string>
+ <string name="aerr_close_app" msgid="8318883106083050970">"Zatvori aplikaciju"</string>
<string name="anr_title" msgid="7290329487067300120"></string>
- <string name="anr_activity_application" msgid="8121716632960340680">"<xliff:g id="APPLICATION">%2$s</xliff:g> не реагује"</string>
- <string name="anr_activity_process" msgid="3477362583767128667">"<xliff:g id="ACTIVITY">%1$s</xliff:g> не реагује"</string>
- <string name="anr_application_process" msgid="4978772139461676184">"<xliff:g id="APPLICATION">%1$s</xliff:g> не реагује"</string>
- <string name="anr_process" msgid="1664277165911816067">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> не реагује"</string>
- <string name="force_close" msgid="9035203496368973803">"Потврди"</string>
- <string name="report" msgid="2149194372340349521">"Пријави"</string>
- <string name="wait" msgid="7765985809494033348">"Сачекај"</string>
- <string name="webpage_unresponsive" msgid="7850879412195273433">"Страница је престала да се одазива.\n\n Да ли желите да је затворите?"</string>
- <string name="launch_warning_title" msgid="6725456009564953595">"Апликација је преусмерена"</string>
- <string name="launch_warning_replace" msgid="3073392976283203402">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> је сада покренута."</string>
- <string name="launch_warning_original" msgid="3332206576800169626">"Првобитно је покренута апликација <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="screen_compat_mode_scale" msgid="8627359598437527726">"Размера"</string>
- <string name="screen_compat_mode_show" msgid="5080361367584709857">"Увек приказуј"</string>
- <string name="screen_compat_mode_hint" msgid="4032272159093750908">"Поново омогућите у менију Системска подешавања > Апликације > Преузето."</string>
- <string name="unsupported_display_size_message" msgid="7265211375269394699">"<xliff:g id="APP_NAME">%1$s</xliff:g> не подржава тренутно подешавање величине приказа и може да се понаша неочекивано."</string>
- <string name="unsupported_display_size_show" msgid="980129850974919375">"Увек приказуј"</string>
- <string name="unsupported_compile_sdk_message" msgid="7326293500707890537">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> је направљена за некомпатибилну верзију Android ОС-а и може да се понаша на неочекиван начин. Можда је доступна ажурирана верзија апликације."</string>
- <string name="unsupported_compile_sdk_show" msgid="1601210057960312248">"Увек прикажи"</string>
- <string name="unsupported_compile_sdk_check_update" msgid="1103639989147664456">"Потражи ажурирање"</string>
- <string name="smv_application" msgid="3775183542777792638">"Апликација <xliff:g id="APPLICATION">%1$s</xliff:g> (процес <xliff:g id="PROCESS">%2$s</xliff:g>) је прекршила самонаметнуте StrictMode смернице."</string>
- <string name="smv_process" msgid="1398801497130695446">"Процес <xliff:g id="PROCESS">%1$s</xliff:g> је прекршио самонаметнуте StrictMode смернице."</string>
- <string name="android_upgrading_title" product="default" msgid="7279077384220829683">"Телефон се ажурира…"</string>
- <string name="android_upgrading_title" product="tablet" msgid="4268417249079938805">"Таблет се ажурира…"</string>
- <string name="android_upgrading_title" product="device" msgid="6774767702998149762">"Уређај се ажурира…"</string>
- <string name="android_start_title" product="default" msgid="4036708252778757652">"Телефон се покреће…"</string>
- <string name="android_start_title" product="automotive" msgid="7917984412828168079">"Android се покреће…"</string>
- <string name="android_start_title" product="tablet" msgid="4429767260263190344">"Таблет се покреће…"</string>
- <string name="android_start_title" product="device" msgid="6967413819673299309">"Уређај се покреће…"</string>
- <string name="android_upgrading_fstrim" msgid="3259087575528515329">"Меморија се оптимизује."</string>
- <string name="android_upgrading_notification_title" product="default" msgid="3509927005342279257">"Ажурирање система се довршава…"</string>
- <string name="app_upgrading_toast" msgid="1016267296049455585">"<xliff:g id="APPLICATION">%1$s</xliff:g> се надограђује…"</string>
- <string name="android_upgrading_apk" msgid="1339564803894466737">"Оптимизовање апликације <xliff:g id="NUMBER_0">%1$d</xliff:g> од <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
- <string name="android_preparing_apk" msgid="589736917792300956">"Припрема се <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
- <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Покретање апликација."</string>
- <string name="android_upgrading_complete" msgid="409800058018374746">"Завршавање покретања."</string>
- <string name="fp_power_button_enrollment_message" msgid="5648173517663246140">"Притиснули сте дугме за укључивање – тиме обично искључујете екран.\n\nПробајте лагано да додирнете док подешавате отисак прста."</string>
- <string name="fp_power_button_enrollment_title" msgid="6976841690455338563">"Завршите подешавање искључивањем екрана"</string>
- <string name="fp_power_button_enrollment_button_text" msgid="3199783266386029200">"Искључи"</string>
- <string name="fp_power_button_bp_title" msgid="5585506104526820067">"Настављате верификацију отиска прста?"</string>
- <string name="fp_power_button_bp_message" msgid="2983163038168903393">"Притиснули сте дугме за укључивање – тиме обично искључујете екран.\n\nПробајте лагано да додирнете да бисте верификовали отисак прста."</string>
- <string name="fp_power_button_bp_positive_button" msgid="728945472408552251">"Искључи екран"</string>
- <string name="fp_power_button_bp_negative_button" msgid="3971364246496775178">"Настави"</string>
- <string name="heavy_weight_notification" msgid="8382784283600329576">"Апликација <xliff:g id="APP">%1$s</xliff:g> је покренута"</string>
- <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Додирните да бисте се вратили у игру"</string>
- <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Одаберите игру"</string>
- <string name="heavy_weight_switcher_text" msgid="6814316627367160126">"Да би перформансе биле боље, може да буде отворена само једна од ових игара."</string>
- <string name="old_app_action" msgid="725331621042848590">"Назад на <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
- <string name="new_app_action" msgid="547772182913269801">"Отвори <xliff:g id="NEW_APP">%1$s</xliff:g>"</string>
- <string name="new_app_description" msgid="1958903080400806644">"<xliff:g id="OLD_APP">%1$s</xliff:g> ће се затворити без чувања"</string>
- <string name="dump_heap_notification" msgid="5316644945404825032">"<xliff:g id="PROC">%1$s</xliff:g> премашује ограничење меморије"</string>
- <string name="dump_heap_ready_notification" msgid="2302452262927390268">"Снимак динамичког дела меморије за процес <xliff:g id="PROC">%1$s</xliff:g> је спреман"</string>
- <string name="dump_heap_notification_detail" msgid="8431586843001054050">"Снимак динамичког дела меморије је направљен. Додирните за дељење."</string>
- <string name="dump_heap_title" msgid="4367128917229233901">"Желите ли да делите снимак динамичког дела меморије?"</string>
- <string name="dump_heap_text" msgid="1692649033835719336">"Процес <xliff:g id="PROC">%1$s</xliff:g> је премашио ограничење меморије од <xliff:g id="SIZE">%2$s</xliff:g>. Снимак динамичког дела меморије је доступан и можете да га делите са програмером. Будите опрезни: овај снимак динамичког дела меморије може да садржи неке личне податке којима апликација може да приступа."</string>
- <string name="dump_heap_system_text" msgid="6805155514925350849">"Процес <xliff:g id="PROC">%1$s</xliff:g> је премашио ограничење меморије од <xliff:g id="SIZE">%2$s</xliff:g>. Снимак динамичког дела меморије је доступан и можете да га делите. Будите опрезни: овај снимак динамичког дела меморије може да садржи осетљиве личне податке којима процес може да приступа, што може да обухвата текст који сте уносили."</string>
- <string name="dump_heap_ready_text" msgid="5849618132123045516">"Снимак динамичког дела меморије за процес <xliff:g id="PROC">%1$s</xliff:g> је доступан и можете да га делите. Будите опрезни: овај снимак динамичког дела меморије може да садржи осетљиве личне податке којима процес може да приступа, што може да обухвата текст који сте уносили."</string>
- <string name="sendText" msgid="493003724401350724">"Изаберите радњу за текст"</string>
- <string name="volume_ringtone" msgid="134784084629229029">"Јачина звука звона"</string>
- <string name="volume_music" msgid="7727274216734955095">"Јачина звука медија"</string>
- <string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"Играње преко Bluetooth-а"</string>
- <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"Подешен је нечујни звук звона"</string>
- <string name="volume_call" msgid="7625321655265747433">"Јачина звука долазног позива"</string>
- <string name="volume_bluetooth_call" msgid="2930204618610115061">"Јачина звука долазећег позива преко Bluetooth-а"</string>
- <string name="volume_alarm" msgid="4486241060751798448">"Јачина звука аларма"</string>
- <string name="volume_notification" msgid="6864412249031660057">"Јачина звука за обавештења"</string>
- <string name="volume_unknown" msgid="4041914008166576293">"Јачина звука"</string>
- <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"Јачина звука Bluetooth уређаја"</string>
- <string name="volume_icon_description_ringer" msgid="2187800636867423459">"Јачина мелодије звона"</string>
- <string name="volume_icon_description_incall" msgid="4491255105381227919">"Јачина звука позива"</string>
- <string name="volume_icon_description_media" msgid="4997633254078171233">"Јачина звука медија"</string>
- <string name="volume_icon_description_notification" msgid="579091344110747279">"Јачина звука обавештења"</string>
- <string name="ringtone_default" msgid="9118299121288174597">"Подразумевани звук звона"</string>
- <string name="ringtone_default_with_actual" msgid="2709686194556159773">"Подразумевано (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="397111123930141876">"Без звука"</string>
- <string name="ringtone_picker_title" msgid="667342618626068253">"Звукови звона"</string>
- <string name="ringtone_picker_title_alarm" msgid="7438934548339024767">"Звуци аларма"</string>
- <string name="ringtone_picker_title_notification" msgid="6387191794719608122">"Звуци обавештења"</string>
- <string name="ringtone_unknown" msgid="5059495249862816475">"Непознато"</string>
- <string name="wifi_available_sign_in" msgid="381054692557675237">"Пријављивање на WiFi мрежу"</string>
- <string name="network_available_sign_in" msgid="1520342291829283114">"Пријавите се на мрежу"</string>
+ <string name="anr_activity_application" msgid="8121716632960340680">"<xliff:g id="APPLICATION">%2$s</xliff:g> ne reaguje"</string>
+ <string name="anr_activity_process" msgid="3477362583767128667">"<xliff:g id="ACTIVITY">%1$s</xliff:g> ne reaguje"</string>
+ <string name="anr_application_process" msgid="4978772139461676184">"<xliff:g id="APPLICATION">%1$s</xliff:g> ne reaguje"</string>
+ <string name="anr_process" msgid="1664277165911816067">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> ne reaguje"</string>
+ <string name="force_close" msgid="9035203496368973803">"Potvrdi"</string>
+ <string name="report" msgid="2149194372340349521">"Prijavi"</string>
+ <string name="wait" msgid="7765985809494033348">"Sačekaj"</string>
+ <string name="webpage_unresponsive" msgid="7850879412195273433">"Stranica je prestala da se odaziva.\n\n Da li želite da je zatvorite?"</string>
+ <string name="launch_warning_title" msgid="6725456009564953595">"Aplikacija je preusmerena"</string>
+ <string name="launch_warning_replace" msgid="3073392976283203402">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je sada pokrenuta."</string>
+ <string name="launch_warning_original" msgid="3332206576800169626">"Prvobitno je pokrenuta aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
+ <string name="screen_compat_mode_scale" msgid="8627359598437527726">"Razmera"</string>
+ <string name="screen_compat_mode_show" msgid="5080361367584709857">"Uvek prikazuj"</string>
+ <string name="screen_compat_mode_hint" msgid="4032272159093750908">"Ponovo omogućite u meniju Sistemska podešavanja > Aplikacije > Preuzeto."</string>
+ <string name="unsupported_display_size_message" msgid="7265211375269394699">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava trenutno podešavanje veličine prikaza i može da se ponaša neočekivano."</string>
+ <string name="unsupported_display_size_show" msgid="980129850974919375">"Uvek prikazuj"</string>
+ <string name="unsupported_compile_sdk_message" msgid="7326293500707890537">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je napravljena za nekompatibilnu verziju Android OS-a i može da se ponaša na neočekivan način. Možda je dostupna ažurirana verzija aplikacije."</string>
+ <string name="unsupported_compile_sdk_show" msgid="1601210057960312248">"Uvek prikaži"</string>
+ <string name="unsupported_compile_sdk_check_update" msgid="1103639989147664456">"Potraži ažuriranje"</string>
+ <string name="smv_application" msgid="3775183542777792638">"Aplikacija <xliff:g id="APPLICATION">%1$s</xliff:g> (proces <xliff:g id="PROCESS">%2$s</xliff:g>) je prekršila samonametnute StrictMode smernice."</string>
+ <string name="smv_process" msgid="1398801497130695446">"Proces <xliff:g id="PROCESS">%1$s</xliff:g> je prekršio samonametnute StrictMode smernice."</string>
+ <string name="android_upgrading_title" product="default" msgid="7279077384220829683">"Telefon se ažurira…"</string>
+ <string name="android_upgrading_title" product="tablet" msgid="4268417249079938805">"Tablet se ažurira…"</string>
+ <string name="android_upgrading_title" product="device" msgid="6774767702998149762">"Uređaj se ažurira…"</string>
+ <string name="android_start_title" product="default" msgid="4036708252778757652">"Telefon se pokreće…"</string>
+ <string name="android_start_title" product="automotive" msgid="7917984412828168079">"Android se pokreće…"</string>
+ <string name="android_start_title" product="tablet" msgid="4429767260263190344">"Tablet se pokreće…"</string>
+ <string name="android_start_title" product="device" msgid="6967413819673299309">"Uređaj se pokreće…"</string>
+ <string name="android_upgrading_fstrim" msgid="3259087575528515329">"Memorija se optimizuje."</string>
+ <string name="android_upgrading_notification_title" product="default" msgid="3509927005342279257">"Ažuriranje sistema se dovršava…"</string>
+ <string name="app_upgrading_toast" msgid="1016267296049455585">"<xliff:g id="APPLICATION">%1$s</xliff:g> se nadograđuje…"</string>
+ <string name="android_upgrading_apk" msgid="1339564803894466737">"Optimizovanje aplikacije <xliff:g id="NUMBER_0">%1$d</xliff:g> od <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
+ <string name="android_preparing_apk" msgid="589736917792300956">"Priprema se <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
+ <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Pokretanje aplikacija."</string>
+ <string name="android_upgrading_complete" msgid="409800058018374746">"Završavanje pokretanja."</string>
+ <string name="fp_power_button_enrollment_message" msgid="5648173517663246140">"Pritisnuli ste dugme za uključivanje – time obično isključujete ekran.\n\nProbajte lagano da dodirnete dok podešavate otisak prsta."</string>
+ <string name="fp_power_button_enrollment_title" msgid="6976841690455338563">"Završite podešavanje isključivanjem ekrana"</string>
+ <string name="fp_power_button_enrollment_button_text" msgid="3199783266386029200">"Isključi"</string>
+ <string name="fp_power_button_bp_title" msgid="5585506104526820067">"Nastavljate verifikaciju otiska prsta?"</string>
+ <string name="fp_power_button_bp_message" msgid="2983163038168903393">"Pritisnuli ste dugme za uključivanje – time obično isključujete ekran.\n\nProbajte lagano da dodirnete da biste verifikovali otisak prsta."</string>
+ <string name="fp_power_button_bp_positive_button" msgid="728945472408552251">"Isključi ekran"</string>
+ <string name="fp_power_button_bp_negative_button" msgid="3971364246496775178">"Nastavi"</string>
+ <string name="heavy_weight_notification" msgid="8382784283600329576">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> je pokrenuta"</string>
+ <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dodirnite da biste se vratili u igru"</string>
+ <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Odaberite igru"</string>
+ <string name="heavy_weight_switcher_text" msgid="6814316627367160126">"Da bi performanse bile bolje, može da bude otvorena samo jedna od ovih igara."</string>
+ <string name="old_app_action" msgid="725331621042848590">"Nazad na <xliff:g id="OLD_APP">%1$s</xliff:g>"</string>
+ <string name="new_app_action" msgid="547772182913269801">"Otvori <xliff:g id="NEW_APP">%1$s</xliff:g>"</string>
+ <string name="new_app_description" msgid="1958903080400806644">"<xliff:g id="OLD_APP">%1$s</xliff:g> će se zatvoriti bez čuvanja"</string>
+ <string name="dump_heap_notification" msgid="5316644945404825032">"<xliff:g id="PROC">%1$s</xliff:g> premašuje ograničenje memorije"</string>
+ <string name="dump_heap_ready_notification" msgid="2302452262927390268">"Snimak dinamičkog dela memorije za proces <xliff:g id="PROC">%1$s</xliff:g> je spreman"</string>
+ <string name="dump_heap_notification_detail" msgid="8431586843001054050">"Snimak dinamičkog dela memorije je napravljen. Dodirnite za deljenje."</string>
+ <string name="dump_heap_title" msgid="4367128917229233901">"Želite li da delite snimak dinamičkog dela memorije?"</string>
+ <string name="dump_heap_text" msgid="1692649033835719336">"Proces <xliff:g id="PROC">%1$s</xliff:g> je premašio ograničenje memorije od <xliff:g id="SIZE">%2$s</xliff:g>. Snimak dinamičkog dela memorije je dostupan i možete da ga delite sa programerom. Budite oprezni: ovaj snimak dinamičkog dela memorije može da sadrži neke lične podatke kojima aplikacija može da pristupa."</string>
+ <string name="dump_heap_system_text" msgid="6805155514925350849">"Proces <xliff:g id="PROC">%1$s</xliff:g> je premašio ograničenje memorije od <xliff:g id="SIZE">%2$s</xliff:g>. Snimak dinamičkog dela memorije je dostupan i možete da ga delite. Budite oprezni: ovaj snimak dinamičkog dela memorije može da sadrži osetljive lične podatke kojima proces može da pristupa, što može da obuhvata tekst koji ste unosili."</string>
+ <string name="dump_heap_ready_text" msgid="5849618132123045516">"Snimak dinamičkog dela memorije za proces <xliff:g id="PROC">%1$s</xliff:g> je dostupan i možete da ga delite. Budite oprezni: ovaj snimak dinamičkog dela memorije može da sadrži osetljive lične podatke kojima proces može da pristupa, što može da obuhvata tekst koji ste unosili."</string>
+ <string name="sendText" msgid="493003724401350724">"Izaberite radnju za tekst"</string>
+ <string name="volume_ringtone" msgid="134784084629229029">"Jačina zvuka zvona"</string>
+ <string name="volume_music" msgid="7727274216734955095">"Jačina zvuka medija"</string>
+ <string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"Igranje preko Bluetooth-a"</string>
+ <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"Podešen je nečujni zvuk zvona"</string>
+ <string name="volume_call" msgid="7625321655265747433">"Jačina zvuka dolaznog poziva"</string>
+ <string name="volume_bluetooth_call" msgid="2930204618610115061">"Jačina zvuka dolazećeg poziva preko Bluetooth-a"</string>
+ <string name="volume_alarm" msgid="4486241060751798448">"Jačina zvuka alarma"</string>
+ <string name="volume_notification" msgid="6864412249031660057">"Jačina zvuka za obaveštenja"</string>
+ <string name="volume_unknown" msgid="4041914008166576293">"Jačina zvuka"</string>
+ <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"Jačina zvuka Bluetooth uređaja"</string>
+ <string name="volume_icon_description_ringer" msgid="2187800636867423459">"Jačina melodije zvona"</string>
+ <string name="volume_icon_description_incall" msgid="4491255105381227919">"Jačina zvuka poziva"</string>
+ <string name="volume_icon_description_media" msgid="4997633254078171233">"Jačina zvuka medija"</string>
+ <string name="volume_icon_description_notification" msgid="579091344110747279">"Jačina zvuka obaveštenja"</string>
+ <string name="ringtone_default" msgid="9118299121288174597">"Podrazumevani zvuk zvona"</string>
+ <string name="ringtone_default_with_actual" msgid="2709686194556159773">"Podrazumevano (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
+ <string name="ringtone_silent" msgid="397111123930141876">"Bez zvuka"</string>
+ <string name="ringtone_picker_title" msgid="667342618626068253">"Zvukovi zvona"</string>
+ <string name="ringtone_picker_title_alarm" msgid="7438934548339024767">"Zvuci alarma"</string>
+ <string name="ringtone_picker_title_notification" msgid="6387191794719608122">"Zvuci obaveštenja"</string>
+ <string name="ringtone_unknown" msgid="5059495249862816475">"Nepoznato"</string>
+ <string name="wifi_available_sign_in" msgid="381054692557675237">"Prijavljivanje na WiFi mrežu"</string>
+ <string name="network_available_sign_in" msgid="1520342291829283114">"Prijavite se na mrežu"</string>
<!-- no translation found for network_available_sign_in_detailed (7520423801613396556) -->
<skip />
- <string name="wifi_no_internet" msgid="1386911698276448061">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> нема приступ интернету"</string>
- <string name="wifi_no_internet_detailed" msgid="634938444133558942">"Додирните за опције"</string>
- <string name="mobile_no_internet" msgid="4014455157529909781">"Мобилна мрежа нема приступ интернету"</string>
- <string name="other_networks_no_internet" msgid="6698711684200067033">"Мрежа нема приступ интернету"</string>
- <string name="private_dns_broken_detailed" msgid="3709388271074611847">"Приступ приватном DNS серверу није успео"</string>
- <string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> има ограничену везу"</string>
- <string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Додирните да бисте се ипак повезали"</string>
- <string name="network_switch_metered" msgid="1531869544142283384">"Прешли сте на тип мреже <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
- <string name="network_switch_metered_detail" msgid="1358296010128405906">"Уређај користи тип мреже <xliff:g id="NEW_NETWORK">%1$s</xliff:g> када тип мреже <xliff:g id="PREVIOUS_NETWORK">%2$s</xliff:g> нема приступ интернету. Можда ће се наплаћивати трошкови."</string>
- <string name="network_switch_metered_toast" msgid="501662047275723743">"Прешли сте са типа мреже <xliff:g id="PREVIOUS_NETWORK">%1$s</xliff:g> на тип мреже <xliff:g id="NEW_NETWORK">%2$s</xliff:g>"</string>
+ <string name="wifi_no_internet" msgid="1386911698276448061">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> nema pristup internetu"</string>
+ <string name="wifi_no_internet_detailed" msgid="634938444133558942">"Dodirnite za opcije"</string>
+ <string name="mobile_no_internet" msgid="4014455157529909781">"Mobilna mreža nema pristup internetu"</string>
+ <string name="other_networks_no_internet" msgid="6698711684200067033">"Mreža nema pristup internetu"</string>
+ <string name="private_dns_broken_detailed" msgid="3709388271074611847">"Pristup privatnom DNS serveru nije uspeo"</string>
+ <string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ima ograničenu vezu"</string>
+ <string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Dodirnite da biste se ipak povezali"</string>
+ <string name="network_switch_metered" msgid="1531869544142283384">"Prešli ste na tip mreže <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
+ <string name="network_switch_metered_detail" msgid="1358296010128405906">"Uređaj koristi tip mreže <xliff:g id="NEW_NETWORK">%1$s</xliff:g> kada tip mreže <xliff:g id="PREVIOUS_NETWORK">%2$s</xliff:g> nema pristup internetu. Možda će se naplaćivati troškovi."</string>
+ <string name="network_switch_metered_toast" msgid="501662047275723743">"Prešli ste sa tipa mreže <xliff:g id="PREVIOUS_NETWORK">%1$s</xliff:g> na tip mreže <xliff:g id="NEW_NETWORK">%2$s</xliff:g>"</string>
<string-array name="network_switch_type_name">
- <item msgid="2255670471736226365">"мобилни подаци"</item>
+ <item msgid="2255670471736226365">"mobilni podaci"</item>
<item msgid="5520925862115353992">"WiFi"</item>
<item msgid="1055487873974272842">"Bluetooth"</item>
- <item msgid="1616528372438698248">"Етернет"</item>
+ <item msgid="1616528372438698248">"Eternet"</item>
<item msgid="9177085807664964627">"VPN"</item>
</string-array>
- <string name="network_switch_type_name_unknown" msgid="3665696841646851068">"непознат тип мреже"</string>
- <string name="accept" msgid="5447154347815825107">"Прихвати"</string>
- <string name="decline" msgid="6490507610282145874">"Одбиј"</string>
- <string name="select_character" msgid="3352797107930786979">"Уметање знака"</string>
- <string name="sms_control_title" msgid="4748684259903148341">"Слање SMS порука"</string>
- <string name="sms_control_message" msgid="6574313876316388239">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> шаље велики број SMS порука. Желите ли да дозволите овој апликацији да настави са слањем порука?"</string>
- <string name="sms_control_yes" msgid="4858845109269524622">"Дозволи"</string>
- <string name="sms_control_no" msgid="4845717880040355570">"Одбиј"</string>
- <string name="sms_short_code_confirm_message" msgid="1385416688897538724">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> жели да пошаље поруку на адресу <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b>."</string>
- <string name="sms_short_code_details" msgid="2723725738333388351">"Ово "<b>"може да проузрокује трошкове"</b>" на рачуну за мобилни уређај."</string>
- <string name="sms_premium_short_code_details" msgid="1400296309866638111"><b>"Ово ће проузроковати трошкове на рачуну за мобилни уређај."</b></string>
- <string name="sms_short_code_confirm_allow" msgid="920477594325526691">"Пошаљи"</string>
- <string name="sms_short_code_confirm_deny" msgid="1356917469323768230">"Откажи"</string>
- <string name="sms_short_code_remember_choice" msgid="1374526438647744862">"Запамти мој избор"</string>
- <string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Ово можете да промените касније у Подешавања > Апликације"</string>
- <string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Увек дозволи"</string>
- <string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Никада не дозволи"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
- <string name="sim_done_button" msgid="6464250841528410598">"Готово"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
- <string name="sim_added_message" msgid="6602906609509958680">"Рестартујте уређај да бисте могли да приступите мобилној мрежи."</string>
- <string name="sim_restart_button" msgid="8481803851341190038">"Рестартуј"</string>
- <string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Активирајте мобилну услугу"</string>
- <string name="install_carrier_app_notification_text" msgid="2781317581274192728">"Преузмите апликацију мобилног оператера да бисте активирали нови SIM"</string>
- <string name="install_carrier_app_notification_text_app_name" msgid="4086877327264106484">"Преузмите апликацију <xliff:g id="APP_NAME">%1$s</xliff:g> да бисте активирали нову SIM картицу"</string>
- <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Преузмите апликацију"</string>
- <string name="carrier_app_notification_title" msgid="5815477368072060250">"Нова SIM картица је уметнута"</string>
- <string name="carrier_app_notification_text" msgid="6567057546341958637">"Додирните за подешавање"</string>
- <string name="time_picker_dialog_title" msgid="9053376764985220821">"Подесите време"</string>
- <string name="date_picker_dialog_title" msgid="5030520449243071926">"Подешавање датума"</string>
- <string name="date_time_set" msgid="4603445265164486816">"Подеси"</string>
- <string name="date_time_done" msgid="8363155889402873463">"Готово"</string>
- <string name="perms_new_perm_prefix" msgid="6984556020395757087"><font size="12" fgcolor="#ff33b5e5">"НОВО: "</font></string>
- <string name="perms_description_app" msgid="2747752389870161996">"Омогућава <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="no_permissions" msgid="5729199278862516390">"Није потребна ниједна дозвола"</string>
- <string name="perm_costs_money" msgid="749054595022779685">"ово ће вам можда бити наплаћено"</string>
- <string name="dlg_ok" msgid="5103447663504839312">"Потврди"</string>
- <string name="usb_charging_notification_title" msgid="1674124518282666955">"Овај уређај се пуни преко USB-а"</string>
- <string name="usb_supplying_notification_title" msgid="5378546632408101811">"Повезани уређај се пуни преко USB-а"</string>
- <string name="usb_mtp_notification_title" msgid="1065989144124499810">"USB пренос датотека је укључен"</string>
- <string name="usb_ptp_notification_title" msgid="5043437571863443281">"Режим PTP преко USB-а је укључен"</string>
- <string name="usb_tether_notification_title" msgid="8828527870612663771">"USB привезивање је укључено"</string>
- <string name="usb_midi_notification_title" msgid="7404506788950595557">"Режим MIDI преко USB-а је укључен"</string>
- <string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB додатак је повезан"</string>
- <string name="usb_notification_message" msgid="4715163067192110676">"Додирните за још опција."</string>
- <string name="usb_power_notification_message" msgid="7284765627437897702">"Повезани уређај се пуни. Додирните за још опција."</string>
- <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Откривена је аналогна додатна опрема за аудио садржај"</string>
- <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Прикључени уређај није компатибилан са овим телефоном. Додирните да бисте сазнали више."</string>
- <string name="adb_active_notification_title" msgid="408390247354560331">"Повезано је отклањање грешака са USB-а"</string>
- <string name="adb_active_notification_message" msgid="5617264033476778211">"Додирните да бисте га искључили"</string>
- <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Изаберите да бисте онемогућили отклањања грешака са USB-а."</string>
- <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Бежично отклањање грешака је повезано"</string>
- <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Додирните да бисте искључили бежично отклањање грешака"</string>
- <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Изаберите да бисте онемогућили бежично отклањање грешака."</string>
- <string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Омогућен је режим пробног коришћења"</string>
- <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Обавите ресетовање на фабричка подешавања да бисте онемогућили режим пробног коришћења."</string>
- <string name="console_running_notification_title" msgid="6087888939261635904">"Серијска конзола је омогућена"</string>
- <string name="console_running_notification_message" msgid="7892751888125174039">"Перформансе су смањене. Да бисте онемогући конзолу, проверите покретачки програм."</string>
- <string name="mte_override_notification_title" msgid="4731115381962792944">"Експериментални MTE је омогућен"</string>
- <string name="mte_override_notification_message" msgid="2441170442725738942">"Ово може да утиче на перформансе и стабилност. Рестартујте да бисте онемогућили. Ако је омогућено помоћу arm64.memtag.bootctl, прво подесите на Ништа."</string>
- <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"Течност или нечистоћа у USB порту"</string>
- <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"USB порт је аутоматски искључен. Додирните да бисте сазнали више."</string>
- <string name="usb_contaminant_not_detected_title" msgid="2651167729563264053">"Коришћење USB порта је дозвољено"</string>
- <string name="usb_contaminant_not_detected_message" msgid="892863190942660462">"Телефон више не открива течност или нечистоћу."</string>
- <string name="taking_remote_bugreport_notification_title" msgid="1582531382166919850">"Извештај о грешци се генерише…"</string>
- <string name="share_remote_bugreport_notification_title" msgid="6708897723753334999">"Желите ли да поделите извештај о грешци?"</string>
- <string name="sharing_remote_bugreport_notification_title" msgid="3077385149217638550">"Дели се извештај о грешци…"</string>
- <string name="share_remote_bugreport_notification_message_finished" msgid="7325635795739260135">"Администратор је затражио извештај о грешци ради лакшег решавања проблема у вези са овим уређајем. Апликације и подаци могу да се деле."</string>
- <string name="share_remote_bugreport_action" msgid="7630880678785123682">"ДЕЛИ"</string>
- <string name="decline_remote_bugreport_action" msgid="4040894777519784346">"ОДБИЈ"</string>
- <string name="select_input_method" msgid="3971267998568587025">"Избор метода уноса"</string>
- <string name="show_ime" msgid="6406112007347443383">"Задржава се на екрану док је физичка тастатура активна"</string>
- <string name="hardware" msgid="1800597768237606953">"Прикажи виртуелну тастатуру"</string>
- <string name="select_keyboard_layout_notification_title" msgid="4427643867639774118">"Конфигуришите физичку тастатуру"</string>
- <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"Додирните да бисте изабрали језик и распоред"</string>
+ <string name="network_switch_type_name_unknown" msgid="3665696841646851068">"nepoznat tip mreže"</string>
+ <string name="accept" msgid="5447154347815825107">"Prihvati"</string>
+ <string name="decline" msgid="6490507610282145874">"Odbij"</string>
+ <string name="select_character" msgid="3352797107930786979">"Umetanje znaka"</string>
+ <string name="sms_control_title" msgid="4748684259903148341">"Slanje SMS poruka"</string>
+ <string name="sms_control_message" msgid="6574313876316388239">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> šalje veliki broj SMS poruka. Želite li da dozvolite ovoj aplikaciji da nastavi sa slanjem poruka?"</string>
+ <string name="sms_control_yes" msgid="4858845109269524622">"Dozvoli"</string>
+ <string name="sms_control_no" msgid="4845717880040355570">"Odbij"</string>
+ <string name="sms_short_code_confirm_message" msgid="1385416688897538724">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> želi da pošalje poruku na adresu <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b>."</string>
+ <string name="sms_short_code_details" msgid="2723725738333388351">"Ovo "<b>"može da prouzrokuje troškove"</b>" na računu za mobilni uređaj."</string>
+ <string name="sms_premium_short_code_details" msgid="1400296309866638111"><b>"Ovo će prouzrokovati troškove na računu za mobilni uređaj."</b></string>
+ <string name="sms_short_code_confirm_allow" msgid="920477594325526691">"Pošalji"</string>
+ <string name="sms_short_code_confirm_deny" msgid="1356917469323768230">"Otkaži"</string>
+ <string name="sms_short_code_remember_choice" msgid="1374526438647744862">"Zapamti moj izbor"</string>
+ <string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Ovo možete da promenite kasnije u Podešavanja > Aplikacije"</string>
+ <string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Uvek dozvoli"</string>
+ <string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nikada ne dozvoli"</string>
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM je uklonjen"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilna mreža neće biti dostupna dok ne restartujete uz važeći SIM."</string>
+ <string name="sim_done_button" msgid="6464250841528410598">"Gotovo"</string>
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM je dodat"</string>
+ <string name="sim_added_message" msgid="6602906609509958680">"Restartujte uređaj da biste mogli da pristupite mobilnoj mreži."</string>
+ <string name="sim_restart_button" msgid="8481803851341190038">"Restartuj"</string>
+ <string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivirajte mobilnu uslugu"</string>
+ <string name="install_carrier_app_notification_text" msgid="2781317581274192728">"Preuzmite aplikaciju mobilnog operatera da biste aktivirali novi SIM"</string>
+ <string name="install_carrier_app_notification_text_app_name" msgid="4086877327264106484">"Preuzmite aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> da biste aktivirali novu SIM karticu"</string>
+ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Preuzmite aplikaciju"</string>
+ <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nova SIM kartica je umetnuta"</string>
+ <string name="carrier_app_notification_text" msgid="6567057546341958637">"Dodirnite za podešavanje"</string>
+ <string name="time_picker_dialog_title" msgid="9053376764985220821">"Podesite vreme"</string>
+ <string name="date_picker_dialog_title" msgid="5030520449243071926">"Podešavanje datuma"</string>
+ <string name="date_time_set" msgid="4603445265164486816">"Podesi"</string>
+ <string name="date_time_done" msgid="8363155889402873463">"Gotovo"</string>
+ <string name="perms_new_perm_prefix" msgid="6984556020395757087"><font size="12" fgcolor="#ff33b5e5">"NOVO: "</font></string>
+ <string name="perms_description_app" msgid="2747752389870161996">"Omogućava <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
+ <string name="no_permissions" msgid="5729199278862516390">"Nije potrebna nijedna dozvola"</string>
+ <string name="perm_costs_money" msgid="749054595022779685">"ovo će vam možda biti naplaćeno"</string>
+ <string name="dlg_ok" msgid="5103447663504839312">"Potvrdi"</string>
+ <string name="usb_charging_notification_title" msgid="1674124518282666955">"Ovaj uređaj se puni preko USB-a"</string>
+ <string name="usb_supplying_notification_title" msgid="5378546632408101811">"Povezani uređaj se puni preko USB-a"</string>
+ <string name="usb_mtp_notification_title" msgid="1065989144124499810">"USB prenos datoteka je uključen"</string>
+ <string name="usb_ptp_notification_title" msgid="5043437571863443281">"Režim PTP preko USB-a je uključen"</string>
+ <string name="usb_tether_notification_title" msgid="8828527870612663771">"USB privezivanje je uključeno"</string>
+ <string name="usb_midi_notification_title" msgid="7404506788950595557">"Režim MIDI preko USB-a je uključen"</string>
+ <string name="usb_accessory_notification_title" msgid="1385394660861956980">"USB dodatak je povezan"</string>
+ <string name="usb_notification_message" msgid="4715163067192110676">"Dodirnite za još opcija."</string>
+ <string name="usb_power_notification_message" msgid="7284765627437897702">"Povezani uređaj se puni. Dodirnite za još opcija."</string>
+ <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"Otkrivena je analogna dodatna oprema za audio sadržaj"</string>
+ <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"Priključeni uređaj nije kompatibilan sa ovim telefonom. Dodirnite da biste saznali više."</string>
+ <string name="adb_active_notification_title" msgid="408390247354560331">"Povezano je otklanjanje grešaka sa USB-a"</string>
+ <string name="adb_active_notification_message" msgid="5617264033476778211">"Dodirnite da biste ga isključili"</string>
+ <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Izaberite da biste onemogućili otklanjanja grešaka sa USB-a."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Bežično otklanjanje grešaka je povezano"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Dodirnite da biste isključili bežično otklanjanje grešaka"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Izaberite da biste onemogućili bežično otklanjanje grešaka."</string>
+ <string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Omogućen je režim probnog korišćenja"</string>
+ <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Obavite resetovanje na fabrička podešavanja da biste onemogućili režim probnog korišćenja."</string>
+ <string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola je omogućena"</string>
+ <string name="console_running_notification_message" msgid="7892751888125174039">"Performanse su smanjene. Da biste onemogući konzolu, proverite pokretački program."</string>
+ <string name="mte_override_notification_title" msgid="4731115381962792944">"Eksperimentalni MTE je omogućen"</string>
+ <string name="mte_override_notification_message" msgid="2441170442725738942">"Ovo može da utiče na performanse i stabilnost. Restartujte da biste onemogućili. Ako je omogućeno pomoću arm64.memtag.bootctl, prvo podesite na Ništa."</string>
+ <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"Tečnost ili nečistoća u USB portu"</string>
+ <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"USB port je automatski isključen. Dodirnite da biste saznali više."</string>
+ <string name="usb_contaminant_not_detected_title" msgid="2651167729563264053">"Korišćenje USB porta je dozvoljeno"</string>
+ <string name="usb_contaminant_not_detected_message" msgid="892863190942660462">"Telefon više ne otkriva tečnost ili nečistoću."</string>
+ <string name="taking_remote_bugreport_notification_title" msgid="1582531382166919850">"Izveštaj o grešci se generiše…"</string>
+ <string name="share_remote_bugreport_notification_title" msgid="6708897723753334999">"Želite li da podelite izveštaj o grešci?"</string>
+ <string name="sharing_remote_bugreport_notification_title" msgid="3077385149217638550">"Deli se izveštaj o grešci…"</string>
+ <string name="share_remote_bugreport_notification_message_finished" msgid="7325635795739260135">"Administrator je zatražio izveštaj o grešci radi lakšeg rešavanja problema u vezi sa ovim uređajem. Aplikacije i podaci mogu da se dele."</string>
+ <string name="share_remote_bugreport_action" msgid="7630880678785123682">"DELI"</string>
+ <string name="decline_remote_bugreport_action" msgid="4040894777519784346">"ODBIJ"</string>
+ <string name="select_input_method" msgid="3971267998568587025">"Izbor metoda unosa"</string>
+ <string name="show_ime" msgid="6406112007347443383">"Zadržava se na ekranu dok je fizička tastatura aktivna"</string>
+ <string name="hardware" msgid="1800597768237606953">"Prikaži virtuelnu tastaturu"</string>
+ <string name="select_keyboard_layout_notification_title" msgid="4427643867639774118">"Konfigurišite fizičku tastaturu"</string>
+ <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"Dodirnite da biste izabrali jezik i raspored"</string>
<string name="fast_scroll_alphabet" msgid="8854435958703888376">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
<string name="fast_scroll_numeric_alphabet" msgid="2529539945421557329">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string>
- <string name="alert_windows_notification_channel_group_name" msgid="6063891141815714246">"Приказ преко других апликација"</string>
- <string name="alert_windows_notification_channel_name" msgid="3437528564303192620">"Апликација <xliff:g id="NAME">%s</xliff:g> се приказује преко других апликација"</string>
- <string name="alert_windows_notification_title" msgid="6331662751095228536">"<xliff:g id="NAME">%s</xliff:g> се приказује преко других апл."</string>
- <string name="alert_windows_notification_message" msgid="6538171456970725333">"Ако не желите ову функцију за <xliff:g id="NAME">%s</xliff:g>, додирните да бисте отворили подешавања и искључили је."</string>
- <string name="alert_windows_notification_turn_off_action" msgid="7805857234839123780">"Искључи"</string>
- <string name="ext_media_checking_notification_title" msgid="8299199995416510094">"Проверава се <xliff:g id="NAME">%s</xliff:g>…"</string>
- <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Прегледа се актуелни садржај"</string>
- <string name="ext_media_checking_notification_message" product="tv" msgid="7986154434946021415">"Анализира се меморијски простор за медије"</string>
- <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Нови/а <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_new_notification_title" product="automotive" msgid="9085349544984742727">"<xliff:g id="NAME">%s</xliff:g> не ради"</string>
- <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Додирните да бисте подесили"</string>
- <string name="ext_media_new_notification_message" product="tv" msgid="216863352100263668">"Изаберите да бисте подесили"</string>
- <string name="ext_media_new_notification_message" product="automotive" msgid="5140127881613227162">"Можда морате да реформатирате уређај. Додирните да бисте избацили."</string>
- <string name="ext_media_ready_notification_message" msgid="7509496364380197369">"За чување слика, видео снимака, музике и другог садржаја"</string>
- <string name="ext_media_ready_notification_message" product="tv" msgid="8847134811163165935">"Прегледајте медијске фајлове"</string>
- <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Проблем са: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmountable_notification_title" product="automotive" msgid="3142723758949023280">"<xliff:g id="NAME">%s</xliff:g> не ради"</string>
- <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Додирните да бисте исправили"</string>
- <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Медиј <xliff:g id="NAME">%s</xliff:g> је оштећен. Изаберите да га поправите."</string>
- <string name="ext_media_unmountable_notification_message" product="automotive" msgid="2274596120715020680">"Можда морате да реформатирате уређај. Додирните да бисте избацили."</string>
- <string name="ext_media_unsupported_notification_title" msgid="3487534182861251401">"Откривенo: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unsupported_notification_title" product="automotive" msgid="6004193172658722381">"<xliff:g id="NAME">%s</xliff:g> не ради"</string>
- <string name="ext_media_unsupported_notification_message" msgid="8463636521459807981">"Додирните да бисте подесили."</string>
- <string name="ext_media_unsupported_notification_message" product="tv" msgid="1595482802187036532">"Изаберите да бисте подесили уређај <xliff:g id="NAME">%s</xliff:g> у подржаном формату."</string>
- <string name="ext_media_unsupported_notification_message" product="automotive" msgid="3412494732736336330">"Можда морате да реформатирате уређај"</string>
- <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Уређај <xliff:g id="NAME">%s</xliff:g> је неочекивано уклоњен"</string>
- <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Избаците медијум пре него што га уклоните да не бисте изгубили садржај"</string>
- <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> је уклоњен/а"</string>
- <string name="ext_media_nomedia_notification_message" msgid="2832724384636625852">"Неке функције можда неће исправно радити. Уметните нов меморијски уређај."</string>
- <string name="ext_media_unmounting_notification_title" msgid="4147986383917892162">"Избацује се <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_unmounting_notification_message" msgid="5717036261538754203">"Не уклањајте"</string>
- <string name="ext_media_init_action" msgid="2312974060585056709">"Активирај"</string>
- <string name="ext_media_unmount_action" msgid="966992232088442745">"Избаци"</string>
- <string name="ext_media_browse_action" msgid="344865351947079139">"Истражи"</string>
- <string name="ext_media_seamless_action" msgid="8837030226009268080">"Промените излаз"</string>
- <string name="ext_media_missing_title" msgid="3209472091220515046">"<xliff:g id="NAME">%s</xliff:g> недостаје"</string>
- <string name="ext_media_missing_message" msgid="4408988706227922909">"Поново уметните уређај"</string>
- <string name="ext_media_move_specific_title" msgid="8492118544775964250">"Преноси се <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_move_title" msgid="2682741525619033637">"Подаци се преносе"</string>
- <string name="ext_media_move_success_title" msgid="4901763082647316767">"Пренос садржаја је готов"</string>
- <string name="ext_media_move_success_message" msgid="9159542002276982979">"Садржај је премешен на: <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="ext_media_move_failure_title" msgid="3184577479181333665">"Премештање садржаја није успело"</string>
- <string name="ext_media_move_failure_message" msgid="4197306718121869335">"Пробајте да поново преместите садржај"</string>
- <string name="ext_media_status_removed" msgid="241223931135751691">"Уклоњен је"</string>
- <string name="ext_media_status_unmounted" msgid="8145812017295835941">"Избачен је"</string>
- <string name="ext_media_status_checking" msgid="159013362442090347">"Проверава се..."</string>
- <string name="ext_media_status_mounted" msgid="3459448555811203459">"Спреман је"</string>
- <string name="ext_media_status_mounted_ro" msgid="1974809199760086956">"Само за читање"</string>
- <string name="ext_media_status_bad_removal" msgid="508448566481406245">"Уклоњен је на небезбедан начин"</string>
- <string name="ext_media_status_unmountable" msgid="7043574843541087748">"Оштећен је"</string>
- <string name="ext_media_status_unsupported" msgid="5460509911660539317">"Није подржан"</string>
- <string name="ext_media_status_ejecting" msgid="7532403368044013797">"Избацује се..."</string>
- <string name="ext_media_status_formatting" msgid="774148701503179906">"Форматира се..."</string>
- <string name="ext_media_status_missing" msgid="6520746443048867314">"Није уметнут"</string>
- <string name="activity_list_empty" msgid="4219430010716034252">"Није пронађена ниједна подударна активност."</string>
- <string name="permlab_route_media_output" msgid="8048124531439513118">"усмеравање излаза медија"</string>
- <string name="permdesc_route_media_output" msgid="1759683269387729675">"Дозвољава апликацији да усмерава излаз медија на друге спољне уређаје."</string>
- <string name="permlab_readInstallSessions" msgid="7279049337895583621">"читање сесија инсталирања"</string>
- <string name="permdesc_readInstallSessions" msgid="4012608316610763473">"Дозвољава апликацији да чита сесије инсталирања. То јој дозвољава да види детаље о активним инсталацијама пакета."</string>
- <string name="permlab_requestInstallPackages" msgid="7600020863445351154">"захтевање пакета за инсталирање"</string>
- <string name="permdesc_requestInstallPackages" msgid="3969369278325313067">"Омогућава да апликација захтева инсталацију пакета."</string>
- <string name="permlab_requestDeletePackages" msgid="2541172829260106795">"захтевање брисања пакета"</string>
- <string name="permdesc_requestDeletePackages" msgid="6133633516423860381">"Омогућава да апликација захтева брисање пакета."</string>
- <string name="permlab_requestIgnoreBatteryOptimizations" msgid="7646611326036631439">"тражење дозволе за игнорисање оптимизација батерије"</string>
- <string name="permdesc_requestIgnoreBatteryOptimizations" msgid="634260656917874356">"Дозвољава апликацији да тражи дозволу за игнорисање оптимизација батерије за ту апликацију."</string>
- <string name="permlab_queryAllPackages" msgid="2928450604653281650">"слање упита за све пакете"</string>
- <string name="permdesc_queryAllPackages" msgid="5339069855520996010">"Дозвољава апликацији да види све инсталиране пакете."</string>
- <string name="tutorial_double_tap_to_zoom_message_short" msgid="1842872462124648678">"Додирните двапут за контролу зумирања"</string>
- <string name="gadget_host_error_inflating" msgid="2449961590495198720">"Није могуће додати виџет."</string>
- <string name="ime_action_go" msgid="5536744546326495436">"Иди"</string>
- <string name="ime_action_search" msgid="4501435960587287668">"Претражи"</string>
- <string name="ime_action_send" msgid="8456843745664334138">"Пошаљи"</string>
- <string name="ime_action_next" msgid="4169702997635728543">"Даље"</string>
- <string name="ime_action_done" msgid="6299921014822891569">"Готово"</string>
- <string name="ime_action_previous" msgid="6548799326860401611">"Претходно"</string>
- <string name="ime_action_default" msgid="8265027027659800121">"Изврши"</string>
- <string name="dial_number_using" msgid="6060769078933953531">"Бирај број\nкористећи <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="create_contact_using" msgid="6200708808003692594">"Направите контакт\nкористећи <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"Следеће апликације захтевају дозволу за приступ налогу, како сада, тако и убудуће."</string>
- <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"Желите да одобрите овај захтев?"</string>
- <string name="grant_permissions_header_text" msgid="3420736827804657201">"Захтев за приступ"</string>
- <string name="allow" msgid="6195617008611933762">"Дозволи"</string>
- <string name="deny" msgid="6632259981847676572">"Одбиј"</string>
- <string name="permission_request_notification_title" msgid="1810025922441048273">"Затражена је дозвола"</string>
- <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"Затражена је дозвола\nза налог <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
- <string name="permission_request_notification_for_app_with_subtitle" msgid="1298704005732851350">"<xliff:g id="APP">%1$s</xliff:g> тражи дозволу \nза налог <xliff:g id="ACCOUNT">%2$s</xliff:g>."</string>
- <string name="forward_intent_to_owner" msgid="4620359037192871015">"Користите ову апликацију изван пословног профила"</string>
- <string name="forward_intent_to_work" msgid="3620262405636021151">"Користите ову апликацију на пословном профилу"</string>
- <string name="input_method_binding_label" msgid="1166731601721983656">"Метод уноса"</string>
- <string name="sync_binding_label" msgid="469249309424662147">"Синхронизација"</string>
- <string name="accessibility_binding_label" msgid="1974602776545801715">"Приступачност"</string>
- <string name="wallpaper_binding_label" msgid="1197440498000786738">"Позадина"</string>
- <string name="chooser_wallpaper" msgid="3082405680079923708">"Промена позадине"</string>
- <string name="notification_listener_binding_label" msgid="2702165274471499713">"Монитор обавештења"</string>
- <string name="vr_listener_binding_label" msgid="8013112996671206429">"Обрађивач за виртуелну реалност"</string>
- <string name="condition_provider_service_binding_label" msgid="8490641013951857673">"Добављач услова"</string>
- <string name="notification_ranker_binding_label" msgid="432708245635563763">"Услуга рангирања обавештења"</string>
- <string name="vpn_title" msgid="5906991595291514182">"VPN је активиран"</string>
- <string name="vpn_title_long" msgid="6834144390504619998">"Апликација <xliff:g id="APP">%s</xliff:g> је активирала VPN"</string>
- <string name="vpn_text" msgid="2275388920267251078">"Додирните да бисте управљали мрежом."</string>
- <string name="vpn_text_long" msgid="278540576806169831">"Повезано са сесијом <xliff:g id="SESSION">%s</xliff:g>. Додирните да бисте управљали мрежом."</string>
- <string name="vpn_lockdown_connecting" msgid="6096725311950342607">"Повезивање стално укљученог VPN-а..."</string>
- <string name="vpn_lockdown_connected" msgid="2853127976590658469">"Стално укључен VPN је повезан"</string>
- <string name="vpn_lockdown_disconnected" msgid="5573611651300764955">"Веза са увек укљученим VPN-ом је прекинута"</string>
- <string name="vpn_lockdown_error" msgid="4453048646854247947">"Повезивање на стално укључени VPN није успело"</string>
- <string name="vpn_lockdown_config" msgid="8331697329868252169">"Промените подешавања VPN-а"</string>
- <string name="upload_file" msgid="8651942222301634271">"Одабери фајл"</string>
- <string name="no_file_chosen" msgid="4146295695162318057">"Није изабрана ниједна датотека"</string>
- <string name="reset" msgid="3865826612628171429">"Ресетуј"</string>
- <string name="submit" msgid="862795280643405865">"Пошаљи"</string>
- <string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Апликација за вожњу је покренута"</string>
- <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Додирните да бисте изашли из апликације за вожњу."</string>
- <string name="back_button_label" msgid="4078224038025043387">"Назад"</string>
+ <string name="alert_windows_notification_channel_group_name" msgid="6063891141815714246">"Prikaz preko drugih aplikacija"</string>
+ <string name="alert_windows_notification_channel_name" msgid="3437528564303192620">"Aplikacija <xliff:g id="NAME">%s</xliff:g> se prikazuje preko drugih aplikacija"</string>
+ <string name="alert_windows_notification_title" msgid="6331662751095228536">"<xliff:g id="NAME">%s</xliff:g> se prikazuje preko drugih apl."</string>
+ <string name="alert_windows_notification_message" msgid="6538171456970725333">"Ako ne želite ovu funkciju za <xliff:g id="NAME">%s</xliff:g>, dodirnite da biste otvorili podešavanja i isključili je."</string>
+ <string name="alert_windows_notification_turn_off_action" msgid="7805857234839123780">"Isključi"</string>
+ <string name="ext_media_checking_notification_title" msgid="8299199995416510094">"Proverava se <xliff:g id="NAME">%s</xliff:g>…"</string>
+ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Pregleda se aktuelni sadržaj"</string>
+ <string name="ext_media_checking_notification_message" product="tv" msgid="7986154434946021415">"Analizira se memorijski prostor za medije"</string>
+ <string name="ext_media_new_notification_title" msgid="3517407571407687677">"Novi/a <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="ext_media_new_notification_title" product="automotive" msgid="9085349544984742727">"<xliff:g id="NAME">%s</xliff:g> ne radi"</string>
+ <string name="ext_media_new_notification_message" msgid="6095403121990786986">"Dodirnite da biste podesili"</string>
+ <string name="ext_media_new_notification_message" product="tv" msgid="216863352100263668">"Izaberite da biste podesili"</string>
+ <string name="ext_media_new_notification_message" product="automotive" msgid="5140127881613227162">"Možda morate da reformatirate uređaj. Dodirnite da biste izbacili."</string>
+ <string name="ext_media_ready_notification_message" msgid="7509496364380197369">"Za čuvanje slika, video snimaka, muzike i drugog sadržaja"</string>
+ <string name="ext_media_ready_notification_message" product="tv" msgid="8847134811163165935">"Pregledajte medijske fajlove"</string>
+ <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"Problem sa: <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="ext_media_unmountable_notification_title" product="automotive" msgid="3142723758949023280">"<xliff:g id="NAME">%s</xliff:g> ne radi"</string>
+ <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"Dodirnite da biste ispravili"</string>
+ <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"Medij <xliff:g id="NAME">%s</xliff:g> je oštećen. Izaberite da ga popravite."</string>
+ <string name="ext_media_unmountable_notification_message" product="automotive" msgid="2274596120715020680">"Možda morate da reformatirate uređaj. Dodirnite da biste izbacili."</string>
+ <string name="ext_media_unsupported_notification_title" msgid="3487534182861251401">"Otkriveno: <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="ext_media_unsupported_notification_title" product="automotive" msgid="6004193172658722381">"<xliff:g id="NAME">%s</xliff:g> ne radi"</string>
+ <string name="ext_media_unsupported_notification_message" msgid="8463636521459807981">"Dodirnite da biste podesili."</string>
+ <string name="ext_media_unsupported_notification_message" product="tv" msgid="1595482802187036532">"Izaberite da biste podesili uređaj <xliff:g id="NAME">%s</xliff:g> u podržanom formatu."</string>
+ <string name="ext_media_unsupported_notification_message" product="automotive" msgid="3412494732736336330">"Možda morate da reformatirate uređaj"</string>
+ <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"Uređaj <xliff:g id="NAME">%s</xliff:g> je neočekivano uklonjen"</string>
+ <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Izbacite medijum pre nego što ga uklonite da ne biste izgubili sadržaj"</string>
+ <string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> je uklonjen/a"</string>
+ <string name="ext_media_nomedia_notification_message" msgid="2832724384636625852">"Neke funkcije možda neće ispravno raditi. Umetnite nov memorijski uređaj."</string>
+ <string name="ext_media_unmounting_notification_title" msgid="4147986383917892162">"Izbacuje se <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="ext_media_unmounting_notification_message" msgid="5717036261538754203">"Ne uklanjajte"</string>
+ <string name="ext_media_init_action" msgid="2312974060585056709">"Aktiviraj"</string>
+ <string name="ext_media_unmount_action" msgid="966992232088442745">"Izbaci"</string>
+ <string name="ext_media_browse_action" msgid="344865351947079139">"Istraži"</string>
+ <string name="ext_media_seamless_action" msgid="8837030226009268080">"Promenite izlaz"</string>
+ <string name="ext_media_missing_title" msgid="3209472091220515046">"<xliff:g id="NAME">%s</xliff:g> nedostaje"</string>
+ <string name="ext_media_missing_message" msgid="4408988706227922909">"Ponovo umetnite uređaj"</string>
+ <string name="ext_media_move_specific_title" msgid="8492118544775964250">"Prenosi se <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="ext_media_move_title" msgid="2682741525619033637">"Podaci se prenose"</string>
+ <string name="ext_media_move_success_title" msgid="4901763082647316767">"Prenos sadržaja je gotov"</string>
+ <string name="ext_media_move_success_message" msgid="9159542002276982979">"Sadržaj je premešen na: <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="ext_media_move_failure_title" msgid="3184577479181333665">"Premeštanje sadržaja nije uspelo"</string>
+ <string name="ext_media_move_failure_message" msgid="4197306718121869335">"Probajte da ponovo premestite sadržaj"</string>
+ <string name="ext_media_status_removed" msgid="241223931135751691">"Uklonjen je"</string>
+ <string name="ext_media_status_unmounted" msgid="8145812017295835941">"Izbačen je"</string>
+ <string name="ext_media_status_checking" msgid="159013362442090347">"Proverava se..."</string>
+ <string name="ext_media_status_mounted" msgid="3459448555811203459">"Spreman je"</string>
+ <string name="ext_media_status_mounted_ro" msgid="1974809199760086956">"Samo za čitanje"</string>
+ <string name="ext_media_status_bad_removal" msgid="508448566481406245">"Uklonjen je na nebezbedan način"</string>
+ <string name="ext_media_status_unmountable" msgid="7043574843541087748">"Oštećen je"</string>
+ <string name="ext_media_status_unsupported" msgid="5460509911660539317">"Nije podržan"</string>
+ <string name="ext_media_status_ejecting" msgid="7532403368044013797">"Izbacuje se..."</string>
+ <string name="ext_media_status_formatting" msgid="774148701503179906">"Formatira se..."</string>
+ <string name="ext_media_status_missing" msgid="6520746443048867314">"Nije umetnut"</string>
+ <string name="activity_list_empty" msgid="4219430010716034252">"Nije pronađena nijedna podudarna aktivnost."</string>
+ <string name="permlab_route_media_output" msgid="8048124531439513118">"usmeravanje izlaza medija"</string>
+ <string name="permdesc_route_media_output" msgid="1759683269387729675">"Dozvoljava aplikaciji da usmerava izlaz medija na druge spoljne uređaje."</string>
+ <string name="permlab_readInstallSessions" msgid="7279049337895583621">"čitanje sesija instaliranja"</string>
+ <string name="permdesc_readInstallSessions" msgid="4012608316610763473">"Dozvoljava aplikaciji da čita sesije instaliranja. To joj dozvoljava da vidi detalje o aktivnim instalacijama paketa."</string>
+ <string name="permlab_requestInstallPackages" msgid="7600020863445351154">"zahtevanje paketa za instaliranje"</string>
+ <string name="permdesc_requestInstallPackages" msgid="3969369278325313067">"Omogućava da aplikacija zahteva instalaciju paketa."</string>
+ <string name="permlab_requestDeletePackages" msgid="2541172829260106795">"zahtevanje brisanja paketa"</string>
+ <string name="permdesc_requestDeletePackages" msgid="6133633516423860381">"Omogućava da aplikacija zahteva brisanje paketa."</string>
+ <string name="permlab_requestIgnoreBatteryOptimizations" msgid="7646611326036631439">"traženje dozvole za ignorisanje optimizacija baterije"</string>
+ <string name="permdesc_requestIgnoreBatteryOptimizations" msgid="634260656917874356">"Dozvoljava aplikaciji da traži dozvolu za ignorisanje optimizacija baterije za tu aplikaciju."</string>
+ <string name="permlab_queryAllPackages" msgid="2928450604653281650">"slanje upita za sve pakete"</string>
+ <string name="permdesc_queryAllPackages" msgid="5339069855520996010">"Dozvoljava aplikaciji da vidi sve instalirane pakete."</string>
+ <string name="tutorial_double_tap_to_zoom_message_short" msgid="1842872462124648678">"Dodirnite dvaput za kontrolu zumiranja"</string>
+ <string name="gadget_host_error_inflating" msgid="2449961590495198720">"Nije moguće dodati vidžet."</string>
+ <string name="ime_action_go" msgid="5536744546326495436">"Idi"</string>
+ <string name="ime_action_search" msgid="4501435960587287668">"Pretraži"</string>
+ <string name="ime_action_send" msgid="8456843745664334138">"Pošalji"</string>
+ <string name="ime_action_next" msgid="4169702997635728543">"Dalje"</string>
+ <string name="ime_action_done" msgid="6299921014822891569">"Gotovo"</string>
+ <string name="ime_action_previous" msgid="6548799326860401611">"Prethodno"</string>
+ <string name="ime_action_default" msgid="8265027027659800121">"Izvrši"</string>
+ <string name="dial_number_using" msgid="6060769078933953531">"Biraj broj\nkoristeći <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <string name="create_contact_using" msgid="6200708808003692594">"Napravite kontakt\nkoristeći <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"Sledeće aplikacije zahtevaju dozvolu za pristup nalogu, kako sada, tako i ubuduće."</string>
+ <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"Želite da odobrite ovaj zahtev?"</string>
+ <string name="grant_permissions_header_text" msgid="3420736827804657201">"Zahtev za pristup"</string>
+ <string name="allow" msgid="6195617008611933762">"Dozvoli"</string>
+ <string name="deny" msgid="6632259981847676572">"Odbij"</string>
+ <string name="permission_request_notification_title" msgid="1810025922441048273">"Zatražena je dozvola"</string>
+ <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"Zatražena je dozvola\nza nalog <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
+ <string name="permission_request_notification_for_app_with_subtitle" msgid="1298704005732851350">"<xliff:g id="APP">%1$s</xliff:g> traži dozvolu \nza nalog <xliff:g id="ACCOUNT">%2$s</xliff:g>."</string>
+ <string name="forward_intent_to_owner" msgid="4620359037192871015">"Koristite ovu aplikaciju izvan poslovnog profila"</string>
+ <string name="forward_intent_to_work" msgid="3620262405636021151">"Koristite ovu aplikaciju na poslovnom profilu"</string>
+ <string name="input_method_binding_label" msgid="1166731601721983656">"Metod unosa"</string>
+ <string name="sync_binding_label" msgid="469249309424662147">"Sinhronizacija"</string>
+ <string name="accessibility_binding_label" msgid="1974602776545801715">"Pristupačnost"</string>
+ <string name="wallpaper_binding_label" msgid="1197440498000786738">"Pozadina"</string>
+ <string name="chooser_wallpaper" msgid="3082405680079923708">"Promena pozadine"</string>
+ <string name="notification_listener_binding_label" msgid="2702165274471499713">"Monitor obaveštenja"</string>
+ <string name="vr_listener_binding_label" msgid="8013112996671206429">"Obrađivač za virtuelnu realnost"</string>
+ <string name="condition_provider_service_binding_label" msgid="8490641013951857673">"Dobavljač uslova"</string>
+ <string name="notification_ranker_binding_label" msgid="432708245635563763">"Usluga rangiranja obaveštenja"</string>
+ <string name="vpn_title" msgid="5906991595291514182">"VPN je aktiviran"</string>
+ <string name="vpn_title_long" msgid="6834144390504619998">"Aplikacija <xliff:g id="APP">%s</xliff:g> je aktivirala VPN"</string>
+ <string name="vpn_text" msgid="2275388920267251078">"Dodirnite da biste upravljali mrežom."</string>
+ <string name="vpn_text_long" msgid="278540576806169831">"Povezano sa sesijom <xliff:g id="SESSION">%s</xliff:g>. Dodirnite da biste upravljali mrežom."</string>
+ <string name="vpn_lockdown_connecting" msgid="6096725311950342607">"Povezivanje stalno uključenog VPN-a..."</string>
+ <string name="vpn_lockdown_connected" msgid="2853127976590658469">"Stalno uključen VPN je povezan"</string>
+ <string name="vpn_lockdown_disconnected" msgid="5573611651300764955">"Veza sa uvek uključenim VPN-om je prekinuta"</string>
+ <string name="vpn_lockdown_error" msgid="4453048646854247947">"Povezivanje na stalno uključeni VPN nije uspelo"</string>
+ <string name="vpn_lockdown_config" msgid="8331697329868252169">"Promenite podešavanja VPN-a"</string>
+ <string name="upload_file" msgid="8651942222301634271">"Odaberi fajl"</string>
+ <string name="no_file_chosen" msgid="4146295695162318057">"Nije izabrana nijedna datoteka"</string>
+ <string name="reset" msgid="3865826612628171429">"Resetuj"</string>
+ <string name="submit" msgid="862795280643405865">"Pošalji"</string>
+ <string name="car_mode_disable_notification_title" msgid="8450693275833142896">"Aplikacija za vožnju je pokrenuta"</string>
+ <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"Dodirnite da biste izašli iz aplikacije za vožnju."</string>
+ <string name="back_button_label" msgid="4078224038025043387">"Nazad"</string>
<string name="next_button_label" msgid="6040209156399907780">"Next"</string>
- <string name="skip_button_label" msgid="3566599811326688389">"Прескочи"</string>
- <string name="no_matches" msgid="6472699895759164599">"Нема подударања"</string>
- <string name="find_on_page" msgid="5400537367077438198">"Пронађи на страници"</string>
- <string name="matches_found" msgid="2296462299979507689">"{count,plural, =1{# подударање}one{# од {total}}few{# од {total}}other{# од {total}}}"</string>
- <string name="action_mode_done" msgid="2536182504764803222">"Готово"</string>
- <string name="progress_erasing" msgid="6891435992721028004">"Брише се дељени меморијски простор…"</string>
- <string name="share" msgid="4157615043345227321">"Дели"</string>
- <string name="find" msgid="5015737188624767706">"Пронађи"</string>
- <string name="websearch" msgid="5624340204512793290">"Веб-претрага"</string>
- <string name="find_next" msgid="5341217051549648153">"Пронађи следеће"</string>
- <string name="find_previous" msgid="4405898398141275532">"Пронађи претходно"</string>
- <string name="gpsNotifTicker" msgid="3207361857637620780">"Захтев за локацију од корисника <xliff:g id="NAME">%s</xliff:g>"</string>
- <string name="gpsNotifTitle" msgid="1590033371665669570">"Захтев за локацију"</string>
- <string name="gpsNotifMessage" msgid="7346649122793758032">"Захтева <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
- <string name="gpsVerifYes" msgid="3719843080744112940">"Да"</string>
- <string name="gpsVerifNo" msgid="1671201856091564741">"Не"</string>
- <string name="sync_too_many_deletes" msgid="6999440774578705300">"Премашено је ограничење за брисање"</string>
- <string name="sync_too_many_deletes_desc" msgid="7409327940303504440">"Постоје избрисане ставке (<xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g>) за <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>, налог <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>. Шта желите да урадите?"</string>
- <string name="sync_really_delete" msgid="5657871730315579051">"Избриши ставке"</string>
- <string name="sync_undo_deletes" msgid="5786033331266418896">"Опозови брисања"</string>
- <string name="sync_do_nothing" msgid="4528734662446469646">"Не ради ништа за сада"</string>
- <string name="choose_account_label" msgid="5557833752759831548">"Изаберите налог"</string>
- <string name="add_account_label" msgid="4067610644298737417">"Додај налог"</string>
- <string name="add_account_button_label" msgid="322390749416414097">"Додај налог"</string>
- <string name="number_picker_increment_button" msgid="7621013714795186298">"Повећавање"</string>
- <string name="number_picker_decrement_button" msgid="5116948444762708204">"Смањивање"</string>
- <string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"<xliff:g id="VALUE">%s</xliff:g> додирните и задржите."</string>
- <string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Превуците нагоре да бисте повећали, а надоле да бисте смањили."</string>
- <string name="time_picker_increment_minute_button" msgid="7195870222945784300">"Повећавање минута"</string>
- <string name="time_picker_decrement_minute_button" msgid="230925389943411490">"Смањивање минута"</string>
- <string name="time_picker_increment_hour_button" msgid="3063572723197178242">"Повећавање сати"</string>
- <string name="time_picker_decrement_hour_button" msgid="584101766855054412">"Смањивање сати"</string>
- <string name="time_picker_increment_set_pm_button" msgid="5889149366900376419">"Подеси по подне"</string>
- <string name="time_picker_decrement_set_am_button" msgid="1422608001541064087">"Подеси пре подне"</string>
- <string name="date_picker_increment_month_button" msgid="3447263316096060309">"Повећавање месеца"</string>
- <string name="date_picker_decrement_month_button" msgid="6531888937036883014">"Смањивање месеца"</string>
- <string name="date_picker_increment_day_button" msgid="4349336637188534259">"Повећавање дана"</string>
- <string name="date_picker_decrement_day_button" msgid="6840253837656637248">"Смањивање дана"</string>
- <string name="date_picker_increment_year_button" msgid="7608128783435372594">"Повећавање године"</string>
- <string name="date_picker_decrement_year_button" msgid="4102586521754172684">"Смањивање године"</string>
- <string name="date_picker_prev_month_button" msgid="3418694374017868369">"Претходни месец"</string>
- <string name="date_picker_next_month_button" msgid="4858207337779144840">"Следећи месец"</string>
+ <string name="skip_button_label" msgid="3566599811326688389">"Preskoči"</string>
+ <string name="no_matches" msgid="6472699895759164599">"Nema podudaranja"</string>
+ <string name="find_on_page" msgid="5400537367077438198">"Pronađi na stranici"</string>
+ <string name="matches_found" msgid="2296462299979507689">"{count,plural, =1{# podudaranje}one{# od {total}}few{# od {total}}other{# od {total}}}"</string>
+ <string name="action_mode_done" msgid="2536182504764803222">"Gotovo"</string>
+ <string name="progress_erasing" msgid="6891435992721028004">"Briše se deljeni memorijski prostor…"</string>
+ <string name="share" msgid="4157615043345227321">"Deli"</string>
+ <string name="find" msgid="5015737188624767706">"Pronađi"</string>
+ <string name="websearch" msgid="5624340204512793290">"Veb-pretraga"</string>
+ <string name="find_next" msgid="5341217051549648153">"Pronađi sledeće"</string>
+ <string name="find_previous" msgid="4405898398141275532">"Pronađi prethodno"</string>
+ <string name="gpsNotifTicker" msgid="3207361857637620780">"Zahtev za lokaciju od korisnika <xliff:g id="NAME">%s</xliff:g>"</string>
+ <string name="gpsNotifTitle" msgid="1590033371665669570">"Zahtev za lokaciju"</string>
+ <string name="gpsNotifMessage" msgid="7346649122793758032">"Zahteva <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)"</string>
+ <string name="gpsVerifYes" msgid="3719843080744112940">"Da"</string>
+ <string name="gpsVerifNo" msgid="1671201856091564741">"Ne"</string>
+ <string name="sync_too_many_deletes" msgid="6999440774578705300">"Premašeno je ograničenje za brisanje"</string>
+ <string name="sync_too_many_deletes_desc" msgid="7409327940303504440">"Postoje izbrisane stavke (<xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g>) za <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>, nalog <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>. Šta želite da uradite?"</string>
+ <string name="sync_really_delete" msgid="5657871730315579051">"Izbriši stavke"</string>
+ <string name="sync_undo_deletes" msgid="5786033331266418896">"Opozovi brisanja"</string>
+ <string name="sync_do_nothing" msgid="4528734662446469646">"Ne radi ništa za sada"</string>
+ <string name="choose_account_label" msgid="5557833752759831548">"Izaberite nalog"</string>
+ <string name="add_account_label" msgid="4067610644298737417">"Dodaj nalog"</string>
+ <string name="add_account_button_label" msgid="322390749416414097">"Dodaj nalog"</string>
+ <string name="number_picker_increment_button" msgid="7621013714795186298">"Povećavanje"</string>
+ <string name="number_picker_decrement_button" msgid="5116948444762708204">"Smanjivanje"</string>
+ <string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"<xliff:g id="VALUE">%s</xliff:g> dodirnite i zadržite."</string>
+ <string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Prevucite nagore da biste povećali, a nadole da biste smanjili."</string>
+ <string name="time_picker_increment_minute_button" msgid="7195870222945784300">"Povećavanje minuta"</string>
+ <string name="time_picker_decrement_minute_button" msgid="230925389943411490">"Smanjivanje minuta"</string>
+ <string name="time_picker_increment_hour_button" msgid="3063572723197178242">"Povećavanje sati"</string>
+ <string name="time_picker_decrement_hour_button" msgid="584101766855054412">"Smanjivanje sati"</string>
+ <string name="time_picker_increment_set_pm_button" msgid="5889149366900376419">"Podesi po podne"</string>
+ <string name="time_picker_decrement_set_am_button" msgid="1422608001541064087">"Podesi pre podne"</string>
+ <string name="date_picker_increment_month_button" msgid="3447263316096060309">"Povećavanje meseca"</string>
+ <string name="date_picker_decrement_month_button" msgid="6531888937036883014">"Smanjivanje meseca"</string>
+ <string name="date_picker_increment_day_button" msgid="4349336637188534259">"Povećavanje dana"</string>
+ <string name="date_picker_decrement_day_button" msgid="6840253837656637248">"Smanjivanje dana"</string>
+ <string name="date_picker_increment_year_button" msgid="7608128783435372594">"Povećavanje godine"</string>
+ <string name="date_picker_decrement_year_button" msgid="4102586521754172684">"Smanjivanje godine"</string>
+ <string name="date_picker_prev_month_button" msgid="3418694374017868369">"Prethodni mesec"</string>
+ <string name="date_picker_next_month_button" msgid="4858207337779144840">"Sledeći mesec"</string>
<string name="keyboardview_keycode_alt" msgid="8997420058584292385">"Alt"</string>
- <string name="keyboardview_keycode_cancel" msgid="2134624484115716975">"Откажи"</string>
- <string name="keyboardview_keycode_delete" msgid="2661117313730098650">"Избриши"</string>
- <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Готово"</string>
- <string name="keyboardview_keycode_mode_change" msgid="2743735349997999020">"Промена режима"</string>
+ <string name="keyboardview_keycode_cancel" msgid="2134624484115716975">"Otkaži"</string>
+ <string name="keyboardview_keycode_delete" msgid="2661117313730098650">"Izbriši"</string>
+ <string name="keyboardview_keycode_done" msgid="2524518019001653851">"Gotovo"</string>
+ <string name="keyboardview_keycode_mode_change" msgid="2743735349997999020">"Promena režima"</string>
<string name="keyboardview_keycode_shift" msgid="3026509237043975573">"Shift"</string>
<string name="keyboardview_keycode_enter" msgid="168054869339091055">"Enter"</string>
- <string name="activitychooserview_choose_application" msgid="3500574466367891463">"Изаберите апликацију"</string>
- <string name="activitychooserview_choose_application_error" msgid="6937782107559241734">"Није могуће покренути <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
- <string name="shareactionprovider_share_with" msgid="2753089758467748982">"Дели са"</string>
- <string name="shareactionprovider_share_with_application" msgid="4902832247173666973">"Дели са апликацијом <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
- <string name="content_description_sliding_handle" msgid="982510275422590757">"Клизна ручица. Додирните и задржите."</string>
- <string name="description_target_unlock_tablet" msgid="7431571180065859551">"Превуците да бисте откључали."</string>
- <string name="action_bar_home_description" msgid="1501655419158631974">"Кретање до Почетне"</string>
- <string name="action_bar_up_description" msgid="6611579697195026932">"Кретање нагоре"</string>
- <string name="action_menu_overflow_description" msgid="4579536843510088170">"Још опција"</string>
+ <string name="activitychooserview_choose_application" msgid="3500574466367891463">"Izaberite aplikaciju"</string>
+ <string name="activitychooserview_choose_application_error" msgid="6937782107559241734">"Nije moguće pokrenuti <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="shareactionprovider_share_with" msgid="2753089758467748982">"Deli sa"</string>
+ <string name="shareactionprovider_share_with_application" msgid="4902832247173666973">"Deli sa aplikacijom <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
+ <string name="content_description_sliding_handle" msgid="982510275422590757">"Klizna ručica. Dodirnite i zadržite."</string>
+ <string name="description_target_unlock_tablet" msgid="7431571180065859551">"Prevucite da biste otključali."</string>
+ <string name="action_bar_home_description" msgid="1501655419158631974">"Kretanje do Početne"</string>
+ <string name="action_bar_up_description" msgid="6611579697195026932">"Kretanje nagore"</string>
+ <string name="action_menu_overflow_description" msgid="4579536843510088170">"Još opcija"</string>
<string name="action_bar_home_description_format" msgid="5087107531331621803">"%1$s, %2$s"</string>
<string name="action_bar_home_subtitle_description_format" msgid="4346835454749569826">"%1$s, %2$s, %3$s"</string>
- <string name="storage_internal" msgid="8490227947584914460">"Унутрашњи дељени меморијски простор"</string>
- <string name="storage_sd_card" msgid="3404740277075331881">"SD картица"</string>
- <string name="storage_sd_card_label" msgid="7526153141147470509">"<xliff:g id="MANUFACTURER">%s</xliff:g> SD картица"</string>
- <string name="storage_usb_drive" msgid="448030813201444573">"USB диск"</string>
- <string name="storage_usb_drive_label" msgid="6631740655876540521">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB диск"</string>
- <string name="storage_usb" msgid="2391213347883616886">"USB меморија"</string>
- <string name="extract_edit_menu_button" msgid="63954536535863040">"Измени"</string>
- <string name="data_usage_warning_title" msgid="9034893717078325845">"Упозорење на потрошњу података"</string>
- <string name="data_usage_warning_body" msgid="1669325367188029454">"Потрошили сте <xliff:g id="APP">%s</xliff:g> података"</string>
- <string name="data_usage_mobile_limit_title" msgid="3911447354393775241">"Достигли сте ограничење података"</string>
- <string name="data_usage_wifi_limit_title" msgid="2069698056520812232">"Нема више WiFi података"</string>
- <string name="data_usage_limit_body" msgid="3567699582000085710">"Подаци су паузирани током остатка циклуса"</string>
- <string name="data_usage_mobile_limit_snoozed_title" msgid="101888478915677895">"Потрошили сте мобилне податке"</string>
- <string name="data_usage_wifi_limit_snoozed_title" msgid="1622359254521960508">"Потрошили сте WiFi податке"</string>
- <string name="data_usage_limit_snoozed_body" msgid="545146591766765678">"Прекорачили сте <xliff:g id="SIZE">%s</xliff:g> од подешеног ограничења"</string>
- <string name="data_usage_restricted_title" msgid="126711424380051268">"Позадински подаци су ограничени"</string>
- <string name="data_usage_restricted_body" msgid="5338694433686077733">"Додирните за уклањање ограничења."</string>
- <string name="data_usage_rapid_title" msgid="2950192123248740375">"Велика потрошња моб. података"</string>
- <string name="data_usage_rapid_body" msgid="3886676853263693432">"Апликације су потрошиле више података него обично"</string>
- <string name="data_usage_rapid_app_body" msgid="5425779218506513861">"Апликација <xliff:g id="APP">%s</xliff:g> је потрошила више података него обично"</string>
- <string name="ssl_certificate" msgid="5690020361307261997">"Безбедносни сертификат"</string>
- <string name="ssl_certificate_is_valid" msgid="7293675884598527081">"Овај сертификат је важећи."</string>
- <string name="issued_to" msgid="5975877665505297662">"Издато за:"</string>
- <string name="common_name" msgid="1486334593631798443">"Уобичајени назив:"</string>
- <string name="org_name" msgid="7526331696464255245">"Организација:"</string>
- <string name="org_unit" msgid="995934486977223076">"Организациона јединица:"</string>
- <string name="issued_by" msgid="7872459822431585684">"Издао/ла:"</string>
- <string name="validity_period" msgid="1717724283033175968">"Важност:"</string>
- <string name="issued_on" msgid="5855489688152497307">"Издато:"</string>
- <string name="expires_on" msgid="1623640879705103121">"Истиче:"</string>
- <string name="serial_number" msgid="3479576915806623429">"Серијски број:"</string>
- <string name="fingerprints" msgid="148690767172613723">"Дигитални отисци:"</string>
- <string name="sha256_fingerprint" msgid="7103976380961964600">"SHA-256 отисак прста:"</string>
- <string name="sha1_fingerprint" msgid="2339915142825390774">"SHA-1 отисак прста:"</string>
- <string name="activity_chooser_view_see_all" msgid="3917045206812726099">"Прикажи све"</string>
- <string name="activity_chooser_view_dialog_title_default" msgid="8880731437191978314">"Избор активности"</string>
- <string name="share_action_provider_share_with" msgid="1904096863622941880">"Дели са"</string>
- <string name="sending" msgid="206925243621664438">"Слање..."</string>
- <string name="launchBrowserDefault" msgid="6328349989932924119">"Желите ли да покренете прегледач?"</string>
- <string name="SetupCallDefault" msgid="5581740063237175247">"Желите ли да прихватите позив?"</string>
- <string name="activity_resolver_use_always" msgid="5575222334666843269">"Увек"</string>
- <string name="activity_resolver_use_once" msgid="948462794469672658">"Само једном"</string>
- <string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s не подржава пословни профил"</string>
- <string name="default_audio_route_name" product="tablet" msgid="367936735632195517">"Таблет"</string>
- <string name="default_audio_route_name" product="tv" msgid="4908971385068087367">"ТВ"</string>
- <string name="default_audio_route_name" product="default" msgid="9213546147739983977">"Телефон"</string>
- <string name="default_audio_route_name_dock_speakers" msgid="1551166029093995289">"Звучници базне станице"</string>
- <string name="default_audio_route_name_external_device" msgid="8124229858618975">"Спољни уређај"</string>
- <string name="default_audio_route_name_headphones" msgid="6954070994792640762">"Слушалице"</string>
+ <string name="storage_internal" msgid="8490227947584914460">"Unutrašnji deljeni memorijski prostor"</string>
+ <string name="storage_sd_card" msgid="3404740277075331881">"SD kartica"</string>
+ <string name="storage_sd_card_label" msgid="7526153141147470509">"<xliff:g id="MANUFACTURER">%s</xliff:g> SD kartica"</string>
+ <string name="storage_usb_drive" msgid="448030813201444573">"USB disk"</string>
+ <string name="storage_usb_drive_label" msgid="6631740655876540521">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB disk"</string>
+ <string name="storage_usb" msgid="2391213347883616886">"USB memorija"</string>
+ <string name="extract_edit_menu_button" msgid="63954536535863040">"Izmeni"</string>
+ <string name="data_usage_warning_title" msgid="9034893717078325845">"Upozorenje na potrošnju podataka"</string>
+ <string name="data_usage_warning_body" msgid="1669325367188029454">"Potrošili ste <xliff:g id="APP">%s</xliff:g> podataka"</string>
+ <string name="data_usage_mobile_limit_title" msgid="3911447354393775241">"Dostigli ste ograničenje podataka"</string>
+ <string name="data_usage_wifi_limit_title" msgid="2069698056520812232">"Nema više WiFi podataka"</string>
+ <string name="data_usage_limit_body" msgid="3567699582000085710">"Podaci su pauzirani tokom ostatka ciklusa"</string>
+ <string name="data_usage_mobile_limit_snoozed_title" msgid="101888478915677895">"Potrošili ste mobilne podatke"</string>
+ <string name="data_usage_wifi_limit_snoozed_title" msgid="1622359254521960508">"Potrošili ste WiFi podatke"</string>
+ <string name="data_usage_limit_snoozed_body" msgid="545146591766765678">"Prekoračili ste <xliff:g id="SIZE">%s</xliff:g> od podešenog ograničenja"</string>
+ <string name="data_usage_restricted_title" msgid="126711424380051268">"Pozadinski podaci su ograničeni"</string>
+ <string name="data_usage_restricted_body" msgid="5338694433686077733">"Dodirnite za uklanjanje ograničenja."</string>
+ <string name="data_usage_rapid_title" msgid="2950192123248740375">"Velika potrošnja mob. podataka"</string>
+ <string name="data_usage_rapid_body" msgid="3886676853263693432">"Aplikacije su potrošile više podataka nego obično"</string>
+ <string name="data_usage_rapid_app_body" msgid="5425779218506513861">"Aplikacija <xliff:g id="APP">%s</xliff:g> je potrošila više podataka nego obično"</string>
+ <string name="ssl_certificate" msgid="5690020361307261997">"Bezbednosni sertifikat"</string>
+ <string name="ssl_certificate_is_valid" msgid="7293675884598527081">"Ovaj sertifikat je važeći."</string>
+ <string name="issued_to" msgid="5975877665505297662">"Izdato za:"</string>
+ <string name="common_name" msgid="1486334593631798443">"Uobičajeni naziv:"</string>
+ <string name="org_name" msgid="7526331696464255245">"Organizacija:"</string>
+ <string name="org_unit" msgid="995934486977223076">"Organizaciona jedinica:"</string>
+ <string name="issued_by" msgid="7872459822431585684">"Izdao/la:"</string>
+ <string name="validity_period" msgid="1717724283033175968">"Važnost:"</string>
+ <string name="issued_on" msgid="5855489688152497307">"Izdato:"</string>
+ <string name="expires_on" msgid="1623640879705103121">"Ističe:"</string>
+ <string name="serial_number" msgid="3479576915806623429">"Serijski broj:"</string>
+ <string name="fingerprints" msgid="148690767172613723">"Digitalni otisci:"</string>
+ <string name="sha256_fingerprint" msgid="7103976380961964600">"SHA-256 otisak prsta:"</string>
+ <string name="sha1_fingerprint" msgid="2339915142825390774">"SHA-1 otisak prsta:"</string>
+ <string name="activity_chooser_view_see_all" msgid="3917045206812726099">"Prikaži sve"</string>
+ <string name="activity_chooser_view_dialog_title_default" msgid="8880731437191978314">"Izbor aktivnosti"</string>
+ <string name="share_action_provider_share_with" msgid="1904096863622941880">"Deli sa"</string>
+ <string name="sending" msgid="206925243621664438">"Slanje..."</string>
+ <string name="launchBrowserDefault" msgid="6328349989932924119">"Želite li da pokrenete pregledač?"</string>
+ <string name="SetupCallDefault" msgid="5581740063237175247">"Želite li da prihvatite poziv?"</string>
+ <string name="activity_resolver_use_always" msgid="5575222334666843269">"Uvek"</string>
+ <string name="activity_resolver_use_once" msgid="948462794469672658">"Samo jednom"</string>
+ <string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s ne podržava poslovni profil"</string>
+ <string name="default_audio_route_name" product="tablet" msgid="367936735632195517">"Tablet"</string>
+ <string name="default_audio_route_name" product="tv" msgid="4908971385068087367">"TV"</string>
+ <string name="default_audio_route_name" product="default" msgid="9213546147739983977">"Telefon"</string>
+ <string name="default_audio_route_name_dock_speakers" msgid="1551166029093995289">"Zvučnici bazne stanice"</string>
+ <string name="default_audio_route_name_external_device" msgid="8124229858618975">"Spoljni uređaj"</string>
+ <string name="default_audio_route_name_headphones" msgid="6954070994792640762">"Slušalice"</string>
<string name="default_audio_route_name_usb" msgid="895668743163316932">"USB"</string>
- <string name="default_audio_route_category_name" msgid="5241740395748134483">"Систем"</string>
- <string name="bluetooth_a2dp_audio_route_name" msgid="4214648773120426288">"Bluetooth аудио"</string>
- <string name="wireless_display_route_description" msgid="8297563323032966831">"Бежични екран"</string>
- <string name="media_route_button_content_description" msgid="2299223698196869956">"Пребацуј"</string>
- <string name="media_route_chooser_title" msgid="6646594924991269208">"Повежите са уређајем"</string>
- <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Пребаците екран на уређај"</string>
- <string name="media_route_chooser_searching" msgid="6119673534251329535">"Тражење уређаја…"</string>
- <string name="media_route_chooser_extended_settings" msgid="2506352159381327741">"Подешавања"</string>
- <string name="media_route_controller_disconnect" msgid="7362617572732576959">"Прекини везу"</string>
- <string name="media_route_status_scanning" msgid="8045156315309594482">"Скенирање..."</string>
- <string name="media_route_status_connecting" msgid="5845597961412010540">"Повезује се..."</string>
- <string name="media_route_status_available" msgid="1477537663492007608">"Доступна"</string>
- <string name="media_route_status_not_available" msgid="480912417977515261">"Нису доступне"</string>
- <string name="media_route_status_in_use" msgid="6684112905244944724">"У употреби"</string>
- <string name="display_manager_built_in_display_name" msgid="1015775198829722440">"Уграђени екран"</string>
- <string name="display_manager_hdmi_display_name" msgid="1022758026251534975">"HDMI екран"</string>
- <string name="display_manager_overlay_display_name" msgid="5306088205181005861">"Постављени елемент бр. <xliff:g id="ID">%1$d</xliff:g>"</string>
+ <string name="default_audio_route_category_name" msgid="5241740395748134483">"Sistem"</string>
+ <string name="bluetooth_a2dp_audio_route_name" msgid="4214648773120426288">"Bluetooth audio"</string>
+ <string name="wireless_display_route_description" msgid="8297563323032966831">"Bežični ekran"</string>
+ <string name="media_route_button_content_description" msgid="2299223698196869956">"Prebacuj"</string>
+ <string name="media_route_chooser_title" msgid="6646594924991269208">"Povežite sa uređajem"</string>
+ <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Prebacite ekran na uređaj"</string>
+ <string name="media_route_chooser_searching" msgid="6119673534251329535">"Traženje uređaja…"</string>
+ <string name="media_route_chooser_extended_settings" msgid="2506352159381327741">"Podešavanja"</string>
+ <string name="media_route_controller_disconnect" msgid="7362617572732576959">"Prekini vezu"</string>
+ <string name="media_route_status_scanning" msgid="8045156315309594482">"Skeniranje..."</string>
+ <string name="media_route_status_connecting" msgid="5845597961412010540">"Povezuje se..."</string>
+ <string name="media_route_status_available" msgid="1477537663492007608">"Dostupna"</string>
+ <string name="media_route_status_not_available" msgid="480912417977515261">"Nisu dostupne"</string>
+ <string name="media_route_status_in_use" msgid="6684112905244944724">"U upotrebi"</string>
+ <string name="display_manager_built_in_display_name" msgid="1015775198829722440">"Ugrađeni ekran"</string>
+ <string name="display_manager_hdmi_display_name" msgid="1022758026251534975">"HDMI ekran"</string>
+ <string name="display_manager_overlay_display_name" msgid="5306088205181005861">"Postavljeni element br. <xliff:g id="ID">%1$d</xliff:g>"</string>
<string name="display_manager_overlay_display_title" msgid="1480158037150469170">"<xliff:g id="NAME">%1$s</xliff:g>: <xliff:g id="WIDTH">%2$d</xliff:g>×<xliff:g id="HEIGHT">%3$d</xliff:g>, <xliff:g id="DPI">%4$d</xliff:g> dpi"</string>
- <string name="display_manager_overlay_display_secure_suffix" msgid="2810034719482834679">", безбедно"</string>
- <string name="kg_forgot_pattern_button_text" msgid="406145459223122537">"Заборављени шаблон"</string>
- <string name="kg_wrong_pattern" msgid="1342812634464179931">"Погрешан шаблон"</string>
- <string name="kg_wrong_password" msgid="2384677900494439426">"Погрешна лозинка"</string>
- <string name="kg_wrong_pin" msgid="3680925703673166482">"Погрешан PIN"</string>
- <string name="kg_pattern_instructions" msgid="8366024510502517748">"Нацртајте шаблон"</string>
- <string name="kg_sim_pin_instructions" msgid="6479401489471690359">"Унесите PIN SIM картице"</string>
- <string name="kg_pin_instructions" msgid="7355933174673539021">"Унесите PIN"</string>
- <string name="kg_password_instructions" msgid="7179782578809398050">"Унесите лозинку"</string>
- <string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM картица је сада онемогућена. Унесите PUK кôд да бисте наставили. За детаље контактирајте оператера."</string>
- <string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Унесите жељени PIN кôд"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Потврдите жељени PIN кôд"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
- <string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN кôд је нетачан."</string>
- <string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Унесите PIN који има од 4 до 8 бројева."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK кôд треба да има 8 бројева."</string>
- <string name="kg_invalid_puk" msgid="4809502818518963344">"Поново унесите исправни PUK кôд. Поновљени покушаји ће трајно онемогућити SIM."</string>
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"PIN кодови се не подударају"</string>
- <string name="kg_login_too_many_attempts" msgid="699292728290654121">"Превише покушаја уноса шаблона"</string>
- <string name="kg_login_instructions" msgid="3619844310339066827">"Да бисте откључали, пријавите се помоћу Google налога."</string>
- <string name="kg_login_username_hint" msgid="1765453775467133251">"Корисничко име (имејл адреса)"</string>
- <string name="kg_login_password_hint" msgid="3330530727273164402">"Лозинка"</string>
- <string name="kg_login_submit_button" msgid="893611277617096870">"Пријави ме"</string>
- <string name="kg_login_invalid_input" msgid="8292367491901220210">"Неважеће корисничко име или лозинка."</string>
- <string name="kg_login_account_recovery_hint" msgid="4892466171043541248">"Заборавили сте корисничко име или лозинку?\nПосетите адресу "<b>"google.com/accounts/recovery"</b>"."</string>
- <string name="kg_login_checking_password" msgid="4676010303243317253">"Провера налога…"</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="23741434207544038">"Унели сте нетачни PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"Унели сте нетачну лозинку <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="7357404233979139075">"Нацртали сте шаблон за откључавање нетачно <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"Покушали сте да откључате таблет нетачно <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Након још <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешна(их) покушаја таблет ће бити ресетован на фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"Број ваших неуспешних покушаја да откључате Android TV уређај: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Број преосталих неуспешних покушаја после којих ће се Android TV ресетовати на фабричка подешавања и сви подаци корисника ће бити изгубљени: <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"Покушали сте да откључате телефон нетачно <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешна(их) покушаја телефон ће бити ресетован на фабричка подешавања и сви кориснички подаци ће бити изгубљени."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"Покушали сте да откључате таблет нетачно <xliff:g id="NUMBER">%d</xliff:g> пута. Таблет ће сада бити враћен на подразумевана фабричка подешавања."</string>
- <string name="kg_failed_attempts_now_wiping" product="tv" msgid="5045460916106267585">"Број ваших неуспешних покушаја да откључате Android TV уређај: <xliff:g id="NUMBER">%d</xliff:g>. Android TV уређај ће се сада ресетовати на фабричка подешавања."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="5043730590446071189">"Покушали сте да откључате телефон нетачно <xliff:g id="NUMBER">%d</xliff:g> пута. Телефон ће сада бити враћен на подразумевана фабричка подешавања."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="7086799295109717623">"Нацртали сте шаблон за откључавање нетачно <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешна(их) покушаја, од вас ће бити затражено да откључате таблет помоћу налога е-поште.\n\nПробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> секунде/и."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"Нетачно сте нацртали шаблон за откључавање <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још пута (<xliff:g id="NUMBER_1">%2$d</xliff:g>), затражићемо да откључате телефон помоћу Android TV уређаја.\n\n Пробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> сек."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Нацртали сте шаблон за откључавање нетачно <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешна(их) покушаја, од вас ће бити затражено да откључате телефон помоћу налога е-поште.\n\nПробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> секунде/и."</string>
+ <string name="display_manager_overlay_display_secure_suffix" msgid="2810034719482834679">", bezbedno"</string>
+ <string name="kg_forgot_pattern_button_text" msgid="406145459223122537">"Zaboravljeni šablon"</string>
+ <string name="kg_wrong_pattern" msgid="1342812634464179931">"Pogrešan šablon"</string>
+ <string name="kg_wrong_password" msgid="2384677900494439426">"Pogrešna lozinka"</string>
+ <string name="kg_wrong_pin" msgid="3680925703673166482">"Pogrešan PIN"</string>
+ <string name="kg_pattern_instructions" msgid="8366024510502517748">"Nacrtajte šablon"</string>
+ <string name="kg_sim_pin_instructions" msgid="6479401489471690359">"Unesite PIN SIM kartice"</string>
+ <string name="kg_pin_instructions" msgid="7355933174673539021">"Unesite PIN"</string>
+ <string name="kg_password_instructions" msgid="7179782578809398050">"Unesite lozinku"</string>
+ <string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM kartica je sada onemogućena. Unesite PUK kôd da biste nastavili. Za detalje kontaktirajte operatera."</string>
+ <string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Unesite željeni PIN kôd"</string>
+ <string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Potvrdite željeni PIN kôd"</string>
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Otključava se SIM…"</string>
+ <string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN kôd je netačan."</string>
+ <string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Unesite PIN koji ima od 4 do 8 brojeva."</string>
+ <string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kôd treba da ima 8 brojeva."</string>
+ <string name="kg_invalid_puk" msgid="4809502818518963344">"Ponovo unesite ispravni PUK kôd. Ponovljeni pokušaji će trajno onemogućiti SIM."</string>
+ <string name="kg_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"PIN kodovi se ne podudaraju"</string>
+ <string name="kg_login_too_many_attempts" msgid="699292728290654121">"Previše pokušaja unosa šablona"</string>
+ <string name="kg_login_instructions" msgid="3619844310339066827">"Da biste otključali, prijavite se pomoću Google naloga."</string>
+ <string name="kg_login_username_hint" msgid="1765453775467133251">"Korisničko ime (imejl adresa)"</string>
+ <string name="kg_login_password_hint" msgid="3330530727273164402">"Lozinka"</string>
+ <string name="kg_login_submit_button" msgid="893611277617096870">"Prijavi me"</string>
+ <string name="kg_login_invalid_input" msgid="8292367491901220210">"Nevažeće korisničko ime ili lozinka."</string>
+ <string name="kg_login_account_recovery_hint" msgid="4892466171043541248">"Zaboravili ste korisničko ime ili lozinku?\nPosetite adresu "<b>"google.com/accounts/recovery"</b>"."</string>
+ <string name="kg_login_checking_password" msgid="4676010303243317253">"Provera naloga…"</string>
+ <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="23741434207544038">"Uneli ste netačni PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunde/i."</string>
+ <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"Uneli ste netačnu lozinku <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunde/i."</string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="7357404233979139075">"Nacrtali ste šablon za otključavanje netačno <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunde/i."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"Pokušali ste da otključate tablet netačno <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Nakon još <xliff:g id="NUMBER_1">%2$d</xliff:g> neuspešna(ih) pokušaja tablet će biti resetovan na fabrička podešavanja i svi korisnički podaci će biti izgubljeni."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"Broj vaših neuspešnih pokušaja da otključate Android TV uređaj: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Broj preostalih neuspešnih pokušaja posle kojih će se Android TV resetovati na fabrička podešavanja i svi podaci korisnika će biti izgubljeni: <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"Pokušali ste da otključate telefon netačno <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Posle još <xliff:g id="NUMBER_1">%2$d</xliff:g> neuspešna(ih) pokušaja telefon će biti resetovan na fabrička podešavanja i svi korisnički podaci će biti izgubljeni."</string>
+ <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"Pokušali ste da otključate tablet netačno <xliff:g id="NUMBER">%d</xliff:g> puta. Tablet će sada biti vraćen na podrazumevana fabrička podešavanja."</string>
+ <string name="kg_failed_attempts_now_wiping" product="tv" msgid="5045460916106267585">"Broj vaših neuspešnih pokušaja da otključate Android TV uređaj: <xliff:g id="NUMBER">%d</xliff:g>. Android TV uređaj će se sada resetovati na fabrička podešavanja."</string>
+ <string name="kg_failed_attempts_now_wiping" product="default" msgid="5043730590446071189">"Pokušali ste da otključate telefon netačno <xliff:g id="NUMBER">%d</xliff:g> puta. Telefon će sada biti vraćen na podrazumevana fabrička podešavanja."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="7086799295109717623">"Nacrtali ste šablon za otključavanje netačno <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Posle još <xliff:g id="NUMBER_1">%2$d</xliff:g> neuspešna(ih) pokušaja, od vas će biti zatraženo da otključate tablet pomoću naloga e-pošte.\n\nProbajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunde/i."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"Netačno ste nacrtali šablon za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još puta (<xliff:g id="NUMBER_1">%2$d</xliff:g>), zatražićemo da otključate telefon pomoću Android TV uređaja.\n\n Probajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sek."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Nacrtali ste šablon za otključavanje netačno <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Posle još <xliff:g id="NUMBER_1">%2$d</xliff:g> neuspešna(ih) pokušaja, od vas će biti zatraženo da otključate telefon pomoću naloga e-pošte.\n\nProbajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunde/i."</string>
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
- <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Уклони"</string>
- <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Желите да појачате звук изнад препорученог нивоа?\n\nСлушање гласне музике дуже време може да вам оштети слух."</string>
- <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Желите ли да користите пречицу за приступачност?"</string>
- <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Када је пречица укључена, притисните оба дугмета за јачину звука да бисте покренули функцију приступачности."</string>
- <string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Желите да укључите пречицу за функције приступачности?"</string>
- <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ако задржите оба тастера за јачину звука пар секунди, укључиће се функције приступачности. То може да промени начин рада уређаја.\n\nПостојеће функције:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nМожете да промените изабране функције у одељку Подешавања > Приступачност."</string>
+ <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ukloni"</string>
+ <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite da pojačate zvuk iznad preporučenog nivoa?\n\nSlušanje glasne muzike duže vreme može da vam ošteti sluh."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Upozorenje,\npremašili ste broj glasnih zvučnih signala koje je bezbedno slušati preko slušalica tokom nedelju dana.\n\nPrekoračenjem tog ograničenja trajno ćete oštetiti sluh."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Upozorenje,\nPet puta ste premašili broj glasnih zvučnih signala koje je bezbedno slušati preko slušalica tokom nedelju dana.\n\nJačina zvuka treba da se smanji da biste zaštitili sluh."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Nivo na kom slušate medijski sadržaj može da dovede do oštećenja sluha ako to traje tokom dužeg perioda.\n\nAko nastavite da slušate tako glasno tokom dužeg perioda, može da dođe do oštećenja sluha."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Upozorenje,\ntrenutno slušate glasan sadržaj na nebezbednom nivou.\n\nAko nastavite da slušate tako glasno, trajno ćete oštetiti sluh."</string>
+ <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li da koristite prečicu za pristupačnost?"</string>
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kada je prečica uključena, pritisnite oba dugmeta za jačinu zvuka da biste pokrenuli funkciju pristupačnosti."</string>
+ <string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Želite da uključite prečicu za funkcije pristupačnosti?"</string>
+ <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Ako zadržite oba tastera za jačinu zvuka par sekundi, uključiće se funkcije pristupačnosti. To može da promeni način rada uređaja.\n\nPostojeće funkcije:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nMožete da promenite izabrane funkcije u odeljku Podešavanja > Pristupačnost."</string>
<string name="accessibility_shortcut_multiple_service_list" msgid="2128323171922023762">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string>
- <string name="accessibility_shortcut_single_service_warning_title" msgid="1909518473488345266">"Желите да укључите пречицу за услугу <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
- <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ако задржите оба тастера за јачину звука пар секунди, укључује се <xliff:g id="SERVICE">%1$s</xliff:g>, функција приступачности. То може да промени начин рада уређаја.\n\nМожете да промените функцију на коју се односи ова пречица у одељку Подешавања > Приступачност."</string>
- <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Укључи"</string>
- <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Не укључуј"</string>
- <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"УКЉУЧЕНО"</string>
- <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ИСКЉУЧЕНО"</string>
- <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Желите ли да дозволите да услуга <xliff:g id="SERVICE">%1$s</xliff:g> има потпуну контролу над уређајем?"</string>
- <string name="accessibility_service_warning_description" msgid="291674995220940133">"Потпуна контрола је примерена за апликације које вам помажу код услуга приступачности, али не и за већину апликација."</string>
- <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Прегледај и контролиши екран"</string>
- <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да чита сав садржај на екрану и приказује га у другим апликацијама."</string>
- <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Прегледај и обављај радње"</string>
- <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да прати интеракције са апликацијом или сензором хардвера и користи апликације уместо вас."</string>
- <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволи"</string>
- <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Одбиј"</string>
- <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Додирните неку функцију да бисте почели да је користите:"</string>
- <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Одаберите функције које ћете користити са дугметом Приступачност"</string>
- <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Одаберите функције за пречицу тастером јачине звука"</string>
- <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Услуга <xliff:g id="SERVICE_NAME">%s</xliff:g> је искључена"</string>
- <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Измените пречице"</string>
- <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string>
- <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Искључи пречицу"</string>
- <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи пречицу"</string>
- <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија боја"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
- <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим једном руком"</string>
- <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додатно затамњено"</string>
- <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је укључена."</string>
- <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је искључена."</string>
- <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Притисните и задржите оба тастера за јачину звука три секунде да бисте користили <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string>
- <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Изаберите функцију која ће се користити када додирнете дугме Приступачност:"</string>
- <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Одаберите функцију која ће се користити помоћу покрета за приступачност (помоћу два прста превуците нагоре од дна екрана):"</string>
- <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Одаберите функцију која ће се користити помоћу покрета за приступачност (помоћу три прста превуците нагоре од дна екрана):"</string>
- <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Да бисте прелазили са једне функције на другу, додирните и задржите дугме Приступачност."</string>
- <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Да бисте прелазили са једне функције на другу, превуците нагоре помоћу два прста и задржите."</string>
- <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Да бисте прелазили са једне функције на другу, превуците нагоре помоћу три прста и задржите."</string>
- <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Увећање"</string>
- <string name="user_switched" msgid="7249833311585228097">"Актуелни корисник <xliff:g id="NAME">%1$s</xliff:g>."</string>
- <string name="user_switching_message" msgid="1912993630661332336">"Пребацивање на <xliff:g id="NAME">%1$s</xliff:g>…"</string>
- <string name="user_logging_out_message" msgid="7216437629179710359">"Одјављује се <xliff:g id="NAME">%1$s</xliff:g>…"</string>
- <string name="owner_name" msgid="8713560351570795743">"Власник"</string>
- <string name="guest_name" msgid="8502103277839834324">"Гост"</string>
- <string name="error_message_title" msgid="4082495589294631966">"Грешка"</string>
- <string name="error_message_change_not_allowed" msgid="843159705042381454">"Администратор није дозволио ову промену"</string>
- <string name="app_not_found" msgid="3429506115332341800">"Није пронађена ниједна апликација која би могла да обави ову радњу"</string>
- <string name="revoke" msgid="5526857743819590458">"Опозови"</string>
+ <string name="accessibility_shortcut_single_service_warning_title" msgid="1909518473488345266">"Želite da uključite prečicu za uslugu <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
+ <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Ako zadržite oba tastera za jačinu zvuka par sekundi, uključuje se <xliff:g id="SERVICE">%1$s</xliff:g>, funkcija pristupačnosti. To može da promeni način rada uređaja.\n\nMožete da promenite funkciju na koju se odnosi ova prečica u odeljku Podešavanja > Pristupačnost."</string>
+ <string name="accessibility_shortcut_on" msgid="5463618449556111344">"Uključi"</string>
+ <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Ne uključuj"</string>
+ <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"UKLJUČENO"</string>
+ <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ISKLJUČENO"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li da dozvolite da usluga <xliff:g id="SERVICE">%1$s</xliff:g> ima potpunu kontrolu nad uređajem?"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Potpuna kontrola je primerena za aplikacije koje vam pomažu kod usluga pristupačnosti, ali ne i za većinu aplikacija."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Pregledaj i kontroliši ekran"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Može da čita sav sadržaj na ekranu i prikazuje ga u drugim aplikacijama."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Pregledaj i obavljaj radnje"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Može da prati interakcije sa aplikacijom ili senzorom hardvera i koristi aplikacije umesto vas."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dozvoli"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odbij"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Dodirnite neku funkciju da biste počeli da je koristite:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"Odaberite funkcije koje ćete koristiti sa dugmetom Pristupačnost"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Odaberite funkcije za prečicu tasterom jačine zvuka"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> je isključena"</string>
+ <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Izmenite prečice"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gotovo"</string>
+ <string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Isključi prečicu"</string>
+ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string>
+ <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string>
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Korekcija boja"</string>
+ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jednom rukom"</string>
+ <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjeno"</string>
+ <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string>
+ <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string>
+ <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Pritisnite i zadržite oba tastera za jačinu zvuka tri sekunde da biste koristili <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="accessibility_button_prompt_text" msgid="8343213623338605305">"Izaberite funkciju koja će se koristiti kada dodirnete dugme Pristupačnost:"</string>
+ <string name="accessibility_gesture_prompt_text" msgid="8742535972130563952">"Odaberite funkciju koja će se koristiti pomoću pokreta za pristupačnost (pomoću dva prsta prevucite nagore od dna ekrana):"</string>
+ <string name="accessibility_gesture_3finger_prompt_text" msgid="5211827854510660203">"Odaberite funkciju koja će se koristiti pomoću pokreta za pristupačnost (pomoću tri prsta prevucite nagore od dna ekrana):"</string>
+ <string name="accessibility_button_instructional_text" msgid="8853928358872550500">"Da biste prelazili sa jedne funkcije na drugu, dodirnite i zadržite dugme Pristupačnost."</string>
+ <string name="accessibility_gesture_instructional_text" msgid="9196230728837090497">"Da biste prelazili sa jedne funkcije na drugu, prevucite nagore pomoću dva prsta i zadržite."</string>
+ <string name="accessibility_gesture_3finger_instructional_text" msgid="3425123684990193765">"Da biste prelazili sa jedne funkcije na drugu, prevucite nagore pomoću tri prsta i zadržite."</string>
+ <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Uvećanje"</string>
+ <string name="user_switched" msgid="7249833311585228097">"Aktuelni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string>
+ <string name="user_switching_message" msgid="1912993630661332336">"Prebacivanje na <xliff:g id="NAME">%1$s</xliff:g>…"</string>
+ <string name="user_logging_out_message" msgid="7216437629179710359">"Odjavljuje se <xliff:g id="NAME">%1$s</xliff:g>…"</string>
+ <string name="owner_name" msgid="8713560351570795743">"Vlasnik"</string>
+ <string name="guest_name" msgid="8502103277839834324">"Gost"</string>
+ <string name="error_message_title" msgid="4082495589294631966">"Greška"</string>
+ <string name="error_message_change_not_allowed" msgid="843159705042381454">"Administrator nije dozvolio ovu promenu"</string>
+ <string name="app_not_found" msgid="3429506115332341800">"Nije pronađena nijedna aplikacija koja bi mogla da obavi ovu radnju"</string>
+ <string name="revoke" msgid="5526857743819590458">"Opozovi"</string>
<string name="mediasize_iso_a0" msgid="7039061159929977973">"ISO A0"</string>
<string name="mediasize_iso_a1" msgid="4063589931031977223">"ISO A1"</string>
<string name="mediasize_iso_a2" msgid="2779860175680233980">"ISO A2"</string>
@@ -1871,490 +1821,488 @@
<string name="mediasize_japanese_kaku2" msgid="7477551750461028312">"Kaku2"</string>
<string name="mediasize_japanese_you4" msgid="5552111912684384833">"You4"</string>
<string name="mediasize_japanese_l" msgid="1326765321473431817">"L"</string>
- <string name="mediasize_unknown_portrait" msgid="3817016220446495613">"Непозната величина, усправно"</string>
- <string name="mediasize_unknown_landscape" msgid="1584741567225095325">"Непозната величина, водоравно"</string>
- <string name="write_fail_reason_cancelled" msgid="2344081488493969190">"Отказано је"</string>
- <string name="write_fail_reason_cannot_write" msgid="432118118378451508">"Грешка при исписивању садржаја"</string>
- <string name="reason_unknown" msgid="5599739807581133337">"непознато"</string>
- <string name="reason_service_unavailable" msgid="5288405248063804713">"Услуга штампања није омогућена"</string>
- <string name="print_service_installed_title" msgid="6134880817336942482">"Услуга <xliff:g id="NAME">%s</xliff:g> је инсталирана"</string>
- <string name="print_service_installed_message" msgid="7005672469916968131">"Додирните да бисте омогућили"</string>
- <string name="restr_pin_enter_admin_pin" msgid="1199419462726962697">"Унесите PIN администратора"</string>
- <string name="restr_pin_enter_pin" msgid="373139384161304555">"Унесите PIN"</string>
- <string name="restr_pin_incorrect" msgid="3861383632940852496">"Нетачно"</string>
- <string name="restr_pin_enter_old_pin" msgid="7537079094090650967">"Актуелни PIN"</string>
- <string name="restr_pin_enter_new_pin" msgid="3267614461844565431">"Нови PIN"</string>
- <string name="restr_pin_confirm_pin" msgid="7143161971614944989">"Потврдите нови PIN"</string>
- <string name="restr_pin_create_pin" msgid="917067613896366033">"Направите PIN за измену ограничења"</string>
- <string name="restr_pin_error_doesnt_match" msgid="7063392698489280556">"PIN-ови се не подударају. Пробајте поново."</string>
- <string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN је прекратак. Мора да садржи најмање 4 цифре."</string>
- <string name="restr_pin_try_later" msgid="5897719962541636727">"Пробајте поново касније"</string>
- <string name="immersive_cling_title" msgid="2307034298721541791">"Приказује се цео екран"</string>
- <string name="immersive_cling_description" msgid="7092737175345204832">"Да бисте изашли, превуците надоле одозго."</string>
- <string name="immersive_cling_positive" msgid="7047498036346489883">"Важи"</string>
- <string name="done_label" msgid="7283767013231718521">"Готово"</string>
- <string name="hour_picker_description" msgid="5153757582093524635">"Кружни клизач за сате"</string>
- <string name="minute_picker_description" msgid="9029797023621927294">"Кружни клизач за минуте"</string>
- <string name="select_hours" msgid="5982889657313147347">"Изаберите сате"</string>
- <string name="select_minutes" msgid="9157401137441014032">"Изаберите минуте"</string>
- <string name="select_day" msgid="2060371240117403147">"Изаберите месец и дан"</string>
- <string name="select_year" msgid="1868350712095595393">"Изаберите годину"</string>
- <string name="deleted_key" msgid="9130083334943364001">"Избрисали сте <xliff:g id="KEY">%1$s</xliff:g>"</string>
- <string name="managed_profile_label_badge" msgid="6762559569999499495">"<xliff:g id="LABEL">%1$s</xliff:g> на послу"</string>
- <string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2. пословни <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3. пословни имејл <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Тражи PIN пре откачињања"</string>
- <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Тражи шаблон за откључавање пре откачињања"</string>
- <string name="lock_to_app_unlock_password" msgid="9126722403506560473">"Тражи лозинку пре откачињања"</string>
- <string name="package_installed_device_owner" msgid="7035926868974878525">"Инсталирао је администратор"</string>
- <string name="package_updated_device_owner" msgid="7560272363805506941">"Ажурирао је администратор"</string>
- <string name="package_deleted_device_owner" msgid="2292335928930293023">"Избрисао је администратор"</string>
- <string name="confirm_battery_saver" msgid="5247976246208245754">"Потврди"</string>
- <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Уштеда батерије укључује тамну тему и ограничава или искључује активности у позадини, неке визуелне ефекте, одређене функције и неке мрежне везе."</string>
- <string name="battery_saver_description" msgid="8518809702138617167">"Уштеда батерије укључује тамну тему и ограничава или искључује активности у позадини, неке визуелне ефекте, одређене функције и неке мрежне везе."</string>
- <string name="data_saver_description" msgid="4995164271550590517">"Да би се смањила потрошња података, Уштеда података спречава неке апликације да шаљу или примају податке у позадини. Апликација коју тренутно користите може да приступа подацима, али ће то чинити ређе. На пример, слике се неће приказивати док их не додирнете."</string>
- <string name="data_saver_enable_title" msgid="7080620065745260137">"Желите да укључите Уштеду података?"</string>
- <string name="data_saver_enable_button" msgid="4399405762586419726">"Укључи"</string>
- <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Један минут (до {formattedTime})}one{# минут (до {formattedTime})}few{# минута (до {formattedTime})}other{# минута (до {formattedTime})}}"</string>
- <string name="zen_mode_duration_minutes_summary_short" msgid="1187553788355486950">"{count,plural, =1{1 мин (до {formattedTime})}one{# мин (до {formattedTime})}few{# мин (до {formattedTime})}other{# мин (до {formattedTime})}}"</string>
- <string name="zen_mode_duration_hours_summary" msgid="3866333100793277211">"{count,plural, =1{1 сат (до {formattedTime})}one{# сат (до {formattedTime})}few{# сата (до {formattedTime})}other{# сати (до {formattedTime})}}"</string>
- <string name="zen_mode_duration_hours_summary_short" msgid="687919813833347945">"{count,plural, =1{1 с (до {formattedTime})}one{# с (до {formattedTime})}few{# с (до {formattedTime})}other{# с (до {formattedTime})}}"</string>
- <string name="zen_mode_duration_minutes" msgid="2340007982276569054">"{count,plural, =1{Један минут}one{# минут}few{# минута}other{# минута}}"</string>
- <string name="zen_mode_duration_minutes_short" msgid="2435756450204526554">"{count,plural, =1{1 мин}one{# мин}few{# мин}other{# мин}}"</string>
- <string name="zen_mode_duration_hours" msgid="7841806065034711849">"{count,plural, =1{1 сат}one{# сат}few{# сата}other{# сати}}"</string>
- <string name="zen_mode_duration_hours_short" msgid="3666949653933099065">"{count,plural, =1{1 с}one{# с}few{# с}other{# с}}"</string>
- <string name="zen_mode_until_next_day" msgid="1403042784161725038">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
- <string name="zen_mode_until" msgid="2250286190237669079">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
- <string name="zen_mode_alarm" msgid="7046911727540499275">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (следећи аларм)"</string>
- <string name="zen_mode_forever" msgid="740585666364912448">"Док не искључите"</string>
- <string name="zen_mode_forever_dnd" msgid="3423201955704180067">"Док не искључите режим Не узнемиравај"</string>
+ <string name="mediasize_unknown_portrait" msgid="3817016220446495613">"Nepoznata veličina, uspravno"</string>
+ <string name="mediasize_unknown_landscape" msgid="1584741567225095325">"Nepoznata veličina, vodoravno"</string>
+ <string name="write_fail_reason_cancelled" msgid="2344081488493969190">"Otkazano je"</string>
+ <string name="write_fail_reason_cannot_write" msgid="432118118378451508">"Greška pri ispisivanju sadržaja"</string>
+ <string name="reason_unknown" msgid="5599739807581133337">"nepoznato"</string>
+ <string name="reason_service_unavailable" msgid="5288405248063804713">"Usluga štampanja nije omogućena"</string>
+ <string name="print_service_installed_title" msgid="6134880817336942482">"Usluga <xliff:g id="NAME">%s</xliff:g> je instalirana"</string>
+ <string name="print_service_installed_message" msgid="7005672469916968131">"Dodirnite da biste omogućili"</string>
+ <string name="restr_pin_enter_admin_pin" msgid="1199419462726962697">"Unesite PIN administratora"</string>
+ <string name="restr_pin_enter_pin" msgid="373139384161304555">"Unesite PIN"</string>
+ <string name="restr_pin_incorrect" msgid="3861383632940852496">"Netačno"</string>
+ <string name="restr_pin_enter_old_pin" msgid="7537079094090650967">"Aktuelni PIN"</string>
+ <string name="restr_pin_enter_new_pin" msgid="3267614461844565431">"Novi PIN"</string>
+ <string name="restr_pin_confirm_pin" msgid="7143161971614944989">"Potvrdite novi PIN"</string>
+ <string name="restr_pin_create_pin" msgid="917067613896366033">"Napravite PIN za izmenu ograničenja"</string>
+ <string name="restr_pin_error_doesnt_match" msgid="7063392698489280556">"PIN-ovi se ne podudaraju. Probajte ponovo."</string>
+ <string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN je prekratak. Mora da sadrži najmanje 4 cifre."</string>
+ <string name="restr_pin_try_later" msgid="5897719962541636727">"Probajte ponovo kasnije"</string>
+ <string name="immersive_cling_title" msgid="2307034298721541791">"Prikazuje se ceo ekran"</string>
+ <string name="immersive_cling_description" msgid="7092737175345204832">"Da biste izašli, prevucite nadole odozgo."</string>
+ <string name="immersive_cling_positive" msgid="7047498036346489883">"Važi"</string>
+ <string name="done_label" msgid="7283767013231718521">"Gotovo"</string>
+ <string name="hour_picker_description" msgid="5153757582093524635">"Kružni klizač za sate"</string>
+ <string name="minute_picker_description" msgid="9029797023621927294">"Kružni klizač za minute"</string>
+ <string name="select_hours" msgid="5982889657313147347">"Izaberite sate"</string>
+ <string name="select_minutes" msgid="9157401137441014032">"Izaberite minute"</string>
+ <string name="select_day" msgid="2060371240117403147">"Izaberite mesec i dan"</string>
+ <string name="select_year" msgid="1868350712095595393">"Izaberite godinu"</string>
+ <string name="deleted_key" msgid="9130083334943364001">"Izbrisali ste <xliff:g id="KEY">%1$s</xliff:g>"</string>
+ <string name="managed_profile_label_badge" msgid="6762559569999499495">"<xliff:g id="LABEL">%1$s</xliff:g> na poslu"</string>
+ <string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2. poslovni <xliff:g id="LABEL">%1$s</xliff:g>"</string>
+ <string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3. poslovni imejl <xliff:g id="LABEL">%1$s</xliff:g>"</string>
+ <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Traži PIN pre otkačinjanja"</string>
+ <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Traži šablon za otključavanje pre otkačinjanja"</string>
+ <string name="lock_to_app_unlock_password" msgid="9126722403506560473">"Traži lozinku pre otkačinjanja"</string>
+ <string name="package_installed_device_owner" msgid="7035926868974878525">"Instalirao je administrator"</string>
+ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je administrator"</string>
+ <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je administrator"</string>
+ <string name="confirm_battery_saver" msgid="5247976246208245754">"Potvrdi"</string>
+ <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Ušteda baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizuelne efekte, određene funkcije i neke mrežne veze."</string>
+ <string name="battery_saver_description" msgid="8518809702138617167">"Ušteda baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizuelne efekte, određene funkcije i neke mrežne veze."</string>
+ <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjila potrošnja podataka, Ušteda podataka sprečava neke aplikacije da šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može da pristupa podacima, ali će to činiti ređe. Na primer, slike se neće prikazivati dok ih ne dodirnete."</string>
+ <string name="data_saver_enable_title" msgid="7080620065745260137">"Želite da uključite Uštedu podataka?"</string>
+ <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string>
+ <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{Jedan minut (do {formattedTime})}one{# minut (do {formattedTime})}few{# minuta (do {formattedTime})}other{# minuta (do {formattedTime})}}"</string>
+ <string name="zen_mode_duration_minutes_summary_short" msgid="1187553788355486950">"{count,plural, =1{1 min (do {formattedTime})}one{# min (do {formattedTime})}few{# min (do {formattedTime})}other{# min (do {formattedTime})}}"</string>
+ <string name="zen_mode_duration_hours_summary" msgid="3866333100793277211">"{count,plural, =1{1 sat (do {formattedTime})}one{# sat (do {formattedTime})}few{# sata (do {formattedTime})}other{# sati (do {formattedTime})}}"</string>
+ <string name="zen_mode_duration_hours_summary_short" msgid="687919813833347945">"{count,plural, =1{1 s (do {formattedTime})}one{# s (do {formattedTime})}few{# s (do {formattedTime})}other{# s (do {formattedTime})}}"</string>
+ <string name="zen_mode_duration_minutes" msgid="2340007982276569054">"{count,plural, =1{Jedan minut}one{# minut}few{# minuta}other{# minuta}}"</string>
+ <string name="zen_mode_duration_minutes_short" msgid="2435756450204526554">"{count,plural, =1{1 min}one{# min}few{# min}other{# min}}"</string>
+ <string name="zen_mode_duration_hours" msgid="7841806065034711849">"{count,plural, =1{1 sat}one{# sat}few{# sata}other{# sati}}"</string>
+ <string name="zen_mode_duration_hours_short" msgid="3666949653933099065">"{count,plural, =1{1 s}one{# s}few{# s}other{# s}}"</string>
+ <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
+ <string name="zen_mode_until" msgid="2250286190237669079">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string>
+ <string name="zen_mode_alarm" msgid="7046911727540499275">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (sledeći alarm)"</string>
+ <string name="zen_mode_forever" msgid="740585666364912448">"Dok ne isključite"</string>
+ <string name="zen_mode_forever_dnd" msgid="3423201955704180067">"Dok ne isključite režim Ne uznemiravaj"</string>
<string name="zen_mode_rule_name_combination" msgid="7174598364351313725">"<xliff:g id="FIRST">%1$s</xliff:g>/<xliff:g id="REST">%2$s</xliff:g>"</string>
- <string name="toolbar_collapse_description" msgid="8009920446193610996">"Скупи"</string>
- <string name="zen_mode_feature_name" msgid="3785547207263754500">"Не узнемиравај"</string>
- <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Одмор"</string>
- <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"Радни дан увече"</string>
- <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Викенд"</string>
- <string name="zen_mode_default_events_name" msgid="2280682960128512257">"Догађај"</string>
- <string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Спавање"</string>
- <string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> искључује неке звуке"</string>
- <string name="system_error_wipe_data" msgid="5910572292172208493">"Дошло је до интерног проблема у вези са уређајем и можда ће бити нестабилан док не обавите ресетовање на фабричка подешавања."</string>
- <string name="system_error_manufacturer" msgid="703545241070116315">"Дошло је до интерног проблема у вези са уређајем. Потражите детаље од произвођача."</string>
- <string name="stk_cc_ussd_to_dial" msgid="3139884150741157610">"USSD захтев је промењен у обичан позив"</string>
- <string name="stk_cc_ussd_to_ss" msgid="4826846653052609738">"USSD захтев је промењен у SS захтев"</string>
- <string name="stk_cc_ussd_to_ussd" msgid="8343001461299302472">"Промењено је у нови USSD захтев"</string>
- <string name="stk_cc_ussd_to_dial_video" msgid="429118590323618623">"USSD захтев је промењен у видео позив"</string>
- <string name="stk_cc_ss_to_dial" msgid="4087396658768717077">"SS захтев је промењен у обичан позив"</string>
- <string name="stk_cc_ss_to_dial_video" msgid="1324194624384312664">"SS захтев је промењен у видео позив"</string>
- <string name="stk_cc_ss_to_ussd" msgid="8417905193112944760">"SS захтев је промењен у USSD захтев"</string>
- <string name="stk_cc_ss_to_ss" msgid="132040645206514450">"Промењено је у нови SS захтев"</string>
- <string name="notification_phishing_alert_content_description" msgid="494227305355958790">"Упозорење о „пецању“"</string>
- <string name="notification_work_profile_content_description" msgid="5296477955677725799">"Пословни профил"</string>
- <string name="notification_alerted_content_description" msgid="6139691253611265992">"Обавештено"</string>
- <string name="notification_verified_content_description" msgid="6401483602782359391">"Верификовано"</string>
- <string name="expand_button_content_description_collapsed" msgid="3873368935659010279">"Прошири"</string>
- <string name="expand_button_content_description_expanded" msgid="7484217944948667489">"Скупи"</string>
- <string name="expand_action_accessibility" msgid="1947657036871746627">"укључите/искључите проширење"</string>
- <string name="usb_midi_peripheral_name" msgid="490523464968655741">"Android USB порт за периферијске уређаје"</string>
+ <string name="toolbar_collapse_description" msgid="8009920446193610996">"Skupi"</string>
+ <string name="zen_mode_feature_name" msgid="3785547207263754500">"Ne uznemiravaj"</string>
+ <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Odmor"</string>
+ <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"Radni dan uveče"</string>
+ <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Vikend"</string>
+ <string name="zen_mode_default_events_name" msgid="2280682960128512257">"Događaj"</string>
+ <string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Spavanje"</string>
+ <string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> isključuje neke zvuke"</string>
+ <string name="system_error_wipe_data" msgid="5910572292172208493">"Došlo je do internog problema u vezi sa uređajem i možda će biti nestabilan dok ne obavite resetovanje na fabrička podešavanja."</string>
+ <string name="system_error_manufacturer" msgid="703545241070116315">"Došlo je do internog problema u vezi sa uređajem. Potražite detalje od proizvođača."</string>
+ <string name="stk_cc_ussd_to_dial" msgid="3139884150741157610">"USSD zahtev je promenjen u običan poziv"</string>
+ <string name="stk_cc_ussd_to_ss" msgid="4826846653052609738">"USSD zahtev je promenjen u SS zahtev"</string>
+ <string name="stk_cc_ussd_to_ussd" msgid="8343001461299302472">"Promenjeno je u novi USSD zahtev"</string>
+ <string name="stk_cc_ussd_to_dial_video" msgid="429118590323618623">"USSD zahtev je promenjen u video poziv"</string>
+ <string name="stk_cc_ss_to_dial" msgid="4087396658768717077">"SS zahtev je promenjen u običan poziv"</string>
+ <string name="stk_cc_ss_to_dial_video" msgid="1324194624384312664">"SS zahtev je promenjen u video poziv"</string>
+ <string name="stk_cc_ss_to_ussd" msgid="8417905193112944760">"SS zahtev je promenjen u USSD zahtev"</string>
+ <string name="stk_cc_ss_to_ss" msgid="132040645206514450">"Promenjeno je u novi SS zahtev"</string>
+ <string name="notification_phishing_alert_content_description" msgid="494227305355958790">"Upozorenje o „pecanju“"</string>
+ <string name="notification_work_profile_content_description" msgid="5296477955677725799">"Poslovni profil"</string>
+ <string name="notification_alerted_content_description" msgid="6139691253611265992">"Obavešteno"</string>
+ <string name="notification_verified_content_description" msgid="6401483602782359391">"Verifikovano"</string>
+ <string name="expand_button_content_description_collapsed" msgid="3873368935659010279">"Proširi"</string>
+ <string name="expand_button_content_description_expanded" msgid="7484217944948667489">"Skupi"</string>
+ <string name="expand_action_accessibility" msgid="1947657036871746627">"uključite/isključite proširenje"</string>
+ <string name="usb_midi_peripheral_name" msgid="490523464968655741">"Android USB port za periferijske uređaje"</string>
<string name="usb_midi_peripheral_manufacturer_name" msgid="7557148557088787741">"Android"</string>
- <string name="usb_midi_peripheral_product_name" msgid="2836276258480904434">"USB порт за периферијске уређаје"</string>
- <string name="floating_toolbar_open_overflow_description" msgid="2260297653578167367">"Још опција"</string>
- <string name="floating_toolbar_close_overflow_description" msgid="3949818077708138098">"Затвори преклопни мени"</string>
- <string name="maximize_button_text" msgid="4258922519914732645">"Увећај"</string>
- <string name="close_button_text" msgid="10603510034455258">"Затвори"</string>
+ <string name="usb_midi_peripheral_product_name" msgid="2836276258480904434">"USB port za periferijske uređaje"</string>
+ <string name="floating_toolbar_open_overflow_description" msgid="2260297653578167367">"Još opcija"</string>
+ <string name="floating_toolbar_close_overflow_description" msgid="3949818077708138098">"Zatvori preklopni meni"</string>
+ <string name="maximize_button_text" msgid="4258922519914732645">"Uvećaj"</string>
+ <string name="close_button_text" msgid="10603510034455258">"Zatvori"</string>
<string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string>
- <string name="call_notification_answer_action" msgid="5999246836247132937">"Одговори"</string>
- <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string>
- <string name="call_notification_decline_action" msgid="3700345945214000726">"Одбиј"</string>
- <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Прекини везу"</string>
- <string name="call_notification_incoming_text" msgid="6143109825406638201">"Долазни позив"</string>
- <string name="call_notification_ongoing_text" msgid="3880832933933020875">"Позив је у току"</string>
- <string name="call_notification_screening_text" msgid="8396931408268940208">"Проверава се долазни позив"</string>
- <string name="default_notification_channel_label" msgid="3697928973567217330">"Некатегоризовано"</string>
- <string name="importance_from_user" msgid="2782756722448800447">"Ви подешавате важност ових обавештења."</string>
- <string name="importance_from_person" msgid="4235804979664465383">"Ово је важно због људи који учествују."</string>
- <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Прилагођено обавештење о апликацији"</string>
- <string name="user_creation_account_exists" msgid="2239146360099708035">"Желите ли да дозволите да <xliff:g id="APP">%1$s</xliff:g> направи новог корисника са налогом <xliff:g id="ACCOUNT">%2$s</xliff:g> (корисник са тим налогом већ постоји)?"</string>
- <string name="user_creation_adding" msgid="7305185499667958364">"Желите ли да дозволите да <xliff:g id="APP">%1$s</xliff:g> направи новог корисника са налогом <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
- <string name="supervised_user_creation_label" msgid="6884904353827427515">"Додајте корисника под надзором"</string>
- <string name="language_selection_title" msgid="52674936078683285">"Додајте језик"</string>
- <string name="country_selection_title" msgid="5221495687299014379">"Подешавање региона"</string>
- <string name="search_language_hint" msgid="7004225294308793583">"Унесите назив језика"</string>
- <string name="language_picker_section_suggested" msgid="6556199184638990447">"Предложени"</string>
- <string name="language_picker_regions_section_suggested" msgid="6080131515268225316">"Предложено"</string>
- <string name="language_picker_section_suggested_bilingual" msgid="5932198319583556613">"Предложени језици"</string>
- <string name="region_picker_section_suggested_bilingual" msgid="704607569328224133">"Предложени региони"</string>
- <string name="language_picker_section_all" msgid="1985809075777564284">"Сви језици"</string>
- <string name="region_picker_section_all" msgid="756441309928774155">"Сви региони"</string>
- <string name="locale_search_menu" msgid="6258090710176422934">"Претражи"</string>
- <string name="app_suspended_title" msgid="888873445010322650">"Апликација није доступна"</string>
- <string name="app_suspended_default_message" msgid="6451215678552004172">"Апликација <xliff:g id="APP_NAME_0">%1$s</xliff:g> тренутно није доступна. <xliff:g id="APP_NAME_1">%2$s</xliff:g> управља доступношћу."</string>
- <string name="app_suspended_more_details" msgid="211260942831587014">"Сазнајте више"</string>
- <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Опозови паузирање апликације"</string>
- <string name="work_mode_off_title" msgid="961171256005852058">"Укључујете пословне апликације?"</string>
- <string name="work_mode_off_message" msgid="7319580997683623309">"Приступајте пословним апликацијама и обавештењима"</string>
- <string name="work_mode_turn_on" msgid="3662561662475962285">"Укључи"</string>
- <string name="app_blocked_title" msgid="7353262160455028160">"Апликација није доступна"</string>
- <string name="app_blocked_message" msgid="542972921087873023">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> тренутно није доступна."</string>
- <string name="app_streaming_blocked_title" msgid="6090945835898766139">"<xliff:g id="ACTIVITY">%1$s</xliff:g> – није доступно"</string>
- <string name="app_streaming_blocked_title_for_permission_dialog" msgid="4483161748582966785">"Потребна је дозвола"</string>
- <string name="app_streaming_blocked_title_for_camera_dialog" msgid="3935701653713853065">"Камера није доступна"</string>
- <string name="app_streaming_blocked_title_for_fingerprint_dialog" msgid="3516853717714141951">"Наставите на телефону"</string>
- <string name="app_streaming_blocked_title_for_microphone_dialog" msgid="544822455127171206">"Микрофон је недоступан"</string>
- <string name="app_streaming_blocked_title_for_playstore_dialog" msgid="8149823099822897538">"Play продавница није доступна"</string>
- <string name="app_streaming_blocked_title_for_settings_dialog" product="tv" msgid="196994247017450357">"Подешавања Android TV-а су недоступна"</string>
- <string name="app_streaming_blocked_title_for_settings_dialog" product="tablet" msgid="8222710146267948647">"Подешавања таблета су недоступна"</string>
- <string name="app_streaming_blocked_title_for_settings_dialog" product="default" msgid="6895719984375299791">"Подешавања телефона су недоступна"</string>
- <string name="app_streaming_blocked_message" product="tv" msgid="4003011766528814377">"Овој апликацији тренутно не може да се приступи са уређаја <xliff:g id="DEVICE">%1$s</xliff:g>. Пробајте на Android TV уређају."</string>
- <string name="app_streaming_blocked_message" product="tablet" msgid="4242053045964946062">"Овој апликацији тренутно не може да се приступи са уређаја <xliff:g id="DEVICE">%1$s</xliff:g>. Пробајте на таблету."</string>
- <string name="app_streaming_blocked_message" product="default" msgid="6159168735030739398">"Овој апликацији тренутно не може да се приступи са уређаја <xliff:g id="DEVICE">%1$s</xliff:g>. Пробајте на телефону."</string>
- <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="tv" msgid="3470977315395784567">"Ова апликација захтева додатну безбедност. Пробајте на Android TV уређају."</string>
- <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="tablet" msgid="698460091901465092">"Ова апликација захтева додатну безбедност. Пробајте на таблету."</string>
- <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="default" msgid="8552691971910603907">"Ова апликација захтева додатну безбедност. Пробајте на телефону."</string>
- <string name="app_streaming_blocked_message_for_settings_dialog" product="tv" msgid="820334666354451145">"Овој апликацији не може да се приступи са уређаја <xliff:g id="DEVICE">%1$s</xliff:g>. Пробајте на Android TV уређају."</string>
- <string name="app_streaming_blocked_message_for_settings_dialog" product="tablet" msgid="3286849551133045896">"Овој апликацији не може да се приступи са уређаја <xliff:g id="DEVICE">%1$s</xliff:g>. Пробајте на таблету."</string>
- <string name="app_streaming_blocked_message_for_settings_dialog" product="default" msgid="6264287556598916295">"Овој апликацији не може да се приступи са уређаја <xliff:g id="DEVICE">%1$s</xliff:g>. Пробајте на телефону."</string>
- <string name="deprecated_target_sdk_message" msgid="5246906284426844596">"Ова апликација је направљена за старију верзију Android-а. Можда неће радити исправно и не обухвата најновије безбедносне функције и заштите приватности. Проверите да ли има ажурирања или се обратите програмеру апликације."</string>
- <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Потражи ажурирање"</string>
- <string name="new_sms_notification_title" msgid="6528758221319927107">"Имате нове поруке"</string>
- <string name="new_sms_notification_content" msgid="3197949934153460639">"Отворите апликацију за SMS да бисте прегледали"</string>
- <string name="profile_encrypted_title" msgid="9001208667521266472">"Неке функције су можда ограничене"</string>
- <string name="profile_encrypted_detail" msgid="5279730442756849055">"Пословни профил је закључан"</string>
- <string name="profile_encrypted_message" msgid="1128512616293157802">"Додиром откљ. пословни профил"</string>
- <string name="usb_mtp_launch_notification_title" msgid="774319638256707227">"Повезано је са производом <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string>
- <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"Додирните за преглед датотека"</string>
- <string name="pin_target" msgid="8036028973110156895">"Закачи"</string>
- <string name="pin_specific_target" msgid="7824671240625957415">"Закачи апликацију <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="unpin_target" msgid="3963318576590204447">"Откачи"</string>
- <string name="unpin_specific_target" msgid="3859828252160908146">"Откачи апликацију <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="app_info" msgid="6113278084877079851">"Информације о апликацији"</string>
+ <string name="call_notification_answer_action" msgid="5999246836247132937">"Odgovori"</string>
+ <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string>
+ <string name="call_notification_decline_action" msgid="3700345945214000726">"Odbij"</string>
+ <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini vezu"</string>
+ <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dolazni poziv"</string>
+ <string name="call_notification_ongoing_text" msgid="3880832933933020875">"Poziv je u toku"</string>
+ <string name="call_notification_screening_text" msgid="8396931408268940208">"Proverava se dolazni poziv"</string>
+ <string name="default_notification_channel_label" msgid="3697928973567217330">"Nekategorizovano"</string>
+ <string name="importance_from_user" msgid="2782756722448800447">"Vi podešavate važnost ovih obaveštenja."</string>
+ <string name="importance_from_person" msgid="4235804979664465383">"Ovo je važno zbog ljudi koji učestvuju."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Prilagođeno obaveštenje o aplikaciji"</string>
+ <string name="user_creation_account_exists" msgid="2239146360099708035">"Želite li da dozvolite da <xliff:g id="APP">%1$s</xliff:g> napravi novog korisnika sa nalogom <xliff:g id="ACCOUNT">%2$s</xliff:g> (korisnik sa tim nalogom već postoji)?"</string>
+ <string name="user_creation_adding" msgid="7305185499667958364">"Želite li da dozvolite da <xliff:g id="APP">%1$s</xliff:g> napravi novog korisnika sa nalogom <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
+ <string name="supervised_user_creation_label" msgid="6884904353827427515">"Dodajte korisnika pod nadzorom"</string>
+ <string name="language_selection_title" msgid="52674936078683285">"Dodajte jezik"</string>
+ <string name="country_selection_title" msgid="5221495687299014379">"Podešavanje regiona"</string>
+ <string name="search_language_hint" msgid="7004225294308793583">"Unesite naziv jezika"</string>
+ <string name="language_picker_section_suggested" msgid="6556199184638990447">"Predloženi"</string>
+ <string name="language_picker_regions_section_suggested" msgid="6080131515268225316">"Predloženo"</string>
+ <string name="language_picker_section_suggested_bilingual" msgid="5932198319583556613">"Predloženi jezici"</string>
+ <string name="region_picker_section_suggested_bilingual" msgid="704607569328224133">"Predloženi regioni"</string>
+ <string name="language_picker_section_all" msgid="1985809075777564284">"Svi jezici"</string>
+ <string name="region_picker_section_all" msgid="756441309928774155">"Svi regioni"</string>
+ <string name="locale_search_menu" msgid="6258090710176422934">"Pretraži"</string>
+ <string name="app_suspended_title" msgid="888873445010322650">"Aplikacija nije dostupna"</string>
+ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno nije dostupna. <xliff:g id="APP_NAME_1">%2$s</xliff:g> upravlja dostupnošću."</string>
+ <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string>
+ <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Opozovi pauziranje aplikacije"</string>
+ <string name="work_mode_off_title" msgid="961171256005852058">"Uključujete poslovne aplikacije?"</string>
+ <string name="work_mode_off_message" msgid="7319580997683623309">"Pristupajte poslovnim aplikacijama i obaveštenjima"</string>
+ <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string>
+ <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string>
+ <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno nije dostupna."</string>
+ <string name="app_streaming_blocked_title" msgid="6090945835898766139">"<xliff:g id="ACTIVITY">%1$s</xliff:g> – nije dostupno"</string>
+ <string name="app_streaming_blocked_title_for_permission_dialog" msgid="4483161748582966785">"Potrebna je dozvola"</string>
+ <string name="app_streaming_blocked_title_for_camera_dialog" msgid="3935701653713853065">"Kamera nije dostupna"</string>
+ <string name="app_streaming_blocked_title_for_fingerprint_dialog" msgid="3516853717714141951">"Nastavite na telefonu"</string>
+ <string name="app_streaming_blocked_title_for_microphone_dialog" msgid="544822455127171206">"Mikrofon je nedostupan"</string>
+ <string name="app_streaming_blocked_title_for_playstore_dialog" msgid="8149823099822897538">"Play prodavnica nije dostupna"</string>
+ <string name="app_streaming_blocked_title_for_settings_dialog" product="tv" msgid="196994247017450357">"Podešavanja Android TV-a su nedostupna"</string>
+ <string name="app_streaming_blocked_title_for_settings_dialog" product="tablet" msgid="8222710146267948647">"Podešavanja tableta su nedostupna"</string>
+ <string name="app_streaming_blocked_title_for_settings_dialog" product="default" msgid="6895719984375299791">"Podešavanja telefona su nedostupna"</string>
+ <string name="app_streaming_blocked_message" product="tv" msgid="4003011766528814377">"Ovoj aplikaciji trenutno ne može da se pristupi sa uređaja <xliff:g id="DEVICE">%1$s</xliff:g>. Probajte na Android TV uređaju."</string>
+ <string name="app_streaming_blocked_message" product="tablet" msgid="4242053045964946062">"Ovoj aplikaciji trenutno ne može da se pristupi sa uređaja <xliff:g id="DEVICE">%1$s</xliff:g>. Probajte na tabletu."</string>
+ <string name="app_streaming_blocked_message" product="default" msgid="6159168735030739398">"Ovoj aplikaciji trenutno ne može da se pristupi sa uređaja <xliff:g id="DEVICE">%1$s</xliff:g>. Probajte na telefonu."</string>
+ <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="tv" msgid="3470977315395784567">"Ova aplikacija zahteva dodatnu bezbednost. Probajte na Android TV uređaju."</string>
+ <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="tablet" msgid="698460091901465092">"Ova aplikacija zahteva dodatnu bezbednost. Probajte na tabletu."</string>
+ <string name="app_streaming_blocked_message_for_fingerprint_dialog" product="default" msgid="8552691971910603907">"Ova aplikacija zahteva dodatnu bezbednost. Probajte na telefonu."</string>
+ <string name="app_streaming_blocked_message_for_settings_dialog" product="tv" msgid="820334666354451145">"Ovoj aplikaciji ne može da se pristupi sa uređaja <xliff:g id="DEVICE">%1$s</xliff:g>. Probajte na Android TV uređaju."</string>
+ <string name="app_streaming_blocked_message_for_settings_dialog" product="tablet" msgid="3286849551133045896">"Ovoj aplikaciji ne može da se pristupi sa uređaja <xliff:g id="DEVICE">%1$s</xliff:g>. Probajte na tabletu."</string>
+ <string name="app_streaming_blocked_message_for_settings_dialog" product="default" msgid="6264287556598916295">"Ovoj aplikaciji ne može da se pristupi sa uređaja <xliff:g id="DEVICE">%1$s</xliff:g>. Probajte na telefonu."</string>
+ <string name="deprecated_target_sdk_message" msgid="5246906284426844596">"Ova aplikacija je napravljena za stariju verziju Android-a. Možda neće raditi ispravno i ne obuhvata najnovije bezbednosne funkcije i zaštite privatnosti. Proverite da li ima ažuriranja ili se obratite programeru aplikacije."</string>
+ <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Potraži ažuriranje"</string>
+ <string name="new_sms_notification_title" msgid="6528758221319927107">"Imate nove poruke"</string>
+ <string name="new_sms_notification_content" msgid="3197949934153460639">"Otvorite aplikaciju za SMS da biste pregledali"</string>
+ <string name="profile_encrypted_title" msgid="9001208667521266472">"Neke funkcije su možda ograničene"</string>
+ <string name="profile_encrypted_detail" msgid="5279730442756849055">"Poslovni profil je zaključan"</string>
+ <string name="profile_encrypted_message" msgid="1128512616293157802">"Dodirom otklj. poslovni profil"</string>
+ <string name="usb_mtp_launch_notification_title" msgid="774319638256707227">"Povezano je sa proizvodom <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string>
+ <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"Dodirnite za pregled datoteka"</string>
+ <string name="pin_target" msgid="8036028973110156895">"Zakači"</string>
+ <string name="pin_specific_target" msgid="7824671240625957415">"Zakači aplikaciju <xliff:g id="LABEL">%1$s</xliff:g>"</string>
+ <string name="unpin_target" msgid="3963318576590204447">"Otkači"</string>
+ <string name="unpin_specific_target" msgid="3859828252160908146">"Otkači aplikaciju <xliff:g id="LABEL">%1$s</xliff:g>"</string>
+ <string name="app_info" msgid="6113278084877079851">"Informacije o aplikaciji"</string>
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
- <string name="demo_starting_message" msgid="6577581216125805905">"Покрећемо демонстрацију..."</string>
- <string name="demo_restarting_message" msgid="1160053183701746766">"Ресетујемо уређај..."</string>
- <string name="suspended_widget_accessibility" msgid="6331451091851326101">"Виџет <xliff:g id="LABEL">%1$s</xliff:g> је онемогућен"</string>
- <string name="conference_call" msgid="5731633152336490471">"Конференцијски позив"</string>
- <string name="tooltip_popup_title" msgid="7863719020269945722">"Објашњење"</string>
- <string name="app_category_game" msgid="4534216074910244790">"Игре"</string>
- <string name="app_category_audio" msgid="8296029904794676222">"Музика и аудио"</string>
- <string name="app_category_video" msgid="2590183854839565814">"Филмови и видео"</string>
- <string name="app_category_image" msgid="7307840291864213007">"Слике"</string>
- <string name="app_category_social" msgid="2278269325488344054">"Друштвене мреже и комуникација"</string>
- <string name="app_category_news" msgid="1172762719574964544">"Новости и часописи"</string>
- <string name="app_category_maps" msgid="6395725487922533156">"Мапе и навигација"</string>
- <string name="app_category_productivity" msgid="1844422703029557883">"Продуктивност"</string>
- <string name="app_category_accessibility" msgid="6643521607848547683">"Приступачност"</string>
- <string name="device_storage_monitor_notification_channel" msgid="5164244565844470758">"Меморијски простор уређаја"</string>
- <string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"Отклањање грешака са USB-а"</string>
- <string name="time_picker_hour_label" msgid="4208590187662336864">"сат"</string>
- <string name="time_picker_minute_label" msgid="8307452311269824553">"минут"</string>
- <string name="time_picker_header_text" msgid="9073802285051516688">"Подесите време"</string>
- <string name="time_picker_input_error" msgid="8386271930742451034">"Унесите важеће време"</string>
- <string name="time_picker_prompt_label" msgid="303588544656363889">"Унесите време"</string>
- <string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"Пређите у режим уноса текста ради уноса времена."</string>
- <string name="time_picker_radial_mode_description" msgid="1222342577115016953">"Пређите у режим сата ради уноса времена."</string>
- <string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"Опције аутоматског попуњавања"</string>
- <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Сачувајте за аутоматско попуњавање"</string>
- <string name="autofill_error_cannot_autofill" msgid="6528827648643138596">"Садржај не може аутоматски да се попуни"</string>
- <string name="autofill_picker_no_suggestions" msgid="1076022650427481509">"Нема аутоматски попуњених предлога"</string>
- <string name="autofill_picker_some_suggestions" msgid="5560549696296202701">"{count,plural, =1{Један аутоматски попуњен предлог}one{# аутоматски попуњен предлог}few{# аутоматски попуњена предлога}other{# аутоматски попуњених предлога}}"</string>
- <string name="autofill_save_title" msgid="7719802414283739775">"Желите ли да сачувате у услузи "<b>"<xliff:g id="LABEL">%1$s</xliff:g>"</b>"?"</string>
- <string name="autofill_save_title_with_type" msgid="3002460014579799605">"Желите ли да сачувате ставку <xliff:g id="TYPE">%1$s</xliff:g> у услузи "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"?"</string>
- <string name="autofill_save_title_with_2types" msgid="3783270967447869241">"Желите ли да сачувате ставке <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> у услузи "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"?"</string>
- <string name="autofill_save_title_with_3types" msgid="6598228952100102578">"Желите ли да сачувате ставке <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> у услузи "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>"?"</string>
- <string name="autofill_update_title" msgid="3630695947047069136">"Желите ли да ажурирате у услузи "<b>"<xliff:g id="LABEL">%1$s</xliff:g>"</b>"?"</string>
- <string name="autofill_update_title_with_type" msgid="5264152633488495704">"Желите ли да ажурирате ставку <xliff:g id="TYPE">%1$s</xliff:g> у услузи "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"?"</string>
- <string name="autofill_update_title_with_2types" msgid="1797514386321086273">"Желите ли да ажурирате ставке <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> у услузи "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"?"</string>
- <string name="autofill_update_title_with_3types" msgid="1312232153076212291">"Желите ли да ажурирате ове ставке у услузи "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>": <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g>?"</string>
- <string name="autofill_save_yes" msgid="8035743017382012850">"Сачувај"</string>
- <string name="autofill_save_no" msgid="9212826374207023544">"Не, хвала"</string>
- <string name="autofill_save_notnow" msgid="2853932672029024195">"Не сада"</string>
- <string name="autofill_save_never" msgid="6821841919831402526">"Никада"</string>
- <string name="autofill_update_yes" msgid="4608662968996874445">"Ажурирај"</string>
- <string name="autofill_continue_yes" msgid="7914985605534510385">"Настави"</string>
- <string name="autofill_save_type_password" msgid="5624528786144539944">"лозинка"</string>
- <string name="autofill_save_type_address" msgid="3111006395818252885">"адреса"</string>
- <string name="autofill_save_type_credit_card" msgid="3583795235862046693">"кредитна картица"</string>
- <string name="autofill_save_type_debit_card" msgid="3169397504133097468">"дебитна картица"</string>
- <string name="autofill_save_type_payment_card" msgid="6555012156728690856">"платна картица"</string>
- <string name="autofill_save_type_generic_card" msgid="1019367283921448608">"картица"</string>
- <string name="autofill_save_type_username" msgid="1018816929884640882">"корисничко име"</string>
- <string name="autofill_save_type_email_address" msgid="1303262336895591924">"имејл адреса"</string>
- <string name="etws_primary_default_message_earthquake" msgid="8401079517718280669">"Останите мирни и потражите склониште у околини."</string>
- <string name="etws_primary_default_message_tsunami" msgid="5828171463387976279">"Одмах се склоните из приобалних региона и области поред река на неко безбедније место, на пример, на неко узвишење."</string>
- <string name="etws_primary_default_message_earthquake_and_tsunami" msgid="4888224011071875068">"Останите мирни и потражите склониште у околини."</string>
- <string name="etws_primary_default_message_test" msgid="4583367373909549421">"Тестирање порука у хитним случајевима"</string>
- <string name="notification_reply_button_accessibility" msgid="5235776156579456126">"Одговори"</string>
+ <string name="demo_starting_message" msgid="6577581216125805905">"Pokrećemo demonstraciju..."</string>
+ <string name="demo_restarting_message" msgid="1160053183701746766">"Resetujemo uređaj..."</string>
+ <string name="suspended_widget_accessibility" msgid="6331451091851326101">"Vidžet <xliff:g id="LABEL">%1$s</xliff:g> je onemogućen"</string>
+ <string name="conference_call" msgid="5731633152336490471">"Konferencijski poziv"</string>
+ <string name="tooltip_popup_title" msgid="7863719020269945722">"Objašnjenje"</string>
+ <string name="app_category_game" msgid="4534216074910244790">"Igre"</string>
+ <string name="app_category_audio" msgid="8296029904794676222">"Muzika i audio"</string>
+ <string name="app_category_video" msgid="2590183854839565814">"Filmovi i video"</string>
+ <string name="app_category_image" msgid="7307840291864213007">"Slike"</string>
+ <string name="app_category_social" msgid="2278269325488344054">"Društvene mreže i komunikacija"</string>
+ <string name="app_category_news" msgid="1172762719574964544">"Novosti i časopisi"</string>
+ <string name="app_category_maps" msgid="6395725487922533156">"Mape i navigacija"</string>
+ <string name="app_category_productivity" msgid="1844422703029557883">"Produktivnost"</string>
+ <string name="app_category_accessibility" msgid="6643521607848547683">"Pristupačnost"</string>
+ <string name="device_storage_monitor_notification_channel" msgid="5164244565844470758">"Memorijski prostor uređaja"</string>
+ <string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"Otklanjanje grešaka sa USB-a"</string>
+ <string name="time_picker_hour_label" msgid="4208590187662336864">"sat"</string>
+ <string name="time_picker_minute_label" msgid="8307452311269824553">"minut"</string>
+ <string name="time_picker_header_text" msgid="9073802285051516688">"Podesite vreme"</string>
+ <string name="time_picker_input_error" msgid="8386271930742451034">"Unesite važeće vreme"</string>
+ <string name="time_picker_prompt_label" msgid="303588544656363889">"Unesite vreme"</string>
+ <string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"Pređite u režim unosa teksta radi unosa vremena."</string>
+ <string name="time_picker_radial_mode_description" msgid="1222342577115016953">"Pređite u režim sata radi unosa vremena."</string>
+ <string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"Opcije automatskog popunjavanja"</string>
+ <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Sačuvajte za automatsko popunjavanje"</string>
+ <string name="autofill_error_cannot_autofill" msgid="6528827648643138596">"Sadržaj ne može automatski da se popuni"</string>
+ <string name="autofill_picker_no_suggestions" msgid="1076022650427481509">"Nema automatski popunjenih predloga"</string>
+ <string name="autofill_picker_some_suggestions" msgid="5560549696296202701">"{count,plural, =1{Jedan automatski popunjen predlog}one{# automatski popunjen predlog}few{# automatski popunjena predloga}other{# automatski popunjenih predloga}}"</string>
+ <string name="autofill_save_title" msgid="7719802414283739775">"Želite li da sačuvate u usluzi "<b>"<xliff:g id="LABEL">%1$s</xliff:g>"</b>"?"</string>
+ <string name="autofill_save_title_with_type" msgid="3002460014579799605">"Želite li da sačuvate stavku <xliff:g id="TYPE">%1$s</xliff:g> u usluzi "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"?"</string>
+ <string name="autofill_save_title_with_2types" msgid="3783270967447869241">"Želite li da sačuvate stavke <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> u usluzi "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"?"</string>
+ <string name="autofill_save_title_with_3types" msgid="6598228952100102578">"Želite li da sačuvate stavke <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> u usluzi "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>"?"</string>
+ <string name="autofill_update_title" msgid="3630695947047069136">"Želite li da ažurirate u usluzi "<b>"<xliff:g id="LABEL">%1$s</xliff:g>"</b>"?"</string>
+ <string name="autofill_update_title_with_type" msgid="5264152633488495704">"Želite li da ažurirate stavku <xliff:g id="TYPE">%1$s</xliff:g> u usluzi "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"?"</string>
+ <string name="autofill_update_title_with_2types" msgid="1797514386321086273">"Želite li da ažurirate stavke <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> u usluzi "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"?"</string>
+ <string name="autofill_update_title_with_3types" msgid="1312232153076212291">"Želite li da ažurirate ove stavke u usluzi "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>": <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g>?"</string>
+ <string name="autofill_save_yes" msgid="8035743017382012850">"Sačuvaj"</string>
+ <string name="autofill_save_no" msgid="9212826374207023544">"Ne, hvala"</string>
+ <string name="autofill_save_notnow" msgid="2853932672029024195">"Ne sada"</string>
+ <string name="autofill_save_never" msgid="6821841919831402526">"Nikada"</string>
+ <string name="autofill_update_yes" msgid="4608662968996874445">"Ažuriraj"</string>
+ <string name="autofill_continue_yes" msgid="7914985605534510385">"Nastavi"</string>
+ <string name="autofill_save_type_password" msgid="5624528786144539944">"lozinka"</string>
+ <string name="autofill_save_type_address" msgid="3111006395818252885">"adresa"</string>
+ <string name="autofill_save_type_credit_card" msgid="3583795235862046693">"kreditna kartica"</string>
+ <string name="autofill_save_type_debit_card" msgid="3169397504133097468">"debitna kartica"</string>
+ <string name="autofill_save_type_payment_card" msgid="6555012156728690856">"platna kartica"</string>
+ <string name="autofill_save_type_generic_card" msgid="1019367283921448608">"kartica"</string>
+ <string name="autofill_save_type_username" msgid="1018816929884640882">"korisničko ime"</string>
+ <string name="autofill_save_type_email_address" msgid="1303262336895591924">"imejl adresa"</string>
+ <string name="etws_primary_default_message_earthquake" msgid="8401079517718280669">"Ostanite mirni i potražite sklonište u okolini."</string>
+ <string name="etws_primary_default_message_tsunami" msgid="5828171463387976279">"Odmah se sklonite iz priobalnih regiona i oblasti pored reka na neko bezbednije mesto, na primer, na neko uzvišenje."</string>
+ <string name="etws_primary_default_message_earthquake_and_tsunami" msgid="4888224011071875068">"Ostanite mirni i potražite sklonište u okolini."</string>
+ <string name="etws_primary_default_message_test" msgid="4583367373909549421">"Testiranje poruka u hitnim slučajevima"</string>
+ <string name="notification_reply_button_accessibility" msgid="5235776156579456126">"Odgovori"</string>
<string name="etws_primary_default_message_others" msgid="7958161706019130739"></string>
- <string name="mmcc_authentication_reject" msgid="4891965994643876369">"SIM картица није прилагођена за гласовне услуге"</string>
- <string name="mmcc_imsi_unknown_in_hlr" msgid="227760698553988751">"SIM картица није подешена за гласовне услуге"</string>
- <string name="mmcc_illegal_ms" msgid="7509650265233909445">"SIM картица није прилагођена за гласовне услуге"</string>
- <string name="mmcc_illegal_me" msgid="6505557881889904915">"Телефон није прилагођен за гласовне услуге"</string>
- <string name="mmcc_authentication_reject_msim_template" msgid="4480853038909922153">"SIM <xliff:g id="SIMNUMBER">%d</xliff:g> није дозвољен"</string>
- <string name="mmcc_imsi_unknown_in_hlr_msim_template" msgid="3688508325248599657">"SIM <xliff:g id="SIMNUMBER">%d</xliff:g> није подешен"</string>
- <string name="mmcc_illegal_ms_msim_template" msgid="832644375774599327">"SIM <xliff:g id="SIMNUMBER">%d</xliff:g> није дозвољен"</string>
- <string name="mmcc_illegal_me_msim_template" msgid="4802735138861422802">"SIM <xliff:g id="SIMNUMBER">%d</xliff:g> није дозвољен"</string>
- <string name="popup_window_default_title" msgid="6907717596694826919">"Искачући прозор"</string>
- <string name="slice_more_content" msgid="3377367737876888459">"и још <xliff:g id="NUMBER">%1$d</xliff:g>"</string>
- <string name="shortcut_restored_on_lower_version" msgid="9206301954024286063">"Апликација је враћена на старију верзију или није компатибилна са овом пречицом"</string>
- <string name="shortcut_restore_not_supported" msgid="4763198938588468400">"Враћање пречице није успело јер апликација не подржава прављење резервне копије и враћање"</string>
- <string name="shortcut_restore_signature_mismatch" msgid="579345304221605479">"Враћање пречице није успело јер се потписи апликација не подударају"</string>
- <string name="shortcut_restore_unknown_issue" msgid="2478146134395982154">"Враћање пречице није успело"</string>
- <string name="shortcut_disabled_reason_unknown" msgid="753074793553599166">"Пречица је онемогућена"</string>
- <string name="harmful_app_warning_uninstall" msgid="6472912975664191772">"ДЕИНСТАЛИРАЈ"</string>
- <string name="harmful_app_warning_open_anyway" msgid="5963657791740211807">"ИПАК ОТВОРИ"</string>
- <string name="harmful_app_warning_title" msgid="8794823880881113856">"Откривена је штетна апликација"</string>
- <string name="slices_permission_request" msgid="3677129866636153406">"Апликација <xliff:g id="APP_0">%1$s</xliff:g> жели да приказује исечке из апликације <xliff:g id="APP_2">%2$s</xliff:g>"</string>
- <string name="screenshot_edit" msgid="7408934887203689207">"Измени"</string>
- <string name="volume_dialog_ringer_guidance_vibrate" msgid="2055927873175228519">"Вибрација за позиве и обавештења је укључена"</string>
- <string name="volume_dialog_ringer_guidance_silent" msgid="1011246774949993783">"Мелодија звона за позиве и обавештење је искључена"</string>
- <string name="notification_channel_system_changes" msgid="2462010596920209678">"Системске промене"</string>
- <string name="notification_channel_do_not_disturb" msgid="7832584281883687653">"Не узнемиравај"</string>
- <string name="zen_upgrade_notification_visd_title" msgid="2001148984371968620">"Ново: Режим Не узнемиравај крије обавештења"</string>
- <string name="zen_upgrade_notification_visd_content" msgid="3683314609114134946">"Додирните да бисте сазнали више и променили подешавање."</string>
- <string name="zen_upgrade_notification_title" msgid="8198167698095298717">"Режим Не узнемиравај је промењен"</string>
- <string name="zen_upgrade_notification_content" msgid="5228458567180124005">"Додирните да бисте проверили шта је блокирано."</string>
- <string name="review_notification_settings_title" msgid="5102557424459810820">"Прегледајте подешавања обавештења"</string>
- <string name="review_notification_settings_text" msgid="5916244866751849279">"Од Android-а 13 апликације које инсталирате морају да имају дозволу за слање обавештења. Додирните да бисте променили ову дозволу за постојеће апликације."</string>
- <string name="review_notification_settings_remind_me_action" msgid="1081081018678480907">"Подсети ме касније"</string>
- <string name="review_notification_settings_dismiss" msgid="4160916504616428294">"Одбаци"</string>
- <string name="notification_app_name_system" msgid="3045196791746735601">"Систем"</string>
- <string name="notification_app_name_settings" msgid="9088548800899952531">"Подешавања"</string>
- <string name="notification_appops_camera_active" msgid="8177643089272352083">"Камера"</string>
- <string name="notification_appops_microphone_active" msgid="581333393214739332">"Микрофон"</string>
- <string name="notification_appops_overlay_active" msgid="5571732753262836481">"приказује се на екрану док користите друге апликације"</string>
- <string name="notification_feedback_indicator" msgid="663476517711323016">"Пошаљите повратне информације"</string>
- <string name="notification_feedback_indicator_alerted" msgid="6552871804121942099">"Ово обавештење је унапређено у Подразумевано. Додирните да бисте навели повратне информације."</string>
- <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Ово обавештење је деградирано у Нечујно. Додирните да бисте навели повратне информације."</string>
- <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Ово обавештење је рангирано више. Додирните да бисте навели повратне информације."</string>
- <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Ово обавештење је рангирано ниже. Додирните да бисте навели повратне информације."</string>
- <string name="nas_upgrade_notification_title" msgid="8436359459300146555">"Побољшана обавештења"</string>
- <string name="nas_upgrade_notification_content" msgid="5157550369837103337">"Предложене радње и одговоре сада добијате помоћу побољшаних обавештења. Прилагодљива обавештења за Android више нису подржана."</string>
- <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"Потврди"</string>
- <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Искључи"</string>
- <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Сазнајте више"</string>
- <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Побољшана обавештења су заменила Android прилагодљива обавештења у Android-у 12. Ова функција показује предложене радње и одговоре, и организује обавештења.\n\nПобољшана обавештења могу да приступају садржају обавештења, укључујући личне податке попут имена контаката и порука. Ова функција може и да одбацује обавештења или да одговара на њих, на пример, да се јавља на телефонске позиве и контролише режим Не узнемиравај."</string>
- <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Обавештење о информацијама Рутинског режима"</string>
- <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Уштеда батерије је укључена"</string>
- <string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Смањује се потрошња батерије да би се продужило њено трајање"</string>
- <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Уштеда батерије"</string>
- <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Уштеда батерије је искључена"</string>
- <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Батерија телефона је довољно напуњена. Функције више нису ограничене."</string>
- <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"Батерија таблета је довољно напуњена. Функције више нису ограничене."</string>
- <string name="battery_saver_charged_notification_summary" product="device" msgid="1031562417867646649">"Батерија уређаја је довољно напуњена. Функције више нису ограничене."</string>
- <string name="mime_type_folder" msgid="2203536499348787650">"Фолдер"</string>
- <string name="mime_type_apk" msgid="3168784749499623902">"Android апликација"</string>
- <string name="mime_type_generic" msgid="4606589110116560228">"Датотека"</string>
- <string name="mime_type_generic_ext" msgid="9220220924380909486">"<xliff:g id="EXTENSION">%1$s</xliff:g> датотека"</string>
- <string name="mime_type_audio" msgid="4933450584432509875">"Аудио датотека"</string>
- <string name="mime_type_audio_ext" msgid="2615491023840514797">"<xliff:g id="EXTENSION">%1$s</xliff:g> аудио датотека"</string>
- <string name="mime_type_video" msgid="7071965726609428150">"Видео"</string>
- <string name="mime_type_video_ext" msgid="185438149044230136">"<xliff:g id="EXTENSION">%1$s</xliff:g> видео"</string>
- <string name="mime_type_image" msgid="2134307276151645257">"Слика"</string>
- <string name="mime_type_image_ext" msgid="5743552697560999471">"<xliff:g id="EXTENSION">%1$s</xliff:g> слика"</string>
- <string name="mime_type_compressed" msgid="8737300936080662063">"Архива"</string>
- <string name="mime_type_compressed_ext" msgid="4775627287994475737">"<xliff:g id="EXTENSION">%1$s</xliff:g> архива"</string>
- <string name="mime_type_document" msgid="3737256839487088554">"Документ"</string>
- <string name="mime_type_document_ext" msgid="2398002765046677311">"<xliff:g id="EXTENSION">%1$s</xliff:g> документ"</string>
- <string name="mime_type_spreadsheet" msgid="8188407519131275838">"Табела"</string>
- <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"<xliff:g id="EXTENSION">%1$s</xliff:g> табела"</string>
- <string name="mime_type_presentation" msgid="1145384236788242075">"Презентација"</string>
- <string name="mime_type_presentation_ext" msgid="8761049335564371468">"<xliff:g id="EXTENSION">%1$s</xliff:g> презентација"</string>
- <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"Bluetooth остаје укључен током режима рада у авиону"</string>
- <string name="car_loading_profile" msgid="8219978381196748070">"Учитава се"</string>
- <string name="file_count" msgid="3220018595056126969">"{count,plural, =1{{file_name} + # фајл}one{{file_name} + # фајл}few{{file_name} + # фајла}other{{file_name} + # фајлова}}"</string>
- <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Нема препоручених људи за дељење"</string>
- <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Листа апликација"</string>
- <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ова апликација нема дозволу за снимање, али би могла да снима звук помоћу овог USB уређаја."</string>
- <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Почетак"</string>
- <string name="accessibility_system_action_back_label" msgid="4205361367345537608">"Назад"</string>
- <string name="accessibility_system_action_recents_label" msgid="4782875610281649728">"Недавне апликације"</string>
- <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Обавештења"</string>
- <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Брза подешавања"</string>
- <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Дијалог напајања"</string>
- <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Закључавање екрана"</string>
- <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Снимак екрана"</string>
- <string name="accessibility_system_action_headset_hook_label" msgid="8524691721287425468">"Кука за слушалице"</string>
- <string name="accessibility_system_action_on_screen_a11y_shortcut_label" msgid="8488701469459210309">"Пречица за приступачност на екрану"</string>
- <string name="accessibility_system_action_on_screen_a11y_shortcut_chooser_label" msgid="1057878690209817886">"Алатка за бирање пречица за приступачност на екрану"</string>
- <string name="accessibility_system_action_hardware_a11y_shortcut_label" msgid="5764644187715255107">"Пречица за приступачност"</string>
- <string name="accessibility_system_action_dismiss_notification_shade" msgid="8931637495533770352">"Одбаци траку са обавештењима"</string>
- <string name="accessibility_system_action_dpad_up_label" msgid="1029042950229333782">"нагоре на D-pad-у"</string>
- <string name="accessibility_system_action_dpad_down_label" msgid="3441918448624921461">"надоле на D-pad-у"</string>
- <string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"налево на D-pad-у"</string>
- <string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"надесно на D-pad-у"</string>
- <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"центар на D-pad-у"</string>
- <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Трака са насловима апликације <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
- <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> је додат у сегмент ОГРАНИЧЕНО"</string>
+ <string name="mmcc_authentication_reject" msgid="4891965994643876369">"SIM kartica nije prilagođena za glasovne usluge"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="227760698553988751">"SIM kartica nije podešena za glasovne usluge"</string>
+ <string name="mmcc_illegal_ms" msgid="7509650265233909445">"SIM kartica nije prilagođena za glasovne usluge"</string>
+ <string name="mmcc_illegal_me" msgid="6505557881889904915">"Telefon nije prilagođen za glasovne usluge"</string>
+ <string name="mmcc_authentication_reject_msim_template" msgid="4480853038909922153">"SIM <xliff:g id="SIMNUMBER">%d</xliff:g> nije dozvoljen"</string>
+ <string name="mmcc_imsi_unknown_in_hlr_msim_template" msgid="3688508325248599657">"SIM <xliff:g id="SIMNUMBER">%d</xliff:g> nije podešen"</string>
+ <string name="mmcc_illegal_ms_msim_template" msgid="832644375774599327">"SIM <xliff:g id="SIMNUMBER">%d</xliff:g> nije dozvoljen"</string>
+ <string name="mmcc_illegal_me_msim_template" msgid="4802735138861422802">"SIM <xliff:g id="SIMNUMBER">%d</xliff:g> nije dozvoljen"</string>
+ <string name="popup_window_default_title" msgid="6907717596694826919">"Iskačući prozor"</string>
+ <string name="slice_more_content" msgid="3377367737876888459">"i još <xliff:g id="NUMBER">%1$d</xliff:g>"</string>
+ <string name="shortcut_restored_on_lower_version" msgid="9206301954024286063">"Aplikacija je vraćena na stariju verziju ili nije kompatibilna sa ovom prečicom"</string>
+ <string name="shortcut_restore_not_supported" msgid="4763198938588468400">"Vraćanje prečice nije uspelo jer aplikacija ne podržava pravljenje rezervne kopije i vraćanje"</string>
+ <string name="shortcut_restore_signature_mismatch" msgid="579345304221605479">"Vraćanje prečice nije uspelo jer se potpisi aplikacija ne podudaraju"</string>
+ <string name="shortcut_restore_unknown_issue" msgid="2478146134395982154">"Vraćanje prečice nije uspelo"</string>
+ <string name="shortcut_disabled_reason_unknown" msgid="753074793553599166">"Prečica je onemogućena"</string>
+ <string name="harmful_app_warning_uninstall" msgid="6472912975664191772">"DEINSTALIRAJ"</string>
+ <string name="harmful_app_warning_open_anyway" msgid="5963657791740211807">"IPAK OTVORI"</string>
+ <string name="harmful_app_warning_title" msgid="8794823880881113856">"Otkrivena je štetna aplikacija"</string>
+ <string name="slices_permission_request" msgid="3677129866636153406">"Aplikacija <xliff:g id="APP_0">%1$s</xliff:g> želi da prikazuje isečke iz aplikacije <xliff:g id="APP_2">%2$s</xliff:g>"</string>
+ <string name="screenshot_edit" msgid="7408934887203689207">"Izmeni"</string>
+ <string name="volume_dialog_ringer_guidance_vibrate" msgid="2055927873175228519">"Vibracija za pozive i obaveštenja je uključena"</string>
+ <string name="volume_dialog_ringer_guidance_silent" msgid="1011246774949993783">"Melodija zvona za pozive i obaveštenje je isključena"</string>
+ <string name="notification_channel_system_changes" msgid="2462010596920209678">"Sistemske promene"</string>
+ <string name="notification_channel_do_not_disturb" msgid="7832584281883687653">"Ne uznemiravaj"</string>
+ <string name="zen_upgrade_notification_visd_title" msgid="2001148984371968620">"Novo: Režim Ne uznemiravaj krije obaveštenja"</string>
+ <string name="zen_upgrade_notification_visd_content" msgid="3683314609114134946">"Dodirnite da biste saznali više i promenili podešavanje."</string>
+ <string name="zen_upgrade_notification_title" msgid="8198167698095298717">"Režim Ne uznemiravaj je promenjen"</string>
+ <string name="zen_upgrade_notification_content" msgid="5228458567180124005">"Dodirnite da biste proverili šta je blokirano."</string>
+ <string name="review_notification_settings_title" msgid="5102557424459810820">"Pregledajte podešavanja obaveštenja"</string>
+ <string name="review_notification_settings_text" msgid="5916244866751849279">"Od Android-a 13 aplikacije koje instalirate moraju da imaju dozvolu za slanje obaveštenja. Dodirnite da biste promenili ovu dozvolu za postojeće aplikacije."</string>
+ <string name="review_notification_settings_remind_me_action" msgid="1081081018678480907">"Podseti me kasnije"</string>
+ <string name="review_notification_settings_dismiss" msgid="4160916504616428294">"Odbaci"</string>
+ <string name="notification_app_name_system" msgid="3045196791746735601">"Sistem"</string>
+ <string name="notification_app_name_settings" msgid="9088548800899952531">"Podešavanja"</string>
+ <string name="notification_appops_camera_active" msgid="8177643089272352083">"Kamera"</string>
+ <string name="notification_appops_microphone_active" msgid="581333393214739332">"Mikrofon"</string>
+ <string name="notification_appops_overlay_active" msgid="5571732753262836481">"prikazuje se na ekranu dok koristite druge aplikacije"</string>
+ <string name="notification_feedback_indicator" msgid="663476517711323016">"Pošaljite povratne informacije"</string>
+ <string name="notification_feedback_indicator_alerted" msgid="6552871804121942099">"Ovo obaveštenje je unapređeno u Podrazumevano. Dodirnite da biste naveli povratne informacije."</string>
+ <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Ovo obaveštenje je degradirano u Nečujno. Dodirnite da biste naveli povratne informacije."</string>
+ <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Ovo obaveštenje je rangirano više. Dodirnite da biste naveli povratne informacije."</string>
+ <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Ovo obaveštenje je rangirano niže. Dodirnite da biste naveli povratne informacije."</string>
+ <string name="nas_upgrade_notification_title" msgid="8436359459300146555">"Poboljšana obaveštenja"</string>
+ <string name="nas_upgrade_notification_content" msgid="5157550369837103337">"Predložene radnje i odgovore sada dobijate pomoću poboljšanih obaveštenja. Prilagodljiva obaveštenja za Android više nisu podržana."</string>
+ <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"Potvrdi"</string>
+ <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Isključi"</string>
+ <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Saznajte više"</string>
+ <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Poboljšana obaveštenja su zamenila Android prilagodljiva obaveštenja u Android-u 12. Ova funkcija pokazuje predložene radnje i odgovore, i organizuje obaveštenja.\n\nPoboljšana obaveštenja mogu da pristupaju sadržaju obaveštenja, uključujući lične podatke poput imena kontakata i poruka. Ova funkcija može i da odbacuje obaveštenja ili da odgovara na njih, na primer, da se javlja na telefonske pozive i kontroliše režim Ne uznemiravaj."</string>
+ <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Obaveštenje o informacijama Rutinskog režima"</string>
+ <string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Ušteda baterije je uključena"</string>
+ <string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Smanjuje se potrošnja baterije da bi se produžilo njeno trajanje"</string>
+ <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Ušteda baterije"</string>
+ <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Ušteda baterije je isključena"</string>
+ <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Baterija telefona je dovoljno napunjena. Funkcije više nisu ograničene."</string>
+ <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"Baterija tableta je dovoljno napunjena. Funkcije više nisu ograničene."</string>
+ <string name="battery_saver_charged_notification_summary" product="device" msgid="1031562417867646649">"Baterija uređaja je dovoljno napunjena. Funkcije više nisu ograničene."</string>
+ <string name="mime_type_folder" msgid="2203536499348787650">"Folder"</string>
+ <string name="mime_type_apk" msgid="3168784749499623902">"Android aplikacija"</string>
+ <string name="mime_type_generic" msgid="4606589110116560228">"Datoteka"</string>
+ <string name="mime_type_generic_ext" msgid="9220220924380909486">"<xliff:g id="EXTENSION">%1$s</xliff:g> datoteka"</string>
+ <string name="mime_type_audio" msgid="4933450584432509875">"Audio datoteka"</string>
+ <string name="mime_type_audio_ext" msgid="2615491023840514797">"<xliff:g id="EXTENSION">%1$s</xliff:g> audio datoteka"</string>
+ <string name="mime_type_video" msgid="7071965726609428150">"Video"</string>
+ <string name="mime_type_video_ext" msgid="185438149044230136">"<xliff:g id="EXTENSION">%1$s</xliff:g> video"</string>
+ <string name="mime_type_image" msgid="2134307276151645257">"Slika"</string>
+ <string name="mime_type_image_ext" msgid="5743552697560999471">"<xliff:g id="EXTENSION">%1$s</xliff:g> slika"</string>
+ <string name="mime_type_compressed" msgid="8737300936080662063">"Arhiva"</string>
+ <string name="mime_type_compressed_ext" msgid="4775627287994475737">"<xliff:g id="EXTENSION">%1$s</xliff:g> arhiva"</string>
+ <string name="mime_type_document" msgid="3737256839487088554">"Dokument"</string>
+ <string name="mime_type_document_ext" msgid="2398002765046677311">"<xliff:g id="EXTENSION">%1$s</xliff:g> dokument"</string>
+ <string name="mime_type_spreadsheet" msgid="8188407519131275838">"Tabela"</string>
+ <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"<xliff:g id="EXTENSION">%1$s</xliff:g> tabela"</string>
+ <string name="mime_type_presentation" msgid="1145384236788242075">"Prezentacija"</string>
+ <string name="mime_type_presentation_ext" msgid="8761049335564371468">"<xliff:g id="EXTENSION">%1$s</xliff:g> prezentacija"</string>
+ <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"Bluetooth ostaje uključen tokom režima rada u avionu"</string>
+ <string name="car_loading_profile" msgid="8219978381196748070">"Učitava se"</string>
+ <string name="file_count" msgid="3220018595056126969">"{count,plural, =1{{file_name} + # fajl}one{{file_name} + # fajl}few{{file_name} + # fajla}other{{file_name} + # fajlova}}"</string>
+ <string name="chooser_no_direct_share_targets" msgid="1511722103987329028">"Nema preporučenih ljudi za deljenje"</string>
+ <string name="chooser_all_apps_button_label" msgid="3230427756238666328">"Lista aplikacija"</string>
+ <string name="usb_device_resolve_prompt_warn" msgid="325871329788064199">"Ova aplikacija nema dozvolu za snimanje, ali bi mogla da snima zvuk pomoću ovog USB uređaja."</string>
+ <string name="accessibility_system_action_home_label" msgid="3234748160850301870">"Početak"</string>
+ <string name="accessibility_system_action_back_label" msgid="4205361367345537608">"Nazad"</string>
+ <string name="accessibility_system_action_recents_label" msgid="4782875610281649728">"Nedavne aplikacije"</string>
+ <string name="accessibility_system_action_notifications_label" msgid="6083767351772162010">"Obaveštenja"</string>
+ <string name="accessibility_system_action_quick_settings_label" msgid="4583900123506773783">"Brza podešavanja"</string>
+ <string name="accessibility_system_action_power_dialog_label" msgid="8095341821683910781">"Dijalog napajanja"</string>
+ <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaključavanje ekrana"</string>
+ <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snimak ekrana"</string>
+ <string name="accessibility_system_action_headset_hook_label" msgid="8524691721287425468">"Kuka za slušalice"</string>
+ <string name="accessibility_system_action_on_screen_a11y_shortcut_label" msgid="8488701469459210309">"Prečica za pristupačnost na ekranu"</string>
+ <string name="accessibility_system_action_on_screen_a11y_shortcut_chooser_label" msgid="1057878690209817886">"Alatka za biranje prečica za pristupačnost na ekranu"</string>
+ <string name="accessibility_system_action_hardware_a11y_shortcut_label" msgid="5764644187715255107">"Prečica za pristupačnost"</string>
+ <string name="accessibility_system_action_dismiss_notification_shade" msgid="8931637495533770352">"Odbaci traku sa obaveštenjima"</string>
+ <string name="accessibility_system_action_dpad_up_label" msgid="1029042950229333782">"nagore na D-pad-u"</string>
+ <string name="accessibility_system_action_dpad_down_label" msgid="3441918448624921461">"nadole na D-pad-u"</string>
+ <string name="accessibility_system_action_dpad_left_label" msgid="6557647179116479152">"nalevo na D-pad-u"</string>
+ <string name="accessibility_system_action_dpad_right_label" msgid="9180196950365804081">"nadesno na D-pad-u"</string>
+ <string name="accessibility_system_action_dpad_center_label" msgid="8149791419358224893">"centar na D-pad-u"</string>
+ <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka sa naslovima aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
+ <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je dodat u segment OGRANIČENO"</string>
<string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
- <string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"је послао/ла слику"</string>
- <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Конверзација"</string>
- <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Групна конверзација"</string>
+ <string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"je poslao/la sliku"</string>
+ <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Konverzacija"</string>
+ <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Grupna konverzacija"</string>
<string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string>
- <string name="resolver_personal_tab" msgid="2051260504014442073">"Лично"</string>
- <string name="resolver_work_tab" msgid="2690019516263167035">"Пословно"</string>
- <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Лични приказ"</string>
- <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Приказ за посао"</string>
- <string name="resolver_cross_profile_blocked" msgid="3014597376026044840">"Блокира ИТ администратор"</string>
- <string name="resolver_cant_share_with_work_apps_explanation" msgid="9071442683080586643">"Овај садржај не може да се дели помоћу пословних апликација"</string>
- <string name="resolver_cant_access_work_apps_explanation" msgid="1129960195389373279">"Овај садржај не може да се отвара помоћу пословних апликација"</string>
- <string name="resolver_cant_share_with_personal_apps_explanation" msgid="6349766201904601544">"Овај садржај не може да се дели помоћу личних апликација"</string>
- <string name="resolver_cant_access_personal_apps_explanation" msgid="1679399548862724359">"Овај садржај не може да се отвара помоћу личних апликација"</string>
- <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Пословни профил је паузиран"</string>
- <string name="resolver_switch_on_work" msgid="463709043650610420">"Додирните да бисте укључили"</string>
- <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Нема пословних апликација"</string>
- <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Нема личних апликација"</string>
- <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Желите да на личном профилу отворите: <xliff:g id="APP">%s</xliff:g>?"</string>
- <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Желите да на пословном профилу отворите: <xliff:g id="APP">%s</xliff:g>?"</string>
- <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Користи лични прегледач"</string>
- <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Користи пословни прегледач"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN за откључавање SIM мреже"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN за откључавање подскупа SIM мреже"</string>
- <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN за откључавање пословне SIM картице"</string>
- <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN за откључавање добављача услуге SIM картице"</string>
- <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN за откључавање SIM картице"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN за откључавање RUIM мреже 1"</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN за откључавање RUIM мреже 2"</string>
- <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN за откључавање RUIM hrpd-а"</string>
- <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN за откључавање пословне RUIM картице"</string>
- <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN за откључавање RUIM картице добављача услуге"</string>
- <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN за откључавање RUIM картице"</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Унесите PUK"</string>
- <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN за откључавање SPN-а"</string>
- <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN за откључавање SP еквивалентног матичног PLMN-а"</string>
- <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN за откључавање ICCID-а"</string>
- <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN за откључавање IMPI-ја"</string>
- <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN за откључавање добављача услуге подскупа мреже"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Захтева се откључавање SIM мреже…"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Захтева се откључавање подскупа SIM мреже…"</string>
- <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Захтева се откључавање добављача услуге SIM картице…"</string>
- <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Захтева се откључавање пословне SIM картице…"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Захтева се откључавање SIM картице…"</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Захтева се откључавање RUIM мреже 1…"</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Захтева се откључавање RUIM мреже 2…"</string>
- <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Захтева се откључавање RUIM hrpd-а…"</string>
- <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Захтева се откључавање RUIM картице добављача услуге…"</string>
- <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Захтева се откључавање пословне RUIM картице…"</string>
- <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Захтева се откључавање SPN-а…"</string>
- <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Захтева се откључавање SP еквивалентног матичног PLMN-а…"</string>
- <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Захтева се откључавање ICCID-а…"</string>
- <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Захтева се откључавање IMPI-ја…"</string>
- <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Захтева се откључавање добављача услуге подскупа мреже…"</string>
- <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Захтева се откључавање RUIM картице…"</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Захтева се откључавање помоћу PUK-а…"</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Захтев за откључавање SIM мреже није успео."</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Захтев за откључавање подскупа SIM мреже је успео."</string>
- <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Захтев за откључавање добављача услуге SIM картице није успео."</string>
- <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Захтев за откључавање пословне SIM картице није успео."</string>
- <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Захтев за откључавање SIM картице није успео."</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Захтев за откључавање RUIM мреже 1 није успео."</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Захтев за откључавање RUIM мреже 2 није успео."</string>
- <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Захтев за откључавање RUIM hrpd-а није успео."</string>
- <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Захтев за откључавање пословне RUIM картице није успео."</string>
- <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Захтев за откључавање RUIM картице добављача услуге није успео."</string>
- <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Захтев за откључавање RUIM картице није успео."</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Откључавање помоћу PUK-а није успело."</string>
- <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Захтев за откључавање SPN-а није успео."</string>
- <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Захтев за откључавање SP еквивалентног матичног PLMN-а није успео."</string>
- <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Захтев за откључавање ICCID-а није успео."</string>
- <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Захтев за откључавање IMPI-ја није успео."</string>
- <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Захтев за откључавање добављача услуге подскупа мреже није успео."</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Откључавање SIM мреже је успело."</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Откључавање подскупа SIM мреже је успело."</string>
- <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Откључавање добављача услуге SIM картице је успело."</string>
- <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Откључавање пословне SIM картице је успело."</string>
- <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Откључавање SIM картице је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Откључавање RUIM мреже 1 је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Откључавање RUIM мреже 2 је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Откључавање RUIM hrpd-а је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Захтев за откључавање RUIM картице добављача услуге је успео."</string>
- <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Откључавање пословне RUIM картице је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Откључавање RUIM картице је успело."</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Откључавање помоћу PUK-а је успело."</string>
- <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Откључавање SPN-а је успело."</string>
- <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Откључавање SP еквивалентног матичног PLMN-а је успело."</string>
- <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Откључавање ICCID-а је успело."</string>
- <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Откључавање IMPI-ја је успело."</string>
- <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Захтев за откључавање добављача услуге подскупа мреже је успео."</string>
+ <string name="resolver_personal_tab" msgid="2051260504014442073">"Lično"</string>
+ <string name="resolver_work_tab" msgid="2690019516263167035">"Poslovno"</string>
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Lični prikaz"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Prikaz za posao"</string>
+ <string name="resolver_cross_profile_blocked" msgid="3014597376026044840">"Blokira IT administrator"</string>
+ <string name="resolver_cant_share_with_work_apps_explanation" msgid="9071442683080586643">"Ovaj sadržaj ne može da se deli pomoću poslovnih aplikacija"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="1129960195389373279">"Ovaj sadržaj ne može da se otvara pomoću poslovnih aplikacija"</string>
+ <string name="resolver_cant_share_with_personal_apps_explanation" msgid="6349766201904601544">"Ovaj sadržaj ne može da se deli pomoću ličnih aplikacija"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1679399548862724359">"Ovaj sadržaj ne može da se otvara pomoću ličnih aplikacija"</string>
+ <string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Poslovni profil je pauziran"</string>
+ <string name="resolver_switch_on_work" msgid="463709043650610420">"Dodirnite da biste uključili"</string>
+ <string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Nema poslovnih aplikacija"</string>
+ <string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"Nema ličnih aplikacija"</string>
+ <string name="miniresolver_open_in_personal" msgid="3874522693661065566">"Želite da na ličnom profilu otvorite: <xliff:g id="APP">%s</xliff:g>?"</string>
+ <string name="miniresolver_open_in_work" msgid="4415223793669536559">"Želite da na poslovnom profilu otvorite: <xliff:g id="APP">%s</xliff:g>?"</string>
+ <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"Koristi lični pregledač"</string>
+ <string name="miniresolver_use_work_browser" msgid="543575306251952994">"Koristi poslovni pregledač"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"PIN za otključavanje SIM mreže"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"PIN za otključavanje podskupa SIM mreže"</string>
+ <string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"PIN za otključavanje poslovne SIM kartice"</string>
+ <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ENTRY" msgid="973059024670737358">"PIN za otključavanje dobavljača usluge SIM kartice"</string>
+ <string name="PERSOSUBSTATE_SIM_SIM_ENTRY" msgid="4487435301206073787">"PIN za otključavanje SIM kartice"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ENTRY" msgid="768060297218652809">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ENTRY" msgid="7129527319490548930">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ENTRY" msgid="2876126640607573252">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="8952595089930109282">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_SIM_SIM_PUK_ENTRY" msgid="3013902515773728996">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK1_ENTRY" msgid="2974411408893410289">"PIN za otključavanje RUIM mreže 1"</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK2_ENTRY" msgid="687618528751880721">"PIN za otključavanje RUIM mreže 2"</string>
+ <string name="PERSOSUBSTATE_RUIM_HRPD_ENTRY" msgid="6810596579655575381">"PIN za otključavanje RUIM hrpd-a"</string>
+ <string name="PERSOSUBSTATE_RUIM_CORPORATE_ENTRY" msgid="2715929642540980259">"PIN za otključavanje poslovne RUIM kartice"</string>
+ <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ENTRY" msgid="8557791623303951590">"PIN za otključavanje RUIM kartice dobavljača usluge"</string>
+ <string name="PERSOSUBSTATE_RUIM_RUIM_ENTRY" msgid="7382468767274580323">"PIN za otključavanje RUIM kartice"</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ENTRY" msgid="6730880791104286987">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ENTRY" msgid="6432126539782267026">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ENTRY" msgid="1730510161529488920">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ENTRY" msgid="3369885925003346830">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ENTRY" msgid="9129139686191167829">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ENTRY" msgid="2869929685874615358">"Unesite PUK"</string>
+ <string name="PERSOSUBSTATE_SIM_SPN_ENTRY" msgid="1238663472392741771">"PIN za otključavanje SPN-a"</string>
+ <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ENTRY" msgid="3988705848553894358">"PIN za otključavanje SP ekvivalentnog matičnog PLMN-a"</string>
+ <string name="PERSOSUBSTATE_SIM_ICCID_ENTRY" msgid="6186770686690993200">"PIN za otključavanje ICCID-a"</string>
+ <string name="PERSOSUBSTATE_SIM_IMPI_ENTRY" msgid="7043865376145617024">"PIN za otključavanje IMPI-ja"</string>
+ <string name="PERSOSUBSTATE_SIM_NS_SP_ENTRY" msgid="6144227308185112176">"PIN za otključavanje dobavljača usluge podskupa mreže"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_IN_PROGRESS" msgid="4233355366318061180">"Zahteva se otključavanje SIM mreže…"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_IN_PROGRESS" msgid="6742563947637715645">"Zahteva se otključavanje podskupa SIM mreže…"</string>
+ <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="2033399698172403560">"Zahteva se otključavanje dobavljača usluge SIM kartice…"</string>
+ <string name="PERSOSUBSTATE_SIM_CORPORATE_IN_PROGRESS" msgid="4795977251920732254">"Zahteva se otključavanje poslovne SIM kartice…"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_IN_PROGRESS" msgid="1090425878157254446">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_IN_PROGRESS" msgid="6476898876518094438">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_IN_PROGRESS" msgid="6006806734293747731">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="6546680489620881893">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_SIM_PUK_IN_PROGRESS" msgid="3506845511000727015">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_SIM_IN_PROGRESS" msgid="6709169861932992750">"Zahteva se otključavanje SIM kartice…"</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK1_IN_PROGRESS" msgid="4013870911606478520">"Zahteva se otključavanje RUIM mreže 1…"</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK2_IN_PROGRESS" msgid="9032651188219523434">"Zahteva se otključavanje RUIM mreže 2…"</string>
+ <string name="PERSOSUBSTATE_RUIM_HRPD_IN_PROGRESS" msgid="6584576506344491207">"Zahteva se otključavanje RUIM hrpd-a…"</string>
+ <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_IN_PROGRESS" msgid="830981927724888114">"Zahteva se otključavanje RUIM kartice dobavljača usluge…"</string>
+ <string name="PERSOSUBSTATE_RUIM_CORPORATE_IN_PROGRESS" msgid="7851790973098894802">"Zahteva se otključavanje poslovne RUIM kartice…"</string>
+ <string name="PERSOSUBSTATE_SIM_SPN_IN_PROGRESS" msgid="1149560739586960121">"Zahteva se otključavanje SPN-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_IN_PROGRESS" msgid="5708964693522116025">"Zahteva se otključavanje SP ekvivalentnog matičnog PLMN-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_ICCID_IN_PROGRESS" msgid="7288103122966483455">"Zahteva se otključavanje ICCID-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_IMPI_IN_PROGRESS" msgid="4036752174056147753">"Zahteva se otključavanje IMPI-ja…"</string>
+ <string name="PERSOSUBSTATE_SIM_NS_SP_IN_PROGRESS" msgid="5089536274515338566">"Zahteva se otključavanje dobavljača usluge podskupa mreže…"</string>
+ <string name="PERSOSUBSTATE_RUIM_RUIM_IN_PROGRESS" msgid="6737197986936251958">"Zahteva se otključavanje RUIM kartice…"</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_IN_PROGRESS" msgid="5658767775619998623">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_IN_PROGRESS" msgid="665978313257653727">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_IN_PROGRESS" msgid="3857142652251836850">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_IN_PROGRESS" msgid="2695664012344346788">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_IN_PROGRESS" msgid="2695678959963807782">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_IN_PROGRESS" msgid="1230605365926493599">"Zahteva se otključavanje pomoću PUK-a…"</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_ERROR" msgid="1924844017037151535">"Zahtev za otključavanje SIM mreže nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ERROR" msgid="3372797822292089708">"Zahtev za otključavanje podskupa SIM mreže je uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_ERROR" msgid="1878443146720411381">"Zahtev za otključavanje dobavljača usluge SIM kartice nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_CORPORATE_ERROR" msgid="7664778312218023192">"Zahtev za otključavanje poslovne SIM kartice nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_SIM_ERROR" msgid="2472944311643350302">"Zahtev za otključavanje SIM kartice nije uspeo."</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK1_ERROR" msgid="828089694480999120">"Zahtev za otključavanje RUIM mreže 1 nije uspeo."</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK2_ERROR" msgid="17619001007092511">"Zahtev za otključavanje RUIM mreže 2 nije uspeo."</string>
+ <string name="PERSOSUBSTATE_RUIM_HRPD_ERROR" msgid="807214229604353614">"Zahtev za otključavanje RUIM hrpd-a nije uspeo."</string>
+ <string name="PERSOSUBSTATE_RUIM_CORPORATE_ERROR" msgid="8644184447744175747">"Zahtev za otključavanje poslovne RUIM kartice nije uspeo."</string>
+ <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_ERROR" msgid="3801002648649640407">"Zahtev za otključavanje RUIM kartice dobavljača usluge nije uspeo."</string>
+ <string name="PERSOSUBSTATE_RUIM_RUIM_ERROR" msgid="707397021218680753">"Zahtev za otključavanje RUIM kartice nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_ERROR" msgid="894358680773257820">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_ERROR" msgid="352466878146726991">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_ERROR" msgid="7353389721907138671">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_ERROR" msgid="2655263155490857920">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SIM_PUK_ERROR" msgid="6903740900892931310">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_ERROR" msgid="5165901670447518687">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_ERROR" msgid="2856763216589267623">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_ERROR" msgid="817542684437829139">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_ERROR" msgid="5178635064113393143">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_ERROR" msgid="5391587926974531008">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_ERROR" msgid="4895494864493315868">"Otključavanje pomoću PUK-a nije uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SPN_ERROR" msgid="9017576601595353649">"Zahtev za otključavanje SPN-a nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_ERROR" msgid="1116993930995545742">"Zahtev za otključavanje SP ekvivalentnog matičnog PLMN-a nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_ICCID_ERROR" msgid="7559167306794441462">"Zahtev za otključavanje ICCID-a nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_IMPI_ERROR" msgid="2782926139511136588">"Zahtev za otključavanje IMPI-ja nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_NS_SP_ERROR" msgid="1890493954453456758">"Zahtev za otključavanje dobavljača usluge podskupa mreže nije uspeo."</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUCCESS" msgid="4886243367747126325">"Otključavanje SIM mreže je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_SUCCESS" msgid="4053809277733513987">"Otključavanje podskupa SIM mreže je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_SUCCESS" msgid="8249342930499801740">"Otključavanje dobavljača usluge SIM kartice je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_CORPORATE_SUCCESS" msgid="2339794542560381270">"Otključavanje poslovne SIM kartice je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SIM_SUCCESS" msgid="6975608174152828954">"Otključavanje SIM kartice je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK1_SUCCESS" msgid="2846699261330463192">"Otključavanje RUIM mreže 1 je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK2_SUCCESS" msgid="5335414726057102801">"Otključavanje RUIM mreže 2 je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_HRPD_SUCCESS" msgid="8868100318474971969">"Otključavanje RUIM hrpd-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_SUCCESS" msgid="6020936629725666932">"Zahtev za otključavanje RUIM kartice dobavljača usluge je uspeo."</string>
+ <string name="PERSOSUBSTATE_RUIM_CORPORATE_SUCCESS" msgid="6944873647584595489">"Otključavanje poslovne RUIM kartice je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_RUIM_SUCCESS" msgid="2526483514124121988">"Otključavanje RUIM kartice je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_PUK_SUCCESS" msgid="7662200333621664621">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK_SUCCESS" msgid="2861223407953766632">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_CORPORATE_PUK_SUCCESS" msgid="5345648571175243272">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="3725278343103422466">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SIM_PUK_SUCCESS" msgid="6998502547560297983">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK1_PUK_SUCCESS" msgid="8555433771162560361">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_NETWORK2_PUK_SUCCESS" msgid="3555767296933606232">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_HRPD_PUK_SUCCESS" msgid="6778051818199974237">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_CORPORATE_PUK_SUCCESS" msgid="4080108758498911429">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK_SUCCESS" msgid="7873675303000794343">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_RUIM_RUIM_PUK_SUCCESS" msgid="1763198215069819523">"Otključavanje pomoću PUK-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SPN_SUCCESS" msgid="2053891977727320532">"Otključavanje SPN-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_SP_EHPLMN_SUCCESS" msgid="8146602361895007345">"Otključavanje SP ekvivalentnog matičnog PLMN-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_ICCID_SUCCESS" msgid="8058678548991999545">"Otključavanje ICCID-a je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_IMPI_SUCCESS" msgid="2545608067978550571">"Otključavanje IMPI-ja je uspelo."</string>
+ <string name="PERSOSUBSTATE_SIM_NS_SP_SUCCESS" msgid="4352382949744625007">"Zahtev za otključavanje dobavljača usluge podskupa mreže je uspeo."</string>
<string name="config_pdp_reject_dialog_title" msgid="4072057179246785727"></string>
<string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string>
<string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string>
<string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string>
- <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Нова подешавања увећања"</string>
- <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Сада можете да увећате део екрана"</string>
- <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Укључите у Подешавањима"</string>
- <string name="dismiss_action" msgid="1728820550388704784">"Одбаци"</string>
- <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Одблокирајте микрофон уређаја"</string>
- <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Одблокирајте камеру уређаја"</string>
- <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"За <b><xliff:g id="APP">%s</xliff:g></b> и све апликације и услуге"</string>
- <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Одблокирај"</string>
- <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Приватност сензора"</string>
- <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Икона апликације"</string>
- <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Имиџ бренда апликације"</string>
- <string name="view_and_control_notification_title" msgid="4300765399209912240">"Проверите подешавања приступа"</string>
- <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> може да прегледа и контролише екран. Додирните да бисте прегледали."</string>
- <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"<xliff:g id="MESSAGE">%1$s</xliff:g> Преведено."</string>
- <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"Порука је преведена са језика <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> на <xliff:g id="TO_LANGUAGE">%2$s</xliff:g>."</string>
- <string name="notification_channel_abusive_bg_apps" msgid="6092140213264920355">"Активност у позадини"</string>
- <string name="notification_title_abusive_bg_apps" msgid="994230770856147656">"Апликација вам празни батерију"</string>
- <string name="notification_title_long_running_fgs" msgid="8170284286477131587">"Апликација је и даље активна"</string>
- <string name="notification_content_abusive_bg_apps" msgid="5296898075922695259">"Апликација <xliff:g id="APP">%1$s</xliff:g> ради у позадини. Додирните да бисте управљали потрошњом батерије."</string>
- <string name="notification_content_long_running_fgs" msgid="8258193410039977101">"<xliff:g id="APP">%1$s</xliff:g> може да утиче на трајање батерије. Додирните да бисте прегледали активне апликације."</string>
- <string name="notification_action_check_bg_apps" msgid="4758877443365362532">"Проверите активне апликације"</string>
- <string name="vdm_camera_access_denied" product="default" msgid="6102378580971542473">"Не може да се приступи камери телефона са <xliff:g id="DEVICE">%1$s</xliff:g> уређаја"</string>
- <string name="vdm_camera_access_denied" product="tablet" msgid="6895968310395249076">"Не може да се приступи камери таблета са <xliff:g id="DEVICE">%1$s</xliff:g> уређаја"</string>
- <string name="vdm_secure_window" msgid="161700398158812314">"Овом не можете да приступате током стримовања. Пробајте на телефону."</string>
- <string name="vdm_pip_blocked" msgid="4036107522497281397">"Не можете да гледате слику у слици при стримовању"</string>
- <string name="system_locale_title" msgid="711882686834677268">"Подразумевани системски"</string>
- <string name="default_card_name" msgid="9198284935962911468">"КАРТИЦА <xliff:g id="CARDNUMBER">%d</xliff:g>"</string>
- <string name="permlab_companionProfileWatch" msgid="2457738382085872542">"Дозвола за профил пратећег сата за управљање сатовима"</string>
- <string name="permdesc_companionProfileWatch" msgid="5655698581110449397">"Дозвољава пратећој апликацији да управља сатовима."</string>
- <string name="permlab_observeCompanionDevicePresence" msgid="9008994909653990465">"Надгледање присуства пратећег уређаја"</string>
- <string name="permdesc_observeCompanionDevicePresence" msgid="3011699826788697852">"Дозвољава пратећој апликацији да надгледа присуство пратећег уређаја када су уређаји у близини или далеко."</string>
- <string name="permlab_deliverCompanionMessages" msgid="3931552294842980887">"Испорука порука из пратеће апликације"</string>
- <string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Дозвољава пратећој апликацији да шаље пратеће поруке на друге уређаје."</string>
- <string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Покретање услуга у првом плану из позадине"</string>
- <string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Дозвољава пратећој апликацији да покрене услуге у првом плану из позадине."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Nova podešavanja uvećanja"</string>
+ <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Sada možete da uvećate deo ekrana"</string>
+ <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Uključite u Podešavanjima"</string>
+ <string name="dismiss_action" msgid="1728820550388704784">"Odbaci"</string>
+ <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Odblokirajte mikrofon uređaja"</string>
+ <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Odblokirajte kameru uređaja"</string>
+ <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Za <b><xliff:g id="APP">%s</xliff:g></b> i sve aplikacije i usluge"</string>
+ <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Odblokiraj"</string>
+ <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Privatnost senzora"</string>
+ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikona aplikacije"</string>
+ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imidž brenda aplikacije"</string>
+ <string name="view_and_control_notification_title" msgid="4300765399209912240">"Proverite podešavanja pristupa"</string>
+ <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> može da pregleda i kontroliše ekran. Dodirnite da biste pregledali."</string>
+ <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"<xliff:g id="MESSAGE">%1$s</xliff:g> Prevedeno."</string>
+ <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"Poruka je prevedena sa jezika <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> na <xliff:g id="TO_LANGUAGE">%2$s</xliff:g>."</string>
+ <string name="notification_channel_abusive_bg_apps" msgid="6092140213264920355">"Aktivnost u pozadini"</string>
+ <string name="notification_title_abusive_bg_apps" msgid="994230770856147656">"Aplikacija vam prazni bateriju"</string>
+ <string name="notification_title_long_running_fgs" msgid="8170284286477131587">"Aplikacija je i dalje aktivna"</string>
+ <string name="notification_content_abusive_bg_apps" msgid="5296898075922695259">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> radi u pozadini. Dodirnite da biste upravljali potrošnjom baterije."</string>
+ <string name="notification_content_long_running_fgs" msgid="8258193410039977101">"<xliff:g id="APP">%1$s</xliff:g> može da utiče na trajanje baterije. Dodirnite da biste pregledali aktivne aplikacije."</string>
+ <string name="notification_action_check_bg_apps" msgid="4758877443365362532">"Proverite aktivne aplikacije"</string>
+ <string name="vdm_camera_access_denied" product="default" msgid="6102378580971542473">"Ne može da se pristupi kameri telefona sa <xliff:g id="DEVICE">%1$s</xliff:g> uređaja"</string>
+ <string name="vdm_camera_access_denied" product="tablet" msgid="6895968310395249076">"Ne može da se pristupi kameri tableta sa <xliff:g id="DEVICE">%1$s</xliff:g> uređaja"</string>
+ <string name="vdm_secure_window" msgid="161700398158812314">"Ovom ne možete da pristupate tokom strimovanja. Probajte na telefonu."</string>
+ <string name="vdm_pip_blocked" msgid="4036107522497281397">"Ne možete da gledate sliku u slici pri strimovanju"</string>
+ <string name="system_locale_title" msgid="711882686834677268">"Podrazumevani sistemski"</string>
+ <string name="default_card_name" msgid="9198284935962911468">"KARTICA <xliff:g id="CARDNUMBER">%d</xliff:g>"</string>
+ <string name="permlab_companionProfileWatch" msgid="2457738382085872542">"Dozvola za profil pratećeg sata za upravljanje satovima"</string>
+ <string name="permdesc_companionProfileWatch" msgid="5655698581110449397">"Dozvoljava pratećoj aplikaciji da upravlja satovima."</string>
+ <string name="permlab_observeCompanionDevicePresence" msgid="9008994909653990465">"Nadgledanje prisustva pratećeg uređaja"</string>
+ <string name="permdesc_observeCompanionDevicePresence" msgid="3011699826788697852">"Dozvoljava pratećoj aplikaciji da nadgleda prisustvo pratećeg uređaja kada su uređaji u blizini ili daleko."</string>
+ <string name="permlab_deliverCompanionMessages" msgid="3931552294842980887">"Isporuka poruka iz prateće aplikacije"</string>
+ <string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Dozvoljava pratećoj aplikaciji da šalje prateće poruke na druge uređaje."</string>
+ <string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Pokretanje usluga u prvom planu iz pozadine"</string>
+ <string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Dozvoljava pratećoj aplikaciji da pokrene usluge u prvom planu iz pozadine."</string>
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon je dostupan"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon je blokiran"</string>
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index e136275..970fac3 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Уведзеныя PIN-коды не супадаюць."</string>
<string name="invalidPin" msgid="7542498253319440408">"Увядзіце PIN-код, які змяшчае ад 4 да 8 лічбаў."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Увядзіце PUK з 8 лічбаў ці больш."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Ваша SIM-карта заблакіравана PUK-кодам. Каб разблакіраваць яе, увядзіце PUK-код."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Каб разблакіраваць SIM-карту, увядзіце PUK2."</string>
<string name="enablePin" msgid="2543771964137091212">"Не атрымалася, уключыце блакіроўку SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">У вас засталася <xliff:g id="NUMBER_1">%d</xliff:g> спроба перад тым, як SIM-карта будзе заблакіравана.</item>
@@ -390,6 +388,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Дазваляе прыкладанню завяршаць фонавыя працэсы іншых прыкладанняў. Гэта можа спынiць працу iншых прыкладанняў."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Гэта праграма можа паказвацца паверх іншых праграм"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Гэта праграма можа паказвацца паверх іншых праграм ці іншых частак экрана. Гэта можа перашкодзіць нармальнаму выкарыстанню праграмы і змяніць выгляд іншых праграм."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"Схаваць накладкі іншых праграм"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Праграма можа запытаць, каб сістэма не дазваляла паказваць паверх яе накладкі, створаныя іншымі праграмамі."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"працаваць у фоне"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Гэта праграма можа працаваць у фоне. Гэта можа прывесці да хутчэйшага спажывання зараду акумулятара."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"выкарыстоўваць даныя ў фоне"</string>
@@ -965,22 +965,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Паўтарыце спробу"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Разблакіраваць для ўсіх функцый і даных"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Перавышана максімальная колькасць спроб разблакоўкі праз распазнаванне твару"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Няма SIM-карты"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"У планшэце няма SIM-карты."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"У вашай прыладзе Android TV няма SIM-карты."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"У тэлефоне няма SIM-карты."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Дадайце SIM-карту."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-карта адсутнічае ці не чытаецца. Дадайце SIM-карту."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Непрыдатная для выкарыстання SIM-карта."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Ваша SIM-карта адключана назаўсёды.\n Звяжыцеся з аператарам бесправадной сувязі, каб атрымаць іншую SIM-карту."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Папярэдні трэк"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Наступны трэк"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Прыпыніць"</string>
@@ -990,13 +982,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Перамотка ўперад"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Толькі экстранныя выклікі"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Сетка заблакаваная"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-карта заблакіравана PUK-кодам."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Глядзіце \"Інструкцыю для карыстальніка\" або звяжыцеся са службай тэхнiчнай падтрымкі."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-карта заблакіравана."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Разблакіраванне SIM-карты…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Вы няправільна ўвялі графічны ключ разблакавання пэўную колькасць разоў: <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\nПаўтарыце спробу праз наступную колькасць секунд: <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Вы няправільна ўвялі пароль пэўную колькасць разоў: <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\nПаўтарыце спробу праз наступную колькасць секунд: <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Вы няправільна ўвялі PIN-код пэўную колькасць разоў: <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\nПаўтарыце спробу праз наступную колькасць секунд: <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
@@ -1069,50 +1058,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Пакінуць гэту старонку"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Заставацца на гэтай старонцы"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nВы ўпэўнены, што хочаце пакiнуць гэту старонку?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Пацвердзіць"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Падказка: двойчы націсніце, каб павялічыць або паменшыць."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Аўтазапаўненне"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Усталяванне аўтазапаўнення"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Аўтазапаўненне з дапамогай сэрвісу \"<xliff:g id="SERVICENAME">%1$s</xliff:g>\""</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Правінцыя"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Паштовы індэкс"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Штат"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Паштовы індэкс"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Акруга"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Востраў"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Раён"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Аддзел"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Прэфектура"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Прыход"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Плошча"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Эмірат"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"чытанне вэб-закладак і гісторыi"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Дазваляе прыкладанню счытваць усе URL-адрасы, якiя былi наведаны ў браўзеры, а таксама ўсе закладкi. Увага: гэты дазвол нельга ажыццяўляць пабочнымi браўзерамi або iншымi прыкладаннямi з уласцiвасцямi браўзера."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"запіс вэб-закладак і гісторыi"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Дазваляе прыкладанням змяняць гісторыю браўзера або закладкі, якiя захоўваюцца на планшэце. Гэта можа дазволіць прыкладанню выдаляць або змяняць дадзеныя браўзера. Увага: гэты дазвол не распаўсюджваецца на пабочныя браўзеры i iншыя прыкладаннi з функцыямi браўзера."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Дазваляе праграме змяняць гісторыю браўзера і закладкі, якія захоўваюцца на прыладзе Android TV. Гэта можа дазволіць праграме сціраць або змяняць даныя браўзера. Увага! Гэты дазвол можа не распаўсюджвацца на староннія браўзеры і іншыя праграмы з магчымасцямі прагляду вэб-старонак."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Дазваляе прыкладанню змяняць гісторыю браўзера, і закладкі, захаваныя ў тэлефоне. Гэта дазволіць прыкладанню выдаляць або змяняць дадзеныя браўзера. Увага: гэты дазвол можа не дзейнiчаць для іншых браўзераў і іншых прыкладанняў з магчымасцямі вэб-браўзера."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"усталёўка сігналу"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Дазваляе прыкладанню ўсталёўваць сігнал на ўсталяваным прыкладанні будзільніка. Пэўныя прыкладанні будзільніка не могуць рэалізоўваць гэтую магчымасць."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"дадаць галасавое паведамленне"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Дазваляе прыкладанням дадаваць паведамленні ў вашу скрыню галасавой пошты."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"змяніць дазволы геапазіцыянавання для браўзэра"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дазваляе праграме змяняць дазволы геалакацыі браўзера. Шкодныя праграмы могуць выкарыстоўваць гэта, каб адпраўляць даныя аб месцазнаходжанні на любыя вэб-сайты."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Вы хочаце, каб браўзэр запомніў гэты пароль?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Не зараз"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Запомніць"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Ніколі"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"У вас няма дазволу на адкрыццё гэтай старонкі."</string>
- <string name="text_copied" msgid="2531420577879738860">"Тэкст скапіраваны ў буфер абмену."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Праграма \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\" была ўстаўлена з праграмы \"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>\""</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Праграма \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\" уставіла даныя з буфера абмену"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Скапіраваны вамі тэкст устаўлены праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string>
- <string name="pasted_image" msgid="4729097394781491022">"Скапіраваны вамі відарыс устаўлены праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string>
- <string name="pasted_content" msgid="646276353060777131">"Скапіраванае вамі змесціва ўстаўлена праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string>
<string name="more_item_label" msgid="7419249600215749115">"Больш"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Меню+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1380,13 +1331,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Пазней гэта можна змянiць у раздзеле \"Налады > Прыкладаннi\""</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Заўсёды дазваляць"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ніколі не дазваляць"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-карта выдалена"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Мабільная сетка будзе недаступная, пакуль вы не ўключыце яе для дзеючай SIM-карты."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Гатова"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-карта дададзена"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Перазагрузіце прыладу, каб атрымаць доступ да мабільнай сеткі."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Перазапусціць"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Уключыць мабільную сувязь"</string>
@@ -1698,8 +1646,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-карта зараз адключана. Увядзіце PUK-код, каб працягнуць. Звяжыцеся са сваiм аператарам, каб атрымаць дадатковую iнфармацыю."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Увядзіце жаданы PIN-код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Пацвердзіце жадан PIN-код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Разблакіраванне SIM-карты…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Няправільны PIN-код."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Увядзіце PIN-код, які змяшчае ад 4 да 8 лічбаў."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-код павінен змяшчаць 8 лічбаў."</string>
@@ -1728,6 +1675,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Выдалiць"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Павялiчыць гук вышэй рэкамендаванага ўзроўню?\n\nДоўгае праслухоўванне музыкi на вялiкай гучнасцi можа пашкодзiць ваш слых."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Папярэджанне.\nВы перавысілі колькасць моцных гукаў, якая лічыцца бяспечнай для слухання праз навушнікі на працягу тыдня.\n\nПеравышэнне гэтага значэння можа незваротна пашкодзіць ваш слых."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Папярэджанне.\nВы ў 5 разоў перавысілі колькасць гукаў, якая лічыцца бяспечнай для слухання праз навушнікі на працягу тыдня.\n\nКаб зберагчы ваш слых, гучнасць паменшана."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Выбраны вамі ўзровень гучнасці можа быць шкодным для слыху пры працяглым слуханні мультымедыя.\n\nДоўгае праслухванне на такім узроўні гучнасці можа пашкодзіць ваш слых."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Папярэджанне.\nЗмесціва, якое вы слухаеце, прайграецца на небяспечным узроўні гучнасці.\n\nПрацяг праслухвання на такой гучнасцi незваротна пашкодзiць ваш слых."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Выкарыстоўваць камбінацыю хуткага доступу для спецыяльных магчымасцей?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Калі хуткі доступ уключаны, вы можаце націснуць абедзве кнопкі гучнасці і ўтрымліваць іх 3 секунды, каб запусціць функцыю спецыяльных магчымасцей."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Уключыць хуткі доступ да спецыяльных магчымасцей?"</string>
@@ -1756,8 +1707,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Дэактываваць камбінацыю хуткага доступу"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Выкарыстоўваць камбінацыю хуткага доступу"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія колераў"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Карэкцыя колераў"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Рэжым кіравання адной рукой"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дадатковае памяншэнне яркасці"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Клавішы гучнасці ўтрымліваліся націснутымі. Уключана служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string>
@@ -2354,8 +2304,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Спадарожная праграма зможа дастаўляць паведамленні на іншыя прылады."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Запуск актыўных сэрвісаў з фонавага рэжыму"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Спадарожная праграма зможа запускаць актыўныя сэрвісы з фонавага рэжыму."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Мікрафон даступны"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Мікрафон заблакіраваны"</string>
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index fd6bd3e..c37ed33 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Въведените от вас ПИН кодове не са идентични."</string>
<string name="invalidPin" msgid="7542498253319440408">"Въведете PIN с четири до осем цифри."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Въведете PUK код с поне осем цифри."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM картата ви е заключена с PUK. Въведете PUK кода, за да я отключите."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Въведете PUK2, за да отблокирате SIM картата."</string>
<string name="enablePin" msgid="2543771964137091212">"Неуспешно – активирайте заключването на SIM/RUIM картата."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Остават ви <xliff:g id="NUMBER_1">%d</xliff:g> опита, преди SIM картата да бъде заключена.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Разрешава на приложението да прекратява намиращи се на заден план процеси на други приложения. Това може да доведе до спиране на тяхното изпълняване."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Това приложение може да се показва върху други приложения"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Това приложение може да се показва върху други приложения или други части от екрана. Така може да се попречи на нормалната употреба на приложенията и да се промени начинът, по който се показват други приложения."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"скриване на наслагванията, произлизащи от други приложения"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Това приложение може да поиска от системата върху него да не се показват наслагвания, произлизащи от приложения."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"работа на заден план"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Това приложение може да работи на заден план, което може да изразходи батерията по-бързо."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"използване на данни на заден план"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Опитайте отново"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Отключете за достъп до всички функции и данни"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Максималният брой опити за отключване с лице е надвишен"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Няма SIM карта"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"В таблета няма SIM карта."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"В устройството ви с Android TV няма SIM карта."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"В телефона няма SIM карта."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Добавете SIM карта."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM картата липсва или е нечетлива. Добавете SIM карта."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Неизползваема SIM карта."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM картата ви е деактивирана за постоянно.\nЗа да получите друга, се свържете с доставчика си на безжична услуга."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Предишен запис"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Следващ запис"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Пауза"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Превъртане напред"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Само спешни обаждания"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Мрежата е заключена"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM картата е заключена с PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Вижте ръководството за потребителя или се свържете с отдела за поддръжка на клиенти."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM картата е заключена."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM картата се отключва…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Начертахте неправилно фигурата си за отключване <xliff:g id="NUMBER_0">%1$d</xliff:g> пъти. \n\nОпитайте отново след <xliff:g id="NUMBER_1">%2$d</xliff:g> секунди."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Въведохте неправилно паролата си <xliff:g id="NUMBER_0">%1$d</xliff:g> пъти. \n\nОпитайте отново след <xliff:g id="NUMBER_1">%2$d</xliff:g> секунди."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Въведохте неправилно ПИН кода си <xliff:g id="NUMBER_0">%1$d</xliff:g> пъти. \n\nОпитайте отново след <xliff:g id="NUMBER_1">%2$d</xliff:g> секунди."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Напускане на тази страница"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Оставане на тази страница"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nНаистина ли искате да излезете от тази страница?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Потвърждение"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Съвет: Докоснете двукратно, за да увеличите или намалите мащаба."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Автопоп."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Автопоп.: Настройка"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Автоматично попълване с/ъс <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Провинция"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Пощенски код"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Щат"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Пощенски код"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Окръг"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Остров"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Област"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Департамент"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Префектура"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Община"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Район"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Емирство"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"четене на вашите отметки и история в мрежата"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Разрешава на приложението да чете историята на всички посетени от браузъра URL адреси и всички негови отметки. Забележка: Възможно е браузъри на трети страни или други приложения с възможности за сърфиране в мрежата да не могат да наложат ограниченията на това разрешение."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"запис на вашите отметки и история в мрежата"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Разрешава на приложението да променя историята или отметките на браузъра, съхранени на таблета ви. Това може да му позволи да изтрива или променя данните на браузъра. Забележка: Възможно е браузъри на трети страни или други приложения с възможности за сърфиране в мрежата да не могат да наложат ограниченията на разрешението."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Дава възможност на приложението да променя съхраняваните на устройството ви с Android TV история или отметки на браузъра. Така приложението може да изтрива или променя данните на браузъра. Забележка: Разрешението не може да бъде наложено от браузъри на трети страни, нито от други приложения с възможности за сърфиране в мрежата."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Разрешава на приложението да променя историята или отметките на браузъра, съхранени на телефона ви. Това може да му позволи да изтрива или променя данните на браузъра. Забележка: Възможно е браузъри на трети страни или други приложения с възможности за сърфиране в мрежата да не могат да наложат ограниченията на разрешението."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"навиване на будилника"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Разрешава на приложението да навие инсталирано приложение будилник. Някои будилници може да не изпълнят тази функция."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"добавяне на гласова поща"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Разрешава на приложението да добавя съобщения към входящата ви гласова поща."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"промяна на разрешенията за местоположение в браузъра"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Разрешава на приложението да променя разрешенията на браузъра за местоположение. Злонамерените приложения могат да използват това, за да изпращат информация за местоположението до произволни уебсайтове."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Искате ли браузърът да запомни тази парола?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Не сега"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Запомняне"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Никога"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Нямате разрешение да отворите тази страница."</string>
- <string name="text_copied" msgid="2531420577879738860">"Текстът е копиран в буферната памет."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави данни от <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави данни от буферната памет"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копиран от вас текст"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копирано от вас изображение"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копирано от вас съдържание"</string>
<string name="more_item_label" msgid="7419249600215749115">"Още"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Меню+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Можете да промените това по-късно в „Настройки“ > „Приложения“"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Винаги да се разрешава"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Никога да не се разрешава"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM картата е премахната"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Няма да имате достъп до мобилната мрежа, докато не рестартирате с добавена валидна SIM карта."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Готово"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM картата е добавена"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Рестартирайте устройството си, за да осъществите достъп до мобилната мрежа."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Рестартиране"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Активиране на мобилната услуга"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM картата вече е деактивирана. Въведете PUK кода, за да продължите. Свържете се с оператора за подробности."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Въведете желания ПИН код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Потвърдете желания ПИН код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM картата се отключва…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Неправилен ПИН код."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Въведете ПИН код с четири до осем цифри."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK кодът трябва да е с осем цифри."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Премахване"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Да се увеличи ли силата на звука над препоръчителното ниво?\n\nПродължителното слушане при висока сила на звука може да увреди слуха ви."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Внимание!\nНадвишихте безопасния брой сигнали със силен звук, които човек може да чуе със слушалки в рамките на една седмица.\n\nТова ще увреди слуха ви за постоянно."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Внимание!\nНадвишихте петкратно безопасния брой сигнали със силен звук, които човек може да чуе със слушалки в рамките на една седмица.\n\nСилата на звука бе намалена с цел предпазване на слуха ви."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Силата на звука, с която се възпроизвежда мултимедийно съдържание, може да доведе до увреждане на слуха, ако слушате продължително.\n\nПродължителното слушане при съответната сила на звука може да увреди слуха ви."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Внимание!\nВ момента слушате съдържание, което се възпроизвежда при опасно висока сила на звука.\n\nАко продължите да слушате с толкова силен звук, ще увредите слуха си за постоянно."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Искате ли да използвате пряк път към функцията за достъпност?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Когато прекият път е включен, можете да стартирате дадена функция за достъпност, като натиснете двата бутона за силата на звука и ги задържите за 3 секунди."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Искате ли да включите прекия път за функциите за достъпност?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Изключване на прекия път"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Използване на пряк път"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Инвертиране на цветовете"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Корекция на цветове"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Работа с една ръка"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Доп. затъмн."</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е включена."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Разрешава на дадено придружаващо приложение да доставя придружаващи съобщения до други устройства."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Стартиране на услуги на преден план при изпълнение на заден план"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Разрешава на дадено придружаващо приложение да стартира услуги на преден план, докато се изпълнява на заден план."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Микрофонът е налице"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Микрофонът е блокиран"</string>
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 4da5520..ec1ef28 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"আপনার টাইপ করা PINগুলি মিলছে না৷"</string>
<string name="invalidPin" msgid="7542498253319440408">"একটি পিন লিখুন যাতে ৪ থেকে ৮ নম্বর রয়েছে৷"</string>
<string name="invalidPuk" msgid="8831151490931907083">"৮ বা তার থেকে বেশি নম্বরেরে একটি PUK লিখুন৷"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"আপনার সিম PUK লক করা হয়েছে। এটি আনলক করতে PUK কোড টাইপ করুন।"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"সিম আনব্লক করতে PUK2 টাইপ করুন।"</string>
<string name="enablePin" msgid="2543771964137091212">"অসফল, সিম/RUIM লক সক্ষম করুন৷"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">আপনার কাছে আর <xliff:g id="NUMBER_1">%d</xliff:g>টি প্রচেষ্টা বাকি রয়েছে এটির পরেই আপনার সিম লক হয়ে যাবে৷</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"অন্যান্য অ্যাপ্লিকেশানগুলির নেপথ্যে চলা প্রক্রিয়াগুলির সমাপ্তি ঘটাতে অ্যাপ্লিকেশানটিকে মঞ্জুর করে৷ এর ফলে অন্যান্য অ্যাপ্লিকেশানগুলি বন্ধ হয়ে যেতে পারে৷"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"এই অ্যাপটি অন্যান্য অ্যাপের উপরে প্রদর্শিত পারে"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"এই অ্যাপটি অন্যান্য অ্যাপের উপরে বা স্ক্রীনের অন্যান্য অংশে উপস্থিত হতে পারে৷ এটি সাধারণ অ্যাপ ব্যবহারের ক্ষেত্রে হস্তক্ষেপ করতে এবং অন্যান্য অ্যাপের প্রদর্শিত হওয়ার অবস্থাকে পরিবর্তিত করতে পারে৷"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"অন্যান্য অ্যাপের ওভারলে লুকানো"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"এই অ্যাপটি সিস্টেমকে অনুরোধ করতে পারে যাতে অন্যান্য অ্যাপ এই অ্যাপের উপর যে ওভারলে দেখায়, তা আড়াল করা যায়।"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"পটভূমিতে চালু থাকুক"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"এই অ্যাপটি পটভূমিতে চালু থাকতে পারে। ফলে ব্যাটারি দ্রুত ফুরিয়ে যেতে পারে।"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"পটভূমিতে ডেটা ব্যবহার করুক"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"আবার চেষ্টা করুন"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"সমস্ত বৈশিষ্ট্য এবং ডেটার জন্য আনলক করুন"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"ফেস আনলক ফিচারের সাহায্যে আনলকের চেষ্টা সর্বোচ্চ সীমা পেরিয়ে গেছে"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"কোনও সিম নেই"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ট্যাবলেটে কোনও সিম নেই।"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"আপনার Android TV ডিভাইসে কোনও সিম নেই।"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ফোনে কোনও সিম নেই।"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"সিম যোগ করুন।"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"সিম নেই অথবা সেটি রিড করা যাচ্ছে না। সিম যোগ করুন।"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ব্যবহারযোগ্য নয় এমন সিম।"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"আপনার সিম স্থায়ীভাবে বন্ধ করে দেওয়া হয়েছে।\n অন্য একটি সিমের জন্য আপনার ওয়্যারলেস পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"পূর্ববর্তী ট্র্যাক"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"পরবর্তী ট্র্যাক"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"বিরাম দিন"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"দ্রুত সামনে এগোন"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"শুধুমাত্র জরুরি কল"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"নেটওয়ার্ক লক হয়েছে"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"সিম PUK লক করা হয়েছে।"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ব্যবহারকারীর নির্দেশিকা দেখুন বা গ্রাহক পরিষেবা কেন্দ্রে যোগাযোগ করুন৷"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"সিম লক করা হয়েছে।"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"সিম আনলক করা হচ্ছে…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"আপনি আপনার আনলকের প্যাটার্ন আঁকার ক্ষেত্রে <xliff:g id="NUMBER_0">%1$d</xliff:g> বার ভুল করেছেন৷ \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> সেকেন্ডের মধ্যে আবার চেষ্টা করুন৷"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"আপনি আপনার পাসওয়ার্ড <xliff:g id="NUMBER_0">%1$d</xliff:g> বার ভুল টাইপ করেছেন৷ \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> সেকেন্ডের মধ্যে আবার চেষ্টা করুন৷"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"আপনি আপনার পিন টাইপ করতে <xliff:g id="NUMBER_0">%1$d</xliff:g> বার ভুল করেছেন৷ \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> সেকেন্ডের মধ্যে আবার চেষ্টা করুন৷"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"এই পৃষ্ঠাটি থেকে বেরিয়ে যান"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"এই পৃষ্ঠাতে থাকুন"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nআপনি কি এই পৃষ্ঠাটি থেকে বেরিয়ে আসার ব্যাপারে নিশ্চিত?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"নিশ্চিত করুন"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"টিপ: জুম বাড়ানো ও কমানোর জন্য দুইবার আলতো চাপুন৷"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"স্বতঃপূর্ণ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"স্বতঃপূর্ণ সেট করুন"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> দিয়ে অটোফিল করুন"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$১$২$৩"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"প্রদেশ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"পোস্টাল কোড"</string>
- <string name="autofill_state" msgid="3341725337190434069">"রাজ্য"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"পিন কোড"</string>
- <string name="autofill_county" msgid="7781382735643492173">"দেশ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"দ্বীপ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"জেলা"</string>
- <string name="autofill_department" msgid="9047276226873531529">"বিভাগ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"জেলা"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"প্যারিশ"</string>
- <string name="autofill_area" msgid="8289022370678448983">"এলাকা"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"এমিরেট"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"আপনার ওয়েব বুকমার্কগুলি এবং ইতিহাস পড়ুন"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"অ্যাপ্লিকেশানটিকে ব্রাউজার দ্বারা ঘুরে দেখা সমস্ত URL এর ইতিহাস এবং ব্রাউজারের বুকমার্কগুলি পড়ার অনুমতি দেয়৷ দ্রষ্টব্য: এই অনুমতিটি তৃতীয় পক্ষের ব্রাউজার বা ওয়েব ব্রাউজিং ক্ষমতা সহ অন্যান্য অ্যাপ্লিকেশানগুলিতে জারি করা সম্ভব নাও হতে পারে৷"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"ওয়েব বুকমার্কগুলি এবং ইতিহাস লিখুন"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"অ্যাপ্লিকেশনটিকে আপনার ট্যাবলেটে সঞ্চিত ব্রাউজারের ইতিহাস বা বুকমার্কগুলি পরিবর্তন করতে দেয়৷ এটি অ্যাপ্লিকেশনটিকে ব্রাউজার ডেটা মুছে দিতে বা পরিবর্তন করতে দেয়৷ দ্রষ্টব্য: এই অনুমতি তৃতীয় পক্ষের ব্রাউজারগুলির বা ওয়েব ব্রাউজিং ক্ষমতা সম্পন্ন অন্যান্য অ্যাপ্লিকেশনগুলি দ্বারা বলবৎ নাও হতে পারে৷"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"অ্যাপটিকে আপনার Android TV ডিভাইসে সেভ করা ব্রাউজারের ইতিহাস বা বুকমার্ক পরিবর্তন করার অনুমতি দেয়। দ্রষ্টব্য: থার্ড-পার্টি ব্রাউজার বা ওয়েব ব্রাউজ করতে পারে এমন অন্যান্য অ্যাপ্লিকেশন এই অনুমতি প্রয়োগ নাও করতে পারে।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"অ্যাপ্লিকেশনটিকে আপনার ফোনে সঞ্চিত ব্রাউজারের ইতিহাস বা বুকমার্কগুলি পরিবর্তন করতে দেয়৷ এটি অ্যাপ্লিকেশনটিকে ব্রাউজার ডেটা মুছে দিতে বা পরিবর্তন করতে দেয়৷ দ্রষ্টব্য: এই অনুমতি তৃতীয় পক্ষের ব্রাউজারগুলির বা ওয়েব ব্রাউজিং ক্ষমতা সম্পন্ন অন্যান্য অ্যাপ্লিকেশনগুলি দ্বারা বলবৎ নাও হতে পারে৷"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"একটি অ্যালার্ম সেট করুন"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"অ্যাপ্লিকেশানকে একটি ইনস্টল থাকা অ্যালার্ম অ্যাপ্লিকেশানে একটি অ্যালার্ম সেট করতে দেয়৷ কিছু অ্যালার্ম ঘড়ি অ্যাপ্লিকেশানগুলিতে ভবিষ্যতে এটি লাগু নাও হতে পারে৷"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ভয়েসমেল যোগ করে"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"অ্যাপ্লিকেশানকে আপনার ভয়েসমেইল ইনবক্সে মেসেজ যোগ করার অনুমতি দেয়৷"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ব্রাউজারের ভূঅবস্থানিক অনুমতিগুলি সংশোধন করে"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"অ্যাপ্লিকেশানকে ব্রাউজারের ভূঅবস্থানিক অনুমতি সংশোধন করতে দেয়৷ ক্ষতিকারক অ্যাপ্লিকেশানগুলি নির্বিচারে ওয়েব সাইটগুলিতে অবস্থানের ডেটা পাঠানো সক্ষম করতে এটি ব্যবহার করতে পারে৷"</string>
- <string name="save_password_message" msgid="2146409467245462965">"আপনি কি ব্রাউজারে এই পাসওয়ার্ডটি মনে রাখতে চান?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"এখনই নয়"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"মনে রাখুন"</string>
- <string name="save_password_never" msgid="6776808375903410659">"কখনই নয়"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"এই পৃষ্ঠাটি খোলার জন্য আপনার কাছে অনুমতি নেই৷"</string>
- <string name="text_copied" msgid="2531420577879738860">"ক্লিপবোর্ডে পাঠ্য অনুলিপি করা হয়েছে৷"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> থেকে কপি করা ডেটা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-এ পেস্ট করা হয়েছে"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"আপনার ক্লিপবোর্ড থেকে <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> পেস্ট করা হয়েছে"</string>
- <string name="pasted_text" msgid="4298871641549173733">"আপনার কপি করা টেক্সট <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string>
- <string name="pasted_image" msgid="4729097394781491022">"আপনার কপি করা ছবি <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string>
- <string name="pasted_content" msgid="646276353060777131">"আপনার কপি করা কন্টেন্ট <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string>
<string name="more_item_label" msgid="7419249600215749115">"আরও"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"মেনু+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"আপনি সেটিংস > অ্যাপ্লিকেশানে এটি পরে পরিবর্তন করতে পারেন"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"সর্বদা অনুমতি দিন"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"কখনো অনুমতি দেবেন না"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"সিম সরানো হয়েছে"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"আপনি সঠিক সিম লাগিয়ে ডিভাইস রিস্টার্ট না করলে মোবাইল নেটওয়ার্ক উপলভ্য হবে না।"</string>
<string name="sim_done_button" msgid="6464250841528410598">"সম্পন্ন হয়েছে"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"সিম যোগ করা হয়েছে"</string>
<string name="sim_added_message" msgid="6602906609509958680">"মোবাইল নেটওয়ার্ক অ্যাক্সেস করতে আপনার ডিভাইসটি পুনর্সূচনা করুন৷"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"রিস্টার্ট করুন"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"মোবাইল পরিষেবা চালু করুন"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"সিম এখন অক্ষম করা হয়েছে৷ অবিরত থাকতে PUK কোডটি লিখুন৷ বিশদ বিবরণের জন্য ক্যারিয়ারের সাথে যোগাযোগ করুন৷"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"কাঙ্ক্ষিত পিন কোড লিখুন"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"কাঙ্ক্ষিত পিন কোড নিশ্চিত করুন"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"সিম আনলক করা হচ্ছে…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ভুল পিন কোড৷"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"৪ থেকে ৮টি সংখ্যার একটি পিন লিখুন৷"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK কোডকে ৮ সংখ্যার হতে হবে৷"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"সরান"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"প্রস্তাবিত স্তরের চেয়ে বেশি উঁচুতে ভলিউম বাড়াবেন?\n\nউঁচু ভলিউমে বেশি সময় ধরে কিছু শুনলে আপনার শ্রবনশক্তির ক্ষতি হতে পারে।"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"সতর্কতা,\nহেডফোনের মাধ্যমে এক সপ্তাহে কেউ যতটা জোর আওয়াজের সিগন্যাল শুনতে পারেন আপনি তার সীমা পেরিয়ে গেছেন।\n\nএই সীমা পেরিয়ে গেলে আপনার শ্রবণশক্তি স্থায়ীভাবে ক্ষতিগ্রস্ত হবে।"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"সতর্কতা,\nহেডফোনের মাধ্যমে এক সপ্তাহে কেউ যতটা জোর আওয়াজের সিগন্যাল শুনতে পারেন আপনি তার সীমা ৫ গুণ পেরিয়ে গেছেন।\n\nআপনার শ্রবণশক্তি সুরক্ষিত রাখতে ভলিউম কমানো হয়েছে।"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"যে লেভেলে আপনি মিডিয়া শুনছেন তা দীর্ঘ সময় ধরে চলতে থাকলে আপনার শ্রবণশক্তি ক্ষতিগ্রস্ত হতে পারে।\n\nদীর্ঘ সময় ধরে এই লেভেলে প্লে করলে তা আপনার শ্রবণশক্তির ক্ষতি করতে পারে।"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"সতর্কতা,\nআপনি বর্তমানে অসুরক্ষিত জোর লেভেলে প্লে করা হচ্ছে এমন কন্টেন্ট শুনছেন।\n\nএইভাবে জোরে শোনা চালিয়ে গেলে আপনার শ্রবণশক্তি স্থায়ীভাবে ক্ষতিগ্রস্ত হবে।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"অ্যাক্সেসযোগ্যতা শর্টকাট ব্যবহার করবেন?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"শর্টকাট চালু করা থাকাকালীন দুটি ভলিউম বোতাম একসাথে ৩ সেকেন্ড টিপে ধরে রাখলে একটি অ্যাকসেসিবিলিটি ফিচার চালু হবে।"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"অ্যাক্সেসিবিলিটি ফিচারের শর্টকাট বন্ধ করতে চান?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"শর্টকাট বন্ধ করুন"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শর্টকাট ব্যবহার করুন"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"রঙ উল্টানো"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"রঙ সংশোধন করা"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"এক হাতে ব্যবহার করার মোড"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"অতিরিক্ত কম আলো"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> চালু করা হয়েছে।"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"অন্যান্য ডিভাইসে কম্প্যানিয়ন মেসেজ ডেলিভার করতে কম্প্যানিয়ন অ্যাপকে অনুমতি দেয়।"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"ব্যাকগ্রাউন্ড থেকে ফোরগ্রাউন্ড পরিষেবা চালু করা"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"কম্প্যানিয়ন অ্যাপকে, ব্যাকগ্রাউন্ড থেকে ফোরগ্রাউন্ড পরিষেবা চালু করার অনুমতি দেয়।"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"মাইক্রোফোন উপলভ্য আছে"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"মাইক্রোফোন ব্লক করা হয়েছে"</string>
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 67574ef..db572e0 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN-ovi koje ste unijeli se ne podudaraju."</string>
<string name="invalidPin" msgid="7542498253319440408">"Unesite PIN koji sadrži 4 do 8 brojeva."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Unesite PUK koji sadrži 8 ili više brojeva."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM je zaključan PUK-om. Unesite PUK kôd da ga otključate."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Upišite PUK2 da deblokirate SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Nije uspjelo. Prvo omogućite SIM/RUIM zaključavanje."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Imate još <xliff:g id="NUMBER_1">%d</xliff:g> pokušaj prije nego se SIM kartica zaključa.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Omogućava aplikaciji prekid pozadinskih procesa drugih aplikacija. Ovo može dovesti do prestanka rada drugih aplikacija."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Ova aplikacija se može pojaviti iznad drugih aplikacija"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Aplikacija se može pojaviti iznad ostalih aplikacija ili drugih dijelova ekrana. To može uticati na normalno korištenje aplikacije i promijeniti izgled drugih aplikacija."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"sakrijte preklapanja drugih aplikacija"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ova aplikacija može tražiti da sistem sakrije prikazivanje preklapanja na vrhu koja potiču iz aplikacija."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"rad u pozadini"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Ova aplikacija može raditi u pozadini. To može brže istrošiti bateriju."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"prijenos podataka u pozadini"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Pokušajte ponovo"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Otključajte uređaj za sve funkcije i podatke"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Premašen maksimalni broj pokušaja otključavanja licem"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Nema SIM-a"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"U tabletu nema SIM-a."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"U Android TV uređaju nema SIM-a."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"U telefonu nema SIM-a."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Dodajte SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM nedostaje ili se ne može čitati. Dodajte SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Neupotrebljiv SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM je trajno deaktiviran.\n Kontaktirajte pružaoca bežičnih usluga za drugi SIM"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Prethodna numera"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Sljedeća numera"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pauziraj"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Ubrzaj"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Samo hitni pozivi"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Mreža zaključana"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM je zaključan PUK-om."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Pogledajte Priručnik za korištenje ili kontaktirajte odjel za brigu o kupcima."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM je zaključan."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Otključavanje SIM-a…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Pogrešno ste nacrtali svoj uzorak za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nBroj sekundi do sljedećeg pokušaja: <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Pogrešno ste unijeli svoju lozinku <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nBroj sekundi do sljedećeg pokušaja: <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Pogrešno ste unijeli svoj PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nBroj sekundi do sljedećeg pokušaja: <xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Napusti ovu stranicu"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Ostani na ovoj stranici"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\n Da li ste sigurni da želite napustiti ovu stranicu?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Potvrdite"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Savjet: Dodirnite ekran dva puta za uvećanje ili smanjenje prikaza."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Podesite Autofill"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automatsko popunjavanje koje pruža usluga <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Pokrajina"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Poštanski broj"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Država"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Poštanski broj"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Okrug"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ostrvo"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrikt"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Odsjek"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parohija"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Oblast"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"čitanje internet oznaka i historije"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Omogućava aplikaciji čitanje historije URL-ova koje je preglednik posjetio, kao i svih oznaka preglednika. Napomena: ovo odobrenje ne mogu iskoristiti preglednici trećih strana ili druge aplikacije koje imaju mogućnost pregledanja interneta."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"pisanje internet oznaka i historije"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Omogućava aplikaciji da izmijeni historiju ili oznake preglednika koji su pohranjeni na vašem tabletu. Ovim se aplikaciji može omogućiti da izbriše ili izmijeni podatke preglednika. Napomena: ovo odobrenje ne mogu koristiti preglednici trećih strana ili druge aplikacije koje imaju mogućnost pregledanja interneta."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Omogućava aplikaciji da mijenja historiju ili oznake preglednika pohranjene na Android TV uređaju. Na ovaj način se aplikaciji može omogućiti brisanje ili izmjena podataka preglednika. Napomena: Ovu dozvolu ne mogu iskoristiti preglednici trećih strana ili druge aplikacije koje imaju mogućnost pregleda interneta."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Omogućava aplikaciji da izmijeni historiju ili oznake preglednika koji su pohranjeni na vašem telefonu. Ovim se aplikaciji može omogućiti da izbriše ili izmijeni podatke preglednika. Napomena: ovo odobrenje ne mogu koristiti preglednika trećih strana ili druge aplikacije koje imaju mogućnost pregledanja interneta."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"postavljanje alarma"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Dozvoljava aplikaciji postavljanje alarma u instaliranom budilniku. Moguće je da neki budilnici neće primijeniti ovu funkciju."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"dodavanje govorne pošte"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Dozvoljava aplikaciji dodavanje poruka u vašu ulaznu govornu poštu."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"izmjena geolokacijskih odobrenja preglednika"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Dozvoljava aplikaciji mijenjanje geolokacijskih odobrenja preglednika. Zlonamjerne aplikacije mogu to iskoristiti i dozvoliti slanje informacija o lokaciji proizvoljnim web lokcacijama."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Želite li da preglednik zapamti ovu lozinku?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ne sada"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Zapamti"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nikad"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nemate odobrenje za otvaranje ove stranice."</string>
- <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međumemoriju."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepljena iz aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila sadržaj iz međumemorije"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopirani tekst"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopiranu sliku"</string>
- <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopirani sadržaj"</string>
<string name="more_item_label" msgid="7419249600215749115">"Više"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Meni+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Ovo možete kasnije promijeniti u meniju Postavke > Aplikacije"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Uvijek dozvoli"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nikada ne dozvoli"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM je uklonjen"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilna mreža neće biti dostupna dok ponovo ne pokrenete uređaj s važećim SIM-om."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Gotovo"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM je dodan"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Ponovo pokrenite uređaj da pristupite mobilnoj mreži."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Ponovo pokreni"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivirajte uslugu mobilne mreže"</string>
@@ -1579,7 +1527,7 @@
<string name="sync_undo_deletes" msgid="5786033331266418896">"Poništiti brisanje"</string>
<string name="sync_do_nothing" msgid="4528734662446469646">"Ne radi ništa za sada"</string>
<string name="choose_account_label" msgid="5557833752759831548">"Odaberite račun"</string>
- <string name="add_account_label" msgid="4067610644298737417">"Dodaj račun"</string>
+ <string name="add_account_label" msgid="4067610644298737417">"Dodajte račun"</string>
<string name="add_account_button_label" msgid="322390749416414097">"Dodajte račun"</string>
<string name="number_picker_increment_button" msgid="7621013714795186298">"Povećaj"</string>
<string name="number_picker_decrement_button" msgid="5116948444762708204">"Smanji"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM je sada onemogućen. Unesite PUK kôd da nastavite. Za više informacija obratite se operateru."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Unesite željeni PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Potvrdi željeni PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Otključavanje SIM-a…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Pogrešan PIN."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Unesite PIN koji sadrži od 4 do 8 brojeva."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kôd bi trebao imati 8 brojeva."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ukloni"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite li pojačati zvuk iznad preporučenog nivoa?\n\nDužim slušanjem glasnog zvuka možete oštetiti sluh."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Upozorenje,\nprekoračili ste količinu glasnih zvučnih signala koje je moguće sigurno slušati putem slušalica tokom jedne sedmice.\n\nPrekoračenjem tog ograničenja će vam se trajno oštetiti sluh."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Upozorenje,\nprekoračili ste 5 puta veću količinu glasnih zvučnih signala koje je moguće sigurno slušati putem slušalica tokom jedne sedmice.\n\nJačina zvuka je smanjena radi zaštite vašeg sluha."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Nivo jačine na kojem slušate medijski sadržaj može uzrokovati oštećenje sluha ako se održava duži period.\n\nAko nastavite reproducirati na ovom nivou jačine duži period može doći do oštećenja sluha."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Upozorenje,\nTrenutno slušate glasan sadržaj na nivou jačine koji nije siguran.\n\nAko nastavite slušati ovako glasno, trajno će vam se oštetiti sluh."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li koristiti Prečicu za pristupačnost?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kada je prečica uključena, pritiskom i držanjem oba dugmeta za jačinu zvuka u trajanju od 3 sekunde pokrenut će se funkcija pristupačnosti."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Uključiti prečicu za funkcije pristupačnosti?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Isključi prečicu"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Ispravka boja"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjeno"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Dozvoljava pratećoj aplikaciji da isporučuje prateće poruke na drugim uređajima."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Pokreni usluge u prvom planu iz pozadine"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Dozvoljava pratećoj aplikaciji da iz pozadine pokrene usluge u prvom planu."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon je dostupan"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon je blokiran"</string>
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 080501d..b5e2c76 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Els PIN que has introduït no coincideixen."</string>
<string name="invalidPin" msgid="7542498253319440408">"Escriviu un PIN que tingui de 4 a 8 números."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Introdueix un PUK compost com a mínim de 8 nombres."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"La SIM està bloquejada pel PUK. Escriu el codi PUK per desbloquejar-la."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Escriu el PUK2 per desbloquejar la SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"No és correcte; activa el bloqueig de RUIM/SIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="many">You have <xliff:g id="NUMBER_1">%d</xliff:g> remaining attempts before SIM is locked.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Permet que l\'aplicació finalitzi processos d\'altres aplicacions en segon pla. Aquesta acció pot fer que altres aplicacions deixin d\'executar-se."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Aquesta aplicació pot mostrar-se a sobre d\'altres aplicacions"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Aquesta aplicació pot mostrar-se a sobre d\'altres aplicacions o d\'altres parts de la pantalla. Això pot interferir en l\'ús normal de les aplicacions i alterar la manera en què es mostren."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"amagar altres superposicions d\'aplicacions"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Aquesta aplicació pot sol·licitar al sistema que amagui les superposicions d\'altres aplicacions perquè no s\'hi mostrin a sobre."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"Executar en segon pla"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Aquesta aplicació es pot executar en segon pla. Això pot exhaurir la bateria més ràpidament."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"Utilitzar dades en segon pla"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Torna-ho a provar"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Desbl. per accedir a totes les funcions i dades"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"S\'ha superat el nombre màxim d\'intents de Desbloqueig facial"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"No hi ha cap SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"No hi ha cap SIM a la tauleta."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"No hi ha cap SIM al dispositiu Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"No hi ha cap SIM al telèfon."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Afegeix una SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Falta la SIM o no es pot llegir. Afegeix una SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"La SIM no es pot utilitzar."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"La SIM s\'ha desactivat permanentment.\n Contacta amb el proveïdor de serveis sense fil per obtenir-ne una altra."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Pista anterior"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Pista següent"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Posa en pausa"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avança ràpidament"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Només trucades d\'emergència"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Xarxa bloquejada"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"La SIM està bloquejada pel PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consulta la guia d\'usuari o posa\'t en contacte amb el servei d\'atenció al client."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"La SIM està bloquejada."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"S\'està desbloquejant la targeta SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Has dibuixat el patró de desbloqueig de manera incorrecta <xliff:g id="NUMBER_0">%1$d</xliff:g> vegades. \n\nTorna-ho a provar d\'aquí a <xliff:g id="NUMBER_1">%2$d</xliff:g> segons."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Has escrit malament la contrasenya <xliff:g id="NUMBER_0">%1$d</xliff:g> vegades. \n\nTorna-ho a provar d\'aquí a <xliff:g id="NUMBER_1">%2$d</xliff:g> segons."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Has escrit malament la contrasenya <xliff:g id="NUMBER_0">%1$d</xliff:g> vegades. \n\nTorna-ho a provar d\'aquí a <xliff:g id="NUMBER_1">%2$d</xliff:g> segons."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Surt d\'aquesta pàgina"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Queda\'t en aquesta pàgina"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nConfirmes que vols sortir d\'aquesta pàgina?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirma"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Consell: Pica dos cops per ampliar i per reduir."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Em. aut."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Conf. empl. aut."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Emplenament automàtic amb <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Província"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Codi postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estat"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Codi postal"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Comtat"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Illa"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Districte"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departament"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefectura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parròquia"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Àrea"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"lectura dels marcadors i l\'historial web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permet que l\'aplicació llegeixi l\'historial de tots els URL que has visitat amb el navegador i tots els marcadors. Nota: És possible que aquest permís no s\'apliqui a navegadors de tercers o a altres aplicacions amb capacitats de navegació web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"introducció de marcadors i d\'historial web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permet que l\'aplicació modifiqui l\'historial del navegador o els marcadors de la tauleta. Això pot permetre que l\'aplicació esborri o modifiqui les dades del navegador. Nota: És possible que aquest permís no s\'apliqui a navegadors de tercers o a altres aplicacions amb capacitats de navegació web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permet que l\'aplicació modifiqui l\'historial o les adreces d\'interès que hagis desat al dispositiu Android TV. D\'aquesta manera, l\'aplicació pot esborrar o modificar les dades del navegador. Nota: és possible que aquest permís no s\'apliqui a navegadors de tercers ni a altres aplicacions amb funcions de navegació web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permet que l\'aplicació modifiqui l\'historial del navegador o els marcadors del telèfon. Això pot permetre que l\'aplicació esborri o modifiqui les dades del navegador. Nota: És possible que aquest permís no s\'apliqui a navegadors de tercers o a altres aplicacions amb capacitats de navegació web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"configurar una alarma"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permet que l\'aplicació defineixi una alarma en una aplicació de despertador instal·lada. És possible que algunes aplicacions de despertador no incorporin aquesta funció."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"afegeix bústia de veu"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permet que l\'aplicació afegeixi missatges a la safata d\'entrada de la bústia de veu."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Modifica els permisos d\'ubicació del navegador"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permet que l\'aplicació modifiqui els permisos d\'ubicació del navegador. Les aplicacions malicioses poden utilitzar-ho per enviar la informació d\'ubicació a llocs web arbitraris."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Voleu que el navegador recordi aquesta contrasenya?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ara no"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Recorda-ho"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Mai"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"No tens permís per obrir aquesta pàgina."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text copiat al Porta-retalls."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat dades de: <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat dades del porta-retalls"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat text que has copiat"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat una imatge que has copiat"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat contingut que has copiat"</string>
<string name="more_item_label" msgid="7419249600215749115">"Més"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menú+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Pots canviar aquesta opció més endavant a Configuració > Aplicacions"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Permet sempre"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"No permetis mai"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"La SIM s\'ha suprimit"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"La xarxa mòbil no estarà disponible fins que no reiniciïs amb una SIM vàlida."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Fet"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"La SIM s\'ha afegit"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Reinicia el dispositiu per accedir a la xarxa mòbil."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Reinicia"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Activa el servei mòbil"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"La SIM està desactivada. Introdueix el codi PUK per continuar. Contacta amb l\'operador de telefonia mòbil per obtenir detalls."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Introdueix el codi PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirma el codi PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"S\'està desbloquejant la targeta SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Codi PIN incorrecte."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Escriu un PIN que tingui de 4 a 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"El codi PUK ha de tenir 8 números."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Elimina"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vols apujar el volum per sobre del nivell recomanat?\n\nSi escoltes música a un volum alt durant períodes llargs, pots danyar-te l\'oïda."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Advertiment:\nHas superat la quantitat de senyals sonors forts que una persona pot escoltar de manera segura amb els auriculars en una setmana.\n\nSi superes aquest límit, danyaràs la teva audició permanentment."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Advertiment:\nHas superat 5 vegades la quantitat de senyals sonors forts que una persona pot escoltar de manera segura amb els auriculars en una setmana.\n\nS\'ha abaixat el volum per protegir la teva audició."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"El nivell al qual estàs escoltant contingut multimèdia pot provocar danys auditius si es manté durant períodes llargs.\n\nSi continues reproduint-lo en aquest nivell durant períodes llargs, podria danyar la teva audició."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Advertiment:\nActualment, estàs escoltant i reproduint contingut a un volum alt i a un nivell no segur.\n\nSi continues escoltant-lo amb aquest volum, causarà danys a la teva audició permanentment."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vols fer servir la drecera d\'accessibilitat?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Si la drecera està activada, prem els dos botons de volum durant 3 segons per iniciar una funció d\'accessibilitat."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Vols desactivar la drecera de les funcions d\'accessibilitat?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactiva la drecera"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilitza la drecera"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversió de colors"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Correcció de color"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode d\'una mà"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuació extra"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S\'han mantingut premudes les tecles de volum. S\'ha activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Permet que una aplicació complementària enviï missatges complementaris a altres dispositius."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Inicia serveis en primer pla des d\'un segon pla"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permet que una aplicació complementària iniciï serveis en primer pla des d\'un segon pla."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"El micròfon està disponible"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"El micròfon està bloquejat"</string>
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 2a6383f..7fe373f 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Zadané kódy PIN se neshodují."</string>
<string name="invalidPin" msgid="7542498253319440408">"Zadejte kód PIN o délce 4-8 číslic."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Zadejte osmimístný nebo delší kód PUK."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM karta je blokována pomocí kódu PUK. Odblokujete ji zadáním kódu PUK."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM kartu odblokujete zadáním kódu PUK2."</string>
<string name="enablePin" msgid="2543771964137091212">"Operace nebyla úspěšná, povolte zámek SIM/RUIM karty."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="few">Máte ještě <xliff:g id="NUMBER_1">%d</xliff:g> pokusy. Poté bude SIM karta uzamčena.</item>
@@ -325,7 +323,7 @@
<string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string>
<string name="permgroupdesc_phone" msgid="270048070781478204">"uskutečňování a spravování telefonních hovorů"</string>
<string name="permgrouplab_sensors" msgid="9134046949784064495">"Tělesné senzory"</string>
- <string name="permgroupdesc_sensors" msgid="2610631290633747752">"přístup k datům ze snímačů vašich životních funkcí"</string>
+ <string name="permgroupdesc_sensors" msgid="2610631290633747752">"přístup k datům ze senzorů vašich životních funkcí"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Oznámení"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"zobrazovat oznámení"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Načítat obsah oken"</string>
@@ -390,6 +388,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Umožňuje aplikaci ukončit procesy na pozadí ostatních aplikací. Mohlo by dojít k zastavení ostatních aplikací."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Zobrazení přes ostatní aplikace"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Tato aplikace se může zobrazit přes ostatní aplikace a další části obrazovky. Může tak omezit použitelnost aplikací a změnit způsob jejich zobrazení."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"skrýt překryvné vrstvy ostatních aplikací"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Tato aplikace může systém požádat, aby nad ní nezobrazoval překryvné vrstvy z jiných aplikací."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"spuštění na pozadí"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Tato aplikace může být spuštěna na pozadí. Baterie se bude vybíjet rychleji."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"využití dat na pozadí"</string>
@@ -965,22 +965,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Zkusit znovu"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Funkce a data jsou k dispozici po odemčení"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Překročili jste maximální povolený počet pokusů o odemknutí obličejem."</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Žádná SIM karta"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"V tabletu není SIM karta."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"V zařízení Android TV není SIM karta."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"V telefonu není SIM karta."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Přidejte SIM kartu."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM karta chybí nebo je nečitelná. Přidejte SIM kartu."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM kartu nelze použít."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM karta byla natrvalo deaktivována.\n Požádejte svého poskytovatele bezdrátových služeb o další SIM kartu."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Předchozí skladba"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Další skladba"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pozastavit"</string>
@@ -990,13 +982,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Přetočit vpřed"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Pouze tísňová volání"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Síť je blokována"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM karta je blokována pomocí kódu PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Další informace najdete v uživatelské příručce; nebo kontaktujte zákaznickou podporu."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM karta je zablokována."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Odblokování SIM karty…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Již <xliff:g id="NUMBER_0">%1$d</xliff:g>krát jste použili nesprávné bezpečnostní gesto. \n\nZkuste to znovu za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Již <xliff:g id="NUMBER_0">%1$d</xliff:g>krát jste nesprávně zadali heslo. \n\nZkuste to znovu za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Již <xliff:g id="NUMBER_0">%1$d</xliff:g>krát jste nesprávně zadali kód PIN. \n\nZkuste to znovu za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
@@ -1069,50 +1058,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Opustit stránku"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Zůstat na této stránce"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nOpravdu tuto stránku chcete opustit?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Potvrdit"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: Dvojitým klepnutím můžete zobrazení přiblížit nebo oddálit."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Nastav aut. vyp."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automatické vyplňování pomocí služby <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincie"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"PSČ"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Stát"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"PSČ"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Okres"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ostrov"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Okres"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Department"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Farnost"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Oblast"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirát"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"čtení webových záložek a historie"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Umožňuje aplikaci číst historii všech adres URL navštívených v Prohlížeči a všechny záložky v Prohlížeči. Poznámka: Pro prohlížeče třetí strany a jiné aplikace umožňující procházení webu toto oprávnění platit nemusí."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"psaní webových záložek a historie"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Umožňuje aplikaci upravit historii prohlížeče nebo záložky uložené v tabletu. Aplikace s tímto oprávněním může vymazat či pozměnit data prohlížeče. Poznámka: Pro prohlížeče třetí strany a jiné aplikace umožňující procházení webu toto oprávnění platit nemusí."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Umožňuje aplikaci upravovat historii Prohlížeče a záložky uložené v zařízení Android TV. Aplikaci to může umožnit vymazat nebo upravit data Prohlížeče. Poznámka: Pro prohlížeče třetí strany a jiné aplikace umožňující procházení webu toto oprávnění platit nemusí."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Umožňuje aplikaci upravit historii prohlížeče nebo záložky uložené v telefonu. Aplikace s tímto oprávněním může vymazat či pozměnit data prohlížeče. Poznámka: Pro prohlížeče třetí strany a jiné aplikace umožňující procházení webu toto oprávnění platit nemusí."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"nastavení budíku"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Umožňuje aplikaci nastavit budík v nainstalované aplikaci budík. Některé aplikace budík tuto funkci nemusí obsahovat."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"přidat hlasovou zprávu"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Umožňuje aplikaci přidávat zprávy do hlasové schránky."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"změna oprávnění prohlížeče poskytovat informace o zeměpisné poloze"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Umožňuje aplikaci upravit oprávnění funkce geolokace v prohlížeči. Škodlivé aplikace toho mohou využít k odeslání údajů o poloze na libovolné webové stránky."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Chcete, aby si prohlížeč zapamatoval toto heslo?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Teď ne"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Zapamatovat"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nikdy"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nemáte povolení otevřít tuto stránku."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text byl zkopírován do schránky."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila data z aplikace <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila obsah ze schránky"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný text"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný obrázek"</string>
- <string name="pasted_content" msgid="646276353060777131">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný obsah"</string>
<string name="more_item_label" msgid="7419249600215749115">"Více"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1380,13 +1331,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Svoji volbu můžete později změnit v nabídce Nastavení > Aplikace."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Povolit vždy"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nepovolit nikdy"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM karta byla odebrána"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilní síť bude dostupná až poté, co vložíte platnou SIM kartu a restartujete zařízení."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Hotovo"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM karta byla přidána"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Mobilní síť bude přístupná po restartu zařízení."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Restartovat"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivovat mobilní službu"</string>
@@ -1698,8 +1646,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM karta byla deaktivována. Chcete-li pokračovat, je třeba zadat kód PUK. Podrobné informace získáte od operátora."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Zadejte požadovaný kód PIN."</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Potvrďte požadovaný kód PIN."</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Odblokování SIM karty…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Nesprávný kód PIN."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Zadejte kód PIN o délce 4–8 číslic."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Kód PUK by měl obsahovat 8 číslic."</string>
@@ -1728,6 +1675,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Odebrat"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zvýšit hlasitost nad doporučenou úroveň?\n\nDlouhodobý poslech hlasitého zvuku může poškodit sluch."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Varování:\nPřekročili jste týdenní množství hlasitého zvuku, které lze bezpečně poslouchat přes sluchátka.\n\nPřekračování tohoto limitu trvale poškodí váš sluch."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Varování:\nPřekročili jste 5násobek týdenního množství hlasitého zvuku, které lze bezpečně poslouchat přes sluchátka.\n\nKvůli ochraně vašeho sluchu byla snížena hlasitost."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Hlasitost, se kterou posloucháte média, může při dlouhodobém používání vést k poškození sluchu.\n\nPokud budete v přehrávání touto hlasitostí pokračovat dlouhou dobu, může vám to poškodit sluch."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Varování:\nMomentálně posloucháte obsah nebezpečně hlasitě.\n\nPokud budete v poslechu takto hlasitého zvuku pokračovat, trvale vám to poškodí sluch."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Použít zkratku přístupnosti?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Když je tato zkratka zapnutá, můžete funkci přístupnosti spustit tím, že na tři sekundy podržíte obě tlačítka hlasitosti."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Zapnout zkratku funkcí pro usnadnění přístupu?"</string>
@@ -1756,8 +1707,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Vypnout zkratku"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použít zkratku"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Převrácení barev"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Korekce barev"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jedné ruky"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Velmi tmavé"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string>
@@ -2354,8 +2304,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Umožňuje doprovodné aplikaci doručovat doprovodné zprávy do jiných zařízení."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Spouštět z pozadí služby v popředí"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Umožňuje doprovodné aplikaci spouštět z pozadí služby v popředí."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon je dostupný"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon je zablokován"</string>
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 74589fe..715349d 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"De indtastede pinkoder er ikke ens"</string>
<string name="invalidPin" msgid="7542498253319440408">"Angiv en pinkode på mellem 4 og 8 tal."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Angiv en PUK-kode på 8 eller flere cifre."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Dit SIM-kort er låst med PUK-koden. Angiv PUK-koden for at låse det op."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Angiv PUK2-koden for at fjerne blokeringen fra SIM-kortet."</string>
<string name="enablePin" msgid="2543771964137091212">"Mislykkedes. Aktivér SIM-/RUIM-lås."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Du har <xliff:g id="NUMBER_1">%d</xliff:g> forsøg tilbage, før SIM-kortet bliver låst.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Tillader, at appen kan afslutte baggrundsprocesser for andre apps. Dette kan forårsage, at andre apps holder op med at virke."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Denne app kan vises oven på andre apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Denne app kan vises oven på andre apps eller andre dele af skærmen. Dette kan forstyrre den normale brug af appen og ændre visningen af andre apps."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"skjul overlejringer fra andre apps"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Denne app anmoder om, at systemet skjuler overlejringer, der stammer fra apps, så disse overlejringerne ikke vises over appen."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"kør i baggrunden"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Denne app kan køre i baggrunden. Dette kan dræne batteriet hurtigere."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"brug data i baggrunden"</string>
@@ -618,11 +618,11 @@
<string name="biometric_error_generic" msgid="6784371929985434439">"Der opstod fejl i forbindelse med godkendelse"</string>
<string name="screen_lock_app_setting_name" msgid="6054944352976789228">"Brug skærmlås"</string>
<string name="screen_lock_dialog_default_subtitle" msgid="120359538048533695">"Angiv din skærmlås for at fortsætte"</string>
- <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Hold fingeren nede på sensoren"</string>
+ <string name="fingerprint_acquired_partial" msgid="4323789264604479684">"Hold fingeren på sensoren"</string>
<string name="fingerprint_acquired_insufficient" msgid="623888149088216458">"Fingeraftrykket kan ikke genkendes. Prøv igen."</string>
<string name="fingerprint_acquired_imager_dirty" msgid="1770676120848224250">"Rengør fingeraftrykssensoren, og prøv igen"</string>
<string name="fingerprint_acquired_imager_dirty_alt" msgid="9169582140486372897">"Rengør sensoren, og prøv igen"</string>
- <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Hold fingeren nede på sensoren"</string>
+ <string name="fingerprint_acquired_too_fast" msgid="1628459767349116104">"Hold fingeren på sensoren"</string>
<string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Du bevægede fingeren for langsomt. Prøv igen."</string>
<string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prøv med et andet fingeraftryk"</string>
<string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Der er for lyst"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Prøv igen"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Lås op for at se alle funktioner og data"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Det maksimale antal forsøg på at bruge ansigtslås er overskredet"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Intet SIM-kort"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Intet SIM-kort i tabletten."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Intet SIM-kort i din Android TV-enhed."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Intet SIM-kort i telefonen."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Tilføj et SIM-kort."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-kortet mangler eller kan ikke læses. Tilføj et SIM-kort."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Deaktiveret SIM-kort."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Dit SIM-kort er permanent deaktiveret.\n Kontakt din tjenesteudbyder for at få et nyt SIM-kort."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Forrige nummer"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Næste nummer"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pause"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Spol frem"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Kun nødopkald"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Netværket er låst"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-kortet er låst med PUK-koden."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Se brugervejledningen, eller kontakt kundeservice."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-kortet er låst."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM-kortet låses op…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Du har tegnet dit oplåsningsmønster forkert <xliff:g id="NUMBER_0">%1$d</xliff:g> gange. \n\nPrøv igen om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Du har indtastet din adgangskode forkert <xliff:g id="NUMBER_0">%1$d</xliff:g> gange. \n\nPrøv igen om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Du har indtastet en forkert pinkode <xliff:g id="NUMBER_0">%1$d</xliff:g> gange. \n\nPrøv igen om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Forlad denne side"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Bliv på denne side"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nEr du sikker på, at du vil navigere væk fra denne side?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Bekræft"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip! Dobbeltklik for at zoome ind eller ud."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofyld"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Konfigurer Autofyld"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Udfyld automatisk med <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provins"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postnummer"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Stat"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Postnummer"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Amt"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ø"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrikt"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Afdeling"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Præfektur"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Sogn"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Område"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"læse dine webbogmærker og -historik"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Tillader, at appen kan læse historikken om alle webadresser, som browseren har besøgt, og alle browserens bogmærker. Bemærk! Denne tilladelse håndhæves muligvis ikke af tredjepartsbrowsere eller andre apps med websøgningsfunktioner."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"skrive webbogmærker og -historik"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Tillader, at appen kan ændre browserens historik eller de bogmærker, der er gemt på din tablet. Dette kan give appen tilladelse til at slette eller ændre browserdata. Bemærk! Denne tilladelse håndhæves muligvis ikke af tredjepartsbrowsere eller andre apps med websøgningsfunktioner."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Tillader, at appen kan ændre browserens historik eller de bogmærker, der er gemt på din Android TV-enhed. Dette kan give appen tilladelse til at rydde eller ændre browserdata. Bemærk! Denne tilladelse håndhæves muligvis ikke af tredjepartsbrowsere eller andre apps med websøgningsfunktioner."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Tillader, at appen kan ændre browserens historik eller de bogmærker, der er gemt på din telefon. Dette kan give appen tilladelse til at slette eller ændre browserdata. Bemærk! Denne tilladelse håndhæves muligvis ikke af tredjepartsbrowsere eller andre apps med websøgningsfunktioner."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"indstille en alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Tillader, at appen kan indstille en alarm i en installeret alarmapp. Nogle alarmapps har muligvis ikke denne funktion."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"tilføje telefonsvarer"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Tillader, at appen kan tilføje beskeder på din telefonsvarer."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"skifte tilladelser til geoplacering i Browser"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Tillader, at appen kan ændre browserens tilladelser angående geoplacering. Ondsindede apps kan benytte dette til at sende oplysninger om sted til vilkårlige websites."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Ønsker du, at browseren skal huske denne adgangskode?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ikke nu"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Husk"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Aldrig"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Du har ikke tilladelse til at åbne denne side."</string>
- <string name="text_copied" msgid="2531420577879738860">"Teksten er kopieret til udklipsholderen."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold fra <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold fra din udklipsholder"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte tekst, som du har kopieret"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte et billede, som du har kopieret"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold, som du har kopieret"</string>
<string name="more_item_label" msgid="7419249600215749115">"Mere"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Du kan altid ændre dette i Indstillinger > Apps"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Tillad altid"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Tillad aldrig"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-kortet er fjernet"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Det mobile netværk er utilgængeligt, indtil du genstarter med et gyldigt SIM-kort."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Afslut"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-kortet er tilføjet"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Genstart din enhed for at få adgang til mobilnetværket."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Genstart"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivér mobilselskab"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-kortet er nu deaktiveret. Angiv PUK-koden for at fortsætte. Kontakt mobilselskabet for at få flere oplysninger."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Angiv den ønskede pinkode"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Bekræft den ønskede pinkode"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM-kortet låses op…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Forkert pinkode."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Angiv en pinkode på mellem 4 og 8 tal."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-koden skal være på 8 tal."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Fjern"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vil du skrue højere op end det anbefalede lydstyrkeniveau?\n\nDu kan skade hørelsen ved at lytte til meget høj musik over længere tid."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Advarsel!\nDu har overskredet den mængde af høje lydsignaler, det er forsvarligt at lytte til over en periode på en uge i dine høretelefoner.\n\nNår du overstiger denne grænse, tager din hørelse permanent skade."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Advarsel!\nDu har 5 gange overskredet den mængde af høje lydsignaler, det er forsvarligt at lytte til over en periode på en uge i dine høretelefoner.\n\nLydstyrken er blevet sænket for at beskytte din hørelse."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Den lydstyrke, du hører medier på, kan medføre høreskader over tid.\n\nHvis du fortsætter med at afspille medier ved så høj lydstyrke over længere tid, kan din hørelse tage skade."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"ADvarsel!\nDu lytter i øjeblikket til indhold, der afspilles ved så høj en lydstyrke, at det kan gå ud over din hørelse.\n\nHvis du fortsætter med at afspille indhold ved så høj lydstyrke, vil din hørelse tage skade."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vil du bruge genvejen til Hjælpefunktioner?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Når genvejen er aktiveret, kan du starte en hjælpefunktion ved at trykke på begge lydstyrkeknapper i tre sekunder."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Vil du aktivere genvejen til hjælpefunktioner?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Deaktiver genvej"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Brug genvej"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Ombytning af farver"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Farvekorrigering"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhåndstilstand"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dæmpet belysning"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er aktiveret."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Tillader, at en medfølgende app kan levere medfølgende meddelelser til andre enheder."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Start tjenester i forgrunden via tilladelser til tjenester i baggrunden"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Tillader, at en medfølgende app kan starte tjenester i forgrunden via tilladelser til tjenester i baggrunden."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofonen er tilgængelig"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofonen er blokeret"</string>
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 9cb496e..6733faa 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Die von dir eingegebenen PIN-Nummern stimmen nicht überein."</string>
<string name="invalidPin" msgid="7542498253319440408">"Gib eine PIN ein, die 4 bis 8 Zahlen enthält."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Gib eine mindestens achtstellige PUK ein."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Deine SIM-Karte ist mit einem PUK gesperrt. Gib zum Entsperren den PUK-Code ein."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Gib den PUK2-Code ein, um die SIM-Karte zu entsperren."</string>
<string name="enablePin" msgid="2543771964137091212">"Fehler. SIM-/RUIM-Sperre aktivieren."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Du hast noch <xliff:g id="NUMBER_1">%d</xliff:g> Versuche, bevor deine SIM-Karte gesperrt wird.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Ermöglicht der App, Hintergrundprozesse anderer Apps zu beenden. Das kann dazu führen, dass andere Apps nicht mehr ausgeführt werden."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"App kann über anderen Apps erscheinen"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Diese App kann über anderen Apps oder anderen Teilen des Bildschirms erscheinen. Dies kann sich auf die normale App-Nutzung und die Darstellung anderer Apps auswirken."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"Overlays von anderen Apps ausblenden"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Diese App kann anfordern, dass das System Overlays von Apps über ihr ausblendet."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"Im Hintergrund ausführen"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Diese App kann im Hintergrund ausgeführt werden. Dadurch kann sich der Akku schneller entladen."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"Im Hintergrund Daten verwenden"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Erneut versuchen"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Entsperren, um alle Funktionen und Daten zu nutzen"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Die maximal zulässige Anzahl an Versuchen zur Entsperrung per Gesichtserkennung wurde überschritten."</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Keine SIM-Karte"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Keine SIM-Karte im Tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Keine SIM-Karte in deinem Android TV-Gerät."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Keine SIM-Karte im Smartphone."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Lege eine SIM-Karte ein."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-Karte fehlt oder ist nicht lesbar. Lege eine SIM-Karte ein."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM-Karte ist nicht nutzbar."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Deine SIM-Karte wurde dauerhaft deaktiviert.\n Wende dich an deinen Mobilfunkanbieter, um eine andere SIM-Karte zu erhalten."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Vorheriger Titel"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Nächster Titel"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausieren"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Vorspulen"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Nur Notrufe"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Netzwerk gesperrt"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-Karte ist mit einem PUK gesperrt."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Weitere Informationen erhältst du im Nutzerhandbuch oder beim Kundendienst."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-Karte ist gesperrt."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM-Karte wird entsperrt…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Du hast dein Entsperrungsmuster <xliff:g id="NUMBER_0">%1$d</xliff:g>-mal falsch gezeichnet. \n\nBitte versuche es in <xliff:g id="NUMBER_1">%2$d</xliff:g> Sekunden noch einmal."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Du hast dein Passwort <xliff:g id="NUMBER_0">%1$d</xliff:g>-mal falsch eingegeben.\n\nBitte versuche es in <xliff:g id="NUMBER_1">%2$d</xliff:g> Sekunden noch einmal."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Du hast dein Passwort <xliff:g id="NUMBER_0">%1$d</xliff:g>-mal falsch eingegeben.\n\nBitte versuche es in <xliff:g id="NUMBER_1">%2$d</xliff:g> Sekunden noch einmal."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Diese Seite verlassen"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Auf dieser Seite bleiben"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nMöchtest du diese Seite wirklich verlassen?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Bestätigen"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tipp: Zum Vergrößern und Verkleinern doppeltippen"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Autofill einrichten"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autofill mit <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provinz"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postleitzahl"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Bundesstaat/-land"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Postleitzahl"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Landkreis"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Insel"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Bezirk"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Distrikt"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Präfektur"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Gemeinde"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Gebiet"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"Lesezeichen für Webseiten und das Webprotokoll lesen"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Ermöglicht der App, den Verlauf aller mit dem Browser besuchten URLs und sämtliche Lesezeichen des Browsers zu lesen. Hinweis: Diese Berechtigung kann nicht von Browsern von Drittanbietern oder anderen Apps mit Internetfunktionen erzwungen werden."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"Lesezeichen für Webseiten setzen und das Webprotokoll aufzeichnen"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Ermöglicht der App, den Browserverlauf und die Lesezeichen auf deinem Tablet zu ändern. Damit kann die App Browserdaten löschen und ändern. Hinweis: Diese Berechtigung kann nicht von Browsern von Drittanbietern oder anderen Apps mit Internetfunktionen erzwungen werden."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Ermöglicht der App, den Browserverlauf und die Lesezeichen zu ändern, die auf dem Android TV-Gerät gespeichert sind. Damit kann die App Browserdaten löschen oder ändern. Hinweis: Für Browser von Drittanbietern oder andere Apps mit Webfunktionen gilt diese Berechtigung nicht."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Ermöglicht der App, den Browserverlauf und die Lesezeichen auf deinem Telefon zu ändern. Damit kann die App Browserdaten löschen und ändern. Hinweis: Diese Berechtigung kann nicht von Browsern von Drittanbietern oder anderen Apps mit Internetfunktionen erzwungen werden."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"Wecker stellen"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Ermöglicht der App, einen Weckruf in einer installierten Wecker-App einzurichten. Einige Wecker-Apps implementieren diese Funktion möglicherweise nicht."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"Mailboxnachrichten hinzufügen"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Ermöglicht der App, Nachrichten zu deinem Mailbox-Posteingang hinzuzufügen"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Geolokalisierungsberechtigungen des Browsers ändern"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Ermöglicht der App, die Geolokalisierungsberechtigungen des Browsers zu ändern. Schädliche Apps können so Standortinformationen an beliebige Websites senden."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Möchtest du, dass der Browser dieses Passwort speichert?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Nicht jetzt"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Speichern"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nie"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Du bist nicht zum Öffnen dieser Seite berechtigt."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text in Zwischenablage kopiert."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat etwas von <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> eingefügt"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat Informationen aus der Zwischenablage eingefügt"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat einen von dir kopierten Text eingefügt"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat ein von dir kopiertes Bild eingefügt"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat den von dir kopierten Inhalt eingefügt"</string>
<string name="more_item_label" msgid="7419249600215749115">"Mehr"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menü+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta-Taste +"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Du kannst dies unter \"Einstellungen > Apps\" ändern."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Immer zulassen"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nie zulassen"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-Karte wurde entfernt"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Das Mobilfunknetz ist erst wieder verfügbar, wenn du einen Neustart mit einer gültigen SIM-Karte durchführst."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Fertig"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-Karte wurde hinzugefügt"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Starte zur Nutzung des Mobilfunknetzes dein Gerät neu."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Neu starten"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Mobilfunkdienst aktivieren"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Die SIM-Karte ist jetzt deaktiviert. Gib den PUK-Code ein, um fortzufahren. Weitere Informationen erhältst du von deinem Mobilfunkanbieter."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Gewünschten PIN-Code eingeben"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Gewünschten PIN-Code bestätigen"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM-Karte wird entsperrt…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Falscher PIN-Code"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Gib eine 4- bis 8-stellige PIN ein."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Der PUK-Code muss 8 Ziffern aufweisen."</string>
@@ -1726,18 +1673,22 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Entfernen"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Lautstärke über den Schwellenwert anheben?\n\nWenn du über einen längeren Zeitraum Musik in hoher Lautstärke hörst, kann dies dein Gehör schädigen."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Warnung:\nDu hast den wöchentlichen Schwellenwert für laute Geräusche, die ohne Gesundheitsrisiko über Kopfhörer angehört werden können, überschritten.\n\nDies kann zu dauerhaften Hörschäden führen."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Warnung:\nDu hast den wöchentlichen Schwellenwert für laute Geräusche, die ohne Gesundheitsrisiko über Kopfhörer angehört werden können, 5-fach überschritten.\n\n Die Lautstärke wurde verringert, um Hörschäden zu vermeiden."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Die Lautstärke, mit der du dir Medien anhörst, kann über lange Zeiträume hinweg Hörschäden verursachen.\n\nWenn du dir weiterhin Medien bei dieser Lautstärke über lange Zeiträume hinweg anhörst, kann dies zu dauerhaften Hörschäden führen."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Warnung:\nDu überschreitest momentan den Schwellenwert für laute Geräusche, die ohne Gesundheitsrisiko über Kopfhörer angehört werden können.\n\nWenn du dir weiterhin Medien bei dieser Lautstärke anhörst, kann dies zu dauerhaften Hörschäden führen."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Verknüpfung für Bedienungshilfen verwenden?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Wenn die Verknüpfung aktiviert ist, kannst du die beiden Lautstärketasten drei Sekunden lang gedrückt halten, um eine Bedienungshilfe zu starten."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Verknüpfung für Bedienungshilfen aktivieren?"</string>
<string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"Wenn du beide Lautstärketasten einige Sekunden lang gedrückt hältst, aktivierst du die Bedienungshilfen. Dadurch kann sich die Funktionsweise deines Geräts ändern.\n\nAktuelle Funktionen:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nDu kannst ausgewählte Funktionen unter \"Einstellungen\" > \"Bedienungshilfen\" ändern."</string>
<string name="accessibility_shortcut_multiple_service_list" msgid="2128323171922023762">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string>
- <string name="accessibility_shortcut_single_service_warning_title" msgid="1909518473488345266">"Verknüpfung für <xliff:g id="SERVICE">%1$s</xliff:g> aktivieren?"</string>
+ <string name="accessibility_shortcut_single_service_warning_title" msgid="1909518473488345266">"Kurzbefehl für <xliff:g id="SERVICE">%1$s</xliff:g> aktivieren?"</string>
<string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"Wenn du beide Lautstärketasten einige Sekunden lang gedrückt hältst, aktivierst du die Bedienungshilfe \"<xliff:g id="SERVICE">%1$s</xliff:g>\". Dadurch kann sich die Funktionsweise deines Geräts ändern.\n\nUnter \"Einstellungen > \"Bedienungshilfen\" kannst du dieser Verknüpfung eine andere Funktion zuweisen."</string>
<string name="accessibility_shortcut_on" msgid="5463618449556111344">"Aktivieren"</string>
<string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nicht aktivieren"</string>
<string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"AN"</string>
<string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"AUS"</string>
- <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> die vollständige Kontrolle über dein Gerät geben?"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"„<xliff:g id="SERVICE">%1$s</xliff:g>“ die vollständige Kontrolle über dein Gerät geben?"</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für Apps aktiviert werden, die dir Zugang zu App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Bildschirm aufrufen und steuern"</string>
<string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Die Funktion kann alle Inhalte auf dem Bildschirm lesen und diese Inhalte über andere Apps anzeigen."</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Verknüpfung deaktivieren"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Verknüpfung verwenden"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Farbumkehr"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Farbkorrektur"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Einhandmodus"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradunkel"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist aktiviert."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Ermöglicht einer Companion-App, Companion-Nachrichten an andere Geräte zu senden."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Dienste im Vordergrund aus dem Hintergrund starten"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Ermöglicht einer Companion-App, Dienste im Vordergrund aus dem Hintergrund zu starten."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon ist verfügbar"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon ist blockiert"</string>
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index dc3bc45..5c57f95 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Οι αριθμοί PIN που πληκτρολογήσατε δεν ταιριάζουν."</string>
<string name="invalidPin" msgid="7542498253319440408">"Πληκτρολογήστε έναν αριθμό PIN μεγέθους 4 έως 8 αριθμών."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Πληκτρολογήστε έναν κωδικό PUK με 8 αριθμούς ή περισσότερους."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Η SIM έχει κλειδωθεί με κωδικό PUK. Πληκτρολογήστε τον κωδικό PUK για να την ξεκλειδώσετε."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Πληκτρολογήστε PUK2 για να ξεκλειδώσετε τη SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Ανεπιτυχής προσπάθεια. Ενεργοποιήστε το Κλείδωμα SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Απομένουν άλλες <xliff:g id="NUMBER_1">%d</xliff:g> προσπάθειες προτού κλειδωθεί η κάρτα SIM.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Επιτρέπει στην εφαρμογή τον τερματισμό των διεργασιών παρασκηνίου άλλων εφαρμογών. Αυτό μπορεί να προκαλεί τη διακοπή λειτουργίας άλλων εφαρμογών."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Αυτή η εφαρμογή μπορεί να εμφανίζεται πάνω από άλλες εφαρμογές"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Αυτή η εφαρμογή μπορεί να εμφανίζεται πάνω από άλλες εφαρμογές ή άλλα τμήματα της οθόνης. Αυτό μπορεί να επηρεάσει την κανονική χρήση της εφαρμογής και να αλλάξει τον τρόπο με τον οποίο εμφανίζονται οι άλλες εφαρμογές."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"απόκρυψη άλλων επικαλύψεων εφαρμογών"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Αυτή η εφαρμογή μπορεί να ζητήσει από το σύστημα να κρύψει τις επικαλύψεις που προέρχονται από εφαρμογές ώστε να μην εμφανίζονται επάνω της."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"εκτέλεση στο παρασκήνιο"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Αυτή η εφαρμογή μπορεί να εκτελείται στο παρασκήνιο. Αυτό μπορεί να εξαντλήσει πιο γρήγορα την μπαταρία."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"χρήση δεδομένων στο παρασκήνιο"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Προσπαθήστε ξανά"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Ξεκλείδωμα για όλες τις λειτουργίες και δεδομένα"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Έγινε υπέρβαση του μέγιστου αριθμού προσπαθειών για Ξεκλείδωμα με το πρόσωπο"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Δεν υπάρχει SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Δεν υπάρχει SIM στο tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Δεν υπάρχει SIM στη συσκευή σας Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Δεν υπάρχει SIM στο τηλέφωνο."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Προσθέστε μια SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Η SIM λείπει ή δεν είναι δυνατή η ανάγνωσή της. Προσθέστε μια SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Η SIM δεν μπορεί να χρησιμοποιηθεί."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Η SIM απενεργοποιήθηκε οριστικά.\n Επικοινωνήστε με τον πάροχο υπηρεσιών ασύρματου δικτύου για μια νέα SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Προηγούμενο κομμάτι"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Επόμενο κομμάτι"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Παύση"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Γρήγορη προώθηση"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Μόνο κλήσεις έκτακτης ανάγκης"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Το δίκτυο κλειδώθηκε"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"Η SIM έχει κλειδωθεί με κωδικό PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Ανατρέξτε στον Οδηγό χρήσης ή επικοινωνήστε με την Εξυπηρέτηση πελατών."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"Η SIM είναι κλειδωμένη."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Ξεκλείδωμα SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Σχεδιάσατε εσφαλμένα το μοτίβο ξεκλειδώματος<xliff:g id="NUMBER_0">%1$d</xliff:g> φορές. \n\nΠροσπαθήστε ξανά σε <xliff:g id="NUMBER_1">%2$d</xliff:g> δευτερόλεπτα."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Έχετε πληκτρολογήσει τον κωδικό πρόσβασης εσφαλμένα <xliff:g id="NUMBER_0">%1$d</xliff:g> φορές. \n\nΠροσπαθήστε ξανά σε <xliff:g id="NUMBER_1">%2$d</xliff:g> δευτερόλεπτα."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Έχετε πληκτρολογήσει τον αριθμό σας PIN εσφαλμένα <xliff:g id="NUMBER_0">%1$d</xliff:g> φορές. \n\nΠροσπαθήστε ξανά σε <xliff:g id="NUMBER_1">%2$d</xliff:g> δευτερόλεπτα."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Αποχώρηση από αυτήν τη σελίδα"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Παραμονή σε αυτήν τη σελίδα"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nΕίστε βέβαιοι ότι θέλετε να απομακρυνθείτε από αυτήν τη σελίδα;"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Επιβεβαίωση"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Συμβουλή: Πατήστε δύο φορές για μεγέθυνση και σμίκρυνση."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Αυτόματη συμπλήρωση"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Ρύθμ.αυτ.συμπλ."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Αυτόματη συμπλήρωση με την υπηρεσία <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Επαρχία"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Ταχυδρομικός κώδικας"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Πολιτεία"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Ταχυδρομικός κώδικας"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Κομητεία"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Νησί"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Περιφέρεια"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Τμήμα"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Νομός"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Ενορία"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Περιοχή"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Εμιράτο"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"διαβάζει τους σελιδοδείκτες και το ιστορικού ιστού"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Επιτρέπει στην εφαρμογή την ανάγνωση του ιστορικού όλων των διευθύνσεων URL που έχει επισκεφτεί το πρόγραμμα περιήγησης, καθώς και όλων των σελιδοδεικτών του προγράμματος περιήγησης. Σημείωση: αυτή η άδεια ίσως να μην μπορεί να εφαρμοστεί από τρίτα προγράμματα περιήγησης ή άλλες εφαρμογές με δυνατότητες περιήγησης ιστού."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"εγγράφει σελιδοδείκτες και ιστορικό ιστού"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Επιτρέπει στην εφαρμογή την τροποποίηση του ιστορικού του προγράμματος περιήγησης ή των σελιδοδεικτών που έχουν αποθηκευτεί στο tablet σας. Αυτό μπορεί να δίνει τη δυνατότητα στην εφαρμογή να διαγράφει ή να τροποποιεί δεδομένα του προγράμματος περιήγησης. Σημείωση: αυτή η άδεια ίσως να μην μπορεί να εφαρμοστεί από τρίτα προγράμματα περιήγησης ή άλλες εφαρμογές με δυνατότητες περιήγησης ιστού."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Επιτρέπει στην εφαρμογή την τροποποίηση του ιστορικού ή των σελιδοδεικτών του προγράμματος περιήγησης που αποθηκεύονται στη συσκευή Android σας. Αυτή η άδεια επιτρέπει στην εφαρμογή να διαγράφει ή να τροποποιεί τα δεδομένα του προγράμματος περιήγησης. Σημείωση: Αυτή η άδεια δεν πρέπει να εφαρμόζεται από τρίτα προγράμματα περιήγησης ή άλλες εφαρμογές με δυνατότητες περιήγησης στον ιστό."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Επιτρέπει στην εφαρμογή την τροποποίηση του ιστορικού του προγράμματος περιήγησης ή των σελιδοδεικτών που έχουν αποθηκευτεί στο τηλέφωνό σας. Αυτό μπορεί να δίνει τη δυνατότητα στην εφαρμογή να διαγράφει ή να τροποποιεί δεδομένα του προγράμματος περιήγησης. Σημείωση: αυτή η άδεια ίσως να μην μπορεί να εφαρμοστεί από τρίτα προγράμματα περιήγησης ή άλλες εφαρμογές με δυνατότητες περιήγησης ιστού."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ρυθμίζει το ξυπνητήρι"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Επιτρέπει στην εφαρμογή τη ρύθμιση μιας ειδοποίησης σε μια εγκατεστημένη εφαρμογή ξυπνητηριού. Ορισμένες εφαρμογές ξυπνητηριού ενδέχεται να μην μπορούν να ενσωματώσουν αυτήν τη λειτουργία."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"προσθέτει τηλεφωνητή"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Επιτρέπει στην εφαρμογή να προσθέτει μηνύματα στα εισερχόμενα του αυτόματου τηλεφωνητή σας."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"τροποποιεί δικαιώματα γεωγραφικής θέσης του Προγράμματος περιήγησης"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Επιτρέπει στην εφαρμογή την τροποποίηση των αδειών γεωτοποθεσίας του Προγράμματος περιήγησης. Τυχόν κακόβουλες εφαρμογές ενδέχεται να το χρησιμοποιήσουν για να επιτρέψουν την αποστολή πληροφοριών τοποθεσίας σε αυθαίρετους ιστότοπους."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Θέλετε το πρόγραμμα περιήγησης να διατηρήσει αυτόν τον κωδικό πρόσβασης;"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Να μην γίνει τώρα"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Διατήρηση"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Ποτέ"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Δεν έχετε άδεια για να ανοίξετε αυτήν τη σελίδα."</string>
- <string name="text_copied" msgid="2531420577879738860">"Το κείμενο αντιγράφηκε στο πρόχειρο."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> έκανε επικόλληση από την εφαρμογή <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε δεδομένα από το πρόχειρο"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε το κείμενο που αντιγράψατε"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε την εικόνα που αντιγράψατε"</string>
- <string name="pasted_content" msgid="646276353060777131">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε περιεχόμενο που αντιγράψατε"</string>
<string name="more_item_label" msgid="7419249600215749115">"Περισσότερα"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Πλήκτρο Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Μπορ.να το αλλάξ.αργ.στις Ρυθ. > Εφ."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Να επιτρέπεται πάντα"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Να μην επιτρέπεται ποτέ"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Η SIM αφαιρέθηκε"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Το δίκτυο κινητής τηλεφωνίας δεν θα είναι διαθέσιμο μέχρι να κάνετε επανεκκίνηση με μια έγκυρη SIM."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Τέλος"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Η SIM προστέθηκε"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Επανεκκινήστε τη συσκευή σας για να αποκτήσετε πρόσβαση στο δίκτυο κινητής τηλεφωνίας."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Επανεκκίνηση"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Ενεργοποίηση υπηρεσίας κινητής τηλεφωνίας"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Η κάρτα SIM είναι απενεργοποιημένη αυτή τη στιγμή. Εισαγάγετε τον κωδικό PUK για να συνεχίσετε. Επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας σας για λεπτομέρειες."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Εισαγάγετε τον απαιτούμενο κωδικό PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Επιβεβαιώστε τον απαιτούμενο κωδικό PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Ξεκλείδωμα SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Λανθασμένος κωδικός PIN."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Πληκτρολογήστε έναν αριθμό PIN που να αποτελείται από 4 έως 8 αριθμούς."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Ο κωδικός PUK θα πρέπει να αποτελείται από 8 αριθμούς."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Κατάργηση"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Αυξάνετε την ένταση ήχου πάνω από το επίπεδο ασφαλείας;\n\nΑν ακούτε μουσική σε υψηλή ένταση για μεγάλο χρονικό διάστημα ενδέχεται να προκληθεί βλάβη στην ακοή σας."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Προειδοποίηση,\nΈχετε υπερβεί τον μέγιστο αριθμό ηχητικών σημάτων σε υψηλή ένταση που ένα άτομο μπορεί να ακούσει με ασφάλεια σε μία εβδομάδα με ακουστικά.\n\nΑν υπερβείτε αυτό το όριο, θα προκαλέσετε μόνιμη βλάβη στην ακοή σας."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Προειδοποίηση,\nΈχετε υπερβεί κατά 5 φορές τον μέγιστο αριθμό δυνατών ηχητικών σημάτων που ένα άτομο μπορεί να ακούσει με ασφάλεια σε μία εβδομάδα με ακουστικά.\n\nΗ ένταση χαμηλώθηκε για την προστασία της ακοής σας."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Η ένταση ήχου που επιλέγετε για την ακρόαση πολυμέσων μπορεί να προκαλέσει βλάβη στην ακοή σας όταν παρατείνεται για μεγάλα χρονικά διαστήματα.\n\nΑν συνεχίσετε την αναπαραγωγή σε αυτήν την ένταση, μπορεί να προκληθεί βλάβη στην ακοή σας."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Προειδοποίηση,\nΑκούτε περιεχόμενο σε υψηλή, μη ασφαλή ένταση.\n\nΑν συνεχίσετε με αυτήν την υψηλή ένταση, μπορεί να προκληθεί βλάβη στην ακοή σας."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Να χρησιμοποιείται η συντόμευση προσβασιμότητας;"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Όταν η συντόμευση είναι ενεργοποιημένη, το πάτημα και των δύο κουμπιών έντασης ήχου για 3 δευτερόλεπτα θα ξεκινήσει μια λειτουργία προσβασιμότητας."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Ενεργοποίηση συντόμευσης για λειτουργίες προσβασιμότητας;"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Απενεργοποίηση συντόμευσης"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Χρήση συντόμευσης"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Αντιστροφή χρωμάτων"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Διόρθωση χρωμάτων"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Λειτουργία ενός χεριού"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Επιπλέον μείωση φωτεινότητας"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ενεργοποιήθηκε."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Επιτρέπει σε μια συνοδευτική εφαρμογή να παρέχει μηνύματα σε άλλες συσκευές."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Εκκίνηση υπηρεσιών στο προσκήνιο από το παρασκήνιο"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Επιτρέπει σε μια συνοδευτική εφαρμογή να εκκινεί υπηρεσίες στο προσκήνιο από το παρασκήνιο."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Το μικρόφωνο είναι διαθέσιμο"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Το μικρόφωνο έχει αποκλειστεί"</string>
</resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 1b1a0c4..4e26ec2 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -386,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Allows the app to end background processes of other apps. This may cause other apps to stop running."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"This app can appear on top of other apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"hide other apps\' overlays"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"This app can request that the system hides overlays originating from apps from being shown on top of it."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"run in the background"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"This app can run in the background. This may drain battery faster."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"use data in the background"</string>
@@ -1054,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Leave this Page"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Stay on this Page"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nAre you sure you want to navigate away from this page?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirm"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: double-tap to zoom in and out."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Auto-fill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Set up Auto-fill"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autofill with <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Province"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postcode"</string>
- <string name="autofill_state" msgid="3341725337190434069">"State"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Zip code"</string>
- <string name="autofill_county" msgid="7781382735643492173">"County"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Island"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Department"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parish"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Area"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"read your Web bookmarks and history"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Allows the app to read the history of all URLs that the Browser has visited, and all of the Browser\'s bookmarks. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"write web bookmarks and history"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Allows the app to modify the Browser\'s history or bookmarks stored on your tablet. This may allow the app to delete or modify Browser data. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Allows the app to modify the browser\'s history or bookmarks stored on your Android TV device. This may allow the app to delete or modify browser data. Note: This permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Allows the app to modify the Browser\'s history or bookmarks stored on your phone. This may allow the app to delete or modify Browser data. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"set an alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Allows the app to set an alarm in an installed alarm clock app. Some alarm clock apps may not implement this feature."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"add voicemail"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Allows the app to add messages to your voicemail inbox."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Modify Browser geo-location permissions"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Allows the app to modify the Browser\'s geo-location permissions. Malicious apps may use this to allow sending location information to arbitrary websites."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Do you want the browser to remember this password?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Not now"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Remember"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Never"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"You don\'t have permission to open this page."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string>
<string name="more_item_label" msgid="7419249600215749115">"More"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1709,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Warning,\nYou have exceeded the amount of loud sound signals one can safely listen to in a week over headphones.\n\nGoing over this limit will permanently damage your hearing."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Warning,\nYou have exceeded five times the amount of loud sound signals one can safely listen to in a week over headphones.\n\nVolume has been lowered to protect your hearing."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"The level at which you are listening to media can result in hearing damage when sustained over long periods of time.\n\nContinuing to play at this level for long periods of time could damage your hearing."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Warning,\nYou are currently listening to loud content played at an unsafe level.\n\nContinuing to listen this loud will permanently damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Turn on shortcut for accessibility features?"</string>
@@ -2334,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Allows a companion app to deliver companion messages to other devices."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Start foreground services from background"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Allows a companion app to start foreground services from background."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Microphone is available"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Microphone is blocked"</string>
</resources>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index a2ffdb7..5e5256c 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -386,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Allows the app to end background processes of other apps. This may cause other apps to stop running."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"This app can appear on top of other apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"hide other apps overlays"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"This app can request that the system hides overlays originating from apps from being shown on top of it."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"run in the background"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"This app can run in the background. This may drain battery faster."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"use data in the background"</string>
@@ -1054,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Leave this Page"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Stay on this Page"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nAre you sure you want to navigate away from this page?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirm"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: Double-tap to zoom in and out."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Set up Autofill"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autofill with <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Province"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postal code"</string>
- <string name="autofill_state" msgid="3341725337190434069">"State"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP code"</string>
- <string name="autofill_county" msgid="7781382735643492173">"County"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Island"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Department"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parish"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Area"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"read your Web bookmarks and history"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Allows the app to read the history of all URLs that the Browser has visited, and all of the Browser\'s bookmarks. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"write web bookmarks and history"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Allows the app to modify the Browser\'s history or bookmarks stored on your tablet. This may allow the app to erase or modify Browser data. Note: this permission may note be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Allows the app to modify the Browser\'s history or bookmarks stored on your Android TV device. This may allow the app to erase or modify Browser data. Note: this permission may note be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Allows the app to modify the Browser\'s history or bookmarks stored on your phone. This may allow the app to erase or modify Browser data. Note: this permission may note be enforced by third-party browsers or other applications with web browsing capabilities."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"set an alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Allows the app to set an alarm in an installed alarm clock app. Some alarm clock apps may not implement this feature."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"add voicemail"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Allows the app to add messages to your voicemail inbox."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modify Browser geolocation permissions"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Allows the app to modify the Browser\'s geolocation permissions. Malicious apps may use this to allow sending location information to arbitrary web sites."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Do you want the browser to remember this password?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Not now"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Remember"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Never"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"You don\'t have permission to open this page."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text you copied"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image you copied"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content you copied"</string>
<string name="more_item_label" msgid="7419249600215749115">"More"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1709,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Warning,\nYou have exceeded the amount of loud sound signals one can safely listen to in a week over headphones.\n\nGoing over this limit will permanently damage your hearing."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Warning,\nYou have exceeded 5 times the amount of loud sound signals one can safely listen to in a week over headphones.\n\nVolume has been lowered to protect your hearing."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"The level at which you are listening to media can result in hearing damage when sustained over long periods of time.\n\nContinuing to play at this level for long periods of time could damage your hearing."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Warning,\nYou are currently listening to loud content played at an unsafe level.\n\nContinuing to listen this loud will permanently damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for 3 seconds will start an accessibility feature."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Turn on shortcut for accessibility features?"</string>
@@ -2334,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Allows a companion app to deliver companion messages to other devices."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Start foreground services from background"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Allows a companion app to start foreground services from background."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Microphone is available"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Microphone is blocked"</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 32774df..6600a4f 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -386,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Allows the app to end background processes of other apps. This may cause other apps to stop running."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"This app can appear on top of other apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"hide other apps\' overlays"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"This app can request that the system hides overlays originating from apps from being shown on top of it."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"run in the background"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"This app can run in the background. This may drain battery faster."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"use data in the background"</string>
@@ -1054,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Leave this Page"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Stay on this Page"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nAre you sure you want to navigate away from this page?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirm"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: double-tap to zoom in and out."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Auto-fill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Set up Auto-fill"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autofill with <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Province"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postcode"</string>
- <string name="autofill_state" msgid="3341725337190434069">"State"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Zip code"</string>
- <string name="autofill_county" msgid="7781382735643492173">"County"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Island"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Department"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parish"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Area"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"read your Web bookmarks and history"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Allows the app to read the history of all URLs that the Browser has visited, and all of the Browser\'s bookmarks. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"write web bookmarks and history"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Allows the app to modify the Browser\'s history or bookmarks stored on your tablet. This may allow the app to delete or modify Browser data. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Allows the app to modify the browser\'s history or bookmarks stored on your Android TV device. This may allow the app to delete or modify browser data. Note: This permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Allows the app to modify the Browser\'s history or bookmarks stored on your phone. This may allow the app to delete or modify Browser data. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"set an alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Allows the app to set an alarm in an installed alarm clock app. Some alarm clock apps may not implement this feature."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"add voicemail"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Allows the app to add messages to your voicemail inbox."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Modify Browser geo-location permissions"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Allows the app to modify the Browser\'s geo-location permissions. Malicious apps may use this to allow sending location information to arbitrary websites."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Do you want the browser to remember this password?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Not now"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Remember"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Never"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"You don\'t have permission to open this page."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string>
<string name="more_item_label" msgid="7419249600215749115">"More"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1709,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Warning,\nYou have exceeded the amount of loud sound signals one can safely listen to in a week over headphones.\n\nGoing over this limit will permanently damage your hearing."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Warning,\nYou have exceeded five times the amount of loud sound signals one can safely listen to in a week over headphones.\n\nVolume has been lowered to protect your hearing."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"The level at which you are listening to media can result in hearing damage when sustained over long periods of time.\n\nContinuing to play at this level for long periods of time could damage your hearing."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Warning,\nYou are currently listening to loud content played at an unsafe level.\n\nContinuing to listen this loud will permanently damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Turn on shortcut for accessibility features?"</string>
@@ -2334,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Allows a companion app to deliver companion messages to other devices."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Start foreground services from background"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Allows a companion app to start foreground services from background."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Microphone is available"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Microphone is blocked"</string>
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index f742427..34438a5 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -386,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Allows the app to end background processes of other apps. This may cause other apps to stop running."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"This app can appear on top of other apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"hide other apps\' overlays"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"This app can request that the system hides overlays originating from apps from being shown on top of it."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"run in the background"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"This app can run in the background. This may drain battery faster."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"use data in the background"</string>
@@ -1054,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Leave this Page"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Stay on this Page"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nAre you sure you want to navigate away from this page?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirm"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: double-tap to zoom in and out."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Auto-fill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Set up Auto-fill"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autofill with <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Province"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postcode"</string>
- <string name="autofill_state" msgid="3341725337190434069">"State"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Zip code"</string>
- <string name="autofill_county" msgid="7781382735643492173">"County"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Island"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Department"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parish"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Area"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"read your Web bookmarks and history"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Allows the app to read the history of all URLs that the Browser has visited, and all of the Browser\'s bookmarks. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"write web bookmarks and history"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Allows the app to modify the Browser\'s history or bookmarks stored on your tablet. This may allow the app to delete or modify Browser data. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Allows the app to modify the browser\'s history or bookmarks stored on your Android TV device. This may allow the app to delete or modify browser data. Note: This permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Allows the app to modify the Browser\'s history or bookmarks stored on your phone. This may allow the app to delete or modify Browser data. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"set an alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Allows the app to set an alarm in an installed alarm clock app. Some alarm clock apps may not implement this feature."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"add voicemail"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Allows the app to add messages to your voicemail inbox."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Modify Browser geo-location permissions"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Allows the app to modify the Browser\'s geo-location permissions. Malicious apps may use this to allow sending location information to arbitrary websites."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Do you want the browser to remember this password?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Not now"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Remember"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Never"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"You don\'t have permission to open this page."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string>
<string name="more_item_label" msgid="7419249600215749115">"More"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1709,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Warning,\nYou have exceeded the amount of loud sound signals one can safely listen to in a week over headphones.\n\nGoing over this limit will permanently damage your hearing."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Warning,\nYou have exceeded five times the amount of loud sound signals one can safely listen to in a week over headphones.\n\nVolume has been lowered to protect your hearing."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"The level at which you are listening to media can result in hearing damage when sustained over long periods of time.\n\nContinuing to play at this level for long periods of time could damage your hearing."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Warning,\nYou are currently listening to loud content played at an unsafe level.\n\nContinuing to listen this loud will permanently damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Turn on shortcut for accessibility features?"</string>
@@ -2334,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Allows a companion app to deliver companion messages to other devices."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Start foreground services from background"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Allows a companion app to start foreground services from background."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Microphone is available"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Microphone is blocked"</string>
</resources>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 5a997be..02744a6 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -386,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Allows the app to end background processes of other apps. This may cause other apps to stop running."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"This app can appear on top of other apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"hide other apps overlays"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"This app can request that the system hides overlays originating from apps from being shown on top of it."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"run in the background"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"This app can run in the background. This may drain battery faster."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"use data in the background"</string>
@@ -1054,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Leave this Page"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Stay on this Page"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nAre you sure you want to navigate away from this page?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirm"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: Double-tap to zoom in and out."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Set up Autofill"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autofill with <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Province"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postal code"</string>
- <string name="autofill_state" msgid="3341725337190434069">"State"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP code"</string>
- <string name="autofill_county" msgid="7781382735643492173">"County"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Island"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Department"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parish"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Area"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"read your Web bookmarks and history"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Allows the app to read the history of all URLs that the Browser has visited, and all of the Browser\'s bookmarks. Note: this permission may not be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"write web bookmarks and history"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Allows the app to modify the Browser\'s history or bookmarks stored on your tablet. This may allow the app to erase or modify Browser data. Note: this permission may note be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Allows the app to modify the Browser\'s history or bookmarks stored on your Android TV device. This may allow the app to erase or modify Browser data. Note: this permission may note be enforced by third-party browsers or other applications with web browsing capabilities."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Allows the app to modify the Browser\'s history or bookmarks stored on your phone. This may allow the app to erase or modify Browser data. Note: this permission may note be enforced by third-party browsers or other applications with web browsing capabilities."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"set an alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Allows the app to set an alarm in an installed alarm clock app. Some alarm clock apps may not implement this feature."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"add voicemail"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Allows the app to add messages to your voicemail inbox."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modify Browser geolocation permissions"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Allows the app to modify the Browser\'s geolocation permissions. Malicious apps may use this to allow sending location information to arbitrary web sites."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Do you want the browser to remember this password?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Not now"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Remember"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Never"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"You don\'t have permission to open this page."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text you copied"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image you copied"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content you copied"</string>
<string name="more_item_label" msgid="7419249600215749115">"More"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1709,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Warning,\nYou have exceeded the amount of loud sound signals one can safely listen to in a week over headphones.\n\nGoing over this limit will permanently damage your hearing."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Warning,\nYou have exceeded 5 times the amount of loud sound signals one can safely listen to in a week over headphones.\n\nVolume has been lowered to protect your hearing."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"The level at which you are listening to media can result in hearing damage when sustained over long periods of time.\n\nContinuing to play at this level for long periods of time could damage your hearing."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Warning,\nYou are currently listening to loud content played at an unsafe level.\n\nContinuing to listen this loud will permanently damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for 3 seconds will start an accessibility feature."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Turn on shortcut for accessibility features?"</string>
@@ -2334,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Allows a companion app to deliver companion messages to other devices."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Start foreground services from background"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Allows a companion app to start foreground services from background."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Microphone is available"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Microphone is blocked"</string>
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 52053e8..2920b20 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Los PIN que ingresaste no coinciden."</string>
<string name="invalidPin" msgid="7542498253319440408">"Escribir un PIN que contenga entre 4 y 8 números."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Ingresa un código PUK de ocho números o más."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Tu tarjeta SIM está bloqueada con PUK. Escribe el código PUK para desbloquearla."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Escribe el código PUK2 para desbloquear la tarjeta SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Error; habilita el bloqueo de SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="many">You have <xliff:g id="NUMBER_1">%d</xliff:g> remaining attempts before SIM is locked.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Este permiso autoriza a la aplicación a interrumpir procesos en segundo plano de otras aplicaciones y puede hacer, por lo tanto, que esas aplicaciones dejen de ejecutarse."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Esta app puede superponerse a otras apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Esta app puede aparecer sobre otras apps o partes de la pantalla, lo que puede interferir con el uso normal de la app y cambiar la forma en que aparecen otras apps."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ocultar superposiciones de otras apps"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Esta app puede solicitar que el sistema oculte superposiciones procedentes de apps para que no se muestren sobre ella."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ejecutarse en segundo plano"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Esta app puede ejecutarse en segundo plano, lo que podría agotar la batería más rápido."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"usar datos en segundo plano"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Volver a intentarlo"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Desbloquea para acceder a funciones y datos"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Se superó el máximo de intentos permitido para el desbloqueo facial del dispositivo."</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"No hay ninguna tarjeta SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"No hay ninguna tarjeta SIM en la tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"No hay ninguna tarjeta SIM en el dispositivo Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"No hay ninguna tarjeta SIM en el teléfono."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Introduce una tarjeta SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Falta la tarjeta SIM o no se puede leer. Introduce una tarjeta SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Tarjeta SIM inutilizable."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Tu tarjeta SIM se desactivó permanentemente.\n Ponte en contacto con tu proveedor de servicios inalámbricos para obtener otra tarjeta SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Pista anterior"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Siguiente pista"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausar"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avanzar"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Solo llamadas de emergencia"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Red bloqueada"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"La tarjeta SIM está bloqueada con el código PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consulta la guía del usuario o comunícate con el servicio de atención al cliente."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"La tarjeta SIM está bloqueada."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Desbloqueando tarjeta SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Estableciste incorrectamente tu patrón de desbloqueo <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nVuelve a intentarlo en <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Escribiste incorrectamente tu contraseña <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nVuelve a intentarlo en <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Escribiste incorrectamente tu PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nVuelve a intentarlo en <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Abandonar esta página"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Quedarme en la página"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\n¿Confirmas que quieres salir de esta página?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmar"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Consejo: Toca dos veces para acercar y alejar la imagen."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autocompletar"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Conf. Autocompl."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autocompletar con <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincia"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Código postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estado"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Código postal"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Condado"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Isla"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrito"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamento"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefectura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Circunscripción"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Área"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirato"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"leer tus favoritos web y el historial"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permite que la aplicación consulte el historial de todas las URL visitadas por el navegador, y todos sus favoritos. Nota: Este permiso no puede ser utilizado por navegadores externos ni otras aplicaciones que tengan funciones de navegación por Internet."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"escribir favoritos web e historial"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permite que la aplicación modifique el historial o los favoritos del navegador almacenados en la tablet. La aplicación puede utilizar este permiso para borrar o modificar datos del navegador. Nota: Este permiso no puede ser utilizado por navegadores externos ni otras aplicaciones que tengan funciones de navegación por Internet."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permite que la app modifique el historial o los favoritos del navegador almacenados en el dispositivo Android TV. La app puede utilizar este permiso para borrar o modificar datos del navegador. Nota: A este permiso no lo pueden usar navegadores de terceros ni otras aplicaciones que tengan funciones de navegación web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permite que la aplicación modifique el historial o los favoritos del navegador almacenados en el dispositivo. La aplicación puede utilizar este permiso para borrar o modificar los datos del navegador. Nota: Este permiso no puede ser utilizado por navegadores externos ni otras aplicaciones que tengan funciones de navegación por Internet."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"programar una alarma"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permite que la aplicación establezca una alarma en una aplicación de alarma instalada. Es posible que algunas aplicaciones de alarma no incluyan esta función."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"agregar buzón de voz"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permite que la aplicación agregue mensajes a la bandeja de entrada de tu buzón de voz."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Modificar los permisos de ubicación geográfica del navegador"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permite que la aplicación modifique los permisos de ubicación geográfica del navegador. Las aplicaciones maliciosas pueden utilizar esto para permitir el envío de información de ubicación a sitios web arbitrarios."</string>
- <string name="save_password_message" msgid="2146409467245462965">"¿Quieres recordar esta contraseña en el navegador?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ahora no"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Recuerda"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nunca"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"No tienes permiso para abrir esta página."</string>
- <string name="text_copied" msgid="2531420577879738860">"Texto copiado en el portapapeles."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegó contenido de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegó información del portapapeles"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió a texto del portapapeles"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió a una imagen del portapapeles"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió al contenido del portapapeles"</string>
<string name="more_item_label" msgid="7419249600215749115">"Más"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menú+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Puedes cambiar esta opción más tarde en Configuración > Aplicaciones."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Permitir siempre"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"No permitir nunca"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Se quitó la tarjeta SIM"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"La red móvil no estará disponible hasta que reinicies, luego de insertar una tarjeta SIM válida."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Finalizar"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Se introdujo la tarjeta SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Reinicia el dispositivo para acceder a la red móvil."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Reiniciar"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Activa servicio de datos móviles"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"La tarjeta SIM está inhabilitada. Para continuar, ingresa el código PUK. Si quieres obtener más información, ponte en contacto con el proveedor."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Ingresa el código PIN deseado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirmar código PIN deseado"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Desbloqueando tarjeta SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Código PIN incorrecto"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Escribe un PIN que tenga de cuatro a ocho números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"El código PUK debe tener 8 números."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eliminar"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"¿Quieres subir el volumen por encima del nivel recomendado?\n\nEscuchar a un alto volumen durante largos períodos puede dañar tu audición."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Advertencia:\nSuperaste la cantidad de señales sonoras fuertes que se pueden escuchar con auriculares de forma segura a lo largo de una semana.\n\nExceder ese límite dañará tu audición de forma permanente."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Advertencia:\nSuperaste 5 veces la cantidad de señales sonoras fuertes que se pueden escuchar con auriculares de forma segura a lo largo de una semana.\n\nSe bajó el volumen para proteger tu audición."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"El volumen al que estás escuchando contenido multimedia puede provocar daños auditivos si se mantiene durante períodos prolongados.\n\nSeguir reproduciendo audio a este volumen durante largos períodos podría dañar tu audición."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Advertencia:\nEstás escuchando contenido a un volumen peligrosamente alto.\n\nSeguir reproduciendo audio a este volumen dañará tu audición de forma permanente."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"¿Usar acceso directo de accesibilidad?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Cuando la combinación de teclas está activada, puedes presionar los botones de volumen durante 3 segundos para iniciar una función de accesibilidad."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"¿Quieres activar la combinación de teclas para las funciones de accesibilidad?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactivar acceso directo"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar acceso directo"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Corrección de colores"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo de una mano"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Como mantuviste presionadas las teclas de volumen, se activó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Permite que una aplicación complementaria envíe mensajes complementarios a otros dispositivos."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Comenzar servicios en primer plano desde el segundo plano"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permite que una aplicación complementaria inicie servicios en primer plano desde el segundo plano."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"El micrófono está disponible"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"El micrófono está bloqueado"</string>
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 639ef0b..7ab1057 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Los códigos PIN introducidos no coinciden."</string>
<string name="invalidPin" msgid="7542498253319440408">"Introduce un código PIN con una longitud comprendida entre cuatro y ocho dígitos."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Escribe un código PUK de ocho caracteres o más."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"La SIM está bloqueada con el código PUK. Introduce el código PUK para desbloquearla."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Introduce el código PUK2 para desbloquear la SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Error, habilitar bloqueo de SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="many">You have <xliff:g id="NUMBER_1">%d</xliff:g> remaining attempts before SIM is locked.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Este permiso autoriza a la aplicación a interrumpir procesos en segundo plano de otras aplicaciones y puede hacer, por tanto, que esas aplicaciones dejen de ejecutarse."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Esta aplicación puede aparecer sobre otras aplicaciones"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Esta aplicación puede aparecer sobre otras aplicaciones u otras partes de la pantalla. Esto puede interferir con el uso normal de las aplicaciones y cambiar la forma en la que estas aparecen."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ocultar superposiciones de otras aplicaciones"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Esta aplicación puede solicitar que el sistema oculte superposiciones de otras aplicaciones para que no se muestren sobre ella."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ejecutarse en segundo plano"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Esta aplicación puede ejecutarse en segundo plano, pero es posible que la batería se agote más rápido."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"utilizar datos en segundo plano"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Vuelve a intentarlo"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Desbloquear para todos los datos y funciones"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Se ha superado el número máximo de intentos de Desbloqueo facial."</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"No hay ninguna SIM."</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"No hay ninguna SIM en la tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"No hay ninguna SIM en tu dispositivo Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"No hay ninguna SIM en el teléfono."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Añade una SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Falta la SIM o no se puede leer. Añade una SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"No se puede usar la SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Tu SIM se ha desactivado de forma permanente.\n Para obtener otra SIM, ponte en contacto con tu proveedor de servicios inalámbricos."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Canción anterior"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Siguiente canción"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausar"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avance rápido"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Solo llamadas de emergencia"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Bloqueada para la red"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"La SIM está bloqueada con el código PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consulta la guía del usuario o ponte en contacto con el servicio de atención al cliente."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"La SIM está bloqueada."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Desbloqueando SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Has realizado <xliff:g id="NUMBER_0">%1$d</xliff:g> intentos fallidos de creación de un patrón de desbloqueo. \n\nInténtalo de nuevo dentro de <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Has introducido una contraseña incorrecta <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nInténtalo de nuevo dentro de <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Has introducido un código PIN incorrecto <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nInténtalo de nuevo dentro de <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Salir de esta página"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Permanecer en esta página"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\n¿Seguro que quieres salir de esta página?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmar"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Sugerencia: toca dos veces para ampliar o reducir el contenido."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autocompletar"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Configurar Autocompletar"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autocompletar con <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincia"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Código postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estado"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Código postal"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Condado"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Isla"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrito"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamento"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefectura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Distrito"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Área"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirato"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"consultar tu historial y tus marcadores web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permite que la aplicación consulte el historial de todas las URL visitadas por el navegador y todos sus marcadores. Nota: este permiso no pueden utilizarlo navegadores externos ni otras aplicaciones que tengan funciones de navegación por Internet."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"escribir en el historial y en los marcadores web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permite que la aplicación modifique el historial o los marcadores del navegador almacenados en el tablet. La aplicación puede utilizar este permiso para borrar o modificar datos del navegador. Nota: este permiso no pueden utilizarlo navegadores externos ni otras aplicaciones que tengan funciones de navegación por Internet."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permite que la aplicación cambie el historial o los marcadores del navegador almacenados en tu dispositivo Android TV. La aplicación puede utilizar este permiso para borrar o cambiar datos del navegador. Nota: Este permiso no pueden tenerlo navegadores externos ni otras aplicaciones que tengan funciones de navegador web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permite que la aplicación modifique el historial o los marcadores del navegador almacenados en el teléfono. La aplicación puede utilizar este permiso para borrar o modificar datos del navegador. Nota: este permiso no pueden utilizarlo navegadores externos ni otras aplicaciones que tengan funciones de navegación por Internet."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"establecer una alarma"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permite que la aplicación establezca una alarma en una aplicación de reloj instalada. Es posible que algunas aplicaciones de reloj no incluyan esta función."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"añadir buzón de voz"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permite que la aplicación añada mensajes a la bandeja de entrada del buzón de voz."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modificar los permisos de ubicación geográfica del navegador"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permite que la aplicación modifique los permisos de ubicación geográfica del navegador. Las aplicaciones malintencionadas pueden usar este permiso para autorizar el envío de información sobre la ubicación a sitios web arbitrarios."</string>
- <string name="save_password_message" msgid="2146409467245462965">"¿Quieres que el navegador recuerde esta contraseña?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ahora no"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Recordar"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nunca"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"No tienes permiso para abrir esta página."</string>
- <string name="text_copied" msgid="2531420577879738860">"Texto copiado al portapapeles."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido desde el portapapeles"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado texto que has copiado"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado una imagen que has copiado"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido que has copiado"</string>
<string name="more_item_label" msgid="7419249600215749115">"Más"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"MENU+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Puedes cambiar esta opción más tarde en Ajustes > Aplicaciones."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Permitir siempre"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"No permitir nunca"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM quitada"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"La red móvil no estará disponible hasta que reinicies el dispositivo con una SIM válida."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Hecho"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM añadida"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Reinicia el dispositivo para acceder a la red móvil."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Reiniciar"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Activar servicio móvil"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"La tarjeta SIM está inhabilitada. Para continuar, introduce el código PUK. Si quieres obtener más información, ponte en contacto con el operador"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Introduce el código PIN deseado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirma el código PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Desbloqueando SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Código PIN incorrecto"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Introduce un código PIN con una longitud comprendida entre cuatro y ocho dígitos."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"El código PUK debe tener 8 números."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Quitar"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"¿Quieres subir el volumen por encima del nivel recomendado?\n\nEscuchar sonidos fuertes durante mucho tiempo puede dañar los oídos."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Atención:\nHas superado la cantidad de señales acústicas elevadas que se considera seguro escuchar en una semana a través de auriculares.\n\nSuperar este límite dañará tu audición de forma permanente."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Atención:\nHas superado cinco veces la cantidad de señales acústicas elevadas que se considera seguro escuchar en una semana a través de auriculares.\n\nSe ha bajado el volumen para proteger tu audición."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"El volumen al que estás escuchando contenido multimedia puede provocar daños de audición si se mantiene durante un periodo prolongado.\n\nSi sigues reproduciendo audio a este volumen durante largos periodos, puede que perjudique tu audición."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Atención:\nEstás escuchando contenido a un volumen no seguro.\n\nSi sigues escuchando audio tan alto, tu audición se dañará de forma permanente."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"¿Utilizar acceso directo de accesibilidad?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Si el acceso directo está activado, pulsa los dos botones de volumen durante 3 segundos para iniciar una función de accesibilidad."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"¿Quieres activar el acceso directo a las funciones de accesibilidad?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactivar acceso directo"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar acceso directo"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Corrección de color"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo Una mano"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Al mantener pulsadas las teclas de volumen, se ha activado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Permite que una aplicación complementaria envíe mensajes complementarios a otros dispositivos."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Iniciar servicios en primer plano desde el segundo plano"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permite que una aplicación complementaria inicie servicios en primer plano desde el segundo plano."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"El micrófono está disponible"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"El micrófono está bloqueado"</string>
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 210b509..a3b11db 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Sisestatud PIN-koodid ei kattu."</string>
<string name="invalidPin" msgid="7542498253319440408">"Sisestage 4–8-numbriline PIN-kood."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Sisestage 8- või enamanumbriline PUK-kood."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM on PUK-koodiga lukustatud. Avamiseks sisestage PUK-kood."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM-i deblokeerimiseks sisestage PUK2."</string>
<string name="enablePin" msgid="2543771964137091212">"Ebaõnnestus, SIM-i/RUIM-i lukustuse lubamine."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Teil on enne SIM-kaardi lukustumist jäänud veel <xliff:g id="NUMBER_1">%d</xliff:g> katset.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Võimaldab rakendusel lõpetada teiste rakenduste taustaprotsesse. See võib peatada teiste rakenduste töö."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"See rakendus võidakse kuvada teiste rakenduste peal"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"See rakendus võidakse kuvada teiste rakenduste või muude ekraani osade peal. See võib häirida tavapärast rakenduste kasutust ja muuta seda, kuidas teisi rakendusi kuvatakse."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"teiste rakenduste ülekatete peitmine"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"See rakendus saab süsteemilt taotleda teiste rakenduste ülekatete peitmist selle rakenduse peal."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"taustal käitamine"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Seda rakendust saab taustal käitada. See võib kiiremini akut kulutada."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"andmete taustal kasutamine"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Proovige uuesti"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Ava kõigi funktsioonide ja andmete nägemiseks"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Maksimaalne näoga avamise katsete arv on ületatud"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM-i pole"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Tahvelarvutis pole SIM-i."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Teie Android TV seadmes pole SIM-i."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Telefonis pole SIM-i."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Lisage SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM puudub või pole loetav. Lisage SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM-i ei saa kasutada."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Teie SIM on jäädavalt inaktiveeritud.\n Teise SIM-i saamiseks võtke ühendust oma traadita side teenusepakkujaga."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Eelmine lugu"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Järgmine lugu"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Peata"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Keri edasi"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Ainult hädaabikõned"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Võrk suletud"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM on PUK-koodiga lukustatud."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Vaadake kasutusjuhendit või võtke ühendust klienditeenindusega."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM on lukustatud."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM-i avamine …"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Olete oma avamismustrit <xliff:g id="NUMBER_0">%1$d</xliff:g> korda valesti koostanud. \n\nProovige <xliff:g id="NUMBER_1">%2$d</xliff:g> sekundi pärast uuesti."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Olete parooli <xliff:g id="NUMBER_0">%1$d</xliff:g> korda valesti sisestanud. \n\nProovige <xliff:g id="NUMBER_1">%2$d</xliff:g> sekundi pärast uuesti."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Olete PIN-koodi <xliff:g id="NUMBER_0">%1$d</xliff:g> korda valesti sisestanud. \n\nProovige <xliff:g id="NUMBER_1">%2$d</xliff:g> sekundi pärast uuesti."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Lahku sellelt lehelt"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Jää sellele lehele"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nKas soovite kindlasti sellelt lehelt lahkuda?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Kinnita"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Vihje: suurendamiseks ja vähendamiseks puudutage kaks korda."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Automaatne täitmine"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Automaatse täitmise seadistamine"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automaatne täitmine teenusega <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provints"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Sihtnumber"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Olek"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Sihtnumber"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Maakond"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Saar"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Piirkond"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Osakond"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektuur"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Vald"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Piirkond"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emiraat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"Veebijärjehoidjate ja -ajaloo lugemine"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Võimaldab rakendusel lugeda kõikide URL-ide ajalugu, mida brauser on külastanud, ja kõiki brauseri järjehoidjaid. Märkus: see luba ei pruugi jõustuda kolmanda osapoole brauseritega või teiste veebisirvimisvõimega rakendustega."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"Veebijärjehoidjate ja -ajaloo kirjutamine"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Võimaldab rakendusel muuta tahvelarvutisse salvestatud brauseri ajalugu või järjehoidjaid. See võimaldab rakendusel kustutada või muuta brauseri andmeid. Märkus: see luba ei pruugi jõustuda kolmanda osapoole brauserites või teistes veebisirvimisvõimega rakendustes."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Võimaldab rakendusel muuta brauseri ajalugu või Android TV seadmesse salvestatud järjehoidjaid. See võib võimaldada rakendusel kustutada või muuta brauseri andmeid. Märkus. See luba ei pruugi jõustuda kolmanda osapoole brauserites või teistes veebisirvimisvõimega rakendustes."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Võimaldab rakendusel muuta telefoni salvestatud brauseri ajalugu või järjehoidjaid. See võimaldab rakendusel kustutada või muuta brauseri andmeid. Märkus: see luba ei pruugi jõustuda kolmanda osapoole brauserites või teistes veebisirvimisvõimega rakendustes."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"määrake äratus"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Võimaldab rakendusel seada installitud äratuskellarakenduses äratuse. Mõned äratuskellarakendused ei pruugi seda funktsiooni juurutada."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"lisa kõneposti"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Võimaldab rakendusel lisada sõnumeid teie kõneposti postkasti."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Brauseri geolokatsiooniõiguste muutmine"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Võimaldab rakendusel muuta brauseri geolokatsiooniõigusi. Pahatahtlikud rakendused võivad seda kasutada asukohateabe saatmise lubamiseks suvalistele veebisaitidele."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Kas soovite, et brauser jätaks selle parooli meelde?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Mitte praegu"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Pidage meeles"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Mitte kunagi"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Teil pole luba selle lehe avamiseks."</string>
- <string name="text_copied" msgid="2531420577879738860">"Lõikelauale kopeeritud tekst."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis rakendusest <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie lõikelaualt"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud teksti"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud pildi"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud sisu"</string>
<string name="more_item_label" msgid="7419249600215749115">"Rohkem"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menüü+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Saate muuta jaotises Seaded > Rakendused"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Luba alati"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ära luba"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM on eemaldatud"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobiilsidevõrk ei ole saadaval, kuni taaskäivitate seadme koos kehtiva SIM-iga."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Valmis"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM on lisatud"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Mobiilsidevõrku pääsemiseks taaskäivitage seade."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Taaskäivita"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Mobiilsideteenuse aktiveerimine"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM on nüüd keelatud. Jätkamiseks sisestage PUK-kood. Üksikasju küsige operaatorilt."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Sisestage soovitud PIN-kood"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Kinnitage soovitud PIN-kood"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM-i avamine …"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Vale PIN-kood."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Sisestage 4–8-numbriline PIN-kood."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-kood peab koosnema 8 numbrist."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eemalda"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Kas suurendada helitugevuse taset üle soovitatud taseme?\n\nPikaajaline valju helitugevusega kuulamine võib kuulmist kahjustada."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Hoiatus!\nOlete ületanud valjude helisignaalide hulga, mida inimene tohib nädala jooksul kõrvaklappidega kuulata.\n\nSeda limiiti ületades kahjustate püsivalt oma kuulmist."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Hoiatus!\nOlete viiekordselt ületanud valjude helisignaalide hulka, mida inimene tohib nädala jooksul kõrvaklappidega kuulata.\n\nHelitugevust on vähendatud, et teie kuulmist kaitsta."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Helitugevuse tase, millega meediat kuulate, võib kahjustada teie kuulmist, kui sellisel tasemel pikema aja vältel kuulate.\n\nSellisel tasemel pikema aja vältel kuulamise jätkamisel võite kahjustada oma kuulmist."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Hoiatus!\nKuulate praegu valjut sisu ohtlikul tasemel.\n\nNii valjusti kuulamise jätkamisel kahjustate jäädavalt oma kuulmist."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Kas kasutada juurdepääsetavuse otseteed?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kui otsetee on sisse lülitatud, käivitab mõlema helitugevuse nupu kolm sekundit all hoidmine juurdepääsetavuse funktsiooni."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Kas lülitada juurdepääsufunktsioonide otsetee sisse?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Lülita otsetee välja"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kasuta otseteed"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Värvide ümberpööramine"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Värvide korrigeerimine"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Ühekäerežiim"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Eriti tume"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati sisse."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Lubab kaasrakendusel teistesse seadmetesse kaassõnumeid toimetada."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Esiplaanil olevate teenuste käivitamine taustal"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Lubab kaasrakendusel taustal käivitada esiplaanil olevaid teenuseid."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon on saadaval"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon on blokeeritud"</string>
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index c60da1d..32778f0 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Idatzi dituzun PIN kodeak ez datoz bat."</string>
<string name="invalidPin" msgid="7542498253319440408">"Idatzi 4 eta 8 zenbaki bitarteko PIN bat."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Idatzi 8 zenbaki edo gehiago dauzkan PUK bat."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIMa PUKaren bidez desblokeatu behar da. Idatzi PUK kodea SIMa desblokeatzeko."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Idatzi PUK2-a SIMa desblokeatzeko."</string>
<string name="enablePin" msgid="2543771964137091212">"Ezin izan da aldatu. Gaitu SIM edo RUIM txartelaren blokeoa."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> saiakera geratzen zaizkizu SIM txartela blokeatu aurretik.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Beste aplikazioen atzeko planoko prozesuak amaitzeko baimena ematen die aplikazioei. Horrela, agian aplikazio batzuk exekutatzeari utziko zaio."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"agertu beste aplikazio batzuen gainean"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Beste aplikazio batzuen edo pantailako beste zati batzuen gainean ager daiteke aplikazioa. Aplikazioaren funtzionamendu normala oztopa dezake eta beste aplikazio batzuen itxura alda dezake."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ezkutatu gainjarritako aplikazioak"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Beste aplikazioak bere gainean jar ez daitezen, baliteke gainjartze horiek ezkutatzeko eskatzea aplikazioak sistemari."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"exekutatu atzeko planoan"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Atzeko planoan exekuta liteke aplikazioa eta horrek bizkorrago agor lezake bateria."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"erabili datuak atzeko planoan"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Saiatu berriro"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Desblokeatu eginbide eta datu guztiak erabiltzeko"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Gainditu da aurpegi bidez desblokeatzeko saiakera-muga"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Ez dago SIMik"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Ez dago SIMik tabletan."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Ez dago SIMik Android TV darabilen gailuan."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Ez dago SIMik telefonoan."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Gehitu SIM bat."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIMa falta da, edo ezin da irakurri. Gehitu SIM bat."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Ezin da erabili SIMa."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Betiko desaktibatu da SIMa.\n Jarri harremanetan operadorearekin beste SIM bat eskuratzeko."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Aurreko pista"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Hurrengo pista"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausatu"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Aurreratu"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Larrialdi-deiak soilik"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Sarea blokeatuta dago"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIMa PUKaren bidez desblokeatu behar da."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Ikusi erabiltzailearentzako gida edo jarri bezeroarentzako laguntza-zerbitzuarekin harremanetan."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIMa blokeatuta dago."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIMa desblokeatzen…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Desblokeatzeko eredua oker marraztu duzu <xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz. \n\nSaiatu berriro <xliff:g id="NUMBER_1">%2$d</xliff:g> segundo barru."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Pasahitza oker idatzi duzu <xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz. \n\nSaiatu berriro <xliff:g id="NUMBER_1">%2$d</xliff:g> segundo barru."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"PINa oker idatzi duzu <xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz. \n\nSaiatu berriro <xliff:g id="NUMBER_1">%2$d</xliff:g> segundo barru."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Irten orritik"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Geratu orrian"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nZiur orritik irten nahi duzula?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Berretsi"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Aholkua: sakatu birritan handitzeko edo txikitzeko."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Betetze automatikoa"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Konfiguratu betetze automatikoa"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Bete automatikoki <xliff:g id="SERVICENAME">%1$s</xliff:g> erabiliz"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Probintzia"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Posta-kodea"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estatua"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Posta-kodea"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Lurraldea"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Uhartea"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Barrutia"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamentua"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parrokia"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Eskualdea"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirerria"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"irakurri sareko laster-markak eta historia"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Arakatzailearen bidez bisitatutako URL guztien historia eta arakatzailearen laster-marka guztiak irakurtzeko baimena ematen die aplikazioei. Oharra: agian baimen hori ez dute aplikatuko hirugarrenen arakatzaileek edo sarea arakatzeko gaitasuna duten bestelako aplikazioek."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"idatzi sareko laster-marka eta historian"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Arakatzailearen historia edo tabletan gordetako laster-markak aldatzeko baimena ematen die aplikazioei. Horrela, aplikazioak agian arakatzaile-datuak ezabatu edo aldatu ahal izango ditu. Oharra: baimen hori hirugarrenen arakatzaileek edo sarea arakatzeko gaitasuna eskaintzen duten bestelako aplikazioek aplika dezakete."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Android TV gailuan gordetako arakatzailearen historia edo laster-markak aldatzeko baimena ematen die aplikazioei. Horrela, arakatzaileko datuak ezabatu edo aldatu ahal izango dituzte aplikazioek. Oharra: baliteke hirugarrenen arakatzaileek edo sarea arakatzeko gaitasuna duten bestelako aplikazioek baimen hau ez erabiltzea."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Arakatzailearen historia edo telefonoan gordetako laster-markak aldatzeko baimena ematen die aplikazioei. Horrela, aplikazioak agian arakatzaile-datuak ezabatu edo aldatu ahal izango ditu. Oharra: baimen hori hirugarrenen arakatzaileek edo sarea arakatzeko gaitasuna eskaintzen duten bestelako aplikazioek aplika dezakete."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ezarri alarmak"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Instalatutako alarma batean alarmak ezartzea baimentzen die aplikazioei. Alarma-aplikazio batzuek agian ez dute eginbide hori inplementatuko."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"gehitu erantzungailua"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Erantzungailuko sarrera-ontzian mezuak gehitzeko baimena ematen die aplikazioei."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"aldatu arakatzailearen geokokapenaren baimenak"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Arakatzailearen geokokapenaren baimenak aldatzeko baimena ematen die aplikazioei. Asmo txarreko aplikazioek hori erabil dezakete kokapenari buruzko informazioa haiek hautatutako webguneetara bidaltzeko."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Arakatzaileak pasahitza gogoratzea nahi duzu?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ez une honetan"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Gogoratu"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Inoiz ez"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Ez duzu orri hau irekitzeko baimenik."</string>
- <string name="text_copied" msgid="2531420577879738860">"Testua arbelean kopiatu da."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> aplikaziotik itsatsi da <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak arbeleko edukia itsatsi du"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun testua itsatsi du"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun irudia itsatsi du"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun edukia itsatsi du"</string>
<string name="more_item_label" msgid="7419249600215749115">"Gehiago"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menua+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Hori geroago alda dezakezu Ezarpenak > Aplikazioak atalean"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Eman baimena beti"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ez onartu inoiz"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Kendu da SIMa"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Sare mugikorra ez da erabilgarri egongo telefonoa balio duen SIM txartel bat sartuta daukala berrabiarazi arte."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Eginda"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Gehitu da SIMa"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Berrabiarazi gailua sare mugikorra atzitzeko."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Berrabiarazi"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktibatu mugikorreko zerbitzua"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIMa desgaitu egin da. Jarraitzeko, idatzi PUK kodea. Xehetasunak lortzeko, jarri operadorearekin harremanetan."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Idatzi erabili nahi duzun PIN kodea"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Berretsi erabili nahi duzun PIN kodea"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIMa desblokeatzen…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN kodea okerra da."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Idatzi 4 eta 8 zenbaki arteko PINa."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kodeak 8 zenbaki izan behar ditu."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Kendu"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Bolumena gomendatutako mailatik gora igo nahi duzu?\n\nMusika bolumen handian eta denbora luzez entzuteak entzumena kalte diezazuke."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Abisua:\nEntzungailuen bidez astebetean segurtasun osoz entzun daitekeen soinu ozenen kopurua gainditu duzu.\n\nSoinu ozen gehiago entzuten jarraituz gero, entzumena kaltetuko duzu."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Abisua:\nEntzungailuen bidez astebetean segurtasun osoz entzun daitekeen soinu ozenen kopurua bost aldiz gainditu duzu.\n\nEntzumena babesteko, bolumena jaitsi da."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Multimedia-edukia entzuteko bolumena denbora luzez erabiliz gero, baliteke entzumena kaltetzea.\n\nMultimedia-edukia denbora luzez bolumen horretan entzuten jarraitzen baduzu, baliteke entzumena kaltetzea."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Abisua:\nSegurua ez den maila batean entzuten ari zara eduki ozena.\n\nEdukia bolumen horretan entzuten jarraitzen baduzu, baliteke entzumena kaltetzea."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Erabilerraztasun-lasterbidea erabili nahi duzu?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Lasterbidea aktibatuta dagoenean, bi bolumen-botoiak hiru segundoz sakatuta abiaraziko da erabilerraztasun-eginbidea."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Erabilerraztasun-eginbideetarako lasterbidea aktibatu nahi duzu?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desaktibatu lasterbidea"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Erabili lasterbidea"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Koloreen alderantzikatzea"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Koloreen zuzenketa"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Esku bakarreko modua"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Are ilunago"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktibatu egin da."</string>
@@ -2344,16 +2294,14 @@
<string name="vdm_pip_blocked" msgid="4036107522497281397">"Edukia zuzenean erreproduzitu bitartean ezin da pantaila txiki gainjarrian ikusi"</string>
<string name="system_locale_title" msgid="711882686834677268">"Sistemaren balio lehenetsia"</string>
<string name="default_card_name" msgid="9198284935962911468">"<xliff:g id="CARDNUMBER">%d</xliff:g> TXARTELA"</string>
- <string name="permlab_companionProfileWatch" msgid="2457738382085872542">"aplikazio osagarrien erloju-profilaren baimena erlojuak kudeatzeko"</string>
+ <string name="permlab_companionProfileWatch" msgid="2457738382085872542">"Aplikazio osagarrien erloju-profilaren baimena erlojuak kudeatzeko"</string>
<string name="permdesc_companionProfileWatch" msgid="5655698581110449397">"Erlojuak kudeatzeko baimena ematen die aplikazio osagarriei."</string>
- <string name="permlab_observeCompanionDevicePresence" msgid="9008994909653990465">"begiratu gailu osagarrien presentzia"</string>
+ <string name="permlab_observeCompanionDevicePresence" msgid="9008994909653990465">"Begiratu gailu osagarrien presentzia"</string>
<string name="permdesc_observeCompanionDevicePresence" msgid="3011699826788697852">"Gailu osagarrien presentzia begiratzeko baimena ematen die aplikazio osagarriei gailuak inguruan edo urrun daudenean."</string>
- <string name="permlab_deliverCompanionMessages" msgid="3931552294842980887">"entregatu aplikazio osagarrien mezuak"</string>
+ <string name="permlab_deliverCompanionMessages" msgid="3931552294842980887">"Entregatu aplikazio osagarrien mezuak"</string>
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Beste gailuetan mezuak entregatzeko baimena ematen die aplikazio osagarriei."</string>
- <string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"hasi aurreko planoko zerbitzuak atzeko planotik"</string>
+ <string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Hasi aurreko planoko zerbitzuak atzeko planotik"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Aurreko planoko zerbitzuak atzeko planotik abiarazteko baimena ematen die aplikazio osagarriei."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Erabilgarri dago mikrofonoa"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Blokeatuta dago mikrofonoa"</string>
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 670ab45..1bdba0b 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"پینهایی که وارد کردهاید با یکدیگر مطابقت ندارند."</string>
<string name="invalidPin" msgid="7542498253319440408">"یک پین بنویسید که ۴ تا ۸ رقم باشد."</string>
<string name="invalidPuk" msgid="8831151490931907083">"یک PUK با ۸ رقم یا بیشتر تایپ کنید."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"سیمکارت شما با PUK قفل شده است. کد PUK را برای باز کردن قفل آن تایپ کنید."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"برای باز کردن قفل سیمکارت، کد PUK2 را تایپ کنید."</string>
<string name="enablePin" msgid="2543771964137091212">"ناموفق بود، قفل سیم/RUIM را فعال کنید."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one"><xliff:g id="NUMBER_1">%d</xliff:g> بار دیگر میتوانید تلاش کنید و پس از آن سیمکارت قفل میشود.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"به برنامه امکان میدهد به فرآیندهای پسزمینه سایر برنامهها پایان دهد. این ممکن است باعث شود سایر برنامهها متوقف شوند."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"این برنامه میتواند روی برنامههای دیگر ظاهر شود"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"این برنامه میتواند روی برنامههای دیگر یا سایر قسمتهای صفحه ظاهر شود. ممکن است در عملکرد معمول برنامههای دیگر اختلال ایجاد کند و شیوه نمایش آنها را تغییر دهد."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"پنهان کردن همپوشانی برنامههای دیگر"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"این برنامه میتواند از سیستم بخواهد تا همپوشانیهای ایجادشده توسط برنامههای دیگر را روی برنامه نشان ندهد."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"اجرا شدن در پسزمینه"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"این برنامه میتواند در پسزمینه اجرا شود. ممکن است شارژ باتری زودتر مصرف شود."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"مصرف داده در پسزمینه"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"دوباره امتحان کنید"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"باز کردن قفل تمام قابلیتها و دادهها"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"دفعات تلاش برای «قفلگشایی با چهره» از حداکثر مجاز بیشتر شد"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"سیمکارتی وجود ندارد"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"سیمکارت در رایانه لوحی وجود ندارد."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"سیمکارت در دستگاه Android TV وجود ندارد."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"سیمکارت در تلفن وجود ندارد."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"سیمکارت اضافه کنید."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"سیمکارت موجود نیست یا قابلخواندن نیست. سیمکارت اضافه کنید."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"سیمکارت قابلاستفاده نیست."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"سیمکارت شما برای همیشه غیرفعال شده است.\n برای دریافت سیمکارتی دیگر، با رساننده خدمات بیسیم خود تماس بگیرید."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"آهنگ قبلی"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"آهنگ بعدی"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"مکث"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"جلو بردن سریع"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"فقط تماسهای اضطراری"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"شبکه قفل شد"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"سیمکارت با کد PUK قفل شده است."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"لطفاً به «راهنمای کاربر» مراجعه کنید یا با مرکز «مراقبت از مشتریان» تماس بگیرید."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"سیمکارت قفل است."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"درحال باز کردن قفل سیمکارت…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"الگوی بازگشایی قفل را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه کشیدهاید. \n\nپساز <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"گذرواژهٔ خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه تایپ کردهاید. \n\nپس از <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"پین را<xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه تایپ کردهاید. \n\nپس از <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ترک این صفحه"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ماندن در این صفحه"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nمطمئنید میخواهید این صفحه را ترک کنید؟"</string>
- <string name="save_password_label" msgid="9161712335355510035">"تأیید"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"نکته: برای زومپیش و زومپس کردن، دو بار ضربه بزنید."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"تکمیل خودکار"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"راهاندازی تکمیل خودکار"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"تکمیل خودکار با <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">"، "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"استان"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"کد پستی"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ایالت"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"کد پستی"</string>
- <string name="autofill_county" msgid="7781382735643492173">"بخش/شهرستان"</string>
- <string name="autofill_island" msgid="5367139008536593734">"جزیره"</string>
- <string name="autofill_district" msgid="6428712062213557327">"حوزه"</string>
- <string name="autofill_department" msgid="9047276226873531529">"اداره"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"حوزه اداری"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"استان"</string>
- <string name="autofill_area" msgid="8289022370678448983">"منطقه"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"امارات"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"خواندن سابقه و نشانکهای وب شما"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"به برنامه اجازه میدهد سابقه نشانیهای وب را که مرورگر بازدید کرده است و همه نشانکهای مرورگر را بخواند. توجه: این مجوز توسط مرورگرهای شخص ثالث یا سایر برنامههای دارای قابلیت مرور وب قابل اجرا نیست."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"نوشتن نشانکهای وب و سابقه"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"به برنامه اجازه میدهد سابقه مرورگر یا نشانکهای ذخیرهشده در رایانهٔ لوحی شما را تغییر دهد. این ممکن است به برنامه اجازه دهد دادههای مرورگر را حذف کند یا تغییر دهد. توجه: این مجوز ممکن است توسط مرورگرهای شخص ثالث یا سایر برنامههای دارای قابلیت مرور وب قابل اجرا نباشد."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"به برنامه اجازه میدهد سابقه مرورگر یا نشانکهای ذخیرهشده در دستگاه Android TV را تغییر دهد. ممکن است به برنامه اجازه دهد دادههای مرورگر را پاک کند یا تغییر دهد. توجه: ممکن است این مجوز توسط مرورگرهای شخص ثالث یا سایر برنامههای دارای قابلیت مرور وب اجرا نشود."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"به برنامه اجازه میدهد سابقه مرورگر یا نشانکهای ذخیرهشده در تلفن شما را تغییر دهد. این ممکن است به برنامه اجازه دهد دادههای مرورگر را حذف کند یا تغییر دهد. توجه: این مجوز ممکن است توسط مرورگرهای شخص ثالث یا سایر برنامههای دارای قابلیت مرور وب قابل اجرا نباشد."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"تنظیم زنگ"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"به برنامه اجازه میدهد تا زنگی را در برنامه ساعت زنگدار نصبشده تنظیم کند. برخی از برنامههای ساعت زنگدار نمیتوانند این ویژگی را اعمال کنند."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"افزودن پست صوتی"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"به برنامه اجازه میدهد تا پیامها را به صندوق ورودی پست صوتی شما اضافه کند."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"تغییر مجوزهای مکان جغرافیایی مرورگر"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"به برنامه اجازه میدهد تا مجوزهای جغرافیایی مرورگر را تغییر دهد. برنامههای مخرب میتوانند از آن استفاده کنند تا اطلاعات موقعیت مکانی را به سایتهای وب کتابخانه بفرستند."</string>
- <string name="save_password_message" msgid="2146409467245462965">"میخواهید مرورگر این گذرواژه را به خاطر داشته باشد؟"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"حالا نه"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"به خاطر سپردن"</string>
- <string name="save_password_never" msgid="6776808375903410659">"هیچوقت"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"شما اجازه بازکردن این صفحه را ندارید."</string>
- <string name="text_copied" msgid="2531420577879738860">"متن در بریدهدان کپی شد."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> جایگذاری کرد"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> محتوا را از بریدهدان جایگذاری کرد"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نوشتاری را که کپی کردید جایگذاری کرد"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> تصویری را که کپی کردید جایگذاری کرد"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> محتوایی را که کپی کردید جایگذاری کرد"</string>
<string name="more_item_label" msgid="7419249600215749115">"بیشتر"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"منو+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"میتوانید بعداً آن را در تنظیمات > برنامهها تغییر دهید"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"همیشه مجاز است"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"همیشه غیرمجاز"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"سیمکارت برداشته شد"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"تاوقتیکه با سیمکارت معتبر بازراهاندازی نکنید، شبکه تلفن همراه دردسترس نخواهد بود."</string>
<string name="sim_done_button" msgid="6464250841528410598">"تمام"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"سیمکارت اضافه شد"</string>
<string name="sim_added_message" msgid="6602906609509958680">"برای دسترسی به شبکهٔ تلفن همراه، دستگاه خود را مجدداً راهاندازی کنید."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"راهاندازی مجدد"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"سرویس دستگاه همراه را فعال کنید"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"اکنون سیم کارت غیرفعال است. پین کد را برای ادامه وارد کنید. برای جزئیات با شرکت مخابراتی خود تماس بگیرید."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"پین کد دلخواه را وارد کنید"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"تأیید پین کد دلخواه"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"درحال باز کردن قفل سیمکارت…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"پین کد اشتباه است."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"یک پین ۴ تا ۸ رقمی را تایپ کنید."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"کد PUK باید ۸ عدد داشته باشد."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"حذف"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"میزان صدا را به بالاتر از حد توصیه شده افزایش میدهید؟\n\nگوش دادن به صداهای بلند برای مدت طولانی میتواند به شنواییتان آسیب وارد کند."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"هشدار،\nشما از میزان صدای بلندی که انسان میتواند بهطور ایمن در یک هفته ازطریق هدفون گوش دهد فراتر رفتهاید.\n\nعبور از این حد به شنوایی شما آسیب میرساند."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"هشدار،\nشما از میزان صدای بلندی که انسان میتواند بهطور ایمن در یک هفته ازطریق هدفون گوش دهد ۵ بار فراتر رفتهاید.\n\nبرای محافظت از شنوایی شما، صدا کاهش یافته است."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"میزان صدایی که با آن به رسانه گوش میکنید درصورت ادامه در درازمدت میتواند منجر به آسیب به شنوایی شود.\n\nادامه پخش با این صدا برای مدت طولانی میتواند به شنوایی شما آسیب برساند."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"هشدار،\nمیزان صدای بلندِ محتوایی که الآن میشنوید خطرناک است.\n\nاگر با همین بلندی صدا ادامه دهید شنواییتان برای همیشه آسیب خواهد دید."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"از میانبر دسترسپذیری استفاده شود؟"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"وقتی میانبر روشن باشد، با فشار دادن هردو دکمه صدا بهمدت ۳ ثانیه ویژگی دسترسپذیری فعال میشود."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"میانبر برای ویژگیهای دسترسپذیری روشن شود؟"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"خاموش کردن میانبر"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استفاده از میانبر"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"وارونگی رنگ"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"تصحیح رنگ"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"حالت یکدستی"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"بسیار کمنور"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> روشن شد."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"به برنامه همراه اجازه میدهد پیامهای همراه را به دستگاههای دیگر ارسال کند."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"اجرای سرویسهای پیشنما از پسزمینه"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"به برنامه همراه اجازه میدهد سرویسهای پیشنما را از پسزمینه راهاندازی کند."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"میکروفون دردسترس است"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"میکروفون مسدود شد"</string>
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index df6f15b..43f4172 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Antamasi PIN-koodit eivät täsmää."</string>
<string name="invalidPin" msgid="7542498253319440408">"Anna 4–8-numeroinen PIN-koodi."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Kirjoita vähintään 8 numeron pituinen PUK-koodi."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM-kortti on lukittu PUK-koodilla. Poista lukitus antamalla PUK-koodi."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Kumoa SIM-kortin esto lisäämällä PUK2."</string>
<string name="enablePin" msgid="2543771964137091212">"Epäonnistui, ota SIM-/RUIM-lukitus käyttöön."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Sinulla on <xliff:g id="NUMBER_1">%d</xliff:g> yritystä jäljellä, ennen kuin SIM-kortti lukitaan.</item>
@@ -297,11 +295,11 @@
<string name="user_owner_label" msgid="8628726904184471211">"Vaihda henkilökohtaiseen profiiliin"</string>
<string name="managed_profile_label" msgid="7316778766973512382">"Vaihda työprofiiliin"</string>
<string name="permgrouplab_contacts" msgid="4254143639307316920">"Yhteystiedot"</string>
- <string name="permgroupdesc_contacts" msgid="9163927941244182567">"käyttää yhteystietoja"</string>
+ <string name="permgroupdesc_contacts" msgid="9163927941244182567">"pääsy yhteystietoihin"</string>
<string name="permgrouplab_location" msgid="1858277002233964394">"Sijainti"</string>
- <string name="permgroupdesc_location" msgid="1995955142118450685">"käyttää laitteen sijaintia"</string>
+ <string name="permgroupdesc_location" msgid="1995955142118450685">"pääsy laitteen sijaintiin"</string>
<string name="permgrouplab_calendar" msgid="6426860926123033230">"Kalenteri"</string>
- <string name="permgroupdesc_calendar" msgid="6762751063361489379">"käyttää kalenteria"</string>
+ <string name="permgroupdesc_calendar" msgid="6762751063361489379">"pääsy kalenteriin"</string>
<string name="permgrouplab_sms" msgid="795737735126084874">"Tekstiviestit"</string>
<string name="permgroupdesc_sms" msgid="5726462398070064542">"lähettää ja tarkastella tekstiviestejä"</string>
<string name="permgrouplab_storage" msgid="17339216290379241">"Tiedostot"</string>
@@ -311,7 +309,7 @@
<string name="permgrouplab_readMediaVisual" msgid="4724874717811908660">"Valokuvat ja videot"</string>
<string name="permgroupdesc_readMediaVisual" msgid="4080463241903508688">"pääsy laitteen kuviin ja videoihin"</string>
<string name="permgrouplab_microphone" msgid="2480597427667420076">"Mikrofoni"</string>
- <string name="permgroupdesc_microphone" msgid="1047786732792487722">"tallentaa ääntä"</string>
+ <string name="permgroupdesc_microphone" msgid="1047786732792487722">"tallentaa audiota"</string>
<string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Liikkuminen"</string>
<string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"nähdä liikkumistietosi"</string>
<string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string>
@@ -323,7 +321,7 @@
<string name="permgrouplab_phone" msgid="570318944091926620">"Puhelin"</string>
<string name="permgroupdesc_phone" msgid="270048070781478204">"soittaa ja hallinnoida puheluita"</string>
<string name="permgrouplab_sensors" msgid="9134046949784064495">"Kehon anturit"</string>
- <string name="permgroupdesc_sensors" msgid="2610631290633747752">"käyttää anturitietoja elintoiminnoistasi"</string>
+ <string name="permgroupdesc_sensors" msgid="2610631290633747752">"pääsy anturidataan elintoiminnoistasi"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Ilmoitukset"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"näyttää ilmoituksia"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Noutaa ikkunan sisältöä"</string>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Antaa sovelluksen sulkea muiden sovelluksien taustaprosesseja. Tämä voi sulkea muita sovelluksia."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Tämä sovellus voi näkyä muiden sovellusten päällä"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Tämä sovellus voi näkyä muiden sovellusten tai näytön muiden osien päällä. Tämä voi häiritä sovellusten tavallista käyttöä ja muuttaa tapaa, jolla muut sovellukset näkyvät."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"Sovelluspeittojen estäminen"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Sovellus voi pyytää järjestelmää estämään muita sovelluksia peittämästä sitä."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"toimia taustalla"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Tämä sovellus voi toimia taustalla. Tämä saattaa kuluttaa enemmän akkua."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"käyttää dataa taustalla"</string>
@@ -476,7 +476,7 @@
<string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Tällä sovelluksella on pääsy sijaintitietoihin milloin tahansa, myös silloin kun sovellusta ei käytetä."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"muuta ääniasetuksia"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Antaa sovelluksen muokata yleisiä ääniasetuksia, kuten äänenvoimakkuutta ja käytettävää kaiutinta."</string>
- <string name="permlab_recordAudio" msgid="1208457423054219147">"tallentaa ääntä"</string>
+ <string name="permlab_recordAudio" msgid="1208457423054219147">"tallentaa audiota"</string>
<string name="permdesc_recordAudio" msgid="5857246765327514062">"Tämä sovellus voi tallentaa mikrofonilla audiota, kun sovellusta käytetään."</string>
<string name="permlab_recordBackgroundAudio" msgid="5891032812308878254">"tallentaa audiota taustalla"</string>
<string name="permdesc_recordBackgroundAudio" msgid="1992623135737407516">"Tämä sovellus voi tallentaa mikrofonilla audiota koska tahansa."</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Yritä uudelleen"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Käytä kaikkia ominaisuuksia avaamalla lukitus."</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Kasvojentunnistusavauksen yrityksiä tehty suurin sallittu määrä."</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Ei SIM-korttia"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Tabletissa ei ole SIM-korttia."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV ‑laitteessa ei ole SIM-korttia."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Puhelimessa ei ole SIM-korttia."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Lisää SIM-kortti."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-korttia ei löydy tai ei voi lukea. Lisää SIM-kortti."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM-korttia ei voi käyttää."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Sim-kortti on poistettu käytöstä pysyvästi.\n Ota yhteyttä langattoman palvelun tarjoajaan ja pyydä uusi SIM-kortti."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Edellinen raita"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Seuraava raita"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Tauko"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Kelaa eteen"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Vain hätäpuhelut"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Verkko lukittu"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-kortti on lukittu PUK-koodilla."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Katso ohjeita käyttöoppaasta tai ota yhteyttä asiakaspalveluun."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-kortti on lukittu."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM-kortin lukitusta avataan…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Olet piirtänyt lukituksenpoistokuvion väärin <xliff:g id="NUMBER_0">%1$d</xliff:g> kertaa. \n\nYritä uudelleen <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunnin kuluttua."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Olet kirjoittanut salasanan väärin <xliff:g id="NUMBER_0">%1$d</xliff:g> kertaa. \n\nYritä uudelleen <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunnin kuluttua."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Olet kirjoittanut PIN-koodin väärin <xliff:g id="NUMBER_0">%1$d</xliff:g> kertaa. \n\nYritä uudelleen <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunnin kuluttua."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Poistu tältä sivulta"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Pysy tällä sivulla"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nHaluatko varmasti siirtyä pois tältä sivulta?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Vahvista"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Vinkki: lähennä ja loitonna kaksoisnapauttamalla."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Aut. täyttö"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Määritä autom. täyttö"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automaattinen täyttö: <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provinssi"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postinumero"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Osavaltio"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Postinumero"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Lääni"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Saari"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Piiri"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Osasto"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektuuri"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Kunta"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Alue"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emiraatti"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"lue verkon kirjanmerkkejä ja historiaa"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Antaa sovelluksen lukea selaimen käyttämien URL-osoitteiden historiaa sekä selaimen kirjanmerkkejä. Huomaa: kolmannen osapuolen selaimet tai muut sovellukset, jotka pystyvät selaamaan verkkoa, eivät saa käyttää tätä lupaa."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"kirjoita verkon kirjanmerkkejä ja historiaa"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Antaa sovelluksen muokata selaimen historiaa ja tablet-laitteeseen tallennettuja kirjanmerkkejä. Sovellus voi poistaa tai muokata selaimen tietoja. Huomaa: kolmannen osapuolen selaimet tai muut sovellukset, jotka pystyvät selaamaan verkkoa, eivät saa käyttää tätä lupaa."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Antaa sovelluksen muokata selaimen historiaa ja Android TV ‑laitteeseen tallennettuja kirjanmerkkejä. Sovellus voi poistaa tai muokata selaimen tietoja. Huom. Kolmannen osapuolen selaimet tai muut sovellukset, jotka pystyvät selaamaan verkkoa, eivät voi ottaa tätä asetusta käyttöön."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Antaa sovelluksen muokata selaimen historiaa ja puhelimeen tallennettuja kirjanmerkkejä. Sovellus voi poistaa tai muokata selaimen tietoja. Huomaa: kolmannen osapuolen selaimet tai muut sovellukset, jotka pystyvät selaamaan verkkoa, eivät saa käyttää tätä lupaa."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"aseta herätys"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Antaa sovelluksen asettaa hälytyksen sisäiseen herätyskellosovellukseen. Jotkin herätyskellosovellukset eivät välttämättä käytä tätä ominaisuutta."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"lisää vastaajaviesti"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Antaa sovelluksen lisätä viestejä saapuneisiin vastaajaviesteihin."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"selaimen maantieteellisen sijainnin lupien muokkaaminen"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Antaa sovelluksen muokata Selaimen maantieteellisen sijainnin lupia. Haitalliset sovellukset voivat sallia tällä sijaintitietojen lähettämisen mielivaltaisiin sivustoihin."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Haluatko selaimen muistavan tämän salasanan?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ei nyt"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Muista"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Ei koskaan"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Ei lupaa avata tätä sivua."</string>
- <string name="text_copied" msgid="2531420577879738860">"Teksti kopioitu leikepöydälle."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> liitetty täältä: <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> liitti leikepöydältäsi"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi tekstin"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi kuvan"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi sisällön"</string>
<string name="more_item_label" msgid="7419249600215749115">"Lisää"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Valikko+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1219,7 +1170,7 @@
<string name="not_selected" msgid="410652016565864475">"ei valittu"</string>
<string name="rating_label" msgid="1837085249662154601">"{rating,plural, =1{1/{max} tähteä}other{#/{max} tähteä}}"</string>
<string name="in_progress" msgid="2149208189184319441">"käynnissä"</string>
- <string name="whichApplication" msgid="5432266899591255759">"Tee toiminto käyttäen sovellusta"</string>
+ <string name="whichApplication" msgid="5432266899591255759">"Tee toiminto käyttäen:"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Suorita sovelluksella %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Suorita toiminto"</string>
<string name="whichViewApplication" msgid="5733194231473132945">"Avaa sovelluksessa"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Muuta kohd. Asetukset > Sovellukset"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Salli aina"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Älä koskaan salli"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-kortti poistettu"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobiiliverkko ei ole käytettävissä ennen kuin käynnistät uudelleen kelvollisella SIM-kortilla."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Valmis"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-kortti lisätty"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Muodosta mobiiliverkkoyhteys käynnistämällä laite uudelleen."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Käynnistä uudelleen"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivoi mobiilipalvelu"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-kortti on nyt poistettu käytöstä. Jatka antamalla PUK-koodi. Saat lisätietoja ottamalla yhteyttä operaattoriin."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Anna haluamasi PIN-koodi"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Vahvista haluamasi PIN-koodi"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM-kortin lukitusta avataan…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Virheellinen PIN-koodi."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Anna 4–8-numeroinen PIN-koodi."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-koodissa tulee olla 8 numeroa."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Poista"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Nostetaanko äänenvoimakkuus suositellun tason yläpuolelle?\n\nPitkäkestoinen kova äänenvoimakkuus saattaa heikentää kuuloa."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Varoitus,\nolet kuunnellut tällä viikolla enemmän äänekkäitä signaaleja kuin kuulokkeilla on turvallista.\n\nRajan ylittäminen vahingoittaa kuuloasi pysyvästi."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Varoitus,\nolet kuunnellut tällä viikolla viisi kertaa enemmän äänekkäitä signaaleja kuin kuulokkeilla on turvallista.\n\nÄänenvoimakkuutta on laskettu kuulosi suojaamiseksi."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Äänenvoimakkuus, jolla kuuntelet mediaa, voi ajan mittaan johtaa kuulovaurioihin.\n\nJos jatkat tällä äänenvoimakkuudella pitkään, kuulosi voi vaurioitua."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Varoitus,\nkuuntelet sisältöä äänenvoimakkuudella, joka ei ole turvallinen.\n\nTällä äänenvoimakkuudella jatkaminen voi vaurioittaa kuuloasi pysyvästi."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Käytetäänkö esteettömyyden pikanäppäintä?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kun pikanäppäin on käytössä, voit käynnistää esteettömyystoiminnon pitämällä molempia äänenvoimakkuuspainikkeita painettuna kolmen sekunnin ajan."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Laitetaanko esteettömyysominaisuuksien pikavalinta päälle?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Poista pikanäppäin käytöstä"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Käytä pikanäppäintä"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Käänteiset värit"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Värinkorjaus"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Yhden käden moodi"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Erittäin himmeä"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin päälle."</string>
@@ -2025,7 +1975,7 @@
<string name="pin_specific_target" msgid="7824671240625957415">"Kiinnitä <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="unpin_target" msgid="3963318576590204447">"Irrota"</string>
<string name="unpin_specific_target" msgid="3859828252160908146">"Irrota <xliff:g id="LABEL">%1$s</xliff:g>"</string>
- <string name="app_info" msgid="6113278084877079851">"Sovelluksen tiedot"</string>
+ <string name="app_info" msgid="6113278084877079851">"Sovellustiedot"</string>
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"Aloitetaan esittelyä…"</string>
<string name="demo_restarting_message" msgid="1160053183701746766">"Palautetaan asetuksia…"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Sallii kumppanisovelluksen toimittaa kumppaniviestejä muille laitteille."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Etualan palvelujen aloittaminen taustalla"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Sallii kumppanisovelluksen aloittaa etualan palveluja taustalla."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofoni on käytettävissä"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofoni on estetty"</string>
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 0a7ce08..31c96f1 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Les NIP saisis ne correspondent pas."</string>
<string name="invalidPin" msgid="7542498253319440408">"Veuillez saisir un NIP comprenant entre quatre et huit chiffres."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Veuillez saisir une clé PUK comportant au moins huit chiffres."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Votre carte SIM est verrouillée par clé PUK. Entrez le code PUK pour la déverrouiller."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Entrez le code PUK2 pour déverrouiller la carte SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Opération infructueuse. Activez le verrouillage SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Il vous reste <xliff:g id="NUMBER_1">%d</xliff:g> tentative avant que votre carte SIM soit verrouillée.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Permet à l\'application de mettre fin aux processus d\'autres applications exécutés en arrière-plan. Cette autorisation peut interrompre l\'exécution d\'autres applications."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Cette application peut s\'afficher par-dessus d\'autres applications"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Cette application peut s\'afficher par-dessus d\'autres applications ou parties de l\'écran. Cela pourrait interférer avec l\'utilisation normale des applications et modifier la manière dont les autres applications s\'affichent à l\'écran."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"Masquer les superpositions d\'autres applications"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Cette application peut demander au système de masquer les superpositions provenant d\'applications, afin qu\'elles ne s\'affichent pas au-dessus de celle-ci."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"fonctionner en arrière-plan"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Cette application peut fonctionner en arrière-plan. Cela risque d\'épuiser la pile plus rapidement."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"utiliser des données en arrière-plan"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Réessayer"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Déverr. pour acc. aux autres fonction. et données"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Nombre maximal atteint de tentatives de déverrouillage par reconnaissance faciale"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Aucune carte SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Aucune carte SIM ne se trouve dans la tablette."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Aucune carte SIM ne se trouve dans votre appareil Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Aucune carte SIM ne se trouve dans le téléphone."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Ajouter une carte SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"La carte SIM est manquante ou illisible. Ajouter une carte SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"La carte SIM est inutilisable."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Votre carte SIM a été désactivée de manière permanente.\n Communiquez avec votre fournisseur de services sans fil pour obtenir une autre carte SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Chanson précédente"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Chanson suivante"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pause"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avance rapide"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Appels d\'urgence uniquement"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Réseau verrouillé"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"La carte SIM est verrouillée par clé PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Veuillez consulter le guide d\'utilisation ou contacter le service à la clientèle."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"La carte SIM est verrouillée."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Déverrouillage de la carte SIM en cours…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises.\n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%2$d</xliff:g> secondes."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Vous avez saisi un mot de passe incorrect à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. \n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%2$d</xliff:g> secondes."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Vous avez saisi un NIP incorrect à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. \n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%2$d</xliff:g> secondes."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Quitter cette page"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Rester sur cette page"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVoulez-vous vraiment quitter cette page?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmer"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Conseil : Appuyez deux fois pour faire un zoom avant ou arrière."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Saisie auto"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Conf. saisie auto"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Remplissage automatique avec <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Province"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Code postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"État"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Code postal"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Comté"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Île"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Département"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Préfecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Paroisse"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Zone"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Émirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"voir l\'historique et les favoris Web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permet à l\'application d\'accéder à l\'historique de toutes les URL auxquelles le navigateur a accédé, ainsi qu\'à l\'ensemble des favoris du navigateur. Remarque : Il est possible que cette autorisation ne soit pas appliquée par les navigateurs tiers ni par d\'autres applications permettant de naviguer sur le Web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"modifier l\'historique et les favoris Web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre tablette. Cette autorisation peut lui permettre d\'effacer ou de modifier les données du navigateur. Remarque : il est possible que cette autorisation ne soit pas appliquée par les navigateurs tiers ni par d\'autres applications permettant de naviguer sur le Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre appareil Android TV. Cette autorisation peut lui permettre d\'effacer ou de modifier les données du navigateur. Remarque : Il est possible que cette autorisation ne soit pas appliquée par les navigateurs tiers ni par d\'autres applications permettant de naviguer sur le Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre téléphone. Cette autorisation peut lui permettre d\'effacer ou de modifier les données du navigateur. Remarque : il est possible que cette autorisation ne soit pas appliquée par les navigateurs tiers ni par d\'autres applications permettant de naviguer sur le Web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"définir une alarme"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permet à l\'application de régler la sonnerie d\'une fonction de réveil installée sur votre appareil. Cette fonctionnalité n\'est pas compatible avec toutes les applications de réveils."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ajouter des messages vocaux"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permet à l\'application d\'ajouter des messages à votre messagerie vocale."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modifier les autorisations de géolocalisation du navigateur"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permet à l\'application de modifier les autorisations de géolocalisation du navigateur. Des applications malveillantes peuvent exploiter cette fonctionnalité pour permettre l\'envoi de données de localisation à des sites Web arbitraires."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Voulez-vous que le navigateur se souvienne de ce mot de passe?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Pas maintenant"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Rappelez-vous"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Jamais"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Vous n\'êtes pas autorisé à ouvrir cette page."</string>
- <string name="text_copied" msgid="2531420577879738860">"Le texte a été copié dans le presse-papiers."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé à partir de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé du contenu de votre presse-papiers"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé du texte que vous avez copié"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé une image que vous avez copiée"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé le contenu que vous avez copié"</string>
<string name="more_item_label" msgid="7419249600215749115">"Plus"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Méta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Pour modifier : Paramètres > Applications"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Toujours autoriser"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ne jamais autoriser"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Carte SIM retirée"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Le réseau cellulaire ne sera pas accessible avant le redémarrage avec une carte SIM valide."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Terminé"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Carte SIM ajoutée"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Redémarrez votre appareil pour accéder au réseau mobile."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Redémarrer"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Activer le service cellulaire"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"La carte SIM est maintenant désactivée. Saisissez le code PUK pour continuer. Contactez votre opérateur pour en savoir plus."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Saisir le NIP souhaité"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirmer le NIP souhaité"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Déverrouillage de la carte SIM en cours…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"NIP erroné."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Saisissez un NIP comprenant entre quatre et huit chiffres"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Le code PUK doit contenir 8 chiffres."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Supprimer"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Augmenter le volume au-dessus du niveau recommandé?\n\nL\'écoute prolongée à un volume élevé peut endommager vos facultés auditives."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Avertissement,\nVous avez dépassé la quantité de signaux sonores forts hebdomadaire à laquelle vous pouvez être exposé sans danger avec des écouteurs.\n\nLe dépassement de cette limite endommagera votre audition de façon permanente."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Avertissement,\nVous avez dépassé de cinq fois la quantité de signaux sonores forts hebdomadaire à laquelle vous pouvez être exposé sans danger avec des écouteurs.\n\nLe volume a été baissé pour protéger votre audition."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Le niveau auquel vous écoutez le contenu multimédia peut entraîner des dommages auditifs s\'il est maintenu sur une durée prolongée.\n\nVous risquez d\'endommager votre audition si vous continuez l\'écoute à ce niveau sur une durée prolongée."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Avertissement,\nVous écoutez actuellement un contenu dont le niveau sonore élevé est dangereux.\n\nSi vous continuez à écouter à ce niveau, vous endommagerez votre audition de façon permanente."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utiliser le raccourci d\'accessibilité?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quand le raccourci est activé, appuyez sur les deux boutons de volume pendant trois secondes pour lancer une fonctionnalité d\'accessibilité."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Activer le raccourci pour les fonctionnalités d\'accessibilité?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Désactiver le raccourci"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Correction des couleurs"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode Une main"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Très sombre"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume maintenues enfoncées. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Autorise une application compagnon à transmettre des messages à d\'autres appareils."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Lancer les services d\'avant-plan à partir de l\'arrière-plan"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permet à une application compagnon en arrière-plan de lancer des services d\'avant-plan."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Le microphone est accessible"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Le microphone est bloqué"</string>
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index bb449b0..dc3e503 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Les codes PIN saisis ne correspondent pas."</string>
<string name="invalidPin" msgid="7542498253319440408">"Le code PIN doit compter de 4 à 8 chiffres."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Saisissez un code PUK comportant au moins huit chiffres."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Votre SIM est verrouillée par clé PUK. Saisissez le code PUK pour la déverrouiller."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Saisissez le code PUK2 pour déverrouiller la SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Échec de l\'opération. Veuillez activer le verrouillage de la carte SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Il vous reste <xliff:g id="NUMBER_1">%d</xliff:g> tentative avant que votre carte SIM ne soit verrouillée.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Permet à l\'application de mettre fin aux processus d\'autres applications exécutés en arrière-plan. Cette autorisation peut interrompre l\'exécution d\'autres applications."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Cette application peut se superposer à d\'autres applications"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Cette application peut se superposer à d\'autres applications ou à d\'autres parties de l\'écran. Cela peut altérer l\'utilisation normale des applications et modifier l\'apparence des autres applications."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"masquer les superpositions des autres applis"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Cette appli peut demander au système de masquer les superpositions venant d\'autres applis pour les empêcher de s\'afficher par-dessus."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"s\'exécuter en arrière-plan"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Cette application peut s\'exécuter en arrière-plan, ce qui risque d\'épuiser la batterie plus rapidement."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"consommer des données en arrière-plan"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Veuillez réessayer."</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Déverr. pour autres fonctionnalités et données"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Nombre maximal de tentatives de déverrouillage par reconnaissance faciale atteint"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Aucune SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Aucune SIM dans la tablette."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Aucune SIM dans votre appareil Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Aucune SIM dans le téléphone."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Ajoutez une SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"La SIM est absente ou illisible. Ajoutez une SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM inutilisable."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Votre SIM a été désactivée définitivement.\n Contactez votre opérateur de téléphonie mobile pour en obtenir une autre."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Piste précédente"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Piste suivante"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Interrompre"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avance rapide"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Appels d\'urgence uniquement"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Réseau verrouillé"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM verrouillée par clé PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Veuillez consulter le guide de l\'utilisateur ou contacter le service client."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM verrouillée."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Déblocage de la SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises.\n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%2$d</xliff:g> secondes."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Vous avez saisi un mot de passe incorrect <xliff:g id="NUMBER_0">%1$d</xliff:g> fois. \n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%2$d</xliff:g> secondes."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Vous avez saisi un code PIN incorrect <xliff:g id="NUMBER_0">%1$d</xliff:g> fois. \n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%2$d</xliff:g> secondes."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Quitter cette page"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Rester sur cette page"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVoulez-vous vraiment quitter cette page ?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmer"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Conseil : Appuyez deux fois pour faire un zoom avant ou arrière."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Saisie auto"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Conf. saisie auto"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Saisie automatique avec <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Province"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Code postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"État"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Code postal"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Comté"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Île"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Département"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Préfecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Commune"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Région"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Émirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"voir l\'historique et les favoris Web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permet à l\'application d\'accéder à l\'historique de toutes les URL auxquelles le navigateur a accédé, ainsi qu\'à l\'ensemble des favoris du navigateur. Remarque : il est possible que cette autorisation ne soit pas appliquée par les navigateurs tiers ni par d\'autres applications permettant de naviguer sur le Web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"modifier l\'historique et les favoris Web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre tablette. Cette autorisation peut lui permettre d\'effacer ou de modifier les données du navigateur. Remarque : il est possible que cette autorisation ne soit pas appliquée par les navigateurs tiers ni par d\'autres applications permettant de naviguer sur le Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris stockés sur votre appareil Android TV. Cette autorisation peut permettre à l\'application d\'effacer ou de modifier les données du navigateur. Remarque : cette autorisation n\'est pas toujours appliquée par les navigateurs tiers ou par les autres applications dotées de fonctionnalités de navigation Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permet à l\'application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre téléphone. Cette autorisation peut lui permettre d\'effacer ou de modifier les données du navigateur. Remarque : il est possible que cette autorisation ne soit pas appliquée par les navigateurs tiers ni par d\'autres applications permettant de naviguer sur le Web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"définir une alarme"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permet à l\'application de régler la sonnerie d\'un réveil installé. Cette fonctionnalité n\'est pas disponible sur tous les réveils."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ajouter un message vocal"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permet à l\'application d\'ajouter des messages à votre messagerie vocale."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modifier les autorisations de géolocalisation du navigateur"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permet à l\'application de modifier les autorisations de géolocalisation du navigateur. Des applications malveillantes peuvent exploiter cette fonctionnalité pour permettre l\'envoi de données de localisation à des sites Web arbitraires."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Voulez-vous que le navigateur se souvienne de ce mot de passe ?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Pas maintenant"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Mémoriser"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Jamais"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Vous n\'êtes pas autorisé à ouvrir cette page."</string>
- <string name="text_copied" msgid="2531420577879738860">"Le texte a été copié dans le presse-papier."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé depuis <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé des données depuis le presse-papiers"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé du texte que vous avez copié"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé une image que vous avez copiée"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé le contenu que vous avez copié"</string>
<string name="more_item_label" msgid="7419249600215749115">"Plus"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Méta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Pour modifier : Paramètres > Applications"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Toujours autoriser"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ne jamais autoriser"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM retirée"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Le réseau mobile ne sera pas disponible avant le redémarrage avec une SIM valide."</string>
<string name="sim_done_button" msgid="6464250841528410598">"OK"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM ajoutée"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Redémarrez votre appareil pour accéder au réseau mobile."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Redémarrer"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Activer le service de données mobiles"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"La carte SIM est maintenant désactivée. Saisissez le code PUK pour continuer. Contactez votre opérateur pour en savoir plus."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Saisir le code PIN souhaité"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirmer le code PIN souhaité"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Déblocage de la SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Le code PIN est erroné."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Veuillez saisir un code PIN comprenant entre quatre et huit chiffres."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"La clé PUK doit contenir 8 chiffres."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Supprimer"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Augmenter le volume au dessus du niveau recommandé ?\n\nL\'écoute prolongée à un volume élevé peut endommager vos facultés auditives."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Attention,\nVous avez dépassé la dose hebdomadaire de bruit élevé que vous pouvez écouter sans danger via un casque.\n\nDépasser cette limite endommagera définitivement votre audition."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Attention,\nVous avez dépassé 5 fois la dose hebdomadaire de bruit élevé que vous pouvez écouter sans danger via un casque.\n\nLe volume a été réduit pour protéger votre audition."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Le volume auquel vous écoutez du contenu multimédia peut endommager votre audition s\'il est maintenu pendant une longue période.\n\nSi vous continuez d\'écouter du contenu à ce volume pendant de longues périodes, vous risquez d\'endommager votre audition."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Attention,\nVous écoutez actuellement du contenu à un volume sonore dangereux.\n\nPoursuivre l\'écoute à un volume si élevé endommagera définitivement votre audition."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utiliser le raccourci d\'accessibilité ?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quand le raccourci est activé, appuyez sur les deux boutons de volume pendant trois secondes pour démarrer une fonctionnalité d\'accessibilité."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Activer le raccourci pour accéder aux fonctionnalités d\'accessibilité ?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Désactiver le raccourci"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Correction des couleurs"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode une main"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Encore moins lumineux"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Autorise une application associée à transmettre des messages associés à d\'autres appareils."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Lancer des services de premier plan à partir de l\'arrière-plan"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Autorise une application associée à lancer des services de premier plan à partir de l\'arrière-plan."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Le micro est disponible"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Le micro est bloqué"</string>
</resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 7628658..1d014737 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Os PIN que escribiches non coinciden."</string>
<string name="invalidPin" msgid="7542498253319440408">"Escribe un PIN que teña entre 4 e 8 números."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Escribe un PUK que teña 8 números ou máis."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"A SIM está bloqueada mediante PUK. Escribe o código PUK para desbloqueala."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Escribe o PUK2 para desbloquear a SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Non é correcto. Activa o bloqueo da SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Quédanche <xliff:g id="NUMBER_1">%d</xliff:g> intentos antes de que se bloquee a SIM.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Permite á aplicación finalizar procesos en segundo plano doutras aplicacións. É posible que esta acción provoque que outras aplicacións deixen de funcionar."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Esta aplicación pode aparecer sobre outras"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Esta aplicación pode aparecer sobre outras aplicacións ou outras partes da pantalla, polo que é posible que interfira no uso normal das aplicacións e modifique a forma en que se mostran."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ocultar as superposicións doutras aplicacións"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Esta aplicación pode solicitar que o sistema oculte superposicións doutras aplicacións para que non se mostren por enriba dela."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"executar en segundo plano"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Esta aplicación pode executarse en segundo plano. Por este motivo, quizais se esgote antes a batería."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"usar datos en segundo plano"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Téntao de novo"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Desbloquea para gozar todas as funcións e datos"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Superouse o número máximo de intentos de desbloqueo facial"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Non hai ningunha SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Non hai ningunha SIM na tableta."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Non hai ningunha SIM no dispositivo Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Non hai ningunha SIM no teléfono."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Engade unha SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"A SIM falta ou non se pode ler. Engade unha."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"A SIM non se pode usar."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"A SIM desactivouse permanentemente.\n Ponte en contacto co teu fornecedor de servizos sen fíos para conseguir outra."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Pista anterior"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Seguinte pista"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausar"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avance rápido"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Só chamadas de emerxencia"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Bloqueada pola rede"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"A SIM está bloqueada mediante PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consulta a guía para usuarios ou ponte en contacto co servizo de asistencia ao cliente."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"A SIM está bloqueada."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Desbloqueando SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Debuxaches incorrectamente o padrón de desbloqueo <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nTéntao de novo en <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Introduciches o contrasinal incorrectamente <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nTéntao de novo en <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Introduciches o PIN incorrectamente <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nTéntao de novo en <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Abandonar esta páxina"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Permanecer nesta páxina"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nSeguro que queres saír desta páxina?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmar"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Consello: Toca dúas veces para achegar e afastar o zoom."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Encher"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Conf. autocompletar"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autocompletar con <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincia"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Código postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estado"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Código postal"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Condado"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Illa"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrito"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamento"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefectura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parroquia"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Zona"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirato"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ler os favoritos e o historial da web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permite á aplicación ler o historial de todos os URL visitados polo navegador e todos os favoritos do navegador. Nota: É posible que este permiso non sexa executado por navegadores de terceiros ou outras aplicacións con funcionalidades de navegación web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"escribir nos favoritos e no historial da web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permite á aplicación modificar o historial ou os favoritos do navegador que están almacenados na túa tableta. É posible que esta acción permita á aplicación borrar ou modificar os datos do navegador. Nota: É posible que este permiso non sexa executado por navegadores de terceiros ou outras aplicacións con funcionalidades de navegación web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permite que a aplicación modifique o historial ou os marcadores do navegador almacenados no dispositivo Android TV. Con este permiso a aplicación pode borrar ou modificar datos do navegador. Nota: Este permiso non o poden utilizar navegadores externos nin outras aplicacións que teñan funcións de navegación web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permite á aplicación modificar o historial ou os favoritos do navegador que están almacenados no teu teléfono. É posible que esta acción permita á aplicación borrar ou modificar os datos do navegador. Nota: É posible que este permiso non sexa executado por navegadores de terceiros ou outras aplicacións con funcionalidades de navegación web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"definir unha alarma"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permite á aplicación definir unha alarma nunha aplicación de espertador instalada. É posible que algunhas aplicacións de espertador non implementen esta función."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"engadir correo de voz"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permite á aplicación engadir mensaxes á caixa de entrada do teu correo de voz."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modificar os permisos de xeolocalización do navegador"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permite á aplicación modificar os permisos de xeolocalización do navegador. É posible que as aplicacións maliciosas utilicen esta opción para permitir o envío de información de localización a sitios web arbitrarios."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Queres que o navegador lembre este contrasinal?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Agora non"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Lembrar"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nunca"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Non tes permiso para abrir esta páxina."</string>
- <string name="text_copied" msgid="2531420577879738860">"O texto copiouse no portapapeis."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido procedente de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido do portapapeis"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou texto que copiaches"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou unha imaxe que copiaches"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido que copiaches"</string>
<string name="more_item_label" msgid="7419249600215749115">"Máis"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menú+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Mudar en Configuración > Aplicacións"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Permitir sempre"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Non permitir nunca"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Quitouse unha SIM"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"A rede de telefonía móbil non estará dispoñible ata que reinicies o dispositivo cunha SIM válida."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Feito"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Engadiuse unha SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Reinicia o dispositivo para acceder á rede móbil."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Reiniciar"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Activar o servizo móbil"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Agora a tarxeta SIM está desactivada. Introduce o código PUK para continuar. Ponte en contacto co operador para obter información detallada."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Introduce o código PIN desexado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirma o código PIN desexado"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Desbloqueando SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Código PIN incorrecto"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Escribe un PIN que teña entre 4 e 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"O código PUK debe ter 8 números."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Quitar"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Queres subir o volume máis do nivel recomendado?\n\nA reprodución de son a un volume elevado durante moito tempo pode provocar danos nos oídos."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Advertencia:\nSuperaches a cantidade de sinais acústicos elevados que podes escoitar de forma segura con auriculares nunha semana.\n\nSe superas este límite, os teus oídos quedarán danados permanentemente."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Advertencia:\nSuperaches 5 veces a cantidade de sinais acústicos elevados que podes escoitar de forma segura con auriculares nunha semana.\n\nBaixouse o volume para protexer os teus oídos."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"O nivel ao que escoitas o contido multimedia pode causar danos auditivos se o mantés durante longos períodos de tempo.\n\nSe segues reproducindo audio a este nivel de volume durante moito tempo, poderían danárseche os oídos."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Advertencia:\nEstás escoitando contido a un nivel de volume perigoso.\n\nSe segues escoitando audio a este nivel de volume, os teus oídos quedarán danados permanentemente."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Queres utilizar o atallo de accesibilidade?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Cando o atallo está activado, podes premer os dous botóns de volume durante 3 segundos para iniciar unha función de accesibilidade."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Queres activar as funcións de accesibilidade?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactivar atallo"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atallo"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de cor"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Corrección da cor"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo dunha soa man"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume premidas. Activouse o servizo <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Permite que unha aplicación complementaria envíe mensaxes complementarias a outros dispositivos."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Desde un segundo plano iniciar servizos en primeiro plano"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permite que nun segundo plano unha aplicación complementaria inicie servizos en primeiro plano."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"O micrófono está dispoñible"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"O micrófono está bloqueado"</string>
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 4cae4e5..76fb45f 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"તમે લખેલ પિન મેળ ખાતો નથી."</string>
<string name="invalidPin" msgid="7542498253319440408">"એક પિન લખો જે 4 થી 8 સંખ્યાનો છે."</string>
<string name="invalidPuk" msgid="8831151490931907083">"એક PUK લખો કે જે 8 અંક કે તેથી લાંબો હોય."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"તમારું સિમ કાર્ડ PUK-લૉક કરેલું છે. તેને અનલૉક કરવા માટે PUK કોડ ટાઇપ કરો."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"સિમ કાર્ડ અનલૉક કરવા માટે PUK2 ટાઇપ કરો."</string>
<string name="enablePin" msgid="2543771964137091212">"અસફળ, સિમ/RUIM લૉક સક્ષમ કરો."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">સિમ લૉક થાય તે પહેલાં તમારી પાસે <xliff:g id="NUMBER_1">%d</xliff:g> પ્રયત્ન બાકી છે.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"એપ્લિકેશનને અન્ય ઍપ્લિકેશનોની બૅકગ્રાઉન્ડ પ્રક્રિયા સમાપ્ત કરવાની મંજૂરી આપે છે. આનાથી અન્ય ઍપ્લિકેશનો ચાલવાથી બંધ થઈ શકે છે."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"આ ઍપ્લિકેશન, અન્ય ઍપ્લિકેશનોની ટોચ પર દેખાઈ શકે છે"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"આ ઍપ્લિકેશન, અન્ય ઍપ્લિકેશોની ટોચ પર અથવા સ્ક્રીનના અન્ય ભાગોમાં દેખાઈ શકે છે. આ સામાન્ય ઍપ્લિકેશન વપરાશમાં હસ્તક્ષેપ કરી શકે છે અને અન્ય ઍપ્લિકેશનોની દેખાવાની રીતને બદલી શકે છે."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"અન્ય ઍપના ઓવરલે છુપાવો"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"આ ઍપ એવી વિનંતી કરી શકે છે કે સિસ્ટમ ઍપમાંથી ઉદ્ભવતા ઓવરલેને તેની ઉપર બતાવવાથી છુપાવે."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"પૃષ્ઠભૂમિમાં ચલાવો"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"આ ઍપ્લિકેશન પૃષ્ઠભૂમિમાં ચાલી શકે છે. આનાથી બૅટરી ઝડપથી ખાલી થઈ શકે છે."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"પ઼ષ્ઠભૂમિમાં ડેટા વાપરો"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"ફરી પ્રયાસ કરો"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"તમામ સુવિધાઓ અને ડેટા માટે અનલૉક કરો"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"મહત્તમ ફેસ અનલૉક પ્રયાસો ઓળંગાયા"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"કોઈ સિમ કાર્ડ નથી"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ટૅબ્લેટમાં કોઈ સિમ કાર્ડ નથી."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"તમારા Android TV ડિવાઇસમાં કોઈ સિમ કાર્ડ નથી."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ફોનમાં કોઈ સિમ કાર્ડ નથી."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"સિમ કાર્ડ ઉમેરો."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"સિમ કાર્ડ ખૂટે છે અથવા વાંચી શકાય એવું નથી. સિમ કાર્ડ ઉમેરો."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ઉપયોગમાં ન લઈ શકાતું સિમ કાર્ડ."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"તમારું સિમ કાર્ડ કાયમ માટે નિષ્ક્રિય કરવામાં આવ્યું છે.\n બીજા સિમ કાર્ડ માટે તમારા વાયરલેસ સેવા પ્રદાતાનો સંપર્ક કરો."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"પહેલાનો ટ્રૅક"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"આગલો ટ્રૅક"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"થોભો"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"ઝડપી ફોરવર્ડ કરો"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"ફક્ત ઇમર્જન્સી કૉલ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"નેટવર્ક લૉક થયું"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"સિમ કાર્ડ PUK-લૉક કરેલું છે."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"વપરાશકર્તા માર્ગદર્શિકા જુઓ અથવા ગ્રાહક સંભાળનો સંપર્ક કરો."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"સિમ કાર્ડ લૉક કરેલું છે."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"સિમ કાર્ડ અનલૉક કરી રહ્યાં છીએ…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે તમારી અનલૉક પૅટર્ન દોરી. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે તમારો પાસવર્ડ લખ્યો છે. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> સેકંડમાં ફરીથી પ્રયાસ કરો."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે તમારો પિન લખ્યો છે. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"આ પૃષ્ઠ છોડો"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"આ પૃષ્ઠ પર રહો"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nશું તમે ખરેખર આ પૃષ્ઠથી દૂર નેવિગેટ કરવા માંગો છો?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"કન્ફર્મ કરો"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"ટિપ: ઝૂમ વધારવા અને ઘટાડવા માટે બે વાર ટેપ કરો."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"સ્વતઃભરણ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"સ્વતઃભરણ સેટ કરો"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> સાથે ઑટોમૅટિક રીતે ભરો"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"પ્રાંત"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"પોસ્ટલ કોડ"</string>
- <string name="autofill_state" msgid="3341725337190434069">"રાજ્ય"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"પિન કોડ"</string>
- <string name="autofill_county" msgid="7781382735643492173">"કાઉન્ટિ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"આઇલેન્ડ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"જીલ્લો"</string>
- <string name="autofill_department" msgid="9047276226873531529">"વિભાગ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"પ્રીફેચર"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"પૅરિશ"</string>
- <string name="autofill_area" msgid="8289022370678448983">"ક્ષેત્ર"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"એમિરાત"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"તમારા વેબ બુકમાર્ક્સ અને ઇતિહાસને વાંચો"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"એપ્લિકેશનને બ્રાઉઝરે મુલાકાત લીધેલ તમામ URL અને બ્રાઉઝરના તમામ બુકમાર્ક્સ વાંચવાની મંજૂરી આપે છે. નોંધ: આ પરવાનગી તૃતીય-પક્ષ બ્રાઉઝર્સ અથવા વેબ બ્રાઉઝિંગ ક્ષમતાઓ સાથેની અન્ય ઍપ્લિકેશનો દ્વારા લાગુ કરી શકાશે નહીં."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"વેબ બુકમાર્ક્સ અને ઇતિહાસ લખો"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"એપ્લિકેશનને તમારા ટેબ્લેટ પર સંગ્રહિત બ્રાઉઝરના ઇતિહાસ અથવા બુકમાર્ક્સને સંશોધિત કરવાની મંજૂરી આપે છે. આ એપ્લિકેશનને બ્રાઉઝર ડેટા કાઢી નાખવા કે સંશોધિત કરવાની મંજૂરી આપી શકે છે. નોંધ: આ પરવાનગી તૃતીય-પક્ષ બ્રાઉઝર્સ અથવા વેબ બ્રાઉઝિંગ ક્ષમતાઓ સાથેની અન્ય ઍપ્લિકેશનો દ્વારા લાગુ કરી શકાશે નહીં."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ઍપને તમારા Android TV ડિવાઇસ પર સંગ્રહિત બ્રાઉઝરના ઇતિહાસ અથવા બુકમાર્કને સંશોધિત કરવાની મંજૂરી આપે છે. આ ઍપને બ્રાઉઝર ડેટા કાઢી નાખવા કે સંશોધિત કરવાની મંજૂરી આપી શકે છે. નોંધ: આ પરવાનગી તૃતીય પક્ષ બ્રાઉઝર અથવા વેબ બ્રાઉઝિંગ ક્ષમતાઓ સાથેની અન્ય ઍપ દ્વારા લાગુ કરી શકાશે નહીં."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"એપ્લિકેશનને તમારા ફોન પર સંગ્રહિત બ્રાઉઝરના ઇતિહાસ અથવા બુકમાર્ક્સને સંશોધિત કરવાની મંજૂરી આપે છે. આ એપ્લિકેશનને બ્રાઉઝર ડેટા કાઢી નાખવા કે સંશોધિત કરવાની મંજૂરી આપી શકે છે. નોંધ: આ પરવાનગી તૃતીય-પક્ષ બ્રાઉઝર્સ અથવા વેબ બ્રાઉઝિંગ ક્ષમતાઓ સાથેની અન્ય ઍપ્લિકેશનો દ્વારા લાગુ કરી શકાશે નહીં."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"એલાર્મ સેટ કરો"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"એપ્લિકેશનને ઇન્સ્ટોલ કરેલ અલાર્મ ઘડિયાળ એપ્લિકેશનમાં અલાર્મ સેટ કરવાની મંજૂરી આપે છે. કેટલીક અલાર્મ ઘડિયાળ ઍપ્લિકેશનો, આ સુવિધા લાગુ કરી શકતી નથી."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"વૉઇસમેઇલ ઉમેરો"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"એપ્લિકેશનને તમારા વૉઇસમેઇલ ઇનબોક્સ પર સંદેશા ઉમેરવાની મંજૂરી આપે છે."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"બ્રાઉઝરની ભૌગોલિક સ્થાન પરવાનગીઓ સંશોધિત કરો"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"એપ્લિકેશનને બ્રાઉઝરની ભૌગોલિક સ્થાનની પરવાનગીઓને સંશોધિત કરવાની મંજૂરી આપે છે. દુર્ભાવનાપૂર્ણ ઍપ્લિકેશનો આનો ઉપયોગ સ્વચ્છંદી વેબ સાઇટ્સ પર સ્થાન માહિતી મોકલવા માટે કરી શકે છે."</string>
- <string name="save_password_message" msgid="2146409467245462965">"શું તમે ઇચ્છો છો કે બ્રાઉઝર આ પાસવર્ડ યાદ રાખે?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"હમણાં નહીં"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"યાદ રાખો"</string>
- <string name="save_password_never" msgid="6776808375903410659">"ક્યારેય નહીં"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"તમને આ પૃષ્ઠને ખોલવાની પરવાનગી નથી."</string>
- <string name="text_copied" msgid="2531420577879738860">"ક્લિપબોર્ડ પર ટેક્સ્ટ કૉપિ કરી."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>માંથી કૉપિ કરાયેલો ડેટા <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>માં પેસ્ટ કરવામાં આવ્યો"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમારા ક્લિપબોર્ડ પરથી પેસ્ટ કરવામાં આવ્યું"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલી ટેક્સ્ટ પેસ્ટ કરાઈ"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલી છબી પેસ્ટ કરાઈ"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલું કન્ટેન્ટ પેસ્ટ કરાયું"</string>
<string name="more_item_label" msgid="7419249600215749115">"વધુ"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"મેનૂ+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"તમે પછીથી આને સેટિંગ > ઍપમાં બદલી શકો છો"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"હંમેશા મંજૂરી આપો"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ક્યારેય મંજૂરી આપશો નહીં"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"સિમ કાર્ડ કાઢી નાખ્યું"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"તમે માન્ય સિમ કાર્ડ વડે ફરી શરૂ ન કરો, ત્યાં સુધી મોબાઇલ નેટવર્ક ઉપલબ્ધ નહીં થાય."</string>
<string name="sim_done_button" msgid="6464250841528410598">"થઈ ગયું"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"સિમ કાર્ડ ઉમેર્યું"</string>
<string name="sim_added_message" msgid="6602906609509958680">"મોબાઇલ નેટવર્કને ઍક્સેસ કરવા માટે તમારા ઉપકરણને પુનઃપ્રારંભ કરો."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"રિસ્ટાર્ટ કરો"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"મોબાઇલ સેવાને સક્રિય કરો"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"સિમ હવે અક્ષમ છે. ચાલુ રાખવા માટે PUK કોડ દાખલ કરો. વિગતો માટે કેરીઅરનો સંપર્ક કરો."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"જોઈતો પિન કોડ દાખલ કરો"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"જોઈતા પિન કોડની પુષ્ટિ કરો"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"સિમ કાર્ડ અનલૉક કરી રહ્યાં છીએ…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ખોટો પિન કોડ."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"એક પિન લખો જે 4 થી 8 સંખ્યાનો છે."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK કોડ 8 નંબર્સનો હોવો જોઈએ."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"કાઢી નાખો"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ભલામણ કરેલ સ્તરની ઉપર વૉલ્યૂમ વધાર્યો?\n\nલાંબા સમય સુધી ઊંચા અવાજે સાંભળવું તમારી શ્રવણક્ષમતાને નુકસાન પહોંચાડી શકે છે."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"ચેતવણી,\nએક અઠવાડિયામાં કોઈ વ્યક્તિ હૅડફોન પર સુરક્ષિત રીતે મોટા અવાજે સાંભળી શકે તેટલા સાઉન્ડ સિગ્નલની મર્યાદા તમે વટાવી ચૂક્યા છો.\n\nઆ મર્યાદા વટાવવાથી તમારી સાંભળવાની ક્ષમતાને કાયમી રીતે નુક્સાન થઈ શકે છે."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"ચેતવણી,\nએક અઠવાડિયામાં કોઈ વ્યક્તિ હૅડફોન પર સુરક્ષિત રીતે મોટા અવાજે સાંભળી શકે તેટલા સાઉન્ડ સિગ્નલના 5 ગણાથી વધુ મર્યાદા તમે વટાવી ચૂક્યા છો.\n\nતમારી સાંભળવાની ક્ષમતાને સુરક્ષિત રાખવા માટે વૉલ્યૂમ ઘટાડવામાં આવ્યું છે."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"તમે જે લેવલ પર મીડિયા સાંભળી રહ્યાં છો, તે લાંબા સમય સુધી ચાલુ રહેશે તો તેના પરિણામે તમારી સાંભળવાની ક્ષમતાને નુક્સાન થઈ શકે છે.\n\nઆ લેવલ પર લાંબા સમય સુધી વગાડવાનું ચાલુ રાખવાથી, તમારી સાંભળવાની ક્ષમતાને નુક્સાન થઈ શકે છે."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"ચેતવણી,\nતમે હાલમાં અસુરક્ષિત લેવલ પર મોટેથી વગાડવામાં આવતું કન્ટેન્ટ સાંભળી રહ્યાં છો.\n\nઆટલું મોટેથી વાગતું કન્ટેન્ટ સાંભળવાનું ચાલુ રાખવાથી તમારી સાંભળવાની ક્ષમતાને કાયમી રીતે નુક્સાન થશે."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ઍક્સેસિબિલિટી શૉર્ટકટનો ઉપયોગ કરીએ?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"જ્યારે શૉર્ટકટ ચાલુ હોય, ત્યારે બન્ને વૉલ્યૂમ બટનને 3 સેકન્ડ સુધી દબાવી રાખવાથી ઍક્સેસિબિલિટી સુવિધા શરૂ થઈ જશે."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ઍક્સેસિબિલિટી સુવિધાઓ માટે શૉર્ટકટ ચાલુ કરીએ?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"શૉર્ટકટ બંધ કરો"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"શૉર્ટકટનો ઉપયોગ કરો"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"વિપરીત રંગમાં બદલવું"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"રંગ સુધારણા"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"એક-હાથે વાપરો મોડ"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"એક્સ્ટ્રા ડિમ"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ચાલુ કરી."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"અન્ય ડિવાઇસ પર સાથી મેસેજ ડિલિવર કરવા માટે સાથી ઍપને મંજૂરી આપે છે."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"બૅકગ્રાઉન્ડમાંથી ફૉરગ્રાઉન્ડ સેવાઓ શરૂ કરો"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"સાથી ઍપને બૅકગ્રાઉન્ડમાંથી ફૉરગ્રાઉન્ડ સેવાઓ શરૂ કરવાની મંજૂરી આપે છે."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"માઇક્રોફોન ઉપલબ્ધ છે"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"માઇક્રોફોનને બ્લૉક કરવામાં આવ્યો છે"</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index fb4af5d..155f254 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"आपने जो पिन लिखे हैं उसका मिलान नहीं होता."</string>
<string name="invalidPin" msgid="7542498253319440408">"कोई ऐसा पिन लिखें, जिसमें 4 से 8 अंक हों."</string>
<string name="invalidPuk" msgid="8831151490931907083">"ऐसा PUK लिखें जो 8 अंकों या ज़्यादा का हो."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"आपके सिम पर PUK लॉक लगा है. इसे अनलॉक करने के लिए, PUK कोड डालें."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"सिम को अनब्लॉक करने के लिए PUK2 टाइप करें."</string>
<string name="enablePin" msgid="2543771964137091212">"नहीं हो सका, सिम//RUIM लॉक चालू करें."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">सिम के लॉक हो जाने से पहले आपके पास <xliff:g id="NUMBER_1">%d</xliff:g> प्रयास शेष हैं.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"ऐप्स को अन्य ऐप्स की पृष्ठभूमि प्रक्रियाओं को खत्म करने देता है. यह अन्य ऐप्स का चलना रोक सकता है."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"यह ऐप्लिकेशन दूसरे ऐप्लिकेशन के ऊपर दिखाई दे सकता है"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"यह ऐप्लिकेशन, दूसरे ऐप्लिकेशन के ऊपर या स्क्रीन के अन्य भागों पर दिखाई दे सकता है. इससे ऐप्लिकेशन के सामान्य उपयोग में बाधा आ सकती है और दूसरे ऐप्लिकेशन के दिखाई देने के तरीकों में बदलाव हो सकता है."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ऊपर लगे दूसरे ऐप्लिकेशन को छिपाएं"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"यह ऐप्लिकेशन, अनुरोध कर सकता है कि सिस्टम उसके ऊपर लगने वाले दूसरे ऐप्लिकेशन को छिपा दे."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"बैकग्राउंड में चलता है"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"यह ऐप बैकग्राउंड में चल सकता है. इसके कारण बैटरी तेज़ी से खत्म हो सकती है."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"बैकग्राउंड में डेटा का उपयोग करता है"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"फिर से कोशिश करें"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"सभी सुविधाओं और डेटा के लिए अनलॉक करें"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"मालिक का चेहरा पहचानकर अनलॉक करने की तय सीमा खत्म हो गई"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"कोई सिम नहीं है"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"टैबलेट में कोई सिम नहीं है."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"आपके Android TV डिवाइस में कोई सिम नहीं है."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"फ़ोन में कोई सिम नहीं है."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"कोई सिम जोड़ें."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"सिम मौजूद नहीं है या उसे ऐक्सेस नहीं किया जा सकता. कोई सिम जोड़ें."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"सिम को हमेशा के लिए बंद कर दिया गया है."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"आपका सिम हमेशा के लिए बंद कर दिया गया है.\n दूसरा सिम पाने के लिए, वायरलेस सेवा देने वाली कंपनी से संपर्क करें."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"पिछला ट्रैक"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"अगला ट्रैक"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"रोकें"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"फ़ास्ट फ़ॉरवर्ड"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"सिर्फ़ आपातकालीन कॉल"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"नेटवर्क लॉक किया गया"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"सिम में PUK लॉक लगा है."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"कृपया उपयोग के लिए गाइड देखें या ग्राहक सहायता से संपर्क करें."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"सिम लॉक है."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"सिम अनलॉक हो रहा है…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"आपने अपना अनलॉक आकार <xliff:g id="NUMBER_0">%1$d</xliff:g> बार गलत बनाया है. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकंड में फिर से प्रयास करें."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"आपने अपना पासवर्ड <xliff:g id="NUMBER_0">%1$d</xliff:g> बार गलत तरीके से लिखा है. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकंड में फिर से प्रयास करें."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"आपने अपना पिन <xliff:g id="NUMBER_0">%1$d</xliff:g> बार गलत तरीके से लिखा है. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकंड में फिर से प्रयास करें."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"इस पेज से आगे बढ़ें"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"इस पेज पर बने रहें"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nक्या आप वाकई इस पेज से दूर नेविगेट करना चाहते हैं?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"पुष्टि करें"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"सलाह: ज़ूम इन और आउट करने के लिए दो बार छूएं."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"अपने आप भरने की सुविधा"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"अपने आप भरें जाना सेट करें"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> के साथ अपने आप जानकारी भरने की सुविधा"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"प्रांत"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"डाक कोड"</string>
- <string name="autofill_state" msgid="3341725337190434069">"राज्य"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"पिन कोड"</string>
- <string name="autofill_county" msgid="7781382735643492173">"काउंटी"</string>
- <string name="autofill_island" msgid="5367139008536593734">"द्वीप"</string>
- <string name="autofill_district" msgid="6428712062213557327">"जिला"</string>
- <string name="autofill_department" msgid="9047276226873531529">"विभाग"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"प्रशासकीय क्षेत्र"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"मोहल्ला"</string>
- <string name="autofill_area" msgid="8289022370678448983">"क्षेत्र"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"अमीरात"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"अपने वेब बुकमार्क और इतिहास पढ़ें"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ऐप को ब्राउज़र के ज़रिये देखे गए सभी यूआरएल के इतिहास, और ब्राउज़र के सभी बुकमार्क पढ़ने देता है. ध्यान दें: हो सकता है कि यह अनुमति तीसरे-पक्ष के ब्राउज़र या वेब ब्राउज़िंग की सुविधा वाले अन्य ऐप के ज़रिये लागू न की जाए."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"वेब बुकमार्क और इतिहास लिखें"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"ऐप्स को आपके टैबलेट में संग्रहित ब्राउज़र के इतिहास या बुकमार्क को संशोधित करने देता है. इससे ऐप्स ब्राउज़र डेटा को मिटा सकता है या संशोधित कर सकता है. ध्यान दें: यह अनुमति तृतीय-पक्ष ब्राउज़र या वेब ब्राउज़िंग क्षमताओं वाले अन्य ऐप्स द्वारा लागू नहीं की जा सकती."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"यह ऐप्लिकेशन को आपके Android TV डिवाइस पर सेव किए ब्राउज़र के इतिहास और बुकमार्क में बदलाव करने की अनुमति देता है. ध्यान दें: तीसरे पक्ष के ब्राउज़र या दूसरे ऐप्लिकेशन जो वेब-ब्राउज़िंग कर सकते हैं, इस अनुमति को लागू नहीं कर सकते हैं."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"ऐप्स को आपके फ़ोन में संग्रहित ब्राउज़र के इतिहास या बुकमार्क को संशोधित करने देता है. इससे ऐप्स ब्राउज़र डेटा को मिटा सकता है या संशोधित कर सकता है. ध्यान दें: यह अनुमति तृतीय-पक्ष ब्राउज़र या वेब ब्राउज़िंग क्षमताओं वाले अन्य ऐप्स द्वारा लागू नहीं की जा सकती."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"अलार्म सेट करें"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ऐप्स को इंस्टॉल किए गए अलार्म घड़ी ऐप्स में अलार्म सेट करने देता है. हो सकता है कुछ अलार्म घड़ी ऐप्स में यह सुविधा न हो."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ध्वनिमेल जोड़ें"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ऐप्स को आपके ध्वनिमेल इनबॉक्स में संदेश जोड़ने देता है."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ब्राउज़र की जगह से जुड़ी अनुमतियों को बदलें"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ऐप को ब्राउज़र की जगह से जुड़ी अनुमतियों को बदलने देता है. धोखा देने वाले ऐप इसका इस्तेमाल गलत वेबसाइट को जगह की जानकारी भेजने में कर सकते हैं."</string>
- <string name="save_password_message" msgid="2146409467245462965">"क्या आप चाहते हैं कि ब्राउज़र पासवर्ड को याद रखे?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"रद्द करें"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"याद रखें"</string>
- <string name="save_password_never" msgid="6776808375903410659">"कभी नहीं"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"आपके पास इस पेज को खोलने की अनुमति नहीं है."</string>
- <string name="text_copied" msgid="2531420577879738860">"लेख को क्लिपबोर्ड पर कॉपी किया गया."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> से कॉपी किए गए डेटा को <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> में चिपकाया गया है"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने क्लिपबोर्ड में मौजूद डेटा कॉपी करके चिपकाया"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपका कॉपी किया हुआ टेक्स्ट चिपका दिया है"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपकी कॉपी की हुई इमेज चिपका दी है"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपका कॉपी किया हुआ कॉन्टेंट चिपका दिया है"</string>
<string name="more_item_label" msgid="7419249600215749115">"और"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"मेन्यू+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"आप इसे बाद में सेटिंग > ऐप्स में बदल सकते हैं"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"हमेशा अनुमति दें"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"कभी भी अनुमति न दें"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"सिम हटाया गया"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"जब तक कोई मान्य सिम डालकर फ़ोन को रीस्टार्ट नहीं किया जाता, तब तक मोबाइल नेटवर्क उपलब्ध नहीं होगा."</string>
<string name="sim_done_button" msgid="6464250841528410598">"हो गया"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"सिम जोड़ा गया"</string>
<string name="sim_added_message" msgid="6602906609509958680">"मोबाइल नेटवर्क की पहुंच पाने लिए अपना डिवाइस फिर से चालू करें."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"फिर से शुरू करें"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"माेबाइल सेवा चालू करें"</string>
@@ -1679,7 +1627,7 @@
<string name="media_route_status_connecting" msgid="5845597961412010540">"कनेक्ट हो रहा है..."</string>
<string name="media_route_status_available" msgid="1477537663492007608">"मौजूद"</string>
<string name="media_route_status_not_available" msgid="480912417977515261">"उपलब्ध नहीं"</string>
- <string name="media_route_status_in_use" msgid="6684112905244944724">"उपयोग में"</string>
+ <string name="media_route_status_in_use" msgid="6684112905244944724">"इस्तेमाल में है"</string>
<string name="display_manager_built_in_display_name" msgid="1015775198829722440">"अंतर्निहित स्क्रीन"</string>
<string name="display_manager_hdmi_display_name" msgid="1022758026251534975">"HDMI स्क्रीन"</string>
<string name="display_manager_overlay_display_name" msgid="5306088205181005861">"ओवरले #<xliff:g id="ID">%1$d</xliff:g>"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"सिम अब अक्षम हो गई है. जारी रखने के लिए PUK कोड डालें. विवरण के लिए कैरियर से संपर्क करें."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"इच्छित पिन कोड डालें"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"पिन कोड की पुष्टि करें"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"सिम अनलॉक हो रहा है…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"गलत PIN कोड."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"ऐसा PIN लिखें, जो 4 से 8 अंकों का हो."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK कोड 8 अंकों का होना चाहिए."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"हटाएं"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"वॉल्यूम को सुझाए गए स्तर से ऊपर बढ़ाएं?\n\nअत्यधिक वॉल्यूम पर ज़्यादा समय तक सुनने से आपकी सुनने की क्षमता को नुकसान हो सकता है."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"चेतावनी,\nआपने हेडफ़ोन पर एक हफ़्ते में, सुरक्षित तरीके से तेज़ साउंड सिग्नल सुनने की सीमा को पार कर लिया है.\n\nइस सीमा को पार करने पर, आपकी सुनने की क्षमता को हमेशा के लिए नुकसान पहुंच सकता है."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"चेतावनी,\nआपने हेडफ़ोन पर एक हफ़्ते में, सुरक्षित तरीके से तेज़ साउंड सिग्नल सुनने की सीमा से पांच गुना ज़्यादा बार तेज़ साउंड सिग्नल सुन लिए हैं.\n\nआपकी सुनने की क्षमता की सुरक्षा के लिए, आवाज़ को धीमा कर दिया गया है."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"मौजूदा लेवल पर ज़्यादा समय तक मीडिया को सुनने से, आपकी सुनने की क्षमता को नुकसान पहुंच सकता है.\n\nबहुत देर तक इस लेवल पर मीडिया चलाना जारी रखने से, आपकी सुनने की क्षमता को नुकसान पहुंच सकता है."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"चेतावनी,\nतेज़ आवाज़ वाले कॉन्टेंट को, आवाज़ के असुरक्षित लेवल पर सुना जा रहा है.\n\nबहुत देर तक इतनी तेज़ आवाज़ को सुनने पर, आपकी सुनने की क्षमता को हमेशा के लिए नुकसान पहुंच सकता है."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"सुलभता शॉर्टकट का इस्तेमाल करना चाहते हैं?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"शॉर्टकट के चालू होने पर, दाेनाें वॉल्यूम बटन (आवाज़ कम या ज़्यादा करने वाले बटन) को तीन सेकंड तक दबाने से, सुलभता सुविधा शुरू हाे जाएगी."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"क्या आप सुलभता सुविधाओं के लिए शॉर्टकट चालू करना चाहते हैं?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"शॉर्टकट बंद करें"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट का उपयोग करें"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"रंग बदलने की सुविधा"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"रंग में सुधार करने की सुविधा"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"वन-हैंडेड मोड"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को चालू कर दिया गया."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"इससे साथी ऐप्लिकेशन को अन्य डिवाइसों पर, साथी ऐप्लिकेशन के मैसेज डिलीवर करने की अनुमति मिलती है."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"बैकग्राउंड में फ़ोरग्राउंड सेवाएं चलाने की अनुमति दें"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"इससे साथी ऐप्लिकेशन को बैकग्राउंड में फ़ोरग्राउंड सेवाएं चलाने की अनुमति मिलती है."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"माइक्रोफ़ोन इस्तेमाल किया जा सकता है"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"माइक्रोफ़ोन को ब्लॉक किया गया है"</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 02338fb..7de0b31 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN-ovi koje ste unijeli međusobno se ne podudaraju."</string>
<string name="invalidPin" msgid="7542498253319440408">"Unesite PIN koji ima od 4 do 8 brojeva."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Upišite PUK koji se sastoji od barem 8 brojeva."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Vaš je SIM zaključan PUK-om. Unesite PUK kôd da biste ga otključali."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Upišite PUK2 da biste deblokirali SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Neuspješno; omogući zaključavanje SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Imate još <xliff:g id="NUMBER_1">%d</xliff:g> pokušaj prije zaključavanja SIM kartice.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Aplikaciji omogućuje završavanje pozadinskih procesa drugih aplikacija. To može dovesti do prekida rada drugih aplikacija."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Aplikacija se može prikazivati povrh drugih aplikacija"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Aplikacija se može prikazivati povrh drugih aplikacija ili drugih dijelova zaslona. To može omesti uobičajenu upotrebu aplikacija i promijeniti način prikaza drugih aplikacija."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"sakriti preklapanja drugih aplikacija"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ova aplikacija može zahtijevati da sustav sakrije preklapanja iz aplikacija koja se prikazuju iznad nje."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"izvoditi se u pozadini"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Aplikacija se može izvoditi u pozadini. To može brže trošiti bateriju."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"upotrebljavati podatke u pozadini"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Pokušajte ponovo"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Otključajte za sve značajke i podatke"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Premašen je maksimalni broj pokušaja otključavanja licem"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Nema SIM-a"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"U tabletu nema SIM-a."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Na Android TV uređaju nema SIM-a."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"U telefonu nema SIM-a."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Dodajte SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM nedostaje ili nije čitljiv. Dodajte SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM je neupotrebljiv."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Vaš je SIM trajno deaktiviran.\n Obratite se svom davatelju bežičnih usluga da biste dobili drugi SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Prethodna pjesma"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Sljedeća pjesma"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pauziraj"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Brzo unaprijed"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Samo hitni pozivi"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Mreža je zaključana"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM je zaključan PUK-om."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Pogledajte korisnički priručnik ili kontaktirajte korisničku službu."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM je zaključan."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Otključavanje SIM-a…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Netočno ste iscrtali uzorak za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nPokušajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Netočno ste napisali zaporku <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nPokušajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Netočno ste napisali PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nPokušajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Napusti stranicu"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Ostani na ovoj stranici"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nJeste li sigurni da želite napustiti ovu stranicu?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Potvrdi"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Savjet: Dvaput dotaknite za povećavanje i smanjivanje."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Aut.pop."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Post. Auto. pop."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automatsko popunjavanje koje pruža usluga <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Pokrajina"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Poštanski broj"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Država"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Poštanski broj"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Županija"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Otok"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Okrug"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Odjel"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Župa"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Područje"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"čitanje web-oznaka i povijesti"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Aplikaciji omogućuje čitanje povijesti svih URL-ova koje je Preglednik posjetio te svih oznaka u Pregledniku. Napomena: tu dozvolu ne mogu primijeniti preglednici treće strane niti druge aplikacije s mogućnostima pregledavanja weba."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"pisanje web-oznaka i povijesti"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Aplikaciji omogućuje izmjenu povijesti i oznaka Preglednika pohranjenih na tabletnom računalu. To aplikaciji može omogućiti brisanje ili izmjenu podataka Preglednika. Napomena: tu dozvolu ne mogu primijeniti preglednici treće strane ili druge aplikacije s mogućnostima pregledavanja weba."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Aplikaciji omogućuje izmjenu povijesti i oznaka Preglednika pohranjenih na Android TV uređaju. To aplikaciji može omogućiti brisanje ili izmjenu podataka Preglednika. Napomena: to dopuštenje ne mogu primijeniti preglednici treće strane ili druge aplikacije s mogućnostima pregledavanja weba."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Aplikaciji omogućuje izmjenu povijesti i oznaka Preglednika pohranjenih na telefonu. To aplikaciji može omogućiti brisanje ili izmjenu podataka Preglednika. Napomena: tu dozvolu ne mogu primijeniti preglednici treće strane ili druge aplikacije s mogućnostima pregledavanja weba."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"postavljanje alarma"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Omogućuje aplikaciji postavljanje alarma na instaliranoj aplikaciji budilici. Neke aplikacije budilice možda neće primijeniti tu značajku."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"dodaj govornu poštu"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Omogućuje aplikaciji da doda poruke u vašu govornu poštu."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"izmjena dozvola za geolociranje u pregledniku"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Omogućuje aplikaciji promjenu geolokacijskih dozvola preglednika. Zlonamjerne aplikacije mogu to upotrijebiti da bi dopustile slanje podataka o lokaciji nasumičnim web-lokacijama."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Želite li da preglednik zapamti ovu zaporku?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ne sada"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Zapamti"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nikad"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nemate dozvolu za otvaranje te stranice."</string>
- <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međuspremnik."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"U aplikaciji <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepljen je sadržaj aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Apl. <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je ovaj sadržaj iz međuspremnika"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je tekst koji ste kopirali"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je sliku koju ste kopirali"</string>
- <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je ono što ste kopirali"</string>
<string name="more_item_label" msgid="7419249600215749115">"Više"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Izbornik+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Kasnije to možete promijeniti u odjeljku Postavke > Aplikacije"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Dopusti uvijek"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ne dopuštaj nikada"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM je uklonjen"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilna mreža bit će nedostupna do ponovnog pokretanja s umetnutim važećim SIM-om."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Gotovo"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM je dodan."</string>
<string name="sim_added_message" msgid="6602906609509958680">"Za pristup mobilnoj mreži ponovo pokrenite uređaj."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Ponovno pokreni"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivirajte mobilnu uslugu"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM je sad onemogućen. Unesite PUK kôd da biste nastavili. Kontaktirajte operatera za pojedinosti."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Upišite željeni PIN kôd"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Potvrdite željeni PIN kôd"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Otključavanje SIM-a…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Netočan PIN kôd."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Unesite PIN koji ima od 4 do 8 brojeva."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kôd mora se sastojati od 8 brojeva."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ukloni"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite li pojačati zvuk iznad preporučene razine?\n\nDugotrajno slušanje glasne glazbe može vam oštetiti sluh."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Upozorenje,\npremašili ste količinu glasnih zvučnih signala koja se može sigurno slušati putem slušalica u tjedan dana.\n\nPrekoračenjem tog ograničenja trajno ćete oštetiti svoj sluh."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Upozorenje,\npeterostruko ste premašili količinu glasnih zvučnih signala koja se može sigurno slušati putem slušalica u tjedan dana.\n\nGlasnoća je utišana radi zaštite vašeg sluha."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Glasnoća kojom slušate medijske sadržaje može rezultirati oštećenjem sluha ako potraje dulje.\n\nAko nastavite slušati tako glasno dulje vrijeme, mogao bi vam se oštetiti sluh."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Upozorenje,\ntrenutačno slušate glasan sadržaj nesigurnom glasnoćom.\n\nAko nastavite slušati tako glasno, trajno ćete oštetiti sluh."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li upotrebljavati prečac za pristupačnost?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kad je taj prečac uključen, pritiskom na obje tipke za glasnoću na tri sekunde pokrenut će se značajka pristupačnosti."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Želite li uključiti prečac za značajke pristupačnosti?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Isključi prečac"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Upotrijebi prečac"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Korekcija boja"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Još tamnije"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za glasnoću. Uključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Popratnoj aplikaciji omogućuje isporuku popratnih poruka drugim uređajima."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Pokreni usluge u prednjem planu iz pozadine"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Popratnoj aplikaciji omogućuje da iz pozadine pokrene usluge u prednjem planu."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon je dostupan"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon je blokiran"</string>
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index cb497f4..955739f 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"A beírt PIN kódok nem egyeznek."</string>
<string name="invalidPin" msgid="7542498253319440408">"Írjon be egy 4-8 számjegyű PIN kódot."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 számjegyű vagy hosszabb PUK kódot írjon be."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"A SIM le van zárva PUK-kóddal. A feloldáshoz adja meg a PUK-kódot."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"A SIM zárolásának feloldásához adja meg a PUK2-kódot."</string>
<string name="enablePin" msgid="2543771964137091212">"Sikertelen, engedélyezze a SIM-/RUIM-zárolást."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Még <xliff:g id="NUMBER_1">%d</xliff:g> próbálkozása van a SIM kártya zárolásáig.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Lehetővé teszi az alkalmazás számára, hogy megszüntesse más alkalmazások háttérben zajló folyamatait. Így előfordulhat, hogy egyes alkalmazások bezárulnak."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Az alkalmazás megjelenhet más alkalmazások fölött"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Az alkalmazás megjelenhet más alkalmazások fölött vagy a képernyő más részein. Ez befolyásolhatja a megszokott alkalmazáshasználatot, és módosíthatja más alkalmazások megjelenésének módját."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"más alkalmazások fedvényeinek elrejtése"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ez az alkalmazás kérheti, hogy a rendszer rejtse el azokat a fedvényeket, amelyeket más alkalmazások felette szeretnének megjeleníteni."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"futás a háttérben"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Ez az alkalmazás futhat a háttérben. Ez gyorsabban merítheti az akkumulátort."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"adathasználat a háttérben"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Újra"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Oldja fel a funkciók és adatok eléréséhez"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Elérte az arcalapú feloldási kísérletek maximális számát"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Nincs SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Nincs SIM a táblagépben."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Nincs SIM az Android TV-eszközben."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Nincs SIM a telefonban."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Adjon hozzá egy SIM-et."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"A SIM hiányzik vagy nem olvasható. Adjon hozzá egy SIM-et."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Nem használható SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM véglegesen deaktiválva.\n Forduljon a vezeték nélküli szolgáltatójához másik SIM beszerzése érdekében."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Előző szám"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Következő szám"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Szünet"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Előretekerés"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Csak segélyhívások"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"A hálózat lezárva"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"A SIM le van zárva PUK-kóddal."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Nézze meg a felhasználói útmutatót, vagy vegye fel a kapcsolatot az ügyfélszolgálattal."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"Zárolt SIM."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM zárolásának feloldása…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"<xliff:g id="NUMBER_0">%1$d</xliff:g> alkalommal rosszul rajzolta le feloldási mintát. \n\nKérjük, <xliff:g id="NUMBER_1">%2$d</xliff:g> másodperc múlva próbálja újra."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Ön helytelenül adta meg a jelszót <xliff:g id="NUMBER_0">%1$d</xliff:g> alkalommal. \n \n Próbálja újra <xliff:g id="NUMBER_1">%2$d</xliff:g> másodperc múlva."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Ön <xliff:g id="NUMBER_0">%1$d</xliff:g> alkalommal helytelenül adta meg PIN kódját. \n \n Próbálja újra <xliff:g id="NUMBER_1">%2$d</xliff:g> másodperc múlva."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Oldal elhagyása"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Ezen az oldalon maradok"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nBiztosan szeretné elhagyni az oldalt?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Megerősítés"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tipp: érintse meg kétszer a nagyításhoz és kicsinyítéshez."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Kitöltés"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Kitöltés beáll."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automatikus kitöltés ezzel: <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Tartomány"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Irányítószám"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Állam"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Irányítószám"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Ország"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Sziget"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Körzet"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Osztály"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektúra"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Közösség"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Terület"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirátus"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"internetes könyvjelzők és előzmények olvasása"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Lehetővé teszi az alkalmazás számára, hogy beolvassa a böngésző által korábban felkeresett összes URL-t és a böngésző könyvjelzőit. Megjegyzés: előfordulhat, hogy ezt az engedélyt harmadik felek által üzemeltetett böngészők vagy egyéb böngészésre képes alkalmazások nem léptetik életbe."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"internetes könyvjelzők és előzmények írása"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a böngésző előzményeit vagy a táblagépen tárolt könyvjelzőket. Az engedéllyel rendelkező alkalmazás törölheti vagy módosíthatja a böngésző adatait. Megjegyzés: előfordulhat, hogy ezt az engedélyt harmadik felek által üzemeltetett böngészők vagy egyéb böngészésre képes alkalmazások nem léptetik életbe."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Lehetővé teszi az alkalmazás számára a böngésző Android TV eszközön tárolt előzményeinek és könyvjelzőinek módosítását. Ezáltal az alkalmazás törölheti vagy módosíthatja a böngészőadatokat. Megjegyzés: ezt az engedélyt nem érvényesíthetik harmadik felek böngészői vagy internetböngészési funkcióval rendelkező más alkalmazások."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a böngésző előzményeit vagy a telefonon tárolt könyvjelzőket. Az engedéllyel rendelkező alkalmazás törölheti vagy módosíthatja a böngésző adatait. Megjegyzés: előfordulhat, hogy ezt az engedélyt harmadik felek által üzemeltetett böngészők vagy egyéb böngészésre képes alkalmazások nem léptetik életbe."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ébresztés beállítása"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Lehetővé teszi az alkalmazás számára, hogy ébresztőt állítson be egy telepített ébresztőóra alkalmazásban. Egyes ilyen alkalmazásokban lehet, hogy nem működik ez a funkció."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"hangposta hozzáadása"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Lehetővé teszi az alkalmazás számára, hogy üzeneteket adjon hozzá bejövő hangpostájához."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"a böngésző helymeghatározási engedélyeinek módosítása"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a böngésző helymeghatározási engedélyeit. Rosszindulatú alkalmazások ezt arra használhatják, hogy a helyére vonatkozó információkat küldjenek tetszőleges webhelyeknek."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Szeretné, hogy a böngésző megjegyezze a jelszót?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Most nem"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Megjegyzés"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Soha"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nincs engedélye ennek az oldalnak a megnyitására."</string>
- <string name="text_copied" msgid="2531420577879738860">"A szöveg bemásolva a vágólapra."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> tartalmat másolt vágólapra a(z) <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> appból"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztett a vágólapról"</string>
- <string name="pasted_text" msgid="4298871641549173733">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt szöveget"</string>
- <string name="pasted_image" msgid="4729097394781491022">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt képet"</string>
- <string name="pasted_content" msgid="646276353060777131">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt tartalmat"</string>
<string name="more_item_label" msgid="7419249600215749115">"Egyebek"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menü+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Módosítás: Beállítások > Alkalmazások"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Engedélyezés mindig"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Soha nem engedélyezem"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM eltávolítva"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"A mobilhálózat nem lesz hozzáférhető, amíg újra nem indítja egy érvényes SIM-mel."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Kész"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM hozzáadva"</string>
<string name="sim_added_message" msgid="6602906609509958680">"A mobilhálózathoz eléréséhez indítsa újra az eszközt."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Újraindítás"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Mobilszolgáltatás aktiválása"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"A SIM kártya le van tiltva. A folytatáshoz adja meg a PUK kódot. A részletekért vegye fel a kapcsolatot szolgáltatójával."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Kívánt PIN-kód megadása"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Kívánt PIN-kód megerősítése"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM zárolásának feloldása…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Helytelen PIN-kód."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4–8 számjegyű PIN kódot írjon be."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"A PUK kód 8 karakter hosszú kell, hogy legyen."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eltávolítás"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Az ajánlott szint fölé szeretné emelni a hangerőt?\n\nHa hosszú időn át teszi ki magát nagy hangerőnek, azzal károsíthatja a hallását."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Figyelem!\nTúllépte azt az időt, ameddig egy ember fejlhallgatóval biztonságosan hallgathat hangos hangokat egy hét alatt.\n\nEnnek a határértéknek a túllépése maradandóan károsítani fogja a hallását."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Figyelem!\nÖtszörösen túllépte azt az időt, ameddig egy ember fejlhallgatóval biztonságosan hallgathat hangos hangokat egy hét alatt.\n\nA rendszer csökkentette a hangerőt a hallása védelme érdekében."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Az a hangerő, amelyen jelenleg médiatartalmat hallgat, hosszabb idejű hallgatás esetén halláskárosodást okozhat.\n\nHa továbbra is ezen a hangerőn folytatja a lejátszást hosszabb ideig, károsíthatja a hallását."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Figyelem!\nJelenleg nem biztonságos szinten hallgat hangos médiatartalmat.\n\nHa továbbra is ezen a hangerőn folytatja a lejátszást, maradandóan károsodni fog a hallása."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Szeretné használni a Kisegítő lehetőségek billentyűparancsot?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Ha a gyorsparancs aktív, akkor a két hangerőgomb három másodpercig tartó együttes lenyomásával kisegítő funkciót indíthat el."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Bekapcsol gyorsparancsot a kisegítő lehetőségekhez?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Billentyűparancs kikapcsolása"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Billentyűparancs használata"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Színek invertálása"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Színjavítás"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Egykezes mód"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extrasötét"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> bekapcsolva."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Lehetővé teszi a társalkalmazások számára, hogy társüzeneteket küldjenek más eszközökre."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Előtérben futó szolgáltatások indítása a háttérből"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Lehetővé teszi a társalkalmazások számára, hogy előtérben futó szolgáltatásokat indítsanak a háttérből."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"A mikrofon rendelkezésre áll"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"A mikrofon le van tiltva"</string>
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 89f6027..3a96b70 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Ձեր մուտքագրած PIN-երը չեն համընկնում:"</string>
<string name="invalidPin" msgid="7542498253319440408">"Մուտքագրեք PIN, որը 4-ից 8 թիվ է:"</string>
<string name="invalidPuk" msgid="8831151490931907083">"Մուտքագրեք PUK, որն 8 կամ ավել թիվ ունի:"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Ձեր SIM քարտը PUK կոդով կողպված է։ Մուտքագրեք PUK կոդը՝ այն ապակողպելու համար։"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM քարտն արգելահանելու համար մուտքագրեք PUK2 կոդը։"</string>
<string name="enablePin" msgid="2543771964137091212">"Ձախողվեց: Միացրեք SIM/RUIM կողպումը:"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Մնաց <xliff:g id="NUMBER_1">%d</xliff:g> փորձ, որից հետո SIM քարտն արգելափակվելու է:</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Թույլ է տալիս հավելվածին վերջ տալ այլ հավելվածների հետնաշերտի գործընթացները: Սա կարող է պատճառ դառնալ, որ այլ հավելվածները դադարեն աշխատել:"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Այս հավելվածը կարող է ցուցադրվել այլ հավելվածների վրայից"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Այս հավելվածը կարող է ցուցադրվել այլ հավելվածների կամ էկրանի այլ հատվածների վերևում: Դա կարող է խոչընդոտել հավելվածի նորմալ օգտագործմանը և փոխել այլ հավելվածների տեսքը:"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"թաքցնել այլ հավելվածների վրադրումները"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Այս հավելվածը կարող է պահանջել, որ համակարգը թաքցնի իր վրա ցուցադրվող այլ հավելվածների վրադրումները։"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"աշխատել հետին պլանում"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Այս հավելվածը կարող է աշխատել ֆոնային ռեժիմում և ավելի արագ սպառել մարտկոցի լիցքը։"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"տվյալներ օգտագործել հետին պլանում"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Կրկին փորձեք"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Ապակողպեք՝ բոլոր գործառույթներն ու տվյալներն օգտագործելու համար"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Դեմքով ապակողպման փորձերի առավելագույն քանակը գերազանցված են"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM քարտ չկա"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Պլանշետում SIM քարտ չկա։"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Ձեր Android TV սարքում SIM քարտ չկա։"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Հեռախոսում SIM քարտ չկա։"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Ավելացրեք SIM քարտ։"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM քարտը բացակայում է կամ ընթեռնելի չէ։ Ավելացրեք SIM քարտ։"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Անվավեր SIM քարտ։"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Ձեր SIM քարտն ընդմիշտ ապակտիվացվել է։\n Նոր SIM քարտ ձեռք բերելու համար կապվեք ձեր բջջային օպերատորի հետ։"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Նախորդը"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Հաջորդը"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Դադարեցնել"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Արագ առաջ անցնել"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Միայն շտապ կանչեր"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Ցանցը կողպված է"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM քարտը կողպված է PUK կոդով։"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Տեսեք Օգտատիրոջ ուղեցույցը կամ դիմեք Բաժանորդների սպասարկման կենտրոն:"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM քարտը կողպված է։"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM քարտն ապակողպվում է…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Դուք <xliff:g id="NUMBER_0">%1$d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման սխեման: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%2$d</xliff:g> վայրկյանից:"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Դուք սխալ եք մուտքագրել ձեր գաղտնաբառը <xliff:g id="NUMBER_0">%1$d</xliff:g> անգամ: \n\n Փորձեք կրկին <xliff:g id="NUMBER_1">%2$d</xliff:g> վայրկյանից:"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Դուք <xliff:g id="NUMBER_0">%1$d</xliff:g> անգամ սխալ եք մուտքագրել ձեր PIN-ը: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%2$d</xliff:g> վայրկյանից:"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Լքել այս էջը"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Մնալ այս էջում"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nԻսկապե՞ս ուզում եք հեռանալ այս էջից:"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Հաստատել"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Հուշակ` կրկնակի հպեք` մեծացնելու և փոքրացնելու համար:"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Ինքնալրացում"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Դնել ինքնալրացում"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ինքնալրացում"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Գավառ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Փոստային ինդեքս"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Նահանգ"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Փոստային կոդ"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Մարզ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Կղզի"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Շրջան"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Դեպարտամենտ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Պրեֆեկտուրա"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Ծուխ"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Տարածք"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Էմիրություն"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"կարդալ ձեր վեբ էջանիշերը և պատմությունը"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Թույլ է տալիս հավելվածին կարդալ դիտարկիչի այցելած բոլոր URL-ների պատմությունը և դիտարկիչի բոլոր էջանիշերը: Նշում. այս թույլտվությունը չի կարող գործածվել կողմնակի դիտարկիչների կամ վեբ զննարկման հնարավորություններով այլ հավելվածների կողմից:"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"գրել վեբ էջանիշերը և պատմությունը"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Թույլ է տալիս հավելվածին փոփոխել դիտարկիչի պատմությունը կամ ձեր պլանշետում պահված էջանիշերը: Այն կարող է թույլ տալ հավելվածին ջնջել կամ փոփոխել դիտարկիչի տվյալները: Նշում. այս թույլտվությունը չի կարող գործածվել կողմնակի դիտարկիչների կամ վեբ զննարկման հնարավորություններով այլ հավելվածների կողմից:"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Թույլ է տալիս հավելվածին փոփոխել դիտարկիչի պատմությունը կամ Android TV սարքում պահված էջանիշները: Սա կարող է թույլ տալ հավելվածին ջնջել կամ փոփոխել դիտարկիչի տվյալները: Ուշադրություն. այս թույլտվությունը չի կարող հարկադրվել երրորդ կողմի դիտարկիչների կամ այլ հավելվածների կողմից, որոնք նույնպես կարողանում են վեբ էջեր բացել:"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Թույլ է տալիս հավելվածին փոփոխել դիտարկիչի պատմությունը կամ ձեր հեռախոսում պահված էջանիշերը: Այն կարող է թույլ տալ հավելվածին ջնջել կամ փոփոխել դիտարկիչի տվյալները: Նշում. այս թույլտվությունը չի կարող գործածվել կողմնակի դիտարկիչների կամ վեբ զննարկման հնարավորություններով այլ հավելվածների կողմից:"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"դնել ազդանշան"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Թույլ է տալիս հավելվածին սահմանել զարթուցիչի ծրագրում տեղադրված ազդանշանը: Զարթուցիչի որոշ հավելվածներ չեն կարող կիրառել այս հատկությունը:"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ավելացնել ձայնային փոստ"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Թույլ է տալիս հավելվածին ավելացնել հաղորդագրություններ ձեր ձայնային փոստի արկղում:"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"փոփոխել դիտարկիչի աշխարհագրական տեղանքի թույլտվությունները"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Թույլ է տալիս հավելվածին փոփոխել դիտարկիչի աշխարհագրական դիրքի թույլտվությունները: Վնասարար հավելվածները կարող են օգտագործել սա` թույլատրելու ուղարկել տեղադրության վերաբերյալ տեղեկությունները կամայական վեբ կայքերին:"</string>
- <string name="save_password_message" msgid="2146409467245462965">"Ցանկանու՞մ եք, որ դիտարկիչը հիշի այս գաղտնաբառը:"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ոչ հիմա"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Հիշել"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Երբեք"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Դուք չունեք այս էջը բացելու թույլտվություն:"</string>
- <string name="text_copied" msgid="2531420577879738860">"Տեքստը պատճենված է սեղմատախտակին:"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տվյալներ տեղադրեց <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> հավելվածից"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տվյալներ է տեղադրել ձեր սեղմատախտակից"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած տեքստը"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած պատկերը"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած բովանդակությունը"</string>
<string name="more_item_label" msgid="7419249600215749115">"Ավելին"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Ցանկ+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Դուք կարող եք փոխել սա ավելի ուշ Կարգավորումներում > Ծրագրերում"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Միշտ թույլատրել"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Երբեք չթույլատրել"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM քարտը հեռացված է"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Բջջային ցանցը անհասանելի կլինի, մինչև չվերագործարկեք սարքը վավեր SIM քարտ տեղադրելուց հետո։"</string>
<string name="sim_done_button" msgid="6464250841528410598">"Կատարված"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM քարտն ավելացված է"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Վերագործարկեք ձեր սարքը` բջջային ցանց մուտք ունենալու համար:"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Վերագործարկել"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Ակտիվացրեք բջջային ծառայությունը"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-ը այս պահին անջատված է: Մուտքագրեք PUK կոդը շարունակելու համար: Մանրամասների համար կապվեք օպերատորի հետ:"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Մուտքագրեք ցանկալի PIN ծածկագիրը"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Հաստատեք ցանկալի PIN ծածկագիրը"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM քարտն ապակողպվում է…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Սխալ PIN ծածկագիր:"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Մուտքագրեք PIN, որը 4-ից 8 թիվ է:"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK կոդը պետք է լինի 8 թիվ:"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Հեռացնել"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ձայնը բարձրացնե՞լ խորհուրդ տրվող մակարդակից ավել:\n\nԵրկարատև բարձրաձայն լսելը կարող է վնասել ձեր լսողությունը:"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Ուշադրություն.\nդուք գերազանցել եք բարձր ձայնային ազդանշանների քանակը, որն անվտանգ է համարվում մեկ շաբաթվա ընթացքում ականջակալներով լսելու համար։\n\nԱյս սահմանաչափն անցնելու դեպքում ձեր լսողությանն անդառնալի վնաս կհասցվի։"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Ուշադրություն.\nդուք 5 անգամ գերազանցել եք բարձր ձայնային ազդանշանների քանակը, որն անվտանգ է համարվում մեկ շաբաթվա ընթացքում ականջակալներով լսելու համար։\n\nՁայնն իջեցվել է՝ ձեր լսողությունը պաշտպանելու համար։"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Երկար ժամանակ ձայնի ուժգնության այս մակարդակով մեդիա բովանդակություն լսելը կարող է վնասել ձեր լսողությունը։\n\nԵթե ձայնը չիջեցնեք, ձեր լսողությունը ժամանակի ընթացքում կարող է վատանալ։"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Ուշադրություն․\nդուք չափազանց բարձր ձայնով եք մեդիա բովանդակություն լսում, ինչը կարող է վտանագավոր լինել։\n\nԵթե չիջեցնեք ձայնը, ձեր լսողությանն անդառնալի վնաս կհասցվի։"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Օգտագործե՞լ Մատչելիության դյուրանցումը։"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Հատուկ գործառույթն օգտագործելու համար սեղմեք և 3 վայրկյան սեղմած պահեք ձայնի ուժգնության երկու կոճակները, երբ գործառույթը միացված է:"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Միացնե՞լ հատուկ գործառույթների դյուրանցումը"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Անջատել դյուրանցումը"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Օգտագործել դյուրանցումը"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Գունաշրջում"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Գունաշտկում"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Մեկ ձեռքի ռեժիմ"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Հավելյալ խամրեցում"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը միացավ։"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Թույլատրում է ուղեկցող հավելվածին հաղորդագրություններ առաքել այլ սարքեր։"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Ակտիվ ծառայությունների գործարկում ֆոնային ռեժիմից"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Թույլատրում է ուղեկցող հավելվածին ակտիվ ծառայություններ գործարկել ֆոնային ռեժիմից։"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Խոսափողը հասանելի է"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Խոսափողն արգելափակված է"</string>
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index b3bece9..20e7f9a 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN yang Anda ketik tidak cocok."</string>
<string name="invalidPin" msgid="7542498253319440408">"Ketikkan PIN berupa 4 sampai 8 angka."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Ketik PUK yang terdiri dari 8 angka atau lebih."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM Anda dikunci PUK. Ketik kode PUK untuk membuka kuncinya."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Ketik PUK2 untuk membatalkan blokir SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Gagal, aktifkan Kunci SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Sisa <xliff:g id="NUMBER_1">%d</xliff:g> percobaan sebelum SIM terkunci.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Memungkinkan aplikasi mengakhiri proses latar belakang aplikasi lain. Izin ini dapat menyebabkan aplikasi lain berhenti berjalan."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Aplikasi ini dapat muncul di atas aplikasi lain"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Aplikasi ini dapat muncul di atas aplikasi lain atau bagian lain pada layar. Ini dapat mengganggu penggunaan aplikasi biasa dan mengubah kemunculan aplikasi lainnya."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"menyembunyikan overlay aplikasi lain"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Aplikasi ini dapat meminta sistem untuk menyembunyikan overlay yang berasal dari aplikasi lain agar tidak ditampilkan di atasnya."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"jalankan di latar belakang"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Aplikasi ini dapat berjalan di latar belakang. Dapat menghabiskan baterai lebih cepat."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"gunakan data di latar belakang"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Coba lagi"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Membuka kunci untuk semua fitur dan data"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Percobaan Buka dengan Wajah melebihi batas maksimum"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Tidak ada SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Tidak ada SIM di tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Tidak ada SIM di perangkat Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Tidak ada SIM di ponsel."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Tambahkan SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM tidak ada atau tidak dapat dibaca. Tambahkan SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM tidak dapat digunakan."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM Anda telah dinonaktifkan secara permanen.\n Hubungi penyedia layanan nirkabel Anda untuk mendapatkan SIM lain."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Lagu sebelumnya"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Lagu berikutnya"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Jeda"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Maju cepat"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Panggilan darurat saja"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Jaringan terkunci"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM dikunci PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Lihatlah Panduan Pengguna atau hubungi Layanan Pelanggan."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM dikunci."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Membuka kunci SIM …"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Anda telah <xliff:g id="NUMBER_0">%1$d</xliff:g> kali salah menggambar pola pembuka kunci. \n\nCoba lagi dalam <xliff:g id="NUMBER_1">%2$d</xliff:g> detik."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Anda telah <xliff:g id="NUMBER_0">%1$d</xliff:g> kali salah mengetik sandi. \n\nCoba lagi dalam <xliff:g id="NUMBER_1">%2$d</xliff:g> detik."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Anda telah <xliff:g id="NUMBER_0">%1$d</xliff:g> kali salah mengetik PIN. \n\nCoba lagi dalam <xliff:g id="NUMBER_1">%2$d</xliff:g> detik."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Keluar dari Halaman ini"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Tetap di Halaman ini"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nYakin ingin beranjak dari halaman ini?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Konfirmasi"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Kiat: Ketuk dua kali untuk memperbesar dan memperkecil."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Isi Otomatis"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Siapkan Isi otomatis"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Isi otomatis dengan <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provinsi"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Kode pos"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Negara Bagian"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Kode pos"</string>
- <string name="autofill_county" msgid="7781382735643492173">"County"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Pulau"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrik"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departemen"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektur"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Kampung"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Area"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"baca histori dan bookmark web Anda"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Memungkinkan aplikasi membaca histori semua URL yang telah dikunjungi Browser, dan semua bookmark Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"tulis histori dan bookmark web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Memungkinkan aplikasi mengubah histori atau bookmark Browser yang tersimpan dalam tablet Anda. Izin ini memungkinkan aplikasi menghapus atau mengubah data Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Mengizinkan aplikasi mengubah histori atau bookmark Browser yang disimpan di perangkat Android TV. Izin ini memungkinkan aplikasi menghapus atau mengubah data Browser. Catatan: izin ini mungkin tidak diterapkan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Memungkinkan aplikasi mengubah histori atau bookmark Browser yang tersimpan dalam ponsel Anda. Izin ini memungkinkan aplikasi menghapus atau mengubah data Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"setel alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Mengizinkan apl menyetel alarm di apl jam alarm yang terpasang. Beberapa apl jam alarm mungkin tidak menerapkan fitur ini."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"tambahkan kotak pesan"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Mengizinkan apl menambahkan pesan ke kotak masuk untuk pesan suara Anda."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"memodifikasi izin geolokasi Browser"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Mengizinkan apl memodifikasi izin geolokasi Browser. Apl berbahaya dapat menggunakan izin ini untuk memungkinkan pengiriman informasi lokasi ke sembarang situs web."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Apakah Anda ingin browser menyimpan sandi ini?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Tidak sekarang"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Ingat"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Jangan"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Anda tidak memiliki izin untuk membuka halaman ini."</string>
- <string name="text_copied" msgid="2531420577879738860">"Teks disalin ke papan klip."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditempelkan dari <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan konten dari papan klip Anda"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan teks yang Anda salin"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan gambar yang Anda salin"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan konten yang Anda salin"</string>
<string name="more_item_label" msgid="7419249600215749115">"Lainnya"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Anda dapat mengubah ini nanti di Setelan > Aplikasi"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Selalu Izinkan"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Jangan Pernah Izinkan"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM dihapus"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Jaringan seluler tidak akan tersedia sampai Anda memulai ulang dengan SIM yang valid."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Selesai"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM ditambahkan"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Mulai ulang perangkat Anda untuk mengakses jaringan selular."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Mulai Ulang"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktifkan layanan seluler"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM telah dinonaktifkan. Masukkan kode PUK untuk melanjutkan. Hubungi operator untuk keterangan selengkapnya."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Masukkan kode PIN yang diinginkan"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Konfirmasi kode PIN yang diinginkan"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Membuka kunci SIM …"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Kode PIN salah."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Ketik PIN yang terdiri dari 4 sampai 8 angka."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Kode PUK seharusnya terdiri dari 8 angka."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Hapus"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Mengeraskan volume di atas tingkat yang disarankan?\n\nMendengarkan dengan volume keras dalam waktu yang lama dapat merusak pendengaran Anda."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Peringatan,\nAnda telah melampaui jumlah sinyal suara keras yang dapat didengarkan dengan aman dalam seminggu melalui headphone.\n\nMelebihi batas ini akan merusak pendengaran Anda secara permanen."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Peringatan,\nAnda telah melampaui 5 kali jumlah sinyal suara keras yang dapat didengarkan dengan aman dalam seminggu melalui headphone.\n\nVolume telah diturunkan untuk melindungi pendengaran Anda."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Level Anda mendengarkan media dapat menyebabkan kerusakan pendengaran jika dilakukan dalam waktu yang lama.\n\nTerus memutar media pada level ini untuk waktu yang lama dapat merusak pendengaran Anda."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Peringatan,\nAnda sedang mendengarkan konten dengan suara keras yang diputar pada level yang tidak aman.\n\nTerus mendengarkan suara sekeras ini akan merusak pendengaran Anda secara permanen."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gunakan Pintasan Aksesibilitas?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Saat pintasan aktif, menekan kedua tombol volume selama 3 detik akan memulai fitur aksesibilitas."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Aktifkan pintasan untuk fitur aksesibilitas?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Nonaktifkan Pintasan"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversi Warna"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Koreksi warna"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode satu tangan"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra redup"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> diaktifkan."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Mengizinkan aplikasi pendamping mengirimkan pesan pendamping ke perangkat lain."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Memulai layanan latar depan dari latar belakang"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Mengizinkan aplikasi pendamping memulai layanan latar depan dari latar belakang."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon tersedia"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon diblokir"</string>
</resources>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 4e44ba5..e230406 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN-númerin sem þú slóst inn stemma ekki."</string>
<string name="invalidPin" msgid="7542498253319440408">"Sláðu in PIN-númer sem er 4 til 8 tölustafir."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Sláðu inn PUK-númer sem er 8 tölustafir eða lengra."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM-kortið er læst með PUK-númeri. Sláðu inn PUK-númerið til að opna kortið."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Sláðu inn PUK2-númer til að opna fyrir SIM-kort."</string>
<string name="enablePin" msgid="2543771964137091212">"Tókst ekki. Kveiktu á SIM-/RUIM-lás."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Þú átt <xliff:g id="NUMBER_1">%d</xliff:g> tilraun eftir áður en SIM-kortinu verður læst.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Leyfir forriti að loka bakgrunnsferlum annarra forrita. Þetta getur valdið því að önnur forrit lokist."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Þetta forrit getur birst yfir öðrum forritum"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Þetta forrit getur birst yfir öðrum forritum eða öðrum hlutum skjásins. Þetta getur truflað venjulega notkun forrita og breytt því hvernig önnur forrit birtast."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"fela yfirlögn annarra forrita"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Þetta forrit getur óskað eftir að kerfið komi í veg fyrir að yfirlögn efnis frá forritum birtist yfir því."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"keyra í bakgrunni"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Þetta forrit getur verið í gangi í bakgrunni. Þetta gæti aukið á rafhlöðunotkunina."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"nota gögn í bakgrunni"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Reyndu aftur"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Taktu úr lás til að sjá alla eiginleika og gögn"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Hámarksfjölda tilrauna til andlitsopnunar náð"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Ekkert SIM-kort"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Það er ekkert SIM-kort í spjaldtölvunni."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Það er ekkert SIM-kort í Android TV-tækinu."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Það er ekkert SIM-kort í símanum."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Bæta við SIM-korti."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-kort vantar eða er ekki læsilegt. Bæta við SIM-korti."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Ónothæft SIM-kort."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM-kortið þitt var gert varanlega óvirkt.\n Hafðu samband við símafyrirtækið þitt til að fá nýtt SIM-kort."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Fyrra lag"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Næsta lag"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Hlé"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Spóla áfram"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Aðeins neyðarsímtöl"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Net læst"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-kort er læst með PUK-númeri."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Skoðaðu notendahandbókina eða hafðu samband við þjónustudeild."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-kort er læst."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Opnar SIM-kort…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Þú hefur teiknað rangt opnunarmynstur <xliff:g id="NUMBER_0">%1$d</xliff:g> sinnum. \n\nReyndu aftur eftir <xliff:g id="NUMBER_1">%2$d</xliff:g> sekúndur."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Þú hefur slegið inn rangt aðgangsorð <xliff:g id="NUMBER_0">%1$d</xliff:g> sinnum. \n\nReyndu aftur eftir <xliff:g id="NUMBER_1">%2$d</xliff:g> sekúndur."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Þú hefur slegið inn rangt PIN-númer <xliff:g id="NUMBER_0">%1$d</xliff:g> sinnum. \n\nReyndu aftur eftir <xliff:g id="NUMBER_1">%2$d</xliff:g> sekúndur."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Fara af síðunni"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Vera áfram á síðunni"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nErtu viss um að þú viljir fara af þessari síðu?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Staðfesta"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Ábending: Ýttu tvisvar til að auka og minnka aðdrátt."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Fylla út"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Stilla útfyllingu"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Sjálfvirk útfylling með <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Sveitarfélag"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Póstnúmer"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Ríki"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Póstnúmer"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Sýsla"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Eyja"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Umdæmi"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Deild"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Hérað"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Sókn"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Svæði"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Furstadæmi"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"lesa vefbókamerki og -feril"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Leyfir forriti að lesa feril allra vefslóða sem opnaðar hafa verið í vafranum og öll bókamerki vafrans. Athugaðu: Ekki er víst að þessi heimild sé virt í vöfrum frá þriðja aðila eða öðrum forritum með vafraeiginleika."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"skrifa vefbókamerki og -feril"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Leyfir forriti að breyta vafraferlinum eða bókamerkjum sem vistuð eru í spjaldtölvunni. Þetta getur gert forritinu kleift að eyða eða breyta vafragögnum. Athugaðu: Ekki er víst að þessi heimild sé virt í vöfrum frá þriðja aðila eða öðrum forritum með vafraeiginleika."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Leyfir forriti að breyta vafraferlinum eða bókamerkjum sem vistuð eru í Android TV tækinu. Þetta getur gert forritinu kleift að eyða eða breyta vafragögnum. Athugaðu: Ekki er víst að þessi heimild sé virt í vöfrum frá þriðja aðila eða öðrum forritum með vafraeiginleika."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Leyfir forriti að breyta vafraferlinum eða bókamerkjum sem vistuð eru í símanum. Þetta getur gert forritinu kleift að eyða eða breyta vafragögnum. Athugaðu: Ekki er víst að þessi heimild sé virt í vöfrum frá þriðja aðila eða öðrum forritum með vafraeiginleika."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"stilla vekjara"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Leyfir forriti að stilla vekjara á uppsettri vekjaraklukku. Verið getur að sum vekjaraklukkuforrit séu ekki búin þessum eiginleika."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"bæta við talhólfi"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Leyfir forriti að bæta skilaboðum við talhólfið þitt."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"breyta staðsetningarheimildum vafrans"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Leyfir forriti að breyta heimildum vafrans fyrir landfræðilega staðsetningu. Spilliforrit geta notað þetta til að leyfa sendingu staðsetningarupplýsinga á vafasöm vefsvæði."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Viltu að vafrinn muni þetta aðgangsorð?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ekki núna"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Muna"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Aldrei"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Þú hefur ekki heimild til að opna þessa síðu."</string>
- <string name="text_copied" msgid="2531420577879738860">"Texti afritaður á klippiborð."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límt úr <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi af klippiborðinu"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi texta sem þú afritaðir"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi mynd sem þú afritaðir"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi efni sem þú afritaðir"</string>
<string name="more_item_label" msgid="7419249600215749115">"Meira"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Valmynd+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Þú getur breytt þessu seinna undir Stillingar > Forrit"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Leyfa alltaf"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Leyfa aldrei"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-kort var fjarlægt"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Farsímakerfið verður ekki í boði fyrr en þú endurræsir með gildu SIM-korti."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Lokið"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-korti var bætt við"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Endurræstu tækið að fá aðgang að farsímakerfinu."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Endurræsa"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Virkja farsímaþjónustu"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-kortið hefur verið gert óvirkt. Sláðu inn PUK-númerið til að halda áfram. Hafðu samband við símafyrirtækið til að fá frekari upplýsingar."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Sláðu inn nýtt PIN-númer"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Staðfestu nýja PIN-númerið"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Opnar SIM-kort…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Rangt PIN-númer."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Sláðu in PIN-númer sem er 4 til 8 tölustafir."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-númerið á að vera 8 tölustafir."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Fjarlægja"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Hækka hljóðstyrk umfram ráðlagðan styrk?\n\nEf hlustað er á háum hljóðstyrk í langan tíma kann það að skaða heyrnina."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Viðvörun,\nÞú hefur náð hámarksfjölda háværra hljóðmerkja sem öruggt er að hlusta á innan viku í heyrnartólum.\n\nEf farið er yfir þessi mörk veldur það varanlegum heyrnarskaða."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Viðvörun,\nÞú hefur náð fimmföldum hámarksfjölda háværra hljóðmerkja sem öruggt er að hlusta á innan viku í heyrnartólum.\n\nBúið er að lækka hljóðstyrkinn til að vernda heyrnina hjá þér."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Hljóðstyrkurinn sem þú notar til að hlusta á efni getur valdið heyrnarskaða við langvarandi notkun.\n\nLangvarandi spilun á þessum hljóðstyrk getur valdið heyrnarskaða."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Viðvörun,\nÞú ert að hlusta á hávært efni með of háum hljóðstyrk.\n\nEf þú heldur áfram að hlusta á þessum hljóðstyrk veldur það varanlegum heyrnarskaða."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Viltu nota aðgengisflýtileið?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Þegar flýtileiðin er virk er kveikt á aðgengiseiginleikanum með því að halda báðum hljóðstyrkshnöppunum inni í þrjár sekúndur."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Kveikja á flýtileið fyrir aðgangseiginleika?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Slökkva á flýtileið"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Nota flýtileið"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Umsnúningur lita"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Litaleiðrétting"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Einhent stilling"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mjög dökkt"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Hljóðstyrkstökkum haldið inni. Kveikt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Leyfir fylgiforriti að senda fylgiskilaboð til annarra tækja."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Ræsa forgrunnsþjónustur úr bakgrunni"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Leyfir fylgiforriti að ræsa forgrunnsþjónustur úr bakgrunni."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Hljóðnemi er í boði"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Lokað er fyrir hljóðnemann"</string>
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index ee704ab..3537519 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"I PIN inseriti non corrispondono."</string>
<string name="invalidPin" msgid="7542498253319440408">"Il PIN deve essere di 4-8 numeri."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Digita un PUK formato da almeno 8 numeri."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"La SIM è bloccata tramite PUK. Digita il codice PUK per sbloccarla."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Digita il codice PUK2 per sbloccare la SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Operazione non riuscita; attiva blocco SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="many">You have <xliff:g id="NUMBER_1">%d</xliff:g> remaining attempts before SIM is locked.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Consente all\'applicazione di terminare i processi in background di altre applicazioni. Ciò potrebbe causare l\'interruzione di altre applicazioni."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Questa app può essere visualizzata sopra ad altre app"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Questa app può essere visualizzata sopra ad altre app o altre parti dello schermo. Ciò potrebbe interferire con il normale utilizzo dell\'app e modificare la modalità di visualizzazione delle altre app."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"Nascondere overlay di altre app"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Questa app può richiedere al sistema di non visualizzare overlay derivanti da altre app sopra l\'app richiedente."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"esecuzione in background"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Questa app può essere eseguita in background, velocizzando il consumo della batteria."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"utilizzo dei dati in background"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Riprova"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Sblocca per accedere a funzioni e dati"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Numero massimo di tentativi di sblocco con il volto superato"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Nessuna SIM presente"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Nessuna SIM presente nel tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Nessuna SIM presente nel dispositivo Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Nessuna SIM presente nel telefono."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Aggiungi una SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM mancante o non leggibile. Aggiungi una SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM inutilizzabile."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"La SIM è stata disattivata definitivamente.\n Contatta il tuo fornitore di servizi wireless per richiedere un\'altra SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Traccia precedente"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Traccia successiva"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Metti in pausa"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avanti veloce"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Solo chiamate di emergenza"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Rete bloccata"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"La SIM è bloccata tramite PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consulta la Guida dell\'utente o contatta il servizio clienti."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"La SIM è bloccata."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Sblocco della SIM in corso…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"<xliff:g id="NUMBER_0">%1$d</xliff:g> tentativi errati di inserimento della sequenza di sblocco. \n\nRiprova tra <xliff:g id="NUMBER_1">%2$d</xliff:g> secondi."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Hai digitato la tua password <xliff:g id="NUMBER_0">%1$d</xliff:g> volte in modo errato. \n\nRiprova tra <xliff:g id="NUMBER_1">%2$d</xliff:g> secondi."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Hai digitato il tuo PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> volte in modo errato. \n\nRiprova tra <xliff:g id="NUMBER_1">%2$d</xliff:g> secondi."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Abbandona questa pagina"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Rimani su questa pagina"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVuoi abbandonare la pagina?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Conferma"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Suggerimento. Tocca due volte per aumentare e diminuire lo zoom."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Compilazione autom."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Compilaz. autom."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Compilazione automatica <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincia"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Codice postale"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Stato"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Codice postale"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Contea"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Isola"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distretto"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Reparto"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefettura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parrocchia"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Area"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirato"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"lettura segnalibri e cronologia web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Consente all\'applicazione di leggere la cronologia di tutti gli URL che il Browser ha visitato e di tutti i segnalibri del Browser. Nota. È possibile che questa autorizzazione non sia applicabile da browser di terze parti o altre applicazioni con funzionalità di navigazione web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"scrittura segnalibri e cronologia web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Consente all\'applicazione di modificare la cronologia o i segnalibri del Browser memorizzati sul tablet. Ciò potrebbe consentire all\'applicazione di cancellare o modificare i dati del Browser. Nota. È possibile che questa autorizzazione non sia applicabile da browser di terze parti o altre applicazioni con funzionalità di navigazione web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Consente all\'app di modificare la cronologia del Browser o i preferiti memorizzati sul dispositivo Android TV. Questa autorizzazione potrebbe consentire all\'app di cancellare o modificare i dati del Browser. Nota: questa autorizzazione potrebbe non essere applicata da browser di terze parti o altre applicazioni con funzionalità di navigazione sul Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Consente all\'applicazione di modificare la cronologia o i segnalibri del Browser memorizzati sul telefono. Ciò potrebbe consentire all\'applicazione di cancellare o modificare i dati del Browser. Nota. È possibile che questa autorizzazione non sia applicabile da browser di terze parti o altre applicazioni con funzionalità di navigazione web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"impostazione sveglia"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Consente all\'applicazione di impostare una sveglia in un\'applicazione sveglia installata. È possibile che alcune applicazioni sveglia non possano implementare questa funzione."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"aggiunta di un messaggio vocale"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Consente all\'applicazione di aggiungere messaggi alla casella della segreteria."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modifica delle autorizzazioni di geolocalizzazione del browser"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Consente all\'applicazione di modificare le autorizzazioni di geolocalizzazione del Browser. Le applicazioni dannose potrebbero farne uso per consentire l\'invio di informazioni sulla posizione a siti web arbitrari."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Memorizzare la password nel browser?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Non ora"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Memorizza"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Mai"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Non sei autorizzato ad aprire questa pagina."</string>
- <string name="text_copied" msgid="2531420577879738860">"Testo copiato negli appunti."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Dati dell\'app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> incollati dall\'app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato dati dagli appunti"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato il testo che hai copiato"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato un\'immagine che hai copiato"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato i contenuti che hai copiato"</string>
<string name="more_item_label" msgid="7419249600215749115">"Altro"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"META +"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Modifica: Impostazioni > Applicazioni"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Consenti sempre"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Non consentire mai"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM rimossa"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"La rete mobile non sarà disponibile finché non eseguirai il riavvio con una SIM valida inserita."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Fine"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM aggiunta"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Riavvia il dispositivo per accedere alla rete mobile."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Riavvia"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Attiva il servizio dati mobile"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"La scheda SIM è disattivata. Inserisci il codice PUK per continuare. Contatta l\'operatore per avere informazioni dettagliate."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Inserisci il codice PIN desiderato"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Conferma il codice PIN desiderato"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Sblocco della SIM in corso…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Codice PIN errato."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Il PIN deve essere di 4-8 numeri."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Il codice PUK deve essere di 8 cifre."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Rimuovi"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vuoi aumentare il volume oltre il livello consigliato?\n\nL\'ascolto ad alto volume per lunghi periodi di tempo potrebbe danneggiare l\'udito."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Avviso,\nHai superato il limite di segnali audio a forte volume che è possibile ascoltare in sicurezza in una settimana tramite le cuffie.\n\nIl superamento di questo limite causerà danni permanenti al tuo udito."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Avviso,\nHai superato di 5 volte il limite di segnali audio a forte volume che è possibile ascoltare in sicurezza in una settimana tramite le cuffie.\n\nIl volume è stato abbassato per proteggere il tuo udito."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Il livello a cui stai ascoltando contenuti multimediali può causare danni all\'udito se viene usato per periodi di tempo prolungati.\n\nSe continui l\'ascolto a questo livello per lunghi periodi di tempo, il tuo udito potrebbe subire danni."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Avviso,\nStai ascoltando contenuti ad alto volume a un livello non sicuro.\n\nSe continui l\'ascolto a questo volume, il tuo udito subirà danni permanenti."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usare la scorciatoia Accessibilità?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando la scorciatoia è attiva, puoi premere entrambi i pulsanti del volume per tre secondi per avviare una funzione di accessibilità."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Vuoi attivare la scorciatoia per le funzioni di accessibilità?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Disattiva scorciatoia"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usa scorciatoia"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversione dei colori"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Correzione del colore"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modalità a una mano"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Attenuazione extra"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> attivato."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Consente a un\'app complementare di consegnare messaggi complementari ad altri dispositivi."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Avviare i servizi in primo piano dal background"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Consente a un\'app complementare di avviare servizi in primo piano dal background."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Microfono disponibile"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Microfono bloccato"</string>
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 3480e98..2dd23ac 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"קודי הגישה שהקלדת לא תואמים."</string>
<string name="invalidPin" msgid="7542498253319440408">"יש להקליד קוד אימות שאורכו 4 עד 8 ספרות."</string>
<string name="invalidPuk" msgid="8831151490931907083">"יש להקליד PUK באורך 8 ספרות לפחות."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"כרטיס ה-SIM נעול באמצעות PUK. יש להקליד את קוד ה-PUK כדי לבטל את הנעילה."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"יש להקליד את קוד ה-PUK2 כדי לבטל את החסימה של כרטיס ה-SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"לא הצלחת. יש להפעיל נעילת SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">נותרו לך <xliff:g id="NUMBER_1">%d</xliff:g> ניסיונות לפני שכרטיס ה-SIM יינעל.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"מאפשרת לאפליקציה להפסיק תהליכים ברקע שמבצעות אפליקציות אחרות. הדבר עשוי לגרום להפסקת הפעולה של אפליקציות אחרות."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"האפליקציה הזו יכולה להופיע מעל אפליקציות אחרות."</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"האפליקציה הזו יכולה להופיע מעל אפליקציות אחרות או בחלקים אחרים של המסך. ייתכן שהדבר יפריע לך להשתמש באפליקציות וישנה את האופן שבו הן מופיעות."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"הסתרת שכבות-על של אפליקציות אחרות"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"האפליקציה הזו יכולה לבקש שהמערכת תסתיר שכבות-על שמקורן באפליקציות, כדי שלא יוצגו בה."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"פעולה ברקע"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"האפליקציה הזו יכולה לפעול ברקע. ייתכן שהסוללה תתרוקן מהר יותר במצב הזה."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"שימוש בנתונים ברקע"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"כדאי לנסות שוב"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"צריך לבטל את הנעילה כדי שכל התכונות והנתונים יהיו זמינים"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"חרגת ממספר הניסיונות המרבי לפתיחה ע\"י זיהוי הפנים"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"אין כרטיס SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"אין כרטיס SIM בטאבלט."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"אין כרטיס SIM במכשיר ה-Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"אין כרטיס SIM בטלפון."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"הוספת כרטיס SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"כרטיס ה-SIM חסר או שלא ניתן לקרוא אותו. הוספת כרטיס SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"לא ניתן להשתמש בכרטיס ה-SIM הזה."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"כרטיס ה-SIM שלך הושבת באופן סופי.\n עליך לפנות לספק השירות האלחוטי שלך לקבלת כרטיס SIM אחר."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"הטראק הקודם"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"הטראק הבא"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"השהיה"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"הרצה קדימה"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"שיחות חירום בלבד"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"רשת נעולה"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"כרטיס ה-SIM נעול באמצעות PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"יש לעיין במדריך למשתמש או לפנות לשירות הלקוחות."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"כרטיס ה-SIM נעול."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"מתבצע ביטול נעילה של כרטיס ה-SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"שרטטת את קו ביטול הנעילה באופן שגוי <xliff:g id="NUMBER_0">%1$d</xliff:g> פעמים. \n\nיש לנסות שוב בעוד <xliff:g id="NUMBER_1">%2$d</xliff:g> שניות."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"הקלדת סיסמה שגויה <xliff:g id="NUMBER_0">%1$d</xliff:g> פעמים.\n\nיש לנסות שוב בעוד <xliff:g id="NUMBER_1">%2$d</xliff:g> שניות."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"הקלדת קוד גישה שגוי <xliff:g id="NUMBER_0">%1$d</xliff:g> פעמים.\n\nאפשר לנסות שוב בעוד <xliff:g id="NUMBER_1">%2$d</xliff:g> שניות."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"יציאה מהדף"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"להישאר בדף הזה"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nבטוח שברצונך לנווט אל מחוץ לדף הזה?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"אישור"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"טיפ: אפשר להקיש פעמיים כדי להגדיל או להקטין את התצוגה."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"מילוי אוטומטי"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"הגדרת מילוי אוטומטי"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"מילוי אוטומטי באמצעות <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"מחוז"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"מיקוד"</string>
- <string name="autofill_state" msgid="3341725337190434069">"מדינה"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"מיקוד"</string>
- <string name="autofill_county" msgid="7781382735643492173">"מחוז"</string>
- <string name="autofill_island" msgid="5367139008536593734">"אי"</string>
- <string name="autofill_district" msgid="6428712062213557327">"מחוז"</string>
- <string name="autofill_department" msgid="9047276226873531529">"מחלקה"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"אזור"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"קהילה"</string>
- <string name="autofill_area" msgid="8289022370678448983">"אזור"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"אמירות"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"קריאת סימניות והיסטוריית האינטרנט שלך"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"מאפשרת לאפליקציה לקרוא את ההיסטוריה של כל כתובות ה-URL שאליהן נכנסת באמצעות הדפדפן, ואת כל הסימניות בדפדפן. הערה: אפליקציות אחרות או דפדפני צד שלישי עם יכולות גלישה באינטרנט לא יכולים לאכוף את האישור הזה."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"כתיבת סימניות והיסטורייה של אתרים"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"מאפשרת לאפליקציה לשנות את ההיסטוריה או את הסימניות של הדפדפן אשר מאוחסנות בטאבלט. ההרשאה עשויה לאפשר לאפליקציה למחוק או לשנות נתוני דפדפן. הערה: ההרשאה הזו לא ניתנת לאכיפה על ידי דפדפני צד שלישי או אפליקציות אחרות בעלות יכולות גלישה באינטרנט."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"מאפשרת לאפליקציה לשנות את הסימניות או את היסטוריית הדפדפן השמורות במכשיר ה-Android TV. הרשאה זו עשויה לאפשר לאפליקציה למחוק או לשנות נתוני דפדפן. הערה: ייתכן שההרשאה לא תיושם על ידי דפדפנים של צד שלישי או על ידי אפליקציות אחרות עם יכולות גלישה באינטרנט."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"מאפשרת לאפליקציה לשנות את ההיסטוריה או את הסימניות של הדפדפן אשר מאוחסנות בטלפון. ההרשאה הזו עשויה לאפשר לאפליקציה למחוק או לשנות נתוני דפדפן. הערה: אפליקציות אחרות או דפדפני צד שלישי עם יכולות גלישה באינטרנט לא יכולים לאכוף את האישור הזה."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"הגדרת התראה"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"מאפשרת לאפליקציה להגדיר התראה באפליקציה מותקנת של שעון מעורר. אפליקציות מסוימות של שעון מעורר אינן מיישמות את התכונה הזו."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"הוספה של דואר קולי"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"מאפשרת לאפליקציה להוסיף הודעות לתיבת הדואר הקולי."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"שינוי הרשאות המיקום הגיאוגרפי של הדפדפן"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"מאפשרת לאפליקציה לשנות את הרשאות המיקום הגיאוגרפי של הדפדפן. אפליקציות זדוניות עלולות להשתמש בכך כדי לאפשר שליחה של פרטי מיקום לאתרים זדוניים אחרים."</string>
- <string name="save_password_message" msgid="2146409467245462965">"רוצה שהדפדפן יזכור את הסיסמה?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"לא עכשיו"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"כן, לשמור"</string>
- <string name="save_password_never" msgid="6776808375903410659">"אף פעם"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"אין לך הרשאה לפתוח את הדף הזה."</string>
- <string name="text_copied" msgid="2531420577879738860">"הטקסט הועתק ללוח."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"האפליקציה <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> הודבקה מ-<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"אפליקציית <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ביצעה הדבקה מהלוח"</string>
- <string name="pasted_text" msgid="4298871641549173733">"טקסט שהעתקת הודבק על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
- <string name="pasted_image" msgid="4729097394781491022">"תמונה שהעתקת הודבקה על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
- <string name="pasted_content" msgid="646276353060777131">"התוכן שהעתקת הודבק על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
<string name="more_item_label" msgid="7419249600215749115">"עוד"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"תפריט+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"ניתן לשנות זאת מאוחר יותר ב\'הגדרות\' > \'אפליקציות\'"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"אפשר תמיד"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"לא לאפשר אף פעם"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"כרטיס ה-SIM הוסר"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"הרשת הסלולרית לא תהיה זמינה עד שתבוצע הפעלה מחדש עם כרטיס SIM חוקי."</string>
<string name="sim_done_button" msgid="6464250841528410598">"סיום"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"נוסף כרטיס SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"צריך להפעיל מחדש את המכשיר כדי לקבל גישה אל הרשת הסלולרית."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"הפעלה מחדש"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"הפעלה של השירות הסלולרי"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"כרטיס ה-SIM מושבת כרגע. צריך להזין קוד PUK כדי להמשיך. יש לפנות אל הספק לקבלת פרטים."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"צריך להזין את קוד האימות הרצוי"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"יש לאשר את קוד האימות הרצוי"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"מתבצע ביטול נעילה של כרטיס ה-SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"קוד אימות שגוי."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"יש להקליד קוד אימות שאורכו 4 עד 8 ספרות."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"קוד PUK צריך להיות בן 8 ספרות."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"הסרה"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"להגביר את עוצמת הקול מעל לרמה המומלצת?\n\nהאזנה בעוצמת קול גבוהה למשכי זמן ממושכים עלולה לפגוע בשמיעה."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"אזהרה,\nחרגת מגובה עוצמת הקול שאפשר להאזין לה בבטחה באמצעות אוזניות בפרק זמן של שבוע.\n\nחריגה מהמגבלה הזו תגרום נזק לצמיתות לשמיעה שלך."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"אזהרה,\nחרגת פי חמש מגובה עוצמת הקול שאפשר להאזין לה בבטחה באמצעות אוזניות בפרק זמן של שבוע.\n\nעוצמת הקול הוחלשה כדי להגן על השמיעה שלך."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"גובה עוצמת הקול שבה האזנת למדיה עלול לגרום לנזק לשמיעה כאשר הוא נמשך לפרקי זמן ארוכים.\n\nהמשך השמעה בעוצמת הקול הזו לפרקי זמן ארוכים עלול להזיק לשמיעה שלך."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"אזהרה,\nמתבצעת כעת האזנה לתוכן רועש המושמע בעוצמת קול לא בטוחה.\n\nהמשך האזנה בעוצמת הקול הזו יגרום נזק לצמיתות לשמיעה שלך."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"להשתמש בקיצור הדרך לתכונת הנגישות?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"כשקיצור הדרך מופעל, לחיצה על שני לחצני עוצמת הקול למשך שלוש שניות מפעילה את תכונת הנגישות."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"האם להפעיל את מקש הקיצור לתכונות הנגישות?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"השבתת קיצור הדרך"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"שימוש בקיצור הדרך"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"היפוך צבעים"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"תיקון צבע"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"מצב שימוש ביד אחת"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"מעומעם במיוחד"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הופעל."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"ההרשאה הזו מאפשרת לאפליקציה נלווית להעביר הודעות נלוות למכשירים אחרים."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"הפעלה מהרקע של שירותים שפועלים בחזית"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"ההרשאה הזו מאפשרת לאפליקציה נלווית להפעיל מהרקע שירותים שפועלים בחזית."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"המיקרופון זמין"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"המיקרופון חסום"</string>
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index d626dae..8f618c5 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"入力した PIN が一致しません。"</string>
<string name="invalidPin" msgid="7542498253319440408">"4~8桁の数字のPINを入力してください。"</string>
<string name="invalidPuk" msgid="8831151490931907083">"PUKは8桁以上で入力してください。"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM が PUK でロックされています。ロックを解除するには PUK コードを入力してください。"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM のブロックを解除するには PUK2 を入力してください。"</string>
<string name="enablePin" msgid="2543771964137091212">"SIM/RUIMロックを有効にしてください。"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">入力できるのはあと<xliff:g id="NUMBER_1">%d</xliff:g>回です。この回数を超えるとSIMがロックされます。</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"他のアプリのバックグラウンドプロセスを終了することをアプリに許可します。これを許可すると、他のアプリの実行が停止する原因になることがあります。"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"他のアプリの上に重ねて表示"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"このアプリは他のアプリの上に重ねて表示したり、画面の他の場所に表示したりできます。これにより、通常のアプリの使用が妨げられたり、他のアプリの表示が変わる場合があります。"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"他のアプリの重なりを非表示にする"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"このアプリは、上に重なる他のアプリの表示をシステムで非表示にすることをリクエストできます。"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"バックグラウンドでの実行"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"このアプリにバックグラウンドでの実行を許可します。許可すると電池消費量が増える場合があります。"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"バックグラウンドでのデータ使用"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"もう一度お試しください"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"すべての機能とデータを利用するにはロック解除"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"顔認証の最大試行回数を超えました"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM がありません"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"タブレットに SIM がありません。"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV デバイスに SIM がありません。"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"スマートフォンに SIM がありません。"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM を追加してください。"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM が見つからないか読み取れません。SIM を追加してください。"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM が使用できません。"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM が完全に無効になっています。\n ワイヤレス サービス プロバイダにお問い合わせのうえ、新しい SIM を入手してください。"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"前のトラック"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"次のトラック"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"一時停止"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"早送り"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"緊急通報のみ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ネットワークがロックされました"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM が PUK でロックされました。"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ユーザーガイドをご覧いただくか、お客様サポートにお問い合わせください。"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM がロックされています。"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM ロックを解除しています…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"ロック解除パターンの入力を<xliff:g id="NUMBER_0">%1$d</xliff:g>回間違えました。\n\n<xliff:g id="NUMBER_1">%2$d</xliff:g>秒後にもう一度お試しください。"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"正しくないパスワードを<xliff:g id="NUMBER_0">%1$d</xliff:g>回入力しました。\n\n<xliff:g id="NUMBER_1">%2$d</xliff:g>秒後にもう一度お試しください。"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"正しくないPINを<xliff:g id="NUMBER_0">%1$d</xliff:g>回入力しました。\n\n<xliff:g id="NUMBER_1">%2$d</xliff:g>秒後にもう一度お試しください。"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"このページから移動"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"このページのまま"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nこのページから移動してもよろしいですか?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"確認"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"ヒント: ダブルタップで拡大/縮小できます。"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"自動入力"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"自動入力を設定"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> で自動入力"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$3$2$1"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">"、 "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"地方"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"郵便番号"</string>
- <string name="autofill_state" msgid="3341725337190434069">"州"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"郵便番号"</string>
- <string name="autofill_county" msgid="7781382735643492173">"郡"</string>
- <string name="autofill_island" msgid="5367139008536593734">"島"</string>
- <string name="autofill_district" msgid="6428712062213557327">"地区"</string>
- <string name="autofill_department" msgid="9047276226873531529">"県"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"都道府県"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"教区"</string>
- <string name="autofill_area" msgid="8289022370678448983">"地域"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"首長国"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ウェブのブックマークと履歴の読み取り"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ブラウザからアクセスしたすべてのURLの履歴とブラウザのすべてのブックマークの読み取りをアプリに許可します。注: この許可は、サードパーティブラウザまたはウェブブラウジング機能を備えたその他のアプリでは適用されない場合があります。"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"ウェブのブックマークと履歴の書き込み"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"タブレットに保存されているブラウザの履歴やブックマークの変更をアプリに許可します。これにより、アプリがブラウザデータを消去または変更できるようになる可能性があります。注: この許可は、サードパーティブラウザまたはウェブブラウジング機能を備えたその他のアプリでは適用されない場合があります。"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Android TV デバイスに保存されているブラウザの履歴やブックマークの変更をアプリに許可します。これにより、アプリがブラウザデータを消去または変更できるようになる可能性があります。注: この許可は、サードパーティ ブラウザまたはウェブ ブラウジング機能を備えたその他のアプリでは適用されない場合があります。"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"モバイル デバイスに保存されているブラウザの履歴やブックマークの変更をアプリに許可します。これにより、アプリがブラウザデータを消去または変更できるようになる可能性があります。注: この許可は、サードパーティブラウザまたはウェブブラウジング機能を備えたその他のアプリでは適用されない場合があります。"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"アラームの設定"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"インストール済みアラームアプリのアラームを設定することをアプリに許可します。この機能が実装されていないアラームアプリもあります。"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"留守番電話の追加"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"留守番電話受信トレイにメッセージを追加することをアプリに許可します。"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ブラウザの現在地情報に対する権限の変更"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ブラウザの現在地情報に対する権限の変更をアプリに許可します。この許可を悪意のあるアプリに利用されると、任意のウェブサイトに現在地情報が送信される恐れがあります。"</string>
- <string name="save_password_message" msgid="2146409467245462965">"このパスワードをブラウザで保存しますか?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"今は保存しない"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"保存"</string>
- <string name="save_password_never" msgid="6776808375903410659">"保存しない"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"このページへのアクセスは許可されていません。"</string>
- <string name="text_copied" msgid="2531420577879738860">"テキストをクリップボードにコピーしました。"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> から <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> に貼り付けました"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> にクリップボードから貼り付けました"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内のテキストを貼り付けました"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内の画像を貼り付けました"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内のコンテンツを貼り付けました"</string>
<string name="more_item_label" msgid="7419249600215749115">"その他"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"MENU+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"これは後から[設定] > [アプリ]で変更できます。"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"常に許可する"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"許可しない"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM を削除しました"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"有効な SIM で再起動するまで、モバイル ネットワークは利用できません。"</string>
<string name="sim_done_button" msgid="6464250841528410598">"完了"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM を追加しました"</string>
<string name="sim_added_message" msgid="6602906609509958680">"モバイルネットワークにアクセスするにはデバイスを再起動してください。"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"再起動"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"モバイル サービスを有効にする"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIMが無効になりました。続行するにはPUKコードを入力してください。詳しくは携帯通信会社にお問い合わせください。"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"希望のPINコードを入力してください"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"希望のPINコードを確認してください"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM ロックを解除しています…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PINコードが正しくありません。"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"PINは4~8桁の数字で入力してください。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUKコードは8桁の番号です。"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" - "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"削除"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"推奨レベルを超えるまで音量を上げますか?\n\n大音量で長時間聞き続けると、聴力を損なう恐れがあります。"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"警告\nこの 1 週間のヘッドフォンの音量は、聴覚に影響を及ぼす可能性のある大きさを超えていました。\n\nこの限度を超えると聴力を損ない、元に戻らなくなるおそれがあります。"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"警告\nこの 1 週間のヘッドフォンの音量は、聴覚に影響を及ぼす可能性のある大きさを超えることが 5 回ありました。\n\n聴力を守るために音量を下げました。"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"メディアを長期間聴く際の音量によっては、聴覚の障害を招くことがあります。\n\nこのような音量で長期間再生していると、聴覚に影響を及ぼすおそれがあります。"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"警告\n現在、安全なレベルを超えた大音量でコンテンツを再生しています。\n\nこの音量で聴き続けると聴力を損ない、元に戻らなくなるおそれがあります。"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ユーザー補助機能のショートカットの使用"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ショートカットが ON の場合、両方の音量ボタンを 3 秒ほど長押しするとユーザー補助機能が起動します。"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ユーザー補助機能のショートカットを ON にしますか?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ショートカットを OFF にする"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ショートカットを使用"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"色反転"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"色補正"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"片手モード"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"さらに輝度を下げる"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が ON になりました。"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"他のデバイスへのコンパニオン メッセージの配信をコンパニオン アプリに許可します。"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"バックグラウンドからのフォアグラウンド サービスの起動"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"バックグラウンドからのフォアグラウンド サービスの起動をコンパニオン アプリに許可します。"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"マイクを利用できます"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"マイクがブロックされています"</string>
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 5af4fb4..2060c83 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"თქვენ მიერ შეყვანილი PIN კოდები არ შეესატყვისება."</string>
<string name="invalidPin" msgid="7542498253319440408">"აკრიფეთ PIN, რომელიც შედგება 4-დან 8 ციფრამდე."</string>
<string name="invalidPuk" msgid="8831151490931907083">"აკრიფეთ PUK, რომელიც რვა ან მეტი ციფრისგან შედგება."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"თქვენი SIM ბარათი დაბლოკილია PUK კოდით. განბლოკვისთვის შეიყვანეთ PUK კოდი."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"აკრიფეთ PUK2 SIM-ის განბლოკვის მიზნით."</string>
<string name="enablePin" msgid="2543771964137091212">"წარუმატებელი მცდელობა. ჩართეთ SIM/RUIM ჩაკეტვა."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">თქვენ დაგრჩათ <xliff:g id="NUMBER_1">%d</xliff:g> მცდელობა, სანამ SIM დაიბლოკება.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"აპს შეეძლება, დაასრულოს სხვა აპების ფონური პროცესები. ამან შეიძლება სხვა აპების შეჩერება გამოიწვიოს."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"ამ აპს შეუძლია სხვა აპების ზემოდან გამოჩენა"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"ამ აპს შეუძლია სხვა აპების ზემოდან ან ეკრანის სხვა ნაწილებში გამოჩენა. ამან შეიძლება გავლენა იქონიოს აპის ნორმალურ გამოყენებაზე და სხვა აპების იერსახეზე."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"დამალეთ სხვა აპების გადაფარვა"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"მოცემულ აპს შეუძლია მოითხოვოს სისტემის მიერ გადაფარვის დამალვა, რომელიც გამოწვეულია ზემოდან ნაჩვენები აპებით."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ფონურ რეჟიმში გაშვება"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ამ აპს შეუძლია გაეშვას ფონურ რეჟიმში. ამან შეიძლება ბატარეა უფრო სწრაფად დაცალოს."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"მონაცემების ფონურ რეჟიმში გამოყენება"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"კიდევ სცადეთ"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ყველა ფუნქციისა და მონაცემის განბლოკვა"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"სახით განბლოკვის მცდელობამ დაშვებულ რაოდენობას გადააჭარბა"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM არ არის"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ტაბლეტში SIM არ არის."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"თქვენს Android TV მოწყობილობაში SIM ბარათი არ არის."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ტელეფონში SIM არ არის."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM-ის დამატება."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM აკლია ან არ იკითხება. SIM-ის დამატება."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"გამოუყენებელი SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"თქვენი SIM სამუდამოდ გამორთულია.\n დაუკავშირდით თქვენს უკაბელო სერვისის პროვაიდერს სხვა SIM ბარათისთვის."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"წინა ჩანაწერი"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"შემდეგი ჩანაწერი"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"პაუზა"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"წინ გადახვევა"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"მხოლოდ გადაუდებელი დახმარების ზარები"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ქსელი ჩაკეტილია"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM დაბლოკილია PUK-ით."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"იხილეთ მომხმარებლის სახელმძღვანელო ან დაუკავშირდით კლიენტების მომსახურებას."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-ბარათი ჩაკეტილია."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM-ის განბლოკვა…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"თქვენ <xliff:g id="NUMBER_0">%1$d</xliff:g>-ჯერ დახატეთ განბლოკვის ნიმუში. \n\nსცადეთ ხელახლა <xliff:g id="NUMBER_1">%2$d</xliff:g> წამში."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"თქვენ არასწორად დაბეჭდეთ თქვენი პაროლი <xliff:g id="NUMBER_0">%1$d</xliff:g> ჯერ. \n\nხელახლა სცადეთ <xliff:g id="NUMBER_1">%2$d</xliff:g> წამში."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"თქვენ <xliff:g id="NUMBER_0">%1$d</xliff:g>-ჯერ არასწორად შეიყვანეთ PIN კოდი. \n\nსცადეთ ხელახლა <xliff:g id="NUMBER_1">%2$d</xliff:g> წამში."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"გვერდის დატოვება"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ამ გვერდზე დარჩენა"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nდარწმუნებული ხართ, რომ გსურთ ამ გვერდიდან გადასვლა?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"დადასტურება"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"რჩევა: მასშტაბის შესაცვლელად გამოიყენეთ ორმაგი შეხება."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ავტოშევსება"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"ავტოშევსების დაყენება"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"ავტომატური შევსება <xliff:g id="SERVICENAME">%1$s</xliff:g>-ით"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"პროვინცია"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"საფოსტი მისამართი"</string>
- <string name="autofill_state" msgid="3341725337190434069">"შტატი"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP კოდი"</string>
- <string name="autofill_county" msgid="7781382735643492173">"ქვეყანა"</string>
- <string name="autofill_island" msgid="5367139008536593734">"კუნძული"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ოლქი"</string>
- <string name="autofill_department" msgid="9047276226873531529">"დეპარტამენტი"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"პრეფექტურა"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"სამოქალაქო ოლქი"</string>
- <string name="autofill_area" msgid="8289022370678448983">"რეგიონი"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"ემირატი"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"თქვენი ვებ სანიშნეებისა და ისტორიის წაკითხვა"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"აპს შეეძლება წაიკითხოს ყველა URL-ის ისტორია, სადაც კი ბრაუზერი შესულა, ასევე ბრაუზერის სანიშნეები. შენიშვნა: ეს უფლება შესაძლოა არ მოიცავდეს მესამე მხარის ბრაუზერებს ან სხვა აპლიკაციებს, რომლებსაც ვებში ძიება შეუძლიათ."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"ვებ სანიშნეებისა და ისტორიის ჩაწერა"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"აპს შეეძლება, შეცვალოს ბრაუზერის ისტორია და თქვენ ტაბლეტში შენახული სანიშნეები. ამან შეიძლება უფლება მისცეს აპს, წაშალოს ან შეცვალოს ბრაუზერის მონაცემები. შენიშვნა: ეს ნებართვა არ შეიძლება შესრულდეს მესამე მხარის ბრაუზერების ან ვებ დათვალიერების შესაძლებლობის მქონე სხვა აპლიკაციების მიერ."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ნებას რთავს აპს, შეცვალოს ბრაუზერის ისტორია ან სანიშნეები რომლებიც თქვენს Android TV მოწყობილობაზეა შენახული. ამან, შესაძლოა, ნება დართოს აპს, წაშალოს ან შეცვალოს ბრაუზერის მონაცემები. გაითვალისწინეთ: ამ ნებართვის გამოყენება არ უნდა მოხდეს მესამე მხარის ბრაუზერის ან ვებ-ბრაუზერის უნარის მქონე რომელიმე სხვა აპლიკაციის მიერ."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"აპს შეეძლება, შეცვალოს ბრაუზერის ისტორია და თქვენ ტელეფონში შენახული სანიშნეები. ამან შეიძლება უფლება მისცეს აპს, წაშალოს ან შეცვალოს ბრაუზერის მონაცემები. შენიშვნა: ეს ნებართვა არ შეიძლება შესრულდეს მესამე მხარის ბრაუზერების ან ვებ დათვალიერების შესაძლებლობის მქონე სხვა აპლიკაციების მიერ."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"მაღვიძარას დაყენება"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"აპს შეეძლება მაღვიძარას დაყენება დაინსტალირებული მაღვიძარას აპლიკაციაში. ამ ფუნქციას მაღვიძარას ზოგიერთი აპი არ იყენებს."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ხმოვანი ფოსტის დამატება"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"აპს შეეძლება დაამატოს შეტყობინებები თქვენი ხმოვანი ფოსტის შემოსულებში."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ბრაუზერის გეოლოკაციის უფლებების შეცვლა"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"აპს შეეძლება ბრაუზერის გეოლოკაციის უფლებების შეცვლა. მავნე აპებმა ეს შესაძლოა გამოიყენონ ნებისმიერი ვებსაიტისთვის მდებარეობის შესახებ ინფორმაციის გასაგზავნად."</string>
- <string name="save_password_message" msgid="2146409467245462965">"გსურთ, რომ ბრაუზერმა დაიმახსოვროს პაროლი?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ახლა არა"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"დამახსოვრება"</string>
- <string name="save_password_never" msgid="6776808375903410659">"არასოდეს"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ამ გვერდის გახსნის უფლება არ გაქვთ."</string>
- <string name="text_copied" msgid="2531420577879738860">"ტექსტი დაკოპირებულია გაცვლის ბუფერში."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-დან <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>-ში ჩასმული"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მა ჩასვა ტექსტი თქვენი გაცვლის ბუფერიდან"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული ტექსტი"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული სურათი"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული კონტენტი"</string>
<string name="more_item_label" msgid="7419249600215749115">"დამატებით"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"მენიუ+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"ამის შეცვლა შეგიძლიათ მოგვიანებით აპების პარამეტრებიდან."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"ნებართვის მიცემა - ყოველთვის"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"არასოდეს მისცე უფლება"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM ამოღებულია"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"მობილური ქსელი მიუწვდომელი იქნება, სანამ არ გადატვირთავთ მოქმედი SIM ბარათით."</string>
<string name="sim_done_button" msgid="6464250841528410598">"დასრულდა"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM დამატებულია"</string>
<string name="sim_added_message" msgid="6602906609509958680">"გადატვირთეთ თქვენი მოწყობილობა მობილურ ქსელზე წვდომისთვის."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"გადატვირთვა"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"გაააქტიურეთ მობილური სერვისი"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM ამჟამად დეაქტივირებულია. გასაგრძელებლად შეიყვანეთ PUK კოდი. დეტალებისთვის მიმართეთ მობილურ ოპერატორს."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"სასურველი PIN კოდის შეყვანა"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"სასურველი PIN კოდის დადასტურება"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM-ის განბლოკვა…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"არასწორი PIN კოდი."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"აკრიფეთ PIN, რომელიც შედგება 4-დან 8 ციფრამდე."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-კოდი 8 ციფრისგან უნდა შედგებოდეს."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ამოშლა"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"გსურთ ხმის რეკომენდებულ დონეზე მაღლა აწევა?\n\nხანგრძლივად ხმამაღლა მოსმენით შესაძლოა სმენადობა დაიზიანოთ."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"გაფრთხილება,\nთქვენ გადააჭარბეთ ყურსასმენებით ერთ კვირაში ხმამაღალი სიგნალების უსაფრთხოდ მოსმენის დასაშვებ რაოდენობას.\n\nმოცემულ ზღვარს თუ გადააჭარბებთ, ეს სამუდამოდ დაგიზიანებთ სმენას."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"გაფრთხილება,\nთქვენ 5-ჯერ გადააჭარბეთ ყურსასმენებით ერთ კვირაში ხმამაღალი სიგნალების უსაფრთხოდ მოსმენის დასაშვებ რაოდენობას.\n\nხმა დაწეულია თქვენი სმენის დასაცავად."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"ხმის დონეს, რომელზეც მედიას უსმენთ, შეიძლება შედეგად მოყვეს სმენის დაზიანება თუ ამას ხანგრძლივად გააგრძელებთ.\n\nთუ გააგრძელებთ ხანგრძლივად დაკვრას ხმის მოცემულ დონეზე, ამან შეიძლება დააზიანოს თქვენი სმენა."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"გაფრთხილება,\nამჟამად უსმენთ ხმამაღალ კონტენტს, რომლის დაკვრის ხმის დონე არ არის უსაფრთხო.\n\nასეთი ხმამაღალი კონტენტის დაკვრა სამუდამოდ დაგიზიანებთ სმენას."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"გსურთ მარტივი წვდომის მალსახმობის გამოყენება?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"თუ მალსახმობი ჩართულია, ხმის ორივე ღილაკზე 3 წამის განმავლობაში დაჭერით მარტივი წვდომის ფუნქცია ჩაირთვება."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ჩაირთოს მარტივი წვდომის ფუნქციების მალსახმობი?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"მალსახმობის გამორთვა"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"მალსახმობის გამოყენება"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ფერთა ინვერსია"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"ფერთა კორექცია"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ცალი ხელის რეჟიმი"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"დამატებითი დაბინდვა"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ჩართულია."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"კომპანიონ აპს საშუალებას აძლევს, რომ მიაწოდოს გზავნილები სხვა მოწყობილობებზე."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"უპირატესი სერვისების ფონური რეჟიმიდან გაშვება"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"საშუალებას აძლევს კომპანიონ აპს, რომ გაუშვას უპირატესი სერვისები ფონური რეჟიმიდან."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"მიკროფონი ხელმისაწვდომია"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"მიკროფონი დაბლოკილია"</string>
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 6c2245c..9015e1a 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Сіз терген PIN кодтары сәйкес емес."</string>
<string name="invalidPin" msgid="7542498253319440408">"4-8 саннан тұратын PIN кодын теру."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 немесе одан көп саннан тұратын PUK кодын теру."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM картаңыз PUK кодымен құлыпталған. Ашу үшін PUK кодын теріңіз."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM картасының құлпын ашу үшін PUK2 кодын теріңіз."</string>
<string name="enablePin" msgid="2543771964137091212">"Сәтсіз, SIM/RUIM бекітпесін қосыңыз."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">SIM картасының бекітілуіне <xliff:g id="NUMBER_1">%d</xliff:g> әрекет қалды.</item>
@@ -175,7 +173,7 @@
<string name="notification_title" msgid="5783748077084481121">"<xliff:g id="ACCOUNT">%1$s</xliff:g> үшін кіру қателігі"</string>
<string name="contentServiceSync" msgid="2341041749565687871">"Синх"</string>
<string name="contentServiceSyncNotificationTitle" msgid="5766411446676388623">"Синхрондау мүмкін емес"</string>
- <string name="contentServiceTooManyDeletesNotificationDesc" msgid="4562226280528716090">"Көптеген <xliff:g id="CONTENT_TYPE">%s</xliff:g> мазмұнын жоюға әрекет жасалды."</string>
+ <string name="contentServiceTooManyDeletesNotificationDesc" msgid="4562226280528716090">"Көптеген <xliff:g id="CONTENT_TYPE">%s</xliff:g> контентін жоюға әрекет жасалды."</string>
<string name="low_memory" product="tablet" msgid="5557552311566179924">"Планшет жады толы. Орын босату үшін кейбір файлдарды жойыңыз."</string>
<string name="low_memory" product="watch" msgid="3479447988234030194">"Сағат жады толы. Орын босату үшін кейбір файлдарды жойыңыз."</string>
<string name="low_memory" product="tv" msgid="6663680413790323318">"Android TV құрылғысының жады толы. Орын босату үшін кейбір файлдарды өшіріп тастаңыз."</string>
@@ -326,8 +324,8 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"ағза күйінің көрсеткіштері туралы сенсор деректеріне қатынасу"</string>
<string name="permgrouplab_notifications" msgid="5472972361980668884">"Хабарландырулар"</string>
<string name="permgroupdesc_notifications" msgid="4608679556801506580">"хабарландыруларды көрсету"</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Терезе мазмұнын оқып отыру"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Ашық тұрған терезе мазмұнын тексеру."</string>
+ <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Терезе контентін оқып отыру"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Ашық тұрған терезе контентін тексеру."</string>
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Түртілген элементтерді дыбыстау функциясын қосу"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="4394677060796752976">"Түртілген элементтер дауыстап айтылады және экранды қимылдар арқылы зерттеуге болады."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2772371671541753254">"Терілген мәтінді тексеру"</string>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Қолданбаға басқа қолданбалардың артқы шеп үрдістерін тоқтату мүмкіндігін береді. Бұл басқа қолданбалардың жұмысын тоқтатуы мүмкін."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Бұл қолданба өзге қолданбалардың үстінен шығуы мүмкін"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Бұл қолданба өзге қолданбалардың не экранның басқа бөліктерінің үстінен шығуы мүмкін. Бұл қолданбаны қалыпты пайдалануға кедергі келтіріп, өзге қолданбалардың басқаша шығуына әкелуі мүмкін."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"басқа қолданбалардың оверлейлерін жасыру"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Бұл қолданба жүйенің басқа қолданбалар жасаған оверлейлерді жасыруын және олардың қолданбаның үстінен көрсетілмеуін сұрай алады."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"фондық режимде іске қосу"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Қолданба фондық режимде іске қосыла алады. Бұл – батарея зарядын тезірек бітіруі мүмкін."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"деректерді фондық режимде пайдалану"</string>
@@ -663,7 +663,7 @@
<string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Бет үлгісін жою үшін түртіңіз, содан соң жаңа бет үлгісін қосыңыз."</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Бет тану функциясын реттеу"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Телефоныңызға қарап, оның құлпын ашыңыз."</string>
- <string name="face_sensor_privacy_enabled" msgid="7407126963510598508">"Face Unlock функциясын пайдалану үшін \"Параметрлер > Құпиялылық\" бөлімінен "<b>"Камераны пайдалану рұқсатын"</b>" қосыңыз."</string>
+ <string name="face_sensor_privacy_enabled" msgid="7407126963510598508">"Face Unlock функциясын пайдалану үшін \"Параметрлер > Құпиялық\" бөлімінен "<b>"Камераны пайдалану рұқсатын"</b>" қосыңыз."</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Құлыпты ашудың басқа тәсілдерін реттеу"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Саусақ ізін қосу үшін түртіңіз."</string>
<string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Құлыпты саусақ ізімен ашу"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Қайталап көріңіз"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Мүмкіндіктер мен деректер үшін құлыпты ашыңыз"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Бет тану арқылы ашу әрекеттері анықталған шегінен асып кетті"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM картасы жоқ."</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Планшетте SIM картасы жоқ."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV құрылғыңызда SIM картасы жоқ."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Телефонда SIM картасы жоқ."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM картасын қосыңыз."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM картасы жоқ немесе оқылмай тұр. SIM картасын қосыңыз."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM картасын пайдалану мүмкін емес."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM картаңыз біржола өшірілді.\n Сымсыз байланыс провайдеріне хабарласып, басқа SIM картасын алыңыз."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Алдыңғы трек"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Келесі трек"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Кідірту"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Жылдам алға айналдыру"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Құтқару қызметіне ғана қоңырау шалынады"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Желі бекітілген"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM картасы PUK кодымен құлыпталды."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Пайдаланушы нұсқаулығын қараңыз немесе тұтынушыларды қолдау орталығына хабарласыңыз."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM картасы құлыпталған."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM картасының құлпы ашылып жатыр…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Құлыпты ашу өрнегін <xliff:g id="NUMBER_0">%1$d</xliff:g> рет қате салдыңыз. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> секундтан кейін әрекетті қайталаңыз."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Құпия сөзді <xliff:g id="NUMBER_0">%1$d</xliff:g> рет қате тердіңіз. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> секундтан кейін қайталаңыз."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"PIN кодын <xliff:g id="NUMBER_0">%1$d</xliff:g> рет қате тердіңіз. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> секундтан кейін қайталаңыз."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Бұл беттен шығу"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Осы бетте қалу"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nБұл беттен шығуды қалайсыз ба?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Растау"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Кеңес: Ұлғайту немесе кішірейту үшін екі рет түртіңіз."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Aвто толтыру"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Автотолтыруды орнату"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> арқылы автотолтыру"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Провинция"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Индекс"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Штат"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Индекс"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Өңір"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Арал"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Аудан"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Бөлім"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Жергілікті әкімшілік"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Аудан"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Аймақ"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Әмірлік"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"Веб бетбелгілерді және тарихты оқу"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Қолданбаларға Браузер кіріп шыққан барлық URL тарихын және Браузер бетбелгілерін оқу мүмкіндігін береді. Есіңізде болсын: бұл рұқсатты үшінші жақ браузерлері немесе веб шолу қабілеті бар басқа қолданбалар қолданбауы мүмкін."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"веб бетбелгілер және тарих жазу"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Қолданбаларға планшетте сақталған Браузер кіріп шыққан барлық URL тарихын және Браузер бетбелгілерін оқу мүмкіндігін береді. Есіңізде болсын: бұл рұқсатты үшінші жақ браузерлері немесе веб шолу қабілеті бар басқа қолданбалар қолданбауы мүмкін."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Қолданба Android TV құрылғысында сақталған браузер тарихын немесе бетбелгілерді өзгерте алатын болады. Ол қолданбаға браузер деректерінен тазартуға немесе оларды өзгертуге мүмкіндік бере алады. Ескертпе: бұл рұқсатты интернет беттерін аша алатын басқа браузерлер немесе қолданбалар пайдалана алмайды."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Қолданбаларға телефонда сақталған Браузер кіріп шыққан барлық URL тарихын және Браузер бетбелгілерін өзгерту мүмкіндігін береді. Есіңізде болсын: бұл рұқсатты үшінші жақ браузерлері немесе веб шолу қабілеті бар басқа қолданбалар қолданбауы мүмкін."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"дабылды орнату"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Қолданбаға орнатылған оятқыш қолданбасында дабылды орнатуға рұқсат береді. Кейбір қолданбаларда бұл мүмкіндік іске асырылмауы мүмкін."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"дауыс хабарын қосу"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Қолданбаға дауыстық поштаңыздың «Кіріс» қалтасына хабарлар қосуға рұқсат береді."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"браузердің геолокация рұқсаттарын өзгерту"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Қолданбаға браузердің геолокация рұқсаттарын өзгертуге рұқсат береді. Зиянкес қолданбалар мұны кездейсоқ веб-сайттарға орын туралы ақпаратты жіберуге рұқсат беру үшін пайдалануы мүмкін."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Браузердің осы кілтсөзді жадында сақтауын қалайсыз ба?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Қазір емес"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Жадында сақтау"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Ешқашан"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Сізде осы бетті ашуға рұқсат жоқ."</string>
- <string name="text_copied" msgid="2531420577879738860">"Мәтін ақпарат алмастыру қорына сақталды."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> қолданбасынан <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> қолданбасына қойылды."</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> қолданбасы буферіңізден алынған деректерді қойды."</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген мәтінді қойды."</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген суретті қойды."</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген мазмұнды қойды."</string>
<string name="more_item_label" msgid="7419249600215749115">"Көбірек"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Mәзір+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Бұны кейінірек Параметрлер > Қолданбалар арқылы өзгертуге болады"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Әрқашан рұқсат беру"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ешқашан рұқсат бермеу"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM картасы өшірілді"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Жарамды SIM картасымен өшіріп қоспайынша, мобильдік желі қолжетімді болмайды."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Дайын"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM картасы қосылды"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Ұялы желіге кіру үшін құрылғыны қайта бастаңыз."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Қайта бастау"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Мобильдік қызметті іске қосыңыз"</string>
@@ -1448,14 +1396,14 @@
<string name="alert_windows_notification_message" msgid="6538171456970725333">"<xliff:g id="NAME">%s</xliff:g> деген пайдаланушының бұл функцияны пайдалануына жол бермеу үшін параметрлерді түртіп ашыңыз да, оларды өшіріңіз."</string>
<string name="alert_windows_notification_turn_off_action" msgid="7805857234839123780">"Өшіру"</string>
<string name="ext_media_checking_notification_title" msgid="8299199995416510094">"<xliff:g id="NAME">%s</xliff:g> тексеріліп жатыр…"</string>
- <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Ағымдағы мазмұн тексерілуде"</string>
+ <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"Ағымдағы контент тексерілуде"</string>
<string name="ext_media_checking_notification_message" product="tv" msgid="7986154434946021415">"Мультимедиа жады талдануда"</string>
<string name="ext_media_new_notification_title" msgid="3517407571407687677">"Жаңа <xliff:g id="NAME">%s</xliff:g>"</string>
<string name="ext_media_new_notification_title" product="automotive" msgid="9085349544984742727">"<xliff:g id="NAME">%s</xliff:g> жұмыс істемейді"</string>
<string name="ext_media_new_notification_message" msgid="6095403121990786986">"Реттеу үшін түртіңіз"</string>
<string name="ext_media_new_notification_message" product="tv" msgid="216863352100263668">"Реттеу үшін таңдаңыз."</string>
<string name="ext_media_new_notification_message" product="automotive" msgid="5140127881613227162">"Құрылғыны қайта форматтау қажет болуы мүмкін. Шығару үшін түртіңіз."</string>
- <string name="ext_media_ready_notification_message" msgid="7509496364380197369">"Фотосуреттерді, бейнелерді, музыка мен басқа мазмұнды сақтау үшін"</string>
+ <string name="ext_media_ready_notification_message" msgid="7509496364380197369">"Фотосуреттерді, бейнелерді, музыка мен басқа контентті сақтау үшін"</string>
<string name="ext_media_ready_notification_message" product="tv" msgid="8847134811163165935">"Медиа файлдарды таңдаңыз."</string>
<string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"<xliff:g id="NAME">%s</xliff:g> ақаулы"</string>
<string name="ext_media_unmountable_notification_title" product="automotive" msgid="3142723758949023280">"<xliff:g id="NAME">%s</xliff:g> жұмыс істемейді"</string>
@@ -1468,7 +1416,7 @@
<string name="ext_media_unsupported_notification_message" product="tv" msgid="1595482802187036532">"<xliff:g id="NAME">%s</xliff:g> құрылғысын қолдау көрсетілетін форматта реттеу үшін таңдаңыз."</string>
<string name="ext_media_unsupported_notification_message" product="automotive" msgid="3412494732736336330">"Құрылғыны қайта форматтау қажет болуы мүмкін."</string>
<string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> кенеттен шығарылды"</string>
- <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Мазмұнды жоғалтып алмау үшін ақпарат тасығышты алдымен ажыратыңыз, содан кейін барып шығарыңыз."</string>
+ <string name="ext_media_badremoval_notification_message" msgid="1986514704499809244">"Контентті жоғалтып алмау үшін ақпарат тасығышты алдымен ажыратыңыз, содан кейін барып шығарыңыз."</string>
<string name="ext_media_nomedia_notification_title" msgid="742671636376975890">"<xliff:g id="NAME">%s</xliff:g> жоқ"</string>
<string name="ext_media_nomedia_notification_message" msgid="2832724384636625852">"Кейбір функциялар дұрыс жұмыс істемеуі мүмкін. Жаңа жад құрылғысын енгізіңіз."</string>
<string name="ext_media_unmounting_notification_title" msgid="4147986383917892162">"<xliff:g id="NAME">%s</xliff:g> ажыратылуда"</string>
@@ -1481,10 +1429,10 @@
<string name="ext_media_missing_message" msgid="4408988706227922909">"Құрылғыны қайта салыңыз"</string>
<string name="ext_media_move_specific_title" msgid="8492118544775964250">"<xliff:g id="NAME">%s</xliff:g> тасымалдануда"</string>
<string name="ext_media_move_title" msgid="2682741525619033637">"Деректер тасымалдануда"</string>
- <string name="ext_media_move_success_title" msgid="4901763082647316767">"Мазмұн жіберілді"</string>
- <string name="ext_media_move_success_message" msgid="9159542002276982979">"Мазмұн <xliff:g id="NAME">%s</xliff:g> жадына тасымалданды"</string>
- <string name="ext_media_move_failure_title" msgid="3184577479181333665">"Мазмұн тасымалданбады"</string>
- <string name="ext_media_move_failure_message" msgid="4197306718121869335">"Мазмұнды қайта тасымалдап көріңіз"</string>
+ <string name="ext_media_move_success_title" msgid="4901763082647316767">"Контент жіберілді"</string>
+ <string name="ext_media_move_success_message" msgid="9159542002276982979">"Контент <xliff:g id="NAME">%s</xliff:g> жадына тасымалданды"</string>
+ <string name="ext_media_move_failure_title" msgid="3184577479181333665">"Контент тасымалданбады"</string>
+ <string name="ext_media_move_failure_message" msgid="4197306718121869335">"Контентті қайта тасымалдап көріңіз"</string>
<string name="ext_media_status_removed" msgid="241223931135751691">"Алынды"</string>
<string name="ext_media_status_unmounted" msgid="8145812017295835941">"Ажыратылды"</string>
<string name="ext_media_status_checking" msgid="159013362442090347">"Тексерілуде…"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM картасы істен шықты. Жалғастыру үшін PUK кодын енгізіңіз. Толығырақ ақпаратты жабдықтаушыдан алыңыз."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Қажетті PIN кодын енгізіңіз"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Қажетті PIN кодты растау"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM картасының құлпы ашылып жатыр…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Қате PIN код."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4-8 сандардан тұратын PIN кодты теріңіз."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK коды 8 саннан тұруы керек."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Жою"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Дыбыс деңгейін ұсынылған деңгейден көтеру керек пе?\n\nЖоғары дыбыс деңгейінде ұзақ кезеңдер бойы тыңдау есту қабілетіңізге зиян тигізуі мүмкін."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Ескерту!\nҚұлақаспап арқылы бір аптада қауіпсіз тыңдауға болатын қатты дыбыстық сигналдар санын асырып жібердіңіз.\n\nБұл лимиттен асыру есту мүшесінің біржола зақымдалуына себеп болады."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Ескерту!\nҚұлақаспап арқылы бір аптада қауіпсіз тыңдауға болатын қатты дыбыстық сигналдар санын 5 рет асырып жібердіңіз.\n\nЕсту мүшесін қорғау үшін дыбыс деңгейі төмендетілді."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Сіз медиафайлды тыңдап жатқан дауыс деңгейі ұзақ уақыт ойнату жағдайында есту мүшесін зақымдауы мүмкін.\n\nҰзақ уақыт бойы осы дыбыс деңгейімен ойнату есту мүшесін зақымдауы ықтимал."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Ескерту!\nҚазір дауысы тым қатты контентті тыңдап жатырсыз, оның деңгейі қауіпті.\n\nОсылай тым қатты тыңдауды жалғастыру есту мүшесін біржола зақымдайды."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Арнайы мүмкіндік төте жолын пайдалану керек пе?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Түймелер тіркесімі қосулы кезде, екі дыбыс түймесін 3 секунд басып тұрсаңыз, \"Арнайы мүмкіндіктер\" функциясы іске қосылады."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Арнайы мүмкіндіктердің жылдам пәрмені іске қосылсын ба?"</string>
@@ -1740,7 +1691,7 @@
<string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> қызметіне құрылғыны толық басқаруға рұқсат етілсін бе?"</string>
<string name="accessibility_service_warning_description" msgid="291674995220940133">"Арнайы мүмкіндіктер бойынша көмектесетін қолданбаларға ғана құрылғыны толық басқару рұқсатын берген дұрыс."</string>
<string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Экранды көру және басқару"</string>
- <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ол экрандағы мазмұнды толық оқиды және мазмұнды басқа қолданбалардың үстінен көрсете алады."</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ол экрандағы контентті толық оқиды және контентті басқа қолданбалардың үстінен көрсете алады."</string>
<string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Әрекеттерді көру және орындау"</string>
<string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Ол қолданбамен немесе жабдық датчигімен істеген тапсырмаларыңызды бақылайды және қолданбаларды сіздің атыңыздан пайдаланады."</string>
<string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Рұқсат ету"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Төте жолды өшіру"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Төте жолды пайдалану"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Түс инверсиясы"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Түсті түзету"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Бір қолмен басқару режимі"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Экранды қарайту"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Пайдаланушы дыбыс деңгейі пернелерін басып ұстап тұрды. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> қосулы."</string>
@@ -1873,7 +1823,7 @@
<string name="mediasize_unknown_portrait" msgid="3817016220446495613">"Белгісіз портреттік"</string>
<string name="mediasize_unknown_landscape" msgid="1584741567225095325">"Белгісіз ландшафт"</string>
<string name="write_fail_reason_cancelled" msgid="2344081488493969190">"Тоқтатылды"</string>
- <string name="write_fail_reason_cannot_write" msgid="432118118378451508">"Мазмұн жазу қателігі"</string>
+ <string name="write_fail_reason_cannot_write" msgid="432118118378451508">"Контент жазу қателігі"</string>
<string name="reason_unknown" msgid="5599739807581133337">"белгісіз"</string>
<string name="reason_service_unavailable" msgid="5288405248063804713">"Принтер қызметі қосылмаған"</string>
<string name="print_service_installed_title" msgid="6134880817336942482">"<xliff:g id="NAME">%s</xliff:g> қызметі орнатылды"</string>
@@ -2012,7 +1962,7 @@
<string name="app_streaming_blocked_message_for_settings_dialog" product="tv" msgid="820334666354451145">"Бұған <xliff:g id="DEVICE">%1$s</xliff:g> құрылғысынан кіру мүмкін емес. Оның орнына Android TV құрылғысын пайдаланып көріңіз."</string>
<string name="app_streaming_blocked_message_for_settings_dialog" product="tablet" msgid="3286849551133045896">"Бұған <xliff:g id="DEVICE">%1$s</xliff:g> құрылғысынан кіру мүмкін емес. Оның орнына планшетті пайдаланып көріңіз."</string>
<string name="app_streaming_blocked_message_for_settings_dialog" product="default" msgid="6264287556598916295">"Бұған <xliff:g id="DEVICE">%1$s</xliff:g> құрылғысынан кіру мүмкін емес. Оның орнына телефонды пайдаланып көріңіз."</string>
- <string name="deprecated_target_sdk_message" msgid="5246906284426844596">"Бұл қолданба Android жүйесінің ескі нұсқасына арналған. Ол дұрыс жұмыс істемеуі және онда соңғы қауіпсіздік пен құпиялылықты сақтау құралдары болмауы мүмкін. Қолданбаның жаңа нұсқасы бар-жоғын тексеріңіз не оны әзірлеушіге хабарласыңыз."</string>
+ <string name="deprecated_target_sdk_message" msgid="5246906284426844596">"Бұл қолданба Android жүйесінің ескі нұсқасына арналған. Ол дұрыс жұмыс істемеуі және онда соңғы қауіпсіздік пен құпиялықты сақтау құралдары болмауы мүмкін. Қолданбаның жаңа нұсқасы бар-жоғын тексеріңіз не оны әзірлеушіге хабарласыңыз."</string>
<string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Жаңарту бар-жоғын тексеру"</string>
<string name="new_sms_notification_title" msgid="6528758221319927107">"Сізде жаңа хабарлар бар"</string>
<string name="new_sms_notification_content" msgid="3197949934153460639">"Көру үшін SMS қолданбасын ашыңыз"</string>
@@ -2052,7 +2002,7 @@
<string name="time_picker_radial_mode_description" msgid="1222342577115016953">"Уақытты енгізу үшін сағат режиміне өтіңіз."</string>
<string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"Автотолтыру опциялары"</string>
<string name="autofill_save_accessibility_title" msgid="1523225776218450005">"Автотолтыру үшін сақтау"</string>
- <string name="autofill_error_cannot_autofill" msgid="6528827648643138596">"Мазмұндар автотолтырылмайды"</string>
+ <string name="autofill_error_cannot_autofill" msgid="6528827648643138596">"Дерек автоматты толтырылмайды."</string>
<string name="autofill_picker_no_suggestions" msgid="1076022650427481509">"Автотолтыру ұсыныстары жоқ"</string>
<string name="autofill_picker_some_suggestions" msgid="5560549696296202701">"{count,plural, =1{Бір автотолтыру ұсынысы}other{# автотолтыру ұсынысы}}"</string>
<string name="autofill_save_title" msgid="7719802414283739775"><b>"<xliff:g id="LABEL">%1$s</xliff:g>"</b>" қызметіне сақталсын ба?"</string>
@@ -2130,7 +2080,7 @@
<string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"Жарайды"</string>
<string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Өшіру"</string>
<string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Толығырақ"</string>
- <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Android 12 жүйесінде \"Бейімделетін хабарландырулар\" функциясын \"Кеңейтілген хабарландырулар\" алмастырды. Бұл функция ұсынылған әрекеттер мен жауаптарды көрсетіп, хабарландыруларыңызды ретке келтіреді.\n\nОл хабарландыру мазмұнын, соның ішінде жеке ақпаратыңызды (мысалы, контакт аттары мен хабарларды) пайдалана алады. Сондай-ақ бұл функция арқылы хабарландыруларды жабуға немесе оларға жауап беруге (мысалы, телефон қоңырауларына жауап беруге және Мазаламау режимін басқаруға) болады."</string>
+ <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Android 12 жүйесінде \"Бейімделетін хабарландырулар\" функциясын \"Кеңейтілген хабарландырулар\" алмастырды. Бұл функция ұсынылған әрекеттер мен жауаптарды көрсетіп, хабарландыруларыңызды ретке келтіреді.\n\nОл хабарландыру контентін, соның ішінде жеке ақпаратыңызды (мысалы, контакт аттары мен хабарларды) пайдалана алады. Сондай-ақ бұл функция арқылы хабарландыруларды жабуға немесе оларға жауап беруге (мысалы, телефон қоңырауларына жауап беруге және Мазаламау режимін басқаруға) болады."</string>
<string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Режим туралы хабарландыру"</string>
<string name="dynamic_mode_notification_title" msgid="1388718452788985481">"Батареяны үнемдеу режимі қосулы"</string>
<string name="dynamic_mode_notification_summary" msgid="1639031262484979689">"Батарея шығынын азайтсаңыз, батареяның жұмысы ұзарады."</string>
@@ -2193,10 +2143,10 @@
<string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Жеке көру"</string>
<string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Жұмыс деректерін көру"</string>
<string name="resolver_cross_profile_blocked" msgid="3014597376026044840">"Әкімшіңіз бөгеген"</string>
- <string name="resolver_cant_share_with_work_apps_explanation" msgid="9071442683080586643">"Бұл мазмұнды жұмыс қолданбаларымен бөлісу мүмкін емес."</string>
- <string name="resolver_cant_access_work_apps_explanation" msgid="1129960195389373279">"Бұл мазмұнды жұмыс қолданбаларымен ашу мүмкін емес."</string>
- <string name="resolver_cant_share_with_personal_apps_explanation" msgid="6349766201904601544">"Бұл мазмұнды жеке қолданбалармен бөлісу мүмкін емес."</string>
- <string name="resolver_cant_access_personal_apps_explanation" msgid="1679399548862724359">"Бұл мазмұнды жеке қолданбалармен ашу мүмкін емес."</string>
+ <string name="resolver_cant_share_with_work_apps_explanation" msgid="9071442683080586643">"Бұл контентті жұмыс қолданбаларымен бөлісу мүмкін емес."</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="1129960195389373279">"Бұл контентті жұмыс қолданбаларымен ашу мүмкін емес."</string>
+ <string name="resolver_cant_share_with_personal_apps_explanation" msgid="6349766201904601544">"Бұл контентті жеке қолданбалармен бөлісу мүмкін емес."</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1679399548862724359">"Бұл контентті жеке қолданбалармен ашу мүмкін емес."</string>
<string name="resolver_turn_on_work_apps" msgid="884910835250037247">"Жұмыс профилі кідіртілді."</string>
<string name="resolver_switch_on_work" msgid="463709043650610420">"Қосу үшін түртіңіз"</string>
<string name="resolver_no_work_apps_available" msgid="3298291360133337270">"Жұмыс қолданбалары жоқ."</string>
@@ -2325,7 +2275,7 @@
<string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Құрылғы камерасының бөгеуін алыңыз"</string>
<string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"<b><xliff:g id="APP">%s</xliff:g></b> және барлық қолданбалар мен қызметтерге арналған."</string>
<string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Бөгеуді алу"</string>
- <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Датчикке қатысты құпиялылық"</string>
+ <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Датчикке қатысты құпиялық"</string>
<string name="splash_screen_view_icon_description" msgid="180638751260598187">"Қолданба белгішесі"</string>
<string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Қолданба брендін ілгері жылжыту кескіні"</string>
<string name="view_and_control_notification_title" msgid="4300765399209912240">"Пайдалану параметрлерін тексеріңіз"</string>
@@ -2340,7 +2290,7 @@
<string name="notification_action_check_bg_apps" msgid="4758877443365362532">"Белсенді қолданбаларды тексеру"</string>
<string name="vdm_camera_access_denied" product="default" msgid="6102378580971542473">"<xliff:g id="DEVICE">%1$s</xliff:g> құрылғысынан телефон камерасын пайдалану мүмкін емес."</string>
<string name="vdm_camera_access_denied" product="tablet" msgid="6895968310395249076">"<xliff:g id="DEVICE">%1$s</xliff:g> құрылғысынан планшет камерасын пайдалану мүмкін емес."</string>
- <string name="vdm_secure_window" msgid="161700398158812314">"Трансляция кезінде мазмұнды көру мүмкін емес. Оның орнына телефоннан көріңіз."</string>
+ <string name="vdm_secure_window" msgid="161700398158812314">"Трансляция кезінде контентті көру мүмкін емес. Оның орнына телефоннан көріңіз."</string>
<string name="vdm_pip_blocked" msgid="4036107522497281397">"Трансляция кезінде суреттегі суретті көру мүмкін емес."</string>
<string name="system_locale_title" msgid="711882686834677268">"Жүйенің әдепкі параметрі"</string>
<string name="default_card_name" msgid="9198284935962911468">"<xliff:g id="CARDNUMBER">%d</xliff:g>-КАРТА"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Қосымша қолданбаға ілеспе хабарларды басқа құрылғыларға жеткізуге рұқсат беріледі."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Экрандық режимдегі қызметтерді фоннан іске қосу"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Қосымша қолданбаға экрандық режимдегі қызметтерді фоннан іске қосуға рұқсат беріледі."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Микрофон қолжетімді."</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Микрофон бөгелген."</string>
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index dd1a3ea..1a8508f 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"កូដ PIN ដែលអ្នកបានបញ្ចូលមិនដូចគ្នា។"</string>
<string name="invalidPin" msgid="7542498253319440408">"បញ្ចូលកូដ PIN ដែលមានពី ៤ ដល់ ៨លេខ"</string>
<string name="invalidPuk" msgid="8831151490931907083">"បញ្ចូលកូដ PUK ដែលមានពី ៨ លេខ ឬវែងជាងនេះ។"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"ស៊ីមរបស់អ្នកត្រូវបានចាក់សោដោយ PUK។ សូមវាយបញ្ចូលកូដ PUK ដើម្បីដោះសោស៊ីមនោះ។"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"វាយបញ្ចូល PUK2 ដើម្បីឈប់ទប់ស្កាត់ស៊ីម។"</string>
<string name="enablePin" msgid="2543771964137091212">"បរាជ័យ, បើកការចាក់សោស៊ីម / RUIM ។"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">អ្នកនៅសល់ការព្យាយាម <xliff:g id="NUMBER_1">%d</xliff:g> ដងទៀត មុនពេលស៊ីមត្រូវចាក់សោ។</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"ឲ្យកម្មវិធីបញ្ឈប់ដំណើរការផ្ទៃខាងក្រោយនៃកម្មវិធីផ្សេងៗ។ វាអាចធ្វើឲ្យកម្មវិធីផ្សេងឈប់ដំណើរការ។"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"កម្មវិធីនេះអាចបង្ហាញនៅខាងលើកម្មវិធីនានា"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"កម្មវិធីនេះអាចបង្ហាញនៅខាងលើកម្មវិធីនានា ឬខាងលើផ្នែកផ្សេងនៃអេក្រង់។ វាអាចនឹងមានការរំខានដល់ការប្រើប្រាស់កម្មវិធីធម្មតា និងផ្លាស់ប្តូររបៀបនៃការបង្ហាញកម្មវិធីផ្សេងៗ។"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"លាក់កម្មវិធីត្រួតពីលើផ្សេងទៀត"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"កម្មវិធីនេះអាចស្នើសុំឱ្យប្រព័ន្ធលាក់ធាតុត្រួតពីលើដែលមានប្រភពពីកម្មវិធីនានា មិនឱ្យបង្ហាញពីលើកម្មវិធីនោះទេ។"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ដំណើរការនៅផ្ទៃខាងក្រោយ"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"កម្មវិធីនេះអាចដំណើរការនៅផ្ទៃខាងក្រោយ។ វាអាចបណ្តាលឲ្យឆាប់អស់ថ្ម។"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"ប្រើប្រាស់ទិន្នន័យនៅផ្ទៃខាងក្រោយ"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"ព្យាយាមម្ដងទៀត"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ដោះសោលក្ខណៈពិសេស និងទិន្នន័យទាំងអស់"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"បានលើសការព្យាយាមដោះសោតាមទម្រង់មុខ"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"គ្មានស៊ីមទេ"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"គ្មានស៊ីមក្នុងថេប្លេតទេ។"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"គ្មានស៊ីមក្នុងឧបករណ៍ Android TV របស់អ្នកទេ។"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"គ្មានស៊ីមក្នុងទូរសព្ទទេ។"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"បញ្ចូលស៊ីម។"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"បាត់ស៊ីម ឬមិនអាចអានស៊ីមបាន។ បញ្ចូលស៊ីម។"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ស៊ីមមិនអាចប្រើបាន។"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"ស៊ីមរបស់អ្នកត្រូវបានបិទដំណើរការជាអចិន្ត្រៃយ៍។\n ទាក់ទងទៅក្រុមហ៊ុនផ្ដល់សេវាឥតខ្សែរបស់អ្នក ដើម្បីទទួលបានស៊ីមមួយទៀត។"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"បទមុន"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"បទបន្ទាប់"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"ផ្អាក"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"ទៅមុខរហ័ស"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"ការហៅទៅលេខសង្គ្រោះបន្ទាន់តែប៉ុណ្ណោះ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"បណ្ដាញជាប់សោ"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"ស៊ីមត្រូវបានចាក់សោដោយ PUK។"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"មើលមគ្គុទ្ទេសក៍អ្នកប្រើ ឬទាក់ទងសេវាអតិថិជន។"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"ស៊ីមត្រូវបានចាក់សោ។"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"កំពុងដោះសោស៊ីម…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"អ្នកបានគូរលំនាំដោះសោមិនត្រឹមត្រូវចំនួន <xliff:g id="NUMBER_0">%1$d</xliff:g> ដង។ \n\nព្យាយាមម្ដងទៀតក្នុងរយៈពេល <xliff:g id="NUMBER_1">%2$d</xliff:g> វិនាទី។"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"អ្នកបានបញ្ចូលពាក្យសម្ងាត់របស់អ្នកមិនត្រឹមត្រូវ <xliff:g id="NUMBER_0">%1$d</xliff:g> ដង។ \n\nព្យាយាមម្ដងទៀតក្នុងរយៈពេល <xliff:g id="NUMBER_1">%2$d</xliff:g> វិនាទី។"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"អ្នកបានបញ្ចូលកូដ PIN មិនត្រឹមត្រូវចំនួន <xliff:g id="NUMBER_0">%1$d</xliff:g> ដង។ \n\n ព្យាយាមម្ដងទៀតក្នុងរយៈពេល <xliff:g id="NUMBER_1">%2$d</xliff:g> វិនាទី។"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ចាកចេញពីទំព័រនេះ"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"នៅលើទំព័រនេះ"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nតើអ្នកប្រាកដជាចង់ចេញពីទំព័រនេះឬ?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"បញ្ជាក់"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"ជំនួយ៖ ប៉ះពីរដង ដើម្បីពង្រីក និងបង្រួម។"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"បំពេញស្វ័យប្រវត្តិ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"រៀបចំការបំពេញស្វ័យប្រវត្តិ"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"បំពេញដោយស្វ័យប្រវត្តិតាមរយៈ <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"ខេត្ត"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"លេខប្រៃសណីយ៍"</string>
- <string name="autofill_state" msgid="3341725337190434069">"រដ្ឋ"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"កូដតំបន់"</string>
- <string name="autofill_county" msgid="7781382735643492173">"ប្រទេស"</string>
- <string name="autofill_island" msgid="5367139008536593734">"កោះ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ស្រុក"</string>
- <string name="autofill_department" msgid="9047276226873531529">"ផ្នែក"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parish"</string>
- <string name="autofill_area" msgid="8289022370678448983">"តំបន់"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"អានប្រវត្តិ និងចំណាំបណ្ដាញ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ឲ្យកម្មវិធីអានប្រវត្តិ URLs ទាំងអស់ដែលកម្មវិធីអ៊ីនធឺណិតបានទស្សនា ព្រមទាំងចំណាំរបស់កម្មវិធីអ៊ីនធឺណិត។ ចំណាំ៖ សិទ្ធិនេះមិនអាចត្រូវបានអនុវត្តដោយកម្មវិធីអ៊ីនធឺណិតភាគីទីបី ឬកម្មវិធីដែលមានសមត្ថភាពរុករកបណ្ដាញ។"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"សរសេរចំណាំ និងប្រវត្តិបណ្ដាញ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"ឲ្យកម្មវិធីកែប្រវត្តិកម្មវិធីអ៊ីនធឺណិត ឬចំណាំដែលមានក្នុងកុំព្យូទ័របន្ទះរបស់អ្នក។ វាអាចឲ្យកម្មវិធីលុប ឬកែទិន្នន័យកម្មវិធីអ៊ីនធឺណិត។ ចំណាំ៖ សិទ្ធិនេះអាចកត់សម្គាល់ថាត្រូវបានអនុវត្តដោយកម្មវិធីអ៊ីនធឺណិតភាគីទីបី ឬកម្មវិធីផ្សេងដែលមានសមត្ថភាពរុករកបណ្ដាញ។"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"អនុញ្ញាតឱ្យកម្មវិធីកែប្រវត្តិ ឬចំណាំរបស់កម្មវិធីរុករកតាមអ៊ីនធឺណិត ដែលបានរក្សាទុកនៅក្នុងឧបករណ៍ Android TV របស់អ្នក។ សកម្មភាពនេះអាចអនុញ្ញាតឱ្យកម្មវិធីលុប ឬកែទិន្នន័យរបស់កម្មវិធីរុករកតាមអ៊ីនធឺណិត។ ចំណាំ៖ ការអនុញ្ញាតនេះប្រហែលជាមិនអាចអនុវត្តដោយកម្មវិធីរុករកតាមអ៊ីនធឺណិតរបស់ភាគីទីបី ឬកម្មវិធីផ្សេងទៀតដែលមានសមត្ថភាពរុករកតាមអ៊ីនធឺណិតបានទេ។"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"ឲ្យកម្មវិធីកែប្រវត្តិ ឬចំណាំរបស់កម្មវិធីអ៊ីនធឺណិតដែលបានរក្សាទុកក្នុងទូរស័ព្ទរបស់អ្នក។ កម្មវិធីព្យាបាទអាចប្រើវាដើម្បីលុប ឬកែទិន្នន័យនៃកម្មវិធីអ៊ីនធឺណិតរបស់អ្នក។ ចំណាំ៖ សិទ្ធិនេះអាចត្រូវបានបង្ខំដោយកម្មវិធីអ៊ីនធឺណិតភាគីទីបី ឬកម្មវិធីផ្សេងដែលមានសមត្ថភាពរុករកបណ្ដាញ។ស"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"កំណត់សំឡេងរោទ៍"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ឲ្យកម្មវិធីកំណត់សំឡេងរោទ៍ក្នុងកម្មវិធីនាឡិការោទ៍បានដំឡើង។ កម្មវិធីនាឡិការោទ៍មួយចំនួនអាចមិនអនុវត្តលក្ខណៈនេះ។"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"បន្ថែមសារជាសំឡេង"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ឲ្យកម្មវិធីបន្ថែមសារទៅប្រអប់ទទួលសារជាសំឡេងរបស់អ្នក។"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"កែសិទ្ធិទីតាំងភូមិសាស្ត្ររបស់កម្មវិធីអ៊ីនធឺណិត"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ឲ្យកម្មវិធីកែសិទ្ធិទីតាំងភូមិសាស្ត្ររបស់កម្មវិធីអ៊ីនធឺណិត។ កម្មវិធីព្យាបាទអាចប្រើវា ដើម្បីឲ្យផ្ញើព័ត៌មានទីតាំងទៅតំបន់បណ្ដាញដោយបំពាន។"</string>
- <string name="save_password_message" msgid="2146409467245462965">"តើអ្នកចង់ឲ្យកម្មវិធីអ៊ីនធឺណិតចងចាំពាក្យសម្ងាត់នេះ?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"មិនមែនឥឡូវ"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"ចងចាំ"</string>
- <string name="save_password_never" msgid="6776808375903410659">"កុំ"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"អ្នកមិនមានសិទ្ធិ ដើម្បីបើកទំព័រនេះ។"</string>
- <string name="text_copied" msgid="2531420577879738860">"បានចម្លងអត្ថបទទៅក្ដារតម្បៀតខ្ទាស់។"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលពី <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"បានដាក់ចូល <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ពីឃ្លីបបតរបស់អ្នក"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលអត្ថបទដែលអ្នកបានចម្លង"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលរូបភាពដែលអ្នកបានចម្លង"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលខ្លឹមសារដែលអ្នកបានចម្លង"</string>
<string name="more_item_label" msgid="7419249600215749115">"ច្រើនទៀត"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"ម៉ឺនុយ +"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"អ្នកអាចប្ដូរវាពេលក្រោយក្នុងការកំណត់ > កម្មវិធី"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"អនុញ្ញាតជានិច្ច"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"កុំអនុញ្ញាត"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"បានដកស៊ីមចេញ"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"មិនអាចប្រើបណ្ដាញទូរសព្ទចល័តបានទេ រហូតទាល់តែអ្នកចាប់ផ្ដើមឡើងវិញដោយប្រើស៊ីមដែលមានសុពលភាព។"</string>
<string name="sim_done_button" msgid="6464250841528410598">"រួចរាល់"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"បានបញ្ចូលស៊ីម"</string>
<string name="sim_added_message" msgid="6602906609509958680">"ចាប់ផ្ដើមឧបករណ៍របស់អ្នកឡើងវិញ ដើម្បីចូលដំណើរការបណ្ដាញចល័ត។"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ចាប់ផ្ដើមឡើងវិញ"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"បើកដំណើរការសេវាកម្មទូរសព្ទចល័ត"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"ឥឡូវស៊ីមកាតត្រូវបានបិទ។ បញ្ចូលកូដ PUK ដើម្បីបន្ត។ ចំពោះព័ត៌មានលម្អិតទាក់ទងក្រុមហ៊ុនបញ្ជូនរបស់អ្នក។"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"បញ្ចូលកូដ PIN ដែលចង់បាន"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"បញ្ជាក់កូដ PIN ដែលចង់បាន"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"កំពុងដោះសោស៊ីម…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"កូដ PIN មិនត្រឹមត្រូវ។"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"បញ្ចូលកូដ PIN ដែលមានពី ៤ ដល់ ៨ លេខ។"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"លេខកូដ PUK គួរតែមាន ៨ខ្ទង់"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"លុបចេញ"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"បង្កើនកម្រិតសំឡេងលើសពីកម្រិតបានផ្ដល់យោបល់?\n\nការស្ដាប់នៅកម្រិតសំឡេងខ្លាំងយូរអាចធ្វើឲ្យខូចត្រចៀក។"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"សូមប្រុងប្រយ័ត្ន\nអ្នកបានលើសបរិមាណរលកសញ្ញាសំឡេងឮខ្លាំងដែលមនុស្សអាចស្ដាប់តាមកាសបានដោយសុវត្ថិភាពក្នុងរយៈពេលមួយសប្ដាហ៍។\n\nការស្ដាប់លើសដែនកំណត់នេះនឹងបណ្ដាលឱ្យខូចត្រចៀករបស់អ្នកជាអចិន្ត្រៃយ៍។"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"សូមប្រុងប្រយ័ត្ន\nអ្នកបានលើសបរិមាណរលកសញ្ញាសំឡេងឮខ្លាំងចំនួន 5 ដង ដែលមនុស្សអាចស្ដាប់តាមកាសបានដោយសុវត្ថិភាពក្នុងរយៈពេលមួយសប្ដាហ៍។\n\nកម្រិតសំឡេងត្រូវបានបន្ថយ ដើម្បីការពារត្រចៀករបស់អ្នក។"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"កម្រិតដែលអ្នកកំពុងស្ដាប់មេឌៀអាចបណ្ដាលឱ្យខូចត្រចៀក នៅពលស្ដាប់ក្នុងរយៈពេលយូរ។\n\nការបន្តចាក់នៅកម្រិតនេះក្នុងរយៈពេលយូរអាចធ្វើឱ្យត្រចៀករបស់អ្នកខូច។"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"សូមប្រុងប្រយ័ត្ន\nបច្ចុប្បន្ន អ្នកកំពុងស្ដាប់ខ្លឹមសារឮខ្លាំងដែលបានចាក់នៅកម្រិតគ្មានសុវត្ថិភាព។\n\nការបន្តស្ដាប់ឮខ្លាំងបែបនេះនឹងធ្វើឱ្យត្រចៀករបស់អ្នកខូចជាអចិន្ត្រៃយ៍។"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ប្រើប្រាស់ផ្លូវកាត់ភាពងាយស្រួល?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"នៅពេលបើកផ្លូវកាត់ ការចុចប៊ូតុងកម្រិតសំឡេងទាំងពីររយៈពេល 3 វិនាទីនឹងចាប់ផ្តើមមុខងារភាពងាយប្រើ។"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"បើកផ្លូវកាត់សម្រាប់មុខងារភាពងាយស្រួលឬ?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"បិទផ្លូវកាត់"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ប្រើប្រាស់ផ្លូវកាត់"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"បញ្ច្រាសពណ៌"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"ការកែតម្រូវពណ៌"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"មុខងារប្រើដៃម្ខាង"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ពន្លឺតិចខ្លាំង"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"អនុញ្ញាតឱ្យកម្មវិធីដៃគូបញ្ជូនសារដៃគូទៅកាន់ឧបករណ៍ផ្សេងទៀត។"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"ចាប់ផ្តើមសេវាកម្មផ្ទៃខាងមុខពីផ្ទៃខាងក្រោយ"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"អនុញ្ញាតឱ្យកម្មវិធីដៃគូចាប់ផ្តើមសេវាកម្មផ្ទៃខាងមុខពីផ្ទៃខាងក្រោយ។"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"អាចប្រើមីក្រូហ្វូនបាន"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"មីក្រូហ្វូនត្រូវបានទប់ស្កាត់"</string>
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index be4c5bc..3d8301c 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"ನೀವು ಟೈಪ್ ಮಾಡಿದ ಪಿನ್ ಗಳು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ."</string>
<string name="invalidPin" msgid="7542498253319440408">"4 ರಿಂದ 8 ಸಂಖ್ಯೆಗಳಿರುವ ಪಿನ್ ಟೈಪ್ ಮಾಡಿ."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಂಖ್ಯೆಗಳಿರುವ PUK ಟೈಪ್ ಮಾಡಿ."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"ನಿಮ್ಮ SIM PUK ಲಾಕ್ ಆಗಿದೆ. ಅದನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲು PUK ಕೋಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM ನ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಲು PUK2 ಅನ್ನು ಟೈಪ್ ಮಾಡಿ."</string>
<string name="enablePin" msgid="2543771964137091212">"ಯಶಸ್ವಿಯಾಗಿಲ್ಲ, ಸಿಮ್/RUIM ಲಾಕ್ ಸಕ್ರಿಯಗೊಳಿಸಿ."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one"> ಸಿಮ್ ಲಾಕ್ ಆಗುವುದಕ್ಕಿಂತ ಮೊದಲು ನಿಮ್ಮಲ್ಲಿ <xliff:g id="NUMBER_1">%d</xliff:g> ಪ್ರಯತ್ನಗಳು ಬಾಕಿ ಉಳಿದಿವೆ.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಹಿನ್ನೆಲೆ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಅಂತ್ಯಗೊಳಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದು ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಚಾಲನೆಯನ್ನು ನಿಲ್ಲಿಸುವುದಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಮೇಲೆ ಕಾಣಿಸಿಕೊಳ್ಳಬಹುದು"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಅಥವಾ ಪರದೆಯ ಇತರೆ ಭಾಗಗಳ ಮೇಲೆ ಕಾಣಿಸಿಕೊಳ್ಳಬಹುದು. ಇದು ಸಾಮಾನ್ಯ ಅಪ್ಲಿಕೇಶನ್ ಬಳಕೆಯ ಮೂಲಕ ಹಸ್ತಕ್ಷೇಪ ಮಾಡಬಹುದು ಮತ್ತು ಇತರೆ ಅಪ್ಲಿಕೇಶನ್ ಗೋಚರಿಸುವ ರೀತಿಯಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ಇತರ ಆ್ಯಪ್ಗಳ ಓವರ್ಲೇಗಳನ್ನು ಮರೆಮಾಡಿ"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"ಇತರ ಆ್ಯಪ್ಗಳಿಂದ ರಚಿಸಲ್ಪಡುವ ಓವರ್ಲೇಗಳು ಈ ಆ್ಯಪ್ನಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳದಂತೆ ಮರೆಮಾಡಲು ಸಿಸ್ಟಮ್ಗೆ ಈ ಆ್ಯಪ್ ವಿನಂತಿಸಬಹುದು."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ಹಿನ್ನಲೆಯಲ್ಲಿ ರನ್ ಮಾಡಿ"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಹಿನ್ನಲೆಯಲ್ಲಿ ರನ್ ಆಗಬಹುದು. ಇದು ಬ್ಯಾಟರಿಯನ್ನು ವೇಗವಾಗಿ ಬರಿದಾಗಿಸಬಹುದು."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"ಹಿನ್ನಲೆಯಲ್ಲಿ ಡೇಟಾ ಬಳಕೆ ಮಾಡಿ"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ಎಲ್ಲ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಡೇಟಾಗೆ ಅನ್ಲಾಕ್ ಮಾಡಿ"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"ಗರಿಷ್ಠ ಫೇಸ್ ಅನ್ಲಾಕ್ ಪ್ರಯತ್ನಗಳು ಮೀರಿವೆ"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM ಇಲ್ಲ"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ಟ್ಯಾಬ್ಲೆಟ್ನಲ್ಲಿ SIM ಇಲ್ಲ."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"ನಿಮ್ಮ Android TV ಸಾಧನದಲ್ಲಿ SIM ಇಲ್ಲ."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ಫೋನ್ನಲ್ಲಿ SIM ಇಲ್ಲ."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM ಅನ್ನು ಸೇರಿಸಿ."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM ಕಾಣೆಯಾಗಿದೆ ಅಥವಾ ರೀಡ್ ಆಗುತ್ತಿಲ್ಲ. SIM ಅನ್ನು ಸೇರಿಸಿ."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM ನಿಷ್ಪ್ರಯೋಜಕವಾಗಿದೆ."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"ನಿಮ್ಮ SIM ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.\n ಬೇರೊಂದು SIM ಗಾಗಿ ನಿಮ್ಮ ವೈರ್ಲೆಸ್ ಸೇವಾ ಪೂರೈಕೆದಾರರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"ಹಿಂದಿನ ಟ್ರ್ಯಾಕ್"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"ಮುಂದಿನ ಟ್ರ್ಯಾಕ್"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"ವಿರಾಮಗೊಳಿಸು"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"ವೇಗವಾಗಿ ಮುಂದಕ್ಕೆ"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"ತುರ್ತು ಕರೆಗಳು ಮಾತ್ರ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ನೆಟ್ವರ್ಕ್ ಲಾಕ್ ಮಾಡಲಾಗಿದೆ"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM PUK ಲಾಕ್ ಆಗಿದೆ."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ಬಳಕೆದಾರರ ಮಾರ್ಗಸೂಚಿಯನ್ನು ನೋಡಿ ಅಥವಾ ಗ್ರಾಹಕರ ಸಹಾಯ ಕೇಂದ್ರಕ್ಕೆ ಸಂಪರ್ಕಿಸಿ."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM ಲಾಕ್ ಆಗಿದೆ."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"ನಿಮ್ಮ ಅನ್ಲಾಕ್ ನಮೂನೆಯನ್ನುನೀವು <xliff:g id="NUMBER_0">%1$d</xliff:g> ಬಾರಿ ತಪ್ಪಾಗಿ ಚಿತ್ರಿಸಿರುವಿರಿ. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನೀವು <xliff:g id="NUMBER_0">%1$d</xliff:g> ಬಾರಿ ತಪ್ಪಾಗಿ ಟೈಪ್ ಮಾಡಿರುವಿರಿ. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"ನಿಮ್ಮ ಪಿನ್ ಅನ್ನು ನೀವು <xliff:g id="NUMBER_0">%1$d</xliff:g> ಬಾರಿ ತಪ್ಪಾಗಿ ಟೈಪ್ ಮಾಡಿರುವಿರಿ. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ಈ ಪುಟದಿಂದ ಹೊರಬನ್ನಿ"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ಈ ಪುಟದಲ್ಲಿಯೇ ಇರಿ"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nನೀವು ಈ ಪುಟದಿಂದಾಚೆಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"ದೃಢೀಕರಿಸಿ"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"ಸಲಹೆ: ಝೂಮ್ ಇನ್ ಮತ್ತು ಝೂಮ್ ಔಟ್ ಮಾಡಲು ಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ಸ್ವಯಂತುಂಬುವಿಕೆ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"ಸ್ವಯಂತುಂಬುವಿಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ಸಹಾಯದಿಂದ ಸ್ವಯಂ-ಭರ್ತಿ"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"ಪ್ರಾಂತ್ಯ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"ಪೋಸ್ಟಲ್ ಕೋಡ್"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ರಾಜ್ಯ"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ಪಿನ್ ಕೋಡ್"</string>
- <string name="autofill_county" msgid="7781382735643492173">"ರಾಷ್ಟ್ರ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"ದ್ವೀಪ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ಜಿಲ್ಲೆ"</string>
- <string name="autofill_department" msgid="9047276226873531529">"ವಿಭಾಗ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"ಆಡಳಿತ ಪ್ರಾಂತ್ಯ"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"ಪ್ಯಾರಿಷ್"</string>
- <string name="autofill_area" msgid="8289022370678448983">"ಪ್ರದೇಶ"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"ಎಮಿರೇಟ್"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ನಿಮ್ಮ ವೆಬ್ ಬುಕ್ಮಾರ್ಕ್ಗಳು ಮತ್ತು ಇತಿಹಾಸವನ್ನು ಓದಿ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ಬ್ರೌಸರ್ ಭೇಟಿ ನೀಡಿರುವಂತಹ ಎಲ್ಲಾ URL ಗಳ ಇತಿಹಾಸವನ್ನು ಮತ್ತು ಬ್ರೌಸರ್ನ ಎಲ್ಲಾ ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ರೀಡ್ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ. ಗಮನಿಸಿ: ಈ ಅನುಮತಿಯನ್ನು ಮೂರನೇ-ವ್ಯಕ್ತಿ-ಬ್ರೌಸರ್ಗಳು ಅಥವಾ ವೆಬ್ ಬ್ರೌಸಿಂಗ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"ವೆಬ್ ಬುಕ್ಮಾರ್ಕ್ಗಳು ಮತ್ತು ಇತಿಹಾಸವನ್ನು ಬರೆಯಿರಿ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿರುವ ಬ್ರೌಸರ್ನ ಇತಿಹಾಸ ಅಥವಾ ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಬ್ರೌಸರ್ನ ಡೇಟಾವನ್ನು ಅಳಿಸಲು ಅಥವಾ ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ಕಲ್ಪಿಸಿಕೊಡಬಹುದು. ಗಮನಿಸಿ: ಈ ಅನುಮತಿಯನ್ನು ವೆಬ್ ಬ್ರೌಸಿಂಗ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಮೂರನೇ-ವ್ಯಕ್ತಿ ಬ್ರೌಸರ್ಗಳು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ನಿಮ್ಮ Android TV ಸಾಧನದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಬ್ರೌಸರ್ನ ಇತಿಹಾಸ ಅಥವಾ ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಬ್ರೌಸರ್ ಡೇಟಾವನ್ನು ಅಳಿಸಲು ಅಥವಾ ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸಬಹುದು. ಗಮನಿಸಿ: ವೆಬ್ ಬ್ರೌಸಿಂಗ್ ಸಾಮರ್ಥ್ಯಗಳ ಜೊತೆಗೆ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಬ್ರೌಸರ್ಗಳ ಅಥವಾ ಇತರ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಮೂಲಕ ಈ ಅನುಮತಿಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸದಿರಬಹುದು."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿರುವ ಬ್ರೌಸರ್ನ ಇತಿಹಾಸ ಅಥವಾ ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಬ್ರೌಸರ್ನ ಡೇಟಾವನ್ನು ಅಳಿಸಲು ಅಥವಾ ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ಕಲ್ಪಿಸಿಕೊಡಬಹುದು. ಗಮನಿಸಿ: ಈ ಅನುಮತಿಯನ್ನು ವೆಬ್ ಬ್ರೌಸಿಂಗ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಮೂರನೇ-ವ್ಯಕ್ತಿ ಬ್ರೌಸರ್ಗಳು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ಅಲಾರಮ್ ಹೊಂದಿಸಿ"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ಸ್ಥಾಪಿಸಲಾದ ಅಲಾರಮ್ ಗಡಿಯಾರ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಅಲಾರಮ್ ಹೊಂದಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಕೆಲವು ಅಲಾರಮ್ ಗಡಿಯಾರ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸದಿರಬಹುದು."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ಧ್ವನಿಮೇಲ್ ಸೇರಿಸಿ"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ನಿಮ್ಮ ದ್ವನಿಮೇಲ್ ಇನ್ಬಾಕ್ಸ್ಗೆ ಸಂದೇಶಗಳನ್ನು ಸೇರಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ಬ್ರೌಸರ್ ಜಿಯೋಲೊಕೇಶನ್ ಅನುಮತಿಗಳನ್ನು ಮಾರ್ಪಡಿಸಿ"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ಬ್ರೌಸರ್ನ ಜಿಯೋಲೊಕೇಶನ್ ಅನುಮತಿಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ದುರುದ್ದೇಶಪೂರಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಅನಿರ್ಬಂಧಿತ ವೆಬ್ ಸೈಟ್ಗಳಿಗೆ ಸ್ಥಳ ಮಾಹಿತಿ ಕಳುಹಿಸುವುದನ್ನು ಅನುಮತಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದು."</string>
- <string name="save_password_message" msgid="2146409467245462965">"ಈ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಬ್ರೌಸರ್ ನೆನಪಿನಲ್ಲಿರಿಸಿಕೊಳ್ಳಬೇಕೆಂದು ನೀವು ಬಯಸುತ್ತೀರಾ?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ಸದ್ಯಕ್ಕೆ ಬೇಡ"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"ನೆನಪಿಡಿ"</string>
- <string name="save_password_never" msgid="6776808375903410659">"ಎಂದಿಗೂ ಬೇಡ"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ಈ ಪುಟವನ್ನು ತೆರೆಯಲು ನೀವು ಅನುಮತಿಯನ್ನು ಹೊಂದಿಲ್ಲ."</string>
- <string name="text_copied" msgid="2531420577879738860">"ಪಠ್ಯವನ್ನು ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ನಕಲಿಸಲಾಗಿದೆ."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ಅನ್ನು <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, ನಿಮ್ಮ ಕ್ಲಿಪ್ಬೋರ್ಡ್ನಲ್ಲಿನ ಡೇಟಾವನ್ನು ಅಂಟಿಸಿದೆ"</string>
- <string name="pasted_text" msgid="4298871641549173733">"ನೀವು ನಕಲಿಸಿರುವ ಪಠ್ಯವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string>
- <string name="pasted_image" msgid="4729097394781491022">"ನೀವು ನಕಲಿಸಿರುವ ಚಿತ್ರವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string>
- <string name="pasted_content" msgid="646276353060777131">"ನೀವು ನಕಲಿಸಿರುವ ವಿಷಯವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string>
<string name="more_item_label" msgid="7419249600215749115">"ಇನ್ನಷ್ಟು"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"ಮೆನು+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1224,7 +1175,7 @@
<string name="whichApplicationLabel" msgid="7852182961472531728">"ಕ್ರಿಯೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ"</string>
<string name="whichViewApplication" msgid="5733194231473132945">"ಇದರ ಮೂಲಕ ತೆರೆಯಿರಿ"</string>
<string name="whichViewApplicationNamed" msgid="415164730629690105">"%1$s ಜೊತೆಗೆ ತೆರೆಯಿರಿ"</string>
- <string name="whichViewApplicationLabel" msgid="7367556735684742409">"ತೆರೆ"</string>
+ <string name="whichViewApplicationLabel" msgid="7367556735684742409">"ತೆರೆಯಿರಿ"</string>
<string name="whichOpenHostLinksWith" msgid="7645631470199397485">"ಇವುಗಳ ಮೂಲಕ <xliff:g id="HOST">%1$s</xliff:g> ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string>
<string name="whichOpenLinksWith" msgid="1120936181362907258">"ಇವುಗಳ ಮೂಲಕ ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string>
<string name="whichOpenLinksWithApp" msgid="6917864367861910086">"<xliff:g id="APPLICATION">%1$s</xliff:g> ಮೂಲಕ ಲಿಂಕ್ಗಳನ್ನು ತೆರೆಯಿರಿ"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"ನೀವು ಇದನ್ನು ನಂತರದಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್ಗಳು > ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ಎಂದಿಗೂ ಅನುಮತಿಸದಿರು"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"ನೀವು ಮಾನ್ಯವಾದ SIM ನೊಂದಿಗೆ ಮರುಪ್ರಾರಂಭಿಸುವವರೆಗೆ ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿರುವುದಿಲ್ಲ."</string>
<string name="sim_done_button" msgid="6464250841528410598">"ಮುಗಿದಿದೆ"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ"</string>
<string name="sim_added_message" msgid="6602906609509958680">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಪ್ರವೇಶಿಸಲು ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ಮರುಪ್ರಾರಂಭಿಸು"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"ಮೊಬೈಲ್ ಸೇವೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"ಇದೀಗ ಸಿಮ್ ನಿಷ್ಕ್ರಿಯಗೊಂಡಿದೆ. ಮುಂದುವರೆಯಲು PUK ಕೋಡ್ ನಮೂದಿಸಿ. ವಿವರಗಳಿಗಾಗಿ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"ಅಗತ್ಯವಿರುವ ಪಿನ್ ಕೋಡ್ ನಮೂದಿಸಿ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"ಬಯಸಿರುವ ಪಿನ್ ಕೋಡ್ ದೃಢೀಕರಿಸಿ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ತಪ್ಪಾದ ಪಿನ್ ಕೋಡ್."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4 ರಿಂದ 8 ಸಂಖ್ಯೆಗಳಿರುವ ಪಿನ್ ಟೈಪ್ ಮಾಡಿ."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK ಕೋಡ್ 8 ಸಂಖ್ಯೆಗಳನ್ನು ಹೊಂದಿರಬೇಕು."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ತೆಗೆದುಹಾಕು"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ವಾಲ್ಯೂಮ್ ಅನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾದ ಮಟ್ಟಕ್ಕಿಂತಲೂ ಹೆಚ್ಚು ಮಾಡುವುದೇ?\n\nದೀರ್ಘ ಅವಧಿಯವರೆಗೆ ಹೆಚ್ಚಿನ ವಾಲ್ಯೂಮ್ನಲ್ಲಿ ಆಲಿಸುವುದರಿಂದ ನಿಮ್ಮ ಆಲಿಸುವಿಕೆ ಸಾಮರ್ಥ್ಯಕ್ಕೆ ಹಾನಿಯುಂಟು ಮಾಡಬಹುದು."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"ಎಚ್ಚರಿಕೆ,\nಒಬ್ಬ ವ್ಯಕ್ತಿ ಒಂದು ವಾರದಲ್ಲಿ ಹೆಡ್ಫೋನ್ಗಳ ಮೂಲಕ ಗಟ್ಟಿಯಾದ ವಾಲ್ಯೂಮ್ನಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿ ಆಲಿಸಬಹುದಾದ ಮಿತಿಯನ್ನು ನೀವು ಮೀರಿದ್ದೀರಿ.\n\nಈ ಮಿತಿಯನ್ನು ಮೀರಿದರೆ ನಿಮ್ಮ ಆಲಿಸುವ ಸಾಮರ್ಥ್ಯಕ್ಕೆ ಶಾಶ್ವತ ಹಾನಿಯುಂಟಾಗುತ್ತದೆ."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"ಎಚ್ಚರಿಕೆ,\nಒಬ್ಬ ವ್ಯಕ್ತಿ ಒಂದು ವಾರದಲ್ಲಿ ಹೆಡ್ಫೋನ್ಗಳ ಮೂಲಕ ಸುರಕ್ಷಿತವಾಗಿ ಆಲಿಸಬಹುದಾದ ಗಟ್ಟಿಯಾದ ವಾಲ್ಯೂಮ್ನ 5 ಪಟ್ಟು ಮಿತಿಯನ್ನು ನೀವು ಮೀರಿದ್ದೀರಿ.\n\nನಿಮ್ಮ ಆಲಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ರಕ್ಷಿಸುವುದಕ್ಕಾಗಿ ವಾಲ್ಯೂಮ್ ಅನ್ನು ಕಡಿಮೆಗೊಳಿಸಲಾಗಿದೆ."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"ನೀವು ಪ್ರಸ್ತುತ ಆಲಿಸುತ್ತಿರುವ ವಾಲ್ಯೂಮ್ನಲ್ಲಿ ಮಾಧ್ಯಮವನ್ನು ಆಲಿಸುವುದನ್ನು ನೀವು ದೀರ್ಘಕಾಲ ಮುಂದುವರಿಸಿದರೆ, ನಿಮ್ಮ ಆಲಿಸುವ ಸಾಮರ್ಥ್ಯಕ್ಕೆ ಹಾನಿಯುಂಟಾಗಬಹುದು.\n\nಇದೇ ವಾಲ್ಯೂಮ್ನಲ್ಲಿ ದೀರ್ಘಕಾಲದವರೆಗೆ ಮಾಧ್ಯಮವನ್ನು ಪ್ಲೇ ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸಿದರೆ ನಿಮ್ಮ ಆಲಿಸುವ ಸಾಮರ್ಥ್ಯಕ್ಕೆ ಹಾನಿಯುಂಟಾಗಬಹುದು."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"ಎಚ್ಚರಿಕೆ,\nನೀವು ಪ್ರಸ್ತುತ ಅಸುರಕ್ಷಿತ ವಾಲ್ಯೂಮ್ನಲ್ಲಿ ಪ್ಲೇ ಆಗುತ್ತಿರುವ ಮಾಧ್ಯಮವನ್ನು ಆಲಿಸುತ್ತಿದ್ದೀರಿ.\n\nಇಷ್ಟು ಗಟ್ಟಿಯಾದ ವಾಲ್ಯೂಮ್ನಲ್ಲಿ ಆಲಿಸುವುದನ್ನು ಮುಂದುವರಿಸಿದರೆ, ನಿಮ್ಮ ಆಲಿಸುವ ಸಾಮರ್ಥ್ಯಕ್ಕೆ ಶಾಶ್ವತ ಹಾನಿಯುಂಟಾಗುತ್ತದೆ."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ಪ್ರವೇಶಿಸುವಿಕೆ ಶಾರ್ಟ್ಕಟ್ ಬಳಸುವುದೇ?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ಶಾರ್ಟ್ಕಟ್ ಆನ್ ಆಗಿರುವಾಗ, ಎರಡೂ ವಾಲ್ಯೂಮ್ ಬಟನ್ಗಳನ್ನು 3 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಒತ್ತಿದರೆ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯವೊಂದು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯಗಳಿಗಾಗಿ ಶಾರ್ಟ್ಕಟ್ ಆನ್ ಮಾಡಬೇಕೇ?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ಶಾರ್ಟ್ಕಟ್ ಆಫ್ ಮಾಡಿ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ಬಣ್ಣ ವಿಲೋಮ"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"ಬಣ್ಣದ ತಿದ್ದುಪಡಿ"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ಒಂದು ಕೈ ಮೋಡ್"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ಇನ್ನಷ್ಟು ಮಬ್ಬು"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳಿ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"ಇತರ ಸಾಧನಗಳಿಗೆ ಕಂಪ್ಯಾನಿಯನ್ ಸಂದೇಶಗಳನ್ನು ತಲುಪಿಸಲು ಕಂಪ್ಯಾನಿಯನ್ ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"ಮುನ್ನೆಲೆ ಸೇವೆಗಳನ್ನು ಹಿನ್ನೆಲೆಯಿಂದ ಪ್ರಾರಂಭಿಸಿ"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"ಮುನ್ನೆಲೆ ಸೇವೆಗಳನ್ನು ಹಿನ್ನೆಲೆಯಿಂದ ಪ್ರಾರಂಭಿಸಲು ಕಂಪ್ಯಾನಿಯನ್ ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"ಮೈಕ್ರೊಫೋನ್ ಲಭ್ಯವಿದೆ"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"ಮೈಕ್ರೊಫೋನ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 5c96487..3448b36 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"입력한 PIN이 일치하지 않습니다."</string>
<string name="invalidPin" msgid="7542498253319440408">"4~ 8자리 숫자로 된 PIN을 입력하세요."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8자리 이상의 숫자 PUK를 입력합니다."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM이 PUK 잠김 상태입니다. 잠금 해제하려면 PUK 코드를 입력하세요."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM을 차단 해제하려면 PUK2를 입력하세요."</string>
<string name="enablePin" msgid="2543771964137091212">"실패했습니다. SIM/RUIM 잠금을 사용 설정하세요."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g>번 더 실패하면 SIM이 잠깁니다.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"앱이 다른 앱의 백그라운드 프로세스를 종료할 수 있도록 허용합니다. 이 경우 다른 앱이 실행 중지될 수 있습니다."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"이 앱은 다른 앱 위에 표시될 수 있음"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"이 앱은 다른 앱이나 화면의 다른 부분 위에 표시될 수 있습니다. 이로 인해 일반적인 앱 사용이 방해받을 수 있으며 다른 앱이 표시되는 방식이 변경될 수 있습니다."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"다른 앱 오버레이 숨기기"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"이 앱은 앱에서 발생한 오버레이가 위에 표시되지 않게 숨기도록 시스템에 요청할 수 있습니다."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"백그라운드에서 실행"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"이 앱은 백그라운드에서 실행될 수 있으며 이로 인해 배터리가 더 빨리 소모될 수도 있습니다."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"백그라운드에서 데이터 사용"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"다시 시도"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"모든 기능 및 데이터 잠금 해제"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"얼굴 인식 잠금 해제 최대 시도 횟수를 초과했습니다."</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM 없음"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"태블릿에 SIM이 없습니다."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV 기기에 SIM이 없습니다."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"휴대전화에 SIM이 없습니다."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM을 추가하세요."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM이 없거나 SIM을 읽을 수 없습니다. SIM을 추가하세요."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM을 사용할 수 없습니다."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM이 영구적으로 비활성화되었습니다.\n 다른 SIM을 사용하려면 무선 서비스 제공업체에 문의하시기 바랍니다."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"이전 트랙"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"다음 트랙"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"일시중지"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"빨리 감기"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"긴급 통화만 허용"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"네트워크 잠김"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM이 PUK 잠김 상태입니다."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"사용자 가이드를 참조하거나 고객지원팀에 문의하세요."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM이 잠김 상태입니다."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM 잠금 해제 중…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"잠금해제 패턴을 <xliff:g id="NUMBER_0">%1$d</xliff:g>회 잘못 그렸습니다. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g>초 후에 다시 시도하세요."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"비밀번호를 <xliff:g id="NUMBER_0">%1$d</xliff:g>회 잘못 입력했습니다. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g>초 후에 다시 시도하세요."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"PIN을 <xliff:g id="NUMBER_0">%1$d</xliff:g>회 잘못 입력했습니다. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g>초 후에 다시 시도하세요."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"이 페이지 나가기"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"이 페이지에 머무르기"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\n다른 페이지로 이동하시겠습니까?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"확인"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"도움말: 확대/축소하려면 두 번 탭합니다."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"자동완성"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"자동완성 설정..."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> 자동 완성"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$3$2$1"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"도"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"우편번호"</string>
- <string name="autofill_state" msgid="3341725337190434069">"시/도"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"우편번호"</string>
- <string name="autofill_county" msgid="7781382735643492173">"구/군"</string>
- <string name="autofill_island" msgid="5367139008536593734">"섬"</string>
- <string name="autofill_district" msgid="6428712062213557327">"구"</string>
- <string name="autofill_department" msgid="9047276226873531529">"지역"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"현"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"군"</string>
- <string name="autofill_area" msgid="8289022370678448983">"주소"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"에미리트"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"웹 북마크 및 기록 읽기"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"앱이 브라우저가 방문한 모든 URL의 기록과 모든 브라우저 북마크를 읽을 수 있도록 허용합니다. 참고: 이 권한은 타사 브라우저 또는 브라우저 기능을 가진 기타 애플리케이션에 적용되지 않습니다."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"웹 북마크 및 기록 쓰기"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"앱이 태블릿에 저장된 브라우저 기록 또는 북마크를 수정할 수 있도록 허용합니다. 이 경우 앱이 브라우저 데이터를 삭제 또는 수정할 수 있습니다. 참고: 이 권한은 타사 브라우저 또는 브라우저 기능을 가진 기타 애플리케이션에 적용되지 않습니다."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"앱이 Android TV 기기에 저장된 브라우저 기록 또는 북마크를 수정하도록 허용합니다. 이렇게 하면 앱이 브라우저 데이터를 삭제하거나 수정할 수 있습니다. 참고: 이 권한은 타사 브라우저 또는 웹 탐색 기능이 있는 기타 애플리케이션에 적용되지 않을 수 있습니다."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"앱이 휴대전화에 저장된 브라우저 기록 또는 북마크를 수정할 수 있도록 허용합니다. 이 경우 앱이 브라우저 데이터를 삭제 또는 수정할 수 있습니다. 참고: 이 권한은 타사 브라우저 또는 브라우저 기능을 가진 기타 애플리케이션에 적용되지 않습니다."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"알람 설정"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"앱이 설치된 알람 시계 앱에서 알람을 설정할 수 있도록 허용합니다. 일부 알람 시계 앱에는 이 기능이 구현되지 않을 수 있습니다."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"음성사서함 추가"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"앱이 음성사서함에 메시지를 추가할 수 있도록 허용합니다."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"브라우저 위치 정보 권한 수정"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"앱이 브라우저의 위치 정보 권한을 수정할 수 있도록 허용합니다. 이 경우 악성 앱이 이 기능을 이용하여 임의의 웹사이트에 위치 정보를 보낼 수 있습니다."</string>
- <string name="save_password_message" msgid="2146409467245462965">"브라우저에 이 비밀번호를 저장하시겠습니까?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"나중에"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"저장"</string>
- <string name="save_password_never" msgid="6776808375903410659">"안함"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"페이지를 열 수 있는 권한이 없습니다."</string>
- <string name="text_copied" msgid="2531420577879738860">"텍스트가 클립보드에 복사되었습니다."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 앱이 <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> 앱에서 복사하여 붙여넣음"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 클립보드 데이터를 붙여넣음"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 텍스트를 붙여넣음"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 이미지를 붙여넣음"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 콘텐츠를 붙여넣음"</string>
<string name="more_item_label" msgid="7419249600215749115">"더보기"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"나중에 설정 > 애플리케이션에서 변경할 수 있습니다."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"항상 허용"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"허용 안함"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM 제거됨"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"유효한 SIM을 삽입하여 다시 시작할 때까지 모바일 네트워크를 사용할 수 없습니다."</string>
<string name="sim_done_button" msgid="6464250841528410598">"완료"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM 추가됨"</string>
<string name="sim_added_message" msgid="6602906609509958680">"모바일 네트워크에 액세스하려면 기기를 다시 시작하세요."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"다시 시작"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"모바일 서비스 활성화"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"이제 SIM을 사용할 수 없습니다. 계속하려면 PUK 코드를 입력합니다. 자세한 내용은 이동통신사에 문의하세요."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"원하는 PIN 코드 입력"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"원하는 PIN 코드 확인"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM 잠금 해제 중…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN 코드가 잘못되었습니다."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4~8자리 숫자로 된 PIN을 입력하세요."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK 코드는 8자리 숫자여야 합니다."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"삭제"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"권장 수준 이상으로 볼륨을 높이시겠습니까?\n\n높은 볼륨으로 장시간 청취하면 청력에 손상이 올 수 있습니다."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"경고:\n1주일 동안 헤드폰을 통해 안전하게 들을 수 있는 큰 소리 신호량을 초과했습니다.\n\n이 한도를 초과하면 청력이 영구적으로 손상됩니다."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"경고:\n1주일 동안 헤드폰을 통해 안전하게 들을 수 있는 큰 소리 신호량을 5배 초과했습니다.\n\n청력을 보호하기 위해 볼륨을 낮췄습니다."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"지금과 같은 수준으로 오랫동안 미디어를 청취할 경우 청력 손상이 발생할 수 있습니다.\n\n지금과 같은 수준으로 장기적으로 계속 들으면 청력이 손상될 수 있습니다."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"경고:\n현재 안전하지 않은 수준으로 크게 콘텐츠를 재생하여 듣고 있습니다.\n\n지금과 같은 수준으로 계속해서 들으면 청력이 영구적으로 손상됩니다."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"접근성 단축키를 사용하시겠습니까?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"단축키가 사용 설정된 경우 볼륨 버튼 두 개를 동시에 3초간 누르면 접근성 기능이 시작됩니다."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"접근성 기능 바로가기를 사용 설정하시겠습니까?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"단축키 사용 중지"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"단축키 사용"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"색상 반전"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"색상 보정"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"한 손 모드"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"더 어둡게"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 설정되었습니다."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"호환 앱에서 호환 메시지를 다른 기기로 전달하도록 허용합니다."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"백그라운드에서 포그라운드 서비스 시작"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"호환 앱이 백그라운드에서 포그라운드 서비스를 시작할 수 있게 허용합니다."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"마이크 사용 가능"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"마이크가 차단됨"</string>
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index c9b7c51..7168a60 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Терилген PIN\'дер дал келбейт."</string>
<string name="invalidPin" msgid="7542498253319440408">"Узундугу 4төн 8ге чейинки сандан турган PIN-кодду териңиз."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Узундугу 8 же көбүрөөк сандан турган PUK-кодду териңиз."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM картаңыз PUK менен кулпуланган. Кулпусун ачуу үчүн PUK кодун териңиз."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM картаны бөгөттөн чыгаруу үчүн PUK2 кодун териңиз."</string>
<string name="enablePin" msgid="2543771964137091212">"Оңунан чыкпады, SIM/RUIM бөгөттөөсүн жандырыңыз."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Сизде SIM кулпуланганга чейин <xliff:g id="NUMBER_1">%d</xliff:g> аракет калды.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Колдонмого башка колдонмолордун фондо иштеп жаткан процесстерин токтотуу уруксатын берет. Бул башка колдонмолордун иштебей калышына алып келиши мүмкүн."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Бул колдонмо башка колдонмолордун үстүнөн көрүнүшү мүмкүн"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Бул колдонмо башка колдонмолордун же экрандын башка бөлүгүнүн үстүндө көрүнүшү мүмкүн. Ал колдонмолорду пайдаланууга же алардын көрсөтүлүшүнө тоскоолдук жаратышы мүмкүн."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"башка колдонмолордун билдирүүлөрүн үстүнө койбой, жашыруу"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Бул колдонмо системадан башка кызматтардын билдирүүлөрүн үстүнө койбой, жашыруусун суранышы мүмкүн."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"фондо иштей берсин"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Бул колдонмо фондо иштей берет. Батареяңыз тез эле отуруп калышы мүмкүн."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"фондо маалыматтарды өткөрө берсин"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Дагы аракет кылыңыз"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Элементтердин жана дайындардын кулпусун ачуу"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Жүзүнөн таанып ачуу аракеттеринин чегинен аштыңыз"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM карта жок"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Планшетте SIM карта жок."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV түзмөгүңүздө SIM карта жок."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Телефондо SIM карта жок."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM карта кошуңуз."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM карта жок же окулбайт. SIM карта кошуңуз."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Жараксыз SIM карта."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM картаңыз биротоло өчүрүлдү.\n Башка SIM карта алуу үчүн зымсыз кызмат көрсөтүүчүгө кайрылыңыз."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Мурунку трек"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Кийинки трек"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Тындыруу"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Алдыга түрүү"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Кырсыктаганда гана чалуу"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Тармак кулпуланган"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM карта PUK менен кулпуланган."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Колдонуучунун нускамасын караңыз же Кардарларды тейлөө борборуна кайрылыңыз."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM карта кулпуланган."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM картанын кулпусу ачылууда…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Графикалык ачкычты <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тарттыңыз. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> секундадан кийин дагы аракет кылып көрүңүз."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Сырсөзүңүздү <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> секундадан кийин дагы аракет кылып көрүңүз."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"PIN-кодуңузду <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> секундадан кийин дагы аракет кылып көрүңүз."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Бул барактан кетүү"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Бул баракта калуу"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nБул барактан кетүүнү каалаганыңыз аныкпы?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Ырастоо"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Кыйытма: Чоңойтуп-кичирейтиш үчүн эки жолу басыңыз."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Авто-толтуруу"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Автотолтурууну тууралоо"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> менен автотолтуруу"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Провинция"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Индекс"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Штат"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP код"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Округ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Арал"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Район"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Бөлүм"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Префектура"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Пэриш"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Аймак"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Эмират"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"кыстармаларыңыз менен издөө таржымалыңызды карап көрүңүз"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Колдонмого Серепчи ачкан URLдердин тарыхын жана Серепчинин бүктөмөлөрүн окууга уруксат берет. Эскертүү: бул уруксат үчүнчү тараптык интернет-серепчилерге, же интернетке кирүү мүмкүнчүлүгү бар колдонмолорго таасир этпеши мүмкүн."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"кыстармалар жана издөө таржымалын өзгөртүү"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Колдонмого планшетиңизде сакталган Серепчинин тарыхын жана Серепчинин бүктөмөлөрүн өзгөртүү уруксатын берет. Бул колдонмого Серепчинин берилиштерин өчүрүү же өзгөртүү уруксатын берет. Эскертүү: бул уруксат үчүнчү тараптык интернет-серепчилерге, же интернетке кирүү мүмкүнчүлүгү бар колдонмолорго таасир этпеши мүмкүн."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Колдонмого Android TV түзмөгүңүздө сакталган Серепчи таржымалын же кыстармаларды өзгөртүүгө уруксат берет. Бул колдонмого Серепчи дайындарын тазалап же өзгөртүүгө уруксат бериши мүмкүн. Эскертүү: бул уруксат үчүнчү тараптын серепчилери же веб серепчинин мүмкүнчүлүктөрү бар башка колдонмолор аркылуу колдонулбайт."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Колдонмого телефонуңузда сакталган Серепчинин тарыхын жана Серепчинин бүктөмөлөрүн өзгөртүү уруксатын берет. Бул колдонмого Серепчинин берилиштерин өчүрүү же өзгөртүү уруксатын берет. Эскертүү: бул уруксат үчүнчү тараптык интернет-серепчилерге, же интернетке кирүү мүмкүнчүлүгү бар колдонмолорго таасир этпеши мүмкүн."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ойготкуч коюу"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Колдонмого ойготкуч саат колдонмосуна үн ишаратын коюу мүмкүнчүлүгүн берет. Айрым ойготкуч саат колдонмолорунда бул мүмкүнчүлүк иштебеши мүмкүн."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"үнкат кошуу"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Колдонмого үн почтаңыздын кирүү кутусуна билдирүүлөрдү кошуу мүмкүнчүлүгүн берет."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Серепчинин гео-жайгашуу уруксаттарын өзгөртүү"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Колдонмого Серепчинин гео-жайгашуу уруксаттарын өзгөртүү мүмкүнчүлүгүн берет. Кесепеттүү колдонмолор ушундай мүмкүнчүлүктөн пайдаланып ар кайсы вебсайтка жайгашкан жер жөнүндө маалыматтын жөнөтүлүшүнө уруксат берип салышы мүмкүн."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Серепчи бул сырсөздү эстеп калсынбы?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Азыр эмес"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Эсиңизде болсун"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Эч качан"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Бул бетти ачууга уруксат берилген эмес."</string>
- <string name="text_copied" msgid="2531420577879738860">"Текст алмашуу буферине көчүрүлдү."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> колдонмосунан чапталды"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Алмашуу буфериндеги нерселер <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> колдонмосуна жайгаштырылды"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн текст чапталды"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн сүрөт чапталды"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн мазмун чапталды"</string>
<string name="more_item_label" msgid="7419249600215749115">"Дагы"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Меню+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Муну кийин Тууралоо > Колдонмолордон өзгөртө аласыз"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Дайыма уруксат берүү"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Эч качан уруксат берилбесин"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM карта чыгарылды"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Мобилдик тармакты колдонуу үчүн жарактуу SIM картаны салып, түзмөктү өчүрүп күйгүзүңүз."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Даяр"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM карта кошулду"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Мобилдик түйүнкгө жетки алуу үчүн, түзмөгүңүздү өчүрүп кайра жандырыңыз."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Өчүрүп күйгүзүү"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Мобилдик кызматты жандыруу"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-карта азыр жарактан чыкты. Улантыш үчүн, PUK-кодду киргизиңиз. Көбүрөөк маалымат үчүн операторуңузга кайрылыңыз."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Сиз каалаган PIN-кодду териңиз"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Сиз каалаган PIN-кодду ырастаңыз"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM картанын кулпусу ачылууда…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN-код туура эмес."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Узундугу 4төн 8ге чейинки сандан турган PIN-кодду териңиз."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-код 8 сандан турушу керек."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Өчүрүү"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Сунушталган деңгээлден да катуулатып уккуңуз келеби?\n\nМузыканы узакка чейин катуу уксаңыз, угууңуз начарлап кетиши мүмкүн."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Эскертүү,\nБир аптанын ичинде ден соолукка зыян келтирбестен гарнитура аркылуу уга турган катуу үн сигналдарынын чегинен аштыңыз.\n\nБул чектен ашуу угууңуздун биротоло бузулушуна алып келет."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Эскертүү,\nБир аптанын ичинде ден соолукка зыян келтирбестен гарнитура аркылуу уга турган катуу үн сигналдарынын чегинен 5 жолу аштыңыз.\n\nУгууңузду коргоо үчүн медианын үнү кичирейтилди."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Медианы узак убакыт ушундай катуулукта уга берсеңиз, угууңуз начарлашы мүмкүн.\n\nУшундай катуулукта өтө көп уксаңыз, угууңуз бузулат."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Эскертүү,\nУчурдагы медианын үнүн өтө катуу кылып угуп жатасыз.\n\nМындай катуулукта уга берсеңиз, угууңуз биротоло бузулат."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ыкчам иштетесизби?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Атайын мүмкүнчүлүктөр функциясын пайдалануу үчүн ал күйгүзүлгөндө, үндү катуулатып/акырындаткан эки баскычты тең 3 секунддай коё бербей басып туруңуз."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Атайын мүмкүнчүлүктөрдүн ыкчам баскычын иштетесизби?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Кыска жолду өчүрүү"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Кыска жолду колдонуу"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Түстөрдү инверсиялоо"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Түстөрдү тууралоо"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Бир кол режими"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Кошумча караңгылатуу"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> күйгүзүлдү."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Көмөкчү колдонмого билдирүүлөрдү башка түзмөктөргө жөнөтүүгө уруксат берет."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Активдүү кызматтарды фондо иштетүү"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Көмөкчү колдонмого активдүү кызматтарды фондо иштетүүгө уруксат берет."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Микрофон жеткиликтүү"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Микрофон бөгөттөлгөн"</string>
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 318945b..e5b4b45 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"ລະຫັດ PIN ທີ່ທ່ານພິມໄປນັ້ນບໍ່ກົງກັນ."</string>
<string name="invalidPin" msgid="7542498253319440408">"ພິມລະຫັດ PIN ທີ່ມີ 4 ຫາ 8 ໂຕເລກ."</string>
<string name="invalidPuk" msgid="8831151490931907083">"ພິມລະຫັດ PUK ທີ່ມີ 8 ໂຕເລກ ຫຼືຫຼາຍກວ່ານັ້ນ."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"ຊິມຂອງທ່ານຖືກລັອກດ້ວຍ PUK. ໃຫ້ພິມລະຫັດ PUK ເພື່ອປົດລັອກມັນ."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"ພິມ PUK2 ເພື່ອປົດລັອກຊິມ."</string>
<string name="enablePin" msgid="2543771964137091212">"ບໍ່ສຳເລັດ, ເປີດນໍາໃຊ້ການລັອກຂອງ SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">ທ່ານສາມາດລອງໄດ້ອີກ <xliff:g id="NUMBER_1">%d</xliff:g> ເທື່ອກ່ອນທີ່ SIM ຂອງທ່ານຈະຖືກລັອກ.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"ອະນຸຍາດໃຫ້ແອັບຯປິດໂປຣເຊສພື້ນຫຼັງຂອງແອັບຯອື່ນໄດ້. ນີ້ອາດເຮັດໃຫ້ແອັບຯອື່ນນັ້ນຢຸດການເຮັດວຽກໄປນຳ."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"This app can appear on top of other apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ເຊື່ອງການວາງທັບແອັບອື່ນ"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"ແອັບນີ້ສາມາດຮ້ອງຂໍໃຫ້ລະບົບເຊື່ອງການວາງທັບທີ່ມາຈາກແອັບທີ່ບໍ່ໃຫ້ສະແດງຢູ່ເທິງສຸດຂອງມັນ."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ເຮັດວຽກໃນພື້ນຫຼັງ"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ແອັບນີ້ສາມາດເຮັດວຽກໃນພື້ນຫຼັງໄດ້. ນີ້ອາດເຮັດໃຫ້ໃຊ້ແບັດເຕີຣີໝົດໄວຂຶ້ນ."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"ໃຊ້ອິນເຕີເນັດໃນພື້ນຫຼັງ"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"ທົດລອງອີກຄັ້ງ"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ປົດລັອກຄຸນສົມບັດ ແລະ ຂໍ້ມູນທັງໝົດ"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"ຄວາມພະຍາຍາມປົດລັອກດ້ວຍໜ້ານັ້ນ ເກີນຈຳນວນທີ່ກຳນົດແລ້ວ"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"ບໍ່ມີຊິມ"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ບໍ່ມີຊິມໃນແທັບເລັດ."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"ບໍ່ມີຊິມໃນອຸປະກອນ Android TV ຂອງທ່ານ."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ບໍ່ມີຊິມໃນໂທລະສັບ."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"ເພີ່ມຊິມ."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"ບໍ່ມີຊິມ ຫຼື ອ່ານຊິມບໍ່ໄດ້. ເພີ່ມຊິມ."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ຊິມໃຊ້ບໍ່ໄດ້."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"ຊິມຂອງທ່ານຖືກປິດໃຊ້ຢ່າງຖາວອນແລ້ວ.\n ຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການໂທລະສັບໄຮ້ສາຍຂອງທ່ານເພື່ອຂໍຊິມໃໝ່."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"ເພງກ່ອນໜ້າ"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"ເພງຕໍ່ໄປ"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"ຢຸດຊົ່ວຄາວ"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"ເລື່ອນໄປໜ້າ"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"ສຳລັບການໂທສຸກເສີນເທົ່ານັ້ນ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ເຄືອຂ່າຍຖືກລັອກ"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"ຊິມຖືກລັອກດ້ວຍ PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ເບິ່ງຄູ່ມືຜູ່ໃຊ້ ຫຼືຕິດຕໍ່ສູນບໍລິການລູກຄ້າ."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"ຊິມຖືກລັອກຢູ່."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"ກຳລັງປົດລັອກຊິມ…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"ທ່ານແຕ້ມຮູບແບບປົດລັອກບໍ່ຖືກ <xliff:g id="NUMBER_0">%1$d</xliff:g> ເທື່ອແລ້ວ. \n\nລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%2$d</xliff:g> ວິນາທີ."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"ທ່ານພິມລະຫັດຜ່ານຜິດ <xliff:g id="NUMBER_0">%1$d</xliff:g> ເທື່ອແລ້ວ. \n\nໃຫ້ລອງໃໝ່ອີກຄັ້ງໃນອີກ <xliff:g id="NUMBER_1">%2$d</xliff:g> ວິນາທີ."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"ທ່ານພິມລະຫັດ PIN ຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%1$d</xliff:g> ເທື່ອແລ້ວ. \n\nລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%2$d</xliff:g> ວິນາທີ."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ອອກຈາກໜ້ານີ້"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ຢູ່ທີ່ໜ້ານີ້ຕໍ່ໄປ"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nທ່ານແນ່ໃຈບໍ່ວ່າຕ້ອງການອອກໄປຈາກໜ້ານີ້?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"ຢືນຢັນ"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"ເຄັດລັບ: ແຕະສອງຄັ້ງເພື່ອຊູມເຂົ້າ ແລະຊູມອອກ."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ຕື່ມຂໍ້ມູນອັດຕະໂນມັດ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"ຕັ້ງການຕື່ມຂໍ້ມູນອັດຕະໂນມັດ"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"ຕື່ມຂໍ້ມູນອັດຕະໂນມັດດ້ວຍ <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"ແຂວງ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"ລະຫັດໄປສະນີ"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ລັດ"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ລະຫັດ ZIP"</string>
- <string name="autofill_county" msgid="7781382735643492173">"ປະເທດ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"ເກາະ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ເມືອງ"</string>
- <string name="autofill_department" msgid="9047276226873531529">"ພະແນກ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"ເຂດປົກຄອງ"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"ເຂດການປົກຄອງທ້ອງຖິ່ນ"</string>
- <string name="autofill_area" msgid="8289022370678448983">"ພື້ນທີ່"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"ອີມິເຣດ"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ອ່ານບຸກມາກ ແລະປະຫວັດເວັບໄຊຂອງທ່ານ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ອະນຸຍາດໃຫ້ແອັບຯ ອ່ານປະຫວັດຂອງ URL ທັງໝົດທີ່ໂປຣແກຣມທ່ອງເວັບເຄີຍເຂົ້າເບິ່ງ ຮວມທັງ ບຸກມາກທັງໝົດຂອງໂປຣແກຣມທ່ອງເວັບນຳ. ໝາຍເຫດ: ການກຳນົດສິດນີ້ ອາດບໍ່ໄດ້ບັງຄັບໃຊ້ໃນໂປຣແກຣມທ່ອງເວັບພາກສ່ວນທີສາມ ຫຼືແອັບພລິເຄຊັນອື່ນທີ່ມີຄວາມສາມາດທ່ອງເວັບ."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"ຂຽນຂໍ້ມູນບຸກມາກ ແລະປະຫວັດເວັບໄຊ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂປະຫວັດໃນການທ່ອງເວັບ ຫຼືບຸກມາກທີ່ບັນທຶກໃນແທັບເລັດຂອງທ່ານ. ນີ້ອາດອະນຸຍາດໃຫ້ແອັບຯລຶບ ຫຼືແກ້ໄຂຂໍ້ມູນໂປຣແກຣມທ່ອງເວັບໄດ້. ໝາຍເຫດ: ການອະນຸຍາດນີ້ອາດເປັນຜົນບັງຄັບໃຊ້ ຈາກໂປຣແກຣມທ່ອງເວັບພາຍນອກ ຫຼືແອັບພລິເຄຊັນອື່ນທີ່ສາມາດເຂົ້າເວັບໄດ້."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ອະນຸຍາດໃຫ້ແອັບແກ້ໄຂປະຫວັດຂອງໂປຣແກຣມທ່ອງເວບ ຫຼື ບຸກມາກທີ່ບັນທຶກໄວ້ຢູ່ອຸປະກອນ Android TV ຂອງທ່ານ. ຄຸນສົມບັດນີ້ສາມາດອະນຸຍາດໃຫ້ແອັບລຶບ ຫຼື ແກ້ໄຂໂປຣໄຟລ໌ທ່ອງເວັບໄດ້. ໝາຍເຫດ: ສິດອະນຸຍາດນີ້ອາດບໍ່ຖືກບັງຄັບໃຊ້ໂດຍໂປຣແກຣມທ່ອງເວັບພາກສ່ວນທີສາມ ຫຼື ແອັບພລິເຄຊັນອື່ນທີ່ຄວາມສາມາດໃນການເຮັດວຽກຮ່ວມກັບຂອງໂປຣແກຣມທ່ອງເວັບ."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"ອະນຸຍາດໃຫ້ແອັບຯ ແກ້ໄຂປະຫວັດໂປຣແກຣມທ່ອງເວັບ ຫຼືບຸກມາກທີ່ເກັບໄວ້ໃນໂທລະສັບຂອງທ່ານ. ນີ້ອາດອະນຸຍາດໃຫ້ແອັບຯລຶບ ຫຼືແກ້ໄຂຂໍ້ມູນໂປຣແກຣມທ່ອງເວັບ. ໝາຍເຫດ: ການກຳນົດສິດນີ້ ອາດບໍ່ໄດ້ຖືກບັງຄັບໃຊ້ໃນໂປຣແກຣມທ່ອງເວັບພາກສ່ວນທີສາມ ຫຼືແອັບພລິເຄຊັນອື່ນທີ່ມີຄວາມສາມາດທ່ອງເວັບ."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ຕັ້ງການແຈ້ງເຕືອນ"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ອະນຸຍາດໃຫ້ແອັບຯຕັ້ງໂມງປຸກໃນແອັບຯໂມງປຸກທີ່ຕິດຕັ້ງໄວ້. ບາງແອັບຯໂມງປຸກອາດບໍ່ມີຄຸນສົມບັດແບບນີ້ເທື່ອ."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ເພີ່ມຂໍ້ຄວາມສຽງ"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ອະນຸຍາດໃຫ້ແອັບຯ ສາມາດເພີ່ມຂໍ້ຄວາມໃສ່ອິນບັອກຂໍ້ຄວາມສຽງຂອງທ່ານໄດ້."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ແກ້ໄຂສິດທາງສະຖານທີ່ພູມສາດຂອງໂປຣແກຣມທ່ອງເວັບ"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂ ການອະນຸຍາດຕຳແໜ່ງທາງພູມສາດ ຂອງໂປຣແກຣມທ່ອງເວັບ. ແອັບຯທີ່ເປັນອັນຕະລາຍອາດໃຊ້ຄຸນສົມບັດນີ້ ເພື່ອສົ່ງຂໍ້ມູນສະຖານທີ່ໄປໃຫ້ເວັບໄຊຕ່າງໆໄດ້."</string>
- <string name="save_password_message" msgid="2146409467245462965">"ທ່ານຕ້ອງການໃຫ້ໂປຣແກຣມທ່ອງເວັບນີ້ຈື່ລະຫັດຜ່ານນີ້ບໍ່?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ບໍ່ແມ່ນຕອນນີ້"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"ຈື່ໄວ້"</string>
- <string name="save_password_never" msgid="6776808375903410659">"ບໍ່ຕ້ອງຈື່"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເປີດໜ້ານີ້."</string>
- <string name="text_copied" msgid="2531420577879738860">"ສຳເນົາຂໍ້ຄວາມໃສ່ຄລິບບອດແລ້ວ."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"ວາງ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ຈາກ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ແລ້ວ"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງຈາກຄລິບບອດຂອງທ່ານແລ້ວ"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງຂໍ້ຄວາມທີ່ທ່ານສຳເນົາແລ້ວ"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງຮູບທີ່ທ່ານສຳເນົາແລ້ວ"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງເນື້ອຫາທີ່ທ່ານສຳເນົາແລ້ວ"</string>
<string name="more_item_label" msgid="7419249600215749115">"ເພີ່ມເຕີມ"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"ເມນູ+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"ທ່ານສາມາດປ່ຽນແປງໂຕເລືອກນີ້ໃນພາຍຫຼັງໄດ້ໃນ ການຕັ້ງຄ່າ > ແອັບຯ"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"ອະນຸຍາດທຸກຄັ້ງ"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ບໍ່ອະນຸຍາດເດັດຂາດ"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"ເອົາຊິມອອກແລ້ວ"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"ເຄືອຂ່າຍມືຖືຈະບໍ່ສາມາດໃຊ້ໄດ້ຈົນກວ່າທ່ານຈະປິດເປີດຄືນໃໝ່ດ້ວຍຊິມທີ່ຖືກຕ້ອງ."</string>
<string name="sim_done_button" msgid="6464250841528410598">"ແລ້ວໆ"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"ເພີ່ມຊິມແລ້ວ"</string>
<string name="sim_added_message" msgid="6602906609509958680">"ປິດແລ້ວເປີດອຸປະກອນຂອງທ່ານ ເພື່ອເຂົ້າເຖິງເຄືອຂ່າຍມືຖື."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ຣີສະຕາດ"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"ເປີດໃຊ້ບໍລິການມືຖື"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"ຊິມຖືກປິດການນຳໃຊ້ແລ້ວ. ປ້ອນລະຫັດ PUK ເພື່ອດຳເນີນການຕໍ່. ຕິດຕໍ່ຜູ່ໃຫ້ບໍລິການສຳລັບລາຍລະອຽດ."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"ໃສ່ລະຫັດ PIN ທີ່ຕ້ອງການ."</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"ຢືນຢັນລະຫັດ PIN ທີ່ຕ້ອງການ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"ກຳລັງປົດລັອກຊິມ…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"ພິມລະຫັດ PIN ຄວາມຍາວ 4 ເຖິງ 8 ໂຕເລກ."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"ລະຫັດ PUK ຄວນມີ 8 ໂຕເລກ"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ລຶບອອກ"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ເພີ່ມລະດັບສຽງໃຫ້ເກີນກວ່າລະດັບທີ່ແນະນຳບໍ?\n\nການຮັບຟັງສຽງໃນລະດັບທີ່ສູງເປັນໄລຍະເວລາດົນອາດເຮັດໃຫ້ການຟັງຂອງທ່ານມີບັນຫາໄດ້."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"ຄຳເຕືອນ,\nທ່ານມີສັນຍານສຽງດັງເກີນຈຳນວນທີ່ຄົນເຮົາສາມາດຟັງໄດ້ຢ່າງປອດໄພໃນໜຶ່ງອາທິດຜ່ານຫູຟັງ.\n\nການໃຊ້ເກີນຂີດຈຳກັດນີ້ຈະທຳລາຍການໄດ້ຍິນຂອງທ່ານຢ່າງຖາວອນ."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"ຄຳເຕືອນ,\nທ່ານມີສັນຍານສຽງດັງເກີນ 5 ເທື່ອຂອງສັນຍານສຽງທີ່ຄົນເຮົາສາມາດຟັງໄດ້ຢ່າງປອດໄພໃນໜຶ່ງອາທິດຜ່ານຫູຟັງ.\n\nໄດ້ຫຼຸດລະດັບສຽງລົງແລ້ວເພື່ອປົກປ້ອງການໄດ້ຍິນຂອງທ່ານ."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"ລະດັບທີ່ທ່ານກໍາລັງຟັງສື່ສາມາດສົ່ງຜົນໃຫ້ເກີດຄວາມເສຍຫາຍຕໍ່ການໄດ້ຍິນເມື່ອຖືກຄົງໄວ້ເປັນເວລາດົນນານ.\n\nການສືບຕໍ່ຫຼິ້ນໃນລະດັບນີ້ເປັນເວລາດົນອາດເຮັດໃຫ້ການໄດ້ຍິນຂອງທ່ານເສຍຫາຍໄດ້."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"ຄຳເຕືອນ,\nປັດຈຸບັນນີ້ທ່ານກຳລັງຟັງເນື້ອຫາທີ່ມີສຽງດັງໃນລະດັບທີ່ບໍ່ປອດໄພ.\n\nການສືບຕໍ່ຟັງສຽງດັງນີ້ຈະທໍາລາຍການໄດ້ຍິນຂອງທ່ານຢ່າງຖາວອນ."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ໃຊ້ປຸ່ມລັດການຊ່ວຍເຂົ້າເຖິງບໍ?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ເມື່ອເປີດໃຊ້ທາງລັດແລ້ວ, ການກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ 3 ວິນາທີຈະເປັນການເລີ່ມຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ເປີດໃຊ້ທາງລັດສຳລັບຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງບໍ?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ປິດປຸ່ມລັດ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ໃຊ້ປຸ່ມລັດ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ການປີ້ນສີ"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"ການແກ້ໄຂສີ"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ໂໝດມືດຽວ"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ຫຼຸດແສງເປັນພິເສດ"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ເປີດໃຊ້ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ແລ້ວ."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"ອະນຸຍາດໃຫ້ແອັບຊ່ວຍເຫຼືອສົ່ງຂໍ້ຄວາມຊ່ວຍເຫຼືອໄປຫາອຸປະກອນອື່ນໆ."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"ເລີ່ມໃຊ້ບໍລິການທີ່ເຮັດວຽກຢູ່ເບື້ອງໜ້າໂດຍໃຫ້ອະນຸຍາດຈາກເບື້ອງຫຼັງ"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"ອະນຸຍາດຈາກເບື້ອງຫຼັງໃຫ້ແອັບຊ່ວຍເຫຼືອເລີ່ມໃຊ້ບໍລິການທີ່ເຮັດວຽກຢູ່ເບື້ອງໜ້າ."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"ໄມໂຄຣໂຟນພ້ອມໃຫ້ນຳໃຊ້"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"ໄມໂຄຣໂຟນຖືກບລັອກໄວ້"</string>
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 688e881..7292bbb 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Įvesti PIN kodai neatitinka."</string>
<string name="invalidPin" msgid="7542498253319440408">"Įveskite PIN kodą, sudarytą iš 4–8 skaičių."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Įveskite 8 skaitmenų ar ilgesnį PUK kodą."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Jūsų SIM kortelė yra užrakinta PUK kodu. Jei norite ją atrakinti, įveskite PUK kodą."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Kad panaikintumėte SIM kortelės blokavimą, pabandykite įvesti PUK2 kodą."</string>
<string name="enablePin" msgid="2543771964137091212">"Nepavyko. Įgalinti SIM / RUIM užraktą."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Liko <xliff:g id="NUMBER_1">%d</xliff:g> bandymas. Tada SIM kortelė bus užrakinta.</item>
@@ -390,6 +388,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Leidžiama programai baigti kitų programų fone vykdomus procesus. Dėl to gali būti sustabdytos kitos programos."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Ši programa gali būti rodoma virš kitų programų"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Ši programa gali būti rodoma virš kitų programų arba kitų ekrano sričių. Tai gali trukdyti įprastai naudoti programas ir pakeisti kitų programų rodymo būdą."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"slėpti kitų programų perdangas"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ši programa gali teikti užklausą, kad sistema paslėptų perdangas iš viršuje rodomų programų."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"vykdyti fone"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Ši programa gali būti vykdoma fone. Dėl to akumuliatorius gali būti greičiau išeikvojamas."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"naudoti duomenis fone"</string>
@@ -965,22 +965,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Bandykite dar kartą"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Atrakinę pasieksite visas funkcijas ir duomenis"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Viršijote maksimalų atrakinimo pagal veidą bandymų skaičių"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Nėra SIM kortelės"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Planšetiniame kompiuteryje nėra SIM kortelės."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"„Android TV“ įrenginyje nėra SIM kortelės."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Telefone nėra SIM kortelės."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Įdėkite SIM kortelę."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Trūksta SIM kortelės arba ji neskaitoma. Įdėkite SIM kortelę."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Nenaudojama SIM kortelė."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Jūsų SIM kortelė visam laikui išjungta.\n Susisiekite su belaidžio ryšio paslaugos teikėju, kad gautumėte naują SIM kortelę."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Ankstesnis takelis"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Kitas takelis"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pristabdyti"</string>
@@ -990,13 +982,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Sukti pirmyn"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Tik pagalbos skambučiai"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Tinklas užrakintas"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM kortelė užrakinta PUK kodu."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Žr. naudotojo vadovą arba susisiekite su klientų priežiūros tarnyba."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM kortelė užrakinta."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Atrakinama SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Neteisingai apibrėžėte atrakinimo modelį <xliff:g id="NUMBER_0">%1$d</xliff:g> k. \n\nBandykite dar kartą po <xliff:g id="NUMBER_1">%2$d</xliff:g> sek."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Neteisingai įvedėte slaptažodį <xliff:g id="NUMBER_0">%1$d</xliff:g> k. \n\nBandykite dar kartą po <xliff:g id="NUMBER_1">%2$d</xliff:g> sek."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"PIN kodą neteisingai įvedėte <xliff:g id="NUMBER_0">%1$d</xliff:g> k. \n\nBandykite dar kartą po <xliff:g id="NUMBER_1">%2$d</xliff:g> sek."</string>
@@ -1069,50 +1058,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Išeiti iš šio puslapio"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Likti šiame puslapyje"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nTikrai norite išeiti iš šio puslapio?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Patvirtinti"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Patarimas: palieskite dukart, kad padidintumėte ar sumažintumėte mastelį."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Automatinis pildymas"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Nust. aut. pild."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automatinis pildymas naudojant „<xliff:g id="SERVICENAME">%1$s</xliff:g>“"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincija"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Pašto kodas"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Valstija"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Pašto kodas"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Apskritis"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Sala"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Rajonas"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamentas"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektūra"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parapija"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Sritis"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emyratas"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"skaityti žiniatinklio žymes ir istoriją"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Leidžiama programai skaityti visų URL, kuriais buvo lankytasi naršyklėje, ir visų naršyklės žymių istoriją. Pastaba: šis leidimas nesuteikiamas trečiosios šalies naršyklėms ar kitoms programoms, kuriomis galima naršyti žiniatinklį."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"rašyti žiniatinklio žymes ir istoriją"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Leidžiama programai keisti naršyklės istoriją ar žymes, išsaugotas planšetiniame kompiuteryje. Dėl to programai gali būti leidžiama ištrinti ar keisti naršyklės duomenis. Pastaba: šis leidimas nesuteikiamas trečiosios šalies naršyklėms ar kitoms programoms, kuriomis galima naršyti žiniatinklį."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Programai leidžiama keisti „Android TV“ įrenginyje saugomą naršyklės istoriją arba žymes. Taip programai gali būti leidžiama ištrinti arba pakeisti naršyklės duomenis. Pastaba: šio leidimo gali nepritaikyti trečiųjų šalių naršyklės arba kitos programos, kurias naudojant galima naršyti žiniatinklyje."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Leidžiama programai keisti naršyklės istoriją ar žymes, išsaugotas telefone. Dėl to programai gali būti leidžiama ištrinti ar keisti naršyklės duomenis. Pastaba: šis leidimas nesuteikiamas trečiosios šalies naršyklėms ar kitoms programoms, kuriomis galima naršyti žiniatinklį."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"nustatyti pavojaus signalą"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Leidžiama programai nustatyti signalą įdiegtoje žadintuvo programoje. Kai kuriose žadintuvo programose ši funkcija gali nebūti nevykdoma."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"pridėti balso pašto pranešimų"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Leidžia programai pridėti pranešimų prie jūsų balso pašto gautųjų."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"keisti naršyklės geografinės vietos leidimus"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Leidžiama programai keisti naršyklės geografinės vietos leidimus. Kenkėjiškos programos gali tai naudoti, kad leistų siųsti vietos informaciją abejotinoms svetainėms."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Ar norite, kad naršyklė atsimintų šį slaptažodį?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ne dabar"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Atsiminti"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Niekada"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Neturite leidimo atidaryti šį puslapį."</string>
- <string name="text_copied" msgid="2531420577879738860">"Tekstas nukopijuotas į iškarpinę."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijuota iš „<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>“"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijuota iš iškarpinės"</string>
- <string name="pasted_text" msgid="4298871641549173733">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą tekstą"</string>
- <string name="pasted_image" msgid="4729097394781491022">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą vaizdą"</string>
- <string name="pasted_content" msgid="646276353060777131">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą turinį"</string>
<string name="more_item_label" msgid="7419249600215749115">"Daugiau"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Meniu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"„Meta“ +"</string>
@@ -1380,13 +1331,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Tai vėliau galėsite pakeisti skiltyje „Nustatymai“ > „Programos“"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Visada leisti"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Niekada neleisti"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM kortelė pašalinta"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilusis tinklas bus nepasiekiamas, kol nepaleisite iš naujo įdėję tinkamą SIM kortelę."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Atlikta"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM kortelė pridėta"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Jei norite pasiekti mobiliojo ryšio tinklą, reikia iš naujo paleisti įrenginį."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Paleisti iš naujo"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Suaktyvinti mobiliojo ryšio paslaugą"</string>
@@ -1698,8 +1646,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Dabar SIM neleidžiama. Jei norite tęsti, įveskite PUK kodą. Jei reikia išsamios informacijos, susisiekite su operatoriumi."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Įveskite pageidaujamą PIN kodą"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Patvirtinkite pageidaujamą PIN kodą"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Atrakinama SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Netinkamas PIN kodas."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Įveskite PIN kodą, sudarytą iš 4–8 skaičių."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kodą turi sudaryti 8 skaičiai."</string>
@@ -1728,6 +1675,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Pašalinti"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Padidinti garsą daugiau nei rekomenduojamas lygis?\n\nIlgai klausydami dideliu garsu galite pažeisti klausą."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Įspėjimas.\nViršijote savaitės garsių garso signalų kiekį, kurio būtų saugu klausytis per ausines.\n\nViršijus šį apribojimą bus negrįžtamai pažeista jūsų klausa."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Įspėjimas.\nViršijote savaitės garsių garso signalų kiekį (penki kartai), kurio būtų saugu klausytis per ausines.\n\nGarsumas sumažintas apsaugant jūsų klausą."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Garsumas, kuriuo klausotės medijos, klausantis ilgai gali pakenkti jūsų klausai.\n\nToliau ilgai leidžiant šiuo garsumu gali būti pakenkta jūsų klausai."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Įspėjimas.\nŠiuo metu klausotės nesaugiu garsumu leidžiamo turinio.\n\nToliau klausantis tokiu garsumu leidžiamo turinio bus negrįžtamai pakenkta jūsų klausai."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Naudoti spartųjį pritaikymo neįgaliesiems klavišą?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kai spartusis klavišas įjungtas, paspaudus abu garsumo mygtukus ir palaikius 3 sekundes bus įjungta pritaikymo neįgaliesiems funkcija."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Įjungti pritaikymo neįgaliesiems funkcijų spartųjį klavišą?"</string>
@@ -1756,8 +1707,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Išjungti spartųjį klavišą"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Naudoti spartųjį klavišą"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Spalvų inversija"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Spalvų taisymas"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Vienos rankos režimas"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Itin blanku"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ įjungta."</string>
@@ -2354,8 +2304,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Leidžiama papildomai programai teikti papildomos programos pranešimus į kitus įrenginius."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Priekinio plano paslaugų paleidimas fone"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Leidžiama papildomai programai paleisti priekinio plano paslaugas fone."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofonas pasiekiamas"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofonas užblokuotas"</string>
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 8b9f27f..5a5d70e 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Ievadītie PIN neatbilst."</string>
<string name="invalidPin" msgid="7542498253319440408">"Ierakstiet PIN, kas sastāv no 4 līdz 8 cipariem."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Ierakstiet PUK kodu, kas sastāv no 8 vai vairāk cipariem."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM karte ir bloķēta ar PUK kodu. Ierakstiet PUK kodu, lai to atbloķētu."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Ierakstiet PUK2 kodu, lai atbloķētu SIM karti."</string>
<string name="enablePin" msgid="2543771964137091212">"Neizdevās. Iespējojiet SIM/RUIM bloķēšanu."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="zero">Varat mēģināt vēl <xliff:g id="NUMBER_1">%d</xliff:g> reizes. Pēdējā mēģinājuma kļūdas gadījumā SIM karte tiks bloķēta.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Ļauj lietotnei pabeigt citu lietotņu fonā darbinātos procesus. Rezultātā var tikt apturēta citu lietotņu darbība."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Šo lietotni var rādīt virs citām lietotnēm"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Šo lietotni var rādīt virs citām lietotnēm vai ekrāna daļām. Tādējādi var būt traucēta citu lietotņu izmantošana un var mainīties citu lietotņu izskats."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"Paslēpt citu lietotņu pārklājumus"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Šī lietotne drīkst pieprasīt sistēmai paslēpt citu lietotņu pārklājumus, kas citādi tiktu rādīti pāri šai lietotnei."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"darboties fonā"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Šī lietotne var darboties fonā. Tā var ātrāk pazemināt akumulatora uzlādes līmeni."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"izmantot datus fonā"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Mēģināt vēlreiz"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Atbloķēt visām funkcijām un datiem"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Ir pārsniegts maksimālais Autorizācijas pēc sejas mēģinājumu skaits."</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Nav SIM kartes"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Planšetdatorā nav SIM kartes."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV ierīcē nav SIM kartes."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Tālrunī nav SIM kartes."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Pievienojiet SIM karti."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Nav SIM kartes, vai arī to nevar nolasīt. Pievienojiet SIM karti."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM karte nav izmantojama."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Jūsu SIM karte ir neatgriezeniski deaktivizēta.\n Sazinieties ar savu bezvadu pakalpojumu sniedzēju, lai iegūtu citu SIM karti."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Iepriekšējais ieraksts"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Nākamais ieraksts"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pārtraukt"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Ātri patīt"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Tikai ārkārtas zvani"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Tīkls ir bloķēts."</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM karte ir bloķēta ar PUK kodu."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Skatiet lietotāja rokasgrāmatu vai sazinieties ar klientu apkalpošanas dienestu."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM karte ir bloķēta."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Notiek SIM kartes atbloķēšana…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Atbloķēšanas kombinācija tika nepareizi uzzīmēta <xliff:g id="NUMBER_0">%1$d</xliff:g> reizes.\n\nMēģiniet vēlreiz pēc <xliff:g id="NUMBER_1">%2$d</xliff:g> sekundēm."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Jūs esat ievadījis nepareizu paroli <xliff:g id="NUMBER_0">%1$d</xliff:g> reizes.\n\nMēģiniet vēlreiz pēc <xliff:g id="NUMBER_1">%2$d</xliff:g> sekundēm."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Jūs esat ievadījis nepareizu PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> reizes.\n\nMēģiniet vēlreiz pēc <xliff:g id="NUMBER_1">%2$d</xliff:g> sekundēm."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Pamest šo lapu"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Palikt šajā lapā"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVai tiešām vēlaties pamest šo lapu?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Apstiprināt"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Padoms. Divreiz pieskarieties, lai tuvinātu un tālinātu."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Automātiskā aizpilde"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Iest. aut. aizp."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automātiskā aizpildīšana, izmantojot pakalpojumu <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Province"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Pasta indekss"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Štats"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Pasta indekss"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Apgabals"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Sala"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Rajons"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departaments"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektūra"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Pagasts"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Reģions"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirāts"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"lasīt tīmekļa grāmatzīmes un vēsturi"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Ļauj lietotnei lasīt visu pārlūkprogrammā apmeklēto URL vēsturi un visas pārlūkprogrammas grāmatzīmes. Piezīme: šo atļauju nevar piemērot trešās puses pārlūkprogrammas vai citas lietojumprogrammas ar tīmekļa pārlūkošanas iespējām."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"rakstīt tīmekļa grāmatzīmes un vēsturi"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Ļauj lietotnei mainīt planšetdatorā saglabāto pārlūkprogrammas vēsturi vai grāmatzīmes. Tas var ļaut lietotnei dzēst vai pārveidot pārlūkprogrammas datus. Piezīme: šo atļauju nevar piemērot trešo pušu pārlūkprogrammas vai citas lietojumprogrammas ar tīmekļa pārlūkošanas iespējām."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Ļauj lietotnei modificēt Android TV ierīcē saglabāto pārlūkprogrammas vēsturi vai grāmatzīmes. Lietotne to var izmantot, lai dzēstu vai modificētu pārlūkprogrammas datus. Piezīme. Šo atļauju nevar piemērot trešo pušu pārlūkprogrammas vai citas lietojumprogrammas ar tīmekļa pārlūkošanas iespējām."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Ļauj lietotnei mainīt tālrunī saglabāto pārlūkprogrammas vēsturi vai grāmatzīmes. Tas var ļaut lietotnei dzēst vai pārveidot pārlūkprogrammas datus. Piezīme: šo atļauju nevar piemērot trešo pušu pārlūkprogrammas vai citas lietojumprogrammas ar tīmekļa pārlūkošanas iespējām."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"iestatīt modinātāju"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Ļauj lietotnei iestatīt signālu instalētajā modinātājpulksteņa lietotnē. Dažās modinātājpulksteņu lietotnēs šo funkciju, iespējams, nevar ieviest."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"pievienot balss pastu"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Ļauj lietotnei pievienot ziņojumus jūsu balss pasta iesūtnei."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"pārveidot pārlūkprogrammas ģeogrāfiskās atrašanās vietas atļaujas"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Ļauj lietotnei modificēt pārlūkprogrammas ģeogrāfiskās atrašanās vietas atļaujas. Ļaunprātīgas lietotnes to var izmantot, lai atļautu atrašanās vietas informācijas sūtīšanu uz citām vietnēm."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Vai vēlaties, lai pārlūkprogrammā tiktu saglabāta šī parole?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ne tagad"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Atcerēties"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nekad"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Jums nav atļaujas atvērt šo lapu."</string>
- <string name="text_copied" msgid="2531420577879738860">"Teksts ir kopēts uz starpliktuvi."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Lietotnē <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> tika ielīmēti dati no lietotnes <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Lietotne <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja datus no starpliktuves."</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto tekstu"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto attēlu"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto saturu"</string>
<string name="more_item_label" msgid="7419249600215749115">"Vairāk"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Izvēlne+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta taustiņš +"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Lai mainītu: Iestatījumi > Lietotnes"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Vienmēr atļaut"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Neatļaut nekad"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM karte ir izņemta"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilais tīkls nebūs pieejams līdz brīdim, kad ierīce tiks restartēta ar derīgu SIM karti."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Gatavs"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM karte ir pievienota"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Ierīces restartēšana, lai piekļūtu mobilo sakaru tīklam."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Restartēt"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivizējiet mobilo ierīci."</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM karte ir atspējota. Lai turpinātu, ievadiet PUK kodu. Lai iegūtu detalizētu informāciju, sazinieties ar mobilo sakaru operatoru."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Ievadiet vēlamo PIN kodu."</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Apstipriniet vēlamo PIN."</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Notiek SIM kartes atbloķēšana…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN kods nav pareizs."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Ievadiet PIN, kas sastāv no 4 līdz 8 cipariem."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kodā ir jābūt 8 cipariem."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Noņemt"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vai palielināt skaļumu virs ieteicamā līmeņa?\n\nIlgstoši klausoties skaņu lielā skaļumā, var tikt bojāta dzirde."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Brīdinājums!\nEsat pārsniedzis skaļu skaņas signālu apjomu, ko vienā nedēļā var droši klausīties austiņās.\n\nPārsniedzot šo ierobežojumu, jūsu dzirde neatgriezeniski pasliktināsies."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Brīdinājums!\nEsat pieckārt pārsniedzis skaļu skaņas signālu apjomu, ko vienā nedēļā var droši klausīties austiņās.\n\nSkaļums tika samazināts, lai aizsargātu jūsu dzirdi."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Ilgstoši klausoties multivides saturu šādā skaļumā, var rasties dzirdes bojājumi.\n\nJa turpināsiet ilgstoši atskaņot saturu šādā skaļumā, jums var pasliktināties dzirde."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Brīdinājums!\nJūs pašlaik klausāties saturu tik skaļi, ka tas nav droši.\n\nJa turpināsiet klausīties šādā skaļumā, jūsu dzirde neatgriezeniski pasliktināsies."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vai izmantot pieejamības saīsni?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kad īsinājumtaustiņš ir ieslēgts, nospiežot abas skaļuma pogas un 3 sekundes turot tās, tiks aktivizēta pieejamības funkcija."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Vai ieslēgt pieejamības funkciju saīsni?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Izslēgt saīsni"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Izmantot saīsni"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Krāsu inversija"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Krāsu korekcija"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Vienas rokas režīms"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Papildu aptumšošana"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika ieslēgts."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Ļauj palīglietotnei piegādāt palīgziņojumus citām ierīcēm."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Sākt priekšplāna pakalpojumus no fona"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Ļauj palīglietotnei sākt priekšplāna pakalpojumus no fona."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofons ir pieejams."</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofons ir bloķēts."</string>
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index b5ba29c..9826e9a 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Впишаните PIN-броеви не се совпаѓаат."</string>
<string name="invalidPin" msgid="7542498253319440408">"Внеси PIN од 4 до 8 броеви."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Внеси ПУК од 8 броеви или повеќе."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Вашата SIM картичка е заклучена со PUK-код. Внесете го PUK-код за да се отклучи."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Напишете го PUK2-кодот за да ја одблокирате SIM-картичката."</string>
<string name="enablePin" msgid="2543771964137091212">"Неуспешно, овозможи заклучување на SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Ви преостануваат уште <xliff:g id="NUMBER_1">%d</xliff:g> обид пред SIM-картичката да се заклучи.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Овозможува апликацијата да заврши заднински процеси на други апликации. Ова може да предизвика други апликации да престанат да работат."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Апликацијава може да се појави врз други апликации"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Апликацијава може да се појави врз други апликации или делови од екранот. Тоа може да го попречи нормалното користење на апликацијата и да го смени начинот на кој се појавуваат другите апликации."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ги сокрива прекривките од другите апликации"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Апликацијава може да побара системот да ги сокрие прекривките што потекнуваат од апликации што се прикажуваат врз неа."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"извршување во заднина"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Апликацијава може да работи во заднина. Тоа може побрзо да ја троши батеријата."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"користење мобилен интернет во заднина"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Обидете се повторно"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Отклучи за сите функции и податоци"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Максималниот број обиди на отклучување со лик е надминат"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Нема SIM-картичка"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Нема SIM-картичка во таблетот."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Нема SIM-картичка во вашиот уред со Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Нема SIM-картичка во телефонот."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Додајте SIM-картичка."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Нема SIM-картичка или не може да се прочита. Додајте SIM-картичка."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM-картичката е неупотреблива."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Вашата SIM-картичка е трајно деактивирана.\n Контактирајте со давателот на услуги за безжична мрежа за друга SIM-картичка."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Претходна песна"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Следна песна"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Пауза"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Брзо премотај напред"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Само итни повици"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Мрежата е заклучена"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-картичката е заклучена со PUK-код."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Погледнете го Упатството за корисници или контактирајте со Грижа за корисници."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-картичката е заклучена."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Се отклучува SIM-картичката…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Погрешно сте ја употребиле вашата шема за отклучување <xliff:g id="NUMBER_0">%1$d</xliff:g> пати. \n\nОбидете се повторно за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунди."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Погрешно сте ја впишале вашата лозинка <xliff:g id="NUMBER_0">%1$d</xliff:g> пати. \n\nОбидете се повторно за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунди."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Погрешно сте го впишале вашиот PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> пати. \n\nОбидете се повторно за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунди."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Напушти ја страницата"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Остани на оваа страница"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g> \n \nДали сте сигурни дека сакате да ја напуштите оваа страница?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Потврди"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Совет: допри двапати за да зумираш и да одзумираш."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Автоматско пополнување"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Постави „Автоматско пополнување“"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Автоматско пополнување со <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Провинција"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Поштенски број"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Држава"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Поштенски број"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Округ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Исланд"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Област"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Оддел"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Префектура"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Парохија"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Област"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Емират"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"прочитај ги своите веб обележувачи и историја"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Овозможува апликацијата да ја чита историјата на сите URL кои ги посетил прелистувачот и сите обележувачи на прелистувачот. Напомена: оваа дозвола не може да ја наметнат прелистувачи на трети лица или други апликации со способности за прелистување на интернет."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"напиши веб обележувачи и историја"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Овозможува апликацијата да ја менува историјата на прелистувачот или обележувачите зачувани во вашиот таблет. Ова може да овозможи апликацијата да избрише или да измени податоци за прелистувач. Напомена: оваа дозвола не може да ја наметнат прелистувачи на трети лица или други апликации со способности за прелистување на интернет."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Дозволува апликацијата да ги менува историјата на прелистувачот или обележувачите складирани во вашиот уред Android TV. Ова може да ѝ дозволи на апликацијата да ги брише или менува податоците на прелистувачот. Забелешка: дозволава не може да биде наметната од прелистувачи на трети лица или други апликации со можности за прелистување."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Овозможува апликацијата да ја менува историјата на прелистувачот или обележувачите зачувани во вашиот телефон. Ова може да овозможи апликацијата да избрише или да измени податоци за прелистувач. Напомена: оваа дозвола не може да ја наметнат прелистувачи на трети лица или други апликации со способности за прелистување на интернет."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"постави аларм"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Дозволува апликацијата да постави аларм во инсталираната апликација со будилник. Некои апликации со будилници може да не ја применуваат оваа можност."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"додај говорна пошта"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Дозволува апликацијата да додава пораки во сандачето за гласовна пошта."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"измени дозволи за геолокација на прелистувач"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дозволува апликацијата да ги измени дозволите за геолокација на прелистувачот. Злонамерните апликации може да го искористат тоа за да се дозволи испраќање информации за локација до случајни веб-локации."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Дали сакате прелистувачот да ја запамети оваа лозинка?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Не сега"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Запамети ја"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Никогаш"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Немате дозвола да ја отворите страницава."</string>
- <string name="text_copied" msgid="2531420577879738860">"Текстот е копиран на таблата со исечоци."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> залепи од <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> залепи од вашата привремена меморија"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> го залепи текстот што го копиравте"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ја залепи сликата што ја копиравте"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ги залепи содржините што ги копиравте"</string>
<string name="more_item_label" msgid="7419249600215749115">"Повеќе"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Мени+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"копче Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Може да го променш ова подоцна во Поставувања > Апликации"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Секогаш дозволувај"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Никогаш не дозволувај"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-картичката е отстранета"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Мобилната мрежа ќе биде недостапна сѐ додека не ја рестартирате со важечка SIM картичка."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Готово"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Додадена е SIM-картичка"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Рестартирај го својот уред за да пристапиш на мобилната мрежа."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Рестартирај"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Активирајте мобилна услуга"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM картичката е сега оневозможена. Внесете ПУК код за да продолжите. Контактирајте го операторот за детали."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Внеси посакуван PIN код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Потврди го саканиот PIN код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Се отклучува SIM-картичката…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Погрешен PIN код."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Внесете PIN кој содржи 4-8 броеви."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"ПУК кодот треба да има 8 броеви."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Отстрани"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Да го зголемиме звукот над препорачаното ниво?\n\nСлушањето звуци со голема јачина подолги периоди може да ви го оштети сетилото за слух."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Опомена,\nго надминавте ограничувањето за гласни звучни сигнали кои може безбедно да се слушаат во една седмица на слушалки.\n\nАко го надминете ограничувањево, може да го оштетите слухот."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Опомена,\nго надминавте ограничувањето од 5 гласни звучни сигнали кои може безбедно да се слушаат во една седмица на слушалки.\n\nГласноста е намалена за да ви се заштити слухот."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Гласноста со која слушате аудиовизуелни содржини може да предизвика оштетување на слухот ако трае подолг временски период.\n\nАко продолжите да слушате со оваа гласност подолг временски период, може да го оштетите слухот."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Опомена,\nтековно слушате гласни содржини што се репродуцираат со небезбедна гласност.\n\nАко продолжите да слушате волку гласно, може трајно да го оштетите слухот."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Да се користи кратенка за „Пристапност“?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Кога е вклучена кратенката, ако ги притиснете двете копчиња за јачина на звук во времетраење од 3 секунди, ќе се стартува функција за пристапност."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Да се вклучи кратенка за функциите за пристапност?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Исклучи ја кратенката"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи кратенка"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија на бои"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Корекција на боите"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим со една рака"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнително затемнување"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е вклучена."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Дозволува придружна апликација да доставува придружни пораки до други уреди."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Стартување услуги во преден план од заднина"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Дозволува придружна апликација да започне услуги во преден план од заднината."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Микрофонот е достапен"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Микрофонот е блокиран"</string>
</resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 2001f92..cf65fdd 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"നിങ്ങൾ ടൈപ്പുചെയ്ത് പിൻ പൊരുത്തപ്പെടുന്നില്ല."</string>
<string name="invalidPin" msgid="7542498253319440408">"4 മുതൽ 8 വരെ അക്കങ്ങളുള്ള ഒരു പിൻ ടൈപ്പുചെയ്യുക."</string>
<string name="invalidPuk" msgid="8831151490931907083">"എട്ടോ അതിലധികമോ അക്കങ്ങളുള്ള ഒരു PUK ടൈപ്പുചെയ്യുക."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"നിങ്ങളുടെ സിം PUK ലോക്ക് ചെയ്തു. ഇത് അൺലോക്ക് ചെയ്യാൻ PUK കോഡ് ടൈപ്പ് ചെയ്യുക."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"സിം അൺബ്ലോക്ക് ചെയ്യാൻ PUK2 ടൈപ്പ് ചെയ്യുക."</string>
<string name="enablePin" msgid="2543771964137091212">"വിജയകരമല്ല, സിം/RUIM ലോക്ക് പ്രവർത്തനക്ഷമമാക്കുക."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">SIM ലോക്കാകുന്നതിന് മുമ്പായി നിങ്ങൾക്ക് <xliff:g id="NUMBER_1">%d</xliff:g> ശ്രമങ്ങൾ കൂടി ശേഷിക്കുന്നു.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"മറ്റ് അപ്ലിക്കേഷനുകളുടെ പശ്ചാത്തല പ്രോസസ്സുകൾ അവസാനിപ്പിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് മറ്റ് അപ്ലിക്കേഷനുകൾ പ്രവർത്തനം നിർത്താനിടയാക്കാം."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"ഈ ആപ്പിന്, മറ്റ് ആപ്സിന്റെ മുകളിൽ ദൃശ്യമാകാൻ കഴിയും"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"മറ്റ് ആപ്സിന് മുകളിലോ സ്ക്രീനിന്റെ മറ്റ് ഭാഗങ്ങളിലോ ദൃശ്യമാകാൻ ഈ ആപ്പിന് കഴിയും. സാധാരണ ആപ്പ് ഉപയോഗത്തെ ഇത് തടസ്സപ്പെടുത്താം, മറ്റ് ആപ്സ് ദൃശ്യമാകുന്ന രീതിയെയും ഇത് മാറ്റാം."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"മറ്റ് ആപ്പുകളുടെ ഓവർലേകൾ മറയ്ക്കുക"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"ഈ ആപ്പിന് അതിന്റെ മുകളിൽ മറ്റ് ആപ്പുകളിൽ നിന്ന് ആരംഭിക്കുന്ന ഓവർലേകൾ കാണിക്കുന്നത് മറയ്ക്കണമെന്ന് അഭ്യർത്ഥിക്കാനാകും."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കൽ"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ഈ ആപ്പിന് പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കാൻ കഴിയും. ഇത് ബാറ്ററി വേഗത്തിൽ കുറയാൻ കാരണമായേക്കാം."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"പശ്ചാത്തലത്തിൽ ഡാറ്റ ഉപയോഗിക്കൽ"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"വീണ്ടും ശ്രമിക്കുക"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"എല്ലാ ഫീച്ചറുകളും വിവരങ്ങളും ലഭിക്കാൻ അൺലോക്കുചെയ്യുക"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് ശ്രമങ്ങളുടെ പരമാവധി കഴിഞ്ഞു"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"സിം ഇല്ല"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ടാബ്ലെറ്റിൽ സിം ഇല്ല."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"നിങ്ങളുടെ Android TV ഉപകരണത്തിൽ സിം ഇല്ല."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ഫോണിൽ സിം ഇല്ല."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"സിം ചേർക്കുക."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"സിം കാണുന്നില്ല അല്ലെങ്കിൽ റീഡ് ചെയ്യാനായില്ല. സിം ചേർക്കുക."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ഉപയോഗശൂന്യമായ സിം."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"നിങ്ങളുടെ സിം ശാശ്വതമായി നിഷ്ക്രിയമാക്കി.\n മറ്റൊരു സിമ്മിന് നിങ്ങളുടെ വയർലെസ് സേവന ദാതാവിനെ ബന്ധപ്പെടുക."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"മുമ്പത്തെ ട്രാക്ക്"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"അടുത്ത ട്രാക്ക്"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"താൽക്കാലികമായി നിർത്തുക"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"വേഗത്തിലുള്ള കൈമാറൽ"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"അടിയന്തര കോളുകൾ മാത്രം"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"നെറ്റ്വർക്ക് ലോക്കുചെയ്തു"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"സിം PUK ലോക്ക് ചെയ്തു."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ഉപയോക്തൃ ഗൈഡ് കാണുകയോ കസ്റ്റമർ കെയറുമായി ബന്ധപ്പെടുകയോ ചെയ്യുക."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"സിം ലോക്ക് ചെയ്തു."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"സിം അൺലോക്ക് ചെയ്യുന്നു…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"നിങ്ങളുടെ പാറ്റേൺ <xliff:g id="NUMBER_0">%1$d</xliff:g> തവണ തെറ്റായി വരച്ചു. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> സെക്കൻഡിനുള്ളിൽ വീണ്ടും ശ്രമിക്കുക."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"നിങ്ങളുടെ പാസ്വേഡ് <xliff:g id="NUMBER_0">%1$d</xliff:g> തവണ തെറ്റായി ടൈപ്പുചെയ്തു. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> സെക്കൻഡിനുള്ളിൽ വീണ്ടും ശ്രമിക്കുക."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"നിങ്ങളുടെ പിൻ <xliff:g id="NUMBER_0">%1$d</xliff:g> തവണ തെറ്റായി ടൈപ്പുചെയ്തു. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> സെക്കൻഡിനുള്ളിൽ വീണ്ടും ശ്രമിക്കുക."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ഈ പേജ് വിടുക"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ഈ പേജിൽ തുടരുക"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nഈ പേജിൽ നിന്നും നാവിഗേറ്റുചെയ്തു പോകണമെന്ന് തീർച്ചയാണോ?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"സ്ഥിരീകരിക്കുക"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"നുറുങ്ങ്: സൂം ഇൻ ചെയ്യാനും സൂം ഔട്ട് ചെയ്യാനും ഡബിൾ ടാപ്പ് ചെയ്യുക."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ഓട്ടോഫിൽ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"ഓട്ടോഫിൽ സജ്ജീകരിക്കുക"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ഉപയോഗിച്ച് സ്വമേധയാ പൂരിപ്പിക്കുക"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"പ്രവിശ്യ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"തപാൽ കോഡ്"</string>
- <string name="autofill_state" msgid="3341725337190434069">"സംസ്ഥാനം"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"തപാൽ കോഡ്"</string>
- <string name="autofill_county" msgid="7781382735643492173">"രാജ്യം"</string>
- <string name="autofill_island" msgid="5367139008536593734">"ദ്വീപ്"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ജില്ല"</string>
- <string name="autofill_department" msgid="9047276226873531529">"ഡിപ്പാര്ട്ട്മെന്റ്"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"പ്രിഫെക്ചർ"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"പാരിഷ്"</string>
- <string name="autofill_area" msgid="8289022370678448983">"ഏരിയ"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"എമിറേറ്റ്"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"വെബ് ബുക്ക്മാർക്കുകളും ചരിത്രവും റീഡുചെയ്യുക"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ബ്രൗസർ സന്ദർശിച്ച എല്ലാ URL-കളുടെയും ചരിത്രവും ബ്രൗസറിന്റെ എല്ലാ ബുക്ക്മാർക്കുകളും റീഡുചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ശ്രദ്ധിക്കുക: ഈ അനുമതി മൂന്നാം കക്ഷി ബ്രൗസറുകളോ വെബ് ബ്രൗസിംഗ് കഴിവുകളുള്ള മറ്റ് അപ്ലിക്കേഷനുകളോ നടപ്പിലാക്കാനിടയില്ല."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"വെബ് ബുക്ക്മാർക്കുകളും ചരിത്രവും റൈറ്റുചെയ്യുക"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"നിങ്ങളുടെ ടാബ്ലെറ്റിൽ സംഭരിച്ചിരിക്കുന്ന ബ്രൗസറിന്റെ ചരിത്രമോ ബുക്ക്മാർക്കുകളോ പരിഷ്ക്കരിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് ബ്രൗസർ ഡാറ്റ മായ്ക്കാനോ പരിഷ്ക്കരിക്കാനോ അപ്ലിക്കേഷനെ അനുവദിക്കാനിടയുണ്ട്. ശ്രദ്ധിക്കുക: ഈ അനുമതി മൂന്നാം കക്ഷി ബ്രൗസറുകളോ വെബ് ബ്രൗസിംഗ് കഴിവുകളുള്ള മറ്റ് അപ്ലിക്കേഷനുകളോ നടപ്പിലാക്കാനിടയില്ല."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"നിങ്ങളുടെ Android TV-യിൽ സംഭരിച്ചിരിക്കുന്ന ബ്രൗസറിന്റെ ചരിത്രവും ബുക്ക്മാർക്കുകളും പരിഷ്ക്കരിക്കാൻ ആപ്പിനെ അനുവദിക്കുന്നു. ബ്രൗസർ ഡാറ്റ മായ്ക്കാനോ പരിഷ്ക്കരിക്കാനോ ഇത് ആപ്പിനെ അനുവദിച്ചേക്കാം. ശ്രദ്ധിക്കുക: മൂന്നാം കക്ഷി ബ്രൗസറുകൾക്കോ വെബ് ബ്രൗസിംഗ് ശേഷികളുള്ള മറ്റ് ആപ്പുകൾക്കോ ഈ അനുമതി നടപ്പിലാക്കാനായേക്കില്ല."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"നിങ്ങളുടെ ഫോണിൽ സംഭരിച്ചിരിക്കുന്ന ബ്രൗസറിന്റെ ചരിത്രമോ ബുക്ക്മാർക്കുകളോ പരിഷ്ക്കരിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് ബ്രൗസർ ഡാറ്റ മായ്ക്കാനോ പരിഷ്ക്കരിക്കാനോ അപ്ലിക്കേഷനെ അനുവദിക്കാനിടയുണ്ട്. ശ്രദ്ധിക്കുക: ഈ അനുമതി മൂന്നാം കക്ഷി ബ്രൗസറുകളോ വെബ് ബ്രൗസിംഗ് കഴിവുകളുള്ള മറ്റ് അപ്ലിക്കേഷനുകളോ നടപ്പിലാക്കാനിടയില്ല."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ഒരു അലാറം സജ്ജീകരിക്കുക"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ഒരു ഇൻസ്റ്റാളുചെയ്ത അലാറം ക്ലോക്ക് അപ്ലിക്കേഷനിൽ അലാറം സജ്ജീകരിക്കുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ചില അലാറം ക്ലോക്ക് അപ്ലിക്കേഷനുകൾ ഈ സവിശേഷത നടപ്പിലാക്കാതിരുന്നേക്കാം."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"വോയ്സ് മെയിൽ ചേർക്കുക"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"നിങ്ങളുടെ വോയ്സ്മെയിൽ ഇൻബോക്സിലേക്ക് സന്ദേശങ്ങൾ ചേർക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ബ്രൗസർ ജിയോലൊക്കേഷൻ അനുമതികൾ പരിഷ്ക്കരിക്കുക"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ബ്രൗസറിന്റെ ജിയോലൊക്കേഷൻ അനുമതികളെ പരിഷ്ക്കരിക്കുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. അനിയന്ത്രിതമായ വെബ്സൈറ്റുകളിലേക്ക് ലൊക്കേഷൻ വിവരം അയയ്ക്കാൻ അനുവദിക്കുന്നതിന് ദോഷകരമായ അപ്ലിക്കേഷനുകൾ ഇത് ഉപയോഗിച്ചേക്കാം."</string>
- <string name="save_password_message" msgid="2146409467245462965">"ബ്രൗസർ ഈ പാസ്വേഡ് ഓർക്കേണ്ടതുണ്ടോ?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ഇപ്പോൾ വേണ്ട"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"ഓർമ്മിക്കുക"</string>
- <string name="save_password_never" msgid="6776808375903410659">"ഒരിക്കലും"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ഈ പേജ് തുറക്കുന്നതിന് നിങ്ങൾക്ക് അനുമതിയില്ല."</string>
- <string name="text_copied" msgid="2531420577879738860">"ടെക്സ്റ്റ് ക്ലിപ്ബോർഡിലേക്ക് പകർത്തി."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> എന്നതിൽ നിന്ന് <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ഒട്ടിച്ചു"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങളുടെ ക്ലിപ്പ്ബോർഡിൽ നിന്ന് ഒട്ടിച്ചു"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ടെക്സ്റ്റ് ഒട്ടിച്ചു"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ഒരു ചിത്രം ഒട്ടിച്ചു"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ഉള്ളടക്കം ഒട്ടിച്ചു"</string>
<string name="more_item_label" msgid="7419249600215749115">"കൂടുതൽ"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"മെനു+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"മെറ്റ+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"നിങ്ങൾക്ക് ഇത് പിന്നീട് ക്രമീകരണങ്ങൾ > അപ്ലിക്കേഷനുകൾ എന്നതിൽ മാറ്റാനാകും"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"എപ്പോഴും അനുവദിക്കൂ"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ഒരിക്കലുമനുവദിക്കരുത്"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"സിം നീക്കം ചെയ്തു"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"സാധുതയുള്ള ഒരു സിം ഉപയോഗിച്ച് പുനരാരംഭിക്കുന്നത് വരെ നിങ്ങൾക്ക് മൊബൈൽ നെറ്റ്വർക്ക് ലഭ്യമാകില്ല."</string>
<string name="sim_done_button" msgid="6464250841528410598">"പൂർത്തിയായി"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"സിം ചേർത്തു"</string>
<string name="sim_added_message" msgid="6602906609509958680">"മൊബൈൽ നെറ്റ്വർക്ക് ആക്സസ്സുചെയ്യാൻ നിങ്ങളുടെ ഉപകരണം പുനരാരംഭിക്കുക."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"പുനരാരംഭിക്കുക"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"മൊബൈൽ സേവനം സജീവമാക്കുക"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"സിം ഇപ്പോൾ പ്രവർത്തനരഹിതമാക്കി. തുടരുന്നതിന് PUK കോഡ് നൽകുക. വിശദാംശങ്ങൾക്ക് കാരിയറെ ബന്ധപ്പെടുക."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"താൽപ്പര്യപ്പെട്ട പിൻ കോഡ് നൽകുക"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"താൽപ്പര്യപ്പെട്ട പിൻ കോഡ് സ്ഥിരീകരിക്കുക"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"സിം അൺലോക്ക് ചെയ്യുന്നു…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"പിൻ കോഡ് തെറ്റാണ്."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4 മുതൽ 8 വരെ അക്കങ്ങളുള്ള ഒരു പിൻ നൽകുക."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK കോഡ് 8 അക്കങ്ങളായിരിക്കണം."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"നീക്കംചെയ്യുക"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"മുകളിൽക്കൊടുത്തിരിക്കുന്ന ശുപാർശചെയ്ത ലെവലിലേക്ക് വോളിയം വർദ്ധിപ്പിക്കണോ?\n\nഉയർന്ന വോളിയത്തിൽ ദീർഘനേരം കേൾക്കുന്നത് നിങ്ങളുടെ ശ്രവണ ശേഷിയെ ദോഷകരമായി ബാധിക്കാം."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"മുന്നറിയിപ്പ്,\nഒരാൾക്ക് ഒരാഴ്ച ഹെഡ്ഫോണുകളിലൂടെ സുരക്ഷിതമായി കേൾക്കാനാകുന്ന ഉച്ചത്തിലുള്ള ശബ്ദ സിഗ്നലുകളുടെ അളവ് നിങ്ങൾ മറികടന്നിരിക്കുന്നു.\n\nഈ പരിധിക്ക് മുകളിൽ പോകുന്നത് നിങ്ങളുടെ കേൾവിശക്തിയെ ശാശ്വതമായി തകരാറിലാക്കും."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"മുന്നറിയിപ്പ്,\nഒരാൾക്ക് ഒരാഴ്ചയിൽ ഹെഡ്ഫോണുകളിലൂടെ സുരക്ഷിതമായി കേൾക്കാനാകുന്ന ഉച്ചത്തിലുള്ള ശബ്ദ സിഗ്നലുകളുടെ അളവിന്റെ 5 മടങ്ങ് നിങ്ങൾ മറികടന്നിരിക്കുന്നു.\n\nനിങ്ങളുടെ കേൾവിശക്തി സംരക്ഷിക്കുന്നതിനായി വോളിയം കുറച്ചു."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"നിങ്ങൾ ഇപ്പോൾ മീഡിയ കേൾക്കുന്ന ലെവൽ ദീർഘകാലം ഉപയോഗിച്ചാൽ അത് കേൾവി തകരാറിലേക്ക് നയിച്ചേക്കാം.\n\nഈ ലെവലിൽ തുടർന്നും ദീർഘകാലം പ്ലേ ചെയ്യുന്നത് നിങ്ങളുടെ കേൾവിശക്തി തകരാറിലാക്കിയേക്കാം."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"മുന്നറിയിപ്പ്,\nസുരക്ഷിതമല്ലാത്ത ലെവലിൽ പ്ലേ ചെയ്യുന്ന ഉച്ചത്തിലുള്ള ഉള്ളടക്കമാണ് നിങ്ങൾ നിലവിൽ കേൾക്കുന്നത്.\n\nഇത്ര ഉച്ചത്തിൽ കേൾക്കുന്നത് തുടർന്നാൽ നിങ്ങളുടെ കേൾവിശക്തി ശാശ്വതമായി തകരാറിലാകും."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ഉപയോഗസഹായി കുറുക്കുവഴി ഉപയോഗിക്കണോ?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"കുറുക്കുവഴി ഓണായിരിക്കുമ്പോൾ, രണ്ട് വോളിയം ബട്ടണുകളും 3 സെക്കൻഡ് നേരത്തേക്ക് അമർത്തുന്നത് ഉപയോഗസഹായി ഫീച്ചർ ആരംഭിക്കും."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ഉപയോഗസഹായി ഫീച്ചറുകൾക്കുള്ള കുറുക്കുവഴി ഓണാക്കണോ?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"കുറുക്കുവഴി ഓഫാക്കുക"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"കുറുക്കുവഴി ഉപയോഗിക്കുക"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"വർണ്ണ വിപര്യയം"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"നിറം ശരിയാക്കൽ"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ഒറ്റക്കൈ മോഡ്"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"കൂടുതൽ ഡിം ചെയ്യൽ"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"വോളിയം കീകൾ പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓണാക്കി."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"മറ്റ് ഉപകരണങ്ങളിലേക്ക് സഹകാരി സന്ദേശങ്ങൾ ഡെലിവർ ചെയ്യാൻ സഹകാരി ആപ്പിനെ അനുവദിക്കുന്നു."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"പശ്ചാത്തലത്തിൽ നിന്ന് ഫോർഗ്രൗണ്ട് സേവനങ്ങൾ ആരംഭിക്കുക"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"പശ്ചാത്തലത്തിൽ നിന്ന് ഫോർഗ്രൗണ്ട് സേവനങ്ങൾ ആരംഭിക്കാൻ സഹകാരി ആപ്പിനെ അനുവദിക്കുന്നു."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"മൈക്രോഫോൺ ലഭ്യമാണ്"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"മൈക്രോഫോൺ ബ്ലോക്ക് ചെയ്തു"</string>
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index a060109..bbfff4a 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Таны оруулсан ПИН таарахгүй байна."</string>
<string name="invalidPin" msgid="7542498253319440408">"4-8 тооноос бүтэх ПИН-г бичнэ үү."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8-с цөөнгүй тооноос бүтэх PUK-г бичнэ үү."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Таны SIM-г PUK-р түгжсэн байна. Үүний түгжээг тайлахын тулд PUK кодыг бичиж оруулна уу."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM-г блокоос гаргахын тулд PUK2-г бичиж оруулна уу."</string>
<string name="enablePin" msgid="2543771964137091212">"Амжилтгүй боллоо, SIM/РҮИМ түгжээг идэвхжүүлнэ үү."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Таны SIM түгжигдэхээс өмнө танд <xliff:g id="NUMBER_1">%d</xliff:g> оролдлого хийх боломж үлдлээ. </item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Апп нь бусад апп-н арын процессыг дуусгах боломжтой. Энэ бусад апп-г зогсоох боломжийг олгоно."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Энэ апп бусад аппын дээр харагдана"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Энэ апп бусад аппын дээр эсвэл дэлгэцийн өөр хэсэгт харагдана. Энэ нь энгийн апп хэрэглээ болон бусад аппын харагдах байдлыг өөрчилж болзошгүй."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"бусад аппын давхаргыг нуух"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Энэ апп нь дээрээс нь харуулахаас сэргийлэхийн тулд системээс аппуудаас үүссэн давхаргыг нуухыг хүсэж болно."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"цаана ажиллах"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Энэ апп цаана ажиллах боломжтой. Энэ нь батерейг хурдан дуусгаж болзошгүй."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"датаг цаана ашиглах"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Дахин оролдох"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Бүх онцлог, өгөгдлийн түгжээг тайлах"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Царайгаар түгжээ тайлах оролдлогын тоо дээд хэмжээнээс хэтэрсэн"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM байхгүй"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Таблетад SIM байхгүй байна."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Таны Android TV төхөөрөмжид SIM байхгүй байна."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Утсанд SIM байхгүй байна."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM нэмнэ үү."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM дутуу эсвэл үүнийг унших боломжгүй байна. SIM нэмнэ үү."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Ашиглах боломжгүй SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Таны SIM-г бүрмөсөн идэвхгүй болгосон байна.\n Өөр SIM авах бол утасгүй үйлчилгээ үзүүлэгчтэйгээ холбогдоно уу."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Өмнөх трек"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Дараагийн трек"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Түр зогсоох"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Хурдан урагшлуулах"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Зөвхөн яаралтай дуудлага"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Сүлжээ түгжигдсэн"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-г PUK-р түгжсэн байна."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Хэрэглэгчийн зааврыг харах эсвэл Хэрэглэгчдэд Туслах төвтэй холбоо барина уу."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-г түгжсэн байна."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM-н түгжээг тайлж байна…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Та тайлах хээг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу зурлаа. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Та нууц үгээ <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Та ПИН кодоо <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Энэ хуудсыг орхих"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Энэ хуудсанд үлдэх"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nТа үнэхээр энэ хуудаснаас гармаар байна уу?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Баталгаажуулах"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Зөвлөмж: Өсгөх бол давхар товшино уу."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Автомат бичих"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Автомат дүүргэлтийг тохируулах"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g>-р автоматаар бөглөх"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Муж"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Шуудангийн код"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Муж"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP код"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Муж"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Арал"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Дүүрэг"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Хэлтэс"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Муж"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Мөргөлч"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Хэсэг"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Эмират"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"өөрийн Веб хавчуурга болон түүхийг унших"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Апп нь Хөтчийн зочилж байсан бүх URL-н түүх болон Хөтчийн бүх хавчуургыг унших боломжтой. Анхаар: Энэ зөвшөөрөл нь гуравдагч талын хөтөч эсвэл вебээр хөтөчлөх чадавхтай аппликейшнүүдэд ашиглагдахгүй байх боломжтой."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"веб хавчуурга болон түүхийг бичих"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Апп нь таны таблет дээр хадгалагдсан Хөтчийн түүх эсвэл хавчуургыг өөрчлөх боломжтой. Энэ нь апп-д Хөтчийн датаг арилгах эсвэл өөрчлөх боломжийг олгоно. Анхаар: Энэ зөвшөөрөл нь гуравдагч талын хөтөч эсвэл вебээр хөтөчлөх чадвартай аппликейшнд ажиллахгүй байх боломжтой."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Аппад таны Android TV төхөөрөмжид хадгалсан Хөтчийн түүх эсвэл хавчуургыг өөрчлөхийг зөвшөөрнө. Энэ нь аппад Хөтчийн өгөгдлийг устгах эсвэл өөрчлөхийг зөвшөөрч болзошгүй. Санамж: энэ зөвшөөрөл нь гуравдагч талын хөтөч эсвэл веб хөтчийн чадамжтай бусад аппад хэрэгжихгүй байж болзошгүй."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Апп нь таны утсан дээр хадгалагдсан Хөтчийн түүх эсвэл хавчуургыг өөрчлөх боломжтой. Энэ нь апп-д Хөтчийн датаг арилгах эсвэл өөрчлөх боломжийг олгоно. Анхаар: Энэ зөвшөөрөл нь гуравдагч талын хөтөч эсвэл вебээр хөтөчлөх чадвартай аппликейшнд ажиллахгүй байх боломжтой."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"сэрүүлэг тохируулах"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Апп нь суулгагдсан сэрүүлэгний апп дээр сэрүүлэг тохируулах боломжтой. Зарим сэрүүлэгний апп нь энэ функцийг дэмжихгүй байж болзошгүй."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"дуут шуудан нэмэх"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Таны дуут шуудангийн ирсэн мэйлд мессеж нэмэхийг апп-д зөвшөөрөх."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Хөтчийн геобайршлын зөвшөөрлийг өөрчлөх"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Апп нь Хөтчийн гео байршлын зөвшөөрлийг өөрчлөх боломжтой. Хортой апп нь энийг ашиглан дурын веб хуудасруу байршлын мэдээллийг илгээх боломжтой."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Та хөтчид энэ нууц үгийг сануулах уу?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Одоо биш"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Санах"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Хэзээ ч үгүй"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Танд энэ хуудсыг нээх зөвшөөрөл байхгүй."</string>
- <string name="text_copied" msgid="2531420577879738860">"Текст хуулагдав."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>-с буулгасан <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Таны түр санах ойгоос <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-г буулгасан"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан текстийг буулгасан"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан зургийг буулгасан"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан контентыг буулгасан"</string>
<string name="more_item_label" msgid="7419249600215749115">"Илүү"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Цэс+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Мета+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Та дараа энийг Тохиргоо > Апп дотроос солих боломжтой"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Байнга зөвшөөрөх"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Хэзээ ч зөвшөөрөхгүй"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-г салгасан"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Таныг хүчинтэй SIM-р дахин эхлүүлэх хүртэл мобайл сүлжээ боломжгүй байх болно."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Дуусгах"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM нэмсэн"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Мобайл сүлжээнд хандах бол төхөөрөмжөө дахин асаан уу."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Дахин эхлүүлэх"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Мобайл үйлчилгээг идэвхжүүлэх"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM идэвхгүй байна. Үргэлжлүүлэх бол PUK кодыг оруулна уу. Дэлгэрэнгүй мэдээллийг оператороос асууна ууу"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Хүссэн ПИН кодоо оруулна уу"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Хүссэн ПИН кодоо дахин оруулна уу"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM-н түгжээг тайлж байна…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Буруу ПИН код."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4-8 тооноос бүтэх ПИН-г бичнэ үү."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK код 8 тоотой байх ёстой."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Устгах"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Дууг санал болгосноос чанга болгож өсгөх үү?\n\nУрт хугацаанд чанга хөгжим сонсох нь таны сонсголыг муутгаж болно."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Сануулга,\nТа чихэвчээр долоо хоногийн турш аюулгүйгээр сонсож болох чанга дууны дохионы хэмжээг хэтрүүлсэн байна.\n\nЭнэ хязгаарыг давах нь таны сонсголыг бүрмөсөн гэмтээнэ."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Сануулга,\nТа чихэвчээр долоо хоногийн турш аюулгүйгээр сонсож болох чанга дууны дохионы хэмжээг 5 дахин хэтрүүлсэн байна.\n\nТаны сонсголыг хамгаалахын тулд дууны түвшнийг багасгасан."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Та удаан хугацааны туршид медиаг тасралтгүй энэ түвшинд сонссоор байвал сонсголыг гэмтээж болзошгүй.\n\nЭнэ түвшинд удаан хугацаанд үргэлжлүүлэн тоглуулах нь таны сонсголыг гэмтээж болно."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Сануулга,\nТа одоогоор аюултай түвшинд тоглуулж буй маш чанга контентыг сонсож байна.\n\nЭнэ чанга дууг үргэлжлүүлэн сонсох нь таны сонсголыг бүрмөсөн гэмтээнэ."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Хүртээмжийн товчлолыг ашиглах уу?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Товчлол асаалттай үед дууны түвшний хоёр товчлуурыг хамтад нь 3 секунд дарснаар хандалтын онцлогийг эхлүүлнэ."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Хандалтын онцлогуудын товчлолыг асаах уу?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Товчлолыг унтраах"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Товчлол ашиглах"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Өнгө хувиргалт"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Өнгөний засвар"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Нэг гарын горим"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Хэт бүүдгэр"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаалаа."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Дэмжигч аппад бусад төхөөрөмжид дэмжигчийн мессежийг хүргэхийг зөвшөөрнө."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Нүүрэн талын үйлчилгээнүүдийг ардаас эхлүүлэх"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Дэмжигч аппад нүүрэн талын үйлчилгээнүүдийг ардаас эхлүүлэхийг зөвшөөрнө."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Микрофоныг ашиглах боломжгүй байна"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Микрофоныг блоклосон байна"</string>
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 25b5b92..06bb79f 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"तुम्ही टाइप केलेले पिन जुळत नाहीत."</string>
<string name="invalidPin" msgid="7542498253319440408">"4 ते 8 अंकांचा पिन टाइप करा."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 अंकांचा किंवा मोठा PUK टाइप करा."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"तुमचे सिम PUK लॉक केलेले आहे. ते अनलॉक करण्यासाठी PUK कोड टाइप करा."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"सिम अनब्लॉक करण्यासाठी PUK2 टाइप करा."</string>
<string name="enablePin" msgid="2543771964137091212">"अयशस्वी, सिम/RUIM लॉक सुरू करा."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">सिम लॉक होण्यापूर्वी आपल्याकडे <xliff:g id="NUMBER_1">%d</xliff:g> प्रयत्न उर्वरित आहेत.</item>
@@ -366,7 +364,7 @@
<string name="permdesc_manageOngoingCalls" msgid="7003138133829915265">"ॲपला तुमच्या डिव्हाइसवर सुरू असलेल्या कॉलचे तपशील पाहण्याची आणि या कॉलना नियंत्रित करण्याची अनुमती द्या."</string>
<string name="permlab_readCellBroadcasts" msgid="5869884450872137693">"सेल प्रसारण मेसेज वाचा"</string>
<string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"आपल्या डिव्हाइसद्वारे प्राप्त केलेले सेल प्रसारण मेसेज वाचण्यासाठी अॅप ला अनुमती देते. काही स्थानांमध्ये तुम्हाला आणीबाणीच्या परिस्थितीची चेतावणी देण्यासाठी सेल प्रसारण सूचना वितरीत केल्या जातात. आणीबाणी सेल प्रसारण प्राप्त होते तेव्हा आपल्या डिव्हाइसच्या कार्यप्रदर्शनात किंवा कार्यात दुर्भावनापूर्ण अॅप्स व्यत्यय आणू शकतात."</string>
- <string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"सदस्यता घेतलेली फीड वाचा"</string>
+ <string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"सदस्यत्व घेतलेली फीड वाचा"</string>
<string name="permdesc_subscribedFeedsRead" msgid="6911349196661811865">"सध्या संकालित केलेल्या फीडविषयी तपशील मिळविण्यासाठी अॅप ला अनुमती देते."</string>
<string name="permlab_sendSms" msgid="7757368721742014252">"SMS मेसेज पाठवणे आणि पाहणे"</string>
<string name="permdesc_sendSms" msgid="6757089798435130769">"SMS मेसेज पाठविण्यासाठी अॅप ला अनुमती देते. हे अनपेक्षित शुल्कामुळे होऊ शकते. दुर्भावनापूर्ण अॅप्स नी आपल्या पुष्टिकरणाशिवाय मेसेज पाठवल्यामुळे तुमचे पैसे खर्च होऊ शकतात."</string>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"अन्य अॅप्सच्या पार्श्वभूमी प्रक्रिया समाप्त करण्यासाठी अॅप ला अनुमती देते. यामुळे अन्य अॅप्स चालणे थांबू शकते."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"हा अॅप इतर अॅप्सच्या शीर्षस्थानी दिसू शकतो."</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"हे अॅप इतर अॅप्सच्या शीर्षस्थानी किंवा स्क्रीनच्या इतर भागांवर दिसू शकतो. हे सामान्य अॅप वापरात व्यत्यय आणू शकते किंवा इतर अॅप्सची डिस्प्ले पद्धत बदलू शकते."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"इतर अॅप्सची ओव्हरले लपवा"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"सिस्टीमने अॅप्समधून सुरू होणारे ओव्हरले त्यांच्या वरती दाखवण्यापासून लपवावे असे हे अॅप विनंती करू शकते."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"पार्श्वभूमीत चालवा"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"हे अॅप पार्श्वभूमीत सुरू शकते. हे बॅटरी अधिक जलद संपवू शकते."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"पार्श्वभूमीत डेटा वापरा"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"पुन्हा प्रयत्न करा"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"सर्व वैशिष्ट्ये आणि डेटासाठी अनलॉक करा"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"कमाल फेस अनलॉक प्रयत्न ओलांडले"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"सिम नाही"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"टॅबलेटमध्ये सिम नाही."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"तुमच्या Android TV डिव्हाइसमध्ये सिम नाही."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"फोनमध्ये सिम नाही."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"सिम जोडा."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"सिम गहाळ झाले आहे किंवा ते रीड करू शकत नाही. सिम जोडा."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"वापरण्यायोग्य नसलेले सिम."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"तुमचे सिम कायमचे डीॲक्टिव्हेट केले गेले आहे.\n दुसऱ्या सिमसाठी तुमच्या वायरलेस सेवा पुरवठादाराशी संपर्क साधा."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"मागील ट्रॅक"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"पुढील ट्रॅक"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"विराम द्या"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"फास्ट फॉरवर्ड करा"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"फक्त आणीबाणीचे कॉल"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"नेटवर्क लॉक केले"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"सिम PUK लॉक केलेले आहे."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"वापरकर्ता मार्गदर्शक पहा किंवा कस्टमर केअरशी संपर्क साधा."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"सिम लॉक केलेले आहे."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"सिम अनलॉक करत आहे…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"तुम्ही तुमचा अनलॉक पॅटर्न <xliff:g id="NUMBER_0">%1$d</xliff:g> वेळा अयोग्यरितीने काढला. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकंदांमध्ये पुन्हा प्रयत्न करा."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"तुम्ही तुमचा पासवर्ड <xliff:g id="NUMBER_0">%1$d</xliff:g> वेळा अयोग्यरितीने टाइप केला आहे. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकंदांमध्ये पुन्हा प्रयत्न करा."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"तुम्ही तुमचा पिन <xliff:g id="NUMBER_0">%1$d</xliff:g> वेळा अयोग्यरितीने टाइप केला आहे. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकंदांमध्ये पुन्हा प्रयत्न करा."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"हे पृष्ठ सोडा"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"या पेजवर रहा"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nआपल्याला खात्री आहे की तुम्ही या पृष्ठावरून नेव्हिगेट करू इच्छिता?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"पुष्टी करा"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"टीप: झूम कमी करण्यासाठी आणि वाढवण्यासाठी दोनदा टॅप करा."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"स्वयं-भरण"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"स्वयं-भरण सेट करा"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> सह ऑटोफील करा"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"प्रांत"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"पोस्टल कोड"</string>
- <string name="autofill_state" msgid="3341725337190434069">"राज्य"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"पिनकोड"</string>
- <string name="autofill_county" msgid="7781382735643492173">"परगणा"</string>
- <string name="autofill_island" msgid="5367139008536593734">"बेट"</string>
- <string name="autofill_district" msgid="6428712062213557327">"जिल्हा"</string>
- <string name="autofill_department" msgid="9047276226873531529">"विभाग"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"प्रीफेक्चर"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"पॅरिश"</string>
- <string name="autofill_area" msgid="8289022370678448983">"क्षेत्र"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"अमिरात"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"तुमचे वेब बुकमार्क आणि इतिहास वाचा"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ब्राउझरने भेट दिलेल्या सर्व URL चा इतिहास आणि ब्राउझरचे सर्व बुकमार्क वाचण्यास अॅप ला अनुमती देते. टीप: या परवानगीची तृतीय-पक्ष ब्राउझरद्वारे किंवा वेब ब्राउझिंग क्षमता असलेल्या अन्य अनुप्रयोगांद्वारे अंमलबजावणी करू शकत नाही."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"वेब बुकमार्क आणि इतिहास लिहा"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"तुमच्या टॅब्लेटवर स्टोअर केलेला ब्राउझरचा इतिहास किंवा बुकमार्क सुधारित करण्यासाठी अॅप ला अनुमती देते. हे ब्राउझर डेटा मिटविण्यासाठी किंवा सुधारित करण्यासाठी अॅप ला अनुमती देते. टीप: ही परवानगी तृतीय पक्ष ब्राउझरद्वारे किंवा वेब ब्राउझिंग क्षमतांसह अन्य अॅप्लिकेशनद्वारे अंमलबजावणी करण्याची टीप देऊ शकते."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"तुमच्या Android TV डिव्हाइसवर साठवलेला ब्राउझरचा इतिहास किंवा बुकमार्क सुधारित करण्यासाठी अॅप ला अनुमती देते. हे अॅपला ब्राउझर डेटा मिटवण्याची किंवा सुधारित करण्याची परवानगी देते. टीप: ही परवानगी तृतीय पक्ष ब्राउझरद्वारे किंवा वेब ब्राउझिंग क्षमतांसह अन्य अॅप्लिकेशनद्वारे अंमलबजावणी करण्याची टीप देऊ शकते."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"तुमच्या फोनवर स्टोअर केलेला ब्राउझरचा इतिहास किंवा बुकमार्क सुधारित करण्यासाठी अॅप ला अनुमती देते. हे ब्राउझर डेटा मिटविण्यासाठी किंवा सुधारित करण्यासाठी अॅप ला अनुमती देते. टीप: ही परवानगी तृतीय पक्ष ब्राउझरद्वारे किंवा वेब ब्राउझिंग क्षमतांसह अन्य अॅप्लिकेशनद्वारे अंमलबजावणी करण्याची टीप देऊ शकते."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"अलार्म सेट करा"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"इंस्टॉल केलेल्या अलार्म घड्याळ ॲपमध्ये अलार्म सेट करण्यासाठी ॲपला अनुमती देते. काही अलार्म घड्याळ ॲप्समध्ये हे वैशिष्ट्य नसू शकते."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"व्हॉइसमेल जोडा"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"आपल्या व्हॉइसमेल इनबॉक्समध्ये मेसेज जोडण्यासाठी अॅप ला अनुमती देते."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ब्राउझर भौगोलिक स्थान परवानग्या सुधारित करा"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ब्राउझरच्या भौगोलिक स्थान परवानग्या सुधारित करण्यासाठी अॅप ला अनुमती देते. दुर्भावनापूर्ण अॅप्स यादृच्छिक वेबसाइटवर स्थान माहिती पाठविण्यास अनुमती देण्यासाठी याचा वापर करू शकतात."</string>
- <string name="save_password_message" msgid="2146409467245462965">"ब्राउझरने हा पासवर्ड लक्षात ठेवावा असे तुम्ही इच्छिता?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"आता नको"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"लक्षात ठेवा"</string>
- <string name="save_password_never" msgid="6776808375903410659">"कधीही नाही"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"तुम्हाला हे पृष्ठ उघडण्याची परवानगी नाही."</string>
- <string name="text_copied" msgid="2531420577879738860">"मजकूर क्लिपबोर्डवर कॉपी केला."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> वरून <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> पेस्ट केले"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने तुमच्या क्लिपबोर्डवरून पेस्ट केले"</string>
- <string name="pasted_text" msgid="4298871641549173733">"तुम्ही कॉपी केलेला मजकूर <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केला"</string>
- <string name="pasted_image" msgid="4729097394781491022">"तुम्ही कॉपी केलेली इमेज <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केली"</string>
- <string name="pasted_content" msgid="646276353060777131">"तुम्ही कॉपी केलेला आशय <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केला"</string>
<string name="more_item_label" msgid="7419249600215749115">"अधिक"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"मेनू+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"तुम्ही हे नंतर सेटिंग्ज आणि अॅप्स मध्ये बदलू शकता"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"नेहमी अनुमती द्या"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"कधीही अनुमती देऊ नका"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"सिम काढून टाकले"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"तुम्ही योग्य सिम वापरून रीस्टार्ट करेपर्यंत मोबाइल नेटवर्क उपलब्ध नसेल."</string>
<string name="sim_done_button" msgid="6464250841528410598">"पूर्ण झाले"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"सिम जोडले"</string>
<string name="sim_added_message" msgid="6602906609509958680">"मोबाइल नेटवर्कवर अॅक्सेस करण्यासाठी तुमचे डिव्हाइस रीस्टार्ट करा."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"रीस्टार्ट"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"मोबाइल सेवा अॅक्टिव्हेट करा"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"सिम आता अक्षम केले आहे. सुरू ठेवण्यासाठी PUK कोड एंटर करा. तपशीलांसाठी वाहकाशी संपर्क साधा."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"इच्छित पिन कोड एंटर करा"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"इच्छित पिन कोड ची पुष्टी करा"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"सिम अनलॉक करत आहे…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"अयोग्य पिन कोड."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4 ते 8 अंक असलेला पिन टाइप करा."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK कोड 8 संख्येचा असावा."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"काढा"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"शिफारस केलेल्या पातळीच्या वर आवाज वाढवायचा?\n\nउच्च आवाजात दीर्घ काळ ऐकण्याने आपल्या श्रवणशक्तीची हानी होऊ शकते."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"चेतावणी,\nव्यक्तीची सुरक्षितरीत्या हेडफोनवर मोठ्या आवाजातील सिग्नल ऐकण्याची एका आठवड्याची मर्यादा तुम्ही ओलांडली आहे.\n\nही मर्यादा ओलांडणे तुमच्या श्रवणशक्तीचे कायमचे नुकसान करू करेल."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"चेतावणी,\nव्यक्तीची सुरक्षितरीत्या हेडफोनवर मोठ्या आवाजातील सिग्नल ऐकण्याची एका आठवड्याची मर्यादा तुम्ही पाचपट ओलांडली आहे.\n\nतुमच्या श्रवणशक्तीच्या संरक्षणासाठी व्हॉल्यूम कमी केला गेला आहे."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"तुम्ही ज्या पातळीवर मीडिया ऐकत आहात, असे जास्त कालावधीसाठी सुरू राहिल्याचा परिणाम म्हणून तुमच्या श्रवणशक्तीचे कायमचे नुकसान होऊ शकते.\n\nया पातळीवर जास्त कालावधीसाठी प्ले करणे पुढे सुरू ठेवल्यामुळे तुमच्या श्रवणशक्तीचे नुकसान होऊ शकते."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"चेतावणी,\nतुम्ही सध्या असुरक्षित पातळीवर प्ले होणारा मोठ्या आवाजातील आशय ऐकत आहात.\n\nएवढ्या मोठ्याने ऐकणे पुढे सुरू ठेवणे तुमच्या श्रवणशक्तीचे कायमचे नुकसान करेल."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"प्रवेशयोग्यता शॉर्टकट वापरायचा?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"शॉर्टकट सुरू असताना, दोन्ही व्हॉल्यूम बटणे तीन सेकंदांसाठी दाबून ठेवल्याने अॅक्सेसिबिलिटी वैशिष्ट्य सुरू होईल."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"अॅक्सेसिबिलिटी वैशिष्ट्यांसाठी शॉर्टकट सुरू करायचा आहे का?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"शॉर्टकट बंद करा"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट वापरा"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"रंगांची उलटापालट"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"रंग सुधारणा"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"एकहाती मोड"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"आणखी डिम"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सुरू केला आहे."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"सहयोगी अॅपला इतर डिव्हाइसवर सहयोगी मेसेज डिलिव्हर करण्याची अनुमती देते."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"बॅकग्राउंडमधून फोरग्राउंड सेवा सुरू करा"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"सहयोगी अॅपला बॅकग्राउंडमधून फोरग्राउंड सेवा सुरू करण्याची अनुमती देते."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"मायक्रोफोन उपलब्ध आहे"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"मायक्रोफोन ब्लॉक केलेला आहे"</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index e71f8e2..c6b9210 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN yang anda taip tidak sepadan."</string>
<string name="invalidPin" msgid="7542498253319440408">"Taipkan PIN yang mengandungi 4 hingga 8 nombor."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Taipkan PUK yang mempunyai 8 nombor atau lebih panjang."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM anda dikunci PUK. Taip kod PUK untuk membuka kunci SIM."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Taip PUK2 untuk menyahsekat SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Tidak berjaya, dayakan Kunci SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Anda ada <xliff:g id="NUMBER_1">%d</xliff:g> cubaan lagi sebelum SIM dikunci.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Membenarkan apl untuk menamatkan proses latar belakang apl lain. Ini boleh menyebabkan apl lain berhenti berjalan."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Apl ini boleh muncul di sebelah atas apl lain"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Apl ini boleh muncul di sebelah atas apl lain atau pada bahagian lain skrin. Hal ini mungkin mengganggu penggunaan biasa apl dan mengubah cara apl lain itu muncul."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"sembunyikan tindanan apl lain"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Apl ini boleh meminta sistem untuk menyembunyikan tindanan yang berasal daripada apl daripada ditunjukkan di atas apl ini."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"berjalan di latar belakang"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Apl ini boleh berjalan di latar belakang. Tindakan ini mungkin menyusutkan bateri dengan lebih pantas."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"gunakan data di latar belakang"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Cuba lagi"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Buka kunci semua ciri dan data"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Telah melepasi had cubaan Buka Kunci Wajah"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Tiada SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Tiada SIM dalam tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Tiada SIM dalam peranti Android TV anda."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Tiada SIM dalam telefon."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Tambah SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM tiada atau tidak boleh dibaca. Tambah SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM tidak boleh digunakan."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM anda telah dinyahaktifkan secara kekal.\n Hubungi penyedia perkhidmatan wayarles anda untuk mendapatkan SIM lain."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Lagu sebelumnya"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Lagu seterusnya"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Jeda"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Mara laju"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Panggilan kecemasan sahaja"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Rangkaian dikunci"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM dikunci PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Lihat Panduan Pengguna atau hubungi Penjagaan Pelanggan."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM dikunci."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Membuka kunci SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Anda telah tersilap melukis corak buka kunci anda sebanyak <xliff:g id="NUMBER_0">%1$d</xliff:g> kali. \n\nSila cuba lagi dalam <xliff:g id="NUMBER_1">%2$d</xliff:g> saat."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Anda telah menaip kata laluan yang salah sebanyak <xliff:g id="NUMBER_0">%1$d</xliff:g> kali. \n\nCuba lagi dalam <xliff:g id="NUMBER_1">%2$d</xliff:g> saat."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Anda telah menaip PIN yang salah sebanyak <xliff:g id="NUMBER_0">%1$d</xliff:g> kali. \n\nCuba lagi dalam <xliff:g id="NUMBER_1">%2$d</xliff:g> saat."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Tinggalkan Halaman ini"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Kekal di Halaman ini"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nAdakah anda pasti anda mahu menavigasi keluar dari halaman ini?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Sahkan"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Petua: Ketik dua kali untuk mengezum masuk dan keluar."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Auto isi"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Sediakan Autoisi"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autolengkap dengan <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Wilayah"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Poskod"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Negeri"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Poskod"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Wilayah"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Pulau"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Daerah"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Jabatan"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Wilayah"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Kariah"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Kawasan"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emiriah"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"baca penanda buku dan sejarah Web anda"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Membenarkan apl membaca sejarah semua URL yang telah Penyemak Imbas lawati dan semua penanda halaman Penyemak Imbas. Nota: kebenaran ini tidak boleh dikuatkuasakan oleh penyemak imbas pihak ketiga atau aplikasi lain dengan keupayaan menyemak imbas web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"tulis penanda buku dan sejarah web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Membenarkan apl mengubah suai sejarah atau penanda halaman Penyemak Imbas yang tersimpan pada tablet anda. Ini boleh membenarkan apl untuk memadam atau mengubah suai data Penyemak Imbas. Nota: kebenaran ini tidak boleh dikuatkuasakan oleh penyemak imbas pihak ketiga atau aplikasi lain dengan keupayaan menyemak imbas web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Membenarkan apl mengubah suai sejarah atau penanda halaman Penyemak Imbas yang disimpan pada peranti Android TV anda. Ini mungkin membenarkan apl memadam atau mengubah suai data Penyemak Imbas. Nota: kebenaran ini tidak boleh dikuatkuasakan oleh penyemak imbas pihak ketiga atau aplikasi lain dengan keupayaan menyemak imbas web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Membenarkan apl mengubah suai sejarah atau penanda halaman Penyemak Imbas yang tersimpan pada telefon anda. Ini boleh membenarkan apl untuk memadam atau mengubah suai data Penyemak Imbas. Nota: kebenaran ini tidak boleh dikuatkuasakan oleh penyemak imbas pihak ketiga atau aplikasi lain dengan keupayaan menyemak imbas web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"tetapkan penggera"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Membenarkan apl untuk menetapkan penggera dalam apl penggera jam yang dipasang. Sesetengah applikasi jam penggera tidak boleh melaksanakan ciri ini."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"tambah mel suara"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Membenarkan apl untuk menambahkan mesej pada peti masuk mel suara anda."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ubah suai kebenaran geolokasi Penyemak Imbas"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Membenarkan apl untuk mengubah suai kebenaran geolokasi Penyemak Imbas. Apl hasad boleh menggunakannya untuk membenarkan menghantar maklumat lokasi kepada laman web sembarangan."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Adakah anda mahu penyemak imbas mengingati kata laluan ini?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Bukan sekarang"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Ingat"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Jangan sekali-kali"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Anda tidak mempunyai kebenaran untuk membuka laman ini."</string>
- <string name="text_copied" msgid="2531420577879738860">"Teks disalin ke papan keratan"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditampalkan daripada <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditampal daripada papan keratan anda"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal teks yang anda salin"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal imej yang anda salin"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal kandungan yang anda salin"</string>
<string name="more_item_label" msgid="7419249600215749115">"Lagi"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Anda boleh menukar ini nanti dalam Tetapan > Apl"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Sentiasa Benarkan"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Jangan Benarkan"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM dialih keluar"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Rangkaian mudah alih tidak akan tersedia sehingga anda memulakan semula dengan SIM yang sah."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Selesai"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM ditambah"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Mulakan semula peranti anda untuk mengakses rangkaian mudah alih."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Mulakan semula"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktifkan perkhidmatan mudah alih"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Kini SIM dilumpuhkan. Masukkan kod PUK untuk meneruskan. Hubungi pembawa untuk butiran."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Masukkan kod PIN yang diingini"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Sahkan kod PIN yang diingini"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Membuka kunci SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Kod PIN salah."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Taipkan PIN yang mengandungi 4 hingga 8 nombor."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Kod PUK mestilah 8 nombor."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Alih keluar"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Naikkan kelantangan melebihi paras yang disyokorkan?\n\nMendengar pada kelantangan yang tinggi untuk tempoh yang lama boleh merosakkan pendengaran anda."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Amaran,\nAnda telah melebihi jumlah isyarat bunyi kuat yang boleh didengari dengan selamat menggunakan fon kepala dalam masa seminggu.\n\nMendengar melebihi had ini akan merosakkan pendengaran anda secara kekal."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Amaran,\nAnda telah melebihi 5 kali ganda jumlah isyarat bunyi kuat yang boleh didengari dengan selamat menggunakan fon kepala dalam masa seminggu.\n\nKelantangan telah dikurangkan untuk melindungi pendengaran anda."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Kelantangan media yang anda dengar boleh mengakibatkan kerosakan pendengaran apabila dilakukan untuk jangka masa yang panjang.\n\nMemainkan media pada kelantangan ini secara berterusan untuk jangka masa yang panjang boleh merosakkan pendengaran anda."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Amaran,\nAnda sedang mendengar kandungan lantang yang dimainkan pada tahap yang tidak selamat.\n\nMendengar pada kelantangan secara berterusan ini akan merosakkan pendengaran anda secara kekal."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gunakan Pintasan Kebolehaksesan?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Apabila pintasan dihidupkan, tindakan menekan kedua-dua butang kelantangan selama 3 saat akan memulakan ciri kebolehaksesan."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Hidupkan pintasan untuk ciri kebolehaksesan?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Matikan pintasan"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Penyongsangan Warna"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Pembetulan warna"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mod sebelah tangan"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Amat malap"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dihidupkan."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Benarkan apl rakan menghantar mesej rakan kepada peranti lain."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Mulakan perkhidmatan latar depan dari latar"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Benarkan apl rakan memulakan perkhidmatan latar depan dari latar."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon tersedia"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon disekat"</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 789ac5b..7e113a5 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"သင် ရိုက်ထည့်ခဲ့သည့် PIN များ မတိုက်ဆိုင်ပါ။"</string>
<string name="invalidPin" msgid="7542498253319440408">"နံပါတ်(၄)ခုမှ(၈)ခုအထိပါရှိသော ပင်နံပါတ်အားထည့်ပါ"</string>
<string name="invalidPuk" msgid="8831151490931907083">"နံပါတ်(၈)ခုသို့မဟုတ် ထိုထက်ရှည်သောသော PUKအားထည့်သွင်းပါ"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"ဆင်းမ်၏ ပင်နံပါတ်ပြန်ဖွင့်သည့် ကုဒ်ကို လော့ခ်ချထားသည်။ ၎င်းကိုဖွင့်ရန် ပင်နံပါတ်ပြန်ဖွင့်သည့် ကုဒ်ကို ထည့်ပါ။"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"ဆင်းမ်ကိုဖွင့်ရန် ပင်နံပါတ်ပြန်ဖွင့်သည့် ကုဒ် ၂ ကို ထည့်ပါ။"</string>
<string name="enablePin" msgid="2543771964137091212">"မအောင်မြင်ပါ, SIM/RUIM သော့ကို အရင် သုံးခွင့်ပြုရန်"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">ဆင်းမ်ကတ် သော့မချခင် သင့်တွင် <xliff:g id="NUMBER_1">%d</xliff:g> ခါ ကြိုးစားခွင့်များကျန်ပါသေးသည်။</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"အပလီကေးရှင်းအား နောက်ကွယ်တွင် ဖွင့်ထားသော အခြားအပလီကေးရှင်းများရဲ့ လုပ်ဆောင်မှုများအား ရပ်ခွင့်ပေးပါ။ ဒီလိုလုပ်ခြင်းဖြင့် အခြား အပလီကေးရှင်းများ ရပ်တန့်သွားနိုင်ပါသည်"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"ဤအက်ပ်သည် အခြားအက်ပ်များ၏ အပေါ်တွင် ဖွင့်နိုင်ပါသည်"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"ဤအက်ပ်သည် အခြားအက်ပ်များ၏အပေါ် သို့မဟုတ် မျက်နှာပြင်၏ အခြားအစိတ်အပိုင်းများ၏ အပေါ်တွင် ဖွင့်နိုင်ပါသည်။ ၎င်းသည် သာမန်အက်ပ်အသုံးပြုခြင်းကို အနှောင့်အယှက်ဖြစ်စေနိုင်ပြီး အခြားအက်ပ်များအား ဖွင့်ပုံကို ပြောင်းလဲစေနိုင်ပါသည်။"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"အခြားအက်ပ်များထပ်ပိုးခြင်းကို ဖျောက်ခြင်း"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"ဤအက်ပ်က ၎င်းအပေါ်တွင် အခြားအက်ပ်များ ထပ်ပိုး၍ ပြသခြင်းကို ဖျောက်ထားရန် တောင်းဆိုနိုင်သည်။"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"နောက်ခံတွင် ဖွင့်ရန်"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ဤအက်ပ်သည် နောက်ခံတွင် ပွင့်နေနိုင်သောကြောင့် ဘက်ထရီအကုန် မြန်စေနိုင်ပါသည်။"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"နောက်ခံတွင် ဒေတာအသုံးပြုရန်"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"ထပ် စမ်းပါ"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ဝန်ဆောင်မှုနှင့် ဒေတာအားလုံးအတွက် လော့ခ်ဖွင့်ပါ"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"မျက်မှာပြ လော့ခ်ဖွင့်ခြင်း ခွင့်ပြုသော အကြိမ်ရေထက် ကျော်လွန်သွားပါပြီ"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"ဆင်းမ်မရှိပါ"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"တက်ဘလက်တွင် ဆင်းမ်မရှိပါ။"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"သင့် Android TV စက်တွင် ဆင်းမ်မရှိပါ။"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ဖုန်းတွင် ဆင်းမ်မရှိပါ။"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"ဆင်းမ်ထည့်ပါ။"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"ဆင်းမ်မရှိပါ (သို့) သုံး၍မရပါ။ ဆင်းမ်ထည့်ပါ။"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ဆင်းမ်ကို သုံး၍မရပါ။"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"သင်၏ဆင်းမ်ကို အပြီးပိတ်လိုက်သည်။\n ဆင်းမ်နောက်တစ်ခု ရယူရန် သင်၏ ကြိုးမဲ့ဝန်ဆောင်မှုပေးသူထံ ဆက်သွယ်ပါ။"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"ယခင် တစ်ပုဒ်"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"နောက် တစ်ပုဒ်"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"ခဏရပ်ရန်"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"ရှေ့သို့ သွားရန်"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"အရေးပေါ်ခေါ်ဆိုမှုသာ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ကွန်ရက် သော့ကျနေခြင်း"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"ဆင်းမ်၏ ပင်နံပါတ်ပြန်ဖွင့်သည့် ကုဒ်ကို လော့ခ်ချထားသည်။"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"သုံးစွဲသူ လမ်းညွှန်ကို ကြည့်ပါ သို့မဟုတ် ဖောက်သည်များ စောင့်ရှောက်ရေး ဌာနကို ဆက်သွယ်ပါ။"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"ဆင်းမ်ကို လော့ခ်ချထားသည်။"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"ဆင်းမ်ကိုဖွင့်နေသည်…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"သင်သည် သော့ဖွင့် ပုံစံကို<xliff:g id="NUMBER_0">%1$d</xliff:g> ကြိမ် မမှန်မကန် ရေးဆွဲခဲ့သည်။ \n\nထပ်ပြီးတော့ <xliff:g id="NUMBER_1">%2$d</xliff:g>စက္ကန့် အကြာမှာ စမ်းကြည့်ပါ။"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"သင်သည် စကားဝှက်ကို <xliff:g id="NUMBER_0">%1$d</xliff:g> ကြိမ် မမှန်မကန် ရိုက်ခဲ့ပြီ။ \n\n ထပ်ပြီးတော့ <xliff:g id="NUMBER_1">%2$d</xliff:g> စက္ကန့်အကြာ စမ်းကြည့်ပါ။"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"သင်သည် သင်၏ PIN <xliff:g id="NUMBER_0">%1$d</xliff:g>ကို ကြိမ် မမှန်မကန် ရိုက်ခဲ့ပြီ။ \n\n ထပ်ပြီးတော့ <xliff:g id="NUMBER_1">%2$d</xliff:g> စက္ကန့်အကြာ စမ်းကြည့်ပါ။"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ဒီစာမျက်နှာကနေ သွားပါ"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ဒီစာမျက်နှာပေါ်မှာ ဆက်နေပါ"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nဒီစာမျက်နှာကနေ သွားဖို့ သေချာပါသလား?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"အတည်ပြုသည်"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"အကြံပေးချက်- ဇူးမ်ဆွဲရန်နှင့် ဖြုတ်ရန် နှစ်ကြိမ်ဆက်တိုက် တို့ပါ"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"အလိုအလျောက်ဖြည့်ပါ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"အလိုအလျောက်ဖြည့်ရန် သတ်မှတ်သည်"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> သုံးပြီး အလိုအလျောက်ဖြည့်ပါ"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"စီရင်စု"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"စာပို့သင်္ကေတ"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ပြည်နယ်"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"စာပို့သင်္ကေတ"</string>
- <string name="autofill_county" msgid="7781382735643492173">"နယ်"</string>
- <string name="autofill_island" msgid="5367139008536593734">"ကျွန်း"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ခရိုင်"</string>
- <string name="autofill_department" msgid="9047276226873531529">"ဌာန"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"စီရင်စုနယ်"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"ခရစ်ယာန်အသင်းတော်နယ်ပယ်"</string>
- <string name="autofill_area" msgid="8289022370678448983">"နေရာ"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"စော်ဘွား"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"သင့်ရဲ့ ဝဘ် အမှတ်နေရာများနှင့် သွားလာသော မှတ်တမ်းအား ဖတ်ခြင်း"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"အပလီကေးရှင်းအား ဘရောင်ဇာမှ ယခင် သွားရောက်ထားသော URLများ၊ နေရာ အမှတ်အသားများအား ကြည့်ရှုခွင့်ပြုပါ။ မှတ်ချက်။ ဒီခွင့်ပြုချက်ကို တတိယပါတီ ဘရောင်ဇာများ နှင့် တခြား အပလီကေးရှင်းများမှ လုပ်ဆောင်မည် မဟုတ်ပါ။"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"သင့်ရဲ့ ဝဘ် အမှတ်နေရာများနှင့် သွားလာသော မှတ်တမ်း ရေးခြင်း"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"အပလီကေးရှင်းအား ဘရောင်ဇာမှ မှတ်တမ်း သို့ မှတ်သားမှု အမှတ်များအား ပြင်ဆင်ခွင့် ပေးခြင်း။ အပလီကေးရှင်းမှ ဘရောင်ဇာ မှတ်တမ်းများကို ဖျက်ပစ်ခွင့် သို့ ပြင်ဆင်ခွင့် ရှိပါမည်။ မှတ်ချက်။ ဤခွင့်ပြုချက်ကို တတိယပါတီ ဘရောင်ဇာများ၊ တခြား အပလီကေးရှင်းများမှ သုံးမည် မဟုတ်ပါ။"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ဘရောင်ဇာ၏မှတ်တမ်း သို့မဟုတ် သင့် Android TV တွင် သိမ်းထားသည့် လိပ်စာများကို အက်ပ်အား ပြင်ဆင်ခွင့်ပြုသည်။ ဤသို့ခွင့်ပြုခြင်းဖြင့် ဘရောင်ဇာ၏ အချက်အလက်များအား ဖျက်ပစ်ရန် သို့မဟုတ် ပြင်ဆင်ရန် ခွင့်ပြုပေးနိုင်သည်။ မှတ်ချက်- ပြင်ပဘရောင်ဇာများ သို့မဟုတ် ဝဘ်ဆိုက်ဖွင့်ကြည့်နိုင်သည့် အခြားအပလီကေးရှင်းမျာသည် ဤခွင့်ပြုချက်ကို အသုံးပြုမည် မဟုတ်ပါ။"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"အပလီကေးရှင်းအား ဘရောင်ဇာမှ မှတ်တမ်း သို့ မှတ်သားမှု အမှတ်များအား ပြင်ဆင်ခွင့် ပေးခြင်း။ အပလီကေးရှင်းမှ ဘရောင်ဇာ မှတ်တမ်းများကို ဖျက်ပစ်ခွင့် သို့ ပြင်ဆင်ခွင့် ရှိပါမည်။ မှတ်ချက်။ ဒီခွင့်ပြုချက်ကို တတိယပါတီ ဘရောင်ဇာများ၊ တခြား အပလီကေးရှင်းများမှ သုံးမည် မဟုတ်ပါ။"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"နှိုးစက်သတ်မှတ်ရန်"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"အက်ပ်အား တပ်ဆင်ထားသည့် နှိုးစက်နာရီ အက်ပ်ထဲတွင် နှိုးစက်ကို သတ်မှတ်ခွင့် ပြုသည်။ အချို့ နှိုးစက် အက်ပ်များက ထိုအင်္ဂါရပ်ကို ပြီးမြောက်အောင် မလုပ်နိုင်ကြပါ။"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"အသံစာပို့စနစ်အားထည့်ရန်"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"အက်ပ်အား သင့် အသံမေးလ် ဝင်စာသို့ စာများကို ထည့်ခွင့် ပြုသည်။"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ဘရောင်ဇာ ဘူမိဇုန်သတ်မှတ်မှု ခွင့်ပြုချက်များကို မွမ်းမံခြင်း"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"အက်ပ်အား ဘရောင်ဇာ၏ ဘူမိဇုန်သတ်မှတ်ရေး ခွင့်ပြုချက်များကို မွမ်းမံခွင့်ပြုသည်။ အဖျက်အက်ပ်များက ၎င်းကိုအသုံးချပြီး လိုရာ ဝဘ်ဆိုက်များသို့ တည်နေရာအချက်အလက် ပို့နိုင်သည်။"</string>
- <string name="save_password_message" msgid="2146409467245462965">"ဤလျှို့ဝှက်စကားဝှက်အား ဘရောင်ဇာကိုမှတ်ခိုင်းမည်လား"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ယခုမလုပ်ပါ"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"မှတ်ထားရန်"</string>
- <string name="save_password_never" msgid="6776808375903410659">"လုံးဝ မလုပ်ပါ"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"သင့်ဆီမှာ ဒီစာမျက်နှာကို ဖွင့်ရန် ခွင့်ပြုချက် မရှိပါ။"</string>
- <string name="text_copied" msgid="2531420577879738860">"clipboardထံ စာသားအားကူးယူမည်"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> မှ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> သို့ ကူးထည့်ထားသည်"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင့်ကလစ်ဘုတ်မှ ကူးထည့်ထားသည်"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော စာသားကို ထည့်လိုက်သည်"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော ပုံကို ထည့်လိုက်သည်"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော အကြောင်းအရာကို ထည့်လိုက်သည်"</string>
<string name="more_item_label" msgid="7419249600215749115">"နောက်ထပ်"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"နောင်တွင် ဆက်တင် > အပလီကေးရှင်းများ မှပြောင်းနိုင်သည်"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"အမြဲခွင့်ပြုရန်"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ဘယ်တော့မှခွင့်မပြုပါ"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"ဆင်းမ်ဖယ်ရှားလိုက်သည်"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"မှန်ကန်သောဆင်းမ်ဖြင့် ပြန်မစမချင်း မိုဘိုင်းကွန်ရက်ကို ရနိုင်မည်မဟုတ်ပါ။"</string>
<string name="sim_done_button" msgid="6464250841528410598">"ပြီးပါပြီ"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"ဆင်းမ်ထည့်လိုက်သည်"</string>
<string name="sim_added_message" msgid="6602906609509958680">"မိုးဘိုင်းကွန်ရက်ကို ဆက်သွယ်ရန် စက်ကို ပြန် စ ပါ"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ပြန်စရန်"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"မိုဘိုင်းဝန်ဆောင်မှု စတင်ဖွင့်လှစ်ရန်"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"ဆင်းမ်ကဒ်သည် ယခု ပိတ်သွားပါပြီ ဆက်လက် လုပ်ဆောင်ရန် ပင်နံပါတ် ပြန်ဖွင့်သည့် ကုဒ်ကို ရိုက်ထည့်ပါ။ ပိုမိုသိချင်လျင် ဖုန်းဝန်ဆောင်မှု ပေးသောဌာန အားဆက်သွယ်နိုင်ပါသည်။"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"လိုချင်သော ပင်နံပါတ်ကို ရိုက်ထည့်ပါ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"လိုချင်သော ပင်နံပါတ်ကို အတည်ပြုရန်"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"ဆင်းမ်ကိုဖွင့်နေသည်…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ပင်နံပါတ် အမှား"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"ဂဏန်း၄ လုံးမှ ၈ လုံးအထိ ရှိသော ပင်နံပါတ် ရိုက်ထည့်ပါ"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"ပင်နံပါတ် ပြန်ဖွင့်သည့် ကုဒ် က နံပါတ် ၈ လုံး ဖြစ်ရပါမည်"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ဖယ်ရှားရန်"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"အသံကို အကြံပြုထားသည့် ပမာဏထက် မြှင့်ပေးရမလား?\n\nအသံကို မြင့်သည့် အဆင့်မှာ ကြာရှည်စွာ နားထောင်ခြင်းက သင်၏ နားကို ထိခိုက်စေနိုင်သည်။"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"သတိပေးချက်-\nတစ်ပတ်တာအတွင်း နားကြပ်ဖြင့် ဘေးကင်းကင်း အသံကျယ်လောင်စွာ နားထောင်နိုင်သည့် ပမာဏကို ကျော်လွန်သွားပါပြီ။\n\nဤကန့်သတ်ချက်ကျော်လွန်ခြင်းက သင့်အကြားအာရုံကို ထာဝရထိခိုက်စေမည်။"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"သတိပေးချက်-\nတစ်ပတ်တာအတွင်း နားကြပ်ဖြင့် ဘေးကင်းကင်း အသံကျယ်လောင်စွာ နားထောင်နိုင်သည့် ပမာဏထက် ၅ ဆ ကျော်လွန်သွားပါပြီ။\n\nသင့်အကြားအာရုံကို မထိခိုက်စေရန် အသံတိုးလိုက်သည်။"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"မီဒီယာကို ယခုနားထောင်သည့်အဆင့်ဖြင့် အချိန်ကြာမြင့်စွာ နားထောင်ပါက အကြားအာရုံကို ထိခိုက်နိုင်သည်။\n\nဤအဆင့်ဖြင့် အချိန်ကြာမြင့်စွာ ဆက်ဖွင့်ခြင်းက သင့်အကြားအာရုံကို ထိခိုက်စေနိုင်သည်။"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"သတိပေးချက်-\nသင်သည် ကျယ်လောင်သော အကြောင်းအရာကို အန္တရာယ်ရှိသောအဆင့်ဖြင့် လက်ရှိဖွင့်ထားသည်။\n\nဤသို့ကျယ်လောင်စွာ ဆက်လက်နားထောင်ခြင်းက သင့်အကြားအာရုံကို ထာဝရထိခိုက်စေမည်။"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"အများသုံးစွဲနိုင်မှု ဖြတ်လမ်းလင့်ခ်ကို အသုံးပြုလိုပါသလား။"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ဖြတ်လမ်းလင့်ခ်ကို ဖွင့်ထားစဉ် အသံထိန်းခလုတ် နှစ်ခုစလုံးကို ၃ စက္ကန့်ခန့် ဖိထားခြင်းဖြင့် အများသုံးနိုင်သည့် ဝန်ဆောင်မှုကို ဖွင့်နိုင်သည်။"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုများအတွက် ဖြတ်လမ်းကို ဖွင့်မလား။"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ဖြတ်လမ်းလင့်ခ်ကို ပိတ်ရန်"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ဖြတ်လမ်းလင့်ခ်ကို သုံးရန်"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"အရောင် ပြောင်းပြန်လှန်ခြင်း"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"အရောင် အမှန်ပြင်ခြင်း"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"လက်တစ်ဖက်သုံးမုဒ်"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ပိုမှိန်ခြင်း"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ဖွင့်လိုက်သည်။"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"အခြားစက်များသို့ တွဲသုံးနိုင်သော မက်ဆေ့ဂျ်များပို့ရန် တွဲဖက် အက်ပ်ကို ခွင့်ပြုသည်။"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"နောက်ခံမှနေ၍ မျက်နှာစာဝန်ဆောင်မှုများ စတင်ခြင်း"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"နောက်ခံမှနေ၍ မျက်နှာစာဝန်ဆောင်မှုများ စတင်ရန် တွဲဖက် အက်ပ်ကို ခွင့်ပြုသည်။"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"မိုက်ခရိုဖုန်း သုံးနိုင်သည်"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"မိုက်ခရိုဖုန်း ပိတ်ထားသည်"</string>
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index ba8f470..922f8f7 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"De personlige kodene du har skrevet inn samsvarer ikke."</string>
<string name="invalidPin" msgid="7542498253319440408">"PIN-koden må være mellom fire og åtte siffer."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Skriv inn en PUK-kode på åtte tall eller mer."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM-kortet er låst med PUK. Skriv inn PUK-koden for å låse det opp."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Skriv inn PUK2 for å oppheve blokkeringen av SIM-kortet."</string>
<string name="enablePin" msgid="2543771964137091212">"Mislyktes – aktiver lås for SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Du har <xliff:g id="NUMBER_1">%d</xliff:g> forsøk igjen før SIM-kortet låses.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Lar appen avslutte andre appers bakgrunnsprosesser. Dette kan føre til at andre apper slutter å kjøre."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Denne appen kan ligge over andre apper"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Denne appen kan vises over andre apper eller andre deler av skjermen. Dette kan påvirke normal bruk av apper og endre måten andre apper vises på."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"skjul overlegg fra andre apper"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Denne appen kan be om at systemet skjuler overlegg som kommer fra apper som vises over den."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"kjør i bakgrunnen"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Denne appen kan kjøre i bakgrunnen. Det kan øke batteribruken."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"bruk data i bakgrunnen"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Prøv på nytt"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Lås opp for å få alle funksjoner og data"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Du har overskredet grensen for opplåsingsforsøk med Ansiktslås"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Ingen SIM-kort"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Det er ingen SIM-kort i nettbrettet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Det er ingen SIM-kort i Android TV-enheten."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Det er ingen SIM-kort i telefonen."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Legg til et SIM-kort."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-kortet mangler eller kan ikke leses. Legg til et SIM-kort."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM-kortet kan ikke brukes."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM-kortet er deaktivert permanent.\n Kontakt leverandøren av trådløstjenesten for å få et nytt SIM-kort."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Forrige spor"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Neste spor"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Sett på pause"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Fremoverspoling"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Bare nødanrop"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Nettverk ikke tillatt"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-kortet er låst med PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Les i brukerhåndboken eller kontakt brukerstøtten."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-kortet er låst."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Låser opp SIM-kortet …"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Du har oppgitt feil opplåsingsmønster <xliff:g id="NUMBER_0">%1$d</xliff:g> ganger.\n\nPrøv på nytt om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Du har skrevet inn feil passord <xliff:g id="NUMBER_0">%1$d</xliff:g> ganger.\n\nPrøv på nytt om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Du har skrevet inn feil PIN-kode <xliff:g id="NUMBER_0">%1$d</xliff:g> ganger.\n\nPrøv på nytt om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Forlat denne siden"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Bli værende på denne siden"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nEr du sikker på at du vil navigere bort fra denne siden?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Bekreft"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tips: Dobbelttrykk for å zoome inn og ut."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofyll"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Konfig. autofyll"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autofyll med <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provins"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postnummer"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Delstat"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Postnummer"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Fylke"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Øy"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrikt"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departement"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektur"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Sogn"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Område"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"lese nettbokmerkene og nettloggen din"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Lar appen lese loggen for alle nettadressene nettleseren har besøkt, og alle bokmerkene i nettleseren. Vær oppmerksom på at denne tillatelsen kanskje ikke benyttes av tredjepartsnettlesere eller andre apper med mulighet for nettsurfing."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"skrive nettbokmerker og nettlogg"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Lar appen endre nettleserens logg eller bokmerker lagret på nettbrettet ditt. Dette kan føre til at appen sletter eller endrer nettlesingsdata. Vær oppmerksom på at denne tillatelsen kanskje ikke benyttes av tredjepartsnettlesere eller andre apper med mulighet for nettsurfing."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Lar appen endre nettleserens logg eller bokmerker som er lagret på Android TV-enheten din. Dette kan føre til at appen sletter eller endrer nettlesingsdata. Vær oppmerksom på at denne tillatelsen kanskje ikke benyttes av tredjepartsnettlesere eller andre apper med mulighet for nettsurfing."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Lar appen endre nettleserens logg eller bokmerker lagret på telefonen din. Dette kan føre til at appen sletter eller endrer nettlesingsdata. Vær oppmerksom på at denne tillatelsen kanskje ikke benyttes av tredjepartsnettlesere eller andre apper med mulighet for nettsurfing."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"stille alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Lar appen stille inn alarmen for en installert alarmklokke-app. Enkelte alarmklokke-apper implementerer kanskje ikke denne funksjonen."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"legge til talepost"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Lar appen legge til meldinger i talepostkassen din."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"endre nettleserens tillatelser for geoposisjonering"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Lar appen endre nettleserens tillatelser for geoposisjonering. Ondsinnede apper kan bruke dette for å tillate sending av posisjonsinformasjon til vilkårlige nettsteder."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Ønsker du at nettleseren skal huske dette passordet?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ikke nå"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Husk"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Aldri"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Du har ikke tillatelse til å åpne denne siden."</string>
- <string name="text_copied" msgid="2531420577879738860">"Kopierte tekst til utklippstavlen."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn fra <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> har limt inn fra utklippstavlen"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn tekst du kopierte"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn et bilde du kopierte"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn innhold du kopierte"</string>
<string name="more_item_label" msgid="7419249600215749115">"Mer"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"menyknapp+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Du kan endre dette senere i Innstillinger > Apper"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Alltid tillat"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Aldri tillat"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-kortet er tatt ut"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilnettverket er utilgjengelig frem til du starter enheten på nytt med et gyldig SIM-kort."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Ferdig"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-kortet er lagt til"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Start enheten på nytt for å få tilgang til det mobile nettverket."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Start på nytt"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktiver mobiltjeneste"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-kortet er nå deaktivert. Skriv inn PUK-koden for å fortsette. Ta kontakt med operatøren for mer informasjon."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Tast inn ønsket PIN-kode"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Bekreft ønsket PIN-kode"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Låser opp SIM-kortet …"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Feil PIN-kode."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Skriv inn en PIN-kode på fire til åtte sifre."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-koden skal være på åtte sifre."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Fjern"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vil du øke volumet til over anbefalt nivå?\n\nHvis du hører på et høyt volum over lengre perioder, kan det skade hørselen din."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Advarsel:\nDu har overskredet antallet høye lydsignaler det er trygt å lytte til i løpet av en uke via hodetelefoner.\n\nHvis du går over denne grensen, blir hørselen permanent skadet."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Advarsel:\nDu har overskredet 5 ganger antallet høye lydsignaler det er trygt å lytte til i løpet av en uke via hodetelefoner.\n\nVolumet er senket for å beskytte hørselen."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Lydnivået du bruker til å lytte til medier, kan føre til hørselsskade når det vedvarer over lengre perioder.\n\nHvis du fortsetter å spille av på dette nivået over lengre perioder, kan du skade hørselen."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Advarsel:\nDu lytter til høyt innhold som spilles av på et utrygt nivå.\n\nHvis du fortsetter å lytte på dette lydnivået, fører det til permanent hørselsskade."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vil du bruke tilgjengelighetssnarveien?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Når snarveien er på, starter en tilgjengelighetsfunksjon når du trykker inn begge volumknappene i tre sekunder."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Vil du slå på snarveien for tilgjengelighetsfunksjoner?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Slå av snarveien"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Bruk snarveien"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Fargeinvertering"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Fargekorrigering"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhåndsmodus"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dimmet"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Lar en følgeapp levere meldinger til andre enheter."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Start forgrunnstjenester fra bakgrunnen"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Lar en følgeapp starte forgrunnstjenester fra bakgrunnen."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofonen er tilgjengelig"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofonen er blokkert"</string>
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 9760944..b8f8dd9 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"तपाईंले टाइप गर्नुभएको PIN मेल खाँदैन।"</string>
<string name="invalidPin" msgid="7542498253319440408">"४ देखि ८ वटा नम्बर भएको एउटा PIN टाइप गर्नुहोस्।"</string>
<string name="invalidPuk" msgid="8831151490931907083">"८ वटा नम्बरहरू वा सो भन्दा लामो एउटा PUK टाइप गर्नुहोस्।"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"तपाईंको SIM कार्ड PUK प्रयोग गरी लक गरिएको छ। उक्त SIM कार्ड अनलक गर्न PUK कोड टाइप गर्नुहोस्।"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM कार्ड अनब्लक गर्न PUK2 टाइप गर्नुहोस्।"</string>
<string name="enablePin" msgid="2543771964137091212">"असफल, SIM/RUIM बन्द छ।"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">तपाईंसँग SIM बन्द हुनु अघि <xliff:g id="NUMBER_1">%d</xliff:g> बाँकी प्रयासहरू छन्।</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"एपलाई अन्य अनुप्रयोगहरूको पृष्ठभूमि प्रक्रियाहरू बन्द गर्न अनुमति दिन्छ। यसले अन्य एपहरूलाई चल्नबाट रोक्न सक्दछ।"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"यो एप अन्य एपहरूमाथि देखा पर्न सक्छ"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"यो एप अन्य एपहरूमाथि वा स्क्रिनका अन्य भागहरूमा देखा पर्न सक्छ। यसले एपको सामान्य प्रयोगमा अवरोध पुर्याउन सक्छ र अन्य एपहरू देखा पर्ने तरिकालाई परिवर्तन गर्न सक्छ।"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"एपका अन्य ओभरलेहरू लुकाउने अनुमति"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"यो एपले सिस्टमलाई एपहरूबाट उत्पन्न हुने ओभरलेहरू यो एपको माथि नदेखिने गरी लुकाउन अनुरोध गर्न सक्छ।"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"पृष्ठभूमिमा चलाउनुहोस्"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"यो एप ब्याकग्राउन्डमा चल्न सक्छ। यसले गर्दा छिट्टै ब्याट्रीको खपत हुनसक्छ।"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"पृष्ठभूमिमा डेटा प्रयोग गर्नुहोस्"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"फेरि प्रयास गर्नुहोस्"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"सबै सुविधाहरू र डेटाका लागि अनलक गर्नुहोस्"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"फेस अनलक प्रयोग गरी अनलक गर्ने प्रयास अत्याधिक धेरै भयो"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM कार्ड हालिएको छैन"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ट्याब्लेटमा SIM कार्ड हालिएको छैन।"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"तपाईंको Android TV डिभाइसमा SIM कार्ड हालिएको छैन।"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"फोनमा SIM कार्ड हालिएको छैन।"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM कार्ड हाल्नुहोस्।"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM कार्ड हालिएको छैन वा रिड गर्न मिल्दैन। SIM कार्ड हाल्नुहोस्।"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"यो SIM कार्ड प्रयोग गर्न मिल्दैन।"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"तपाईंको SIM कार्ड सदाका लागि डिएक्टिभेट गरिएको छ।\n आफ्नो वायरलेस सेवा प्रदायकलाई सम्पर्क गरी अर्को SIM कार्ड प्राप्त गर्नुहोस्।"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"अघिल्लो ट्रयाक"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"अर्को ट्रयाक"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"रोक्नुहोस्"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"फास्ट फर्वार्ड"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"आपत्कालीन कलहरू मात्र"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"नेटवर्क लक छ"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM कार्ड PUK प्रयोग गरी लक गरिएको छ।"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"प्रयोगकर्ता निर्देशक वा ग्राहक सेवा सम्पर्क हर्नुहोस्।"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM कार्ड लक गरिएको छ।"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM कार्ड अनलक गरिँदै छ…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"तपाईँले तपाईँको अनलक प्याटर्न गलत तरिकाले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक खिच्नु भएको छ। \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि कोसिस गर्नुहोस्।"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"तपाईंले गलत तरिकाले आफ्नो पासवर्ड <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक टाइप गर्नुभयो। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"तपाईँले गलत तरिकाले तपाईँको PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक टाइप गर्नु भएको छ। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"यस पृष्ठलाई छोड्नुहोस्"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"यही पृष्ठमा रहनुहोस्"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nके तपाईं यो पेजबाट नेभिगेट गर्न चाहनु हुन्छ भन्ने निश्चत छ?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"निश्चित गर्नुहोस्"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"जुक्ति: जुमलाई ठुलो र सानो पार्न दुई पटक हान्नुहोस्।"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"स्वतः भर्ने"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"अटोफिल सेटअप गर्नुहोस्"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> मार्फत स्वतः भरण गर्नुहोस्"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$१$२$३"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"प्रान्त"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"हुलाकी कोड"</string>
- <string name="autofill_state" msgid="3341725337190434069">"राज्य"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP कोड"</string>
- <string name="autofill_county" msgid="7781382735643492173">"काउन्टी"</string>
- <string name="autofill_island" msgid="5367139008536593734">"टापु"</string>
- <string name="autofill_district" msgid="6428712062213557327">"जिल्ला"</string>
- <string name="autofill_department" msgid="9047276226873531529">"विभाग"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"प्रशासकीय क्षेत्र"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"पेरिस"</string>
- <string name="autofill_area" msgid="8289022370678448983">"क्षेत्र"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"इमिरेट"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"तपाईँका बुकमार्कहरू र इतिहास पढ्नुहोस्"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ब्राउजरले भ्रमण गरेको सबै URL हरूको इतिहास र ब्राउजरका सबै बुकमार्कहरू पढ्नको लागि एपलाई अनुमति दिन्छ। नोट: यो अनुमतिलाई तेस्रो पक्ष ब्राउजरहरूद्वारा वा वेब ब्राउज गर्ने क्षमताद्वारा बलपूर्वक गराउन सकिँदैन।"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"वेब बुकमार्कहरू र इतिहास लेख्नुहोस्"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"एपलाई तपाईंको ट्याब्लेटमा भण्डार गरिएको ब्राउजरको इतिहास वा बुकमार्कहरू परिमार्जन गर्न अनुमति दिन्छ। यसले एपलाई ब्राजर डेटा मेटाउन वा परिमार्जन गर्न अनुमति दिन सक्दछ। टिप्पणी: यो अनुमति वेब ब्राउज गर्ने क्षमताहरूको साथ तेस्रो-पार्टी ब्राउजर वा अन्य अनुप्रयोगहरूद्वारा लागू गरिएको होइन।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"एपलाई तपाईंको Android टिभी डिभाइसमा भण्डारण गरिएका ब्राउजरको इतिहास र पुस्तक चिन्हहरू परिमार्जन गर्ने अनुमति दिन्छ। यसले एपलाई ब्राउजरको डेटा मेटाउने वा परिमार्जन गर्ने अनुमति दिन सक्छ। ध्यान दिनुहोस्: तेस्रो पक्षीय ब्राउजर वा वेब ब्राउज गर्ने सुविधा प्रदान गर्ने अन्य एपहरूले यो अनुमति लागू गर्न सक्दैनन्।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"तपाईँको फोनमा भण्डारण भएको ब्राउजरको इतिहास वा बुकमार्कहरू परिवर्तन गर्नको लागि एपलाई अनुमति दिन्छ। यसले सायद ब्राउजर डेटालाई मेट्न वा परिवर्तन गर्नको लागि एपलाई अनुमति दिन्छ। नोट: वेब ब्राउज गर्ने क्षमतासहितका अन्य एपहरू वा तेस्रो- पक्ष ब्राउजरद्वारा सायद यस अनुमतिलाई लागु गर्न सकिंदैन।"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"एउटा आलर्म सेट गर्नुहोस्"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"स्थापना गरिएको सङ्केत घडी एपमा सङ्केत समय मिलाउन एपलाई अनुमति दिन्छ। केही सङ्केत घडी एपहरूले यो सुविधा कार्यान्वयन नगर्न सक्छन्।"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"भ्वाइसमेल थप गर्नुहोस्"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"तपाईँको भ्वाइसमेल इनबक्समा सन्देश थप्नको लागि एपलाई अनुमति दिन्छ।"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"भूस्थान अनुमतिहरू ब्राउजर परिवर्तन गर्नुहोस्"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ब्राउजरको भू-स्थान अनुमतिहरू परिमार्जन गर्न एपलाई अनुमति दिन्छ। खराब एपहरूले स्थान सूचना मनपरी वेब साइटहरूमा पठाउने अनुमतिको लागि यसलाई प्रयोग गर्न सक्छन्।"</string>
- <string name="save_password_message" msgid="2146409467245462965">"के तपाईं ब्राउजरले यो पासवर्ड सम्झेको चाहनुहुन्छ?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"अहिले होइन"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"सम्झनुहोस्"</string>
- <string name="save_password_never" msgid="6776808375903410659">"कहिल्यै पनि होइन"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"यो पृष्ठ खोल्न तपाईँलाई अनुमति छैन।"</string>
- <string name="text_copied" msgid="2531420577879738860">"क्लिपबोर्डमा प्रतिलिप गरिएको पाठ।"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> मा रहेको डेटा कपी गरी <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> मा पेस्ट गरियो"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंको क्लिपबोर्डमा रहेको जानकारी पेस्ट गरेको छ"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको टेक्स्ट पेस्ट गरेको छ"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको एउटा फोटो पेस्ट गरेको छ"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको सामग्री पेस्ट गरेको छ"</string>
<string name="more_item_label" msgid="7419249600215749115">"बढी"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"मेनु+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"तपाईं यसलाई पछि सेटिङहरूमा बदल्न सक्नु हुन्छ > एपहरू"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"सधैँ अनुमति दिनुहोस्"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"कहिल्यै अनुमति नदिनुहोस्"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM कार्ड हटाइयो"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"तपाईंले वैध SIM कार्ड हालेर डिभाइस रिस्टार्ट गरेपछि मात्र मोबाइल नेटवर्क उपलब्ध हुने छ।"</string>
<string name="sim_done_button" msgid="6464250841528410598">"भयो"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM कार्ड हालियो"</string>
<string name="sim_added_message" msgid="6602906609509958680">"मोबाइल नेटवर्क पहुँच गर्न तपाईँको उपकरण पुनःस्टार्ट गर्नुहोस्।"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"पुनः सुरु गर्नुहोस्"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"मोबाइल सेवा अन गर्नुहोस्"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM कार्ड अहिले असक्षम छ। सुचारु गर्नको लागि PUK कोड प्रविष्टि गर्नुहोस्। विवरणको लागि वाहकलाई सम्पर्क गर्नुहोस्।"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"इच्छित PIN कोड प्रविष्टि गर्नुहोस्"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"मनपर्दो PIN कोड निश्चित गर्नुहोस्"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM कार्ड अनलक गरिँदै छ…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"गलत PIN कोड।"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"४ देखि ८ वाट नम्बर भएको एउटा PIN टाइप गर्नुहोस्।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK कोड ८ संख्याको हुनु पर्दछ।"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"हटाउनुहोस्"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"सिफारिस तहभन्दा आवाज ठुलो गर्नुहुन्छ?\n\nलामो समय सम्म उच्च आवाजमा सुन्दा तपाईँको सुन्ने शक्तिलाई हानी गर्न सक्छ।"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"चेतावनी,\nतपाईंले एक हप्तामा हेडफोनमार्फत सुरक्षित रूपमा सुन्न मिल्ने ठुला आवाजयुक्त सिग्नलहरूको मात्राका सम्बन्धमा तोकिएको सीमा नाघ्नुभएको छ।\n\nयो सीमा नाघेका खण्डमा तपाईंको श्रवण शक्ति सदाका लागि खराब हुने छ।"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"चेतावनी,\nतपाईंले एक हप्तामा हेडफोनमार्फत सुरक्षित रूपमा सुन्न मिल्ने ठुला आवाजयुक्त सिग्नलहरूको मात्राका सम्बन्धमा तोकिएको सीमा ५ गुणाले नाघ्नुभएको छ।\n\nतपाईंको श्रवण शक्तिमा असर नपरोस् भन्नाका लागि भोल्युम घटाइएको छ।"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"तपाईंले अहिले जति भोल्युममा मिडिया सुनिरहनुभएको छ त्यति नै भोल्युममा लामो समयसम्म मिडिया सुन्नुभयो भने तपाईंको श्रवण शक्ति खराब हुन सक्छ।\n\nतपाईंले लामो समयसम्म यति नै भोल्युममा मिडिया सुनिराख्नुभयो भने तपाईंको श्रवण शक्ति खराब हुन सक्छ।"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"चेतावनी,\nतपाईं अहिले असुरक्षित रूपमा उच्च भोल्युममा सामग्री सुन्दै हुनुहुन्छ।\n\nतपाईंले लामो समयसम्म यति नै भोल्युममा सामग्री सुनिराख्नुभयो भने तपाईंको श्रवण शक्ति सदाका लागि खराब हुने छ।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"पहुँच सम्बन्धी सर्टकट प्रयोग गर्ने हो?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"यो सर्टकट सक्रिय हुँदा, ३ सेकेन्डसम्म दुवै भोल्युम बटन थिच्नुले पहुँचसम्बन्धी कुनै सुविधा सुरु गर्ने छ।"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"एक्सेसिबिलिटीसम्बन्धी सुविधा प्रयोग गर्न सर्टकट अन गर्ने हो?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"सर्टकटलाई निष्क्रिय पार्नुहोस्"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"सर्टकट प्रयोग गर्नुहोस्"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"कलर इन्भर्सन"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"रङ सच्याउने सुविधा"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"एक हाते मोड"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"अझै मधुरो"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अन भयो।"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"यसले सहयोगी एपलाई अन्य डिभाइसमा सहयोगी म्यासेजहरू डेलिभर गर्ने अनुमति दिन्छ।"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"ब्याकग्राउन्डमा फोरग्राउन्ड सेवाहरू चलाउने अनुमति"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"यसले सहयोगी एपलाई ब्याकग्राउन्डमा फोरग्राउन्ड सेवाहरू चलाउने अनुमति दिन्छ।"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"माइक्रोफोन अनम्युट गरिएको छ"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"माइक्रोफोन म्युट गरिएको छ"</string>
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 9334303..aa6d168 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"De pincodes die je hebt ingevoerd, komen niet overeen."</string>
<string name="invalidPin" msgid="7542498253319440408">"Voer een pincode van 4 tot 8 cijfers in."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Typ een pukcode die 8 cijfers of langer is."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Je simkaart is vergrendeld met de pukcode. Typ de pukcode om te ontgrendelen."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Typ de PUK2-code om de simkaart niet meer te blokkeren."</string>
<string name="enablePin" msgid="2543771964137091212">"Mislukt. Zet SIM/RUIM-vergrendeling aan."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Je hebt nog <xliff:g id="NUMBER_1">%d</xliff:g> pogingen over voordat de simkaart wordt vergrendeld.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Hiermee kan de app achtergrondprocessen van andere apps beëindigen. Hierdoor kunnen andere apps worden gestopt."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Deze app kan op de voorgrond vóór andere apps worden weergegeven"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Deze app kan op de voorgrond worden weergegeven vóór andere apps of andere gedeelten van het scherm. Dit kan het normale app-gebruik verstoren en de manier wijzigen waarop andere apps worden weergegeven."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"overlays van andere apps verbergen"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Deze app kan het systeem vragen overlays van apps bovenop deze app te verbergen."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"uitvoeren op de achtergrond"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Deze app kan op de achtergrond worden uitgevoerd. Dit kan meer batterijlading verbruiken."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"data gebruiken op de achtergrond"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Nogmaals proberen"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Ontgrendelen voor alle functies en gegevens"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Maximaal aantal pogingen voor Ontgrendelen via gezichtsherkenning overschreden"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Geen simkaart"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Geen simkaart in tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Geen simkaart in je Android TV-apparaat."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Geen simkaart in telefoon."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Voeg een simkaart toe."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"De simkaart ontbreekt of kan niet worden gelezen. Voeg een simkaart toe."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Onbruikbare simkaart."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Je simkaart is permanent gedeactiveerd.\n Neem contact op met je mobiele serviceprovider voor een nieuwe simkaart."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Vorig nummer"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Volgend nummer"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Onderbreken"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Vooruitspoelen"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Alleen noodoproepen"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Netwerk vergrendeld"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"Simkaart is vergrendeld met pukcode."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Raadpleeg de gebruikershandleiding of neem contact op met de klantenservice."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"Simkaart is vergrendeld."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Simkaart ontgrendelen…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Je hebt je ontgrendelingspatroon <xliff:g id="NUMBER_0">%1$d</xliff:g> keer onjuist getekend. \n\nProbeer het opnieuw over <xliff:g id="NUMBER_1">%2$d</xliff:g> seconden."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Je hebt je wachtwoord <xliff:g id="NUMBER_0">%1$d</xliff:g> keer onjuist getypt. \n\nProbeer het opnieuw over <xliff:g id="NUMBER_1">%2$d</xliff:g> seconden."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Je hebt je pincode <xliff:g id="NUMBER_0">%1$d</xliff:g> keer onjuist getypt. \n\nProbeer het opnieuw over <xliff:g id="NUMBER_1">%2$d</xliff:g> seconden."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Deze pagina verlaten"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Op deze pagina blijven"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nWeet u zeker dat u deze pagina wilt verlaten?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Bevestigen"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: dubbeltik om in en uit te zoomen."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autom. invullen"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Autom. invullen instellen"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automatisch invullen met <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincie"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postcode"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Staat"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Postcode"</string>
- <string name="autofill_county" msgid="7781382735643492173">"County"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Eiland"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departement"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefectuur"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Gemeente"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Gebied"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emiraat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"je webbookmarks en -geschiedenis lezen"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Hiermee kan de app de geschiedenis lezen van alle URL\'s die in de systeemeigen browser zijn bezocht, en alle bookmarks in de systeemeigen browser. Let op: deze rechten kunnen niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"webbookmarks en -geschiedenis schrijven"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Hiermee kan de app de webgeschiedenis wijzigen in de systeemeigen browser en de bookmarks die zijn opgeslagen op je tablet. Deze rechten kunnen niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Hiermee kan de app de browsergeschiedenis of opgeslagen bookmarks bewerken op je Android TV-apparaat. Hierdoor kan de app mogelijk browsegegevens wissen of aanpassen. Opmerking: Dit recht kan niet worden afgedwongen door andere browsers of andere apps met internetmogelijkheden."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Hiermee kan de app de webgeschiedenis wijzigen in de systeemeigen browser en de bookmarks die zijn opgeslagen op je telefoon. Deze rechten kunnen niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"een wekker instellen"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Hiermee kan de app een wekker instellen in een geïnstalleerde wekker-app. Deze functie wordt door sommige wekker-apps niet geïmplementeerd."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"voicemail toevoegen"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Hiermee kan de app berichten toevoegen aan de inbox van je voicemail."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"geolocatierechten voor browser aanpassen"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Hiermee kan de app de geolocatierechten van de browser aanpassen. Schadelijke apps kunnen dit gebruiken om locatiegegevens te verzenden naar willekeurige websites."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Wil je dat de browser dit wachtwoord onthoudt?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Niet nu"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Onthouden"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nooit"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Je hebt geen rechten om deze pagina te openen."</string>
- <string name="text_copied" msgid="2531420577879738860">"Tekst naar klembord gekopieerd."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> geplakt vanuit <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft geplakt vanaf het klembord"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft door jou gekopieerde tekst geplakt"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft een door jou gekopieerde afbeelding geplakt"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft door jou gekopieerde content geplakt"</string>
<string name="more_item_label" msgid="7419249600215749115">"Meer"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"U kunt dit later wijzigen in Instellingen > Apps"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Altijd toestaan"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nooit toestaan"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Simkaart verwijderd"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Het mobiele netwerk is niet beschikbaar totdat je het apparaat opnieuw opstart met een geldige simkaart."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Klaar"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Simkaart toegevoegd"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Start je apparaat opnieuw voor toegang tot het mobiele netwerk."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Opnieuw starten"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Mobiele service activeren"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"De simkaart is nu uitgezet. Geef de pukcode op om door te gaan. Neem contact op met de provider voor informatie."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Gewenste pincode opgeven"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Gewenste pincode bevestigen"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Simkaart ontgrendelen…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Onjuiste pincode."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Voer een pincode van 4 tot 8 cijfers in."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"De pukcode is acht cijfers lang."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Verwijderen"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Volume verhogen tot boven het aanbevolen niveau?\n\nAls je langere tijd op hoog volume naar muziek luistert, raakt je gehoor mogelijk beschadigd."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Waarschuwing:\nJe hebt de hoeveelheid harde geluidssignalen waarnaar iemand veilig in een week kan luisteren via een hoofdtelefoon overschreden.\n\nAls je over deze limiet gaat, kun je je gehoor permanent beschadigen."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Waarschuwing:\nJe hebt de limiet voor harde geluidssignalen waarnaar iemand veilig in een week kan luisteren via een hoofdtelefoon 5 keer overschreden.\n\nHet volume is lager gezet om je gehoor te beschermen."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Het niveau waarop je naar media luistert, kan leiden tot gehoorschade bij langdurig gebruik.\n\nAls je langere tijd dit geluidsniveau aanhoudt, kan dit je gehoor beschadigen."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Waarschuwing:\nJe luistert momenteel naar content met een hoog, onveilig geluidsniveau.\n\nAls je blijft luisteren op dit geluidsniveau, kun je je gehoor permanent beschadigen."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Snelkoppeling toegankelijkheid gebruiken?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Als de snelkoppeling aanstaat, houd je beide volumeknoppen 3 seconden ingedrukt om een toegankelijkheidsfunctie te starten."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Snelkoppeling voor toegankelijkheidsfuncties aanzetten?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Sneltoets uitzetten"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sneltoets gebruiken"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Kleurinversie"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Kleurcorrectie"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Bediening met 1 hand"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dimmen"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat aan."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Hiermee kan een bijbehorende app berichten naar andere apparaten sturen."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Service op de voorgrond vanuit de achtergrond starten"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Hiermee kan een bijbehorende app services op de voorgrond vanuit de achtergrond starten."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Microfoon is beschikbaar"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Microfoon is geblokkeerd"</string>
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 2dd316c..b415908 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"ଆପଣ ଟାଇପ୍ କରିଥିବା PINଗୁଡ଼ିକ ମେଳ ହେଉନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="invalidPin" msgid="7542498253319440408">"4 ରୁ 8ଟି ସଂଖ୍ୟା ବିଶିଷ୍ଟ ଏକ PIN ଟାଇପ୍ କରନ୍ତୁ।"</string>
<string name="invalidPuk" msgid="8831151490931907083">"ଏକ PUK ଟାଇପ୍ କରନ୍ତୁ, ଯାହାକି 8 ସଂଖ୍ୟା ବିଶିଷ୍ଟ କିମ୍ୱା ତା’ଠାରୁ ଅଧିକ ହୋଇଥିବ।"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"ଆପଣଙ୍କ SIM PUK-ଲକ ଅଛି। ଏହାକୁ ଅନଲକ କରିବା ପାଇଁ PUK କୋଡ ଟାଇପ କରନ୍ତୁ।"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIMକୁ ଅନବ୍ଲକ କରିବା ପାଇଁ PUK2 ଟାଇପ କରନ୍ତୁ।"</string>
<string name="enablePin" msgid="2543771964137091212">"ସଫଳ ହେଲାନାହିଁ, SIM/RUIM ଲକ୍ କରନ୍ତୁ।"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">ଆଉ <xliff:g id="NUMBER_1">%d</xliff:g>ଟି ପ୍ରୟାସ ପରେ SIM ଲକ୍ ହୋଇଯିବ।</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"ଆପ୍କୁ ଅନ୍ୟ ଆପ୍ର ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଟ ପ୍ରକ୍ରିୟାକୁ ସମାପ୍ତ କରିବାକୁ ଦେଇଥାଏ। ଏହି କାରଣରୁ ଅନ୍ୟ ଆପ୍ଗୁଡ଼ିକ ଚାଲିବା ବନ୍ଦ ହୋଇଯାଇପାରେ।"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"ଏହି ଆପ୍ ଅନ୍ୟ ଆପ୍ର ଉପରେ ଦେଖାଯାଇପାରେ"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"ଏହି ଆପ୍ ଅନ୍ୟ ଆପ୍ର ଶୀର୍ଷରେ କିମ୍ବା ସ୍କ୍ରୀନର ଅନ୍ୟ ଅଂଶରେ ଦେଖାଯାଇପାରେ। ଏହା ସାମାନ୍ୟ ଆପ୍ ବ୍ୟବହାରରେ ବାଧା ପହଞ୍ଚାଇପାରେ ଏବଂ ଅନ୍ୟ ଆପ୍କୁ ଅଲଗା ରୂପେ ଦେଖାଇପାରେ।"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ଅନ୍ୟ ଆପ୍ସ ଓଭରଲେଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"ଏହି ଆପର ଶୀର୍ଷରେ ଦେଖାଯାଉଥିବା ଆପ୍ସରୁ ସୃଷ୍ଟି ହେଉଥିବା ଓଭରଲେଗୁଡ଼ିକୁ ସିଷ୍ଟମ ଲୁଚାଉ ବୋଲି ଏହି ଆପ ଅନୁରୋଧ କରିପାରିବ।"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ବ୍ୟାକଗ୍ରାଉଣ୍ଡରେ ଚଲାନ୍ତୁ"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ଏହି ଆପ୍ ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡରେ ଚାଲିପାରିବ। ଏହା ଦ୍ୱାରା ବ୍ୟାଟେରୀ ଦ୍ରୁତ ଭାବେ ଖର୍ଚ୍ଚ ହୋଇପାରେ।"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"ବ୍ୟାକଗ୍ରାଉଣ୍ଡରେ ଡାଟା ବ୍ୟବହାର କରନ୍ତୁ"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ସମସ୍ତ ସୁବିଧା ତଥା ଡାଟା ପାଇଁ ଅନଲକ୍ କରନ୍ତୁ"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"ସର୍ବାଧିକ ଫେସ୍ ଅନଲକ୍ ପ୍ରଚେଷ୍ଟା ଅତିକ୍ରମ କରିଛି"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"କୌଣସି SIM ନାହିଁ"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ଟାବଲେଟରେ କୌଣସି SIM ନାହିଁ।"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"ଆପଣଙ୍କର Android TV ଡିଭାଇସରେ କୌଣସି SIM ନାହିଁ।"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ଫୋନରେ କୌଣସି SIM ନାହିଁ।"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"ଏକ SIM ଯୋଗ କରନ୍ତୁ।"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM ଉପଲବ୍ଧ ନାହିଁ କିମ୍ବା ପଢ଼ିପାରିବା ଯୋଗ୍ୟ ନୁହେଁ। ଏକ SIM ଯୋଗ କରନ୍ତୁ।"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ବ୍ୟବହାର ଅଯୋଗ୍ୟ ଥିବା SIM।"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"ଆପଣଙ୍କ SIMକୁ ସ୍ଥାୟୀ ଭାବରେ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।\n ଅନ୍ୟ ଏକ SIM ପାଇଁ ଆପଣଙ୍କ ୱେୟାରଲେସ ସେବା ପ୍ରଦାନକାରୀଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"ପୂର୍ବବର୍ତ୍ତୀ ଟ୍ରାକ୍"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"ପରବର୍ତ୍ତୀ ଟ୍ରାକ୍"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"ପଜ୍ କରନ୍ତୁ"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"ଫାଷ୍ଟ ଫର୍ୱାର୍ଡ"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"କେବଳ ଜରୁରୀକାଳୀନ କଲ୍"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ନେଟ୍ୱର୍କକୁ ଲକ୍ କରାଯାଇଛି"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIMକୁ PUK-ଲକ କରାଯାଇଛି।"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ୟୁଜର ଗାଇଡ ଦେଖନ୍ତୁ କିମ୍ବା ଗ୍ରାହକ ସେବା କେନ୍ଦ୍ର ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIMକୁ ଲକ କରାଯାଇଛି।"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIMକୁ ଅନଲକ କରାଯାଉଛି…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"ଆପଣଙ୍କ ଅନଲକ୍ ପାଟର୍ନକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ଭାବେ ଅଙ୍କନ କରିଛନ୍ତି। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ସେକେଣ୍ଡ ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"ଆପଣଙ୍କ ପାସୱର୍ଡକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ଭାବେ ଟାଇପ୍ କରିଛନ୍ତି। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ସେକେଣ୍ଡ ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"ଆପଣଙ୍କ PINକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ଭାବେ ଟାଇପ୍ କରିଛନ୍ତି। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ସେକେଣ୍ଡ ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ଏହି ପୃଷ୍ଠାରୁ ବାହାରିଯାଆନ୍ତୁ"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ଏହି ପୃଷ୍ଠାରେ ରୁହନ୍ତୁ"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nଆପଣ କ’ଣ ପ୍ରକୃତରେ ଏହି ପୃଷ୍ଠାରୁ ଦୂରକୁ ନେଭିଗେଟ୍ କରିବାକୁ ଚାହୁଁଛନ୍ତି?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"ନିଶ୍ଚିତ କରନ୍ତୁ"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"ଧ୍ୟାନଦିଅନ୍ତୁ: ଜୁମ୍ ଇନ୍ ଓ ଆଉଟ୍ କରିବା ପାଇଁ ଡବଲ୍-ଟାପ୍ କରନ୍ତୁ"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ସ୍ୱତଃପୂରଣ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"ଅଟୋଫିଲ୍ ସେଟ୍ କରନ୍ତୁ"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ସାହାଯ୍ୟରେ ଅଟୋଫିଲ୍ କରନ୍ତୁ"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"ଅଞ୍ଚଳ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"ପୋଷ୍ଟାଲ୍ କୋଡ୍"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ରାଜ୍ୟ"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP କୋଡ୍"</string>
- <string name="autofill_county" msgid="7781382735643492173">"କାଉଣ୍ଟୀ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"ଆଇଲ୍ୟାଣ୍ଡ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ଜିଲ୍ଲା"</string>
- <string name="autofill_department" msgid="9047276226873531529">"ବିଭାଗ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"ପ୍ରଶାସକୀୟ କ୍ଷେତ୍ର"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"ପ୍ୟାରିସ୍"</string>
- <string name="autofill_area" msgid="8289022370678448983">"କ୍ଷେତ୍ର"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"ଭୂଖଣ୍ଡ"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ଆପଣଙ୍କ ୱେବ୍ ବୁକ୍ମାର୍କ ଓ ହିଷ୍ଟୋରୀ ପଢ଼ନ୍ତୁ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ବ୍ରାଉଜର୍ରେ ଭିଜିଟ୍ କରାଯାଇଥିବା ସମସ୍ତ URL ପଢ଼ିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଧ୍ୟାନଦିଅନ୍ତୁ: ଏହି ଅନୁମତି ୱେବ୍ ବ୍ରାଉଜ୍ କରିବା ଦକ୍ଷତା ତୃତୀୟ-ପକ୍ଷ ବ୍ରାଉଜର୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ଆପ୍ଲିକେଶନ୍ରେ ଲାଗୁ କରାଯାଇନପାରେ।"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"ୱେବ୍ ବୁକ୍ମାର୍କ ଓ ହିଷ୍ଟୋରୀ ଲେଖନ୍ତୁ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"ଆପଣଙ୍କ ଟାବ୍ଲେଟ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ବ୍ରାଉଜର୍ ହିଷ୍ଟୋରୀ କିମ୍ବା ବୁକ୍ମାର୍କଗୁଡ଼ିକ ବଦଳାଇବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଏହାଦ୍ୱାରା ଆପ୍ଟି ବ୍ରାଉଜର୍ ଡାଟା ଲିଭାଇପାରେ କିମ୍ବା ବଦଳାଇପାରେ। ଧ୍ୟାନଦିଅନ୍ତୁ: ଏହି ଅନୁମତି ୱେବ୍ ବ୍ରାଉଜ୍ କରିବାର ଦକ୍ଷତା ତୃତୀୟ-ପକ୍ଷ ବ୍ରାଉଜର୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ଆପ୍ଲିକେଶନ୍ରେ ଲାଗୁ କରାଯାଇନପାରେ।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ଆପଣଙ୍କ Android TV ଡିଭାଇସ୍ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ବ୍ରାଉଜର୍ ଇତିହାସ କିମ୍ବା ବୁକମାର୍କଗୁଡ଼ିକୁ ସଂଶୋଧନ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ। ଏହା ଦ୍ୱାରା ଆପ୍ ବ୍ରାଉଜର୍ ଡାଟା ଲିଭାଇ ପାରେ କିମ୍ବା ସଂଶୋଧନ କରିପାରେ। ଧ୍ୟାନ ଦିଅନ୍ତୁ: ଏହି ଅନୁମତି ହୁଏତ ୱେବ୍ ବ୍ରାଉଜିଂ ଦକ୍ଷତା ସହ ତୃତୀୟ-ପକ୍ଷ ବ୍ରାଉଜର୍ କିମ୍ବା ଅନ୍ୟ ଆପ୍ଲିକେସନ୍ରେ ଲାଗୁ କରାଯାଇ ନପାରେ।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"ଆପଣଙ୍କ ଫୋନ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ବ୍ରାଉଜର୍ ହିଷ୍ଟୋରୀ କିମ୍ବା ବୁକ୍ମାର୍କଗୁଡ଼ିକ ବଦଳାଇବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଏହାଦ୍ୱାରା ଆପ୍ଟି ବ୍ରାଉଜର୍ ଡାଟା ଲିଭାଇପାରେ କିମ୍ବା ବଦଳାଇପାରେ। ଧ୍ୟାନଦିଅନ୍ତୁ: ଏହି ଅନୁମତି ୱେବ୍ ବ୍ରାଉଜ୍ କରିବାର ଦକ୍ଷତା ତୃତୀୟ-ପକ୍ଷ ବ୍ରାଉଜର୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ଆପ୍ଲିକେଶନ୍ରେ ଲାଗୁ କରାଯାଇନପାରେ।"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ଏକ ଆଲର୍ମ ସେଟ୍ କରନ୍ତୁ"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ଆପ୍କୁ, ଇନଷ୍ଟଲ୍ ହୋଇଥିବା ଆଲାର୍ମ କ୍ଲକ୍ ଆପ୍ରେ ଏକ ଆଲାର୍ମ ସେଟ୍ କରିବାକୁ ଦେଇଥାଏ। କିଛି ଆଲର୍ମ କ୍ଲକ୍ ଆପ୍ ଏହି ବୈଶିଷ୍ଟ୍ୟ ଲାଗୁ କରିନପାରନ୍ତି।"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ଭଏସ୍ମେଲ୍ ଯୋଡ଼ନ୍ତୁ"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ଆପଣଙ୍କ ଭଏସମେଲ୍ ଇନ୍ବକ୍ସରେ ମେସେଜ୍ ଯୋଡ଼ିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ।"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ବ୍ରାଉଜରର ଭୌଗଳିକ ଅନୁମତି ସଂଶୋଧନ କରନ୍ତୁ"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ଆପ୍କୁ, ବ୍ରାଉଜର୍ର ଭୌଗଳିକ ଅନୁମତି ବଦଳାଇବାକୁ ଦେଇଥାଏ। ହାନୀକାରକ ଆପ୍ ଆର୍ବିଟେରୀ ୱେବ୍ ସାଇଟଗୁଡ଼ିକୁ ଲୋକେସନ୍ ସୂଚନା ପଠାଇବା ପାଇଁ ଏହା ବ୍ୟବହାର କରିପାରନ୍ତି।"</string>
- <string name="save_password_message" msgid="2146409467245462965">"ବ୍ରାଉଜର୍ ଏହି ପାସୱର୍ଡକୁ ମନେରଖୁ ବୋଲି ଆପଣ ଚାହୁଁଛନ୍ତି କି?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ବର୍ତ୍ତମାନ ନୁହେଁଁ"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"ମନେରଖନ୍ତୁ"</string>
- <string name="save_password_never" msgid="6776808375903410659">"କଦାପି ନୁହେଁ"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ଏହି ପୃଷ୍ଠା ଖୋଲିବାକୁ ଆପଣଙ୍କ ପାଖରେ ଅନୁମତି ନାହିଁ।"</string>
- <string name="text_copied" msgid="2531420577879738860">"ଟେକ୍ସଟ୍ କ୍ଲିପବୋର୍ଡକୁ କପୀ ହୋଇଯାଇଛି"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>ରୁ ପେଷ୍ଟ କରିଛି"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ଆପଣଙ୍କ କ୍ଲିପବୋର୍ଡରୁ ପେଷ୍ଟ କରିଛି"</string>
- <string name="pasted_text" msgid="4298871641549173733">"ଆପଣ କପି କରିଥିବା ଟେକ୍ସଟକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string>
- <string name="pasted_image" msgid="4729097394781491022">"ଆପଣ କପି କରିଥିବା ଏକ ଛବିକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string>
- <string name="pasted_content" msgid="646276353060777131">"ଆପଣ କପି କରିଥିବା ବିଷୟବସ୍ତୁକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string>
<string name="more_item_label" msgid="7419249600215749115">"ଅଧିକ"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"ମେନୁ"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"ଏହାକୁ ଆପଣ ସେଟିଙ୍ଗ ଓ ଆପ୍ରେ ପରବର୍ତ୍ତୀ ସମୟରେ ବଦଳାଇପାରିବେ"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"ସର୍ବଦା ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ଆଦୌ ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIMକୁ କାଢ଼ି ଦିଆଯାଇଛି"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"ଆପଣ ଏକ ବୈଧ SIM ମାଧ୍ୟମରେ ରିଷ୍ଟାର୍ଟ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ମୋବାଇଲ ନେଟୱାର୍କ ଉପଲବ୍ଧ ହେବ ନାହିଁ।"</string>
<string name="sim_done_button" msgid="6464250841528410598">"ହୋଇଗଲା"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM ଯୋଗ କରାଯାଇଛି"</string>
<string name="sim_added_message" msgid="6602906609509958680">"ମୋବାଇଲ୍ ନେଟ୍ୱର୍କ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସ୍କୁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"ମୋବାଇଲ୍ ସେବା ସକ୍ରିୟ କରନ୍ତୁ"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM ବର୍ତ୍ତମାନ ଅକ୍ଷମ ଅଟେ। ଜାରି ରଖିବାକୁ PUK କୋଡ ଲେଖନ୍ତୁ। ବିବରଣୀ ପାଇଁ ନିଜ କ୍ଯାରିଅରଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"ନିଜ ଇଚ୍ଛାର PIN କୋଡ୍ ଲେଖନ୍ତୁ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"ନିଜ ଇଚ୍ଛାର PIN କୋଡ୍ ନିଶ୍ଚିତ କରନ୍ତୁ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIMକୁ ଅନଲକ କରାଯାଉଛି…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ଭୁଲ PIN କୋଡ୍।"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4 ରୁ 8 ନମ୍ବର ବିଶିଷ୍ଟ ଏକ PIN ଟାଇପ୍ କରନ୍ତୁ।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK କୋଡ୍ରେ 8ଟି ନମ୍ବର ରହିଥାଏ।"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"କାଢ଼ି ଦିଅନ୍ତୁ"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ମାତ୍ରା ବଢ଼ାଇ ସୁପାରିଶ ସ୍ତର ବଢ଼ାଉଛନ୍ତି? \n\n ଲମ୍ବା ସମୟ ପର୍ଯ୍ୟନ୍ତ ଉଚ୍ଚ ଶବ୍ଦରେ ଶୁଣିଲେ ଆପଣଙ୍କ ଶ୍ରବଣ ଶକ୍ତି ଖରାପ ହୋଇପାରେ।"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"ଚେତାବନୀ,\nହେଡଫୋନରେ ଗୋଟିଏ ସପ୍ତାହରେ ଜଣେ ସୁରକ୍ଷିତ ଭାବେ ଶୁଣିପାରୁଥିବା ଉଚ୍ଚ ସାଉଣ୍ଡ ସିଗନାଲର ପରିମାଣକୁ ଆପଣ ଅତିକ୍ରମ କରିଛନ୍ତି।\n\nଏହି ସୀମା ଅତିକ୍ରମ କରିବା ଫଳରେ ଆପଣଙ୍କ ଶ୍ରବଣଶକ୍ତି ସ୍ଥାୟୀ ଭାବେ ନଷ୍ଟ ହୋଇଯିବ।"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"ଚେତାବନୀ,\nହେଡଫୋନରେ ଗୋଟିଏ ସପ୍ତାହରେ ଜଣେ ସୁରକ୍ଷିତ ଭାବେ ଶୁଣିପାରୁଥିବା ଉଚ୍ଚ ସାଉଣ୍ଡ ସିଗନାଲର ପରିମାଣକୁ ଆପଣ 5 ଥର ଅତିକ୍ରମ କରିଛନ୍ତି।\n\nଆପଣଙ୍କ ଶ୍ରବଣଶକ୍ତିକୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ ଭଲ୍ୟୁମକୁ କମ କରିଦିଆଯାଇଛି।"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"ଆପଣ ଯେଉଁ ଲେଭେଲରେ ମିଡିଆ ଶୁଣୁଛନ୍ତି ତାହା ଦୀର୍ଘ ସମୟ ପାଇଁ ଜାରି ରହିଲେ ଶ୍ରବଣଶକ୍ତି ନଷ୍ଟ ହୋଇପାରେ।\n\nଦୀର୍ଘ ସମୟ ପାଇଁ ଏହି ଲେଭେଲରେ ପ୍ଲେ କରିବା ଜାରି ରଖିବା ଫଳରେ ଆପଣଙ୍କ ଶ୍ରବଣଶକ୍ତି ନଷ୍ଟ ହୋଇପାରେ।"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"ଚେତାବନୀ,\nବର୍ତ୍ତମାନ ଆପଣ ଏକ ଅସୁରକ୍ଷିତ ଲେଭେଲରେ ପ୍ଲେ ହେଉଥିବା ଉଚ୍ଚ ସାଉଣ୍ଡର ବିଷୟବସ୍ତୁ ଶୁଣୁଛନ୍ତି।\n\nଏହି ଉଚ୍ଚ ସାଉଣ୍ଡ ଶୁଣିବା ଜାରି ରଖିବା ଫଳରେ ଆପଣଙ୍କ ଶ୍ରବଣଶକ୍ତି ସ୍ଥାୟୀ ଭାବେ ନଷ୍ଟ ହୋଇଯିବ।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ଆକ୍ସେସବିଲିଟି ଶର୍ଟକଟ୍ ବ୍ୟବହାର କରିବେ?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ସର୍ଟକଟ୍ ଚାଲୁ ଥିବା ବେଳେ, ଉଭୟ ଭଲ୍ୟୁମ୍ ବଟନ୍ 3 ସେକେଣ୍ଡ ପାଇଁ ଦବାଇବା ଦ୍ୱାରା ଏକ ଆକ୍ସେସବିଲିଟି ଫିଚର୍ ଆରମ୍ଭ ହେବ।"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ଆକ୍ସେସିବିଲିଟୀ ଫିଚରଗୁଡ଼ିକ ପାଇଁ ସର୍ଟକଟ୍ ଚାଲୁ କରିବେ?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ଶର୍ଟକଟ୍ ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ଶର୍ଟକଟ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ରଙ୍ଗ ବଦଳାଇବାର ସୁବିଧା"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"ରଙ୍ଗ ସଂଶୋଧନ"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ଏକ-ହାତ ମୋଡ୍"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ଅତ୍ୟଧିକ ଡିମ"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ଚାଲୁ ହୋଇଛି।"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"ଅନ୍ୟ ଡିଭାଇସଗୁଡ଼ିକରେ ସହଯୋଗୀ ମେସେଜଗୁଡ଼ିକ ଡେଲିଭର କରିବା ପାଇଁ ଏକ ସହଯୋଗୀ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"ପୃଷ୍ଠପଟରୁ ଫୋରଗ୍ରାଉଣ୍ଡ ସେବାଗୁଡ଼ିକ ଆରମ୍ଭ କରନ୍ତୁ"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"ପୃଷ୍ଠପଟରୁ ଫୋରଗ୍ରାଉଣ୍ଡ ସେବାଗୁଡ଼ିକ ଆରମ୍ଭ କରିବାକୁ ଏକ ସହଯୋଗୀ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"ମାଇକ୍ରୋଫୋନ ଉପଲବ୍ଧ ଅଛି"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"ମାଇକ୍ରୋଫୋନକୁ ବ୍ଲକ କରାଯାଇଛି"</string>
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index 82ad6c0..467a509 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਾਈਪ ਕੀਤੇ ਪਿੰਨ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ।"</string>
<string name="invalidPin" msgid="7542498253319440408">"ਕੋਈ ਪਿੰਨ ਟਾਈਪ ਕਰੋ ਜੋ 4 ਤੋਂ 8 ਨੰਬਰਾਂ ਦਾ ਹੋਵੇ।"</string>
<string name="invalidPuk" msgid="8831151490931907083">"ਇੱਕ PUK ਕੋਡ ਟਾਈਪ ਕਰੋ ਜੋ 8 ਜਾਂ ਵੱਧ ਸੰਖਿਆਵਾਂ ਦਾ ਹੋਵੇ।"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"ਤੁਹਾਡਾ ਸਿਮ PUK-ਲਾਕ ਹੈ। ਇਸਨੂੰ ਅਣਲਾਕ ਕਰਨ ਲਈ PUK ਕੋਡ ਟਾਈਪ ਕਰੋ।"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"ਸਿਮ ਨੂੰ ਅਣਬਲਾਕ ਕਰਨ ਲਈ PUK2 ਟਾਈਪ ਕਰੋ।"</string>
<string name="enablePin" msgid="2543771964137091212">"ਅਸਫਲ, SIM/RUIM ਲਾਕ ਨੂੰ ਚਾਲੂ ਕਰੋ।"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">ਇਸਤੋਂ ਪਹਿਲਾਂ ਕਿ SIM ਲਾਕ ਹੋਵੇ, ਤੁਹਾਡੇ ਕੋਲ <xliff:g id="NUMBER_1">%d</xliff:g> ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ।</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"ਐਪ ਨੂੰ ਹੋਰਾਂ ਐਪਸ ਦੀਆਂ ਪਿਛੋਕੜ ਪ੍ਰਕਿਰਿਆਵਾਂ ਖ਼ਤਮ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਸ ਨਾਲ ਹੋਰ ਚੱਲ ਰਹੇ ਐਪਸ ਰੁਕ ਸਕਦੇ ਹਨ।"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"ਇਹ ਐਪ ਹੋਰ ਐਪਾਂ ਦੇ ਸਿਖਰ \'ਤੇ ਵਿਖਾਈ ਦੇ ਸਕਦੀ ਹੈ"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"ਇਹ ਐਪ ਹੋਰ ਐਪਾਂ ਦੇ ਸਿਖਰ \'ਤੇ ਜਾਂ ਸਕ੍ਰੀਨ ਦੇ ਹੋਰ ਭਾਗਾਂ \'ਤੇ ਵਿਖਾਈ ਦੇ ਸਕਦੀ ਹੈ। ਇਹ ਸਧਾਰਨ ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਵਿਘਨ ਪਾ ਸਕਦੀ ਹੈ ਅਤੇ ਹੋਰ ਐਪਾਂ ਦੇ ਵਿਖਾਈ ਦੇਣ ਦੇ ਤਰੀਕੇ ਨੂੰ ਬਦਲ ਸਕਦੀ ਹੈ।"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ਹੋਰ ਐਪਾਂ ਦੇ ਓਵਰਲੇ ਨੂੰ ਲੁਕਾਓ"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"ਇਹ ਐਪ ਬੇਨਤੀ ਕਰ ਸਕਦੀ ਹੈ ਕਿ ਸਿਸਟਮ ਐਪਾਂ ਤੋਂ ਉੱਪਰ ਹੋਣ ਵਾਲੇ ਓਵਰਲੇ ਨੂੰ ਇਸਦੇ ਸਿਖਰ \'ਤੇ ਦਿਖਾਏ ਜਾਣ ਤੋਂ ਲੁਕਾਉਂਦਾ ਹੈ।"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚਲਾਓ"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ਇਹ ਐਪ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚੱਲ ਸਕਦੀ ਹੈ। ਇਸ ਨਾਲ ਬੈਟਰੀ ਵਧੇਰੇ ਤੇਜ਼ੀ ਨਾਲ ਖਤਮ ਹੋ ਸਕਦੀ ਹੈ।"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਡਾਟੇ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ਸਾਰੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਡਾਟੇ ਲਈ ਅਣਲਾਕ ਕਰੋ"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"ਫ਼ੇਸ ਅਣਲਾਕ ਦੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਸੀਮਾ ਤੋਂ ਪਾਰ ਹੋ ਗਈਆਂ"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"ਕੋਈ ਸਿਮ ਨਹੀਂ ਹੈ"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ਟੈਬਲੈੱਟ ਵਿੱਚ ਕੋਈ ਸਿਮ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"ਤੁਹਾਡੇ Android TV ਡੀਵਾਈਸ ਵਿੱਚ ਕੋਈ ਸਿਮ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ਫ਼ੋਨ ਵਿੱਚ ਕੋਈ ਸਿਮ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"ਸਿਮ ਸ਼ਾਮਲ ਕਰੋ।"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"ਸਿਮ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਜਾਂ ਪੜ੍ਹਨਯੋਗ ਨਹੀਂ ਹੈ। ਸਿਮ ਸ਼ਾਮਲ ਕਰੋ।"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ਬੇਕਾਰ ਸਿਮ।"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"ਤੁਹਾਡੇ ਸਿਮ ਨੂੰ ਪੱਕੇ ਤੌਰ \'ਤੇ ਅਕਿਰਿਆਸ਼ੀਲ ਕੀਤਾ ਗਿਆ ਹੈ।\n ਦੂਜੇ ਸਿਮ ਲਈ ਆਪਣੇ ਵਾਇਰਲੈੱਸ ਸੇਵਾ ਪ੍ਰਦਾਨਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"ਪਿਛਲਾ ਟਰੈਕ"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"ਅਗਲਾ ਟਰੈਕ"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"ਰੋਕੋ"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਭੇਜੋ"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"ਸਿਰਫ਼ ਐਮਰਜੈਂਸੀ ਕਾਲਾਂ"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ਨੈੱਟਵਰਕ ਲਾਕ ਕੀਤਾ"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"ਸਿਮ PUK-ਲਾਕ ਹੈ।"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ਵਰਤੋਂਕਾਰ ਗਾਈਡ ਦੇਖੋ ਜਾਂ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਫ਼ੋਨ ਕਰੋ।"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"ਸਿਮ ਲਾਕ ਹੈ।"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"ਸਿਮ ਨੂੰ ਅਣਲਾਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"ਤੁਸੀਂ <xliff:g id="NUMBER_0">%1$d</xliff:g> ਵਾਰ ਆਪਣਾ ਅਣਲਾਕ ਪੈਟਰਨ ਗਲਤ ਢੰਗ ਨਾਲ ਉਲੀਕਿਆ ਹੈ। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ਸਕਿੰਟਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"ਤੁਸੀਂ <xliff:g id="NUMBER_0">%1$d</xliff:g> ਵਾਰ ਆਪਣਾ ਪਾਸਵਰਡ ਗਲਤ ਢੰਗ ਨਾਲ ਟਾਈਪ ਕੀਤਾ ਹੈ।\n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ਸਕਿੰਟਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"ਤੁਸੀਂ ਆਪਣਾ ਪਿੰਨ <xliff:g id="NUMBER_0">%1$d</xliff:g> ਵਾਰ ਗਲਤ ਢੰਗ ਨਾਲ ਟਾਈਪ ਕੀਤਾ ਹੈ। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ਸਕਿੰਟਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ਇਹ ਸਫ਼ਾ ਛੱਡੋ"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ਇਸ ਸ਼ਫ਼ੇ ਤੇ ਰਹੋ"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ ਤੇ ਇਸ ਪੇਜ ਤੋਂ ਦੂਰ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"ਤਸਦੀਕ ਕਰੋ"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"ਨੁਕਤਾ: ਜ਼ੂਮ ਵਧਾਉਣ ਅਤੇ ਘਟਾਉਣ ਲਈ ਡਬਲ ਟੈਪ ਕਰੋ।"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ਆਟੋਫਿਲ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"ਆਟੋਫਿਲ ਸੈਟ ਅਪ ਕਰੋ"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ਨਾਲ ਆਟੋਫਿਲ ਕਰੋ"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"ਸੂਬਾ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"ਡਾਕ ਕੋਡ"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ਰਾਜ"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ਜ਼ਿਪ ਕੋਡ"</string>
- <string name="autofill_county" msgid="7781382735643492173">"ਕਾਉਂਟੀ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"ਟਾਪੂ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ਜ਼ਿਲ੍ਹਾ"</string>
- <string name="autofill_department" msgid="9047276226873531529">"ਵਿਭਾਗ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"ਪ੍ਰੀਫੈਕਚਰ"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"ਪੈਰਿਸ਼"</string>
- <string name="autofill_area" msgid="8289022370678448983">"ਖੇਤਰ"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"ਅਮੀਰਾਤ"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ਆਪਣੇ ਵੈੱਬ ਬੁੱਕਮਾਰਕ ਅਤੇ ਇਤਿਹਾਸ ਪੜ੍ਹੋ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ਐਪ ਨੂੰ ਸਾਰੇ URL ਜਿਨ੍ਹਾਂ ਤੇ ਬ੍ਰਾਊਜ਼ਰ ਨੇ ਵਿਜਿਟ ਕੀਤਾ ਹੈ ਅਤੇ ਬ੍ਰਾਊਜ਼ਰ ਦੇ ਸਾਰੇ ਬੁੱਕਮਾਰਕਾਂ, ਦਾ ਇਤਿਹਾਸ ਪੜ੍ਹਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਨੋਟ: ਇਹ ਅਨੁਮਤੀ ਤੀਜੀ-ਪਾਰਟੀ ਬ੍ਰਾਊਜ਼ਰਾਂ ਜਾਂ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਮਰੱਥਾ ਵਾਲੀਆਂ ਹੋਰਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵੱਲੋਂ ਲਾਗੂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"ਵੈੱਬ ਬੁੱਕਮਾਰਕ ਅਤੇ ਇਤਿਹਾਸ ਲਿਖੋ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"ਐਪ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਦਾ ਇਤਿਹਾਸ ਅਤੇ ਤੁਹਾਡੇ ਟੈਬਲੈੱਟ \'ਤੇ ਸਟੋਰ ਕੀਤੇ ਬੁੱਕਮਾਰਕਾਂ ਨੂੰ ਸੰਸ਼ੋਧਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਐਪ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਡਾਟਾ ਸਾਫ਼ ਕਰਨ ਜਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇ ਸਕਦਾ ਹੈ। ਨੋਟ: ਇਹ ਇਜਾਜ਼ਤ ਤੀਜੀ-ਪਾਰਟੀ ਬ੍ਰਾਊਜ਼ਰਾਂ ਜਾਂ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਮਰੱਥਾ ਵਾਲੀਆਂ ਹੋਰਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵੱਲੋਂ ਲਾਗੂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ਐਪ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਦਾ ਇਤਿਹਾਸ ਜਾਂ ਤੁਹਾਡੇ Android TV ਡੀਵਾਈਸ \'ਤੇ ਸਟੋਰ ਕੀਤੇ ਬੁੱਕਮਾਰਕਾਂ ਵਿੱਚ ਸੋਧ ਕਰਨ ਦਿੰਦੀ ਹੈ। ਇਹ ਐਪ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਡਾਟਾ ਮਿਟਾਉਣ ਜਾਂ ਸੋਧ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇ ਸਕਦੀ ਹੈ। ਨੋਟ ਕਰੋ: ਇਹ ਇਜਾਜ਼ਤ ਤੀਜੀ-ਧਿਰ ਦੇ ਬ੍ਰਾਊਜ਼ਰਾਂ ਜਾਂ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਮਰੱਥਤਾਵਾਂ ਵਾਲੀਆਂ ਹੋਰਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵੱਲੋਂ ਲਾਗੂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"ਐਪ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਦਾ ਇਤਿਹਾਸ ਅਤੇ ਤੁਹਾਡੇ ਫ਼ੋਨ ਤੇ ਸਟੋਰ ਕੀਤੇ ਬੁੱਕਮਾਰਕਾਂ ਨੂੰ ਸੰਸ਼ੋਧਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਐਪ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਡਾਟਾ ਮਿਟਾਉਣ ਜਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇ ਸਕਦਾ ਹੈ। ਨੋਟ: ਇਹ ਅਨੁਮਤੀ ਤੀਜੀ-ਪਾਰਟੀ ਬ੍ਰਾਊਜ਼ਰਾਂ ਜਾਂ ਵੈੱਬ ਬ੍ਰਾਊਜ਼ਿੰਗ ਸਮਰੱਥਤਾਵਂ ਵਾਲੀਆਂ ਹੋਰਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵੱਲੋਂ ਲਾਗੂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ਇੱਕ ਅਲਾਰਮ ਸੈੱਟ ਕਰੋ"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ਐਪ ਨੂੰ ਇੱਕ ਇੰਸਟੌਲ ਕੀਤੀ ਅਲਾਰਮ ਘੜੀ ਐਪ ਵਿੱਚ ਇੱਕ ਅਲਾਰਮ ਸੈਟ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਕੁਝ ਅਲਾਰਮ ਘੜੀ ਐਪਲ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਲਾਗੂ ਨਹੀਂ ਵੀ ਕਰ ਸਕਦੇ।"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ਵੌਇਸਮੇਲ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ਐਪ ਨੂੰ ਤੁਹਾਡੇ ਵੌਇਸਮੇਲ ਇਨਬਾਕਸ ਵਿੱਚ ਸੁਨੇਹੇ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"ਬ੍ਰਾਊਜ਼ਰ ਜਿਓਲੋਕੇਸ਼ਨ ਇਜਾਜ਼ਤਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰੋ"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ਐਪ ਨੂੰ ਬ੍ਰਾਊਜ਼ਰ ਦੀਆਂ ਜਿਓਲੋਕੇਸ਼ਨ ਅਨੁਮਤੀਆਂ ਸੰਸ਼ੋਧਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਖਰਾਬ ਐਪਾਂ ਇਸਦੀ ਵਰਤੋਂ ਆਰਬਿਟਰੇਰੀ ਵੈੱਬ ਸਾਈਟਾਂ ਨੂੰ ਟਿਕਾਣਾ ਜਾਣਕਾਰੀ ਭੇਜਣ ਦੀ ਆਗਿਆ ਦੇਣ ਲਈ ਕਰ ਸਕਦੇ ਹਨ।"</string>
- <string name="save_password_message" msgid="2146409467245462965">"ਕੀ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਬ੍ਰਾਊਜ਼ਰ ਇਹ ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੇ?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ਅਜੇ ਨਹੀਂ"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"ਯਾਦ ਰੱਖੋ"</string>
- <string name="save_password_never" msgid="6776808375903410659">"ਕਦੇ ਵੀ ਨਹੀਂ"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ਤੁਹਾਨੂੰ ਇਸ ਸਫ਼ੇ ਨੂੰ ਖੋਲ੍ਹਣ ਦੀ ਅਨੁਮਤੀ ਨਹੀਂ ਹੈ।"</string>
- <string name="text_copied" msgid="2531420577879738860">"ਟੈਕਸਟ ਕਲਿਪਬੋਰਡ ਤੇ ਕਾਪੀ ਕੀਤਾ।"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ਤੋਂ ਕਾਪੀ ਕੀਤੇ ਡਾਟੇ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਵਿੱਚ ਪੇਸਟ ਕੀਤਾ ਗਿਆ"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਤੁਹਾਡੇ ਕਲਿੱਪਬੋਰਡ ਤੋਂ ਪੇਸਟ ਕੀਤਾ"</string>
- <string name="pasted_text" msgid="4298871641549173733">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੀ ਗਈ ਲਿਖਤ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string>
- <string name="pasted_image" msgid="4729097394781491022">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੇ ਗਏ ਚਿੱਤਰ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string>
- <string name="pasted_content" msgid="646276353060777131">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੀ ਗਈ ਸਮੱਗਰੀ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string>
<string name="more_item_label" msgid="7419249600215749115">"ਹੋਰ"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"ਮੀਨੂ+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"ਤੁਸੀਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਸੈਟਿੰਗਾਂ > ਐਪਾਂ ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹੋ"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"ਹਮੇਸ਼ਾਂ ਆਗਿਆ ਦਿਓ"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ਕਦੇ ਵੀ ਆਗਿਆ ਨਾ ਦਿਓ"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"ਸਿਮ ਨੂੰ ਹਟਾਇਆ ਗਿਆ"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਕਿਸੇ ਵੈਧ ਸਿਮ ਨਾਲ ਮੁੜ-ਸ਼ੁਰੂ ਨਹੀਂ ਕਰਦੇ, ਉਦੋਂ ਤੱਕ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੋਵੇਗਾ।"</string>
<string name="sim_done_button" msgid="6464250841528410598">"ਹੋ ਗਿਆ"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"ਸਿਮ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ"</string>
<string name="sim_added_message" msgid="6602906609509958680">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਤੱਕ ਪਹੁੰਚ ਲਈ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਮੁੜ-ਚਾਲੂ ਕਰੋ।"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"ਮੋਬਾਈਲ ਸੇਵਾ ਕਿਰਿਆਸ਼ੀਲ ਕਰੋ"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"ਸਿਮ ਹੁਣ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ PUK ਕੋਡ ਦਾਖਲ ਕਰੋ। ਵੇਰਵਿਆਂ ਲਈ ਕੈਰੀਅਰ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"ਇੱਛਤ ਪਿੰਨ ਕੋਡ ਦਾਖਲ ਕਰੋ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"ਇੱਛਤ ਪਿੰਨ ਕੋਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"ਸਿਮ ਨੂੰ ਅਣਲਾਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"ਗਲਤ ਪਿੰਨ ਕੋਡ।"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"ਕੋਈ ਪਿੰਨ ਟਾਈਪ ਕਰੋ ਜੋ 4 ਤੋਂ 8 ਨੰਬਰਾਂ ਦਾ ਹੋਵੇ।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK ਕੋਡ 8 ਸੰਖਿਆਵਾਂ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ਹਟਾਓ"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ਕੀ ਵੌਲਿਊਮ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੇ ਪੱਧਰ ਤੋਂ ਵਧਾਉਣੀ ਹੈ?\n\nਲੰਮੇ ਸਮੇਂ ਤੱਕ ਉੱਚ ਵੌਲਿਊਮ ਤੇ ਸੁਣਨ ਨਾਲ ਤੁਹਾਡੀ ਸੁਣਨ ਸ਼ਕਤੀ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚ ਸਕਦਾ ਹੈ।"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"ਚਿਤਾਵਨੀ,\nਤੁਸੀਂ ਉੱਚੀ ਧੁਨੀ ਦੇ ਸਿਗਨਲਾਂ ਦੀ ਮਾਤਰਾ ਨੂੰ ਪਾਰ ਕਰ ਚੁੱਕੇ ਹੋ ਜਿਸਨੂੰ ਕੋਈ ਵਿਅਕਤੀ ਹਫ਼ਤੇ ਵਿੱਚ ਹੈੱਡਫ਼ੋਨਾਂ \'ਤੇ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਸੁਣ ਸਕਦਾ ਹੈ।\n\nਇਸ ਸੀਮਾ ਨੂੰ ਪਾਰ ਕਰਨ ਨਾਲ ਤੁਹਾਡੀ ਸੁਣਨ ਸ਼ਕਤੀ ਨੂੰ ਪੱਕੇ ਤੌਰ \'ਤੇ ਨੁਕਸਾਨ ਹੋ ਜਾਵੇਗਾ।"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"ਚਿਤਾਵਨੀ,\nਤੁਸੀਂ ਉੱਚੀ ਧੁਨੀ ਦੇ ਸਿਗਨਲਾਂ ਦੀ ਮਾਤਰਾ ਤੋਂ 5 ਗੁਣਾ ਪਾਰ ਕਰ ਚੁੱਕੇ ਹੋ ਜਿਸਨੂੰ ਕੋਈ ਵਿਅਕਤੀ ਹਫ਼ਤੇ ਵਿੱਚ ਹੈੱਡਫ਼ੋਨਾਂ \'ਤੇ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਸੁਣ ਸਕਦਾ ਹੈ।\n\nਤੁਹਾਡੀ ਸੁਣਨ ਸ਼ਕਤੀ ਦੀ ਸੁਰੱਖਿਆ ਕਰਨ ਲਈ ਆਵਾਜ਼ ਨੂੰ ਘਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ।"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"ਜਿਸ ਪੱਧਰ \'ਤੇ ਤੁਸੀਂ ਮੀਡੀਆ ਨੂੰ ਸੁਣ ਰਹੇ ਹੋ, ਤਾਂ ਉਸ ਨੂੰ ਲੰਬੇ ਸਮੇਂ ਤੱਕ ਸੁਣਨ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਸੁਣਨ ਸ਼ਕਤੀ ਨੂੰ ਨੁਕਸਾਨ ਹੋ ਸਕਦਾ ਹੈ।\n\nਲੰਬੇ ਸਮੇਂ ਤੱਕ ਇਸ ਪੱਧਰ \'ਤੇ ਚਲਾਉਣਾ ਜਾਰੀ ਰੱਖਣ ਨਾਲ ਤੁਹਾਡੀ ਸੁਣਨ ਸ਼ਕਤੀ ਨੂੰ ਨੁਕਸਾਨ ਹੋ ਸਕਦਾ ਹੈ।"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"ਚਿਤਾਵਨੀ,\nਤੁਸੀਂ ਫ਼ਿਲਹਾਲ ਅਸੁਰੱਖਿਅਤ ਪੱਧਰ \'ਤੇ ਚੱਲ ਰਹੀ ਉੱਚੀ ਆਵਾਜ਼ ਵਿੱਚ ਸਮੱਗਰੀ ਨੂੰ ਸੁਣ ਰਹੇ ਹੋ।\n\nਇਸ ਉੱਚੀ ਆਵਾਜ਼ ਨੂੰ ਸੁਣਨਾ ਜਾਰੀ ਰੱਖਣ ਨਾਲ ਤੁਹਾਡੇ ਸੁਣਨ ਸ਼ਕਤੀ ਨੂੰ ਪੱਕੇ ਤੌਰ \'ਤੇ ਨੁਕਸਾਨ ਹੋ ਸਕਦਾ ਹੈ।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ਕੀ ਪਹੁੰਚਯੋਗਤਾ ਸ਼ਾਰਟਕੱਟ ਵਰਤਣਾ ਹੈ?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ਸ਼ਾਰਟਕੱਟ ਚਾਲੂ ਹੋਣ \'ਤੇ, ਕਿਸੇ ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਦੋਵੇਂ ਅਵਾਜ਼ ਬਟਨਾਂ ਨੂੰ 3 ਸਕਿੰਟ ਲਈ ਦਬਾ ਕੇ ਰੱਖੋ।"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ਕੀ ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਲਈ ਸ਼ਾਰਟਕੱਟ ਚਾਲੂ ਕਰਨਾ ਹੈ?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ਸ਼ਾਰਟਕੱਟ ਬੰਦ ਕਰੋ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ਰੰਗ ਪਲਟਨਾ"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"ਰੰਗ ਸੁਧਾਈ"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ਇੱਕ ਹੱਥ ਮੋਡ"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ਜ਼ਿਆਦਾ ਘੱਟ ਚਮਕ"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"ਹੋਰ ਡੀਵਾਈਸਾਂ \'ਤੇ ਸੰਬੰਧੀ ਸੁਨੇਹੇ ਡਿਲੀਵਰ ਕਰਨ ਲਈ ਸੰਬੰਧੀ ਐਪ ਨੂੰ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"ਬੈਕਗ੍ਰਾਊਂਡ ਤੋਂ ਫੋਰਗ੍ਰਾਊਂਡ ਸੇਵਾਵਾਂ ਚਾਲੂ ਕਰੋ"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"ਸੰਬੰਧੀ ਐਪ ਨੂੰ ਬੈਕਗ੍ਰਾਊਂਡ ਤੋਂ ਫੋਰਗ੍ਰਾਊਂਡ ਸੇਵਾਵਾਂ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਉਪਲਬਧ ਹੈ"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ"</string>
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 5b160ed..f8b7753 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Wpisane kody PIN nie są identyczne."</string>
<string name="invalidPin" msgid="7542498253319440408">"Wpisz kod PIN o długości od 4 do 8 cyfr."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Wpisz kod PUK składający się z co najmniej 8 cyfr."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Karta SIM została zablokowana kodem PUK. Wprowadź kod PUK, aby ją odblokować."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Wprowadź kod PUK2, aby odblokować kartę SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Nie udało się. Włącz blokadę karty SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="few">Masz jeszcze <xliff:g id="NUMBER_1">%d</xliff:g> próby, zanim karta SIM zostanie zablokowana.</item>
@@ -390,6 +388,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Pozwala aplikacji na kończenie procesów innych aplikacji działających w tle. Może to spowodować przerwanie działania innych aplikacji."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Ta aplikacja może wyświetlać się nad innymi aplikacjami"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Ta aplikacja może pojawić się nad innymi aplikacjami lub częściami ekranu. Może to przeszkadzać w jej zwykłym używaniu i zmieniać sposób wyświetlania innych aplikacji."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ukrywanie nakładek z innych aplikacji"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ta aplikacja może prosić o ukrywanie przez system nakładek pochodzących z innych aplikacji wyświetlanych ponad nią."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"działanie w tle"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Ta aplikacja może działać w tle. Bateria może się szybciej rozładowywać."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"transmisja danych w tle"</string>
@@ -965,22 +965,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Spróbuj ponownie."</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Odblokowanie wszystkich funkcji i danych"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Przekroczono maksymalną liczbę prób rozpoznania twarzy."</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Brak karty SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Brak karty SIM w tablecie."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Brak karty SIM na urządzeniu z Androidem TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Brak karty SIM w telefonie."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Dodaj kartę SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Brak karty SIM lub nie można jej odczytać. Dodaj kartę SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Nie można użyć karty SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Karta SIM została trwale wyłączona.\n Skontaktuj się z dostawcą usług bezprzewodowych, aby uzyskać inną kartę SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Poprzedni utwór"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Następny utwór"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Wstrzymaj"</string>
@@ -990,13 +982,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Przewiń do przodu"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Tylko połączenia alarmowe"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Sieć zablokowana"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"Karta SIM została zablokowana kodem PUK"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Zapoznaj się z instrukcją obsługi lub skontaktuj się z działem obsługi klienta."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"Karta SIM jest zablokowana."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Odblokowuję kartę SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Wzór odblokowania został nieprawidłowo narysowany <xliff:g id="NUMBER_0">%1$d</xliff:g> razy. \n\nSpróbuj ponownie za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Po raz <xliff:g id="NUMBER_0">%1$d</xliff:g> zostało wpisane nieprawidłowe hasło. \n\nSpróbuj ponownie za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Po raz <xliff:g id="NUMBER_0">%1$d</xliff:g> został wpisany nieprawidłowy PIN. \n\nSpróbuj ponownie za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
@@ -1069,50 +1058,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Opuść tę stronę"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Pozostań na tej stronie"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nCzy na pewno chcesz opuścić tę stronę?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Potwierdź"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Wskazówka: dotknij dwukrotnie, aby powiększyć lub pomniejszyć."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autouzupełnianie"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Ustaw autouzupełnianie"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autouzupełnianie: <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Region"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Kod pocztowy"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Stan"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Kod pocztowy"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Powiat"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Wyspa"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Dystrykt"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departament"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Gmina"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Obszar"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"odczytywanie zakładek internetowych i historii"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Pozwala aplikacji na odczyt wszystkich URL-i odwiedzonych przez przeglądarkę oraz wszystkich zakładek w przeglądarce. Uwaga: to uprawnienie może nie być egzekwowane przez przeglądarki innych firm i aplikacje z możliwością przeglądania internetu."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"zapisywanie zakładek internetowych i historii"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Pozwala aplikacji na modyfikowanie historii i zakładek przeglądarki zapisanych na tablecie. Aplikacja będzie mogła usunąć lub zmodyfikować dane przeglądarki. Uwaga: to uprawnienie może nie być egzekwowane przez przeglądarki innych firm oraz inne aplikacje z możliwością przeglądania internetu."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Pozwala aplikacji modyfikować historię i zakładki zapisane w przeglądarce na urządzeniu z Androidem TV. Aplikacja będzie mogła usunąć lub zmodyfikować dane przeglądarki. Uwaga: tego uprawnienia nie mogą wymusić przeglądarki innych firm ani inne aplikacje z funkcjami przeglądania stron internetowych."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Pozwala aplikacji na modyfikowanie historii i zakładek przeglądarki zapisanych na telefonie. Aplikacja będzie mogła usunąć lub zmodyfikować dane przeglądarki. Uwaga: to uprawnienie może nie być egzekwowane przez przeglądarki innych firm oraz inne aplikacje z możliwością przeglądania internetu."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ustawianie alarmu"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Pozwala aplikacji na ustawienie alarmu w zainstalowanej aplikacji budzika. Funkcja ta może nie być zaimplementowana w niektórych aplikacjach tego typu."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"dodawanie poczty głosowej"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Pozwala aplikacji na dodawanie wiadomości do skrzynki odbiorczej poczty głosowej."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modyfikowanie pozwoleń przeglądarki dotyczących lokalizacji geograficznej"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Pozwala aplikacji na modyfikowanie uprawnień przeglądarki dotyczących lokalizacji geograficznej. Złośliwe aplikacje mogą używać tej opcji do wysyłania informacji o lokalizacji do dowolnych witryn."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Czy chcesz, aby zapamiętać to hasło w przeglądarce?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Nie teraz"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Zapamiętaj"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nigdy"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nie masz pozwolenia na otwarcie tej strony."</string>
- <string name="text_copied" msgid="2531420577879738860">"Tekst został skopiowany do schowka."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła dane z aplikacji <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła dane ze schowka"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowany tekst"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowany obraz"</string>
- <string name="pasted_content" msgid="646276353060777131">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowane treści"</string>
<string name="more_item_label" msgid="7419249600215749115">"Więcej"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1380,13 +1331,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Możesz to zmienić: Ustawienia > Aplikacje"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Zawsze zezwalaj"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nigdy nie zezwalaj"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Usunięto kartę SIM"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Sieć komórkowa będzie niedostępna do chwili ponownego uruchomienia urządzenia z ważną kartą SIM."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Gotowe"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Dodano kartę SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Uruchom ponownie urządzenie, aby uzyskać dostęp do sieci komórkowej."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Uruchom ponownie"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktywuj usługę sieci komórkowej"</string>
@@ -1698,8 +1646,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Karta SIM została wyłączona. Podaj kod PUK, by przejść dalej. Szczegóły uzyskasz od operatora."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Podaj wybrany kod PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Potwierdź wybrany kod PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Odblokowuję kartę SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Nieprawidłowy PIN."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Wpisz PIN o długości od 4 do 8 cyfr."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK musi mieć 8 cyfr."</string>
@@ -1728,6 +1675,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Usuń"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zwiększyć głośność ponad zalecany poziom?\n\nSłuchanie głośno przez długi czas może uszkodzić Twój słuch."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Ostrzeżenie\nLimit głośnych dźwięków, jakich przez tydzień możesz bezpiecznie słuchać przez słuchawki, został przekroczony.\n\nPrzekroczenie limitu spowoduje trwałe uszkodzenie słuchu."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Ostrzeżenie\nLimit głośnych dźwięków, jakich przez tydzień możesz bezpiecznie słuchać przez słuchawki, został 5-krotnie przekroczony.\n\nGłośność została zmniejszona, aby chronić Twój słuch."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Poziom głośności, na jakim słuchasz multimediów, może spowodować uszkodzenie słuchu, jeśli będzie się utrzymywał przez dłuższy czas.\n\nDalsze odtwarzanie na tym poziomie głośności przez dłuższy czas może uszkodzić Twój słuch."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Ostrzeżenie\nSłuchasz obecnie treści odtwarzanych na niebezpiecznym poziomie głośności.\n\nDalsze słuchanie przy takiej głośności trwale uszkodzi Twój słuch."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Użyć skrótu ułatwień dostępu?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Gdy skrót jest włączony, jednoczesne naciskanie przez trzy sekundy obu przycisków głośności uruchamia funkcję ułatwień dostępu."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Włączyć skrót ułatwień dostępu?"</string>
@@ -1756,8 +1707,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Wyłącz skrót"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Użyj skrótu"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Odwrócenie kolorów"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Korekcja kolorów"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Tryb jednej ręki"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatkowe przyciemnienie"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została włączona."</string>
@@ -2354,8 +2304,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Zezwala aplikacji towarzyszącej na wysyłanie wiadomości towarzyszących na inne urządzenia."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Uruchamianie usług na pierwszym planie podczas działania w tle"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Zezwala aplikacji towarzyszącej na uruchamianie usług działających na pierwszym planie, podczas gdy sama działa w tle."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon jest dostępny"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon jest zablokowany"</string>
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index a6a281f..9e182b4 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Os PINs digitados não correspondem."</string>
<string name="invalidPin" msgid="7542498253319440408">"Digite um PIN com 4 a 8 números."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Digite um PUK com oito números ou mais."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"O chip está bloqueado por uma PUK. Digite o código PUK para desbloquear."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Digite a PUK2 para desbloquear o chip."</string>
<string name="enablePin" msgid="2543771964137091212">"Falha. Ative o bloqueio do chip/R-UIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Tentativas restantes: <xliff:g id="NUMBER_1">%d</xliff:g>. Caso o código correto não seja digitado, o chip será bloqueado.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Permite que o app encerre processos em segundo plano de outros apps. Pode ser que outros apps parem de funcionar."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Este app pode se sobrepor visualmente a outros apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Este app pode se sobrepor visualmente a outros apps ou a outras partes da tela. Isso pode interferir no uso normal do app e alterar a forma como os outros apps são exibidos."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ocultar sobreposições de outros apps"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Este app pode solicitar que o sistema não mostre sobreposições de outros apps sobre ele."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"executar em segundo plano"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Este app pode ser executado em segundo plano, o que pode esgotar a bateria mais rapidamente."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"usar dados em segundo plano"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Tente novamente"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Desbloqueio para todos os recursos e dados"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"O número máximo de tentativas de desbloqueio por reconhecimento facial foi excedido"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Sem chip"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Nenhum chip no tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Nenhum chip no seu dispositivo Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Nenhum chip no smartphone."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Adicione um chip."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"O chip não foi inserido ou não pode ser lido. Adicione um chip."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Chip inutilizável."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Seu chip foi desativado permanentemente.\n Entre em contato com seu provedor de serviços sem fio para receber outro chip."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Faixa anterior"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Próxima faixa"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausar"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avançar"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Só chamadas de emergência"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Rede bloqueada"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"O chip está bloqueado pela PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consulte o Guia do usuário ou entre em contato com o Serviço de atendimento ao cliente."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"O chip está bloqueado."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Desbloqueando chip…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Você desenhou seu padrão de desbloqueio incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\nTente novamente em <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Você digitou sua senha incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\nTente novamente em <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Você digitou seu PIN incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes.\n\nTente novamente em <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Sair desta página"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Permanecer nesta página"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVocê quer mesmo sair desta página?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmar"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Dica: toque duas vezes para aumentar e diminuir o zoom."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Preench. aut."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Conf. preench. aut."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Preenchimento automático do <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Distrito"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Código Postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estado"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"CEP"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Condado"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ilha"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrito"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamento"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Município"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Paróquia"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Área"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirado"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ler seu histórico e seus favoritos da web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permite que o app leia o histórico de todos os URLs acessados no navegador e todos os favoritos do navegador. Observação: pode não ser aplicável a navegadores de terceiros e outros apps com capacidade de navegação na web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"gravar seu histórico e seus favoritos da web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permite que o app modifique o histórico ou os favoritos do navegador armazenados no tablet. Pode permitir que o app apague ou modifique os dados do navegador. Observação: pode não ser aplicável a navegadores de terceiros e outros apps com capacidade de navegação na web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permite que o app modifique o histórico ou os favoritos do navegador armazenados no seu dispositivo Android TV. Isso pode permitir que o app apague ou modifique os dados do navegador. Observação: essa autorização pode ser aplicada por navegadores de terceiros ou outros apps com recursos de navegação na Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permite que o app modifique o histórico ou os favoritos do navegador armazenados no telefone. Pode permitir que o app apague ou modifique os dados do navegador. Observação: pode não ser aplicável a navegadores de terceiros e outros apps com capacidade de navegação na web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"definir um alarme"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permite que o app defina um alarme em um app despertador instalado. Alguns apps despertador podem não implementar este recurso."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"adicionar correio de voz"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permite que o app adicione mensagens a sua caixa de entrada do correio de voz."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Modifique as permissões de geolocalização de seu navegador"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permite que o app modifique as permissões de geolocalização do navegador. Apps maliciosos podem usar isso para permitir o envio de informações locais para sites arbitrários."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Quer que o navegador lembre desta senha?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Agora não"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Lembrar"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nunca"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Você não tem permissão para abrir esta página."</string>
- <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Dados do app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou conteúdo da sua área de transferência"</string>
- <string name="pasted_text" msgid="4298871641549173733">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto copiado"</string>
- <string name="pasted_image" msgid="4729097394781491022">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem copiada"</string>
- <string name="pasted_content" msgid="646276353060777131">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo copiado"</string>
<string name="more_item_label" msgid="7419249600215749115">"Mais"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"P/ alterar: Configurações > Apps"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Sempre permitir"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nunca permitir"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Chip removido"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"A rede móvel ficará indisponível até que você reinicie com um chip válido."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Concluído"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Chip adicionado"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Reinicie o dispositivo para acessar a rede móvel."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Reiniciar"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Ativar serviço móvel"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"O chip foi desativado. Insira o código PUK para continuar. Entre em contato com a operadora para obter mais detalhes."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Digite o código PIN desejado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirme o código PIN desejado"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Desbloqueando chip…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Código PIN incorreto."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Digite um PIN com quatro a oito números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"O código PUK deve ter oito números."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remover"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir em volume alto por longos períodos pode danificar sua audição."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Alerta,\nVocê excedeu a quantidade semanal de sinais de ruído alto que pode ser ouvida por fones de ouvido com segurança.\n\nUltrapassar esse limite vai prejudicar sua audição permanentemente."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Alerta,\nVocê excedeu em cinco vezes a quantidade semanal de sinais de ruído alto que pode ser ouvida por fones de ouvido com segurança.\n\nO volume foi diminuído para proteger sua audição."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Você está escutando mídia em um volume que pode resultar em danos à audição quando mantido por períodos prolongados.\n\nContinuar a reproduzir mídia nesse volume por períodos prolongados pode resultar em danos à sua audição."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Alerta,\nVocê está ouvindo conteúdo em um volume perigoso.\n\nContinuar a ouvir nesse volume vai prejudicar sua audição permanentemente."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usar atalho de Acessibilidade?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho estiver ativado, pressione os dois botões de volume por três segundos para iniciar um recurso de acessibilidade."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Ativar atalho para recursos de acessibilidade?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desativar atalho"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Correção de cor"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Escurecer a tela"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Permite que um app complementar envie mensagens complementares para outros dispositivos."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Iniciar serviços em primeiro plano estando em segundo plano"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permite que um app complementar em segundo plano inicie serviços em primeiro plano."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"O microfone está disponível"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"O microfone está bloqueado"</string>
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index dda4f96..ee48973 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Os PINs que escreveu não correspondem."</string>
<string name="invalidPin" msgid="7542498253319440408">"Introduza um PIN entre 4 e 8 números."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Introduza um PUK que tenha 8 ou mais algarismos."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"O seu SIM está bloqueado com o PUK. Introduza o código PUK para o desbloquear."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Introduza o PUK2 para desbloquear o SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Ação sem êxito. Ative o bloqueio do SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="many">You have <xliff:g id="NUMBER_1">%d</xliff:g> remaining attempts before SIM is locked.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Permite que a app termine processos em segundo plano de outras aplicações. Isto pode fazer com que outras aplicações deixem de funcionar."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Esta app pode aparecer por cima de outras aplicações"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Esta app pode aparecer por cima de outras aplicações ou de outras partes do ecrã. Tal pode interferir com a utilização normal das aplicações e alterar a forma como as outras aplicações aparecem."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ocultar sobreposições de outras apps"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Esta app pode pedir que o sistema oculte a apresentação de sobreposições provenientes de apps sobre ela."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"executar em segundo plano"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Esta app pode ser executada em segundo plano, o que pode descarregar a bateria mais rapidamente."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"utilizar dados em segundo plano"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Tentar novamente"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Desbloqueio de todas as funcionalidades e dados"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Excedido o n.º máximo de tentativas de Desbloqueio facial"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Sem SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Nenhum SIM no tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Nenhum SIM no seu dispositivo Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Nenhum SIM no telemóvel."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Adicione um SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"O SIM está em falta ou não é legível. Adicione um SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM inutilizável."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"O SIM foi desativado permanentemente.\n Contacte o seu fornecedor de serviços de rede sem fios para obter outro SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Faixa anterior"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Faixa seguinte"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Interromper"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avançar"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Apenas chamadas de emergência"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Rede bloqueada"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"O SIM está bloqueado com o PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consulte o Manual de utilizador ou contacte a Assistência a Clientes."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"O SIM está bloqueado."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"A desbloquear SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Desenhou a sua padrão de desbloqueio incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\nTente novamente dentro de <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Escreveu a sua palavra-passe incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\n Tente novamente dentro de <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Escreveu o seu número PIN incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\n Tente novamente dentro de <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Sair desta Página"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Permanecer nesta Página"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nTem a certeza de que pretende navegar para outra página?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmar"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Sugestão: toque duas vezes para aumentar ou diminuir o zoom."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Preenchimento Automático"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Configurar Preenchimento Automático"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Preenchimento automático com <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Província"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Código postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estado"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Código postal"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Concelho"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ilha"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrito"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamento"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Município"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Freguesia"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Área"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirado"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ler os marcadores da Web e o histórico"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permite que a app leia o histórico de todos os URLs visitados pelo Navegador e todos os marcadores do Navegador. Nota: esta autorização pode não ser aplicada por navegadores de terceiros ou outras aplicações com capacidades de navegação na Web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"gravar marcadores da Web e o histórico"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permite que a app modifique o histórico do Navegador ou marcadores guardados no tablet. Isto pode permitir que a app apague ou modifique dados do Navegador. Nota: esta autorização pode não ser aplicada por navegadores de terceiros ou outras aplicações com capacidades de navegação na Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permite à app modificar o histórico do navegador ou os marcadores armazenados no seu dispositivo Android TV. Isto pode permitir à app apagar ou modificar dados do navegador. Nota: esta autorização pode não ser aplicada por navegadores de terceiros ou outras aplicações com capacidade de navegação na Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permite que a app modifique o histórico do Navegador ou marcadores guardados no telemóvel. Isto pode permitir que a app apague ou modifique dados do Navegador. Nota: esta autorização pode não ser aplicada por navegadores de terceiros ou outras aplicações com capacidades de navegação na Web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"definir um alarme"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permite que a app defina um alarme numa app de despertador instalada. Algumas aplicações de despertador podem não integrar esta funcionalidade."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"adicionar correio de voz"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permite que a app adicione mensagens à sua caixa de entrada de correio de voz."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modificar permissões de geolocalização do Navegador"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permite que a app modifique as permissões de geolocalização do navegador. As aplicações maliciosas podem usar isto para permitir o envio de informações de localização para Web sites arbitrárias."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Quer que o browser memorize esta palavra-passe?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Agora não"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Lembrar"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nunca"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Não tem autorização para abrir esta página."</string>
- <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou da app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou a partir da área de transferência"</string>
- <string name="pasted_text" msgid="4298871641549173733">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto que copiou"</string>
- <string name="pasted_image" msgid="4729097394781491022">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem que copiou"</string>
- <string name="pasted_content" msgid="646276353060777131">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo que copiou"</string>
<string name="more_item_label" msgid="7419249600215749115">"Mais"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Pode alterar mais tarde em Definições > Apps"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Permitir Sempre"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nunca Permitir"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM removido"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"A rede móvel vai estar indisponível até que reinicie o dispositivo com um SIM válido."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Concluído"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM adicionado"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Reinicie o aparelho para aceder à rede de telemóvel."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Reiniciar"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Ativar o serviço móvel"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"O SIM está agora desativado. Introduza o código PUK para continuar. Contacte o operador para obter detalhes."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Introduza o código PIN pretendido"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirme o código PIN pretendido"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"A desbloquear SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Código PIN incorreto."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Introduza um PIN entre 4 e 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"O código PUK deve ter 8 números."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" - "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remover"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir com um volume elevado durante longos períodos poderá ser prejudicial para a sua audição."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Aviso,\nExcedeu a quantidade de sinais sonoros altos que uma pessoa pode ouvir em segurança numa semana através de auscultadores.\n\nUltrapassar este limite prejudica permanentemente a sua audição."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Aviso,\nExcedeu 5 vezes a quantidade de sinais sonoros altos que uma pessoa pode ouvir em segurança numa semana através de auscultadores.\n\nO volume foi reduzido para proteger a sua audição."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"O nível ao qual está a ouvir conteúdo multimédia pode resultar em danos auditivos se o fizer durante longos períodos.\n\nContinuar a ouvir a este nível durante longos períodos pode ser prejudicial para a sua audição."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Aviso,\nEstá a ouvir conteúdo reproduzido com um volume alto e inseguro.\n\nContinuar a ouvir a este volume vai prejudicar permanentemente a sua audição."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Pretende utilizar o atalho de acessibilidade?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho está ativado, premir ambos os botões de volume durante 3 segundos inicia uma funcionalidade de acessibilidade."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Ativar o atalho das funcionalidades de acessibilidade?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desativar atalho"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atalho"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Correção da cor"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Permite que uma app associada entregue mensagens associadas noutros dispositivos."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Iniciar em segundo plano serviços em primeiro plano"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permite que uma app associada em segundo plano inicie serviços em primeiro plano."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"O microfone está disponível"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"O microfone está bloqueado"</string>
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index a6a281f..9e182b4 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Os PINs digitados não correspondem."</string>
<string name="invalidPin" msgid="7542498253319440408">"Digite um PIN com 4 a 8 números."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Digite um PUK com oito números ou mais."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"O chip está bloqueado por uma PUK. Digite o código PUK para desbloquear."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Digite a PUK2 para desbloquear o chip."</string>
<string name="enablePin" msgid="2543771964137091212">"Falha. Ative o bloqueio do chip/R-UIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Tentativas restantes: <xliff:g id="NUMBER_1">%d</xliff:g>. Caso o código correto não seja digitado, o chip será bloqueado.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Permite que o app encerre processos em segundo plano de outros apps. Pode ser que outros apps parem de funcionar."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Este app pode se sobrepor visualmente a outros apps"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Este app pode se sobrepor visualmente a outros apps ou a outras partes da tela. Isso pode interferir no uso normal do app e alterar a forma como os outros apps são exibidos."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ocultar sobreposições de outros apps"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Este app pode solicitar que o sistema não mostre sobreposições de outros apps sobre ele."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"executar em segundo plano"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Este app pode ser executado em segundo plano, o que pode esgotar a bateria mais rapidamente."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"usar dados em segundo plano"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Tente novamente"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Desbloqueio para todos os recursos e dados"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"O número máximo de tentativas de desbloqueio por reconhecimento facial foi excedido"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Sem chip"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Nenhum chip no tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Nenhum chip no seu dispositivo Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Nenhum chip no smartphone."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Adicione um chip."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"O chip não foi inserido ou não pode ser lido. Adicione um chip."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Chip inutilizável."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Seu chip foi desativado permanentemente.\n Entre em contato com seu provedor de serviços sem fio para receber outro chip."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Faixa anterior"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Próxima faixa"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausar"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Avançar"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Só chamadas de emergência"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Rede bloqueada"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"O chip está bloqueado pela PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consulte o Guia do usuário ou entre em contato com o Serviço de atendimento ao cliente."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"O chip está bloqueado."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Desbloqueando chip…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Você desenhou seu padrão de desbloqueio incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\nTente novamente em <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Você digitou sua senha incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\nTente novamente em <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Você digitou seu PIN incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes.\n\nTente novamente em <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Sair desta página"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Permanecer nesta página"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVocê quer mesmo sair desta página?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmar"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Dica: toque duas vezes para aumentar e diminuir o zoom."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Preench. aut."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Conf. preench. aut."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Preenchimento automático do <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Distrito"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Código Postal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estado"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"CEP"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Condado"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ilha"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrito"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamento"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Município"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Paróquia"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Área"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirado"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ler seu histórico e seus favoritos da web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permite que o app leia o histórico de todos os URLs acessados no navegador e todos os favoritos do navegador. Observação: pode não ser aplicável a navegadores de terceiros e outros apps com capacidade de navegação na web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"gravar seu histórico e seus favoritos da web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permite que o app modifique o histórico ou os favoritos do navegador armazenados no tablet. Pode permitir que o app apague ou modifique os dados do navegador. Observação: pode não ser aplicável a navegadores de terceiros e outros apps com capacidade de navegação na web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permite que o app modifique o histórico ou os favoritos do navegador armazenados no seu dispositivo Android TV. Isso pode permitir que o app apague ou modifique os dados do navegador. Observação: essa autorização pode ser aplicada por navegadores de terceiros ou outros apps com recursos de navegação na Web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permite que o app modifique o histórico ou os favoritos do navegador armazenados no telefone. Pode permitir que o app apague ou modifique os dados do navegador. Observação: pode não ser aplicável a navegadores de terceiros e outros apps com capacidade de navegação na web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"definir um alarme"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permite que o app defina um alarme em um app despertador instalado. Alguns apps despertador podem não implementar este recurso."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"adicionar correio de voz"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permite que o app adicione mensagens a sua caixa de entrada do correio de voz."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Modifique as permissões de geolocalização de seu navegador"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permite que o app modifique as permissões de geolocalização do navegador. Apps maliciosos podem usar isso para permitir o envio de informações locais para sites arbitrários."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Quer que o navegador lembre desta senha?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Agora não"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Lembrar"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nunca"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Você não tem permissão para abrir esta página."</string>
- <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Dados do app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou conteúdo da sua área de transferência"</string>
- <string name="pasted_text" msgid="4298871641549173733">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto copiado"</string>
- <string name="pasted_image" msgid="4729097394781491022">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem copiada"</string>
- <string name="pasted_content" msgid="646276353060777131">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo copiado"</string>
<string name="more_item_label" msgid="7419249600215749115">"Mais"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"P/ alterar: Configurações > Apps"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Sempre permitir"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nunca permitir"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Chip removido"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"A rede móvel ficará indisponível até que você reinicie com um chip válido."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Concluído"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Chip adicionado"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Reinicie o dispositivo para acessar a rede móvel."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Reiniciar"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Ativar serviço móvel"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"O chip foi desativado. Insira o código PUK para continuar. Entre em contato com a operadora para obter mais detalhes."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Digite o código PIN desejado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirme o código PIN desejado"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Desbloqueando chip…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Código PIN incorreto."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Digite um PIN com quatro a oito números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"O código PUK deve ter oito números."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remover"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir em volume alto por longos períodos pode danificar sua audição."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Alerta,\nVocê excedeu a quantidade semanal de sinais de ruído alto que pode ser ouvida por fones de ouvido com segurança.\n\nUltrapassar esse limite vai prejudicar sua audição permanentemente."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Alerta,\nVocê excedeu em cinco vezes a quantidade semanal de sinais de ruído alto que pode ser ouvida por fones de ouvido com segurança.\n\nO volume foi diminuído para proteger sua audição."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Você está escutando mídia em um volume que pode resultar em danos à audição quando mantido por períodos prolongados.\n\nContinuar a reproduzir mídia nesse volume por períodos prolongados pode resultar em danos à sua audição."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Alerta,\nVocê está ouvindo conteúdo em um volume perigoso.\n\nContinuar a ouvir nesse volume vai prejudicar sua audição permanentemente."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usar atalho de Acessibilidade?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho estiver ativado, pressione os dois botões de volume por três segundos para iniciar um recurso de acessibilidade."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Ativar atalho para recursos de acessibilidade?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desativar atalho"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Correção de cor"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Escurecer a tela"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Permite que um app complementar envie mensagens complementares para outros dispositivos."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Iniciar serviços em primeiro plano estando em segundo plano"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permite que um app complementar em segundo plano inicie serviços em primeiro plano."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"O microfone está disponível"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"O microfone está bloqueado"</string>
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 02e4a83..18a8fcb 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN-urile introduse nu sunt identice."</string>
<string name="invalidPin" msgid="7542498253319440408">"Introdu un cod PIN alcătuit din 4 până la 8 cifre."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Introdu un cod PUK care să aibă 8 cifre sau mai mult."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Cardul SIM este blocat prin cod PUK. Introdu codul PUK pentru a-l debloca."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Introdu codul PUK2 ca să deblochezi cardul SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Operațiunea nu a reușit. Activează blocarea cardului SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="few">Ți-au mai rămas <xliff:g id="NUMBER_1">%d</xliff:g> încercări până la blocarea cardului SIM.</item>
@@ -316,7 +314,7 @@
<string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"Activitate fizică"</string>
<string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"să acceseze activitatea fizică"</string>
<string name="permgrouplab_camera" msgid="9090413408963547706">"Camera foto"</string>
- <string name="permgroupdesc_camera" msgid="7585150538459320326">"fotografieze și să înregistreze videoclipuri"</string>
+ <string name="permgroupdesc_camera" msgid="7585150538459320326">"să fotografieze și să înregistreze videoclipuri"</string>
<string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Dispozitive din apropiere"</string>
<string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"descoperă dispozitive din apropiere și conectează-te la acestea"</string>
<string name="permgrouplab_calllog" msgid="7926834372073550288">"Jurnale de apeluri"</string>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Permite aplicației să oprească procesele derulate în fundal de alte aplicații. Acest lucru poate face ca respectivele aplicații să nu mai ruleze."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Această aplicație poate apărea deasupra altor aplicații"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Această aplicație poate apărea deasupra altor aplicații sau a altor părți ale ecranului. Acest lucru poate să afecteze utilizarea normală a aplicației și să schimbe modul în care se afișează alte aplicații."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ascunde suprapunerile altor aplicații"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Această aplicație poate solicita ca sistemul să ascundă suprapunerile care provin din aplicații de deasupra lor."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"să ruleze în fundal"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Această aplicație poate rula în fundal. Astfel, bateria se poate consuma mai repede."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"să utilizeze date în fundal"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Încearcă din nou"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Deblochează pentru toate funcțiile și datele"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"S-a depășit numărul maxim de încercări pentru Deblocare facială"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Niciun card SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Nu există card SIM în tabletă."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Nu există card SIM în dispozitivul Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Nu există card SIM în telefon."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Adaugă un card SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Cardul SIM lipsește sau nu poate fi citit. Adaugă un card SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Cardul SIM nu se poate folosi."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Cardul tău SIM a fost dezactivat definitiv.\n Contactează furnizorul de servicii wireless pentru a obține un alt card SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Melodia anterioară"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Melodia următoare"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pauză"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Derulează rapid înainte"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Numai apeluri de urgență"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Rețea blocată"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"Cardul SIM este blocat prin cod PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Consultă Ghidul de utilizare sau contactează asistența pentru clienți."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"Cardul SIM este blocat."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Se deblochează cardul SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Ai desenat incorect modelul pentru deblocare de <xliff:g id="NUMBER_0">%1$d</xliff:g> ori. \n\nÎncearcă din nou peste <xliff:g id="NUMBER_1">%2$d</xliff:g> secunde."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Ai introdus incorect parola de <xliff:g id="NUMBER_0">%1$d</xliff:g> ori. \n\nÎncearcă din nou peste <xliff:g id="NUMBER_1">%2$d</xliff:g> secunde."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Ai introdus incorect codul PIN de <xliff:g id="NUMBER_0">%1$d</xliff:g> ori.\n\nÎncearcă din nou peste <xliff:g id="NUMBER_1">%2$d</xliff:g> secunde."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Părăsește această pagină"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Rămâi în această pagină"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nSigur părăsești această pagină?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Confirmă"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Sfat: mărește și micșorează prin dublă atingere."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Automat"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Conf.Compl.auto."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Completează automat cu <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincie"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Cod poștal"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Stat"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Cod ZIP"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Județ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Insulă"</string>
- <string name="autofill_district" msgid="6428712062213557327">"District"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departament"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefectură"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Cartier"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Zonă"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"citește marcajele și istoricul web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Permite aplicației să citească istoricul tuturor adreselor URL accesate de Browser și toate marcajele din Browser. Notă: această permisiune nu poate fi aplicată de browsere terță parte sau de alte aplicații cu capacități de navigare pe web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"scrie în marcajele și în istoricul web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Permite aplicației să modifice istoricul Browserului sau marcajele stocate pe tabletă. În acest fel, aplicația poate șterge sau modifica datele din Browser. Notă: această permisiune nu poate fi aplicată de browsere terță parte sau de alte aplicații cu capacități de navigare pe web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Permite aplicației să modifice istoricul sau marcajele din browser stocate pe dispozitivul Android TV. Cu această permisiune, aplicația poate șterge sau modifica datele din browser. Notă: această permisiune nu poate fi aplicată de browsere terță parte sau de alte aplicații cu capacități de navigare pe web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Permite aplicației să modifice istoricul Browserului sau marcajele stocate pe telefon. În acest fel, aplicația poate șterge sau modifica datele din Browser. Notă: această permisiune nu poate fi aplicată de browsere terță parte sau de alte aplicații cu capacități de navigare pe web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"setează o alarmă"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Permite aplicației să seteze o alarmă într-o aplicație de ceas cu alarmă instalată. Este posibil ca unele aplicații de ceas cu alarmă să nu implementeze această funcție."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"adăugare mesagerie vocală"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Permite aplicației să adauge mesaje în Mesaje primite în mesageria vocală."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modificare permisiuni pentru locația geografică a browserului"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Permite aplicației să modifice permisiunile privind locația geografică a browserului. Aplicațiile rău intenționate pot utiliza această permisiune pentru a permite trimiterea informațiilor privind locația către site-uri web arbitrare."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Vrei ca browserul să rețină această parolă?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Nu acum"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Reține"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Niciodată"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nu ai permisiunea de a deschide această pagină."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text copiat în clipboard."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat date din <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat din clipboard"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat textul copiat"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat o imagine copiată"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat conținutul copiat"</string>
<string name="more_item_label" msgid="7419249600215749115">"Mai multe"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Meniu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Poți modifica ulterior în Setări > Aplicații"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Permite întotdeauna"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nu permite niciodată"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"S-a eliminat cardul SIM"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Rețeaua mobilă va fi indisponibilă până când repornești cu un card SIM valid."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Terminat"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"S-a adăugat cardul SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Repornește dispozitivul pentru a accesa rețeaua mobilă."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Repornește"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Activează serviciul mobil"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Cardul SIM este acum dezactivat. Introdu codul PUK pentru a continua. Contactează operatorul pentru mai multe detalii."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Introdu codul PIN dorit"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Confirmă codul PIN dorit"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Se deblochează cardul SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Cod PIN incorect."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Introdu un cod PIN format din 4 până la 8 cifre."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Codul PUK trebuie să conțină 8 numere."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Elimină"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Mărești volumul peste nivelul recomandat?\n\nDacă asculți perioade lungi la volum ridicat, auzul poate fi afectat."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Avertisment\nAi depășit numărul de semnale cu sunet puternic pe care le poți asculta într-o săptămână în căști.\n\nDepășirea limitei îți va afecta definitiv auzul."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Avertisment\nAi depășit de cinci ori numărul de semnale cu sunet puternic pe care le poți asculta într-o săptămână în căști.\n\nAm micșorat volumul pentru a-ți proteja auzul."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Nivelul la care asculți conținut media îți poate afecta auzul dacă este susținut pe perioade lungi de timp.\n\nContinuarea redării la acest nivel pentru perioade lungi de timp îți poate afecta auzul."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Avertisment\nAsculți conținut zgomotos la un nivel de sunet nesigur.\n\nContinuarea ascultării la acest volum îți va afecta definitiv auzul."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Folosești comanda rapidă pentru accesibilitate?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Când comanda rapidă e activată, dacă apeși ambele butoane de volum timp de trei secunde, vei lansa o funcție de accesibilitate."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Activezi comanda rapidă pentru funcțiile de accesibilitate?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Dezactivează comanda rapidă"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Folosește comanda rapidă"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversarea culorilor"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Corecția culorilor"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modul cu o mână"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Luminozitate redusă suplimentar"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S-au apăsat lung tastele de volum. S-a activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Permite unei aplicații partenere să trimită mesaje dispozitivelor însoțitoare."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Să inițieze servicii în prim-plan din fundal"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Permite unei aplicații partenere să inițieze servicii în prim-plan din fundal."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Microfonul este disponibil"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Microfonul este blocat"</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index e098107..18c2150 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Введенные PIN-коды не совпадают."</string>
<string name="invalidPin" msgid="7542498253319440408">"Введите PIN-код (от 4 до 8 цифр)."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Введите PUK-код из 8 или более цифр."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM-карта заблокирована с помощью PUK-кода. Введите его для разблокировки."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Введите PUK2-код для разблокировки SIM-карты."</string>
<string name="enablePin" msgid="2543771964137091212">"Произошла ошибка. Включите блокировку SIM-карты или карты R-UIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Осталась <xliff:g id="NUMBER_1">%d</xliff:g> попытка. После этого SIM-карта будет заблокирована.</item>
@@ -390,6 +388,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Приложение сможет завершать фоновые процессы других приложений. Из-за этого другие приложения могут прекратить работу."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Показ поверх всех окон"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Приложение может открываться поверх других окон. Это может влиять на работу с другими приложениями."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"Скрывать оверлеи других приложений"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"По запросу этого приложения система может не показывать поверх него оверлеи других приложений."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"Работа в фоновом режиме"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Приложению разрешено работать в фоновом режиме. Заряд батареи может расходоваться быстрее."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"Передача данных в фоновом режиме"</string>
@@ -965,22 +965,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Повторите попытку"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Разблок. для доступа ко всем функциям и данным"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Все попытки войти с помощью фейсконтроля использованы"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM-карта отсутствует"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"В планшете отсутствует SIM-карта."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"В устройстве Android TV отсутствует SIM-карта."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"В телефоне отсутствует SIM-карта."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Добавьте SIM-карту."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-карта отсутствует или не распознана. Добавьте SIM-карту."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM-карту невозможно использовать."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM-карта была окончательно деактивирована.\n Чтобы получить новую, обратитесь к своему оператору мобильной связи."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Предыдущий трек"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Следующий трек"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Приостановить"</string>
@@ -990,13 +982,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Перемотать вперед"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Только экстренные вызовы"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Сеть заблокирована"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-карта заблокирована с помощью PUK-кода."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Ознакомьтесь с руководством пользователя или свяжитесь со службой поддержки."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-карта заблокирована."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Разблокировка SIM-карты…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Вы <xliff:g id="NUMBER_0">%1$d</xliff:g> раз неверно указали графический ключ. \n\nПовтор через <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Вы <xliff:g id="NUMBER_0">%1$d</xliff:g> раз неверно указали пароль. \n\nПовтор через <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Вы <xliff:g id="NUMBER_0">%1$d</xliff:g> раз неверно указали PIN-код. \n\nПовтор через <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
@@ -1069,50 +1058,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Покинуть"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Остаться"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nПокинуть эту страницу?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Подтвердите"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Совет: нажмите дважды, чтобы увеличить и уменьшить масштаб."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Автозаполнение"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Настроить автозаполнение"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Автозаполнение с помощью сервиса \"<xliff:g id="SERVICENAME">%1$s</xliff:g>\""</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Провинция"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Почтовый индекс"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Штат"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Почтовый индекс"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Округ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Остров"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Район"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Департамент"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Префектура"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Округ"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Область"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Эмират"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"Просмотр закладок и истории поиска"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Приложение получит доступ к истории и закладкам браузера. Обратите внимание: браузеры независимых поставщиков или другие приложения для просмотра веб-страниц могут не применять это разрешение."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"Изменение закладок и истории поиска"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Приложение сможет изменять историю или закладки браузера, сохраненные на планшетном ПК, а также удалять и изменять данные браузера. Обратите внимание: браузеры независимых поставщиков или другие приложения для просмотра веб-страниц могут не применять это разрешение."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Приложение сможет изменять историю или закладки браузера, сохраненные на устройстве Android TV, а также удалять и изменять данные браузера. Обратите внимание: браузеры независимых поставщиков или другие приложения для просмотра веб-страниц не могут пользоваться этим разрешением."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Приложение сможет изменять историю или закладки браузера, сохраненные на телефоне, а также удалять и изменять данные браузера. Обратите внимание: браузеры независимых поставщиков или другие приложения для просмотра веб-страниц могут не применять это разрешение."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"Установка будильника"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Приложение сможет настраивать будильник. Функция поддерживается не во всех программах."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"Добавление голосовых сообщений"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Приложение сможет добавлять голосовые сообщения в папку \"Входящие\"."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Изменение прав доступа к геоданным в браузере"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Приложение сможет изменять настройки доступа к геоданным в браузере. Вредоносные программы смогут таким образом отправлять информацию о местоположении на любые веб-сайты."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Вы хотите, чтобы браузер запомнил этот пароль?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Не сейчас"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Запомнить"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Никогда"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"У вас нет доступа к этой странице."</string>
- <string name="text_copied" msgid="2531420577879738860">"Текст скопирован в буфер обмена."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Данные из приложения \"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>\" вставлены в приложение \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\"."</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Приложение \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\" вставило данные из буфера обмена."</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированный текст вставлен"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированное изображение вставлено"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированный контент вставлен"</string>
<string name="more_item_label" msgid="7419249600215749115">"Ещё"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Меню+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1380,13 +1331,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Это можно изменить позже в разделе настроек \"Приложения\"."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Разрешать всегда"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Не разрешать"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-карта извлечена"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Чтобы воспользоваться мобильной сетью, установите действующую SIM-карту и перезапустите устройство."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Готово"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-карта добавлена"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Перезагрузите устройство для доступа к мобильной сети."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Перезапустить"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Включить мобильную связь"</string>
@@ -1698,8 +1646,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-карта заблокирована. Чтобы продолжить, введите PUK-код. За подробной информацией обратитесь к своему оператору связи."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Введите желаемый PIN-код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Введите PIN-код ещё раз"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Разблокировка SIM-карты…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Неверный PIN-код."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Введите PIN-код (от 4 до 8 цифр)."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-код должен содержать 8 символов."</string>
@@ -1728,6 +1675,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Удалить"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Установить громкость выше рекомендуемого уровня?\n\nВоздействие громкого звука в течение долгого времени может привести к повреждению слуха."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Внимание!\nПревышено количество громких звуков, которое считается безопасным при прослушивании в наушниках в течение недели.\n\nВыход за пределы лимита ведет к необратимому повреждению слуха."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Внимание!\nКоличество громких звуков, которое считается безопасным при прослушивании в наушниках в течение недели, превышено в 5 раз.\n\nГромкость снижена для защиты слуха."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Выбранный у вас уровень громкости вреден для слуха при долгом воздействии.\n\nПрослушивание на текущем уровне громкости в течение длительного времени может привести к повреждению слуха."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Внимание!\nВы слушаете аудио на опасном уровне громкости.\n\nПрослушивание на текущем уровне громкости ведет к необратимому повреждению слуха."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Использовать быстрое включение?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Чтобы использовать функцию специальных возможностей, когда она включена, нажмите и удерживайте обе кнопки регулировки громкости в течение трех секунд."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Использовать быстрое включение?"</string>
@@ -1756,8 +1707,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Деактивировать быстрое включение"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Использовать быстрое включение"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Инверсия цветов"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Коррекция цвета"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим управления одной рукой"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнительное уменьшение яркости"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" включена."</string>
@@ -2354,8 +2304,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Сопутствующее приложение сможет доставлять сообщения на другие устройства."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Запуск активных служб из фонового режима"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Сопутствующее приложение сможет запускать активные службы из фонового режима."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Микрофон доступен."</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Микрофон заблокирован."</string>
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index ff02130..301e592 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"ඔබ ටයිප් කල PIN නොගැළපේ."</string>
<string name="invalidPin" msgid="7542498253319440408">"4 සිට 8 දක්වා අංක සහිත PIN එකක් ටයිප් කරන්න."</string>
<string name="invalidPuk" msgid="8831151490931907083">"අංක 8 ක් හෝ ඊට වැඩි PUK එකක් ටයිප් කරන්න."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"ඔබේ SIM එක PUK-අගුළු දමා ඇත. එය අගුළු ඇරීමට PUK කේතය ටයිප් කරන්න."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM අවහිර කිරීම ඉවත් කිරීමට PUK2 ටයිප් කරන්න."</string>
<string name="enablePin" msgid="2543771964137091212">"අසාර්ථකයි, SIM/RUIM අඟුල සබල කරන්න."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">ඔබේ SIM කාඩ් පත අඟුළු වැටීමට පෙර තවත් උත්සාහයන් <xliff:g id="NUMBER_1">%d</xliff:g> ක් ඉතිරිව ඇත.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"අනෙක් යෙදුම්වල පසුබිම් ක්රියාවලි අවසන් කිරීමට යෙදුමට අවසර දෙන්න. අනෙක් යෙදුම් ධාවනය නැවතීමට මෙය හේතුවක් වේ."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"මෙම යෙදුම වෙනත් යෙදුම්වලට ඉහළින් දිස් විය හැකිය"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"මෙම යෙදුම වෙනත් යෙදුම්වල හෝ තිරයේ වෙනත් කොටස්වලට ඉහළින් දිස් විය හැකිය. මෙය සාමාන්ය යෙදුම් භාවිතයට බාධා කළ හැකි අතර වෙනත් යෙදුම් දිස් වන ආකාරය වෙනස් කළ හැකිය."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"වෙනත් යෙදුම් උඩැතිරි සඟවන්න"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"මෙම යෙදුමට පද්ධතියට යෙදුම්වලින් ආරම්භ වන උඩැතිරි එහි ඉහළින් පෙන්වීමෙන් සඟවන ලෙස ඉල්ලා සිටිය හැක."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"පසුබිමේ ධාවනය කරන්න"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"මෙම යෙදුම පසුබිමේ ධාවනය කිරීමට හැකිය. මෙය බැටරිය වඩාත් වේගයෙන් වැය කළ හැකිය."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"පසුබිමේ දත්ත භාවිත කරන්න"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"නැවත උත්සාහ කරන්න"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"සියලු විශේෂාංග සහ දත්ත අනවහිර කරන්න"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"මුහුණෙන් අගුළු හැරීමේ උපරිම ප්රයන්තයන් ගණන ඉක්මවා ඇත"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM නැත"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ටැබ්ලටයේ SIM නැත."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"ඔබේ Android TV උපාංගයේ SIM නැත."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"දුරකථනයේ SIM නැත."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM එකක් එක් කරන්න."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM අස්ථානගතයි හෝ කියවිය නොහැක. SIM එකක් එක් කරන්න."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"භාවිත කළ නොහැකි SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"ඔබේ SIM ස්ථිරවම අක්රිය කර ඇත.\n වෙනත් SIM පතක් සඳහා ඔබේ රැහැන් රහිත සේවා සපයන්නා අමතන්න."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"පෙර ගීතය"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"ඊළඟ ගීතය"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"විරාමය"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"වේගයෙන් ඉදිරියට යන"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"හදිසි ඇමතුම් පමණි"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ජාලය අගුළු දමා ඇත"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM PUK-අගුළු දමා ඇත."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"පරිශීලක උපදේශය බලන්න හෝ පරිභෝගික සේවාව අමතන්න."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM අගුළු දමා ඇත."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM අගුළු අරිමින්…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"ඔබ <xliff:g id="NUMBER_0">%1$d</xliff:g> වාරයක් අගුළු ඇරීමේ රටාව වැරදියට ඇඳ ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%2$d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"ඔබ මුරපදය වාර <xliff:g id="NUMBER_0">%1$d</xliff:g> ක් වැරදියට ටයිප්කොට ඇත. \n\nතත්පර <xliff:g id="NUMBER_1">%2$d</xliff:g> කින් නැවත උත්සහ කරන්න."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"ඔබ PIN අංකය <xliff:g id="NUMBER_0">%1$d</xliff:g> වාරයක් වැරදියට ටයිප් කොට ඇත.\n\n තත්පර <xliff:g id="NUMBER_1">%2$d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"මෙම පිටුවෙන් ඉවත් වන්න"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"මෙම පිටුවෙහි ඉන්න"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nඔබට මෙම පිටුවෙන් සංචලනය කිරීමට අවශ්ය බවට ඔබට විශ්වාසද?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"තහවුරු කරන්න"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"උපදෙස: විශාලනය කිරීමට සහ කුඩා කිරීමට දෙවරක් තට්ටු කරන්න."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ස්වයංක්රිය පිරවුම"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"ස්වයංක්රිය පිරවුම සකසන්න"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> සමගින් ස්වයං පුරවන්න"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"පළාත"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"තැපැල් කේතය"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ජනපදය"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP කේතය"</string>
- <string name="autofill_county" msgid="7781382735643492173">"ප්රාන්තය"</string>
- <string name="autofill_island" msgid="5367139008536593734">"දූපත"</string>
- <string name="autofill_district" msgid="6428712062213557327">"දිස්ත්රික්කය"</string>
- <string name="autofill_department" msgid="9047276226873531529">"දෙපාර්තමේන්තුව"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"ප්රාන්තය"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"කෝරලය"</string>
- <string name="autofill_area" msgid="8289022370678448983">"ප්රදේශය"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"එමිරේට්"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"ඔබගේ වෙබ් පිටුසන් සහ ඉතිහාසය කියවීම"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"බ්රව්සරය නැරඹූ සියලු URL සහ සියලු බ්රව්සර පිටුසන් වල ඉතිහාසය කියවීමට යෙදුමට අවසර දෙන්න. සටහන: වෙබ් බ්රව්සර අවශ්යතා සමග තෙවෙනි පාර්ශව බ්රව්සර වලට හෝ වෙනත් යෙදුම්වලට මෙම අවසරය බල නොදෙයි."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"වෙබ් පිටුසන් සහ ඉතිහාසයට ලිවිම"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"ඔබගේ ටැබ්ලටයේ ගබඩා කර ඇති බ්රව්සරයේ ඉතිහාසය හෝ පිටුසන් වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. බ්රව්සර දත්ත මැකීමට හෝ වෙනස් කිරීමට මෙමඟින් යෙදුමට අවසර දෙයි. සටහන: වෙබ් ගවේෂණ හැකියාව සහිත තෙවෙනි පාර්ශව බ්රව්සර හෝ වෙනත් යෙදුම් වලින් මෙම අවසරයට බල නොකරයි."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ඔබගේ Android TV උපාංගයෙහි ගබඩා කර තිබෙන බ්රවුසරයේ ඉතිහාසය හෝ පිටුසන් වෙනස් කිරීමට යෙදුමට ඉඩ දෙයි. මෙය බ්රවුසර දත්ත මැකීමට හෝ වෙනස් කිරීමට යෙදුම වෙත ඉඩ දිය හැකිය. සටහන: තෙවැනි-පාර්ශ්ව බ්රවුසර හෝ වෙබය බ්රවුස් කිරීමේ හැකියා සහිත වෙනත් යෙදුම් මඟින් මෙම අවසරය බලාත්මක නොකළ හැකිය."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"ඔබගේ දුරකථනයේ ආචයනය කරන ලද බ්රව්සර ඉතිහාසය හෝ පිටුසන වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. ඔබගේ බ්රව්සර දත්ත මැකීමට හෝ වෙනස් කිරීමට අනිෂ්ට යෙදුම් මෙය භාවිත කරයි. සටහන: වෙබ් බ්රව්සර අවශ්යතාවය සමග තෙවෙනි පාර්ශව බ්රව්සර හෝ වෙනත් යෙදුම් විසින් මෙම අවසරය බල ගැන්විය හැක."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"සීනුවක් සැකසීම"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ස්ථාපනය කරන ලද සීනු ඔරලෝසු යෙදුමේ සීනුව සකස් කරන්නට යෙදුමට ඉඩ දෙන්න. ඇතැම් සීනු ඔරලෝසු යෙදුම් මෙම අංගය ක්රියාවට නංවා නොතිබීමට ඉඩ තිබේ."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"හඬ තැපෑල එක් කිරීම"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ඔබගේ හඬ තැපෑලේ එන ලිපි වෙත එන පණිවිඩ එකතු කිරීමට යෙදුමට අවසර දෙන්න."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"බ්රව්සරයේ භූ අවසර වෙනස් කිරීම"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"බ්රවුසරයේ භූ ස්ථානීය අවසර වෙනස් කිරීමට යෙදුමට අවසර දෙන්න. අභිමත වෙබ් අඩවි වලට ස්ථානීය තොරතුරු යැවීමට අනිෂ්ට යෙදුම් මෙය භාවිතා කෙරේ."</string>
- <string name="save_password_message" msgid="2146409467245462965">"බ්රව්සරයට මෙම මුරපදය මතක තබා ගැනීමට ඔබට අවශ්යද?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"දැන් නොවේ"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"මතක තබා ගන්න"</string>
- <string name="save_password_never" msgid="6776808375903410659">"කවදාවත් නොවේ"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"මෙම පිටුව විවෘත කිරීමට ඔබට අවසර නැත."</string>
- <string name="text_copied" msgid="2531420577879738860">"පෙළ පසුරු පුවරුවට පිටපත් කරන ලදි."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> වෙතින් අලවන ලදි"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"ඔබගේ පසුරු පුවරුව වෙතින් <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> පිටපත් කරන ලදි"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ පෙළ ඇලවීය"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ රූපයක් ඇලවීය"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ අන්තර්ගතය ඇලවීය"</string>
<string name="more_item_label" msgid="7419249600215749115">"තව"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"මෙනුව+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"ඔබට මෙය සැකසීම් තුළ වෙනස්කර ගැනීම පසුව කළ හැක > යෙදුම්"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"සැමවිටම ඉඩ දෙන්න"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"කිසිදා අවසර නොදෙන්න"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM ඉවත් කරන ලදි"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"ඔබ වලංගු SIM එකකින් නැවත ආරම්භ කරන තෙක් ජංගම ජාලය නොතිබෙනු ඇත."</string>
<string name="sim_done_button" msgid="6464250841528410598">"හරි"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM එක් කෙරිණි"</string>
<string name="sim_added_message" msgid="6602906609509958680">"ජංගම ජාලයට ප්රවේශ වීමට ඔබගේ උපාංගය නැවත අරඹන්න."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"යළි අරඹන්න"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"ජංගම සේවාව සක්රිය කරන්න"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"දැන් SIM එක අබල කර ඇත. ඉදිරියට යාමට PUK කේතය යොදන්න. විස්තර සඳහා වාහකයා අමතන්න."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"අපේක්ෂිත PIN කේතය ඇතුළත් කරන්න"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"අපේක්ෂිත PIN කේතය ස්ථිර කරන්න"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM අගුළු අරිමින්…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"වැරදි PIN කේතයකි."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"අංක 4 සිට 8 අතර වන PIN එකක් ටයිප් කරන්න."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK කේතය අංක 8 ක් විය යුතුය."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ඉවත් කරන්න"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"නිර්දේශිතයි මට්ටමට වඩා ශබ්දය වැඩිද?\n\nදිගු කාලයක් සඳහා ඉහළ ශබ්දයක් ඇසීමෙන් ඇතැම් විට ඔබගේ ඇසීමට හානි විය හැක."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"අවවාදයයි,\nඔබ හෙඩ්ෆෝන් හරහා සතියක් තුළ සුරක්ෂිතව සවන් දිය හැකි ශබ්ද සංඥා ප්රමාණය ඉක්මවා ඇත.\n\nමෙම සීමාව ඉක්මවා යාම ඔබේ ශ්රවණයට ස්ථිරවම හානි කරනු ඇත."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"අවවාදයයි,\nඔබ හෙඩ්ෆෝන් හරහා සතියක් තුළ සුරක්ෂිතව සවන් දිය හැකි ශබ්ද සංඥා ප්රමාණය මෙන් 5 ගුණයක් ඉක්මවා ඇත.\n\nඔබේ ශ්රවණය ආරක්ෂා කිරීමට ශබ්දය අඩු කර ඇත."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"ඔබ මාධ්යයට සවන් දෙන මට්ටම දීර්ඝ කාලයක් තිස්සේ පවතින විට ශ්රවණාබාධ ඇති විය හැක.\n\nදිගු කාලයක් මෙම මට්ටමේ දී වාදනය කිරීම ඔබේ ශ්රවණයට හානි කළ හැක."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"අවවාදයයි,\nඔබ දැනට අනාරක්ෂිත මට්ටමින් වාදනය වන ඝෝෂාකාරී අන්තර්ගතයට සවන් දෙයි.\n\nමෙම මහා හඬින් සවන් දීම ඔබේ ශ්රවණයට ස්ථිරවම හානි කරනු ඇත."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ප්රවේශ්යතා කෙටිමඟ භාවිතා කරන්නද?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"කෙටිමග ක්රියාත්මක විට, හඬ පරිමා බොත්තම් දෙකම තත්පර 3ක් තිස්සේ එබීමෙන් ප්රවේශ්යතා විශේෂාංගය ආරම්භ වනු ඇත."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ප්රවේශ්යතා විශේෂාංග සඳහා කෙටි මග ක්රියාත්මක කරන්නද?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"කෙටිමඟ ක්රියාවිරහිත කරන්න"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"කෙටිමඟ භාවිතා කරන්න"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"වර්ණ අපවර්තනය"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"වර්ණ නිවැරදි කිරීම"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"තනි අත් ප්රකාරය"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"තවත් අඳුරු"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාත්මකයි."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"වෙනත් උපාංග වෙත සහායක පණිවිඩ බෙදා හැරීමට සහායක යෙදුමකට ඉඩ දෙයි."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"පසුබිමේ සිට පෙරබිම් සේවා ආරම්භ කරන්න"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"පසුබිමේ සිට පෙරබිම් සේවා ආරම්භ කිරීමට සහායක යෙදුමකට ඉඩ දෙයි."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"මයික්රෆෝනය තිබේ"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"මයික්රෆෝනය අවහිර කර ඇත"</string>
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 5772286..b4da379 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Zadané kódy PIN sa nezhodujú."</string>
<string name="invalidPin" msgid="7542498253319440408">"Zadajte kód PIN s dĺžkou 4 až 8 číslic."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Zadajte kód PUK, ktorý má 8 alebo viac čísel."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM karta je uzamknutá kódom PUK. Zadaním kódu PUK ju odomknite."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Ak chcete SIM kartu odblokovať, zadajte kód PUK2."</string>
<string name="enablePin" msgid="2543771964137091212">"Neúspešné, povoľte uzamknutie SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="few">Zostávajú vám <xliff:g id="NUMBER_1">%d</xliff:g> pokusy, potom sa vaša SIM karta uzamkne.</item>
@@ -390,6 +388,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Umožňuje aplikácii ukončiť procesy na pozadí ostatných aplikácií. Môže to zapríčiniť zastavenie ostatných aplikácií."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Táto aplikácia sa môže zobraziť nad ostatnými aplikáciami"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Táto aplikácia sa môže zobraziť nad ostatnými aplikáciami alebo ďalšími časťami obrazovky. Môže tak narušovať normálne používanie aplikácií a zmeniť spôsob zobrazenia ďalších aplikácií."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"skrytie prekrytí iných aplikácií"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Táto aplikácia môže žiadať, aby systém skryl prekrytia z aplikácií, aby sa nezobrazovali cez ňu."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"spustenie na pozadí"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Táto aplikácia sa môže spustiť na pozadí a rýchlejšie tak vybiť batériu."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"využívanie dát na pozadí"</string>
@@ -965,22 +965,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Skúsiť znova"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Všetky funkcie a dáta získate po odomknutí"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Prekročili ste maximálny povolený počet pokusov o odomknutie tvárou"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Žiadna SIM karta"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"V tablete nie je SIM karta."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"V zariadení Android TV nie je SIM karta."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"V telefóne nie je SIM karta."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Pridajte SIM kartu."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM karta chýba alebo sa nedá čítať. Pridajte SIM kartu."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Nepoužiteľná SIM karta."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Vaša SIM karta bola natrvalo deaktivovaná.\n Požiadajte svojho poskytovateľa bezdrôtových služieb o ďalšiu SIM kartu."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Predchádzajúca stopa"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Ďalšia stopa"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pozastaviť"</string>
@@ -990,13 +982,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Pretočiť dopredu"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Len tiesňové volania"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Sieť je zablokovaná"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM karta je uzamknutá kódom PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Prečítajte si Príručku používateľa alebo kontaktujte podporu zákazníka."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM karta je uzamknutá."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM karta sa odomyká…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"<xliff:g id="NUMBER_0">%1$d</xliff:g>-krát ste použili nesprávny bezpečnostný vzor. \n\nSkúste to znova o <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"<xliff:g id="NUMBER_0">%1$d</xliff:g>-krát ste zadali nesprávne heslo. \n\nSkúste to znova o <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"<xliff:g id="NUMBER_0">%1$d</xliff:g>-krát ste zadali nesprávny kód PIN. \n\nSkúste to znova o <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
@@ -1069,50 +1058,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Opustiť stránku"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Zostať na tejto strane"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nNaozaj chcete túto stránku opustiť?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Potvrdiť"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: Dvojitým klepnutím môžete zobrazenie priblížiť alebo oddialiť."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Aut.dop."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Nast. Aut. dop."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Automatické dopĺňanie pomocou služby <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provincia"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"PSČ"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Štát"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"PSČ"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Kraj"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ostrov"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Okres"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Oddelenie"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektúra"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Farnosť"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Oblasť"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirát"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"čítať webové záložky a históriu"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Umožňuje aplikácii čítať všetky webové adresy navštívené prehliadačom a všetky záložky prehliadača. Poznámka: Toto povolenie nemôžu vynucovať prehliadače tretej strany ani iné aplikácie umožňujúce prehliadanie webu."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"zapisovať webové záložky a históriu"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Umožňuje aplikácii upraviť históriu prehliadača alebo záložky uložené v tablete. Aplikácia s týmto povolením môže vymazať alebo upraviť údaje prehliadača. Poznámka: Toto povolenie nemôžu vynucovať prehliadače tretích strán ani žiadne ďalšie aplikácie umožňujúce prehliadanie webu."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Umožňuje aplikácii upraviť históriu prehliadača alebo záložky uložené v zariadení Android TV. Aplikácia s týmto povolením môže vymazať alebo upraviť údaje prehliadača. Poznámka: Toto povolenie nemôžu vynucovať prehliadače tretích strán ani žiadne ďalšie aplikácie umožňujúce prehliadanie webu."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Umožňuje aplikácii upraviť históriu prehliadača alebo záložky uložené v telefóne. Aplikácia s týmto povolením môže vymazať alebo upraviť údaje prehliadača. Poznámka: Toto povolenie nemôžu vynucovať prehliadače tretích strán ani žiadne ďalšie aplikácie umožňujúce prehliadanie webu."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"nastaviť budík"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Umožňuje aplikácii nastaviť budík v nainštalovanej aplikácii budík. Niektoré aplikácie budíka nemusia túto funkciu implementovať."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"pridať hlasovú schránku"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Umožní aplikácii pridávať správy do doručenej pošty hlasovej schránky."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"zmeniť povolenia prehliadača poskytovať informácie o zemepisnej polohe"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Umožňuje aplikácii zmeniť povolenia prehliadača na poskytovanie údajov o zemepisnej polohe. Škodlivé aplikácie to môžu použiť na odosielanie informácií o polohe ľubovoľným webovým stránkam."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Chcete, aby si prehliadač zapamätal toto heslo?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Teraz nie"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Zapamätať"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nikdy"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nemáte povolenie na otvorenie tejto stránky."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text bol skopírovaný do schránky."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila údaje z aplikácie <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila obsah zo schránky"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila text, ktorý ste skopírovali"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Aplik. <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila obrázok, ktorý ste skopírovali"</string>
- <string name="pasted_content" msgid="646276353060777131">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila obsah, ktorý ste skopírovali"</string>
<string name="more_item_label" msgid="7419249600215749115">"Viac"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1380,13 +1331,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Zmena v časti Nastavenia > Aplikácie"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Vždy povoliť"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nikdy nepovoliť"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM karta bola odstránená"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilná sieť bude nedostupná, kým nepoužijete platnú SIM kartu."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Hotovo"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Bola pridaná SIM karta"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Ak chcete získať prístup k mobilnej sieti, reštartujte svoje zariadenie."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Reštartovať"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivovať mobilnú službu"</string>
@@ -1698,8 +1646,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM karta je teraz zakázaná. Ak chcete pokračovať, zadajte kód PUK. Podrobné informácie získate od operátora."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Zadajte požadovaný kód PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Potvrďte požadovaný kód PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM karta sa odomyká…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Nesprávny kód PIN."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Zadajte kód PIN s dĺžkou 4 až 8 číslic."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Kód PUK musí obsahovať 8 číslic."</string>
@@ -1728,6 +1675,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Odstrániť"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zvýšiť hlasitosť nad odporúčanú úroveň?\n\nDlhodobé počúvanie pri vysokej hlasitosti môže poškodiť váš sluch."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Upozornenie:\nPrekročili ste počet hlasných zvukových signálov, ktoré je možné počas týždňa bezpečne počúvať v slúchadlách.\n\nPrekročením tohto limitu si natrvalo poškodíte sluch."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Upozornenie:\nPäťnásobne ste prekročili počet hlasných zvukových signálov, ktoré je možné počas týždňa bezpečne počúvať v slúchadlách.\n\nHlasitosť bola znížená, aby sa chránil váš sluch."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Dlhodobé vystavenie hluku na úrovni, na ktorej počúvate médiá, môže viesť k poškodeniu sluchu.\n\nAk ich budete naďalej dlhodobo prehrávať na tejto úrovni, môžete si poškodiť sluch."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Upozornenie:\nMomentálne počúvate hlasný obsah prehrávaný na nebezpečnej úrovni.\n\nAk budete naďalej počúvať pri tejto hlasitosti, natrvalo si poškodíte sluch."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Použiť skratku dostupnosti?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Keď je skratka zapnutá, stlačením obidvoch tlačidiel hlasitosti na tri sekundy spustíte funkciu dostupnosti."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Chcete zapnúť skratku pre funkcie dostupnosti?"</string>
@@ -1756,8 +1707,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Vypnúť skratku"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použiť skratku"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzia farieb"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Úprava farieb"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jednej ruky"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mimoriadne stmavenie"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string>
@@ -2354,8 +2304,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Umožňuje sprievodnej aplikácii doručovať sprievodné správy do iných zariadení."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Spúšťať služby na popredí z pozadia"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Umožňuje sprievodnej aplikácii spúšťať služby na popredí z pozadia."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofón je k dispozícii"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofón je blokovaný"</string>
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 9aab2b6..a076d40 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Vneseni številki PIN se ne ujemata."</string>
<string name="invalidPin" msgid="7542498253319440408">"Vnesite PIN, ki vsebuje od štiri do osem številk."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Vnesite 8- ali več mestni PUK."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Kartica SIM je zaklenjena s kodo PUK. Če jo želite odkleniti, vnesite kodo PUK."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Vnesite kodo PUK2 za odblokiranje kartice SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Ni uspelo. Omogočite zaklepanje kartice SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Na voljo imate še <xliff:g id="NUMBER_1">%d</xliff:g> poskus. Potem se bo kartica SIM zaklenila.</item>
@@ -390,6 +388,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Aplikaciji omogoča, da konča procese v ozadju drugih aplikacij. S tem lahko druge aplikacije nehajo delovati."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Prikaz aplikacije s prekrivanjem drugih aplikacij"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Ta aplikacija lahko prekrije druge aplikacije ali druge dele zaslona. To lahko vpliva na normalno delovanje aplikacije in na način prikaza drugih aplikacij."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"Skrij prekrivna okna drugih aplikacij"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ta aplikacija lahko od sistema zahteva, naj prekrivna okna drugih aplikacij skrije, da ne bodo prikazana čeznjo."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"izvajanje v ozadju"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Ta aplikacija se lahko izvaja tudi v ozadju, kar lahko privede do hitrejšega praznjenja baterije."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"prenos podatkov v ozadju"</string>
@@ -965,22 +965,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Poskusite znova"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Odklenite za dostop do vseh funkcij in podatkov"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Presegli ste dovoljeno število poskusov odklepanja z obrazom"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Ni kartice SIM."</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"V tabličnem računalniku ni kartice SIM."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"V napravi Android TV ni kartice SIM."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"V telefonu ni kartice SIM."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Dodajte kartico SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Ni kartice SIM ali je ni mogoče prebrati. Dodajte kartico SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Kartica SIM je neuporabna."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Vaša kartica SIM je bila trajno deaktivirana.\n Za drugo kartico SIM se obrnite na ponudnika brezžičnih storitev."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Prejšnja skladba"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Naslednja skladba"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Zaustavi"</string>
@@ -990,13 +982,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Previj naprej"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Le klici v sili"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Omrežje je zaklenjeno"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"Kartica SIM je zaklenjena s kodo PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Preberite uporabniški priročnik ali se obrnite na oddelek za skrb za stranke."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"Kartica SIM je zaklenjena."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Odklepanje kartice SIM …"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Vzorec za odklepanje ste nepravilno narisali <xliff:g id="NUMBER_0">%1$d</xliff:g>-krat. \n\nPoskusite znova čez <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Geslo ste <xliff:g id="NUMBER_0">%1$d</xliff:g>-krat vnesli napačno. \n\nZnova poskusite čez <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"PIN ste <xliff:g id="NUMBER_0">%1$d</xliff:g>-krat vnesli napačno. \n\nZnova poskusite čez <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
@@ -1069,50 +1058,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Zapusti to stran"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Ostani na tej strani"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nAli res želite zapustiti to stran?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Potrdi"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Nasvet: Tapnite dvakrat, če želite povečati ali pomanjšati."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Samoizp."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Nastavi samoizp."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Samodejno izpolnjevanje s storitvijo <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provinca"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Poštna številka"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Zvezna država"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Poštna številka"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Okrožje"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Otok"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Okraj"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departma"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Župnija"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Območje"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"branje spletnih zaznamkov in zgodovine"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Aplikaciji omogoča, da prebere zgodovino vseh URL-jev, ki jih je obiskal brskalnik, in vse zaznamke brskalnika. Opomba: Tega dovoljenja ne morejo uveljavljati drugi brskalniki ali aplikacije, s katerimi je mogoče brskati po spletu."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"zapisovanje spletnih zaznamkov in zgodovine"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Aplikaciji omogoča spreminjanje zgodovine ali zaznamkov brskalnika v tabličnem računalniku. S tem lahko aplikacija izbriše ali spremeni podatke v brskalniku. Opomba: Tega dovoljenja ne morejo uveljavljati drugi brskalniki ali aplikacije, s katerimi je mogoče brskati po spletu."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Aplikaciji dovoljuje spreminjanje zgodovine ali zaznamkov brskalnika v napravi Android TV. S tem lahko aplikacija briše ali spreminja podatke brskalnika. Opomba: tega dovoljenja morda ne morejo uveljavljati drugi brskalniki ali aplikacije, s katerimi je mogoče brskati po spletu."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Aplikaciji omogoča spreminjanje zgodovine ali zaznamkov brskalnika v telefonu. S tem lahko aplikacija izbriše ali spremeni podatke v brskalniku. Opomba: Tega dovoljenja ne morejo uveljavljati drugi brskalniki ali aplikacije, s katerimi je mogoče brskati po spletu."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"nastavitev alarma"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Aplikaciji omogoča nastavitev alarma v nameščeni aplikaciji budilke. Nekatere aplikacije budilke morda nimajo te funkcije."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"dodajanje odzivnika"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Aplikaciji omogoča dodajanje sporočil prejetim sporočilom odzivnika."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Spreminjanje dovoljenj za geolokacijo brskalnika"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Aplikaciji omogoča spreminjanje geolokacijskih dovoljenj v brskalniku. Zlonamerne aplikacije lahko to izkoristijo za pošiljanje podatkov o lokaciji poljubnim spletnim mestom."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Ali želite, da si brskalnik zapomni to geslo?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Ne zdaj"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Zapomni si"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Nikoli"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nimate dovoljenja za odpiranje te strani."</string>
- <string name="text_copied" msgid="2531420577879738860">"Besedilo, kopirano v odložišče."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila iz aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila iz odložišča."</string>
- <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila besedilo iz odložišča."</string>
- <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila sliko iz odložišča."</string>
- <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila vsebino iz odložišča."</string>
<string name="more_item_label" msgid="7419249600215749115">"Več"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Meni+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1380,13 +1331,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"To lahko pozneje spremenite v Nastavitve > Aplikacije"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Vedno dovoli"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Nikoli ne dovoli"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Kartica SIM je bila odstranjena"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilno omrežje ne bo na voljo, dokler naprave vnovič ne zaženete z veljavno kartico SIM."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Dokončano"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Kartica SIM je bila dodana"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Za dostop do mobilnega omrežja znova zaženite napravo."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Vnovičen zagon"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivirajte mobilno storitev"</string>
@@ -1698,8 +1646,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Kartica SIM je onemogočena. Če želite nadaljevati, vnesite kodo PUK. Za dodatne informacije se obrnite na operaterja."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Vnesite želeno kodo PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Potrdite želeno kodo PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Odklepanje kartice SIM …"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Napačna koda PIN."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Vnesite PIN, ki vsebuje od štiri do osem številk."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Koda PUK mora biti 8-mestno število."</string>
@@ -1728,6 +1675,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Odstrani"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ali želite povečati glasnost nad priporočeno raven?\n\nDolgotrajno poslušanje pri veliki glasnosti lahko poškoduje sluh."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Opozorilo!\nPrekoračili ste količino glasnih zvočnih signalov, ki je še varna pri poslušanju prek slušalk v enem tednu.\n\nPrekoračenje te omejitve vam bo povzročilo trajne poškodbe sluha."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Opozorilo!\nZa petkrat ste prekoračili količino glasnih zvočnih signalov, ki je še varna pri poslušanju prek slušalk v enem tednu.\n\nZaradi zaščite sluha je bila glasnost zmanjšana."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Raven glasnosti, pri kateri poslušate predstavnost, lahko ob dolgotrajnejši izpostavljenosti povzroči poškodbe sluha.\n\nNadaljnje dolgotrajno poslušanje pri takšni glasnosti vam lahko poškoduje sluh."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Opozorilo!\nTrenutno poslušate glasno vsebino pri ravni glasnosti, ki ni varna.\n\nNadaljnje poslušanje pri takšni glasnosti vam bo povzročilo trajne poškodbe sluha."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite uporabljati bližnjico funkcij za ljudi s posebnimi potrebami?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Ko je bližnjica vklopljena, pritisnite gumba za glasnost in ju pridržite tri sekunde, če želite zagnati funkcijo za ljudi s posebnimi potrebami."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Želite vklopiti bližnjico za funkcije za ljudi s posebnimi potrebami?"</string>
@@ -1756,8 +1707,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Izklopi bližnjico"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Uporabi bližnjico"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija barv"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Popravljanje barv"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enoročni način"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Zelo zatemnjen zaslon"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vklopljena."</string>
@@ -2354,8 +2304,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Spremljevalni aplikaciji dovoljuje dostavljanje sporočil v druge naprave."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Zaganjanje storitev v ospredju iz ozadja"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Spremljevalni aplikaciji dovoljuje, da storitve v ospredju zažene iz ozadja."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon je na voljo"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon je blokiran"</string>
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index c677576..4b0fda9 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN-et që shkrove nuk përputhen."</string>
<string name="invalidPin" msgid="7542498253319440408">"Shkruaj një PIN nga 4 deri në 8 numra."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Shkruaj një PUK me 8 numra ose më të gjatë."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Karta jote SIM është e kyçur me PUK. Shkruaj kodin PUK për ta shkyçur."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Shkruaj kodin PUK2 për të zhbllokuar kartën SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Pa sukses! Aktivizo kyçjen e SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Të kanë mbetur edhe <xliff:g id="NUMBER_1">%d</xliff:g> tentativa para se karta SIM të kyçet.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Lejon aplikacionin t\'u japë fund proceseve në sfond të aplikacioneve të tjera. Kjo mund të shkaktojë mosfunksionimin e aplikacioneve të tjera."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Ky aplikacion mund të shfaqet mbi aplikacionet e tjera"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Ky aplikacion mund të shfaqet mbi aplikacionet e tjera ose në pjesë të tjera të ekranit. Kjo mund të shkaktojë ndërhyrje në përdorimin normal të aplikacionit dhe në mënyrën se si shfaqen aplikacionet e tjera."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"të fshehë mbivendosjet e aplikacioneve të tjera"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ky aplikacion mund të kërkojë që sistemi të fshehë mbivendosjet që lindin nga aplikacionet që ato të mos shfaqen mbi të."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ekzekuto në sfond"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Ky aplikacion mund të ekzekutohet në sfond. Kjo mund ta shkarkojë më shpejt baterinë."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"përdor të dhënat në sfond"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Provo sërish"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Shkyçe për të gjitha funksionet dhe të dhënat"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Përpjektet maksimale të \"Shkyçjes me fytyrë\" u tejkaluan"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Nuk ka kartë SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Nuk ka kartë SIM në tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Nuk ka kartë SIM në pajisjen tënde Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Nuk ka kartë SIM në telefon."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Shto një kartë SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Karta SIM mungon ose është e palexueshme. Shto një kartë SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Kartë SIM e papërdorshme."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Karta jote SIM është çaktivizuar përgjithmonë.\n Kontakto me ofruesin e shërbimit me valë për një kartë tjetër SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Kënga e mëparshme"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Kënga tjetër"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pauzë"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Përparo me shpejtësi"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Vetëm telefonata urgjente"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Rrjeti është i kyçur"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"Karta SIM është e kyçur me PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Shiko \"Manualin e përdorimit\" ose kontakto \"Kujdesin ndaj klientit\"."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"Karta SIM është e kyçur."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Karta SIM po shkyçet…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Ke tentuar <xliff:g id="NUMBER_0">%1$d</xliff:g> herë pa sukses për të vizatuar motivin tënd.\n\nProvo sërish për <xliff:g id="NUMBER_1">%2$d</xliff:g> sekonda."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"E ke shkruar <xliff:g id="NUMBER_0">%1$d</xliff:g> herë gabim fjalëkalimin. \n\nProvo sërish për <xliff:g id="NUMBER_1">%2$d</xliff:g> sekonda."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"E ke shkruar <xliff:g id="NUMBER_0">%1$d</xliff:g> herë gabimisht PIN-in tënd.\n\nProvo sërish për <xliff:g id="NUMBER_1">%2$d</xliff:g> sekonda."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Largohu nga kjo faqe"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Qëndro në këtë faqe"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nJe i sigurt që do të largohesh nga kjo faqe?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Konfirmo"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Këshillë! Trokit dy herë për të zmadhuar dhe zvogëluar."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Plotësim automatik"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Konfiguro plotësuesin automatik"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Plotëso automatikisht me <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Krahina"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Kodi postar"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Shteti"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Kodi postar"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Qarku"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ishulli"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Rrethi"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departamenti"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Famullia"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Zona"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirati"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"lexo faqeshënuesit dhe historikun tënd në ueb"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Lejon aplikacionin të lexojë historikun e të gjitha URL-ve që ka vizituar shfletuesi dhe të gjitha faqet e ruajtura në shfletues. Shënim. Kjo leje nuk mund të zbatohet nga shfletues të palëve të treta ose aplikacione të tjera me aftësi për shfletim faqesh."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"shkruaj faqeshënuesit dhe historikun në ueb"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Lejon aplikacionin të modifikojë historikun e shfletuesit ose faqeve të ruajtur në tabletin tënd. Kjo mund ta lejojë aplikacionin të fshijë ose modifikojë të dhënat e shfletuesit. Shënim. Kjo leje mund të zbatohet nga shfletues të palëve të treta ose aplikacione me aftësi shfletimi faqesh."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Lejon aplikacionin të modifikojë historikun e shfletuesit ose faqeve të ruajtura në pajisjen tënde Android TV. Kjo mund ta lejojë aplikacionin të spastrojë ose modifikojë të dhënat e shfletuesit. Shënim. Ky autorizim mund të zbatohet nga shfletues të palëve të treta ose aplikacione me aftësi për të shfletuar uebin."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Lejon aplikacionin të modifikojë historikun e shfletuesit ose faqeve të ruajtur në telefonin tënd. Kjo mund ta lejojë aplikacionin të fshijë ose modifikojë të dhënat e shfletuesit. Shënim. Kjo leje mund të zbatohet nga shfletues të palëve të treta ose aplikacione me aftësi shfletimi faqesh."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"vendos alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Lejon aplikacionin të vendosë një alarm në një aplikacion ore me alarm, i instaluar në pajisje. Disa aplikacione ore me alarm mund të mos e ekzekutojnë këtë funksion."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"shto postë zanore"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Lejon aplikacionin të shtojë mesazhe në kutinë e postës zanore."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"modifiko lejet e shfletuesit për vendndodhjen gjeografike"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Lejon aplikacionin të modifikojë lejet e shfletuesit për vendndodhjen gjeografike. Aplikacionet keqdashëse mund ta përdorin këtë për të lejuar dërgimin e informacionit të vendndodhjes në faqe arbitrare uebi."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Dëshiron që shfletuesi ta kujtojë këtë fjalëkalim?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Jo tani!"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Kujto"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Asnjëherë"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Nuk ke leje për ta hapur këtë faqe."</string>
- <string name="text_copied" msgid="2531420577879738860">"Teksti u kopjua në kujtesën e fragmenteve."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> u ngjit nga <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti përmbajtje nga kujtesa jote e fragmenteve"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një tekst që kopjove"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një imazh që kopjove"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një përmbajtje që kopjove"</string>
<string name="more_item_label" msgid="7419249600215749115">"Më shumë"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menyja+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Këtë mund ta ndryshosh më vonë te \"Cilësimet\" > \"Aplikacionet\""</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Lejo gjithmonë"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Mos lejo asnjëherë"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Karta SIM u hoq"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Rrjeti celular nuk do të ofrohet deri sa ta rinisësh me një kartë të vlefshme SIM."</string>
<string name="sim_done_button" msgid="6464250841528410598">"U krye"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Karta SIM u shtua"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Rinise pajisjen për të pasur qasje në rrjetin celular."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Rifillo"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivizo shërbimin celular"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Karta SIM tani është e çaktivizuar. Fut kodin PUK për të vazhduar. Kontakto operatorin për detaje."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Fut kodin e dëshiruar të PIN-it"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Konfirmo kodin e dëshiruar PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Karta SIM po shkyçet…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Kodi PIN është i pasaktë."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Shkruaj një PIN me 4 deri në 8 numra."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Kodi PUK duhet të jetë me 8 numra."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" - "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Hiq"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Të ngrihet volumi mbi nivelin e rekomanduar?\n\nDëgjimi me volum të lartë për periudha të gjata mund të dëmtojë dëgjimin."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Paralajmërim:\nE ke kaluar sasinë e sinjaleve të larta zanore që mund të dëgjojë në mënyrë të sigurt një person gjatë një jave nëpërmjet kufjeve.\n\nNëse e kalon këtë kufi, kjo gjë do ta dëmtojë përgjithmonë dëgjimin tënd."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Paralajmërim:\nE ke kaluar 5 herë sasinë e sinjaleve të larta zanore që mund të dëgjojë në mënyrë të sigurt një person gjatë një jave nëpërmjet kufjeve.\n\nVolumi është ulur për të mbrojtur dëgjimin tënd."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Niveli me të cilin po dëgjon median mund të shkaktojë dëmtim të dëgjimit nëse vazhdon për periudha të gjata kohore.\n\nNëse vazhdon të luash me këtë nivel për periudha të gjata kohore, kjo gjë mund të dëmtojë dëgjimin tënd."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Paralajmërim:\nPo dëgjon aktualisht përmbajtje me zë të lartë që po luhet në një nivel jo të sigurt.\n\nNëse vazhdon të dëgjosh me një nivel kaq të lartë, kjo gjë do të dëmtojë përgjithmonë dëgjimin tënd."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Të përdoret shkurtorja e qasshmërisë?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kur shkurtorja është e aktivizuar, shtypja e të dy butonave për 3 sekonda do të nisë një funksion qasshmërie."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Të aktivizohet shkurtorja për veçoritë e qasshmërisë?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Çaktivizo shkurtoren"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Përdor shkurtoren"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Anasjellja e ngjyrës"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Korrigjimi i ngjyrës"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modaliteti i përdorimit me një dorë"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Shumë më i zbehtë"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tastet e volumit të mbajtura shtypur. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> i aktivizuar."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Lejon një aplikacion shoqërues të dërgojë mesazhe shoqëruese te pajisjet e tjera."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Fillo shërbimet në plan të parë nga sfondi"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Lejon një aplikacion shoqërues të fillojë shërbimet në plan të parë nga sfondi."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofoni ofrohet"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofoni është i bllokuar"</string>
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 562ffec..7c5a570 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN кодови које сте унели се не подударају."</string>
<string name="invalidPin" msgid="7542498253319440408">"Откуцајте PIN који има од 4 до 8 бројева."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Унесите PUK који се састоји од 8 цифара или више."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM је закључан PUK-ом. Унесите PUK да бисте га откључали."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Унесите PUK2 да бисте одблокирали SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Није успело. Омогућите закључавање SIM/RUIM картице."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Имате још <xliff:g id="NUMBER_1">%d</xliff:g> покушај пре него што се SIM картица закључа.</item>
@@ -389,6 +387,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Дозвољава апликацији да заустави позадинске процесе других апликација. Ово може да заустави друге апликације."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Ова апликација може да се приказује преко других апликација"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Ова апликација може да се приказује преко других апликација или других делова делова екрана. То може да омета стандардно коришћење апликација и начин на који се друге апликације приказују."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"сакриј преклопне елементе других апликација"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ова апликација може да захтева да систем сакрива преклопне елементе из апликација који се приказују преко ње."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"покретање у позадини"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Ова апликација може да се покреће у позадини. То може брже да истроши батерију."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"коришћење података у позадини"</string>
@@ -964,22 +964,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Пробајте поново"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Откључај за све функције и податке"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Премашен је највећи дозвољени број покушаја Откључавања лицем"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Нема SIM-а"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Нема SIM-а у таблету."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Нема SIM-а у Android TV уређају."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Нема SIM-а у телефону."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Додајте SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM недостаје или не може да се прочита. Додајте SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Неупотребљив SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM је трајно деактивиран.\n Обратите се добављачу услуге бежичне телефоније да бисте добили други SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Претходна песма"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Следећа песма"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Пауза"</string>
@@ -989,13 +981,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Премотај унапред"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Само хитни позиви"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Мрежа је закључана"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM је закључан PUK-ом."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Погледајте Кориснички водич или контактирајте Корисничку подршку."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM је закључан."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Откључава се SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"<xliff:g id="NUMBER_0">%1$d</xliff:g> пута сте неправилно нацртали шаблон за откључавање. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"<xliff:g id="NUMBER_0">%1$d</xliff:g> пута сте погрешно унели лозинку. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"<xliff:g id="NUMBER_0">%1$d</xliff:g> пута сте погрешно унели PIN. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунде/и."</string>
@@ -1068,50 +1057,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Затвори ову страницу"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Остани на овој страници"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nДа ли стварно желите да напустите ову страницу?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Потврда"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Савет: Додирните двапут да бисте увећали и умањили приказ."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Аутом. поп."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Подеш. аут. поп."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Аутоматски попуњава <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Покрајина"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Поштански број"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Држава"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Поштански број"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Округ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Острво"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Дистрикт"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Одељење"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Префектура"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Парохија"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Област"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Емират"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"читање веб обележивача и историје"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Дозвољава апликацији да чита историју свих URL адреса које су посећене помоћу Прегледача, као и све обележиваче у Прегледачу. Напомена: Ова дозвола се можда на примењује на прегледаче треће стране и друге апликације са могућношћу веб прегледања."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"писање веб обележивача и историје"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Дозвољава апликацији да мења историју Прегледача или обележиваче ускладиштене на таблету. Ово може да омогући апликацији да брише или мења податке Прегледача. Напомена: Ова дозвола се можда на примењује на прегледаче треће стране и друге апликације са могућношћу веб прегледања."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Дозвољава апликацији да мења историју прегледача или обележиваче који се чувају на Android TV уређају. Ово може да омогући апликацији да брише или мења податке прегледача. Напомена: ова дозвола се можда не примењује на прегледаче треће стране ни друге апликације са могућностима веб-прегледања."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Дозвољава апликацији да мења историју Прегледача или обележиваче ускладиштене на телефону. Ово може да омогући апликацији да брише или мења податке Прегледача. Напомена: Ова дозвола се можда на примењује на прегледаче треће стране и друге апликације са могућношћу веб прегледања."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"подешавање аларма"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Дозвољава апликацији да подеси аларм у инсталираној апликацији будилника. Неке апликације будилника можда не примењују ову функцију."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"додавање говорне поште"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Дозвољава апликацији да додаје поруке у пријемно сандуче говорне поште."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"измена дозвола за географске локације Прегледача"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дозвољава апликацији да измени дозволе Прегледача за утврђивање географске локације. Злонамерне апликације то могу да злоупотребе и искористе за слање информација о локацији насумичним веб-сајтовима."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Желите ли да прегледач запамти ову лозинку?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Не сада"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Запамти"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Никад"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Немате дозволу да отворите ову страницу."</string>
- <string name="text_copied" msgid="2531420577879738860">"Текст је копиран у привремену меморију."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила податке из апликације <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је прелепио/ла из привремене меморије"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила текст који сте копирали"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила слику коју сте копирали"</string>
- <string name="pasted_content" msgid="646276353060777131">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила садржај који сте копирали"</string>
<string name="more_item_label" msgid="7419249600215749115">"Још"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Мени+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1379,13 +1330,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Ово можете да промените касније у Подешавања > Апликације"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Увек дозволи"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Никада не дозволи"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM је уклоњен"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Мобилна мрежа неће бити доступна док не рестартујете уз важећи SIM."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Готово"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM је додат"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Рестартујте уређај да бисте могли да приступите мобилној мрежи."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Рестартуј"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Активирајте мобилну услугу"</string>
@@ -1697,8 +1645,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM картица је сада онемогућена. Унесите PUK кôд да бисте наставили. За детаље контактирајте оператера."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Унесите жељени PIN кôд"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Потврдите жељени PIN кôд"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Откључава се SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN кôд је нетачан."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Унесите PIN који има од 4 до 8 бројева."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK кôд треба да има 8 бројева."</string>
@@ -1727,6 +1674,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Уклони"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Желите да појачате звук изнад препорученог нивоа?\n\nСлушање гласне музике дуже време може да вам оштети слух."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Упозорење,\nпремашили сте број гласних звучних сигнала које је безбедно слушати преко слушалица током недељу дана.\n\nПрекорачењем тог ограничења трајно ћете оштетити слух."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Упозорење,\nПет пута сте премашили број гласних звучних сигнала које је безбедно слушати преко слушалица током недељу дана.\n\nЈачина звука треба да се смањи да бисте заштитили слух."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Ниво на ком слушате медијски садржај може да доведе до оштећења слуха ако то траје током дужег периода.\n\nАко наставите да слушате тако гласно током дужег периода, може да дође до оштећења слуха."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Упозорење,\nтренутно слушате гласан садржај на небезбедном нивоу.\n\nАко наставите да слушате тако гласно, трајно ћете оштетити слух."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Желите ли да користите пречицу за приступачност?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Када је пречица укључена, притисните оба дугмета за јачину звука да бисте покренули функцију приступачности."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Желите да укључите пречицу за функције приступачности?"</string>
@@ -1755,8 +1706,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Искључи пречицу"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи пречицу"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија боја"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Корекција боја"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим једном руком"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додатно затамњено"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је укључена."</string>
@@ -2353,8 +2303,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Дозвољава пратећој апликацији да шаље пратеће поруке на друге уређаје."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Покретање услуга у првом плану из позадине"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Дозвољава пратећој апликацији да покрене услуге у првом плану из позадине."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Микрофон је доступан"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Микрофон је блокиран"</string>
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index f77f8e9..4a21b76 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN-koderna som du angav matchar inte."</string>
<string name="invalidPin" msgid="7542498253319440408">"Ange en PIN-kod som är 4 till 8 siffror."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Ange en PUK-kod med minst 8 siffror."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM-kortet har låsts med PUK-kod. Ange PUK-koden för att låsa upp det."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Ange PUK2-koden för att återaktivera SIM-kortet."</string>
<string name="enablePin" msgid="2543771964137091212">"Försöket misslyckades. Aktivera SIM-/RUIM-lås."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Du har <xliff:g id="NUMBER_1">%d</xliff:g> försök kvar innan SIM-kortet låses.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Tillåter att appen avslutar andra appars bakgrundsprocesser. Detta kan göra så att andra appar avslutas."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Appen kan visas ovanpå andra appar"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Appen kan visas ovanpå andra appar eller andra delar av skärmen. Detta kan störa den vanliga användningen av appar och påverka hur andra appar visas."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"dölj överlagringar från andra appar"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Appen kan begära att systemet döljer överlagringar från appar som visas över den."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"kör i bakgrunden"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Appen kan köras i bakgrunden. Det kan minska batteritiden."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"använd data i bakgrunden"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Försök igen"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Lås upp för alla funktioner och all data"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Du har försökt låsa upp med ansiktslås för många gånger"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Inget SIM-kort"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Inget SIM-kort i surfplattan."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Inget SIM-kort i Android TV-enheten."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Inget SIM-kort i telefonen."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Lägg till ett SIM-kort."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-kort saknas eller går inte att läsa. Lägg till ett SIM-kort."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM-kortet går inte att använda."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Ditt SIM-kort har inaktiverats permanent.\n Kontakta din operatör och be om ett nytt SIM-kort."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Föregående spår"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Nästa spår"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Pausa"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Snabbspola framåt"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Endast nödsamtal"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Nätverk låst"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-kortet har låsts med PUK-kod."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Se användarhandboken eller kontakta kundtjänst."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-kortet är låst."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM-kortet låses upp …"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Du har ritat ditt grafiska lösenord fel <xliff:g id="NUMBER_0">%1$d</xliff:g> gånger. \n\nFörsök igen om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Du har angett fel lösenord <xliff:g id="NUMBER_0">%1$d</xliff:g> gånger. \n\nFörsök igen om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Du har angett fel lösenord <xliff:g id="NUMBER_0">%1$d</xliff:g> gånger. \n\nFörsök igen om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Lämna den här sidan"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Stanna på den här sidan"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVill du verkligen navigera bort från den här sidan?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Bekräfta"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tips! Dubbelknacka om du vill zooma in eller ut."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofyll"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Ange Autofyll"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Autofyll med <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provins"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postnummer"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Delstat"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Postnummer"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Kommun"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ö"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrikt"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Avdelning"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektur"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Församling"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Område"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirat"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"läsa dina bokmärken och din historik på webben"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Tillåter att appen läser historiken för besökta sidor och alla bokmärken i webbläsaren. Observera att den här behörigheten kanske inte är tillämplig för webbläsare från tredje part eller andra appar med surffunktion."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"skriva bokmärken och historik på webben"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Tillåter att appen ändrar historiken för besökta sidor i webbläsaren eller bokmärken som sparats på surfplattan. Det kan innebära att appen kan ta bort eller ändra webbläsarinformation. Observera att den här behörigheten kanske inte är tillämplig för webbläsare från tredje part eller andra appar med surffunktion."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Tillåter att appen ändrar historiken för besökta sidor i webbläsaren eller bokmärken som sparats på Android TV-enheten. Det kan innebära att appen kan ta bort eller ändra webbläsarinformation. Observera att den här behörigheten kanske inte är tillämplig för webbläsare från tredje part eller andra appar med surffunktion."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Tillåter att appen ändrar historiken för besökta sidor i webbläsaren eller bokmärken som sparats på telefonen. Det kan innebära att appen kan ta bort eller ändra webbläsarinformation. Observera att den här behörigheten kanske inte är tillämplig för webbläsare från tredje part eller andra appar med surffunktion."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ställa in ett alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Tillåter att appen ställer in ett alarm i en befintlig alarmapp. Vissa alarmappar har inte den här funktionen."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"lägg till röstbrevlåda"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Gör att appen lägger till meddelanden i röstbrevlådans inkorg."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Ändra geografisk plats för webbläsaren"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Tillåter att appen ändrar webbläsarens behörigheter för geografisk plats. Skadliga appar kan använda detta för att tillåta att platsinformation skickas till godtyckliga webbplatser."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Vill du att webbläsaren ska komma ihåg lösenordet?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Inte nu"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Kom ihåg"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Aldrig"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Du har inte behörighet att öppna den här sidan."</string>
- <string name="text_copied" msgid="2531420577879738860">"Text har kopierats till urklipp."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in från <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in från urklipp"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in text som du kopierade"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in en bild som du kopierade"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in innehåll som du kopierade"</string>
<string name="more_item_label" msgid="7419249600215749115">"Mer"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta + "</string>
@@ -1219,7 +1170,7 @@
<string name="not_selected" msgid="410652016565864475">"inte valt"</string>
<string name="rating_label" msgid="1837085249662154601">"{rating,plural, =1{En stjärna av {max}}other{# stjärnor av {max}}}"</string>
<string name="in_progress" msgid="2149208189184319441">"pågår"</string>
- <string name="whichApplication" msgid="5432266899591255759">"Slutför åtgärd genom att använda"</string>
+ <string name="whichApplication" msgid="5432266899591255759">"Slutför åtgärd med"</string>
<string name="whichApplicationNamed" msgid="6969946041713975681">"Slutför åtgärden med %1$s"</string>
<string name="whichApplicationLabel" msgid="7852182961472531728">"Slutför åtgärd"</string>
<string name="whichViewApplication" msgid="5733194231473132945">"Öppna med"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Du kan ändra detta senare i Inställningar > Appar"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Tillåt alltid"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Tillåt aldrig"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-kort har tagits bort"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mobilnätverket är inte tillgängligt förrän du startar om med ett giltigt SIM-kort."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Klar"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-kort har lagts till"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Du måste starta om enheten för att ansluta till det mobila nätverket."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Starta om"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Aktivera mobiltjänst"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM-kortet är nu inaktiverat. Ange PUK-koden för att fortsätta. Kontakta operatören om du vill ha mer information."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Ange önskad PIN-kod"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Bekräfta önskad PIN-kod"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM-kortet låses upp …"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Fel PIN-kod."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Ange en PIN-kod med 4 till 8 siffror."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-koden ska vara åtta siffror."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ta bort"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vill du höja volymen över den rekommenderade nivån?\n\nAtt lyssna med stark volym långa stunder åt gången kan skada hörseln."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Varning!\nDu har överskridit den säkra mängden höga ljudsignaler man kan lyssna på i hörlurar under en vecka.\n\nDin hörsel skadas permanent om du överskrider gränsen."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Varning!\nDu har lyssnat på över fem gånger den säkra mängden höga ljudsignaler man kan lyssna på i hörlurar under en vecka.\n\nVolymen har sänkts för att skydda din hörsel."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Du lyssnar på media med en volym som kan leda till hörselskador om den bibehålls under lång tid.\n\nDin hörsel kan skadas om du fortsätter att spela upp på den här nivån under lång tid."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Varning!\nDu lyssnar just nu på innehåll med farligt hög volym.\n\nDin hörsel skadas permanent om du fortsätter att lyssna med den här volymen."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vill du använda Aktivera tillgänglighet snabbt?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"När kortkommandot har aktiverats startar du en tillgänglighetsfunktion genom att trycka ned båda volymknapparna i tre sekunder."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Vill du aktivera genvägen till tillgänglighetsfunktioner?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Inaktivera kortkommandot"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Använd kortkommandot"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverterade färger"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Färgkorrigering"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhandsläge"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradimmat"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har aktiverats."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Tillåter en tillhörande app att leverera meddelanden till andra enheter."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Starta förgrundstjänster i bakgrunden"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Tillåter att en tillhörande app startar förgrundstjänster i bakgrunden."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofonen är tillgänglig"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofonen är blockerad"</string>
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 2b90303..d72eb30 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN ulizoingiza haziambatani."</string>
<string name="invalidPin" msgid="7542498253319440408">"Chapisha PIN ambayo ina nambari 4 hadi 8."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Andika PUK ambayo ina urefu wa nambari 8 au zaidi."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM yako imefungwa kwa PUK. Andika msimbo wa PUK ili kuifungua."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Andika PUK2 ili uondoe kizuizi kwenye SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Imeshindwa, washa ufungaji wa SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Umebakisha majaribio <xliff:g id="NUMBER_1">%d</xliff:g> kabla SIM haijafungwa.</item>
@@ -388,18 +386,16 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Huruhusu programu kukamilisha michakato ya chinichini ya programu nyingine. Hii inaweza kusababisha programu nyingine kuacha kufanya kazi."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Programu hii inaweza kuonekana juu ya programu zingine"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Programu hii inaweza kuonekana juu ya programu zingine au sehemu zingine za skrini. Hii huenda ikaathiri matumizi ya kawaida ya programu na kubadilisha jinsi ambavyo programu zingine zinavyoonekana."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"kuficha matangazo ya programu zingine yaliyowekelewa juu"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Programu hii inaweza kuuomba mfumo ufiche matangazo yaliyowekelewa juu yanayotoka kwenye programu yasionyeshwe."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"tumia chini chini"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Programu hii inaweza kutumika chini chini. Hali hii inaweza kumaliza chaji ya betri haraka."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"tumia data chini chini"</string>
<string name="permdesc_useDataInBackground" msgid="1230753883865891987">"Programu hii inaweza kutumia data chini chini. Hali hii inaweza kuongeza matumizi ya data."</string>
- <!-- no translation found for permlab_schedule_exact_alarm (6683283918033029730) -->
- <skip />
- <!-- no translation found for permdesc_schedule_exact_alarm (8198009212013211497) -->
- <skip />
- <!-- no translation found for permlab_use_exact_alarm (348045139777131552) -->
- <skip />
- <!-- no translation found for permdesc_use_exact_alarm (7033761461886938912) -->
- <skip />
+ <string name="permlab_schedule_exact_alarm" msgid="6683283918033029730">"Panga vitendo vilivyoratibiwa kwa usahihi"</string>
+ <string name="permdesc_schedule_exact_alarm" msgid="8198009212013211497">"Programu hii inaweza kuratibu kazi ifanyike kwa muda unaofaa katika siku zijazo. Pia, hii inamaanisha kuwa programu inaweza kufanya kazi wakati hutumii kifaa kikamilifu."</string>
+ <string name="permlab_use_exact_alarm" msgid="348045139777131552">"Ratibu vikumbusho vya matukio na kengele"</string>
+ <string name="permdesc_use_exact_alarm" msgid="7033761461886938912">"Programu hii inaweza kuratibu vitendo kama vile kengele na vikumbusho ili kukuarifu kwa wakati unaofaa katika siku zijazo."</string>
<string name="permlab_persistentActivity" msgid="464970041740567970">"Fanya programu kuendeshwa kila mara"</string>
<string name="permdesc_persistentActivity" product="tablet" msgid="6055271149187369916">"Inaruhusu programu kuendeleza vijisehemu vyake kwenye kumbukumbu. Hii inaweza kupunguza kumbukumbu inayopatikana katika programu nyingine ikipunguza kasi ya kompyuta ndogo."</string>
<string name="permdesc_persistentActivity" product="tv" msgid="6800526387664131321">"Huruhusu programu ifanye vijisehemu vyake vidumu kwenye kumbukumbu. Hii inaweza kudhibiti hifadhi inayopatikana kwa ajili ya programu zingine hivyo kupunguza kasi ya kifaa chako cha Android TV."</string>
@@ -428,10 +424,8 @@
<string name="permdesc_foregroundServiceRemoteMessaging" msgid="8767598075877576277">"Huruhusu programu itumie huduma zinazoonekana kwenye skrini zinazohusiana na \"remoteMessaging\""</string>
<string name="permlab_foregroundServiceSystemExempted" msgid="1597663713590612685">"kutekeleza huduma inayoonekana kwenye skrini inayohusiana na \"systemExempted\""</string>
<string name="permdesc_foregroundServiceSystemExempted" msgid="947381760834649622">"Huruhusu programu itumie huduma zinazoonekana kwenye skrini zinazohusiana na \"systemExempted\""</string>
- <!-- no translation found for permlab_foregroundServiceFileManagement (2585000987966045030) -->
- <skip />
- <!-- no translation found for permdesc_foregroundServiceFileManagement (417103601269698508) -->
- <skip />
+ <string name="permlab_foregroundServiceFileManagement" msgid="2585000987966045030">"kutekeleza huduma inayoonekana kwenye skrini inayohusiana na \"fileManagement\""</string>
+ <string name="permdesc_foregroundServiceFileManagement" msgid="417103601269698508">"Huiruhusu programu itumie huduma zinazoonekana kwenye skrini zinazohusiana na \"fileManagement\""</string>
<string name="permlab_foregroundServiceSpecialUse" msgid="7973536745876645082">"kutekeleza huduma inayoonekana kwenye skrini inayohusiana na \"specialUse\""</string>
<string name="permdesc_foregroundServiceSpecialUse" msgid="646713654541885919">"Huruhusu programu itumie huduma zinazoonekana kwenye skrini zinazohusiana na \"specialUse\""</string>
<string name="permlab_getPackageSize" msgid="375391550792886641">"Pima nafasi ya hifadhi ya programu"</string>
@@ -969,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Jaribu tena"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Fungua kifaa ili upate data na vipengele vyote"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Umepitisha idadi ya juu ya mara ambazo unaweza kujaribu kufungua kwa uso"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Hakuna SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Hakuna SIM kwenye kompyuta kibao."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Hakuna SIM kwenye kifaa chako cha Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Hakuna SIM kwenye simu."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Weka SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM haipo au haiwezi kusomwa. Weka SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM haiwezi kutumika."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM kadi yako imefungwa kabisa.\n wasiliana na mtoa huduma wako wa pasi waya ili upate SIM nyingine."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Wimbo uliotangulia"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Wimbo unaofuata"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Sitisha"</string>
@@ -994,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Peleka mbele kwa kasi"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Simu za dharura pekee"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Mtandao umefungwa"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM imefungwa kwa PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Angalia Mwongozo wa Mtumiaji au wasiliana na Huduma ya Wateja."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM imefungwa."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Inafungua SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Umekosea katika kuchora ruwaza yako ya kufungua mara <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\n Jaribu tena kwa sekunde <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Umekosea mara <xliff:g id="NUMBER_0">%1$d</xliff:g> katika kuingiza nenosiri lako. \n\n Jaribu tena katika sekunde <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Umekosea katika kuingiza PIN yako mara <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\n Jaribu tena katika sekunde <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
@@ -1073,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Toka kwenye Ukurasa huu"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Bakia kwenye Ukurasa huu"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nJe, una uhakika unataka kutoka kwenye ukurasa huu?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Thibitisha"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Kidokezo: Gusa mara mbili ili kukuza ndani na nje."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Kujaza kiotomatiki"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Weka uwezo wa kujaza kiotomatiki"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Jaza kiotomatiki ukitumia <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Mkoa"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Msimbo wa posta"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Jimbo"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Msimbo wa posta"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Nchi"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Kisiwa"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Wilaya"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Kitengo"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Mtaa"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Eneo"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"soma alamisho na historia ya Wavuti wako"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Inaruhusu programu kusoma historia ya URL zote ambazo zimetembelewa na Kivinjari, na alamisho zote za Kivinjari. Kumbuka: idhini hii haiwezi kutekelezwa vivinjari vya vingine au programu zingine zenye uwezo wa kuvinjari."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"andika alamisho na historia ya wavuti"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Inaruhusu programu kurekebisha historia ya Kivinjari au alamisho zilizohifadhiwa kwenye kompyuta kibao yako. Hii inaruhusu programu kufuta au kurekebisha data ya Kivinjari. Kumbuka: huenda idhini hii isitekelezwe na kivinjari kingine au programu nyingine zenye uwezo wa kuvinjari wavuti."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Huruhusu programu ibadilishe historia ya Kivinjari au alamisho zilizohifadhiwa kwenye kifaa chako cha Android TV. Huenda hali hii ikairuhusu programu ifute au ibadilishe data ya Kivinjari. Kumbuka: huenda idhini hii isitekelezwe na vivinjari vingine au programu zingine zenye uwezo wa kuvinjari."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Inaruhusu programu kurekebisha historia ya Kivinjari au alamisho zilizohifadhiwa kwenye simu yako. Hii huenda ikaruhusu programu kufuta au kurekebisha data ya Kivinjari. Kumbuka: huenda idhini hii isitekelezwe na vivinjari vingine au programu nyingine zenye uwezo wa kuvinjari wavuti."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"weka kengele"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Inaruhusu programu kuweka kengele katika programu iliyosakinishwa ya kengele. Programu zingine za kengele zinawezakosa kutekeleza kipengee hiki."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ongeza barua ya sauti"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Huruhusu programu kuongeza mawasiliano kwenye kikasha cha ujumbe wa sauti."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Rekebisha vibali vya Kivinjari cha eneo la jio"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Inaruhusu programu kurekebisha ruhusa za eneo la jio za kivinjari. Programu hasidi zinaweza tumia hii kuruhusu kutuma taarifa ya eneo kwa wavuti holela."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Unataka kuvinjari ili ukumbuke nenosiri hili?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Si Sasa"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Kumbuka"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Katu"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Hauna idhini ya kufungua ukurasa huu."</string>
- <string name="text_copied" msgid="2531420577879738860">"Maandishi yamenakiliwa kwenye ubao wa kunakili."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika kutoka <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika kutoka ubao wako wa kunakili"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika maandishi uliyonakili"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika picha uliyonakili"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika maudhui uliyonakili"</string>
<string name="more_item_label" msgid="7419249600215749115">"Zaidi"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menyu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1384,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Unaweza kubadilisha hii baadaye kwenye Mipangilio > Programu"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Ruhusu Kila Wakati"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Usiruhusu Kamwe"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Umeondoa SIM"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Mtandao wa simu hautapatikana hadi utakapozima kisha uwashe tena kifaa kikiwa na SIM sahihi."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Nimemaliza"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Umeweka SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Anzisha upya kifaa chako ili kufikia mtandao wa simu."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Washa upya"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Washa huduma ya simu za mkononi"</string>
@@ -1702,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM sasa imelemazwa. Ingiza msimbo wa PUK ili kuendelea. Wasiliana na mtoa huduma kwa maelezo."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Weka nambari yako ya PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Thibitisha nambari ya PIN uliyoweka"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Inafungua SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Nambari ya PIN uliyoweka si sahihi."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Charaza PIN iliyo na tarakimu kati ya 4 na 8."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Msimbo wa PUK lazima uwe na tarakimu 8."</string>
@@ -1732,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ondoa"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ungependa kupandisha sauti zaidi ya kiwango kinachopendekezwa?\n\nKusikiliza kwa sauti ya juu kwa muda mrefu kunaweza kuharibu uwezo wako wa kusikia."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Tahadhari,\nUmezidi kiasi cha mawimbi ya sauti ya juu ambayo mtu anaweza kusikiliza kwa usalama ndani ya wiki kupitia vipokea sauti vya kichwani.\n\nKuvuka kikomo hiki kutaharibu usikivu wako kabisa."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Tahadhari,\nUmezidisha mara 5 ya kiwango cha mawimbi ya sauti ya juu ambayo mtu anaweza kusikiliza kwa usalama ndani ya wiki kupitia vipokea sauti vya kichwani.\n\nSauti imepunguzwa ili kulinda usikivu wako."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Kiwango cha sauti ambacho unasikilizia maudhui kinaweza kusababisha athari kwenye usikivu unapoendelea kusikiliza kwa muda mrefu.\n\nKuendelea kucheza maudhui katika kiwango hiki cha sauti kwa muda mrefu kunaweza kuharibu usikivu wako."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Tahadhari,\nKwa sasa unasikiliza maudhui ya sauti yanayochezwa kwa kiwango cha sauti kisicho salama.\n\nKuendelea kusikiliza maudhui katika kiwango hiki cha sauti ya juu kutaharibu usikivu wako kabisa."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ungependa kutumia njia ya mkato ya ufikivu?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Unapowasha kipengele cha njia ya mkato, hatua ya kubonyeza vitufe vyote viwili vya sauti kwa sekunde tatu itafungua kipengele cha ufikivu."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Ungependa kuwasha njia ya mkato ya vipengele vya ufikivu?"</string>
@@ -1760,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Zima kipengele cha Njia ya Mkato"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tumia Njia ya Mkato"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Ugeuzaji rangi"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Usahihishaji wa rangi"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Hali ya kutumia kwa mkono mmoja"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Kipunguza mwangaza zaidi"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Vitufe vya sauti vilivyoshikiliwa. Umewasha <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2350,24 +2294,14 @@
<string name="vdm_pip_blocked" msgid="4036107522497281397">"Huwezi kuona picha iliyopachikwa ndani ya picha nyingine unapotiririsha"</string>
<string name="system_locale_title" msgid="711882686834677268">"Chaguomsingi la mfumo"</string>
<string name="default_card_name" msgid="9198284935962911468">"SIM KADI <xliff:g id="CARDNUMBER">%d</xliff:g>"</string>
- <!-- no translation found for permlab_companionProfileWatch (2457738382085872542) -->
- <skip />
- <!-- no translation found for permdesc_companionProfileWatch (5655698581110449397) -->
- <skip />
- <!-- no translation found for permlab_observeCompanionDevicePresence (9008994909653990465) -->
- <skip />
- <!-- no translation found for permdesc_observeCompanionDevicePresence (3011699826788697852) -->
- <skip />
- <!-- no translation found for permlab_deliverCompanionMessages (3931552294842980887) -->
- <skip />
- <!-- no translation found for permdesc_deliverCompanionMessages (2170847384281412850) -->
- <skip />
- <!-- no translation found for permlab_startForegroundServicesFromBackground (6363004936218638382) -->
- <skip />
- <!-- no translation found for permdesc_startForegroundServicesFromBackground (4071826571656001537) -->
- <skip />
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="permlab_companionProfileWatch" msgid="2457738382085872542">"Ruhusa ya wasifu oanifu wa Saa ili kudhibiti saa"</string>
+ <string name="permdesc_companionProfileWatch" msgid="5655698581110449397">"Huiruhusu programu oanifu kudhibiti saa."</string>
+ <string name="permlab_observeCompanionDevicePresence" msgid="9008994909653990465">"Angalia uwepo wa vifaa oanifu"</string>
+ <string name="permdesc_observeCompanionDevicePresence" msgid="3011699826788697852">"Huiruhusu programu oanifu kuangalia uwepo wa vifaa vinavyooana wakati vifaa viko karibu au mbali."</string>
+ <string name="permlab_deliverCompanionMessages" msgid="3931552294842980887">"Tuma ujumbe oanifu"</string>
+ <string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Huiruhusu programu oanifu kutuma ujumbe oanifu kwenye vifaa vingine."</string>
+ <string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Anzisha huduma zinazoonekana kwenye skrini katika huduma zinazoendelea chinichini"</string>
+ <string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Huruhusu programu oanifu kuanzisha huduma zinazoonekana kwenye skrini kutoka katika huduma zinazoendelea chinichini."</string>
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Maikrofoni inapatikana"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Maikrofoni imezuiwa"</string>
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index fb13747..41279f6 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"உள்ளிட்ட பின்கள் பொருந்தவில்லை."</string>
<string name="invalidPin" msgid="7542498253319440408">"4 இலிருந்து 8 எண்கள் வரையுள்ள பின் ஐத் தட்டச்சு செய்யவும்."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 அல்லது அதற்கு மேல் எண்கள் உள்ள PUK ஐத் தட்டச்சு செய்யவும்."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"உங்கள் சிம் PUK-லாக் செய்யப்பட்டுள்ளது. அதை அன்லாக் செய்ய PUK குறியீட்டை உள்ளிடுங்கள்."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"சிம் தடுப்பை நீக்க PUK2 என உள்ளிடவும்."</string>
<string name="enablePin" msgid="2543771964137091212">"தோல்வி, சிம்/RUIM பூட்டை இயக்கவும்."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">சிம் பூட்டப்படுவதற்கு முன், நீங்கள் <xliff:g id="NUMBER_1">%d</xliff:g> முறை முயற்சிக்கலாம்.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"பிற ஆப்ஸின் பின்புலச் செயல்முறைகளை நிறுத்த ஆப்ஸை அனுமதிக்கிறது. இதனால் பிற ஆப்ஸ் இயங்குவதை நிறுத்தலாம்."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"இந்த ஆப்ஸ் பிற ஆப்ஸின் மேலே தோன்றலாம்"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"இந்த ஆப்ஸ் பிற ஆப்ஸின் மேலே அல்லது திரையின் பிற பகுதிகளில் தோன்றலாம். இது வழக்கமான ஆப்ஸ் உபயோகத்தில் குறுக்கிட்டு, பிற ஆப்ஸ் தோன்றும் விதத்தை மாற்றக்கூடும்."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"மற்ற ஆப்ஸின் மேல் அடுக்குகளை மறைத்தல்"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"ஆப்ஸ் உருவாக்கும் மேல் அடுக்குகள் அதன் மேலே காட்டப்படுவதை மறைக்குமாறு சிஸ்டத்திடம் இந்த ஆப்ஸ் கோர முடியும்."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"பின்னணியில் இயக்கு"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"இந்த ஆப்ஸ், பின்னணியில் இயங்கலாம். இதனால் பேட்டரி விரைவாகத் தீர்ந்துவிடக்கூடும்."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"பின்னணியில் தரவைப் பயன்படுத்து"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"மீண்டும் முயற்சிக்கவும்"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"எல்லா அம்சங்கள் & தரவை பெற, சாதனத்தை அன்லாக் செய்யவும்"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"முகம் காட்டித் திறத்தல் அம்சத்தை அதிகமுறை பயன்படுத்துவிட்டீர்கள்"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"சிம் இல்லை"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"டேப்லெட்டில் சிம் இல்லை."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"உங்கள் Android TV சாதனத்தில் சிம் இல்லை."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"மொபைலில் சிம் இல்லை."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"சிம்மைச் சேருங்கள்."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"சிம் இல்லை அல்லது படிக்கக்கூடியதாக இல்லை. சிம்மைச் சேருங்கள்."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"பயன்படுத்த முடியாத சிம்."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"உங்கள் சிம் நிரந்தரமாக முடக்கப்பட்டுள்ளது.\n மற்றொரு சிம்மிற்கான உங்கள் வயர்லெஸ் சேவை வழங்குநரைத் தொடர்புகொள்ளுங்கள்."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"முந்தைய டிராக்"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"அடுத்த டிராக்"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"இடைநிறுத்து"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"முன்னே செல்"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"அவசர அழைப்புகள் மட்டும்"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"நெட்வொர்க் பூட்டப்பட்டது"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"சிம் PUK-லாக் செய்யப்பட்டுள்ளது."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"பயனர் கையேட்டைப் பார்க்கவும் அல்லது வாடிக்கையாளர் சேவையைத் தொடர்புகொள்ளவும்."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"சிம் லாக் செய்யப்பட்டுள்ளது."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"சிம்மை அன்லாக் செய்கிறது…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"அன்லாக் பேட்டர்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"உங்கள் கடவுச்சொல்லை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக உள்ளிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"உங்கள் பின்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக உள்ளிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"இந்தப் பக்கத்திலிருந்து வெளியேறு"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"இந்தப் பக்கத்திலேயே இரு"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nஇந்தப் பக்கத்திலிருந்து வெளியே வழிச்செலுத்த வேண்டுமா?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"உறுதிசெய்க"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"உதவிக்குறிப்பு: அளவைப் பெரிதாக்க மற்றும் குறைக்க இருமுறைத் தட்டவும்."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"தன்னிரப்பி"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"தன்னிரப்பியை அமை"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> இலிருந்து தன்னிரப்புதல்"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"பிராந்தியம்"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"அஞ்சல் குறியீடு"</string>
- <string name="autofill_state" msgid="3341725337190434069">"மாநிலம்"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"அஞ்சல் எண்"</string>
- <string name="autofill_county" msgid="7781382735643492173">"மாகாணம்"</string>
- <string name="autofill_island" msgid="5367139008536593734">"தீவு"</string>
- <string name="autofill_district" msgid="6428712062213557327">"மாவட்டம்"</string>
- <string name="autofill_department" msgid="9047276226873531529">"துறை"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"அதிகார எல்லை"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"பாரிஷ்"</string>
- <string name="autofill_area" msgid="8289022370678448983">"பகுதி"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"எமிரேட்"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"உங்கள் இணையப் புத்தக்கக்குறிகள் மற்றும் வரலாற்றைப் படித்தல்"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"உலாவி மூலம் பார்வையிட்ட எல்லா URLகளின் வரலாற்றையும், உலாவியில் குறிக்கப்பட்ட எல்லா புத்தகக்குறிகளையும் படிக்கப் ஆப்ஸை அனுமதிக்கிறது. குறிப்பு: மூன்றாம் தரப்பு உலாவிகள் அல்லது இணைய உலாவல் திறன்களுடன் கூடிய பிற ஆப்ஸால் இந்த அனுமதி செயற்படுத்தப்படாமல் போகலாம்."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"இணையப் புத்தகக்குறிகளையும், வரலாற்றையும் எழுதுதல்"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"உங்கள் டேப்லெட்டில் சேமிக்கப்பட்ட உலாவியின் உலாவல் தகவல்கள் அல்லது புத்தகக்குறிகளைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இது உலாவியின் தரவை அழிக்கவோ, திருத்தவோ ஆப்ஸை அனுமதிக்கலாம். குறிப்பு: இணைய உலாவல் செயல்திறன்கள் மூலம் மூன்றாம் தரப்பு உலாவிகள் அல்லது பிற ஆப்ஸ் இந்த அனுமதியைச் செயற்படுத்த முடியாது."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Android TVயில் சேமித்துள்ள உலாவியின் மூலம் பார்க்கப்பட்ட தளங்களையோ புக்மார்க்குகளையோ திருத்த ஆப்ஸை அனுமதிக்கும். இது உலாவியின் தரவை அழிக்கவோ திருத்தவோ ஆப்ஸை அனுமதிக்கக்கூடும். கவனத்திற்கு: மூன்றாம் தரப்பு உலாவிகளோ இணைய உலாவல் திறன்களுடன் கூடிய பிற ஆப்ஸோ இந்த அனுமதியைச் செயல்படுத்த முடியாது."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"உங்கள் மொபைலில் சேமிக்கப்பட்ட உலாவியின் உலாவல் தகவல்கள் அல்லது புத்தகக்குறிகளைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இது உலாவியின் தரவை அழிக்கவோ, திருத்தவோ ஆப்ஸை அனுமதிக்கலாம். குறிப்பு: இணைய உலாவல் செயல்திறன்கள் மூலம் மூன்றாம் தரப்பு உலாவிகள் அல்லது பிற ஆப்ஸ் இந்த அனுமதியைச் செயற்படுத்த முடியாது."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"அலாரத்தை அமைத்தல்"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"நிறுவிய அலார கடிகாரப் பயன்பாட்டில் அலாரத்தை அமைக்க, ஆப்ஸை அனுமதிக்கிறது. சில அலார கடிகார பயன்பாடுகளில் இந்த அம்சம் இல்லாமல் இருக்கலாம்."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"குரலஞ்சலைச் சேர்த்தல்"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"குரலஞ்சல் இன்பாக்ஸில் செய்திகளைச் சேர்க்க, ஆப்ஸை அனுமதிக்கிறது."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"உலாவியின் புவியியல் இருப்பிடம் சார்ந்த அனுமதிகளைத் திருத்துதல்"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"உலாவியின் புவியியல் இருப்பிடம் சார்ந்த அனுமதிகளைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. இடத் தகவலை தன்னிச்சையான இணையதளங்களுக்கு அனுப்புவதை அனுமதிக்க, தீங்குவிளைவிக்கும் ஆப்ஸ் இதைப் பயன்படுத்தலாம்."</string>
- <string name="save_password_message" msgid="2146409467245462965">"இந்தக் கடவுச்சொல்லை உலாவி நினைவில்கொள்ள விரும்புகிறீர்களா?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"இப்போது இல்லை"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"நினைவில்கொள்"</string>
- <string name="save_password_never" msgid="6776808375903410659">"ஒருபோதும் வேண்டாம்"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"இந்தப் பக்கத்தைத் திறக்க, உங்களிடம் அனுமதி இல்லை."</string>
- <string name="text_copied" msgid="2531420577879738860">"உரை கிளிப்போர்டிற்கு நகலெடுக்கப்பட்டது."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ஆப்ஸிலிருந்து <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஒட்டப்பட்டது"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"கிளிப்போர்டில் இருந்து <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஒட்டப்பட்டது"</string>
- <string name="pasted_text" msgid="4298871641549173733">"நீங்கள் நகலெடுத்த உரையை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string>
- <string name="pasted_image" msgid="4729097394781491022">"நீங்கள் நகலெடுத்த படத்தை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string>
- <string name="pasted_content" msgid="646276353060777131">"நீங்கள் நகலெடுத்த உள்ளடக்கத்தை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string>
<string name="more_item_label" msgid="7419249600215749115">"மேலும்"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"மெனு+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"மெட்டா மற்றும்"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"அமைப்பு > ஆப்ஸ் என்பதில் பிறகு நீங்கள் மாற்றலாம்"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"எப்போதும் அனுமதி"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ஒருபோதும் அனுமதிக்காதே"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"சிம் அகற்றப்பட்டது"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"நீங்கள் சரியான சிம்முடன் மீண்டும் தொடங்கும் வரை மொபைல் நெட்வொர்க் கிடைக்காது."</string>
<string name="sim_done_button" msgid="6464250841528410598">"முடிந்தது"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"சிம் சேர்க்கப்பட்டது"</string>
<string name="sim_added_message" msgid="6602906609509958680">"மொபைல் நெட்வொர்க்கை அணுக உங்கள் சாதனத்தை மறுதொடக்கம் செய்யவும்."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"மீண்டும் தொடங்கு"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"மொபைல் சேவையை இயக்கு"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"சிம் தற்போது முடக்கப்பட்டுள்ளது. தொடர்வதற்கு PUK குறியீட்டை உள்ளிடவும். விவரங்களுக்கு மொபைல் நிறுவனங்களைத் தொடர்புகொள்ளவும்."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"விரும்பிய பின் குறியீட்டை உள்ளிடவும்"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"விரும்பிய பின் குறியீட்டை உறுதிப்படுத்தவும்"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"சிம்மை அன்லாக் செய்கிறது…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"தவறான பின் குறியீடு."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4 இலிருந்து 8 எண்கள் வரையுள்ள பின்னை உள்ளிடவும்."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK குறியீட்டில் 8 எழுத்துக்குறிகள் இருக்க வேண்டும்."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"அகற்று"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"பரிந்துரைத்த அளவை விட ஒலியை அதிகரிக்கவா?\n\nநீண்ட நேரத்திற்கு அதிகளவில் ஒலி கேட்பது கேட்கும் திறனைப் பாதிக்கலாம்."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"எச்சரிக்கை,\nஒரு வாரத்திற்கு ஹெட்ஃபோன்களில் ஒருவர் பாதுகாப்பாகக் கேட்கக்கூடிய சத்தமான ஒலியளவு வரம்பைக் கடந்துவிட்டீர்கள்.\n\nதொடர்ந்து இந்த வரம்பை மீறினால் உங்கள் கேட்கும் திறன் நிரந்தரப் பாதிப்புக்குள்ளாகும்."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"எச்சரிக்கை,\nஒரு வாரத்திற்கு ஹெட்ஃபோன்களில் ஒருவர் பாதுகாப்பாகக் கேட்கக்கூடிய சத்தமான ஒலியளவு வரம்பை 5 முறை கடந்துவிட்டீர்கள்.\n\nஉங்கள் கேட்கும் திறனின் நலன் கருதி ஒலியளவு குறைக்கப்பட்டுள்ளது."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"நீங்கள் தற்போது கேட்கும் ஒலியளவிலேயே தொடர்ந்து மீடியாவைக் கேட்டு வந்தால் உங்கள் கேட்கும் திறன் பாதிப்புக்குள்ளாகும்.\n\nஇந்த அளவிலேயே தொடர்ந்து கேட்டால் உங்கள் கேட்கும் திறன் பாதிப்படையலாம்."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"எச்சரிக்கை,\nபாதுகாப்பற்ற ஒலியளவில் மீடியாவைத் தற்போது சத்தமாகக் கேட்கிறீர்கள்.\n\nதொடர்ந்து இந்தளவில் கேட்டால் உங்கள் கேட்கும் திறன் நிரந்தரப் பாதிப்புக்குள்ளாகும்."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"அணுகல்தன்மை ஷார்ட்கட்டைப் பயன்படுத்தவா?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ஷார்ட்கட் இயக்கத்தில் இருக்கும்போது ஒலியளவு பட்டன்கள் இரண்டையும் 3 வினாடிகளுக்கு அழுத்தினால் அணுகல்தன்மை அம்சம் இயக்கப்படும்."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"அணுகல்தன்மை அம்சங்களுக்கான ஷார்ட்கட்டை ஆன் செய்யவா?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ஷார்ட்கட்டை முடக்கு"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ஷார்ட்கட்டைப் பயன்படுத்து"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"நிற நேரெதிர் மாற்றம்"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"கலர் கரெக்ஷன்"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ஒற்றைக் கைப் பயன்முறை"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"மிகக் குறைவான வெளிச்சம்"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆன் செய்யப்பட்டது."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"பிற சாதனங்களுக்குத் துணை மெசேஜ்களை வழங்க துணைத் தயாரிப்பு ஆப்ஸை அனுமதிக்கும்."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"பின்னணியில் இருந்து முன்புலச் சேவைகளைத் தொடங்குதல்"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"பின்னணியிலிருந்து முன்புலச் சேவைகளைத் தொடங்க துணைத் தயாரிப்பு ஆப்ஸை அனுமதிக்கும்."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"மைக்ரோஃபோன் இயக்கப்பட்டது"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"மைக்ரோஃபோன் முடக்கப்பட்டுள்ளது"</string>
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 54718ba..b31f920 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"మీరు టైప్ చేసిన పిన్లు సరిపోలలేదు."</string>
<string name="invalidPin" msgid="7542498253319440408">"4 నుండి 8 సంఖ్యలు ఉండే పిన్ను టైప్ చేయండి."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 సంఖ్యలు లేదా అంతకంటే పొడవు ఉండే PUKని టైప్ చేయండి."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"మీ SIM PUK-లాక్ చేయబడింది. దీన్ని అన్లాక్ చేయడానికి PUK కోడ్ను టైప్ చేయండి."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIMను అన్బ్లాక్ చేయడానికి PUK2 అని టైప్ చేయండి."</string>
<string name="enablePin" msgid="2543771964137091212">"వైఫల్యం, సిమ్/RUIM లాక్ను ప్రారంభించండి."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">SIM లాక్ కాకుండా ఉండటానికి మీకు <xliff:g id="NUMBER_1">%d</xliff:g> ప్రయత్నాలు మిగిలి ఉన్నాయి.</item>
@@ -313,7 +311,7 @@
<string name="permgrouplab_microphone" msgid="2480597427667420076">"మైక్రోఫోన్"</string>
<string name="permgroupdesc_microphone" msgid="1047786732792487722">"ఆడియోను రికార్డ్ చేయడానికి"</string>
<string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"ఫిజికల్ యాక్టివిటీ"</string>
- <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"భౌతిక యాక్టివిటీని యాక్సెస్ చేయండి"</string>
+ <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"ఫిజికల్ యాక్టివిటీని యాక్సెస్ చేయండి"</string>
<string name="permgrouplab_camera" msgid="9090413408963547706">"కెమెరా"</string>
<string name="permgroupdesc_camera" msgid="7585150538459320326">"చిత్రాలను తీయడానికి మరియు వీడియోను రికార్డ్ చేయడానికి"</string>
<string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"సమీపంలోని పరికరాలు"</string>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"ఇతర యాప్ల నేపథ్య ప్రాసెస్లను ముగించడానికి యాప్ను అనుమతిస్తుంది. దీని వలన ఇతర యాప్లు అమలు కాకుండా ఆపివేయబడవచ్చు."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"ఈ యాప్ ఇతర యాప్ల పైభాగాన కనిపించగలదు"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"ఈ యాప్ ఇతర యాప్ల పైభాగాన లేదా స్క్రీన్ యొక్క ఇతర భాగాలపైన కనిపించగలదు. ఇది సాధారణ యాప్ వినియోగానికి అంతరాయం కలిగించవచ్చు మరియు ఆ ఇతర యాప్లు కనిపించే విధానాన్ని మార్చవచ్చు."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ఇతర యాప్ల ఓవర్లేస్ను దాచండి"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"యాప్ల నుండి వచ్చే ఓవర్లేస్ను దాని పైన భాగంలో చూపకుండా, సిస్టమ్ దాచవల్సిందిగా ఈ యాప్ రిక్వెస్ట్ చేయవచ్చు."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"బ్యాక్గ్రౌండ్లో అమలు చేయండి"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"ఈ యాప్ బ్యాక్గ్రౌండ్లో అమలు కావచ్చు. దీని వలన ఎక్కువ బ్యాటరీ శక్తి వినియోగం కావచ్చు."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"బ్యాక్గ్రౌండ్లో డేటాను ఉపయోగించండి"</string>
@@ -591,7 +591,7 @@
<string name="permdesc_postNotification" msgid="5974977162462877075">"నోటిఫికేషన్లను చూపించడానికి యాప్ను అనుమతించండి"</string>
<string name="permlab_turnScreenOn" msgid="219344053664171492">"స్క్రీన్ను ఆన్ చేయండి"</string>
<string name="permdesc_turnScreenOn" msgid="4394606875897601559">"స్క్రీన్ను ఆన్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
- <string name="permlab_useBiometric" msgid="6314741124749633786">"బయోమెట్రిక్ హార్డ్వేర్ని ఉపయోగించు"</string>
+ <string name="permlab_useBiometric" msgid="6314741124749633786">"బయోమెట్రిక్ హార్డ్వేర్ని ఉపయోగించండి"</string>
<string name="permdesc_useBiometric" msgid="7502858732677143410">"ప్రమాణీకరణ కోసం బయోమెట్రిక్ హార్డ్వేర్ను ఉపయోగించడానికి యాప్ని అనుమతిస్తుంది"</string>
<string name="permlab_manageFingerprint" msgid="7432667156322821178">"వేలిముద్ర హార్డ్వేర్ని మేనేజ్ చేయడానికి అనుమతి"</string>
<string name="permdesc_manageFingerprint" msgid="2025616816437339865">"వినియోగం కోసం వేలిముద్ర టెంప్లేట్లను జోడించే, తొలగించే పద్ధతులను అమలు చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"మళ్లీ ప్రయత్నించండి"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"అన్ని లక్షణాలు మరియు డేటా కోసం అన్లాక్ చేయండి"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"ఫేస్ అన్లాక్ ప్రయత్నాల గరిష్ఠ పరిమితిని మించిపోయారు"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM లేదు"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"టాబ్లెట్లో SIM లేదు."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"మీ Android TV పరికరంలో SIM లేదు."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ఫోన్లో SIM లేదు."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIMను జోడించండి."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM మిస్ అయ్యింది లేదా ఆమోదయోగ్యం కాదు. SIMను జోడించండి."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"వినియోగించలేని SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"మీ SIM శాశ్వతంగా డీయాక్టివేట్ చేయబడింది.\n మరో SIMను పొందడం కోసం మీ వైర్లెస్ సర్వీస్ ప్రొవైడర్ను సంప్రదించండి."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"మునుపటి ట్రాక్"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"తర్వాత ట్రాక్"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"పాజ్ చేయి"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"వేగంగా ఫార్వర్డ్ చేయి"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"ఎమర్జెన్సీ కాల్స్ మాత్రమే"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"నెట్వర్క్ లాక్ చేయబడింది"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM PUK లాక్ చేయబడింది."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"వినియోగదారు గైడ్ను చూడండి లేదా కస్టమర్ కేర్ను సంప్రదించండి."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM లాక్ చేయబడింది."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIMను అన్లాక్ చేస్తోంది…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"మీరు మీ అన్లాక్ నమూనాను <xliff:g id="NUMBER_0">%1$d</xliff:g> సార్లు తప్పుగా గీసారు. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> సెకన్లలో మళ్లీ ప్రయత్నించండి."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"మీరు మీ పాస్వర్డ్ను <xliff:g id="NUMBER_0">%1$d</xliff:g> సార్లు తప్పుగా టైప్ చేశారు. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> సెకన్లలో మళ్లీ ప్రయత్నించండి."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"మీరు మీ పిన్ను <xliff:g id="NUMBER_0">%1$d</xliff:g> సార్లు తప్పుగా టైప్ చేశారు. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> సెకన్లలో మళ్లీ ప్రయత్నించండి."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ఈ పేజీని విడిచిపెట్టు"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"ఈ పేజీలోనే ఉంచు"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nమీరు ఖచ్చితంగా ఈ పేజీ నుండి వెలుపలకు నావిగేట్ చేయాలనుకుంటున్నారా?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"నిర్ధారించండి"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"చిట్కా: దగ్గరకు మరియు దూరానికి జూమ్ చేయడానికి రెండు సార్లు నొక్కండి."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ఆటోఫిల్"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"స్వీయ పూరణను సెటప్ చేయండి"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ద్వారా స్వీయ పూరింపు చేయండి"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"ప్రావిన్స్"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"పోస్టల్ కోడ్"</string>
- <string name="autofill_state" msgid="3341725337190434069">"రాష్ట్రం"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"జిప్ కోడ్"</string>
- <string name="autofill_county" msgid="7781382735643492173">"కౌంటీ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"దీవి"</string>
- <string name="autofill_district" msgid="6428712062213557327">"జిల్లా"</string>
- <string name="autofill_department" msgid="9047276226873531529">"విభాగం"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"అధికారిక నివాసం"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"పారిష్"</string>
- <string name="autofill_area" msgid="8289022370678448983">"ప్రాంతం"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"ఎమిరేట్"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"మీ వెబ్ బుక్మార్క్లు మరియు హిస్టరీని చదవడం"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"బ్రౌజర్ సందర్శించిన అన్ని URLల హిస్టరీ గురించి మరియు అన్ని బ్రౌజర్ బుక్మార్క్ల గురించి చదవడానికి యాప్ను అనుమతిస్తుంది. గమనిక: ఈ అనుమతి మూడవ పక్షం బ్రౌజర్లు లేదా వెబ్ బ్రౌజింగ్ సామర్థ్యాలు గల ఇతర యాప్ల ద్వారా అమలు చేయబడకపోవచ్చు."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"వెబ్ బుక్మార్క్లు మరియు హిస్టరీని రాయడం"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"మీ టాబ్లెట్లో నిల్వ చేయబడిన బ్రౌజర్ హిస్టరీని, బుక్మార్క్లను ఎడిట్ చేయడానికి యాప్ను అనుమతిస్తుంది. ఇది బ్రౌజర్ డేటాను ఎరేజ్ చేయడానికి లేదా ఎడిట్ చేయడానికి యాప్ను అనుమతించవచ్చు. గమనిక: ఈ అనుమతిని థర్డ్ పార్టీ బ్రౌజర్లు లేదా వెబ్ బ్రౌజింగ్ సామర్థ్యాలు గల ఇతర యాప్లు అమలు చేయకపోవచ్చు."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"మీ Android TV పరికరంలో నిల్వ చేసిన బ్రౌజర్ హిస్టరీ లేదా బుక్మార్క్లను ఎడిట్ చేయడానికి యాప్ని అనుమతిస్తుంది. ఇది బ్రౌజర్ డేటాను తీసివేయడానికి లేదా ఎడిట్ చేయడానికి యాప్ని అనుమతించవచ్చు. గమనిక: ఈ అనుమతి మూడవ-పక్ష బ్రౌజర్లు లేదా వెబ్ బ్రౌజింగ్ సామర్థ్యాలు గల ఇతర యాప్ల ద్వారా అమలు కాకపోవచ్చు."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"మీ ఫోన్లో నిల్వ చేయబడిన బ్రౌజర్ హిస్టరీని లేదా బుక్మార్క్లను ఎడిట్ చేయడానికి యాప్ను అనుమతిస్తుంది. ఇది బ్రౌజర్ డేటాను ఎరేజ్ చేయడానికి లేదా ఎడిట్ చేయడానికి యాప్ను అనుమతించవచ్చు. గమనిక: ఈ అనుమతి మూడవ పక్షం బ్రౌజర్లు లేదా వెబ్ బ్రౌజింగ్ సామర్థ్యాలు గల ఇతర యాప్ల ద్వారా అమలు చేయబడకపోవచ్చు."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"అలారం సెట్ చేయడం"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ఇన్స్టాల్ చేయబడిన అలారం గడియారం యాప్లో అలారంను సెట్ చేయడానికి యాప్ను అనుమతిస్తుంది. కొన్ని అలారం గల గడియారం యాప్లు ఈ ఫీచర్ను అమలు చేయకపోవచ్చు."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"వాయిస్ మెయిల్ను జోడించడం"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"మీ వాయిస్ మెయిల్ ఇన్బాక్స్కు మెసేజ్లను జోడించడానికి యాప్ను అనుమతిస్తుంది."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"బ్రౌజర్ భౌగోళిక స్థానం అనుమతులను ఎడిట్ చేయడం"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"బ్రౌజర్ యొక్క భౌగోళిక లొకేషన్ అనుమతులను ఎడిట్ చేయడానికి యాప్ను అనుమతిస్తుంది. హానికరమైన యాప్లు ఏకపక్ష వెబ్ సైట్లకు లొకేషన్ సమాచారాన్ని అనుమతించడానికి దీన్ని ఉపయోగించవచ్చు."</string>
- <string name="save_password_message" msgid="2146409467245462965">"మీరు బ్రౌజర్ ఈ పాస్వర్డ్ను గుర్తుపెట్టుకోవాలని కోరుకుంటున్నారా?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ఇప్పుడు కాదు"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"గుర్తుంచుకో"</string>
- <string name="save_password_never" msgid="6776808375903410659">"ఎప్పుడూ వద్దు"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"ఈ పేజీని తెరవడానికి మీకు అనుమతి లేదు."</string>
- <string name="text_copied" msgid="2531420577879738860">"వచనం క్లిప్బోర్డ్కు కాపీ చేయబడింది."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> నుండి పేస్ట్ చేయబడింది"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"మీ క్లిప్బోర్డ్ నుండి <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> పేస్ట్ చేయబడింది"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన టెక్స్ట్ను పేస్ట్ చేసింది"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన ఇమేజ్ను పేస్ట్ చేసింది"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన కంటెంట్ను పేస్ట్ చేసింది"</string>
<string name="more_item_label" msgid="7419249600215749115">"ఎక్కువ"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"మెనూ+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"మీరు దీన్ని తర్వాత సెట్టింగ్లు > అనువర్తనాలులో మార్చవచ్చు"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"ఎల్లప్పుడూ అనుమతించండి"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ఎప్పటికీ అనుమతించవద్దు"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM తీసివేయబడింది"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"మీరు చెల్లుబాటు అయ్యే SIMతో రీస్టార్ట్ చేసే వరకు మొబైల్ నెట్వర్క్ అందుబాటులో ఉండదు."</string>
<string name="sim_done_button" msgid="6464250841528410598">"పూర్తయింది"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM జోడించబడింది"</string>
<string name="sim_added_message" msgid="6602906609509958680">"మొబైల్ నెట్వర్క్ను యాక్సెస్ చేయడానికి మీ పరికరాన్ని పునఃప్రారంభించండి."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"రీస్టార్ట్ చేయండి"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"మొబైల్ సేవను యాక్టివేట్ చేయండి"</string>
@@ -1474,7 +1422,7 @@
<string name="ext_media_unmounting_notification_title" msgid="4147986383917892162">"<xliff:g id="NAME">%s</xliff:g>ని తొలగిస్తోంది"</string>
<string name="ext_media_unmounting_notification_message" msgid="5717036261538754203">"తీసివేయవద్దు"</string>
<string name="ext_media_init_action" msgid="2312974060585056709">"సెటప్ చేయండి"</string>
- <string name="ext_media_unmount_action" msgid="966992232088442745">"తొలగించు"</string>
+ <string name="ext_media_unmount_action" msgid="966992232088442745">"తొలగించండి"</string>
<string name="ext_media_browse_action" msgid="344865351947079139">"విశ్లేషించు"</string>
<string name="ext_media_seamless_action" msgid="8837030226009268080">"అవుట్పుట్ మార్చండి"</string>
<string name="ext_media_missing_title" msgid="3209472091220515046">"<xliff:g id="NAME">%s</xliff:g> కనుగొనబడటం లేదు"</string>
@@ -1565,8 +1513,8 @@
<string name="share" msgid="4157615043345227321">"షేర్"</string>
<string name="find" msgid="5015737188624767706">"కనుగొనండి"</string>
<string name="websearch" msgid="5624340204512793290">"వెబ్ సెర్చ్"</string>
- <string name="find_next" msgid="5341217051549648153">"తదుపరిదాన్ని కనుగొను"</string>
- <string name="find_previous" msgid="4405898398141275532">"మునుపటిదాన్ని కనుగొను"</string>
+ <string name="find_next" msgid="5341217051549648153">"తదుపరిదాన్ని కనుగొనండి"</string>
+ <string name="find_previous" msgid="4405898398141275532">"మునుపటిదాన్ని కనుగొనండి"</string>
<string name="gpsNotifTicker" msgid="3207361857637620780">"<xliff:g id="NAME">%s</xliff:g> నుండి లొకేషన్ రిక్వెస్ట్"</string>
<string name="gpsNotifTitle" msgid="1590033371665669570">"లొకేషన్ రిక్వెస్ట్"</string>
<string name="gpsNotifMessage" msgid="7346649122793758032">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>) ద్వారా రిక్వెస్ట్ చేయబడింది"</string>
@@ -1574,7 +1522,7 @@
<string name="gpsVerifNo" msgid="1671201856091564741">"కాదు"</string>
<string name="sync_too_many_deletes" msgid="6999440774578705300">"తొలగింపు పరిమితి మించిపోయింది"</string>
<string name="sync_too_many_deletes_desc" msgid="7409327940303504440">"<xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>, ఖాతా <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>కి సంబంధించి <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> తొలగించబడే అంశాలు ఉన్నాయి. మీరు ఏమి చేయాలనుకుంటున్నారు?"</string>
- <string name="sync_really_delete" msgid="5657871730315579051">"అంశాలను తొలగించు"</string>
+ <string name="sync_really_delete" msgid="5657871730315579051">"అంశాలను తొలగించండి"</string>
<string name="sync_undo_deletes" msgid="5786033331266418896">"తొలగింపులను చర్య రద్దు చేయండి"</string>
<string name="sync_do_nothing" msgid="4528734662446469646">"ఇప్పటికీ ఏమీ చేయవద్దు"</string>
<string name="choose_account_label" msgid="5557833752759831548">"ఖాతాను ఎంచుకోండి"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"సిమ్ ఇప్పుడు నిలిపివేయబడింది. కొనసాగడానికి PUK కోడ్ను నమోదు చేయండి. వివరాల కోసం క్యారియర్ను సంప్రదించండి."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"కోరుకునే పిన్ కోడ్ను నమోదు చేయండి"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"కావల్సిన పిన్ కోడ్ను నిర్ధారించండి"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIMను అన్లాక్ చేస్తోంది…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"చెల్లని పిన్ కోడ్."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4 నుండి 8 సంఖ్యలు ఉండే పిన్ను టైప్ చేయండి."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK కోడ్ 8 సంఖ్యలు ఉండాలి."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"తీసివేయండి"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"వాల్యూమ్ను సిఫార్సు చేయబడిన స్థాయి కంటే ఎక్కువగా పెంచాలా?\n\nసుదీర్ఘ వ్యవధుల పాటు అధిక వాల్యూమ్లో వినడం వలన మీ వినికిడి శక్తి దెబ్బ తినవచ్చు."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"హెచ్చరిక,\nమీరు ఒక వారంలో హెడ్ఫోన్స్ ద్వారా సురక్షితంగా వినగలిగే భారీ సౌండ్ సిగ్నల్స్ పరిమాణాన్ని మించిపోయారు.\n\nఈ పరిమితిని మించిపోవడం వల్ల మీ వినికిడి శాశ్వతంగా దెబ్బతింటుంది."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"హెచ్చరిక,\nమీరు ఒక వారంలో హెడ్ఫోన్స్ ద్వారా సురక్షితంగా వినగలిగే భారీ సౌండ్ సిగ్నల్స్ కంటే 5 రెట్లు మించిపోయారు.\n\nమీ వినికిడిని రక్షించడానికి వాల్యూమ్ తగ్గించబడింది."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"మీరు ప్రస్తుతం వింటున్న వాల్యూమ్లో మీడియాను వినడం కొనసాగిస్తే, మీ వినికిడి దెబ్బతినవచ్చు.\n\nఎక్కువ సమయం పాటు ఈ స్థాయిలో మీడియాను ప్లే చేయడం వల్ల మీ వినికిడి దెబ్బతినవచ్చు."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"హెచ్చరిక,\nమీరు ప్రస్తుతం బిగ్గరగా వినిపించే కంటెంట్ను అసురక్షిత వాల్యూమ్ స్థాయిలో వింటున్నారు.\n\nఇంత బిగ్గరగా వినడం కొనసాగించడం వల్ల మీ వినికిడి శాశ్వతంగా దెబ్బతింటుంది."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"యాక్సెస్ సామర్థ్యం షార్ట్కట్ను ఉపయోగించాలా?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"షార్ట్కట్ ఆన్ చేసి ఉన్నప్పుడు, రెండు వాల్యూమ్ బటన్లను 3 సెకన్ల పాటు నొక్కి ఉంచితే యాక్సెస్ సౌలభ్య ఫీచర్ ప్రారంభం అవుతుంది."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"యాక్సెస్ సౌలభ్య ఫీచర్ల కోసం షార్ట్కట్ను ఆన్ చేయాలా?"</string>
@@ -1752,10 +1703,9 @@
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"షార్ట్కట్లను ఎడిట్ చేయండి"</string>
<string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"పూర్తయింది"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"షార్ట్కట్ను ఆఫ్ చేయి"</string>
- <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"షార్ట్కట్ను ఉపయోగించు"</string>
+ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"షార్ట్కట్ను ఉపయోగించండి"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"కలర్ మార్పిడి"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"కలర్ కరెక్షన్"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"వన్-హ్యాండెడ్ మోడ్"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ఎక్స్ట్రా డిమ్"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆన్ చేయబడింది"</string>
@@ -2063,7 +2013,7 @@
<string name="autofill_update_title_with_type" msgid="5264152633488495704">"<xliff:g id="TYPE">%1$s</xliff:g>ని "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"లో అప్డేట్ చేయాలా?"</string>
<string name="autofill_update_title_with_2types" msgid="1797514386321086273">"<xliff:g id="TYPE_0">%1$s</xliff:g> మరియు <xliff:g id="TYPE_1">%2$s</xliff:g>ని "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"లో అప్డేట్ చేయాలా?"</string>
<string name="autofill_update_title_with_3types" msgid="1312232153076212291">"ఈ అంశాలను "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>"లో అప్డేట్ చేయాలా: <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> మరియు <xliff:g id="TYPE_2">%3$s</xliff:g> ?"</string>
- <string name="autofill_save_yes" msgid="8035743017382012850">"సేవ్ చేయి"</string>
+ <string name="autofill_save_yes" msgid="8035743017382012850">"సేవ్ చేయండి"</string>
<string name="autofill_save_no" msgid="9212826374207023544">"వద్దు, ధన్యవాదాలు"</string>
<string name="autofill_save_notnow" msgid="2853932672029024195">"ఇప్పుడు కాదు"</string>
<string name="autofill_save_never" msgid="6821841919831402526">"ఎప్పుడూ వద్దు"</string>
@@ -2203,8 +2153,8 @@
<string name="resolver_no_personal_apps_available" msgid="6284837227019594881">"వ్యక్తిగత యాప్లు లేవు"</string>
<string name="miniresolver_open_in_personal" msgid="3874522693661065566">"<xliff:g id="APP">%s</xliff:g>ను మీ వ్యక్తిగత ప్రొఫైల్లో తెరవాలా?"</string>
<string name="miniresolver_open_in_work" msgid="4415223793669536559">"<xliff:g id="APP">%s</xliff:g>ను మీ వర్క్ ప్రొఫైల్లో తెరవాలా?"</string>
- <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"వ్యక్తిగత బ్రౌజర్ను ఉపయోగించు"</string>
- <string name="miniresolver_use_work_browser" msgid="543575306251952994">"వర్క్ బ్రౌజర్ను ఉపయోగించు"</string>
+ <string name="miniresolver_use_personal_browser" msgid="776072682871133308">"వ్యక్తిగత బ్రౌజర్ను ఉపయోగించండి"</string>
+ <string name="miniresolver_use_work_browser" msgid="543575306251952994">"వర్క్ బ్రౌజర్ను ఉపయోగించండి"</string>
<string name="PERSOSUBSTATE_SIM_NETWORK_ENTRY" msgid="8050953231914637819">"SIM నెట్వర్క్ అన్లాక్ పిన్"</string>
<string name="PERSOSUBSTATE_SIM_NETWORK_SUBSET_ENTRY" msgid="7164399703751688214">"SIM నెట్వర్క్ సబ్సెట్ అన్లాక్ పిన్"</string>
<string name="PERSOSUBSTATE_SIM_CORPORATE_ENTRY" msgid="4447629474818217364">"SIM కార్పొరేట్ అన్లాక్ పిన్"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"ఇతర పరికరాలకు సహాయక మెసేజ్లను డెలివరీ చేయడానికి సహాయక యాప్ను అనుమతిస్తుంది."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"ఫోర్గ్రౌండ్ సర్వీస్లను లను బ్యాక్గ్రౌండ్ నుండి ప్రారంభించండి"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"బ్యాక్గ్రౌండ్ నుండి ఫోర్గ్రౌండ్ సర్వీస్లను ప్రారంభించడానికి సహాయక యాప్ను అనుమతిస్తుంది."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"మైక్రోఫోన్ అందుబాటులో ఉంది"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"మైక్రోఫోన్ బ్లాక్ చేయబడింది"</string>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index ff59ce1..843cd29 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"PIN ที่คุณพิมพ์ไม่ตรงกัน"</string>
<string name="invalidPin" msgid="7542498253319440408">"พิมพ์ PIN ซึ่งเป็นเลข 4-8 หลัก"</string>
<string name="invalidPuk" msgid="8831151490931907083">"พิมพ์รหัส PUK ซึ่งต้องเป็นตัวเลขอย่างน้อย 8 หลัก"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM ถูกล็อกด้วย PUK พิมพ์รหัส PUK เพื่อปลดล็อก"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"พิมพ์ PUK2 เพื่อเลิกบล็อก SIM"</string>
<string name="enablePin" msgid="2543771964137091212">"ไม่สำเร็จ เปิดใช้การล็อกซิม/RUIM"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">คุณพยายามได้อีก <xliff:g id="NUMBER_1">%d</xliff:g> ครั้งก่อนที่ซิมจะล็อก</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"อนุญาตให้แอปพลิเคชันหยุดการทำงานในพื้นหลังของแอปพลิเคชันอื่นๆ ซึ่งอาจทำให้แอปพลิเคชันอื่นๆ หยุดการทำงาน"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"แอปนี้สามารถแสดงทับแอปอื่นๆ"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"แอปนี้สามารถปรากฏเหนือแอปอื่นๆ หรือส่วนอื่นของหน้าจอ ซึ่งอาจรบกวนการใช้งานตามปกติของแอปและทำให้ลักษณะการแสดงแอปอื่นๆ เปลี่ยนไป"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ซ่อนการวางซ้อนของแอปอื่นๆ"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"แอปนี้สามารถขอให้ระบบซ่อนการวางซ้อนที่มาจากแอปต่างๆ ไม่ให้แสดงซ้อนที่ด้านบนได้"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"ทำงานในพื้นหลัง"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"แอปนี้สามารถทำงานในพื้นหลัง ซึ่งอาจทำให้แบตเตอรี่หมดเร็วขึ้น"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"ใช้เน็ตในพื้นหลัง"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"ลองอีกครั้ง"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"ปลดล็อกฟีเจอร์และข้อมูลทั้งหมด"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"ลองใช้การปลดล็อกด้วยใบหน้าเกินจำนวนครั้งที่กำหนดแล้ว"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"ไม่มี SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ไม่มี SIM ในแท็บเล็ต"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"ไม่มี SIM ในอุปกรณ์ Android TV"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"ไม่มี SIM ในโทรศัพท์"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"โปรดใส่ SIM"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"ไม่มี SIM หรืออ่านไม่ได้ โปรดใส่ SIM"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM ใช้งานไม่ได้"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"ปิดใช้งาน SIM อย่างถาวรแล้ว\n ติดต่อผู้ให้บริการไร้สายของคุณเพื่อรับ SIM ใหม่"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"แทร็กก่อนหน้า"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"แทร็กถัดไป"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"หยุดชั่วคราว"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"กรอไปข้างหน้า"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"โทรฉุกเฉินเท่านั้น"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"ล็อกเครือข่ายไว้"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM ถูกล็อกด้วย PUK"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"ดูคู่มือผู้ใช้หรือติดต่อศูนย์บริการลูกค้า"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM ถูกล็อก"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"กำลังปลดล็อก SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"คุณวาดรูปแบบการปลดล็อกไม่ถูกต้องไป <xliff:g id="NUMBER_0">%1$d</xliff:g> ครั้งแล้ว\n\nโปรดลองอีกครั้งในอีก <xliff:g id="NUMBER_1">%2$d</xliff:g> วินาที"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"คุณพิมพ์รหัสผ่านไม่ถูกต้องไป <xliff:g id="NUMBER_0">%1$d</xliff:g> ครั้งแล้ว\n\nลองอีกครั้งใน <xliff:g id="NUMBER_1">%2$d</xliff:g> วินาที"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"คุณพิมพ์ PIN ไม่ถูกต้องไป <xliff:g id="NUMBER_0">%1$d</xliff:g> ครั้งแล้ว\n\nลองอีกครั้งใน <xliff:g id="NUMBER_1">%2$d</xliff:g> วินาที"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"ออกจากหน้านี้"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"อยู่ในหน้านี้"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nคุณแน่ใจไหมว่าต้องการออกจากหน้านี้"</string>
- <string name="save_password_label" msgid="9161712335355510035">"ยืนยัน"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"เคล็ดลับ: แตะสองครั้งเพื่อขยายและย่อ"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"ป้อนอัตโนมัติ"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"ค่าป้อนอัตโนมัติ"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"ป้อนข้อความอัตโนมัติโดยใช้ <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"จังหวัด"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"รหัสไปรษณีย์"</string>
- <string name="autofill_state" msgid="3341725337190434069">"รัฐ"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"รหัสไปรษณีย์"</string>
- <string name="autofill_county" msgid="7781382735643492173">"อำเภอ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"เกาะ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"เขต"</string>
- <string name="autofill_department" msgid="9047276226873531529">"แผนก"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"เขตปกครอง"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"เขตการปกครองท้องถิ่น"</string>
- <string name="autofill_area" msgid="8289022370678448983">"พื้นที่"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"เอมิเรต"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"อ่านบุ๊กมาร์กและประวัติเว็บของคุณ"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"อนุญาตให้แอปพลิเคชันอ่านประวัติของ URL ทั้งหมดที่เบราว์เซอร์เคยไป และบุ๊กมาร์กทั้งหมดของเบราว์เซอร์ หมายเหตุ: การอนุญาตนี้อาจไม่สามารถใช้งานได้กับเบราว์เซอร์ของบุคคลที่สามหรือแอปพลิเคชันอื่นๆ ที่มีความสามารถในการเรียกดูบนเว็บ"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"เขียนบุ๊กมาร์กและประวัติเว็บ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงประวัติหรือบุ๊กมาร์กของเบราว์เซอร์ที่จัดเก็บไว้ในแท็บเล็ต ซึ่งทำให้แอปพลิเคชันสามารถลบหรือเปลี่ยนข้อมูลเบราว์เซอร์ได้ หมายเหตุ: การอนุญาตนี้อาจไม่สามารถใช้งานได้กับเบราว์เซอร์ของบุคคลที่สามหรือแอปพลิเคชันอื่นๆ ที่มีความสามารถในการเรียกดูบนเว็บ"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"อนุญาตให้แอปแก้ไขประวัติการเข้าชมหรือบุ๊กมาร์กของเบราว์เซอร์ที่จัดเก็บไว้ในอุปกรณ์ Android TV ซึ่งอาจทำให้แอปลบหรือแก้ไขข้อมูลเบราว์เซอร์ได้ หมายเหตุ: สิทธิ์นี้อาจบังคับใช้กับเบราว์เซอร์ของบุคคลที่สามหรือแอปพลิเคชันอื่นๆ ที่มีความสามารถในการท่องเว็บไม่ได้"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"อนุญาตให้แอปพลิเคชันเปลี่ยนแปลงประวัติหรือบุ๊กมาร์กของเบราว์เซอร์ที่จัดเก็บไว้ในโทรศัพท์ ซึ่งทำให้แอปพลิเคชันสามารถลบหรือเปลี่ยนข้อมูลเบราว์เซอร์ได้ หมายเหตุ: การอนุญาตนี้อาจไม่สามารถใช้งานได้กับเบราว์เซอร์ของบุคคลที่สามหรือแอปพลิเคชันอื่นๆ ที่มีความสามารถในการเรียกดูบนเว็บ"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ตั้งปลุก"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"อนุญาตให้แอปพลิเคชันตั้งเวลาปลุกในแอปพลิเคชันนาฬิกาปลุกที่ติดตั้ง แอปพลิเคชันนาฬิกาปลุกบางรายการอาจไม่ใช้ฟีเจอร์นี้"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"เพิ่มข้อวามเสียง"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"อนุญาตให้แอปพลิเคชันเพิ่มข้อความลงในกล่องข้อความเสียงของคุณ"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"แก้ไขการอนุญาตเกี่ยวกับการระบุตำแหน่งทางภูมิศาสตร์ของเบราว์เซอร์"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"อนุญาตให้แอปพลิเคชันแก้ไขการอนุญาตตำแหน่งทางภูมิศาสตร์ของเบราว์เซอร์ แอปพลิเคชันที่เป็นอันตรายอาจใช้การอนุญาตนี้ในการส่งข้อมูลตำแหน่งไปยังเว็บไซต์ต่างๆ ได้ตามต้องการ"</string>
- <string name="save_password_message" msgid="2146409467245462965">"คุณต้องการให้เบราว์เซอร์จำรหัสผ่านนี้หรือไม่"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ยังไม่ใช้งานขณะนี้"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"จำไว้"</string>
- <string name="save_password_never" msgid="6776808375903410659">"ไม่ต้องเลย"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"คุณไม่ได้รับอนุญาตให้เปิดหน้าเว็บนี้"</string>
- <string name="text_copied" msgid="2531420577879738860">"คัดลอกข้อความไปยังคลิปบอร์ด"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"วาง <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> จาก <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> แล้ว"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ได้วางข้อมูลจากคลิปบอร์ดแล้ว"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางข้อความที่คุณคัดลอก"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางรูปภาพที่คุณคัดลอก"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางเนื้อหาที่คุณคัดลอก"</string>
<string name="more_item_label" msgid="7419249600215749115">"เพิ่มเติม"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"เมนู+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"คุณสามารถเปลี่ยนค่านี้ภายหลังในการตั้งค่า > แอปพลิเคชัน"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"อนุญาตทุกครั้ง"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"ไม่อนุญาตเลย"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"นำ SIM ออกแล้ว"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"เครือข่ายมือถือจะใช้งานไม่ได้จนกว่าคุณจะรีสตาร์ทโดยใส่ SIM ที่ถูกต้องแล้ว"</string>
<string name="sim_done_button" msgid="6464250841528410598">"เสร็จสิ้น"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"ใส่ SIM แล้ว"</string>
<string name="sim_added_message" msgid="6602906609509958680">"รีสตาร์ทอุปกรณ์ของคุณเพื่อเข้าถึงเครือข่ายมือถือ"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"รีสตาร์ท"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"เปิดใช้งานบริการมือถือ"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"ซิมการ์ดถูกปิดใช้งานแล้วในตอนนี้ ป้อนรหัส PUK เพื่อดำเนินการต่อ โปรดติดต่อผู้ให้บริการสำหรับรายละเอียด"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"ป้อนรหัส PIN ที่ต้องการ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"ยืนยันรหัส PIN ที่ต้องการ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"กำลังปลดล็อก SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"รหัส PIN ไม่ถูกต้อง"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"พิมพ์ PIN ซึ่งเป็นเลข 4 ถึง 8 หลัก"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"รหัส PUK ต้องเป็นตัวเลข 8 หลัก"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ลบ"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"นี่เป็นการเพิ่มระดับเสียงเกินระดับที่แนะนำ\n\nการฟังเสียงดังเป็นเวลานานอาจทำให้การได้ยินของคุณบกพร่องได้"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"คำเตือน\nคุณฟังสัญญาณเสียงดังเกินระดับที่ปลอดภัยเมื่อฟังผ่านหูฟังสำหรับ 1 สัปดาห์แล้ว\n\nการฟังที่เกินขีดจำกัดนี้จะทำให้การได้ยินของคุณบกพร่องอย่างถาวรได้"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"คำเตือน\nคุณฟังสัญญาณเสียงดังเกินระดับที่ปลอดภัยเมื่อฟังผ่านหูฟังสำหรับ 1 สัปดาห์ไป 5 เท่าแล้ว\n\nระบบได้ลดระดับเสียงลงเพื่อปกป้องการได้ยินของคุณ"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"ระดับที่คุณฟังสื่ออาจทำให้การได้ยินบกพร่องเมื่อฟังไปในระยะยาว\n\nการเล่นสื่อในระดับนี้ต่อไปเป็นเวลานานๆ อาจทำให้การได้ยินของคุณบกพร่องได้"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"คำเตือน\nขณะนี้คุณฟังเนื้อหาเสียงดังซึ่งเล่นในระดับที่ไม่ปลอดภัย\n\nการฟังเสียงดังระดับนี้ต่อไปจะทำให้การได้ยินของคุณบกพร่องอย่างถาวรได้"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ใช้ทางลัดการช่วยเหลือพิเศษไหม"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"เมื่อทางลัดเปิดอยู่ การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มนาน 3 วินาทีจะเริ่มฟีเจอร์การช่วยเหลือพิเศษ"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"เปิดใช้ทางลัดสำหรับฟีเจอร์การช่วยเหลือพิเศษใช่ไหม"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ปิดทางลัด"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ใช้ทางลัด"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"การกลับสี"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"การแก้สี"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"โหมดมือเดียว"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"หรี่แสงเพิ่มเติม"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว เปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"อนุญาตให้แอปที่ใช้ร่วมกันส่งข้อความที่ใช้ร่วมกันไปยังอุปกรณ์อื่นๆ"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"เริ่มการทำงานของบริการที่ทำงานอยู่เบื้องหน้าโดยให้อนุญาตจากเบื้องหลัง"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"อนุญาตจากเบื้องหลังให้แอปที่ใช้ร่วมกันเริ่มการทำงานของบริการที่ทำงานอยู่เบื้องหน้า"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"ไมโครโฟนพร้อมใช้งาน"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"ไมโครโฟนถูกบล็อก"</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 257fdd0..f4e79d7 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Hindi nagtutugma ang na-type mong mga PIN."</string>
<string name="invalidPin" msgid="7542498253319440408">"Mag-type ng PIN na 4 hanggang 8 numero."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Mag-type ng PUK na may 8 numbero o mas mahaba."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Na-PUK lock ang iyong SIM. I-type ang PUK code para i-unlock ito."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"I-type ang PUK2 para i-unblock ang SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Hindi matagumpay, i-enable ang SIM/RUIM Lock."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Mayroon kang <xliff:g id="NUMBER_1">%d</xliff:g> natitirang pagsubok bago ma-lock ang SIM.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Pinapayagan ang app na tapusin ang mga proseso sa background ng iba pang apps. Maaari itong maging sanhi ng paghinto sa paggana ng iba pang apps."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Maaaring lumabas ang app na ito sa ibabaw ng iba pang mga app"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Maaaring lumabas ang app na ito sa ibabaw ng iba pang mga app o iba pang mga bahagi ng screen. Maaaring makasagabal ito sa normal na paggamit ng app at mabago nito ang paraan kung paano lumalabas ang iba pang mga app."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"itago ang mga overlay ng ibang app"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Puwedeng hilingin ng app na ito na itago ng system ang mga overlay na nagmumula sa mga app at huwag ipakita ang mga ito sa ibabaw nito."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"patakbuhin sa background"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Maaaring tumakbo sa background ang app na ito. Maaaring mas mabilis nitong maubos ang baterya."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"gumamit ng data sa background"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Subukang muli"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"I-unlock para sa lahat ng feature at data"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Nalagpasan na ang maximum na mga pagtatangka sa Pag-unlock Gamit ang Mukha"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Walang SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Walang SIM sa tablet."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Walang SIM sa iyong Android TV device."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Walang SIM sa telepono."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Magdagdag ng SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Wala o hindi nababasa ang SIM. Magdagdag ng SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Hindi magagamit na SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"Permanenteng na-deactivate ang iyong SIM.\n Makipag-ugnayan sa iyong service provider ng wireless para sa isa pang SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Nakaraang track"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Susunod na track"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"I-pause"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"I-fast forward"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Mga pang-emergency na tawag lang"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Naka-lock ang network"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"Naka-PUK lock ang SIM."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Tingnan ang Gabay ng User o makipag-ugnay sa Pangangalaga sa Customer."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"Naka-lock ang SIM."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Ina-unlock ang SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Mali mong naguhit ang iyong pattern sa pag-unlock nang <xliff:g id="NUMBER_0">%1$d</xliff:g> (na) beses. \n\nSubukang muli sa loob ng <xliff:g id="NUMBER_1">%2$d</xliff:g> (na) segundo."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Na-type mo nang mali ang iyong password nang <xliff:g id="NUMBER_0">%1$d</xliff:g> (na) beses. \n\nSubukang muli sa loob ng <xliff:g id="NUMBER_1">%2$d</xliff:g> (na) segundo."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Na-type mo nang mali ang iyong PIN nang <xliff:g id="NUMBER_0">%1$d</xliff:g> (na) beses. \n\nSubukang muli sa loob ng <xliff:g id="NUMBER_1">%2$d</xliff:g> (na) segundo."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Umalis sa Pahinang ito"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Manatili sa Pahinang ito"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nSigurado ka bang gusto mong mag-navigate paalis sa pahinang ito?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Kumpirmahin"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Tip: Mag-double tap upang mag-zoom in at out."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Autofill"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"I-set up ang Autofill."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Mag-autofill gamit ang <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Lalawigan"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Postal code"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Estado"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP code"</string>
- <string name="autofill_county" msgid="7781382735643492173">"County"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Pulo"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Distrito"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Kagawaran"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefecture"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parokya"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Lugar"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"basahin ang iyong mga bookmark at kasaysayan sa Web"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Pinapayagan ang app na basahin ang kasaysayan ng lahat ng URL na binisita ng Browser, at lahat ng bookmark ng Browser. Tandaan: hindi maaaring ipatupad ang pahintulot na ito ng mga third-party na browser o iba pang mga application na may mga kakayahan sa pagba-browse sa web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"magsulat ng mga bookmark at kasaysayan sa web"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Pinapayagan ang app na baguhin ang kasaysayan o mga bookmark ng Browser na naka-imbak sa iyong tablet. Maaari nitong payagan ang app na burahin o baguhin ang data ng Browser. Tandaan: hindi maaaring ipatupad ang pahintulot na ito ng mga third-party na browser o iba pang mga application na may mga kakayahan sa pagba-browse sa web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Nagbibigay-daan sa app na baguhin ang history ng Browser o mga bookmark na naka-store sa iyong Android TV device. Posible itong magbigay-daan sa app na burahin o baguhin ang data ng Browser. Tandaan: posibleng hindi maipatupad ng mga browser ng third party o iba pang application na may kakahayang mag-browse sa web ang pahintulot na ito."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Pinapayagan ang app na baguhin ang kasaysayan o mga bookmark ng Browser na naka-imbak sa iyong telepono. Maaari nitong payagan ang app na burahin o baguhin ang data ng Browser. Tandaan: hindi maaaring ipatupad ang pahintulot na ito ng mga third-party na browser o iba pang mga application na may mga kakayahan sa pagba-browse sa web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"magtakda ng alarm"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Pinapayagan ang app na magtakda ng alarm sa isang naka-install na app ng alarm clock. Maaaring hindi ipatupad ng ilang apps ng alarm clock ang tampok na ito."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"magdagdag ng voicemail"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Pinapayagan ang app na magdagdag ng mga mensahe sa iyong inbox ng voicemail."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"baguhin ang mga pahintulot ng geolocation ng Browser"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Pinapayagan ang app na baguhin ang mga pahintulot sa geolocation ng Browser. Maaari itong gamitin ng nakakahamak na apps upang payagan ang pagpapadala ng impormasyon ng lokasyon sa mga hindi tukoy na web site."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Gusto mo bang tandaan ng browser ang password na ito?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Hindi ngayon"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Tandaan"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Hindi Kailanman"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Wala kang pahintulot na buksan ang pahinang ito."</string>
- <string name="text_copied" msgid="2531420577879738860">"Nakopya ang teksto sa clipboard."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Na-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> mula sa <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Na-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> mula sa iyong clipboard"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng text na nakopya mo"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng larawang nakopya mo"</string>
- <string name="pasted_content" msgid="646276353060777131">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng content na nakopya mo"</string>
<string name="more_item_label" msgid="7419249600215749115">"Higit pa"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Mapapalitan mo ito sa ibang pagkakataon sa Mga Setting > Apps"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Palaging Payagan"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Huwag kailanman Payagan"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Naalis ang SIM"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Hindi magiging available ang mobile network hanggang sa mag-restart ka gamit ang valid na SIM."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Tapos na"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Naidagdag ang SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"I-restart ang iyong device upang ma-access ang mobile network."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"I-restart"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"I-activate ang serbisyo sa mobile"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Hindi na pinagana ang SIM ngayon. Maglagay ng PUK code upang magpatuloy. Makipag-ugnay sa carrier para sa mga detalye."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Ilagay ang ninanais na PIN code"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Kumpirmahin ang ninanais na PIN code"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Ina-unlock ang SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Hindi tamang PIN code."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Mag-type ng PIN na 4 hanggang 8 numero."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"8 numero dapat ang PUK code."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Alisin"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Lakasan ang volume nang lagpas sa inirerekomendang antas?\n\nMaaaring mapinsala ng pakikinig sa malakas na volume sa loob ng mahahabang panahon ang iyong pandinig."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Babala,\nLumagpas ka na sa dami ng malalakas na signal ng tunog na ligtas na mapapakinggan ng isang tao sa isang linggo gamit ang headphones.\n\nPermanenteng makakapinsala sa iyong pandinig ang paglagpas sa limitasyong ito."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Babala,\nLumagpas ka na sa 5 beses ng dami ng malalakas na signal ng tunog na ligtas na mapapakinggan ng isang tao sa isang linggo gamit ang headphones.\n\nHininaan ang volume para protektahan ang iyong pandinig."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Puwedeng magresulta sa pinsala sa pandinig ang level ng pakikinig mo sa media kapag nagtagal pa ito nang mahabang panahon.\n\nPosibleng makapinsala sa iyong pandinig ang patuloy na pagpe-play sa level na ito sa loob ng mahabang panahon."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Babala,\nKasalukuyan kang nakikinig sa malakas na content na pine-play sa hindi ligtas na level.\n\nPosibleng permanenteng makapinsala sa iyong pandinig ang patuloy na pakikinig nang ganito kalakas."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gagamitin ang Shortcut sa Accessibility?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kapag naka-on ang shortcut, magsisimula ang isang feature ng pagiging naa-access kapag pinindot ang parehong button ng volume."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"I-on ang shortcut para sa mga feature ng pagiging naa-access?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"I-off ang Shortcut"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gamitin ang Shortcut"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Pag-invert ng Kulay"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Pagtatama ng kulay"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-Hand mode"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pinindot nang matagal ang volume keys. Na-on ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Nagbibigay-daan sa kasamang app na maghatid ng mga mensahe ng kasamang app sa iba pang device."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Magsimula ng mga serbisyo sa foreground mula sa background"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Nagbibigay-daan sa kasamang app na magsimula ng mga serbisyo sa foreground mula sa background."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Available ang mikropono"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Naka-block ang mikropono"</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 22bb998..ae38880 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Girdiğiniz PIN\'ler eşleşmiyor"</string>
<string name="invalidPin" msgid="7542498253319440408">"4 ila 8 rakamdan oluşan bir PIN girin."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 veya daha uzun basamaklı bir PUK kodu yazın."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM\'inizin PUK kilidi devrede. Kilidi açmak için PUK kodunu yazın."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM\'in engellemesini kaldırmak için PUK2 kodunu yazın."</string>
<string name="enablePin" msgid="2543771964137091212">"Başarısız. SIM/RUIM Kilidini etkinleştirin."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">SIM kilitlenmeden önce <xliff:g id="NUMBER_1">%d</xliff:g> deneme hakkınız kaldı.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Uygulamaya diğer uygulamalara ait arka plan işlemleri sonlandırma izni verir. Bu izin, diğer uygulamaların çalışmayı durdurmasına neden olabilir."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Bu uygulama, diğer uygulamaların üzerinde görünebilir"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Bu uygulama, uygulamaların üzerinde veya ekranın diğer kısımlarında görünebilir. Bu durum, normal uygulama kullanımını etkileyebilir ve diğer uygulamaların görünümünü değiştirebilir."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"diğer uygulamaların yer paylaşımlarını gizleme"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Bu uygulama, üzerinde gösterilen uygulamalardan kaynaklı yer paylaşımlarının sistem tarafından gizlenmesini isteyebilir."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"arka planda çalıştırma"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Bu uygulama arka planda çalıştırılabilir. Bu durum pilinizin daha hızlı boşalmasına neden olabilir."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"arka planda veri kullanma"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Tekrar deneyin"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Tüm özellikler ve veriler için kilidi açın"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Yüz Tanıma Kilidi için maksimum deneme sayısı aşıldı"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM yok"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Tablette SIM yok."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV cihazınızda SIM yok."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Telefonda SIM yok."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM ekleyin."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM yok veya okunamıyor. SIM ekleyin."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Kullanılamayan SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM\'iniz kalıcı olarak devre dışı bırakıldı.\n Başka bir SIM için kablosuz servis sağlayıcınızla iletişime geçin."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Önceki parça"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Sonraki parça"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Duraklat"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"İleri sar"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Yalnızca acil aramalar için"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Ağ kilitli"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM\'in PUK kilidi devrede."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Kullanıcı Rehberi\'ne bakın veya Müşteri Hizmetleri\'ne başvurun."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM kilitli."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM\'in kilidi açılıyor…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Kilit açma deseninizi <xliff:g id="NUMBER_0">%1$d</xliff:g> kez yanlış çizdiniz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> saniye içinde tekrar deneyin."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Şifrenizi <xliff:g id="NUMBER_0">%1$d</xliff:g> kez yanlış yazdınız. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> saniye içinde tekrar deneyin."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"PIN kodunuzu <xliff:g id="NUMBER_0">%1$d</xliff:g> kez yanlış girdiniz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> saniye içinde tekrar deneyin."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Bu Sayfadan Ayrıl"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Bu sayfada kal"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nBu sayfadan ayrılmak istediğinizden emin misiniz?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Onayla"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"İpucu: Yakınlaştırmak ve uzaklaştırmak için iki kez dokunun."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Otomatik Doldur"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Otomatik doldurma ayarla"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ile otomatik doldur"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Vilayet"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Posta kodu"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Eyalet"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Posta kodu"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Belde"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Ada"</string>
- <string name="autofill_district" msgid="6428712062213557327">"İlçe"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Bölüm"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"İdari Bölge"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Mahalle"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Alan"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirlik"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"Web yer işaretlerimi ve geçmişimi oku"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Uygulamaya Tarayıcının ziyaret ettiği tüm URL\'lerin geçmişini ve tüm Tarayıcı yer işaretlerini okuma izni verir. Not: Bu izin, üçüncü taraf tarayıcılar veya Web\'e göz atma işlevine sahip diğer uygulamalar tarafından kullanılmayabilir."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"web yer işaretlerine ve geçmişe yaz"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Uygulamaya Tarayıcı geçmişini ve tabletinizde depolanan yer işaretlerini değiştirme izni verir. Bu izin, uygulamanın Tarayıcı geçmişini silmesine ve değiştirmesine olanak sağlar. Not: Bu izin, üçüncü taraf cihazlar veya Web\'e göz atma işlevine sahip diğer uygulamalar tarafından kullanılmayabilir."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Uygulamaya, Android TV cihazınızda saklanan Tarayıcı geçmişini veya yer işaretlerini değiştirme izni verir. Bu izin, uygulamanın Tarayıcı verilerini silmesine veya değiştirmesine olanak sağlayabilir. Not: Bu iznin üçüncü taraf tarayıcılar veya web tarama özelliğine sahip diğer uygulamalar tarafından uygulanması zorunlu tutulamaz."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Uygulamaya Tarayıcı geçmişini ve telefonunuzda depolanan yer işaretlerini değiştirme izni verir. Bu izin, uygulamanın Tarayıcı geçmişini silmesine ve değiştirmesine olanak sağlar. Not: Bu izin, üçüncü taraf cihazlar veya Web\'e göz atma işlevine sahip diğer uygulamalar tarafından kullanılmayabilir."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"alarm ayarla"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Uygulamaya, çalar saat uygulamasının alarmını ayarlama izni verir. Bazı çalar saat uygulamaları bu özelliği uygulayamayabilir."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"sesli mesaj ekle"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Uygulamaya, sesli mesaj gelen kutunuza mesaj ekleme izni verir."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Tarayıcı\'nın coğrafi konum izinlerini değiştir"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Uygulamaya, Tarayıcı\'nın coğrafi konum izinlerini değiştirme izni verir. Kötü amaçlı uygulamalar keyfi web sitelerine konum bilgisi gönderilmesini sağlamak için bunu kullanabilirler."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Tarayıcının bu şifreyi anımsamasını istiyor musunuz?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Şimdi değil"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Anımsa"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Hiçbir zaman"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Bu sayfayı açma izniniz yok."</string>
- <string name="text_copied" msgid="2531420577879738860">"Metin panoya kopyalandı."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> uygulaması <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> kaynağından yapıştırdı"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, panonuzdakini yapıştırdı"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız metni yapıştırdı"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız resmi yapıştırdı"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız içeriği yapıştırdı"</string>
<string name="more_item_label" msgid="7419249600215749115">"Diğer"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menü+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Bu ayarı daha sonra Ayarlar > Uygulamalar\'dan değiştirebilirsiniz."</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Her Zaman İzin Ver"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Asla İzin Verme"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM kaldırıldı"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Geçerli bir SIM ile yeniden başlatana kadar mobil ağ kullanılamayacak."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Bitti"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM eklendi"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Mobil ağa erişmek için cihazınızı yeniden başlatın."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Yeniden başlat"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Mobil hizmeti etkinleştirin"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM kart artık devre dışı bırakıldı. Devam etmek için PUK kodunu girin. Ayrıntılı bilgi için operatörle bağlantı kurun."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"İstenen PIN kodunu girin"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"İstenen PIN kodunu onaylayın"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM\'in kilidi açılıyor…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Yanlış PIN kodu."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4-8 rakamdan oluşan bir PIN girin."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kodu 8 basamaklı bir sayı olmalıdır."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Kaldır"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ses seviyesi önerilen düzeyin üzerine yükseltilsin mi?\n\nUzun süre yüksek ses seviyesinde dinlemek işitme duyunuza zarar verebilir."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Uyarı,\nBir kullanıcının, bir hafta içinde kulaklıkla güvenle dinleyebileceği yüksek ses sinyali seviyesini aştınız.\n\nBu sınırın üzerine çıkılması, işitme duyunuzda kalıcı hasarlara neden olur."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Uyarı,\nBir kullanıcının, bir hafta içinde kulaklıkla güvenle dinleyebileceği yüksek ses sinyali seviyesini 5 kat aştınız.\n\nİşitme duyunuzu korumak için ses seviyesi düşürüldü."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Medyaları dinlediğiniz seviye, uzun süre bu şekilde devam ederse işitme duyusuna zarar verebilir.\n\nUzun süre bu seviyede dinlemeye devam ederseniz işitme duyunuz zarar görebilir."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Uyarı,\nŞu anda güvenli olmayan bir seviyede çalan içeriği yüksek sesle dinliyorsunuz.\n\nBu kadar yüksek sesle dinlemeye devam ederseniz işitme duyunuzda kalıcı hasar meydana gelebilir."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Erişilebilirlik Kısayolu Kullanılsın mı?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kısayol açıkken ses düğmelerinin ikisini birden 3 saniyeliğine basılı tutmanız bir erişilebilirlik özelliğini başlatır."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Erişilebilirlik özellikleri için kısayol açılsın mı?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Kısayolu Kapat"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kısayolu Kullan"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Rengi Ters Çevirme"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Renk düzeltme"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Tek El modu"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra loş"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> açıldı."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Tamamlayıcı uygulamanın diğer cihazlara tamamlayıcı mesajlar iletmesine izin verir."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Arka plandan ön plan hizmetleri başlatma"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Tamamlayıcı uygulamanın arka plandan ön plan hizmetlerini başlatmasına izin verir."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon kullanılabilir"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon engellenmiş"</string>
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index ed035da..27cf840 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Введені PIN-коди не збігаються."</string>
<string name="invalidPin" msgid="7542498253319440408">"Введіть PIN, який скл. з 4-8 цифр."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Введіть PUK-код із 8 або більше цифр."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM-карту заблоковано PUK-кодом. Введіть PUK-код, щоб розблокувати її."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Введіть PUK2-код, щоб розблокувати SIM-карту."</string>
<string name="enablePin" msgid="2543771964137091212">"Помилка. Увімкніть блокування SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">У вас залишилась <xliff:g id="NUMBER_1">%d</xliff:g> спроба. Після цього SIM-карту буде заблоковано.</item>
@@ -390,6 +388,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Дозволяє програмі припиняти фонові процеси інших програм. Це може зупиняти запущені програми."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Цей додаток може відображатися поверх інших додатків"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Цей додаток може відображатися поверх інших додатків або частин екрана. Це може заважати нормальній взаємодії з додатком або змінити відображення інших додатків."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"приховувати вікна з інших додатків"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Цей додаток може вимагати приховування системою вікон з інших додатків, щоб вони не відображалися поверх нього."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"працювати у фоновому режимі"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Цей додаток може працювати у фоновому режимі. Можливо, акумулятор розряджатиметься швидше."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"використовувати трафік у фоновому режимі"</string>
@@ -965,22 +965,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Повторіть спробу"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Розблокуйте, щоб бачити всі функції й дані"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Перевищено максимальну кількість спроб розблокування за допомогою функції \"Фейсконтроль\""</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Немає SIM-карти"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"У планшеті немає SIM-карти."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"У пристрої Android TV немає SIM-карти."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"У телефоні немає SIM-карти."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Додайте SIM-карту."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM-карта відсутня або недоступна для читання. Додайте SIM-карту."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Непридатна SIM-карта."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM-карту деактивовано назавжди.\n Щоб отримати іншу, зверніться до свого постачальника послуг бездротового зв’язку."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Попередня композиція"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Наступна композиція"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Пауза"</string>
@@ -990,13 +982,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Перемотати вперед"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Лише екстрені виклики"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Мережу заблок."</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM-карту заблоковано PUK-кодом."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Перегляньте посібник користувача чи зверніться до служби підтримки."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM-карту заблоковано."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Розблокування SIM-карти…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Ключ розблокування неправильно намальовано стільки разів: <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\nПовторіть спробу через <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Пароль неправильно введено стільки разів: <xliff:g id="NUMBER_0">%1$d</xliff:g>.\n\nПовторіть спробу через <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"PIN-код неправильно введено стільки разів: <xliff:g id="NUMBER_0">%1$d</xliff:g>.\n\nПовторіть спробу через <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
@@ -1069,50 +1058,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Полишити цю сторінку"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Залишитися на цій сторінці"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nСправді полишити цю сторінку?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Підтвердьте"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Порада: двічі торкніться для збільшення чи зменшення."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Автозап."</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Налашт.автозап."</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Автозаповнення: <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Провінція"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Поштовий код"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Штат"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Поштовий індекс"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Округ"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Острів"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Район"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Відділ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Префектура"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Община"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Область"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Емірат"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"читати веб-закладки й історію"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Дозволяє програмі читати історію URL-адрес, які відкривалися у веб-переглядачі, і всі закладки веб-переглядача. Зауважте: цей дозвіл не може застосовуватися веб-переглядачами третіх сторін або іншими програмами з можливостями веб-перегляду."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"писати у веб-закладки й історію"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Дозволяє програмі змінювати історію чи закладки веб-переглядача, збережені у вашому планшетному ПК. Це може дозволити програмі видаляти чи змінювати дані веб-переглядача. Зауважте: цей дозвіл не може застосовуватися веб-переглядачами третіх сторін або іншими програмами з можливостями веб-перегляду."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Дозволяє додатку змінювати історію або закладки веб-переглядача, збережені на вашому пристрої Android TV. Завдяки цьому додаток може стирати чи змінювати дані веб-переглядача. Примітка: цей дозвіл не може застосовуватися сторонніми веб-переглядачами або іншими додатками з можливостями веб-перегляду."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Дозволяє програмі змінювати історію чи закладки веб-переглядача, збережені у вашому телефоні. Це може дозволити програмі стирати чи змінювати дані веб-переглядача. Зауважте: цей дозвіл не може застосовуватися веб-переглядачами третіх сторін або іншими програмами з можливостями веб-перегляду."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"установлювати будильник"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Дозволяє програмі налаштовувати сигнал у встановленій програмі будильника. У деяких програмах будильника ця функція може не застосовуватися."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"додавати голосову пошту"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Дозволяє програмі додавати повідомлення в папку \"Вхідні\" голосової пошти."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"змінювати дозволи географічного місцезнаходження у веб-переглядачі"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Дозволяє програмі змінювати дозволи географічного місцезнаходження у веб-переглядачі. Шкідливі програми можуть використовувати це, щоб дозволяти надсилати інформацію про місцезнаходження довільним веб-сайтам."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Хочете, щоб переглядач запам\'ятав цей пароль?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Не зараз"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Запам\'ятати"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Ніколи"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"У вас немає дозволу на відкривання цієї сторінки."</string>
- <string name="text_copied" msgid="2531420577879738860">"Текст скопійов. в буф. обм."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"Дані з додатка <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> вставлено в <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"Дані з буфера обміну вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
- <string name="pasted_text" msgid="4298871641549173733">"Скопійований текст вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
- <string name="pasted_image" msgid="4729097394781491022">"Скопійоване зображення вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
- <string name="pasted_content" msgid="646276353060777131">"Скопійований контент вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
<string name="more_item_label" msgid="7419249600215749115">"Більше"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Меню+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1380,13 +1331,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Можна змінити згодом у Налаштування > Програми"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Завжди дозволяти"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ніколи не дозволяти"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM-карту вилучено"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Мобільна мережа буде недоступна, доки ви не вставите дійсну SIM-карту й не перезапустите пристрій."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Готово"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM-карту додано"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Перезапустіть пристрій, щоб отримати доступ до мобільної мережі."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Перезапустити"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Активувати мобільну службу"</string>
@@ -1698,8 +1646,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"Зараз SIM-карту вимкнено. Введіть PUK-код, щоб продовжити. Зв’яжіться з оператором, щоб дізнатися більше."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Введіть потрібний PIN-код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Підтвердьте потрібний PIN-код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Розблокування SIM-карти…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Неправильний PIN-код."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Введіть PIN-код із 4–8 цифр."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK-код має складатися з 8 цифр."</string>
@@ -1728,6 +1675,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Вилучити"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Збільшити гучність понад рекомендований рівень?\n\nЯкщо слухати надто гучну музику тривалий час, можна пошкодити слух."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Попередження.\nВи перевищили кількість гучних звукових сигналів, які протягом тижня можна безпечно слухати через навушники.\n\nПеревищення цього ліміту може назавжди пошкодити ваш слух."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Попередження.\nВи вп’ятеро перевищили кількість гучних звукових сигналів, які протягом тижня можна безпечно слухати через навушники.\n\nГучність знижено, щоб уберегти ваш слух."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Якщо довго слухати медіаконтент на цьому рівні гучності, можливі пошкодження слуху.\n\nЯкщо ви не знизите гучність, через деякий час ваш слух може погіршитись."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Попередження.\nНаразі ви слухаєте контент із небезпечним рівнем гучності.\n\nЯкщо надалі слухати так гучно, це може назавжди пошкодити ваш слух."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Використовувати швидке ввімкнення?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Якщо цей засіб увімкнено, ви можете активувати спеціальні можливості, утримуючи обидві кнопки гучності протягом трьох секунд."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Увімкнути засіб спеціальних можливостей?"</string>
@@ -1756,8 +1707,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Вимкнути ярлик"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Використовувати ярлик"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія кольорів"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Корекція кольору"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим керування однією рукою"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додаткове зменшення яскравості"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> увімкнено."</string>
@@ -2354,8 +2304,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Дозволяє супутньому додатку відображати власні повідомлення на інших пристроях."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Запускати активні сервіси у фоновому режимі"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Дозволяє супутньому додатку запускати активні сервіси у фоновому режимі."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Мікрофон доступний"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Мікрофон заблоковано"</string>
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 936a547..0acea52 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"آپ نے جو PINs ٹائپ کیے وہ مماثل نہیں ہیں۔"</string>
<string name="invalidPin" msgid="7542498253319440408">"4 سے 8 نمبرز والا ایک PIN ٹائپ کریں۔"</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 یا اس سے زیادہ نمبرز والا PUK ٹائپ کریں۔"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"آپ کا SIM PUK مقفل ہے۔ PUK کوڈ کو غیر مقفل کرنے کیلئے اسے ٹائپ کریں۔"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM کو غیر مسدود کرنے کے لیے PUK2 ٹائپ کریں۔"</string>
<string name="enablePin" msgid="2543771964137091212">"ناکام، SIM/RUIM لاک کو فعال کریں۔"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">آپ کے پاس <xliff:g id="NUMBER_1">%d</xliff:g> کوششیں بچی ہیں، اس کے بعد SIM مقفل ہو جائے گا۔</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"ایپ کو دوسرے ایپس کے پس منظر کی کارروائیوں کو ختم کرنے کی اجازت دیتا ہے۔ اس کی وجہ سے دوسرے ایپس کا چلنا بند ہوسکتا ہے۔"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"یہ ایپ دیگر ایپس کے اوپر ظاہر ہوسکتی ہے"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"یہ ایپ دیگر ایپس کے اوپر یا سکرین کے دیگر حصوں پر ظاہر ہو سکتی ہے۔ یہ عام ایپ کے استعمال کے ساتھ مداخلت کر سکتی ہے اور دیگر ایپس کے ظاہر ہونے کا طریقہ بدل سکتی ہے۔"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"دیگر ایپس کے اوورلیز چھپائیں"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"یہ ایپ سسٹم ایپس سے شروع ہونے والے اوورلیز کو اس کے اوپر دکھائے جانے سے چھپانے کی اجازت کی درخواست کر سکتی ہے۔"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"پس منظر میں چلائيں"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"یہ ایپ پس منظر میں چل سکتی ہے۔ ممکن ہے یہ بیٹری کو زیادہ تیزی سے ختم کر دے۔"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"پس منظر میں ڈیٹا استعمال کریں"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"دوبارہ کوشش کریں"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"تمام خصوصیات اور ڈیٹا کیلئے غیر مقفل کریں"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"فیس اَنلاک کی زیادہ سے زیادہ کوششوں سے تجاوز کرگیا"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"کوئی SIM نہیں ہے"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"ٹیبلیٹ میں کوئی SIM نہیں ہے۔"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"آپ کے Android TV آلے میں SIM نہیں ہے۔"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"فون میں کوئی SIM نہيں ہے۔"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"ایک SIM شامل کریں۔"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM غائب ہے یا پڑھنے لائق نہیں ہے۔ ایک SIM شامل کریں۔"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"ناقابل استعمال SIM۔"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"آپ کے SIM کو مستقل طور پر غیر فعال کر دیا گیا ہے۔\n کسی دوسرے SIM کیلئے اپنے وائرلیس سروس فراہم کنندہ سے رابطہ کریں۔"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"پچھلا ٹریک"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"اگلا ٹریک"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"موقوف کریں"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"تیزی سے فارورڈ کریں"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"صرف ہنگامی کالز"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"نیٹ ورک مقفل ہو گیا"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"آپ کا SIM PUK مقفل ہے۔"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"رہنمائے صارف دیکھیں یا کسٹمر کیئر سے رابطہ کریں۔"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM مقفل ہے۔"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM کو غیر مقفل کیا جا رہا ہے…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"آپ نے اپنا غیر مقفل کرنے کا پیٹرن <xliff:g id="NUMBER_0">%1$d</xliff:g> بار غلط طریقے سے ڈرا کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"آپ نے اپنا پاس ورڈ <xliff:g id="NUMBER_0">%1$d</xliff:g> بار غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"آپ نے <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اپنا PIN غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"یہ صفحہ چھوڑیں"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"اس صفحہ پر رہیں"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nکیا آپ واقعی اس صفحہ سے باہر نیویگیٹ کرنا چاہتے ہیں؟"</string>
- <string name="save_password_label" msgid="9161712335355510035">"تصدیق کریں"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"تجویز: زوم ان اور آؤٹ کیلئے دو بار تھپتھپائیں۔"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"آٹوفل"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"آٹوفل مقرر کریں"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> کے ساتھ آٹو فل کی سروس"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">"، "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"صوبہ"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"ڈاک کا کوڈ"</string>
- <string name="autofill_state" msgid="3341725337190434069">"ریاست"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"زپ کوڈ"</string>
- <string name="autofill_county" msgid="7781382735643492173">"کاؤنٹی"</string>
- <string name="autofill_island" msgid="5367139008536593734">"آئیلینڈ"</string>
- <string name="autofill_district" msgid="6428712062213557327">"ضلع"</string>
- <string name="autofill_department" msgid="9047276226873531529">"شعبہ"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"انتظامی حلقہ"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"پیرش"</string>
- <string name="autofill_area" msgid="8289022370678448983">"علاقہ"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"امارات"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"اپنے ویب بُک مارکس اور سرگزشت کو پڑھیں"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"ایپ کو براؤزر کے ملاحظہ کردہ سبھی URLs اور براؤزر کے سبھی بک مارکس کی سرگزشت پڑھنے کی اجازت دیتا ہے۔ نوٹ: یہ اجازت تیسرے فریق کے براؤزرز یا ویب براؤزنگ کی لیاقتوں والی دوسری ایپلیکیشنز کے ذریعہ نافذ نہیں کی جاسکتی ہے۔"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"ویب بُک مارکس اور سرگزشت لکھیں"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"ایپ کو آپ کے ٹیبلٹ پر اسٹور کردہ براؤزر کی سرگزشت یا بک مارکس میں ترمیم کرنے کی اجازت دیتا ہے۔ یہ ایپ کو براؤزر کا ڈیٹا مٹانے یا اس میں ترمیم کرنے کی اجازت دے سکتا ہے۔ نوٹ: یہ اجازت تیسرے فریق کے براؤزرز یا ویب براؤزنگ کی لیاقتوں والی دیگر ایپلیکیشنز کے ذریعہ نافذ نہیں کی جاسکتی ہے۔"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"ایپ کو آپ کے Android TV آلہ پر اسٹور کردہ براؤزر کی سرگزشت یا بُک مارکس میں ترمیم کرنے کی اجازت دیتا ہے۔ یہ ایپ کو براؤزر کا ڈیٹا مٹانے یا اس میں ترمیم کرنے کی اجازت دے سکتا ہے۔ نوٹ: یہ اجازت تیسرے فریق کے براؤزرز یا ویب براؤزنگ کی اہلیتوں والی دیگر ایپلیکیشنز کے ذریعہ نافذ نہیں کی جا سکتی ہے۔"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"ایپ کو آپ کے فون پر اسٹور کردہ براؤزر کی سرگزشت یا بک مارکس میں ترمیم کرنے کی اجازت دیتا ہے۔ یہ ایپ کو براؤزر کا ڈیٹا مٹانے یا اس میں ترمیم کرنے کی اجازت دے سکتا ہے۔ نوٹ: یہ اجازت تیسرے فریق کے براؤزرز یا ویب براؤزنگ کی لیاقتوں والی دیگر ایپلیکیشنز کے ذریعہ نافذ نہیں کی جاسکتی ہے۔"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"ایک الارم سیٹ کریں"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"ایپ کو ایک انسٹال کردہ الارم گھڑی کی ایپ میں ایک الارم سیٹ کرنے کی اجازت دیتا ہے۔ الارم گھڑی کی کچھ ایپس اس خصوصیت کو نافذ نہیں کر سکتی ہیں۔"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"صوتی میل شامل کریں"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"ایپ کو آپ کے صوتی میل کے ان باکس میں پیغامات شامل کرنے کی اجازت دیتا ہے۔"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"براؤزر کی جغرافیائی مقام کی اجازتوں میں ترمیم کریں"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"ایپ کو براؤزر کی جغرافیائی مقام کی اجازتوں میں ترمیم کرنے کی اجازت دیتا ہے۔ نقصان دہ ایپس متنازعہ ویب سائٹس پر مقام کی معلومات بھیجنے کی اجازت دینے کیلئے اس کا استعمال کر سکتی ہیں۔"</string>
- <string name="save_password_message" msgid="2146409467245462965">"کیا آپ چاہتے ہیں کہ براؤزر اس پاس ورڈ کو یاد رکھے؟"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"ابھی نہیں"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"یاد رکھیں"</string>
- <string name="save_password_never" msgid="6776808375903410659">"کبھی نہیں"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"آپ کے پاس یہ صفحہ کھولنے کی اجازت نہیں ہے۔"</string>
- <string name="text_copied" msgid="2531420577879738860">"متن کو کلپ بورڈ پر کاپی کیا گیا۔"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> سے <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> میں پیسٹ کیا گیا"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کے کلپ بورڈ سے پپیسٹ کر دیا"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کا کاپی کردہ ٹیکسٹ پیسٹ کر دیا"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کی کاپی کردہ ایک تصویر پیسٹ کر دی"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کا کاپی کردہ مواد پیسٹ کر دیا"</string>
<string name="more_item_label" msgid="7419249600215749115">"مزید"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"مینو+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"آپ اسے ترتیبات > ایپس میں تبدیل کرسکتے ہیں"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"ہمیشہ اجازت دیں"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"کبھی بھی اجازت نہ دیں"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM کو ہٹا دیا گیا"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"جب تک آپ ایک درست SIM کے ساتھ ری اسٹارٹ نہیں کر لیتے، تب تک موبائل نیٹ ورک غیر دستیاب ہوگا۔"</string>
<string name="sim_done_button" msgid="6464250841528410598">"ہو گیا"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM شامل کیا گیا"</string>
<string name="sim_added_message" msgid="6602906609509958680">"موبائل نیٹ ورک تک رسائی کیلئے اپنا آلہ دوبارہ سٹارٹ کریں۔"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"ری سٹارٹ"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"موبائل سروس فعال کریں"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM اب غیر فعال ہوگیا ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"پسندیدہ PIN کوڈ درج کریں"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"پسندیدہ PIN کوڈ کی توثیق کریں"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM کو غیر مقفل کیا جا رہا ہے…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"غلط PIN کوڈ۔"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"ایسا PIN ٹائپ کریں جو 4 تا 8 نمبرز کا ہو۔"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK کوڈ 8 نمبرز کا ہونا چاہئے۔"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ہٹائیں"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"والیوم کو تجویز کردہ سطح سے زیادہ کریں؟\n\nزیادہ وقت تک اونچی آواز میں سننے سے آپ کی سماعت کو نقصان پہنچ سکتا ہے۔"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"وارننگ،\nآپ بلند آواز کے سگنلز کی حد سے تجاوز کر چکے ہیں جنہیں ایک ہفتے میں کوئی ہیڈ فونز پر محفوظ طریقے سے سن سکتا ہے۔\n\nاس حد سے تجاوز کرنے سے آپ کی سماعت کو مستقل طور پر نقصان پہنچے گا۔"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"وارننگ،\nآپ بلند آواز کے سگنلز کی حد سے 5 گنا تجاوز کر چکے ہیں جنہیں ایک ہفتے میں کوئی ہیڈ فونز پر محفوظ طریقے سے سن سکتا ہے۔\n\nآپ کی سماعت کی حفاظت کے لیے والیوم کو کم کر دیا گیا ہے۔"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"جس سطح پر آپ میڈیا کو سن رہے ہیں اس پر طویل عرصے تک برقرار رہنے کے نتیجے میں سماعت کو نقصان پہنچ سکتا ہے۔\n\nاس سطح پر طویل عرصے تک چلانے سے آپ کی سماعت کو نقصان پہنچ سکتا ہے۔"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"وارننگ،\nآپ فی الحال غیر محفوظ سطح پر چلائے گئے مواد کو بلند آواز میں سن رہے ہیں۔\n\nاس بلند آواز کو مسلسل سننے سے آپ کی سماعت کو مستقل طور پر نقصان پہنچے گا۔"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ایکسیسبیلٹی شارٹ کٹ استعمال کریں؟"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"شارٹ کٹ آن ہونے پر، 3 سیکنڈ تک دونوں والیوم بٹنز کو دبانے سے ایک ایکسیسبیلٹی خصوصیت شروع ہو جائے گی۔"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"ایکسیسبیلٹی خصوصیات کے لیے شارٹ کٹ آن کریں؟"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"شارٹ کٹ آف کریں"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"شارٹ کٹ استعمال کریں"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"رنگوں کی تقلیب"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"رنگ کی اصلاح"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ایک ہاتھ کی وضع"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"اضافی مدھم"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آن ہے۔"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"ساتھی ایپ کو دوسرے آلات پر ساتھی پیغامات ڈیلیور کرنے کی اجازت دیتی ہے۔"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"پس منظر سے پیش منظر کی سروسز شروع کریں"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"ساتھی ایپ کو پس منظر سے پیش منظر کی سروسز شروع کرنے کی اجازت دیتی ہے۔"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"مائیکروفون دستیاب ہے"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"مائیکروفون مسدود ہے"</string>
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 71ab3e4..e30baba 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Siz kiritgan PIN-kodlar bir-biriga mos kelmadi."</string>
<string name="invalidPin" msgid="7542498253319440408">"4 tadan 8 tagacha bo‘lgan PIN kodni kiriting."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 ta yoki ko‘proq bo‘lgan PUK kodni kiriting."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM karta PUK kod bilan qulflangan. Uni qulfdan chiqarish uchun PUK kodni tering."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"SIM kartani blokdan chiqarish uchun PUK2 kodni tering."</string>
<string name="enablePin" msgid="2543771964137091212">"Ishlamadi, SIM/RUIM qulfni yoqish."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Yana <xliff:g id="NUMBER_1">%d</xliff:g> ta muvaffaqiyatsiz urinishdan so‘ng SIM karta qulflanadi.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Ilovaga boshqa ilovalarning orqa fonda amalga oshirilayotgan jarayonlarini to‘xtatish uchun ruxsat beradi. Bu boshqa ilovalarning to‘xtatilishiga sabab bo‘lishi mumkin."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Bu ilova boshqa oynalar ustidan ko‘rsatilishi mumkin"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Bu ilova ilovalar yoki ekranning boshqa qismlaridan yuqorida ko‘rinishi mumkin. Bu ilovadan odatiy foydalanishga halaqit berishi va boshqa ilovalar ko‘rinishining usullarini o‘zgartirib yuborishi mumkin."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"boshqa ilovalar overleylarini berkitish"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Bu ilova uning ustidan ochilgan ilovalardan keladigan overleylarni berkitishni tizimdan talab qila oladi."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"orqa fonda ishlaydi"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Bu ilova orqa fonda ham ishlaydi. Bunda batareya quvvati ko‘proq sarflanishi mumkin."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"orqa fonda internetdan foydalanadi"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Qaytadan urining"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Barcha funksiya va ma’lumotlar uchun qulfdan chiqaring"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Yuz bilan ochishga urinish miqdoridan oshib ketdi"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"SIM kartasiz"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Planshetda SIM karta topilmadi."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV qurilmasida SIM karta topilmadi."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Telefonda SIM karta topilmadi."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"SIM karta qoʻshish."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM karta topilmadi yoki oʻqilmadi. SIM karta qoʻshish."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"Ishlamaydigan SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM karta butunlay faolsizlantirildi.\n Boshqa SIM karta olish uchun simsiz aloqa operatoriga murojaat qiling."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Avvalgi musiqa"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Keyingi musiqa"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"To‘xtatib turish"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Oldinga o‘tkazish"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Faqat favqulodda chaqiruvlar"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Tarmoq qulflangan"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM karta PUK kod bilan qulflangan."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Foydalanuvchi qo‘llanmasiga qarang yoki Abonentlarni qo‘llab-quvvatlash markaziga murojaat qiling."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM karta qulflandi."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"SIM karta qulfdan chiqarilmoqda…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urining."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Siz parolni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urining."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Siz PIN-kodni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri kiritdingiz. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan so‘ng qayta urining."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Ushbu sahifani tark etish"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Ushbu sahifada qolish"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nUshbu sahifani rostdan tark etmoqchimisiz?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Tasdiqlash"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Maslahat: kattalashtirish va kichiklashtirish uchun ikki marta bosing."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Avtomatik to‘ldirish"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Avto-to‘ldirishni sozlash"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> yordamida avtomatik kiritish"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Provinsiya (viloyat)"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Pochta kodi"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Shtat"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"ZIP kod"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Davlat"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Orol"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Rayon"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Departament"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Prefektura"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parish"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Hudud"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Amirliklar"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"veb xatcho‘plari va tarixni o‘qish"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Ilovaga brauzer orqali kirilgan barcha manzillar tarixi va brauzer xatcho‘plarini o‘qish uchun ruxsat beradi. Diqqat qiling: ushbu ruxsat uchinchi taraf brauzerlari yoki internetni ko‘rsatish qobiliyatiga ega boshqa ilovalardan talab qilinmasligi mumkin."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"veb xatcho‘plar va tarixga yozish"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Ilovaga planshetingizga zaxiralangan brauzer tarixi yoki xatcho‘plarini o‘zgartirish uchun ruxsat beradi. Bu ilovaga brauzer ma’lumotlarini o‘zgartirish yoki o‘chirishga ruxsat berishi mumkin. Diqqat qiling: ushbu ruxsat uchinchi taraf brauzerlari yoki internetni ko‘rsatish qobiliyatiga ega boshqa ilovalardan talab qilinmasligi mumkin."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Ilovaga Android TV qurilmangizga saqlangan brauzer tarixi yoki bukmarklarni tahrirlash huquqini beradi. Buning yordamida ilova brauzer maʼlumotlarini tozalashi yoki oʻzgartirishi mumkin. Eslatma: ushbu ruxsatnoma uchinchi tomon brauzerlari yoki veb-sahifalarni koʻrsatish imkoniyatiga ega boshqa ilovalar tomonidan ishlatilmasligi mumkin."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Ilovaga telefoningizga zaxiralangan brauzer tarixi yoki xatcho‘plarini o‘zgartirish uchun ruxsat beradi. Bu ilovaga brauzer ma’lumotlarini o‘zgartirish yoki o‘chirishga ruxsat berishi mumkin. Diqqat qiling: ushbu ruxsat uchinchi taraf brauzerlari yoki internetni ko‘rsatish qobiliyatiga ega boshqa ilovalardan talab qilinmasligi mumkin."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"signal o‘rnatish"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Ilova uyg‘otkichni sozlashi mumkin. Ba’zi soat ilovalari ushbu funksiyani qo‘llab-quvvatlamasligi mumkin."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"ovozli xat qo‘shish"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Ilova xabarlarni ovozli pochta qutingizga qo‘shishi mumkin."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"brauzerdagi geolokatsiya ma’lumotlariga kirish huquqini o‘zgartirish"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Ilova brauzerdagi geolokatsiya ma’lumotlariga kirish sozlamalarini o‘zgartirishi mumkin. Zararli dasturlar uning yordamida joylashuv to‘g‘risidagi ma’lumotlarni boshqa istalgan veb-saytga yuborishi mumkin."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Brauzer ushbu parolni eslab qolishini xohlaysizmi?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Hozir emas"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Eslab qolgich"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Hech qachon"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Sizda ushbu sahifani ochish uchun vakolat yo‘q."</string>
- <string name="text_copied" msgid="2531420577879738860">"Matn klipboardga nusxa olindi."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ilovasidan <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> joylandi"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vaqtinchalik xotiradan joyladi"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan matnni joyladi"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan rasmni joyladi"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan kontentni joyladi"</string>
<string name="more_item_label" msgid="7419249600215749115">"Yana"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Menyu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Buni keyinroq Sozlamalar > Ilovalar menyusidan o‘zgartirishingiz mumkin"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Doim ruxsat"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ruxsat berilmasin"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"SIM karta olindi"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Yaroqli SIM karta joylanib, qurilma qayta ishga tushmasa, mobil tarmoq ishlamaydi."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Tayyor"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"SIM karta qoʻshildi"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Uyali tarmoqqa ulanish uchun qurilmangizni o‘chirib-yoqing."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Qayta ishga tushirish"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Mobil xizmatni faollashtirish"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM karta hozir o‘chirilgan. Davom etish uchun PUK kodni kiriting. To‘liqroq ma’lumot olish uchun tarmoq operatori bilan bog‘laning."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"So‘ralgan PIN kodni kiriting"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"So‘ralgan PIN kodni tasdiqlang"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"SIM karta qulfdan chiqarilmoqda…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Xato PIN kodi."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4 tadan 8 ta raqamgacha bo‘lgan PIN kodni kiriting."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kod 8 ta raqam bo‘lishi shart."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Olib tashlash"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Tovush balandligi tavsiya etilgan darajadan ham yuqori qilinsinmi?\n\nUzoq vaqt davomida baland ovozda tinglash eshitish qobiliyatingizga salbiy ta’sir ko‘rsatishi mumkin."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Ogohlantirish\nQuloqlik orqali bir hafta ichida xavfsiz tinglash mumkin boʻlgan baland ovozli signallar miqdoridan oshib ketdingiz.\n\nBu chegaradan oshib ketish eshitish qobiliyatingizni butunlay buzadi."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Ogohlantirish\nQuloqlik orqali bir hafta ichida xavfsiz tinglash mumkin boʻlgan baland ovozli signallar miqdoridan 5 baravar oshib ketdingiz.\n\nEshitish qobiliyatingizni himoya qilish uchun tovush balandligi pasaytirildi."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Uzoq vaqt davomida bunday balandlikda media fayllarni tinglash eshitish qobiliyatingiz buzilishiga olib kelishi mumkin.\n\nUzoq vaqt davomida bu darajada ijroni davom ettirish eshitishingizga zarar yetkazishi mumkin."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Ogohlantirish\nHozir xavfli darajada baland ovozli kontentni tinglayapsiz.\n\nBu baland tovushda tinglashda davom etsangiz, eshitish qobiliyatingiz butunlay buziladi."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Tezkor ishga tushirishdan foydalanilsinmi?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Maxsus imkoniyatlar funksiyasidan foydalanish uchun u yoniqligida ikkala tovush tugmasini 3 soniya bosib turing."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Maxsus imkoniyatlar uchun tezkor tugma yoqilsinmi?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Tezkor ishga tushirishni o‘chirib qo‘yish"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tezkor ishga tushirishdan foydalanish"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Ranglarni akslantirish"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Ranglarni tuzatish"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Ixcham rejim"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Juda xira"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> yoqildi."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Hamroh ilovaga boshqa qurilmalarga hamroh xabarlarni yetkazib berishga ruxsat beradi."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Faol xizmatlarni fonda ishga tushirish"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Hamroh ilovaga faol xizmatlarni fonda ishga tushirishga ruxsat beradi."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Mikrofon yoqildi"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Mikrofon bloklandi"</string>
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 3ead629..b589b24 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Mã PIN bạn đã nhập không khớp."</string>
<string name="invalidPin" msgid="7542498253319440408">"Nhập mã PIN có từ 4 đến 8 số."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Nhập PUK có từ 8 số trở lên."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM của bạn đang bị khoá PUK. Hãy nhập mã PUK để mở khoá."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Hãy nhập mã PUK2 để mở khoá SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Không thành công, kích hoạt tính năng khóa SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">Bạn còn <xliff:g id="NUMBER_1">%d</xliff:g> lần thử trước khi SIM bị khóa.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Cho phép ứng dụng kết thúc các quá trình nền của các ứng dụng khác. Việc này có thể khiến các ứng dụng khác dừng chạy."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Ứng dụng này có thể xuất hiện ở phía trên cùng của các ứng dụng khác"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Ứng dụng này có thể xuất hiện ở phía trên cùng của các ứng dụng khác hoặc các phần khác của màn hình. Điều này có thể cản trở hoạt động sử dụng ứng dụng thông thường và thay đổi cách các ứng dụng khác xuất hiện."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"ẩn lớp phủ của các ứng dụng khác"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Ứng dụng này có thể yêu cầu hệ thống ẩn lớp phủ của các ứng dụng khác để các lớp phủ đó không hiển thị trên ứng dụng này."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"chạy trong nền"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Ứng dụng này có thể chạy trong nền. Việc này có thể tiêu hao pin nhanh hơn."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"sử dụng dữ liệu trong nền"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Thử lại"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Mở khóa đối với tất cả các tính năng và dữ liệu"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Đã vượt quá số lần Mở khóa bằng khuôn mặt tối đa"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Không có SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Không có SIM nào trong máy tính bảng."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Không có SIM nào trong thiết bị Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Không có SIM nào trong điện thoại."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"Hãy thêm SIM."</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"Không tìm thấy hoặc không đọc được SIM. Hãy thêm SIM."</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM không sử dụng được."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM của bạn đã bị vô hiệu hoá vĩnh viễn.\n Hãy liên hệ với nhà cung cấp dịch vụ viễn thông không dây của bạn để yêu cầu cấp SIM khác."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Bản nhạc trước"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Bản nhạc tiếp theo"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Tạm dừng"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Tua đi"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Chỉ cuộc gọi khẩn cấp"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Mạng đã khóa"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM này đang bị khoá PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Vui lòng xem Hướng dẫn người dùng hoặc liên hệ với Bộ phận chăm sóc khách hàng."</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM này đang bị khoá."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Đang mở khoá SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Bạn đã <xliff:g id="NUMBER_0">%1$d</xliff:g> lần vẽ không chính xác hình mở khóa. \n\nVui lòng thử lại sau <xliff:g id="NUMBER_1">%2$d</xliff:g> giây."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Bạn đã <xliff:g id="NUMBER_0">%1$d</xliff:g> lần nhập sai mật khẩu. \n\nHãy thử lại sau <xliff:g id="NUMBER_1">%2$d</xliff:g> giây."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Bạn đã nhập sai mã PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> lần. \n\nHãy thử lại sau <xliff:g id="NUMBER_1">%2$d</xliff:g> giây."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Rời khỏi trang này"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Ở lại trang này"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nBạn có chắc chắn muốn điều hướng khỏi trang này không?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Xác nhận"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Mẹo: Nhấn đúp để phóng to và thu nhỏ."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Tự động điền"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Thiết lập Tự động điền"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Tự động điền với <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Tỉnh"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Mã bưu chính"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Tiểu bang"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Mã ZIP"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Hạt"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Đảo"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Quận"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Khu hành chính"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Quận"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Giáo xứ"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Khu vực"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Tiểu vương quốc Ả rập"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"đọc lịch sử và dấu trang Web của bạn"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Cho phép ứng dụng đọc tất cả các URL mà Trình duyệt đã truy cập và tất cả các dấu trang của Trình duyệt. Lưu ý: quyền này có thể không được thực thi bằng trình duyệt của bên thứ ba hoặc các ứng dụng khác có khả năng duyệt web."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"viết lịch sử và dấu trang web của bạn"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Cho phép ứng dụng sửa đổi lịch sử hoặc dấu trang của Trình duyệt được lưu trữ trên máy tính bảng của bạn. Việc này có thể cho phép ứng dụng xóa hoặc sửa đổi dữ liệu của Trình duyệt. Lưu ý: quyền này có thể không được thực thi bởi các trình duyệt của bên thứ ba hoặc các ứng dụng khác có khả năng duyệt web."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Cho phép ứng dụng sửa đổi lịch sử hoặc dấu trang của Trình duyệt mà bạn lưu trữ trên thiết bị Android TV. Quyền này có thể cho phép ứng dụng xóa hoặc sửa đổi dữ liệu trên Trình duyệt. Lưu ý: các trình duyệt của bên thứ ba hoặc các ứng dụng khác có khả năng duyệt web có thể không thực thi quyền này."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Cho phép ứng dụng sửa đổi lịch sử hoặc dấu trang của Trình duyệt được lưu trữ trên điện thoại của bạn. Việc này có thể cho phép ứng dụng xóa hoặc sửa đổi dữ liệu của Trình duyệt. Lưu ý: quyền này có thể không được thực thi bởi các trình duyệt của bên thứ ba hoặc các ứng dụng khác có khả năng duyệt web."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"đặt báo thức"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Cho phép ứng dụng đặt báo thức trong ứng dụng đồng hồ báo thức được cài đặt. Một số ứng dụng đồng hồ báo thức có thể không thực thi tính năng này."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"thêm thư thoại"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Cho phép ứng dụng thêm thông báo vào hộp thư thoại đến của bạn."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"sửa đổi các quyền về vị trí địa lý của Trình duyệt"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Cho phép ứng dụng sửa đổi cấp phép vị trí địa lý của Trình duyệt. Ứng dụng độc hại có thể lợi dụng quyền này để cho phép gửi thông tin vị trí tới các trang web tùy ý."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Bạn có muốn trình duyệt nhớ mật khẩu này không?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Để sau"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Nhớ"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Chưa bao giờ"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Bạn không được phép mở trang này."</string>
- <string name="text_copied" msgid="2531420577879738860">"Đã sao chép văn bản vào bảng nhớ tạm thời."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán dữ liệu từ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán dữ liệu từ bảng nhớ tạm của bạn"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán văn bản mà bạn sao chép"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán một hình ảnh mà bạn sao chép"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán nội dung mà bạn sao chép"</string>
<string name="more_item_label" msgid="7419249600215749115">"Thêm"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Trình đơn+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Bạn có thể thay đổi cài đặt này sau trong Cài đặt > Ứng dụng"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Luôn cho phép"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Không bao giờ cho phép"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"Đã xoá SIM"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"Bạn sẽ không dùng được mạng di động cho đến khi khởi động lại bằng một SIM hợp lệ."</string>
<string name="sim_done_button" msgid="6464250841528410598">"Xong"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"Đã thêm SIM"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Khởi động lại thiết bị của bạn để truy cập mạng di động."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Khởi động lại"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Kích hoạt dịch vụ di động"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM hiện bị vô hiệu hóa. Nhập mã PUK để tiếp tục. Liên hệ với nhà cung cấp dịch vụ để biết chi tiết."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Nhập mã PIN mong muốn"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Xác nhận mã PIN mong muốn"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Đang mở khoá SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Mã PIN không chính xác."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Nhập mã PIN có từ 4 đến 8 số."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Mã PUK phải có 8 số."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Xóa"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Bạn tăng âm lượng lên quá mức khuyên dùng?\n\nViệc nghe ở mức âm lượng cao trong thời gian dài có thể gây tổn thương thính giác của bạn."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Cảnh báo,\nBạn đã vượt quá số lần nghe tín hiệu âm thanh lớn mà một người có thể nghe an toàn qua tai nghe trong một tuần.\n\nNếu vượt quá giới hạn này, thính lực của bạn sẽ bị tổn thương vĩnh viễn."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Cảnh báo,\nBạn đã vượt quá 5 lần nghe tín hiệu âm thanh lớn mà một người có thể nghe an toàn qua tai nghe trong một tuần.\n\nÂm lượng đã được giảm xuống để bảo vệ thính lực của bạn."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Mức âm lượng bạn đang nghe nội dung nghe nhìn có thể gây tổn thương thính lực khi duy trì trong thời gian dài.\n\nNếu bạn tiếp tục phát ở mức âm lượng này trong thời gian dài, thì thính lực của bạn có thể bị tổn thương."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Cảnh báo,\nBạn đang nghe nội dung ở mức âm lượng không an toàn.\n\nNếu bạn tiếp tục nghe ở mức âm lượng lớn như vậy, thì thính lực của bạn sẽ bị tổn thương vĩnh viễn."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Sử dụng phím tắt Hỗ trợ tiếp cận?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Khi phím tắt này đang bật, thao tác nhấn cả hai nút âm lượng trong 3 giây sẽ mở tính năng hỗ trợ tiếp cận."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Bật phím tắt cho các tính năng hỗ trợ tiếp cận?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Tắt phím tắt"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sử dụng phím tắt"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Đảo màu"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Chỉnh màu"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Chế độ một tay"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Siêu tối"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã bật."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Cho phép một ứng dụng đồng hành gửi thông báo đồng hành đến các thiết bị khác."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Bắt đầu các dịch vụ trên nền trước từ nền"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Cho phép một ứng dụng đồng hành bắt đầu các dịch vụ trên nền trước từ nền."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Micrô đang hoạt động"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Micrô đang bị chặn"</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 551f5e6..a0ede11 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"您输入的PIN码不一致。"</string>
<string name="invalidPin" msgid="7542498253319440408">"输入一个4至8位数的PIN码。"</string>
<string name="invalidPuk" msgid="8831151490931907083">"请输入至少8位数字的PUK码。"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"您的 SIM 卡已用 PUK 码锁定。请输入 PUK 码将其解锁。"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"请输入 PUK2 码以解锁 SIM 卡。"</string>
<string name="enablePin" msgid="2543771964137091212">"失败,请开启 SIM/RUIM 卡锁定设置。"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">您还可尝试 <xliff:g id="NUMBER_1">%d</xliff:g> 次。如果仍不正确,SIM 卡将被锁定。</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"允许该应用结束其他应用的后台进程。此权限可导致其他应用停止运行。"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"此应用可显示在其他应用上方"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"此应用可显示在其他应用上方或屏幕的其他部分。这可能会妨碍您正常地使用应用,且其他应用的显示方式可能会受到影响。"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"隐藏来自其他应用的叠加内容"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"此应用可请求系统隐藏来自其他应用的叠加内容,以免这些内容显示在此应用之上。"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"在后台运行"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"此应用可在后台运行,这样可能会加快耗电速度。"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"在后台使用数据"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"重试"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"解锁即可使用所有功能和数据"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"已超过“人脸解锁”尝试次数上限"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"没有 SIM 卡"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"平板电脑中没有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"您的 Android TV 设备中没有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"手机中没有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"请插入 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"SIM 卡缺失或无法读取。请插入 SIM 卡。"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM 卡无法使用。"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"您的 SIM 卡已被永久停用。\n请与您的无线服务提供商联系,以便重新获取一张 SIM 卡。"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"上一首"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"下一曲"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"暂停"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"快进"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"只能拨打紧急呼救电话"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"网络已锁定"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM 卡已用 PUK 码锁定。"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"请参阅《用户指南》或与客服人员联系。"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM 卡已被锁定。"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"正在解锁 SIM 卡…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"您已连续 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次画错解锁图案。\n\n请在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒后重试。"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"您已连续 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次输错密码。\n\n请在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒后重试。"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"您已经<xliff:g id="NUMBER_0">%1$d</xliff:g>次输错了PIN码。\n\n请在<xliff:g id="NUMBER_1">%2$d</xliff:g>秒后重试。"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"离开此页"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"留在此页"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\n您确定要离开此页面吗?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"确认"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"提示:点按两次可放大或缩小。"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"自动填充"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"设置自动填充"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g>的自动填充功能"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"省/直辖市/自治区"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"邮编"</string>
- <string name="autofill_state" msgid="3341725337190434069">"州"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"邮编"</string>
- <string name="autofill_county" msgid="7781382735643492173">"郡"</string>
- <string name="autofill_island" msgid="5367139008536593734">"岛"</string>
- <string name="autofill_district" msgid="6428712062213557327">"地区"</string>
- <string name="autofill_department" msgid="9047276226873531529">"省"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"县/府/都/道"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"行政区"</string>
- <string name="autofill_area" msgid="8289022370678448983">"区域"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"酋长国"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"读取您的网络书签和历史记录"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"允许该应用读取浏览器访问过的所有网址记录以及浏览器的所有书签。请注意:此权限可能不适用于第三方浏览器或具备网页浏览功能的其他应用。"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"写入网络书签和历史记录"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"允许该应用修改您平板电脑上存储的浏览器历史记录或浏览器书签。此权限可让该应用清除或修改浏览器数据。请注意:此权限可能不适用于第三方浏览器或具备网页浏览功能的其他应用。"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"允许应用修改 Android TV 设备上存储的浏览器历史记录或书签。此权限可让该应用清空或修改浏览器数据。请注意:此权限可能不适用于第三方浏览器或具备网页浏览功能的其他应用。"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"允许该应用修改您手机上存储的浏览器历史记录或浏览器书签。此权限可让该应用清除或修改浏览器数据。请注意:此权限可能不适用于第三方浏览器或具备网页浏览功能的其他应用。"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"设置闹钟"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"允许应用在已安装的闹钟应用中设置闹钟。有些闹钟应用可能无法实现此功能。"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"添加语音信息"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"允许应用在您的语音信箱中留言。"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"修改“浏览器”地理位置的权限"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"允许应用修改“浏览器”的地理位置权限。恶意应用可能借此向任意网站发送位置信息。"</string>
- <string name="save_password_message" msgid="2146409467245462965">"是否希望浏览器记住此密码?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"暂不保存"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"记住"</string>
- <string name="save_password_never" msgid="6776808375903410659">"永不"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"您无权打开此网页。"</string>
- <string name="text_copied" msgid="2531420577879738860">"文本已复制到剪贴板。"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴从<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>复制的内容"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"已将剪贴板中的内容粘贴到<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string>
- <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的文字"</string>
- <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的图片"</string>
- <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的内容"</string>
<string name="more_item_label" msgid="7419249600215749115">"更多"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"MENU+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"之后,您可以在“设置”>“应用”中更改此设置"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"始终允许"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"永不允许"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"已取出 SIM 卡"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"移动网络不可用,请插入有效的 SIM 卡并重新启动。"</string>
<string name="sim_done_button" msgid="6464250841528410598">"完成"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"已插入 SIM 卡"</string>
<string name="sim_added_message" msgid="6602906609509958680">"请重新启动您的设备,以便访问移动网络。"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"重新启动"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"激活移动网络服务"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM卡已被停用,需要输入PUK码才能继续使用。有关详情,请联系您的运营商。"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"请输入所需的PIN码"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"请确认所需的PIN码"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"正在解锁 SIM 卡…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN码有误。"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"请输入4至8位数的PIN码。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK码应包含8位数字。"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"删除"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要将音量调高到建议的音量以上吗?\n\n长时间保持高音量可能会损伤听力。"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"警告!\n您在一周内使用头戴式耳机收听的高分贝音频量已超出安全范围限值。\n\n继续超限收听会导致您的听力永久受损。"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"警告!\n您在一周内使用头戴式耳机收听的高分贝音频量已超出安全范围限值的 5 倍。\n\n为保护您的听力,系统已调低音量。"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"长时间以当前音量收听媒体可能会导致听力受损。\n\n如果您继续以这样的音量长时间播放,则可能会损害您的听力。"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"警告!\n当前的内容播放音量已超出安全范围限值。\n\n继续以这样的音量收听会导致您的听力永久受损。"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用无障碍快捷方式吗?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"启用这项快捷方式后,同时按下两个音量按钮 3 秒钟即可启动无障碍功能。"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"要开启无障碍功能快捷方式吗?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"关闭快捷方式"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快捷方式"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"颜色反转"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"色彩校正"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"单手模式"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"极暗"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已开启。"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"允许配套应用向其他设备发送配套消息。"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"从后台启动前台服务"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"允许配套应用从后台启动前台服务。"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"麦克风可用"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"麦克风已被屏蔽"</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 2b3480d..3fcf138 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"您輸入的 PIN 碼不符。"</string>
<string name="invalidPin" msgid="7542498253319440408">"請輸入一個 4 至 8 位數的 PIN。"</string>
<string name="invalidPuk" msgid="8831151490931907083">"輸入 8 位數以上的 PUK。"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM 卡已使用 PUK 鎖定,請輸入 PUK 解鎖。"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"請輸入 PUK2 解鎖 SIM 卡。"</string>
<string name="enablePin" msgid="2543771964137091212">"操作失敗,請啟用「SIM/RUIM 鎖定」。"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">您還有 <xliff:g id="NUMBER_1">%d</xliff:g> 次機會輸入。如果仍然輸入錯誤,SIM 卡將會被鎖定。</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"允許應用程式終止其他應用程式的背景處理程序。這樣可能會導致其他應用程式停止運行。"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"此應用程式可以出現在其他應用程式上"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"此應用程式可以出現在其他應用程式或螢幕的其他部分上。這可能會影響應用程式的正常使用,並變更其他應用程式的顯示方式。"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"隱藏其他應用程式的重疊視窗"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"此應用程式可要求系統隱藏其他應用程式顯示在上方的重疊內容。"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"在背景中執行"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"此應用程式可在背景中執行,這可能會加速耗電。"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"在背景中使用數據"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"再試一次"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"解鎖即可使用所有功能和資料"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"已超過面孔解鎖嘗試次數上限"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"沒有 SIM 卡"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"平板電腦中沒有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV 裝置中沒有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"手機中沒有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"請新增 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"找不到 SIM 卡或 SIM 卡無法讀取,請新增 SIM 卡。"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM 卡無法使用。"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM 卡已永久停用。\n請向無線服務供應商索取其他 SIM 卡。"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"上一首曲目"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"下一首曲目"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"暫停"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"向前快轉"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"只可撥打緊急電話"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"網絡已鎖定"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM 卡已使用 PUK 鎖定。"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"請參閱使用者指南或與客戶服務中心聯絡。"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM 卡已鎖定。"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"正在解鎖 SIM 卡…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"您已畫錯解鎖圖案 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後再試一次。"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"您已輸入錯誤的密碼 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後再試一次。"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"您已輸入錯誤的 PIN 碼 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後再試一次。"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"離開這一頁"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"停留在這一頁"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\n您確定要離開這個網頁嗎?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"確認"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"提示:輕按兩下即可放大縮小。"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"自動填入"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"設定自動填入功能"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> 的自動填入功能"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"省"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"郵遞區號"</string>
- <string name="autofill_state" msgid="3341725337190434069">"州"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"郵遞區號"</string>
- <string name="autofill_county" msgid="7781382735643492173">"郡"</string>
- <string name="autofill_island" msgid="5367139008536593734">"島"</string>
- <string name="autofill_district" msgid="6428712062213557327">"地區"</string>
- <string name="autofill_department" msgid="9047276226873531529">"部門"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"都/道/府/縣"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"教區"</string>
- <string name="autofill_area" msgid="8289022370678448983">"地區"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"酋長國"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"讀取您的網上書籤和記錄"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"允許應用程式讀取瀏覽器到訪過的所有網址記錄,以及瀏覽器的所有書籤。注意:這項權限可能不適用於第三方瀏覽器或其他具備網頁瀏覽功能的應用程式。"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"寫入網上書籤和記錄"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"允許應用程式修改平板電腦上儲存的瀏覽器記錄或書籤。如此一來,應用程式或可清除或修改瀏覽器資料。注意:這項權限可能不適用於第三方瀏覽器或其他具備網頁瀏覽功能的應用程式。"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"允許應用程式修改儲存在 Android TV 裝置上的瀏覽器記錄或書籤。這可能允許該應用程式清除或修改瀏覽器資料。請注意:這項權限可能不適用於第三方瀏覽器或其他具備網絡瀏覽功能的應用程式。"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"允許應用程式修改手機上儲存的瀏覽器記錄或書籤。如此一來,應用程式或可清除或修改瀏覽器資料。注意:這項權限可能不適用於第三方瀏覽器或其他具備網頁瀏覽功能的應用程式。"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"設定鬧鐘"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"允許應用程式在安裝的鬧鐘應用程式中設定鬧鐘,某些鬧鐘應用程式可能沒有這項功能。"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"新增留言"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"允許應用程式將訊息加到您的留言信箱收件箱。"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"修改瀏覽器地理資訊的權限"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"允許應用程式修改瀏覽器的地理資訊權限。惡意應用程式可能會藉此允許將您的位置資訊任意傳送給某些網站。"</string>
- <string name="save_password_message" msgid="2146409467245462965">"您要瀏覽器記住此密碼嗎?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"暫時不要"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"記住"</string>
- <string name="save_password_never" msgid="6776808375903410659">"永遠不要"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"您沒有開啟這個頁面的權限。"</string>
- <string name="text_copied" msgid="2531420577879738860">"文字已複製到剪貼簿。"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 已貼上從 <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> 複製的資料"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」已貼上剪貼簿內容"</string>
- <string name="pasted_text" msgid="4298871641549173733">"您複製的文字已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string>
- <string name="pasted_image" msgid="4729097394781491022">"您複製的圖片已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string>
- <string name="pasted_content" msgid="646276353060777131">"您複製的內容已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string>
<string name="more_item_label" msgid="7419249600215749115">"更多"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"選單鍵 +"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"您日後可以在 [設定] > [應用程式] 中更改這項設定"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"一律允許"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"絕不允許"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"已移除 SIM 卡"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"您必須重新啟動並新增有效的 SIM 卡,才能使用流動網絡。"</string>
<string name="sim_done_button" msgid="6464250841528410598">"完成"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"已新增 SIM 卡"</string>
<string name="sim_added_message" msgid="6602906609509958680">"重新啟動裝置,才能使用流動網絡。"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"重新啟動"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"啟動流動服務"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM 卡現已停用,請輸入 PUK 碼以繼續。詳情請與流動網絡供應商聯絡。"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"輸入所需的 PIN 碼"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"確認所需的 PIN 碼"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"正在解鎖 SIM 卡…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN 碼不正確。"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"請輸入一個 4 至 8 位數的 PIN 碼。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK 碼應由 8 位數字組成。"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"移除"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要調高音量 (比建議的音量更大聲) 嗎?\n\n長時間聆聽高分貝音量可能會導致您的聽力受損。"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"警告:\n您於一週內使用耳機聆聽的高分貝音訊量已超過安全範圍\n\n繼續此行為將導致聽力永久受損。"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"警告:\n您於一週內使用耳機聆聽的高分貝音訊量已超過安全範圍 5 倍。\n\n為保護您的聽力,系統已調低音量。"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"目前的媒體播放音量在長時間聆聽下可能會損害聽力。\n\n如繼續以此音量播放內容,長時間可能導致聽力受損。"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"警告:\n目前的內容播放音量已超過安全聆聽範圍。\n\n繼續聆聽此音量將導致聽力永久受損。"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用無障礙功能快速鍵嗎?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"啟用快速鍵後,同時按住音量按鈕 3 秒便可啟用無障礙功能。"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"要開啟無障礙功能捷徑嗎?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"關閉快速鍵"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快速鍵"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"色彩校正"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已開啟。"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"允許隨附應用程式傳送隨附訊息至其他裝置。"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"從背景啟動前景服務"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"允許隨附應用程式從背景啟動前景服務。"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"可以使用麥克風"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"已封鎖麥克風"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index e8e1382..69e8c13 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"你輸入的 PIN 碼不符。"</string>
<string name="invalidPin" msgid="7542498253319440408">"輸入 4~8 個數字的 PIN。"</string>
<string name="invalidPuk" msgid="8831151490931907083">"輸入 8 位數以上的 PUK。"</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"SIM 卡已使用 PUK 碼鎖定,請輸入 PUK 碼解鎖。"</string>
+ <string name="needPuk2" msgid="3910763547447344963">"請輸入 PUK2 解鎖 SIM 卡。"</string>
<string name="enablePin" msgid="2543771964137091212">"操作失敗,請啟用 SIM/RUIM 鎖定。"</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="other">你還可以再試 <xliff:g id="NUMBER_1">%d</xliff:g> 次。如果仍然失敗,SIM 卡將被鎖定。</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"允許應用程式終止其他應用程式的背景處理程序。這項設定可能會導致其他應用程式停止執行。"</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"這個應用程式可顯示在其他應用程式上方"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"這個應用程式可顯示在其他應用程式上方或畫面中的其他位置。你可能會無法照常使用應用程式,且其他應用程式的顯示方式可能會受到影響。"</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"隱藏其他應用程式的疊加內容"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"該應用程式可以要求系統隱藏其他應用程式顯示在上方的疊加內容。"</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"在背景執行"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"這個應用程式可在背景執行,這樣可能導致耗電速度加快。"</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"在背景使用行動數據連線"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"再試一次"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"解鎖即可使用所有功能和資料"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"已超過人臉解鎖嘗試次數上限"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"沒有 SIM 卡"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"平板電腦中沒有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Android TV 裝置中沒有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"手機中沒有 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"請新增 SIM 卡。"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"找不到 SIM 卡或 SIM 卡無法讀取,請新增 SIM 卡。"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"SIM 卡無法使用。"</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"SIM 卡已永久停用。\n 請向無線服務供應商索取其他 SIM 卡。"</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"上一首曲目"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"下一首曲目"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"暫停"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"快轉"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"僅可撥打緊急電話"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"網路已鎖定"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"SIM 卡已使用 PUK 碼鎖定。"</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"參閱《使用者指南》或與客戶服務中心聯絡。"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"SIM 卡已鎖定。"</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"正在解鎖 SIM 卡…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"你的解鎖圖案已畫錯 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後再試一次。"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"你的密碼已輸錯 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後再試一次。"</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"你的 PIN 已輸錯 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後再試一次。"</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"離開這一頁"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"停留在這一頁"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\n你確定要前往其他網頁瀏覽嗎?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"確認"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"提示:輕觸兩下即可縮放。"</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"自動填入功能"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"設定自動填入功能"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> 的自動填入功能"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" //*** Empty segment here as a separator ***//"</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"省"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"郵遞區號"</string>
- <string name="autofill_state" msgid="3341725337190434069">"州/省"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"郵遞區號"</string>
- <string name="autofill_county" msgid="7781382735643492173">"縣/市"</string>
- <string name="autofill_island" msgid="5367139008536593734">"島"</string>
- <string name="autofill_district" msgid="6428712062213557327">"行政區"</string>
- <string name="autofill_department" msgid="9047276226873531529">"省"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"縣"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"教區"</string>
- <string name="autofill_area" msgid="8289022370678448983">"區"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"大公國"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"讀取你的網路書籤和記錄"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"允許應用程式讀取瀏覽器造訪過的所有網址記錄,以及瀏覽器的所有書籤。注意:這項權限不適用於第三方瀏覽器或其他具備網頁瀏覽功能的應用程式。"</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"寫入網路書籤和記錄"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"允許應用程式修改平板電腦上儲存的瀏覽記錄或書籤。這項設定會讓應用程式具有清除或修改瀏覽資料的權限。注意:這項權限不適用於第三方瀏覽器或其他具備網頁瀏覽功能的應用程式。"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"允許應用程式修改 Android TV 裝置上儲存的瀏覽器歷史記錄或書籤。應用程式可能會因此取得清除或修改瀏覽器資料的權限。注意:這項權限可能不適用於第三方瀏覽器或其他具備網路瀏覽功能的應用程式。"</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"允許應用程式修改手機上儲存的瀏覽記錄或書籤。這項設定會讓應用程式具有清除或修改瀏覽資料的權限。注意:這項權限不適用於第三方瀏覽器或其他具備網頁瀏覽功能的應用程式。"</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"設定鬧鐘"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"允許應用程式在安裝的鬧鐘應用程式中設定鬧鐘,某些鬧鐘應用程式可能無法執行這項功能。"</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"新增語音留言"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"允許應用程式將訊息新增至你的語音信箱收件匣。"</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"修改瀏覽器地理資訊的權限"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"允許應用程式修改瀏覽器的地理位置權限。請注意,惡意應用程式可能利用此功能允許將你的位置資訊任意傳送給某些網站。"</string>
- <string name="save_password_message" msgid="2146409467245462965">"是否記住此密碼?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"現在不要"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"記住"</string>
- <string name="save_password_never" msgid="6776808375903410659">"永不"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"你沒有開啟這個頁面的權限。"</string>
- <string name="text_copied" msgid="2531420577879738860">"文字已複製到剪貼簿。"</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」已貼上從「<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>」複製的資料"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"已將剪貼簿內容貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string>
- <string name="pasted_text" msgid="4298871641549173733">"你複製的文字已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string>
- <string name="pasted_image" msgid="4729097394781491022">"你複製的圖片已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string>
- <string name="pasted_content" msgid="646276353060777131">"你複製的內容已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string>
<string name="more_item_label" msgid="7419249600215749115">"更多"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"[Menu] +"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta +"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"你日後可在 [設定] > [應用程式] 中進行變更。"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"一律允許"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"一律不允許"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"已移除 SIM 卡"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"你必須重新啟動並新增有效的 SIM 卡,才能使用行動網路。"</string>
<string name="sim_done_button" msgid="6464250841528410598">"完成"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"已新增 SIM 卡"</string>
<string name="sim_added_message" msgid="6602906609509958680">"請重新啟動裝置,才能使用行動網路。"</string>
<string name="sim_restart_button" msgid="8481803851341190038">"重新啟動"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"啟用行動服務"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM 卡已遭停用,必須輸入 PUK 碼才能繼續使用。詳情請洽你的電信業者。"</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"輸入所需的 PIN 碼"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"確認所需的 PIN 碼"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"正在解鎖 SIM 卡…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"PIN 碼不正確。"</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"請輸入 4 到 8 碼的 PIN。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK 碼必須為 8 碼。"</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"移除"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要調高音量,比建議的音量更大聲嗎?\n\n長時間聆聽高分貝音量可能會使你的聽力受損。"</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"警告:\n你在一週內使用耳罩式耳機聆聽的高分貝音訊量已超過安全範圍。\n\n繼續這個行為將導致聽力永久受損。"</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"警告:\n你在一週內使用耳罩式耳機聆聽的高分貝音訊量已超過安全範圍 5 倍。\n\n為了保護你的聽力,系統已調低音量。"</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"目前的媒體播放音量在長時間聆聽下可能會損害聽力。\n\n如果繼續以這個音量播放內容,長時間可能導致聽力受損。"</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"警告:\n目前的內容播放音量已超過安全聆聽範圍。\n\n繼續聆聽這個音量將導致聽力永久受損。"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用無障礙捷徑嗎?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"啟用捷徑功能,只要同時按下兩個音量按鈕 3 秒,就能啟動無障礙功能。"</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"要開啟無障礙功能快速鍵嗎?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"停用捷徑"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用捷徑"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"色彩校正"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已開啟。"</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"允許隨附應用程式將自身產生的訊息傳送給其他裝置。"</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"從背景啟動前景服務"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"允許隨附應用程式從背景啟動前景服務。"</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"麥克風已可使用"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"麥克風已封鎖"</string>
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index d8306be..789f5c4 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -43,10 +43,8 @@
<string name="mismatchPin" msgid="2929611853228707473">"Ama-PIN owafakile awafani."</string>
<string name="invalidPin" msgid="7542498253319440408">"Thayipha i-PIN enezinombolo ezingu-4 kuya kwezingu-8."</string>
<string name="invalidPuk" msgid="8831151490931907083">"Thayipha i-PUK enezinombolo ezingu-8 noma ngaphezu."</string>
- <!-- no translation found for needPuk (3503414069503752211) -->
- <skip />
- <!-- no translation found for needPuk2 (3910763547447344963) -->
- <skip />
+ <string name="needPuk" msgid="3503414069503752211">"Ikhadi lakho le-SIM livalwe nge-PUK. Thayipha ikhodi ye-PUK ukulivula."</string>
+ <string name="needPuk2" msgid="3910763547447344963">"Thayipha i-PUK2 ukuze uvule i-SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Akuphumelelanga, nika amandla ukhiye we-SIM/RUIM."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
<item quantity="one">Unemizamo engu-<xliff:g id="NUMBER_1">%d</xliff:g> esele ngaphambi kokuthi i-SIM ikhiywe.</item>
@@ -388,6 +386,8 @@
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"Ivumela uhelo lokusebenza ukuqeda izinqubo zangokwasemuva zezinhlelo zokusebenza. Lokhu kungababangela ezinye izinhlelo zokusebenza ukuyeka ukusebenza."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"Lolu hlelo lokusebenza lungabonakala phezu kwezinhlelo zokusebenza"</string>
<string name="permdesc_systemAlertWindow" msgid="1145660714855738308">"Lolu hlelo lokusebenza lungabonakala phezu kwezinye izinhlelo zokusebenza noma ezinye izingxenye zesikrini. Lokhu kungaphazamisana nokusebenza okuvamile kohlelo lokusebenza futhi kushintshe indlela ezinye izinhlelo zokusebenza zibonakala ngakhona."</string>
+ <string name="permlab_hideOverlayWindows" msgid="6382697828482271802">"fihla ezinye izimbondela zama-app"</string>
+ <string name="permdesc_hideOverlayWindows" msgid="5660242821651958225">"Le app ingacela ukuthi isistimu ifihle izimbondela ezivela kuma-app ukuthi zingaboniswa phezu kwayo."</string>
<string name="permlab_runInBackground" msgid="541863968571682785">"isebenza ngasemuva"</string>
<string name="permdesc_runInBackground" msgid="4344539472115495141">"Lolu hlelo lokusebenza lungaqalisa ngasemuva. Lokhu kungaqeda ibhethri lakho ngokushesha."</string>
<string name="permlab_useDataInBackground" msgid="783415807623038947">"sebenzisa idatha ngasemuva"</string>
@@ -963,22 +963,14 @@
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"Zama futhi"</string>
<string name="lockscreen_storage_locked" msgid="634993789186443380">"Vulela zonke izici nedatha"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"Ukuzama Kokuvula ngobuso sekweqe umkhawulo"</string>
- <!-- no translation found for lockscreen_missing_sim_message_short (1229301273156907613) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3986843848305639161) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (3903140876952198273) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_message (6184187634180854181) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions (5823469004536805423) -->
- <skip />
- <!-- no translation found for lockscreen_missing_sim_instructions_long (4403843937236648032) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_message_short (1925200607820809677) -->
- <skip />
- <!-- no translation found for lockscreen_permanent_disabled_sim_instructions (6902979937802238429) -->
- <skip />
+ <string name="lockscreen_missing_sim_message_short" msgid="1229301273156907613">"Ayikho i-SIM"</string>
+ <string name="lockscreen_missing_sim_message" product="tablet" msgid="3986843848305639161">"Ayikho i-SIM kuthebhulethi."</string>
+ <string name="lockscreen_missing_sim_message" product="tv" msgid="3903140876952198273">"Alikho ikhadi le-SIM card kudivayisi yakho ye-Android TV."</string>
+ <string name="lockscreen_missing_sim_message" product="default" msgid="6184187634180854181">"Ayikho i-SIM efonini."</string>
+ <string name="lockscreen_missing_sim_instructions" msgid="5823469004536805423">"engeza i-SIM"</string>
+ <string name="lockscreen_missing_sim_instructions_long" msgid="4403843937236648032">"I-SIM ayitholakali noma ayifundeki. engeza i-SIM"</string>
+ <string name="lockscreen_permanent_disabled_sim_message_short" msgid="1925200607820809677">"I-SIM engasebenziseki."</string>
+ <string name="lockscreen_permanent_disabled_sim_instructions" msgid="6902979937802238429">"I-SIM yakho iyekiswe ukusebenza unomphela.\n Xhumana nomhlinzeki wakho wesevisi ngokungenazintambo ukuze uthole enye i-SIM."</string>
<string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"Ithrekhi yangaphambilini"</string>
<string name="lockscreen_transport_next_description" msgid="2931509904881099919">"Ithrekhi elandelayo"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"Misa isikhashana"</string>
@@ -988,13 +980,10 @@
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"Ukudlulisa ngokushesha"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"Amakholi aphuthumayo kuphela"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"Inethiwekhi ivaliwe"</string>
- <!-- no translation found for lockscreen_sim_puk_locked_message (2867953953604224166) -->
- <skip />
+ <string name="lockscreen_sim_puk_locked_message" msgid="2867953953604224166">"I-SIM ikhiyiwe nge-PUK."</string>
<string name="lockscreen_sim_puk_locked_instructions" msgid="5307979043730860995">"Sicela ubone Isiqondisi Somsebenzisi noma xhumana Nokunakekela Ikhasimende"</string>
- <!-- no translation found for lockscreen_sim_locked_message (5911944931911850164) -->
- <skip />
- <!-- no translation found for lockscreen_sim_unlock_progress_dialog_message (8381565919325410939) -->
- <skip />
+ <string name="lockscreen_sim_locked_message" msgid="5911944931911850164">"I-SIM ikhiyiwe."</string>
+ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="8381565919325410939">"Ivula i-SIM…"</string>
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Udwebe iphathini yakho yokuvula ngendlela engafanele izinkathi ezingu-<xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\n Zama futhi emuva kwamasekhondi angu-<xliff:g id="NUMBER_1">%2$d</xliff:g>"</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Ubhale iphasiwedi yakho ngendlela engafanele <xliff:g id="NUMBER_0">%1$d</xliff:g> izikhathi. \n\nZama futhi <xliff:g id="NUMBER_1">%2$d</xliff:g> imizuzwna."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Ubhale i-PIN ykho ngendlela engafanele <xliff:g id="NUMBER_0">%1$d</xliff:g> izikhathi. \n\nZama futhi emuva kwamasekhondi angu-<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
@@ -1067,50 +1056,12 @@
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Phuma kuleli khasi"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Hlala kuleli khasi"</string>
<string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nIngabe uqinisekile ukuthi ufuna ukuzulazulela ngokuphuma kuleli khasi?"</string>
- <string name="save_password_label" msgid="9161712335355510035">"Qinisekisa"</string>
- <string name="double_tap_toast" msgid="7065519579174882778">"Ithiphu: thepha kabili ukusondeza ngaphandle nangaphakathi."</string>
- <string name="autofill_this_form" msgid="3187132440451621492">"Ukugcwalisa Ngokuzenzakalelayo"</string>
- <string name="setup_autofill" msgid="5431369130866618567">"Misa i-Autofill"</string>
<string name="autofill_window_title" msgid="4379134104008111961">"Gcwalisa ngokuzenzakalela nge-<xliff:g id="SERVICENAME">%1$s</xliff:g>"</string>
- <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string>
- <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string>
- <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string>
- <string name="autofill_address_summary_format" msgid="8417010069362125194">"$1$2$3"</string>
- <string name="autofill_province" msgid="3676846437741893159">"Isifunda"</string>
- <string name="autofill_postal_code" msgid="7034789388968295591">"Ikhodi yeposi"</string>
- <string name="autofill_state" msgid="3341725337190434069">"Izwe"</string>
- <string name="autofill_zip_code" msgid="1315503730274962450">"Ikhodi ye-ZIP"</string>
- <string name="autofill_county" msgid="7781382735643492173">"Izwe"</string>
- <string name="autofill_island" msgid="5367139008536593734">"Island"</string>
- <string name="autofill_district" msgid="6428712062213557327">"Isifunda"</string>
- <string name="autofill_department" msgid="9047276226873531529">"Umnyango"</string>
- <string name="autofill_prefecture" msgid="7267397763720241872">"Isifunda"</string>
- <string name="autofill_parish" msgid="6847960518334530198">"Parish"</string>
- <string name="autofill_area" msgid="8289022370678448983">"Indawo"</string>
- <string name="autofill_emirate" msgid="2544082046790551168">"Emirate"</string>
- <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"funda amabhukhimakhi akho ewebhu kanye nomlando"</string>
- <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Ivumela uhlelo lokusebenza ukufunda umlando wawo onke ama-URL isiphequluli esiwavakashele, nawo onke amabhukhimaki esiphequluli. Qaphela: le mvume ngeke iphoqelelwe iziphequluli ezivela eceleni noma ezinye izinhlelo zokusebenza ezinamandla okuphequlula iwebhu."</string>
- <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"bhala amabhukhimakhi ewebhu kanye nomlando"</string>
- <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Ivumela uhlelo lokusebenza ukushintsha umlando wamabhukhimakhi noma wesiphequluli alondolozwe kuthebhulethi yakho. Lokhu kungavumela uhlelo lokusebenza ukususa noma ukushintsha idatha yesiphequluli. Qaphela: le mvume kungenzeka ingaphoqelelwa iziphequluli ezivela eceleni noma ezinye izinhlelo zokusebenza ezinamandla okuphequlula iwebhu."</string>
- <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Ivumela uhlelo lokusebenza ukuguqula umlando wesiphequluli noma amabhukhimakhi kudivayisi yakho ye-Android TV. Lokhu kungavumela uhlelo lokusebenza ukuthi lisuse noma liguqule idatha yesiphequluli. Yazi: le mvume akumele isetshenziswe yiziphequluli zezinkampani zangaphandle noma ngezinye izinhlelo zokusebenza ezinamakhono wokudlulisa amehlo kuwebhu."</string>
- <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Ivumela uhlelo lokusebenza ukushintsha umlando wamabhukhimakhi noma wesiphequluli alondolozwe efonini yakho. Lokhu kungavumela uhlelo lokusebenza ukususa noma ukushintsha idatha yesiphequluli. Qaphela: le mvume kungenzeka ingaphoqelelwa iziphequluli ezivela eceleni noma ezinye izinhlelo zokusebenza ezinamandla okuphequlula iwebhu."</string>
<string name="permlab_setAlarm" msgid="1158001610254173567">"setha i-alamu"</string>
<string name="permdesc_setAlarm" msgid="2185033720060109640">"Ivumela uhlelo lokusebenza ukuthi isethe i-alamu ensizeni efkiwe ye-alamu. Ezinye izinhlelo zokusebenza ze-alamu kungenzeka zingakusebenzisi lokho."</string>
<string name="permlab_addVoicemail" msgid="4770245808840814471">"engeza imeyili yezwi"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"Ivumela uhlelo lokusebenza ukwengeza imiyalezo kwibhokisi lakho lemeyili yezwi."</string>
- <string name="permlab_writeGeolocationPermissions" msgid="8605631647492879449">"Gugula izimvume zendawo Yesiphequluli"</string>
- <string name="permdesc_writeGeolocationPermissions" msgid="5817346421222227772">"Ivumela uhlelo lokusebenza ukuthi iguqule izimvume eziphathelene nezindawo Zesiphequluli. Izuhlelo lokusebenza eziyingozi zingasebenzisa lokhu ukuvumela ukuvumela imininingwane yendawo kunoma imaphi amawebusayithi."</string>
- <string name="save_password_message" msgid="2146409467245462965">"Ingabe ufuna ukuba isiphequluli sikhumbule lephasiwedi?"</string>
- <string name="save_password_notnow" msgid="2878327088951240061">"Hha yi manje"</string>
- <string name="save_password_remember" msgid="6490888932657708341">"Khumbula"</string>
- <string name="save_password_never" msgid="6776808375903410659">"Akusoze"</string>
- <string name="open_permission_deny" msgid="5136793905306987251">"Awunayo imvume yokuvula leli khasi."</string>
- <string name="text_copied" msgid="2531420577879738860">"Umbhalo ukopishwe ebhodini lokunamathisela."</string>
- <string name="pasted_from_app" msgid="5627698450808256545">"I-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> inamathiselwe kusuka ku-<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"I-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> inamathiselwe ebhodini lakho lokunamathisela"</string>
- <string name="pasted_text" msgid="4298871641549173733">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele umbhalo owukopishile"</string>
- <string name="pasted_image" msgid="4729097394781491022">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele isithombe osikopishile"</string>
- <string name="pasted_content" msgid="646276353060777131">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele okuqukethwe okukopishile"</string>
<string name="more_item_label" msgid="7419249600215749115">"Okuningi"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"Imenyu+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
@@ -1378,13 +1329,10 @@
<string name="sms_short_code_remember_undo_instruction" msgid="2620984439143080410">"Ungashintsha lokhu kamuva kuzilungiselelo > izinhlelo zokusebenza"</string>
<string name="sms_short_code_confirm_always_allow" msgid="2223014893129755950">"Vumela njalo?"</string>
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Ungavumeli"</string>
- <!-- no translation found for sim_removed_title (1349026474932481037) -->
- <skip />
- <!-- no translation found for sim_removed_message (8469588437451533845) -->
- <skip />
+ <string name="sim_removed_title" msgid="1349026474932481037">"I-SIM isusiwe"</string>
+ <string name="sim_removed_message" msgid="8469588437451533845">"The mobile network will be unavailable until you restart with a valid SIM.-"</string>
<string name="sim_done_button" msgid="6464250841528410598">"Kwenziwe"</string>
- <!-- no translation found for sim_added_title (2976783426741012468) -->
- <skip />
+ <string name="sim_added_title" msgid="2976783426741012468">"I-SIM yengeziwe"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Kufanele uqalise kabusha idivaysi yakho ukuze ungene kuhleloxhumano yeselula."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Qala phansi"</string>
<string name="install_carrier_app_notification_title" msgid="5712723402213090102">"Yenza kusebenze isevisi yeselula"</string>
@@ -1696,8 +1644,7 @@
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"I-SIM manje ikhutshaziwe. Faka ikhodi ye-PUK ukuze uqhubeke. Xhumana nenkampani yenethiwekhi ngemininingwane."</string>
<string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Faka iphinikhodi oyithandayo"</string>
<string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Qiniseka iphinikhodi oyithandayo"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (5743634657721110967) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Ivula i-SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Iphinikhodi engalungile."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Thayipha iphinikhodi enezinombolo ezingu-4 kuya kwezingu-8."</string>
<string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"Ikhodi ye-PUK kumele ibe yizinombolo ezingu-8."</string>
@@ -1726,6 +1673,10 @@
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Susa"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Khuphukisa ivolumu ngaphezu kweleveli enconyiwe?\n\nUkulalela ngevolumu ephezulu izikhathi ezide kungahle kulimaze ukuzwa kwakho."</string>
+ <string name="csd_dose_reached_warning" product="default" msgid="1032473160590983236">"Isexwayiso,\nUsuweqe inani lamasignali omsindo omkhulu umuntu angakwazi ukuwalalela ngokuphepha ngeviki ngama-headphone.\n\nUkweqa lo mkhawulo kuzolimaza ngokuphelele ukuzwa kwakho."</string>
+ <string name="csd_dose_repeat_warning" product="default" msgid="6765471037071089401">"Isexwayiso,\nUsuweqe iinani lamasignali womsindo ophezulu izikhathi ezi-5 umuntu angakwazi ukuwalalela ngokuphephile ngeviki ngama-headphone.\n\nIvolumu yehlisiwe ukuze kuvikelwe ukuzwa kwakho."</string>
+ <string name="csd_entering_RS2_warning" product="default" msgid="3699509945325496807">"Izinga olalela ngalo imidiya lingaholela ekulimaleni kokuzwa uma kugcinwa isikhathi eside.\n\nUkuqhubeka nokudlala kuleli zinga isikhathi eside kungalimaza ukuzwa kwakho."</string>
+ <string name="csd_momentary_exposure_warning" product="default" msgid="7861896191081176454">"Isexwayiso,\nOkwamanje ulalele okuqukethwe okuphezulu okudlalwayo ezingeni elingaphephile.\n\nUkuqhubeka ulalele lo msindo omkhulu kuzolimaza ukuzwa kwakho unomphela."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Sebenzisa isinqamuleli sokufinyelela?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Uma isinqamuleli sivuliwe, ukucindezela zombili izinkinobho zevolumu amasekhondi angu-3 kuzoqalisa isici sokufinyelela."</string>
<string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"Vula isinqamuleli sezici zokufinyeleleka?"</string>
@@ -1754,8 +1705,7 @@
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Vala isinqamuleli"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sebenzisa isinqamuleli"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Ukuguqulwa kombala"</string>
- <!-- no translation found for color_correction_feature_name (7975133554160979214) -->
- <skip />
+ <string name="color_correction_feature_name" msgid="7975133554160979214">"Ukulungiswa kombala"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Imodi yesandla esisodwa"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ukufiphaza okwengeziwe"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivuliwe."</string>
@@ -2352,8 +2302,6 @@
<string name="permdesc_deliverCompanionMessages" msgid="2170847384281412850">"Ivumela i-app ehambisanayo ukuletha imilayezo ehambisanayo kwamanye amadivayisi."</string>
<string name="permlab_startForegroundServicesFromBackground" msgid="6363004936218638382">"Qala amasevisi angaphambili kusukela ngemuva"</string>
<string name="permdesc_startForegroundServicesFromBackground" msgid="4071826571656001537">"Ivumela i-app ehambisanayo ukuthi iqale amasevisi angaphambili kusukela ngemuva."</string>
- <!-- no translation found for mic_access_on_toast (2666925317663845156) -->
- <skip />
- <!-- no translation found for mic_access_off_toast (8111040892954242437) -->
- <skip />
+ <string name="mic_access_on_toast" msgid="2666925317663845156">"Imakrofoni iyatholakala"</string>
+ <string name="mic_access_off_toast" msgid="8111040892954242437">"Imakrofoni ivinjiwe"</string>
</resources>
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index 8c356b4..fa77c45 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -211,9 +211,6 @@
<color name="SIM_color_orange">#ff995400</color><!-- Material Custom Orange -->
<color name="SIM_dark_mode_color_orange">#fffcad70</color><!-- Material Orange 300 -->
- <color name="resize_shadow_start_color">#2a000000</color>
- <color name="resize_shadow_end_color">#00000000</color>
-
<color name="tooltip_background_dark">#e6616161</color>
<color name="tooltip_background_light">#e6FFFFFF</color>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index a4d6fdd..6d21fb6 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2344,6 +2344,24 @@
display, this value should be true. -->
<bool name="config_perDisplayFocusEnabled">false</bool>
+ <!-- Whether the system enables motion prediction. Only enable this after confirming that the
+ model works well on your device. To enable system-based prediction, set this value to true.
+ -->
+ <bool name="config_enableMotionPrediction">true</bool>
+
+ <!-- Additional offset to use for motion prediction, in nanoseconds. A positive number indicates
+ that the prediction will take place further in the future. For example, suppose a
+ MotionEvent arrives with timestamp t=1, and the current expected presentation time is t=2.
+ Typically, the prediction will target the presentation time, t=2. If you'd like to make
+ prediction more aggressive, you could set the offset to a positive number.
+ Setting the offset to 1 here would mean that the prediction will be done for time t=3.
+ A negative number may also be provided, to make the prediction less aggressive. In general,
+ the offset here should represent some built-in hardware delays that may not be accounted
+ for by the "expected present time". See also:
+ https://developer.android.com/reference/android/view/
+ Choreographer.FrameTimeline#getExpectedPresentationTimeNanos() -->
+ <integer name="config_motionPredictionOffsetNanos">0</integer>
+
<!-- Whether a software navigation bar should be shown. NOTE: in the future this may be
autodetected from the Configuration. -->
<bool name="config_showNavigationBar">false</bool>
@@ -2704,6 +2722,10 @@
frameworks/base/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java -->
<integer name="config_userTypePackageWhitelistMode">13</integer> <!-- 1+4+8 -->
+ <!-- Whether the main user is a permanent admin user. If the main user is a permanent admin user
+ it can't be deleted or downgraded to non-admin status. -->
+ <bool name="config_isMainUserPermanentAdmin">false</bool>
+
<!-- Whether UI for multi user should be shown -->
<bool name="config_enableMultiUserUI">false</bool>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 9dbb6a0..e156c44 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -721,8 +721,6 @@
<item type="fraction" name="docked_stack_divider_fixed_ratio">34.15%</item>
- <dimen name="resize_shadow_size">5dp</dimen>
-
<!-- The default minimal size of a resizable task, in both dimensions. -->
<dimen name="default_minimal_size_resizable_task">220dp</dimen>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 388bc95..b754440 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -4715,6 +4715,9 @@
<!-- Title of Reduce Brightness feature, shown in the warning dialog about the accessibility shortcut. [CHAR LIMIT=none] -->
<string name="reduce_bright_colors_feature_name">Extra dim</string>
+ <!-- Title of hearing aids feature, shown in the warning dialog about the accessibility shortcut. [CHAR LIMIT=none] -->
+ <string name="hearing_aids_feature_name">Hearing devices</string>
+
<!-- Text in toast to alert the user that the accessibility shortcut turned on an accessibility service. [CHAR LIMIT=none] -->
<string name="accessibility_shortcut_enabling_service">Held volume keys. <xliff:g id="service_name" example="TalkBack">%1$s</xliff:g> turned on.</string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index cd39e59..4131887 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -352,6 +352,7 @@
<java-symbol type="bool" name="config_restartRadioAfterProvisioning" />
<java-symbol type="bool" name="config_speed_up_audio_on_mt_calls" />
<java-symbol type="bool" name="config_useFixedVolume" />
+ <java-symbol type="bool" name="config_isMainUserPermanentAdmin"/>
<java-symbol type="bool" name="config_enableMultiUserUI"/>
<java-symbol type="bool" name="config_enableMultipleAdmins"/>
<java-symbol type="bool" name="config_enableNewAutoSelectNetworkUI"/>
@@ -1684,6 +1685,8 @@
<java-symbol type="bool" name="config_lockUiMode" />
<java-symbol type="bool" name="config_reverseDefaultRotation" />
<java-symbol type="bool" name="config_perDisplayFocusEnabled" />
+ <java-symbol type="bool" name="config_enableMotionPrediction" />
+ <java-symbol type="integer" name="config_motionPredictionOffsetNanos" />
<java-symbol type="bool" name="config_showNavigationBar" />
<java-symbol type="bool" name="config_supportAutoRotation" />
<java-symbol type="bool" name="config_dockedStackDividerFreeSnapMode" />
@@ -1695,9 +1698,6 @@
<java-symbol type="fraction" name="docked_stack_divider_fixed_ratio" />
<java-symbol type="fraction" name="thumbnail_fullscreen_scale" />
<java-symbol type="integer" name="thumbnail_width_tv" />
- <java-symbol type="dimen" name="resize_shadow_size" />
- <java-symbol type="color" name="resize_shadow_start_color" />
- <java-symbol type="color" name="resize_shadow_end_color" />
<java-symbol type="dimen" name="navigation_bar_height" />
<java-symbol type="dimen" name="navigation_bar_height_landscape" />
<java-symbol type="dimen" name="navigation_bar_width" />
@@ -3516,12 +3516,13 @@
<java-symbol type="drawable" name="ic_accessibility_color_inversion" />
<java-symbol type="drawable" name="ic_accessibility_color_correction" />
+ <java-symbol type="drawable" name="ic_accessibility_hearing_aid" />
<java-symbol type="drawable" name="ic_accessibility_magnification" />
<java-symbol type="drawable" name="ic_accessibility_reduce_bright_colors" />
<java-symbol type="drawable" name="ic_accessibility_one_handed" />
+ <java-symbol type="string" name="hearing_aids_feature_name" />
<java-symbol type="string" name="reduce_bright_colors_feature_name" />
-
<java-symbol type="string" name="one_handed_mode_feature_name" />
<!-- com.android.internal.widget.RecyclerView -->
diff --git a/core/tests/coretests/src/android/hardware/camera2/OWNERS b/core/tests/coretests/src/android/hardware/camera2/OWNERS
new file mode 100644
index 0000000..f48a95c
--- /dev/null
+++ b/core/tests/coretests/src/android/hardware/camera2/OWNERS
@@ -0,0 +1 @@
+include platform/frameworks/av:/camera/OWNERS
diff --git a/core/tests/coretests/src/android/hardware/camera2/impl/CaptureMetadataNativeTest.java b/core/tests/coretests/src/android/hardware/camera2/impl/CaptureMetadataNativeTest.java
new file mode 100644
index 0000000..a38c040
--- /dev/null
+++ b/core/tests/coretests/src/android/hardware/camera2/impl/CaptureMetadataNativeTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.camera2.impl;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.hardware.camera2.CaptureResult;
+import android.hardware.camera2.params.LensShadingMap;
+import android.util.Size;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.Arrays;
+
+@SmallTest
+@RunWith(JUnit4.class)
+/** Tests for {@link CameraMetadataNative} class. */
+public class CaptureMetadataNativeTest {
+
+ @Test
+ public void setLensShadingMap() {
+ final Size s = new Size(10, 10);
+ // 4 x rows x columns
+ final float[] elements = new float[400];
+ Arrays.fill(elements, 42);
+
+ final LensShadingMap lensShadingMap =
+ new LensShadingMap(elements, s.getHeight(), s.getWidth());
+ CameraMetadataNative captureResults = new CameraMetadataNative();
+ captureResults.set(CaptureResult.STATISTICS_LENS_SHADING_CORRECTION_MAP, lensShadingMap);
+
+ final LensShadingMap output =
+ captureResults.get(CaptureResult.STATISTICS_LENS_SHADING_CORRECTION_MAP);
+
+ assertThat(output).isEqualTo(lensShadingMap);
+ }
+}
diff --git a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java
index 7287579..973b904 100644
--- a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutChooserActivityTest.java
@@ -20,16 +20,19 @@
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.doubleClick;
import static androidx.test.espresso.action.ViewActions.scrollTo;
+import static androidx.test.espresso.action.ViewActions.swipeUp;
import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.RootMatchers.isDialog;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.withClassName;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.endsWith;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.accessibilityservice.AccessibilityServiceInfo;
@@ -39,7 +42,6 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
-import android.os.Bundle;
import android.os.Handler;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.IAccessibilityManager;
@@ -52,11 +54,12 @@
import com.android.internal.R;
import com.android.internal.accessibility.dialog.AccessibilityShortcutChooserActivity;
-import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import java.util.Collections;
@@ -65,57 +68,93 @@
*/
@RunWith(AndroidJUnit4.class)
public class AccessibilityShortcutChooserActivityTest {
+ private static final String ONE_HANDED_MODE = "One-Handed mode";
private static final String TEST_LABEL = "TEST_LABEL";
- private static final Context sContext =
- InstrumentationRegistry.getInstrumentation().getContext();
- private ActivityScenario<TestAccessibilityShortcutChooserActivity> mScenario;
- private static IAccessibilityManager sAccessibilityManagerService;
+ private static final ComponentName TEST_COMPONENT_NAME = new ComponentName("package", "class");
+ @Rule
+ public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Mock
private AccessibilityServiceInfo mAccessibilityServiceInfo;
-
@Mock
private ResolveInfo mResolveInfo;
-
@Mock
private ServiceInfo mServiceInfo;
-
@Mock
private ApplicationInfo mApplicationInfo;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- sAccessibilityManagerService = mock(IAccessibilityManager.class);
-
- when(mAccessibilityServiceInfo.getResolveInfo()).thenReturn(mResolveInfo);
- mResolveInfo.serviceInfo = mServiceInfo;
- mServiceInfo.applicationInfo = mApplicationInfo;
- when(mResolveInfo.loadLabel(any(PackageManager.class))).thenReturn(TEST_LABEL);
- when(mAccessibilityServiceInfo.getComponentName()).thenReturn(
- new ComponentName("package", "class"));
- when(sAccessibilityManagerService.getInstalledAccessibilityServiceList(
- anyInt())).thenReturn(Collections.singletonList(mAccessibilityServiceInfo));
-
- mScenario = ActivityScenario.launch(TestAccessibilityShortcutChooserActivity.class);
- }
+ @Mock
+ private IAccessibilityManager mAccessibilityManagerService;
@Test
- public void doubleClickServiceTargetAndClickDenyButton_permissionDialogDoesNotExist() {
- mScenario.moveToState(Lifecycle.State.CREATED);
- mScenario.moveToState(Lifecycle.State.STARTED);
- mScenario.moveToState(Lifecycle.State.RESUMED);
+ public void doubleClickTestServiceAndClickDenyButton_permissionDialogDoesNotExist()
+ throws Exception {
+ configureTestService();
+ final ActivityScenario<TestAccessibilityShortcutChooserActivity> scenario =
+ ActivityScenario.launch(TestAccessibilityShortcutChooserActivity.class);
+ scenario.moveToState(Lifecycle.State.CREATED);
+ scenario.moveToState(Lifecycle.State.STARTED);
+ scenario.moveToState(Lifecycle.State.RESUMED);
+
onView(withText(R.string.accessibility_select_shortcut_menu_title)).inRoot(
isDialog()).check(matches(isDisplayed()));
onView(withText(R.string.edit_accessibility_shortcut_menu_button)).perform(click());
-
onView(withText(TEST_LABEL)).perform(scrollTo(), doubleClick());
onView(withId(R.id.accessibility_permission_enable_deny_button)).perform(scrollTo(),
click());
onView(withId(R.id.accessibility_permissionDialog_title)).inRoot(isDialog()).check(
doesNotExist());
- mScenario.moveToState(Lifecycle.State.DESTROYED);
+ scenario.moveToState(Lifecycle.State.DESTROYED);
+ }
+
+ @Test
+ public void popEditShortcutMenuList_oneHandedModeEnabled_shouldBeInListView() {
+ TestUtils.setOneHandedModeEnabled(this, /* enabled= */ true);
+ final ActivityScenario<TestAccessibilityShortcutChooserActivity> scenario =
+ ActivityScenario.launch(TestAccessibilityShortcutChooserActivity.class);
+ scenario.moveToState(Lifecycle.State.CREATED);
+ scenario.moveToState(Lifecycle.State.STARTED);
+ scenario.moveToState(Lifecycle.State.RESUMED);
+
+ onView(withText(R.string.accessibility_select_shortcut_menu_title)).inRoot(
+ isDialog()).check(matches(isDisplayed()));
+ onView(withText(R.string.edit_accessibility_shortcut_menu_button)).perform(click());
+ onView(allOf(withClassName(endsWith("ListView")), isDisplayed())).perform(swipeUp());
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+ onView(withText(ONE_HANDED_MODE)).inRoot(isDialog()).check(matches(isDisplayed()));
+ scenario.moveToState(Lifecycle.State.DESTROYED);
+ }
+
+ @Test
+ public void popEditShortcutMenuList_oneHandedModeDisabled_shouldNotBeInListView() {
+ TestUtils.setOneHandedModeEnabled(this, /* enabled= */ false);
+ final ActivityScenario<TestAccessibilityShortcutChooserActivity> scenario =
+ ActivityScenario.launch(TestAccessibilityShortcutChooserActivity.class);
+ scenario.moveToState(Lifecycle.State.CREATED);
+ scenario.moveToState(Lifecycle.State.STARTED);
+ scenario.moveToState(Lifecycle.State.RESUMED);
+
+ onView(withText(R.string.accessibility_select_shortcut_menu_title)).inRoot(
+ isDialog()).check(matches(isDisplayed()));
+ onView(withText(R.string.edit_accessibility_shortcut_menu_button)).perform(click());
+ onView(allOf(withClassName(endsWith("ListView")), isDisplayed())).perform(swipeUp());
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+ onView(withText(ONE_HANDED_MODE)).inRoot(isDialog()).check(doesNotExist());
+ scenario.moveToState(Lifecycle.State.DESTROYED);
+ }
+
+ private void configureTestService() throws Exception {
+ when(mAccessibilityServiceInfo.getResolveInfo()).thenReturn(mResolveInfo);
+ mResolveInfo.serviceInfo = mServiceInfo;
+ mServiceInfo.applicationInfo = mApplicationInfo;
+ when(mResolveInfo.loadLabel(any(PackageManager.class))).thenReturn(TEST_LABEL);
+ when(mAccessibilityServiceInfo.getComponentName()).thenReturn(TEST_COMPONENT_NAME);
+ when(mAccessibilityManagerService.getInstalledAccessibilityServiceList(
+ anyInt())).thenReturn(Collections.singletonList(mAccessibilityServiceInfo));
+
+ TestAccessibilityShortcutChooserActivity.setupForTesting(mAccessibilityManagerService);
}
/**
@@ -123,19 +162,18 @@
*/
public static class TestAccessibilityShortcutChooserActivity extends
AccessibilityShortcutChooserActivity {
- private AccessibilityManager mAccessibilityManager;
+ private static IAccessibilityManager sAccessibilityManagerService;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- mAccessibilityManager = new AccessibilityManager(sContext, new Handler(getMainLooper()),
- sAccessibilityManagerService, /* userId= */ 0, /* serviceConnect= */ true);
- super.onCreate(savedInstanceState);
+ public static void setupForTesting(IAccessibilityManager accessibilityManagerService) {
+ sAccessibilityManagerService = accessibilityManagerService;
}
@Override
public Object getSystemService(String name) {
- if (Context.ACCESSIBILITY_SERVICE.equals(name)) {
- return mAccessibilityManager;
+ if (Context.ACCESSIBILITY_SERVICE.equals(name)
+ && sAccessibilityManagerService != null) {
+ return new AccessibilityManager(this, new Handler(getMainLooper()),
+ sAccessibilityManagerService, /* userId= */ 0, /* serviceConnect= */ true);
}
return super.getSystemService(name);
diff --git a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java
index 6baf305..9763679 100644
--- a/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java
+++ b/core/tests/coretests/src/com/android/internal/accessibility/AccessibilityShortcutControllerTest.java
@@ -21,6 +21,12 @@
import static android.provider.Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE;
import static android.view.accessibility.AccessibilityManager.ACCESSIBILITY_SHORTCUT_KEY;
+import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
+import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME;
+import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME;
+import static com.android.internal.accessibility.AccessibilityShortcutController.ONE_HANDED_COMPONENT_NAME;
+import static com.android.internal.accessibility.AccessibilityShortcutController.REDUCE_BRIGHT_COLORS_COMPONENT_NAME;
+
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
@@ -90,7 +96,6 @@
import java.util.Map;
import java.util.Set;
-
@RunWith(AndroidJUnit4.class)
public class AccessibilityShortcutControllerTest {
private static final String SERVICE_NAME_STRING = "fake.package/fake.service.name";
@@ -203,6 +208,17 @@
when(mAlertDialog.getWindow()).thenReturn(window);
when(mTextToSpeech.getVoice()).thenReturn(mVoice);
+
+ // Clears the sFrameworkShortcutFeaturesMap field which was not properly initialized
+ // during testing.
+ try {
+ Field field = AccessibilityShortcutController.class.getDeclaredField(
+ "sFrameworkShortcutFeaturesMap");
+ field.setAccessible(true);
+ field.set(window, null);
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to set sFrameworkShortcutFeaturesMap", e);
+ }
}
@AfterClass
@@ -428,11 +444,10 @@
}
@Test
- public void getFrameworkFeatureMap_shouldBeNonNullAndUnmodifiable() {
- Map<ComponentName, AccessibilityShortcutController.ToggleableFrameworkFeatureInfo>
+ public void getFrameworkFeatureMap_shouldBeUnmodifiable() {
+ final Map<ComponentName, AccessibilityShortcutController.FrameworkFeatureInfo>
frameworkFeatureMap =
AccessibilityShortcutController.getFrameworkShortcutFeaturesMap();
- assertTrue("Framework features not supported", frameworkFeatureMap.size() > 0);
try {
frameworkFeatureMap.clear();
@@ -443,6 +458,40 @@
}
@Test
+ public void getFrameworkFeatureMap_containsExpectedDefaultKeys() {
+ final Map<ComponentName, AccessibilityShortcutController.FrameworkFeatureInfo>
+ frameworkFeatureMap =
+ AccessibilityShortcutController.getFrameworkShortcutFeaturesMap();
+
+ assertTrue(frameworkFeatureMap.containsKey(COLOR_INVERSION_COMPONENT_NAME));
+ assertTrue(frameworkFeatureMap.containsKey(DALTONIZER_COMPONENT_NAME));
+ assertTrue(frameworkFeatureMap.containsKey(REDUCE_BRIGHT_COLORS_COMPONENT_NAME));
+ assertTrue(frameworkFeatureMap.containsKey(ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME));
+ }
+
+ @Test
+ public void getFrameworkFeatureMap_oneHandedModeEnabled_containsExpectedKey() {
+ TestUtils.setOneHandedModeEnabled(this, /* enabled= */ true);
+
+ final Map<ComponentName, AccessibilityShortcutController.FrameworkFeatureInfo>
+ frameworkFeatureMap =
+ AccessibilityShortcutController.getFrameworkShortcutFeaturesMap();
+
+ assertTrue(frameworkFeatureMap.containsKey(ONE_HANDED_COMPONENT_NAME));
+ }
+
+ @Test
+ public void getFrameworkFeatureMap_oneHandedModeDisabled_containsExpectedKey() {
+ TestUtils.setOneHandedModeEnabled(this, /* enabled= */ false);
+
+ final Map<ComponentName, AccessibilityShortcutController.FrameworkFeatureInfo>
+ frameworkFeatureMap =
+ AccessibilityShortcutController.getFrameworkShortcutFeaturesMap();
+
+ assertFalse(frameworkFeatureMap.containsKey(ONE_HANDED_COMPONENT_NAME));
+ }
+
+ @Test
public void testOnAccessibilityShortcut_forServiceWithNoSummary_doesNotCrash()
throws Exception {
configureShortcutEnabled(ENABLED_EXCEPT_LOCK_SCREEN);
diff --git a/core/tests/coretests/src/com/android/internal/accessibility/TestUtils.java b/core/tests/coretests/src/com/android/internal/accessibility/TestUtils.java
new file mode 100644
index 0000000..ff014ad
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/accessibility/TestUtils.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.accessibility;
+
+import com.android.internal.os.RoSystemProperties;
+
+import java.lang.reflect.Field;
+
+/**
+ * Test utility methods.
+ */
+public class TestUtils {
+
+ /**
+ * Sets the {@code enabled} of the given OneHandedMode flags to simulate device behavior.
+ */
+ public static void setOneHandedModeEnabled(Object obj, boolean enabled) {
+ try {
+ final Field field = RoSystemProperties.class.getDeclaredField(
+ "SUPPORT_ONE_HANDED_MODE");
+ field.setAccessible(true);
+ field.setBoolean(obj, enabled);
+ } catch (ReflectiveOperationException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/core/tests/nfctests/Android.bp b/core/tests/nfctests/Android.bp
index 335cea1..c74600b 100644
--- a/core/tests/nfctests/Android.bp
+++ b/core/tests/nfctests/Android.bp
@@ -27,6 +27,7 @@
"androidx.test.ext.junit",
"androidx.test.rules",
"mockito-target-minus-junit4",
+ "truth-prebuilt",
],
libs: [
"android.test.runner",
diff --git a/core/tests/nfctests/src/android/nfc/TechListParcelTest.java b/core/tests/nfctests/src/android/nfc/TechListParcelTest.java
new file mode 100644
index 0000000..a12bbbc
--- /dev/null
+++ b/core/tests/nfctests/src/android/nfc/TechListParcelTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.nfc;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.os.Parcel;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+
+@RunWith(AndroidJUnit4.class)
+public class TechListParcelTest {
+
+ private static final String[] TECH_LIST_1 = new String[] { "tech1.1", "tech1.2" };
+ private static final String[] TECH_LIST_2 = new String[] { "tech2.1" };
+ private static final String[] TECH_LIST_EMPTY = new String[] {};
+
+ @Test
+ public void testWriteParcel() {
+ TechListParcel techListParcel = new TechListParcel(TECH_LIST_1, TECH_LIST_2);
+
+ Parcel parcel = Parcel.obtain();
+ techListParcel.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ TechListParcel actualTechList =
+ TechListParcel.CREATOR.createFromParcel(parcel);
+ parcel.recycle();
+
+ assertThat(actualTechList.getTechLists().length).isEqualTo(2);
+ assertThat(Arrays.equals(actualTechList.getTechLists()[0], TECH_LIST_1)).isTrue();
+ assertThat(Arrays.equals(actualTechList.getTechLists()[1], TECH_LIST_2)).isTrue();
+ }
+
+ @Test
+ public void testWriteParcelArrayEmpty() {
+ TechListParcel techListParcel = new TechListParcel();
+
+ Parcel parcel = Parcel.obtain();
+ techListParcel.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ TechListParcel actualTechList =
+ TechListParcel.CREATOR.createFromParcel(parcel);
+ parcel.recycle();
+
+ assertThat(actualTechList.getTechLists().length).isEqualTo(0);
+ }
+
+ @Test
+ public void testWriteParcelElementEmpty() {
+ TechListParcel techListParcel = new TechListParcel(TECH_LIST_EMPTY);
+
+ Parcel parcel = Parcel.obtain();
+ techListParcel.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ TechListParcel actualTechList =
+ TechListParcel.CREATOR.createFromParcel(parcel);
+ parcel.recycle();
+
+ assertThat(actualTechList.getTechLists().length).isEqualTo(1);
+ assertThat(Arrays.equals(actualTechList.getTechLists()[0], TECH_LIST_EMPTY)).isTrue();
+ }
+
+}
diff --git a/data/etc/com.android.systemui.xml b/data/etc/com.android.systemui.xml
index e0e13f5..fc19944 100644
--- a/data/etc/com.android.systemui.xml
+++ b/data/etc/com.android.systemui.xml
@@ -24,6 +24,7 @@
<permission name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
<permission name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST"/>
<permission name="android.permission.CHANGE_OVERLAY_PACKAGES"/>
+ <permission name="android.permission.COMPONENT_OPTION_INTERACTIVE"/>
<permission name="android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS"/>
<permission name="android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS"/>
<permission name="android.permission.CONTROL_VPN"/>
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 1069445..1070841 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -346,10 +346,6 @@
<permission name="android.permission.SET_WALLPAPER_COMPONENT" />
<permission name="android.permission.SET_WALLPAPER_DIM_AMOUNT" />
<permission name="android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE" />
- <!-- Permission required for CTS test - TrustTestCases -->
- <permission name="android.permission.PROVIDE_TRUST_AGENT" />
- <permission name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" />
- <permission name="android.permission.TRUST_LISTENER" />
<!-- Permissions required for Incremental CTS tests -->
<permission name="com.android.permission.USE_INSTALLER_V2"/>
<permission name="android.permission.LOADER_USAGE_STATS"/>
@@ -502,6 +498,8 @@
<permission name="android.permission.CAPTURE_TUNER_AUDIO_INPUT" />
<permission name="android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT" />
<permission name="android.permission.MODIFY_CELL_BROADCASTS" />
+ <!-- Permission required for CTS test - CtsBroadcastRadioTestCases -->
+ <permission name="android.permission.ACCESS_BROADCAST_RADIO"/>
</privapp-permissions>
<privapp-permissions package="com.android.statementservice">
diff --git a/data/keyboards/Generic.kl b/data/keyboards/Generic.kl
index 0f8616d..247d484 100644
--- a/data/keyboards/Generic.kl
+++ b/data/keyboards/Generic.kl
@@ -249,6 +249,7 @@
key 228 KEYBOARD_BACKLIGHT_TOGGLE
key 229 KEYBOARD_BACKLIGHT_DOWN
key 230 KEYBOARD_BACKLIGHT_UP
+key 248 MUTE
key 256 BUTTON_1
key 257 BUTTON_2
diff --git a/graphics/java/android/graphics/HardwareBufferRenderer.java b/graphics/java/android/graphics/HardwareBufferRenderer.java
new file mode 100644
index 0000000..361dc59
--- /dev/null
+++ b/graphics/java/android/graphics/HardwareBufferRenderer.java
@@ -0,0 +1,390 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.graphics;
+
+import android.annotation.FloatRange;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.graphics.ColorSpace.Named;
+import android.hardware.HardwareBuffer;
+import android.hardware.SyncFence;
+import android.view.SurfaceControl;
+
+import libcore.util.NativeAllocationRegistry;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.concurrent.Executor;
+import java.util.function.Consumer;
+
+/**
+ * <p>Creates an instance of a hardware-accelerated renderer. This is used to render a scene built
+ * from {@link RenderNode}s to an output {@link HardwareBuffer}. There can be as many
+ * HardwareBufferRenderer instances as desired.</p>
+ *
+ * <h3>Resources & lifecycle</h3>
+ *
+ * <p>All HardwareBufferRenderer and {@link HardwareRenderer} instances share a common render
+ * thread. Therefore HardwareBufferRenderer will share common resources and GPU utilization with
+ * hardware accelerated rendering initiated by the UI thread of an application.
+ * The render thread contains the GPU context & resources necessary to do GPU-accelerated
+ * rendering. As such, the first HardwareBufferRenderer created comes with the cost of also creating
+ * the associated GPU contexts, however each incremental HardwareBufferRenderer thereafter is fairly
+ * cheap. The expected usage is to have a HardwareBufferRenderer instance for every active {@link
+ * HardwareBuffer}.</p>
+ *
+ * This is useful in situations where a scene built with {@link RenderNode}s can be consumed
+ * directly by the system compositor through
+ * {@link SurfaceControl.Transaction#setBuffer(SurfaceControl, HardwareBuffer)}.
+ *
+ * HardwareBufferRenderer will never clear contents before each draw invocation so previous contents
+ * in the {@link HardwareBuffer} target will be preserved across renders.
+ */
+public class HardwareBufferRenderer implements AutoCloseable {
+
+ private static final ColorSpace DEFAULT_COLORSPACE = ColorSpace.get(Named.SRGB);
+
+ private static class HardwareBufferRendererHolder {
+ public static final NativeAllocationRegistry REGISTRY =
+ NativeAllocationRegistry.createMalloced(
+ HardwareBufferRenderer.class.getClassLoader(), nGetFinalizer());
+ }
+
+ private final HardwareBuffer mHardwareBuffer;
+ private final RenderRequest mRenderRequest;
+ private final RenderNode mRootNode;
+ private final Runnable mCleaner;
+
+ private long mProxy;
+
+ /**
+ * Creates a new instance of {@link HardwareBufferRenderer} with the provided {@link
+ * HardwareBuffer} as the output of the rendered scene.
+ */
+ public HardwareBufferRenderer(@NonNull HardwareBuffer buffer) {
+ RenderNode rootNode = RenderNode.adopt(nCreateRootRenderNode());
+ rootNode.setClipToBounds(false);
+ mProxy = nCreateHardwareBufferRenderer(buffer, rootNode.mNativeRenderNode);
+ mCleaner = HardwareBufferRendererHolder.REGISTRY.registerNativeAllocation(this, mProxy);
+ mRenderRequest = new RenderRequest();
+ mRootNode = rootNode;
+ mHardwareBuffer = buffer;
+ }
+
+ /**
+ * Sets the content root to render. It is not necessary to call this whenever the content
+ * recording changes. Any mutations to the RenderNode content, or any of the RenderNodes
+ * contained within the content node, will be applied whenever a new {@link RenderRequest} is
+ * issued via {@link #obtainRenderRequest()} and {@link RenderRequest#draw(Executor,
+ * Consumer)}.
+ *
+ * @param content The content to set as the root RenderNode. If null the content root is removed
+ * and the renderer will draw nothing.
+ */
+ public void setContentRoot(@Nullable RenderNode content) {
+ RecordingCanvas canvas = mRootNode.beginRecording();
+ if (content != null) {
+ canvas.drawRenderNode(content);
+ }
+ mRootNode.endRecording();
+ }
+
+ /**
+ * Returns a {@link RenderRequest} that can be used to render into the provided {@link
+ * HardwareBuffer}. This is used to synchronize the RenderNode content provided by {@link
+ * #setContentRoot(RenderNode)}.
+ *
+ * @return An instance of {@link RenderRequest}. The instance may be reused for every frame, so
+ * the caller should not hold onto it for longer than a single render request.
+ */
+ @NonNull
+ public RenderRequest obtainRenderRequest() {
+ mRenderRequest.reset();
+ return mRenderRequest;
+ }
+
+ /**
+ * Returns if the {@link HardwareBufferRenderer} has already been closed. That is
+ * {@link HardwareBufferRenderer#close()} has been invoked.
+ * @return True if the {@link HardwareBufferRenderer} has been closed, false otherwise.
+ */
+ public boolean isClosed() {
+ return mProxy == 0L;
+ }
+
+ /**
+ * Releases the resources associated with this {@link HardwareBufferRenderer} instance. **Note**
+ * this does not call {@link HardwareBuffer#close()} on the provided {@link HardwareBuffer}
+ * instance
+ */
+ @Override
+ public void close() {
+ // Note we explicitly call this only here to clean-up potential animator state
+ // This is not done as part of the NativeAllocationRegistry as it would invoke animator
+ // callbacks on the wrong thread
+ nDestroyRootRenderNode(mRootNode.mNativeRenderNode);
+ if (mProxy != 0L) {
+ mCleaner.run();
+ mProxy = 0L;
+ }
+ }
+
+ /**
+ * Sets the center of the light source. The light source point controls the directionality and
+ * shape of shadows rendered by RenderNode Z & elevation.
+ *
+ * <p>The light source should be setup both as part of initial configuration, and whenever
+ * the window moves to ensure the light source stays anchored in display space instead of in
+ * window space.
+ *
+ * <p>This must be set at least once along with {@link #setLightSourceAlpha(float, float)}
+ * before shadows will work.
+ *
+ * @param lightX The X position of the light source. If unsure, a reasonable default
+ * is 'displayWidth / 2f - windowLeft'.
+ * @param lightY The Y position of the light source. If unsure, a reasonable default
+ * is '0 - windowTop'
+ * @param lightZ The Z position of the light source. Must be >= 0. If unsure, a reasonable
+ * default is 600dp.
+ * @param lightRadius The radius of the light source. Smaller radius will have sharper edges,
+ * larger radius will have softer shadows. If unsure, a reasonable default is 800 dp.
+ */
+ public void setLightSourceGeometry(
+ float lightX,
+ float lightY,
+ @FloatRange(from = 0f) float lightZ,
+ @FloatRange(from = 0f) float lightRadius
+ ) {
+ validateFinite(lightX, "lightX");
+ validateFinite(lightY, "lightY");
+ validatePositive(lightZ, "lightZ");
+ validatePositive(lightRadius, "lightRadius");
+ nSetLightGeometry(mProxy, lightX, lightY, lightZ, lightRadius);
+ }
+
+ /**
+ * Configures the ambient & spot shadow alphas. This is the alpha used when the shadow has max
+ * alpha, and ramps down from the values provided to zero.
+ *
+ * <p>These values are typically provided by the current theme, see
+ * {@link android.R.attr#spotShadowAlpha} and {@link android.R.attr#ambientShadowAlpha}.
+ *
+ * <p>This must be set at least once along with
+ * {@link #setLightSourceGeometry(float, float, float, float)} before shadows will work.
+ *
+ * @param ambientShadowAlpha The alpha for the ambient shadow. If unsure, a reasonable default
+ * is 0.039f.
+ * @param spotShadowAlpha The alpha for the spot shadow. If unsure, a reasonable default is
+ * 0.19f.
+ */
+ public void setLightSourceAlpha(@FloatRange(from = 0.0f, to = 1.0f) float ambientShadowAlpha,
+ @FloatRange(from = 0.0f, to = 1.0f) float spotShadowAlpha) {
+ validateAlpha(ambientShadowAlpha, "ambientShadowAlpha");
+ validateAlpha(spotShadowAlpha, "spotShadowAlpha");
+ nSetLightAlpha(mProxy, ambientShadowAlpha, spotShadowAlpha);
+ }
+
+ /**
+ * Class that contains data regarding the result of the render request.
+ * Consumers are to wait on the provided {@link SyncFence} before consuming the HardwareBuffer
+ * provided to {@link HardwareBufferRenderer} as well as verify that the status returned by
+ * {@link RenderResult#getStatus()} returns {@link RenderResult#SUCCESS}.
+ */
+ public static final class RenderResult {
+
+ /**
+ * Render request was completed successfully
+ */
+ public static final int SUCCESS = 0;
+
+ /**
+ * Render request failed with an unknown error
+ */
+ public static final int ERROR_UNKNOWN = 1;
+
+ /** @hide **/
+ @IntDef(value = {SUCCESS, ERROR_UNKNOWN})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface RenderResultStatus{}
+
+ private final SyncFence mFence;
+ private final int mResultStatus;
+
+ private RenderResult(@NonNull SyncFence fence, @RenderResultStatus int resultStatus) {
+ mFence = fence;
+ mResultStatus = resultStatus;
+ }
+
+ @NonNull
+ public SyncFence getFence() {
+ return mFence;
+ }
+
+ @RenderResultStatus
+ public int getStatus() {
+ return mResultStatus;
+ }
+ }
+
+ /**
+ * Sets the parameters that can be used to control a render request for a {@link
+ * HardwareBufferRenderer}. This is not thread-safe and must not be held on to for longer than a
+ * single request.
+ */
+ public final class RenderRequest {
+
+ private ColorSpace mColorSpace = DEFAULT_COLORSPACE;
+ private int mTransform = SurfaceControl.BUFFER_TRANSFORM_IDENTITY;
+
+ private RenderRequest() { }
+
+ /**
+ * Syncs the RenderNode tree to the render thread and requests content to be drawn. This
+ * {@link RenderRequest} instance should no longer be used after calling this method. The
+ * system internally may reuse instances of {@link RenderRequest} to reduce allocation
+ * churn.
+ *
+ * @param executor Executor used to deliver callbacks
+ * @param renderCallback Callback invoked when rendering is complete. This includes a
+ * {@link RenderResult} that provides a {@link SyncFence} that should be waited upon for
+ * completion before consuming the rendered output in the provided {@link HardwareBuffer}
+ * instance.
+ *
+ * @throws IllegalStateException if attempt to draw is made when
+ * {@link HardwareBufferRenderer#isClosed()} returns true
+ */
+ public void draw(
+ @NonNull Executor executor,
+ @NonNull Consumer<RenderResult> renderCallback
+ ) {
+ Consumer<RenderResult> wrapped = consumable -> executor.execute(
+ () -> renderCallback.accept(consumable));
+ if (!isClosed()) {
+ nRender(
+ mProxy,
+ mTransform,
+ mHardwareBuffer.getWidth(),
+ mHardwareBuffer.getHeight(),
+ mColorSpace.getNativeInstance(),
+ wrapped);
+ } else {
+ throw new IllegalStateException("Attempt to draw with a HardwareBufferRenderer "
+ + "instance that has already been closed");
+ }
+ }
+
+ private void reset() {
+ mColorSpace = DEFAULT_COLORSPACE;
+ mTransform = SurfaceControl.BUFFER_TRANSFORM_IDENTITY;
+ }
+
+ /**
+ * Configures the color space which the content should be rendered in. This affects
+ * how the framework will interpret the color at each pixel. The color space provided here
+ * must be non-null, RGB based and leverage an ICC parametric curve. The min/max values
+ * of the components should not reduce the numerical range compared to the previously
+ * assigned color space. If left unspecified, the default color space of SRGB will be used.
+ *
+ * @param colorSpace The color space the content should be rendered in. If null is provided
+ * the default of SRGB will be used.
+ */
+ @NonNull
+ public RenderRequest setColorSpace(@Nullable ColorSpace colorSpace) {
+ if (colorSpace == null) {
+ mColorSpace = DEFAULT_COLORSPACE;
+ } else {
+ mColorSpace = colorSpace;
+ }
+ return this;
+ }
+
+ /**
+ * Specifies a transform to be applied before content is rendered. This is useful
+ * for pre-rotating content for the current display orientation to increase performance
+ * of displaying the associated buffer. This transformation will also adjust the light
+ * source position for the specified rotation.
+ * @see SurfaceControl.Transaction#setBufferTransform(SurfaceControl, int)
+ */
+ @NonNull
+ public RenderRequest setBufferTransform(
+ @SurfaceControl.BufferTransform int bufferTransform) {
+ boolean validTransform = bufferTransform == SurfaceControl.BUFFER_TRANSFORM_IDENTITY
+ || bufferTransform == SurfaceControl.BUFFER_TRANSFORM_ROTATE_90
+ || bufferTransform == SurfaceControl.BUFFER_TRANSFORM_ROTATE_180
+ || bufferTransform == SurfaceControl.BUFFER_TRANSFORM_ROTATE_270;
+ if (validTransform) {
+ mTransform = bufferTransform;
+ } else {
+ throw new IllegalArgumentException("Invalid transform provided, must be one of"
+ + "the SurfaceControl.BufferTransform values");
+ }
+ return this;
+ }
+ }
+
+ /**
+ * @hide
+ */
+ /* package */
+ static native int nRender(long renderer, int transform, int width, int height, long colorSpace,
+ Consumer<RenderResult> callback);
+
+ private static native long nCreateRootRenderNode();
+
+ private static native void nDestroyRootRenderNode(long rootRenderNode);
+
+ private static native long nCreateHardwareBufferRenderer(HardwareBuffer buffer,
+ long rootRenderNode);
+
+ private static native void nSetLightGeometry(long bufferRenderer, float lightX, float lightY,
+ float lightZ, float radius);
+
+ private static native void nSetLightAlpha(long nativeProxy, float ambientShadowAlpha,
+ float spotShadowAlpha);
+
+ private static native long nGetFinalizer();
+
+ // Called by native
+ private static void invokeRenderCallback(
+ @NonNull Consumer<RenderResult> callback,
+ int fd,
+ int status
+ ) {
+ callback.accept(new RenderResult(SyncFence.adopt(fd), status));
+ }
+
+ private static void validateAlpha(float alpha, String argumentName) {
+ if (!(alpha >= 0.0f && alpha <= 1.0f)) {
+ throw new IllegalArgumentException(argumentName + " must be a valid alpha, "
+ + alpha + " is not in the range of 0.0f to 1.0f");
+ }
+ }
+
+ private static void validateFinite(float f, String argumentName) {
+ if (!Float.isFinite(f)) {
+ throw new IllegalArgumentException(argumentName + " must be finite, given=" + f);
+ }
+ }
+
+ private static void validatePositive(float f, String argumentName) {
+ if (!(Float.isFinite(f) && f >= 0.0f)) {
+ throw new IllegalArgumentException(argumentName
+ + " must be a finite positive, given=" + f);
+ }
+ }
+}
diff --git a/graphics/java/android/graphics/PathIterator.java b/graphics/java/android/graphics/PathIterator.java
index bfda690..48b29f4 100644
--- a/graphics/java/android/graphics/PathIterator.java
+++ b/graphics/java/android/graphics/PathIterator.java
@@ -29,8 +29,6 @@
import java.lang.annotation.Retention;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
-import java.util.NoSuchElementException;
-
/**
* <code>PathIterator</code> can be used to query a given {@link Path} object, to discover its
@@ -54,7 +52,8 @@
/**
* The <code>Verb</code> indicates the operation for a given segment of a path. These
* operations correspond exactly to the primitive operations on {@link Path}, such as
- * {@link Path#moveTo(float, float)} and {@link Path#lineTo(float, float)}.
+ * {@link Path#moveTo(float, float)} and {@link Path#lineTo(float, float)}, except for
+ * {@link #VERB_DONE}, which means that there are no more operations in this path.
*/
@Retention(SOURCE)
@IntDef({VERB_MOVE, VERB_LINE, VERB_QUAD, VERB_CONIC, VERB_CUBIC, VERB_CLOSE, VERB_DONE})
@@ -109,7 +108,6 @@
* @throws ArrayIndexOutOfBoundsException if the points array is too small
* @throws ConcurrentModificationException if the underlying path was modified
* since this iterator was created.
- * @throws NoSuchElementException if the iteration has no more elements
*/
@NonNull
public @Verb int next(@NonNull float[] points, int offset) {
@@ -126,8 +124,8 @@
/**
* Returns true if the there are more elements in this iterator to be returned.
* A return value of <code>false</code> means there are no more elements, and an
- * ensuing call to {@link #next()} or {@link #next(float[], int)} )} will throw a
- * {@link NoSuchElementException}.
+ * ensuing call to {@link #next()} or {@link #next(float[], int)} )} will return
+ * {@link #VERB_DONE}.
*
* @return true if there are more elements to be iterated through, false otherwise
* @throws ConcurrentModificationException if the underlying path was modified
@@ -135,14 +133,10 @@
*/
@Override
public boolean hasNext() {
- try {
- if (mCachedVerb == -1) {
- mCachedVerb = nextInternal();
- }
- return true;
- } catch (NoSuchElementException e) {
- return false;
+ if (mCachedVerb == -1) {
+ mCachedVerb = nextInternal();
}
+ return mCachedVerb != VERB_DONE;
}
/**
@@ -171,12 +165,13 @@
* is helfpul for managing the cached segment used by {@link #hasNext()}.
*
* @return the segment to be returned by {@link #next()}
- * @throws NoSuchElementException if the iteration has no more elements
+ * @throws ConcurrentModificationException if the underlying path was modified
+ * since this iterator was created.
*/
@NonNull
private @Verb int nextInternal() {
if (mDone) {
- throw new NoSuchElementException("No more path segments to iterate");
+ return VERB_DONE;
}
if (mPathGenerationId != mPath.getGenerationId()) {
throw new ConcurrentModificationException(
@@ -198,7 +193,6 @@
* requires a little more manual effort to use.
*
* @return the next segment in this iterator
- * @throws NoSuchElementException if the iteration has no more elements
* @throws ConcurrentModificationException if the underlying path was modified
* since this iterator was created.
*/
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java
index 87fa63d..00e13c9 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java
@@ -191,10 +191,25 @@
*/
void createTaskFragment(@NonNull WindowContainerTransaction wct, @NonNull IBinder fragmentToken,
@NonNull IBinder ownerToken, @NonNull Rect bounds, @WindowingMode int windowingMode) {
+ createTaskFragment(wct, fragmentToken, ownerToken, bounds, windowingMode,
+ null /* pairedActivityToken */);
+ }
+
+ /**
+ * @param ownerToken The token of the activity that creates this task fragment. It does not
+ * have to be a child of this task fragment, but must belong to the same task.
+ * @param pairedActivityToken The token of the activity that will be reparented to this task
+ * fragment. When it is not {@code null}, the task fragment will be
+ * positioned right above it.
+ */
+ void createTaskFragment(@NonNull WindowContainerTransaction wct, @NonNull IBinder fragmentToken,
+ @NonNull IBinder ownerToken, @NonNull Rect bounds, @WindowingMode int windowingMode,
+ @Nullable IBinder pairedActivityToken) {
final TaskFragmentCreationParams fragmentOptions = new TaskFragmentCreationParams.Builder(
getOrganizerToken(), fragmentToken, ownerToken)
.setInitialBounds(bounds)
.setWindowingMode(windowingMode)
+ .setPairedActivityToken(pairedActivityToken)
.build();
createTaskFragment(wct, fragmentOptions);
}
@@ -216,8 +231,10 @@
private void createTaskFragmentAndReparentActivity(@NonNull WindowContainerTransaction wct,
@NonNull IBinder fragmentToken, @NonNull IBinder ownerToken, @NonNull Rect bounds,
@WindowingMode int windowingMode, @NonNull Activity activity) {
- createTaskFragment(wct, fragmentToken, ownerToken, bounds, windowingMode);
- wct.reparentActivityToTaskFragment(fragmentToken, activity.getActivityToken());
+ final IBinder reparentActivityToken = activity.getActivityToken();
+ createTaskFragment(wct, fragmentToken, ownerToken, bounds, windowingMode,
+ reparentActivityToken);
+ wct.reparentActivityToTaskFragment(fragmentToken, reparentActivityToken);
}
void setAdjacentTaskFragments(@NonNull WindowContainerTransaction wct,
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
index 8c4de70..868ced0 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
@@ -1507,7 +1507,7 @@
* Returns the active split that has the provided containers as primary and secondary or as
* secondary and primary, if available.
*/
- @VisibleForTesting
+ @GuardedBy("mLock")
@Nullable
SplitContainer getActiveSplitForContainers(
@NonNull TaskFragmentContainer firstContainer,
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
index 6f2fe80..d9abe8e0 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
@@ -268,10 +268,11 @@
container = mController.newContainer(activity, taskId);
final int windowingMode = mController.getTaskContainer(taskId)
.getWindowingModeForSplitTaskFragment(bounds);
- createTaskFragment(wct, container.getTaskFragmentToken(), activity.getActivityToken(),
- bounds, windowingMode);
+ final IBinder reparentActivityToken = activity.getActivityToken();
+ createTaskFragment(wct, container.getTaskFragmentToken(), reparentActivityToken,
+ bounds, windowingMode, reparentActivityToken);
wct.reparentActivityToTaskFragment(container.getTaskFragmentToken(),
- activity.getActivityToken());
+ reparentActivityToken);
} else {
resizeTaskFragmentIfRegistered(wct, container, bounds);
final int windowingMode = mController.getTaskContainer(taskId)
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java
index 076856c..17814c6 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java
@@ -141,12 +141,26 @@
mToken = new Binder("TaskFragmentContainer");
mTaskContainer = taskContainer;
if (pairedPrimaryContainer != null) {
+ // The TaskFragment will be positioned right above the paired container.
if (pairedPrimaryContainer.getTaskContainer() != taskContainer) {
throw new IllegalArgumentException(
"pairedPrimaryContainer must be in the same Task");
}
final int primaryIndex = taskContainer.mContainers.indexOf(pairedPrimaryContainer);
taskContainer.mContainers.add(primaryIndex + 1, this);
+ } else if (pendingAppearedActivity != null) {
+ // The TaskFragment will be positioned right above the pending appeared Activity. If any
+ // existing TaskFragment is empty with pending Intent, it is likely that the Activity of
+ // the pending Intent hasn't been created yet, so the new Activity should be below the
+ // empty TaskFragment.
+ int i = taskContainer.mContainers.size() - 1;
+ for (; i >= 0; i--) {
+ final TaskFragmentContainer container = taskContainer.mContainers.get(i);
+ if (!container.isEmpty() || container.getPendingAppearedIntent() == null) {
+ break;
+ }
+ }
+ taskContainer.mContainers.add(i + 1, this);
} else {
taskContainer.mContainers.add(this);
}
@@ -500,6 +514,8 @@
}
if (!shouldFinishDependent) {
+ // Always finish the placeholder when the primary is finished.
+ finishPlaceholderIfAny(wct, presenter);
return;
}
@@ -526,6 +542,28 @@
mActivitiesToFinishOnExit.clear();
}
+ @GuardedBy("mController.mLock")
+ private void finishPlaceholderIfAny(@NonNull WindowContainerTransaction wct,
+ @NonNull SplitPresenter presenter) {
+ final List<TaskFragmentContainer> containersToRemove = new ArrayList<>();
+ for (TaskFragmentContainer container : mContainersToFinishOnExit) {
+ if (container.mIsFinished) {
+ continue;
+ }
+ final SplitContainer splitContainer = mController.getActiveSplitForContainers(
+ this, container);
+ if (splitContainer != null && splitContainer.isPlaceholderContainer()
+ && splitContainer.getSecondaryContainer() == container) {
+ // Remove the placeholder secondary TaskFragment.
+ containersToRemove.add(container);
+ }
+ }
+ mContainersToFinishOnExit.removeAll(containersToRemove);
+ for (TaskFragmentContainer container : containersToRemove) {
+ container.finish(false /* shouldFinishDependent */, presenter, wct, mController);
+ }
+ }
+
boolean isFinished() {
return mIsFinished;
}
diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskFragmentContainerTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskFragmentContainerTest.java
index 7d9d8b0..78b85e6 100644
--- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskFragmentContainerTest.java
+++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskFragmentContainerTest.java
@@ -154,17 +154,52 @@
null /* pendingAppearedIntent */, taskContainer, mController,
null /* pairedPrimaryContainer */);
doReturn(container1).when(mController).getContainerWithActivity(mActivity);
- final WindowContainerTransaction wct = new WindowContainerTransaction();
// The activity is requested to be reparented, so don't finish it.
- container0.finish(true /* shouldFinishDependent */, mPresenter, wct, mController);
+ container0.finish(true /* shouldFinishDependent */, mPresenter, mTransaction, mController);
verify(mTransaction, never()).finishActivity(any());
- verify(mPresenter).deleteTaskFragment(wct, container0.getTaskFragmentToken());
+ verify(mPresenter).deleteTaskFragment(mTransaction, container0.getTaskFragmentToken());
verify(mController).removeContainer(container0);
}
@Test
+ public void testFinish_alwaysFinishPlaceholder() {
+ // Register container1 as a placeholder
+ final TaskContainer taskContainer = createTestTaskContainer();
+ final TaskFragmentContainer container0 = new TaskFragmentContainer(mActivity,
+ null /* pendingAppearedIntent */, taskContainer, mController,
+ null /* pairedPrimaryContainer */);
+ final TaskFragmentInfo info0 = createMockTaskFragmentInfo(container0, mActivity);
+ container0.setInfo(mTransaction, info0);
+ final Activity placeholderActivity = createMockActivity();
+ final TaskFragmentContainer container1 = new TaskFragmentContainer(placeholderActivity,
+ null /* pendingAppearedIntent */, taskContainer, mController,
+ null /* pairedPrimaryContainer */);
+ final TaskFragmentInfo info1 = createMockTaskFragmentInfo(container1, placeholderActivity);
+ container1.setInfo(mTransaction, info1);
+ final SplitAttributes splitAttributes = new SplitAttributes.Builder().build();
+ final SplitPlaceholderRule rule = new SplitPlaceholderRule.Builder(new Intent(),
+ mActivity::equals, (java.util.function.Predicate) i -> false,
+ (java.util.function.Predicate) w -> true)
+ .setDefaultSplitAttributes(splitAttributes)
+ .build();
+ mController.registerSplit(mTransaction, container0, mActivity, container1, rule,
+ splitAttributes);
+
+ // The placeholder TaskFragment should be finished even if the primary is finished with
+ // shouldFinishDependent = false.
+ container0.finish(false /* shouldFinishDependent */, mPresenter, mTransaction, mController);
+
+ assertTrue(container0.isFinished());
+ assertTrue(container1.isFinished());
+ verify(mPresenter).deleteTaskFragment(mTransaction, container0.getTaskFragmentToken());
+ verify(mPresenter).deleteTaskFragment(mTransaction, container1.getTaskFragmentToken());
+ verify(mController).removeContainer(container0);
+ verify(mController).removeContainer(container1);
+ }
+
+ @Test
public void testSetInfo() {
final TaskContainer taskContainer = createTestTaskContainer();
// Pending activity should be cleared when it has appeared on server side.
@@ -493,8 +528,6 @@
final TaskFragmentContainer tf1 = new TaskFragmentContainer(
null /* pendingAppearedActivity */, new Intent(), taskContainer, mController,
null /* pairedPrimaryTaskFragment */);
- taskContainer.mContainers.add(tf0);
- taskContainer.mContainers.add(tf1);
// When tf2 is created with using tf0 as pairedPrimaryContainer, tf2 should be inserted
// right above tf0.
@@ -506,6 +539,26 @@
}
@Test
+ public void testNewContainerWithPairedPendingAppearedActivity() {
+ final TaskContainer taskContainer = createTestTaskContainer();
+ final TaskFragmentContainer tf0 = new TaskFragmentContainer(
+ createMockActivity(), null /* pendingAppearedIntent */, taskContainer, mController,
+ null /* pairedPrimaryTaskFragment */);
+ final TaskFragmentContainer tf1 = new TaskFragmentContainer(
+ null /* pendingAppearedActivity */, new Intent(), taskContainer, mController,
+ null /* pairedPrimaryTaskFragment */);
+
+ // When tf2 is created with pendingAppearedActivity, tf2 should be inserted below any
+ // TaskFragment without any Activity.
+ final TaskFragmentContainer tf2 = new TaskFragmentContainer(
+ createMockActivity(), null /* pendingAppearedIntent */, taskContainer, mController,
+ null /* pairedPrimaryTaskFragment */);
+ assertEquals(0, taskContainer.indexOf(tf0));
+ assertEquals(1, taskContainer.indexOf(tf2));
+ assertEquals(2, taskContainer.indexOf(tf1));
+ }
+
+ @Test
public void testIsVisible() {
final TaskContainer taskContainer = createTestTaskContainer();
final TaskFragmentContainer container = new TaskFragmentContainer(
diff --git a/libs/WindowManager/Shell/res/drawable/decor_minimize_button_dark.xml b/libs/WindowManager/Shell/res/drawable/decor_minimize_button_dark.xml
index 0bcaa53..b7ff96e 100644
--- a/libs/WindowManager/Shell/res/drawable/decor_minimize_button_dark.xml
+++ b/libs/WindowManager/Shell/res/drawable/decor_minimize_button_dark.xml
@@ -18,7 +18,7 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
- android:tint="?attr/colorControlNormal">
+ android:tint="@color/decor_button_dark_color">
<path
android:fillColor="@android:color/white" android:pathData="M6,21V19H18V21Z"/>
</vector>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityAnimation.java
index e36e16c..5d38494 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossActivityAnimation.java
@@ -171,6 +171,7 @@
mInitialTouchPos.set(0, 0);
mEnteringWindowShow = false;
mEnteringMargin = 0;
+ mEnteringAnimator = null;
if (mFinishCallback != null) {
try {
@@ -276,7 +277,7 @@
}
// End the fade in animation.
- if (mEnteringAnimator.isRunning()) {
+ if (mEnteringAnimator != null && mEnteringAnimator.isRunning()) {
mEnteringAnimator.cancel();
}
@@ -329,12 +330,10 @@
@Override
public void onBackCancelled() {
// End the fade in animation.
- if (mEnteringAnimator.isRunning()) {
+ if (mEnteringAnimator != null && mEnteringAnimator.isRunning()) {
mEnteringAnimator.cancel();
}
- // TODO (b259608500): Let BackProgressAnimator could play cancel animation.
- mProgressAnimator.reset();
- finishAnimation();
+ mProgressAnimator.onBackCancelled(CrossActivityAnimation.this::finishAnimation);
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
index 676e259..99a434a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/CrossTaskBackAnimation.java
@@ -329,8 +329,7 @@
@Override
public void onBackCancelled() {
- mProgressAnimator.reset();
- finishAnimation();
+ mProgressAnimator.onBackCancelled(CrossTaskBackAnimation.this::finishAnimation);
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/SingleInstanceRemoteListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SingleInstanceRemoteListener.java
index b77ac8a..e46ee28 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/SingleInstanceRemoteListener.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SingleInstanceRemoteListener.java
@@ -29,6 +29,9 @@
* Manages the lifecycle of a single instance of a remote listener, including the clean up if the
* remote process dies. All calls on this class should happen on the main shell thread.
*
+ * Any external interface using this listener should also unregister the listener when it is
+ * invalidated, otherwise it may leak binder death recipients.
+ *
* @param <C> The controller (must be RemoteCallable)
* @param <L> The remote listener interface type
*/
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
index 94aeb2b..5e46023 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
@@ -306,7 +306,9 @@
}
}
- protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) {
+ @Override
+ protected SurfaceControl getParentSurface(IWindow window,
+ WindowManager.LayoutParams attrs) {
SurfaceControl leash = new SurfaceControl.Builder(new SurfaceSession())
.setContainerLayer()
.setName("SystemWindowLeash")
@@ -316,7 +318,7 @@
synchronized (this) {
mLeashForWindow.put(window.asBinder(), leash);
}
- b.setParent(leash);
+ return leash;
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java
index a9d3c9f..fcbf9e0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java
@@ -92,7 +92,7 @@
}
@Override
- protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) {
+ protected SurfaceControl getParentSurface(IWindow window, WindowManager.LayoutParams attrs) {
// Can't set position for the ViewRootImpl SC directly. Create a leash to manipulate later.
final SurfaceControl.Builder builder = new SurfaceControl.Builder(new SurfaceSession())
.setContainerLayer()
@@ -101,7 +101,7 @@
.setParent(mHostLeash)
.setCallsite("SplitDecorManager#attachToParentSurface");
mIconLeash = builder.build();
- b.setParent(mIconLeash);
+ return mIconLeash;
}
/** Inflates split decor surface on the root surface. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java
index 5397552..6b5ddcb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java
@@ -93,7 +93,7 @@
}
@Override
- protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) {
+ protected SurfaceControl getParentSurface(IWindow window, WindowManager.LayoutParams attrs) {
// Can't set position for the ViewRootImpl SC directly. Create a leash to manipulate later.
final SurfaceControl.Builder builder = new SurfaceControl.Builder(new SurfaceSession())
.setContainerLayer()
@@ -103,7 +103,7 @@
mParentContainerCallbacks.attachToParentSurface(builder);
mLeash = builder.build();
mParentContainerCallbacks.onLeashReady(mLeash);
- b.setParent(mLeash);
+ return mLeash;
}
/** Inflates {@link DividerView} on to the root surface. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java
index face243..2cc9f45 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManagerAbstract.java
@@ -155,7 +155,7 @@
}
@Override
- protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) {
+ protected SurfaceControl getParentSurface(IWindow window, WindowManager.LayoutParams attrs) {
String className = getClass().getSimpleName();
final SurfaceControl.Builder builder = new SurfaceControl.Builder(new SurfaceSession())
.setContainerLayer()
@@ -164,9 +164,8 @@
.setCallsite(className + "#attachToParentSurface");
attachToParentSurface(builder);
mLeash = builder.build();
- b.setParent(mLeash);
-
initSurface(mLeash);
+ return mLeash;
}
/** Inits the z-order of the surface. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java
index f5f3573..63b03ab 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java
@@ -251,7 +251,8 @@
* Show apps on desktop
*/
void showDesktopApps() {
- WindowContainerTransaction wct = bringDesktopAppsToFront();
+ // Bring apps to front, ignoring their visibility status to always ensure they are on top.
+ WindowContainerTransaction wct = bringDesktopAppsToFront(true /* ignoreVisibility */);
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
mTransitions.startTransition(TRANSIT_TO_FRONT, wct, null /* handler */);
@@ -261,7 +262,7 @@
}
@NonNull
- private WindowContainerTransaction bringDesktopAppsToFront() {
+ private WindowContainerTransaction bringDesktopAppsToFront(boolean force) {
final WindowContainerTransaction wct = new WindowContainerTransaction();
final ArraySet<Integer> activeTasks = mDesktopModeTaskRepository.getActiveTasks();
ProtoLog.d(WM_SHELL_DESKTOP_MODE, "bringDesktopAppsToFront: tasks=%s", activeTasks.size());
@@ -278,12 +279,14 @@
return wct;
}
- final boolean allActiveTasksAreVisible = taskInfos.stream()
- .allMatch(info -> mDesktopModeTaskRepository.isVisibleTask(info.taskId));
- if (allActiveTasksAreVisible) {
- ProtoLog.d(WM_SHELL_DESKTOP_MODE,
- "bringDesktopAppsToFront: active tasks are already in front, skipping.");
- return wct;
+ if (!force) {
+ final boolean allActiveTasksAreVisible = taskInfos.stream()
+ .allMatch(info -> mDesktopModeTaskRepository.isVisibleTask(info.taskId));
+ if (allActiveTasksAreVisible) {
+ ProtoLog.d(WM_SHELL_DESKTOP_MODE,
+ "bringDesktopAppsToFront: active tasks are already in front, skipping.");
+ return wct;
+ }
}
ProtoLog.d(WM_SHELL_DESKTOP_MODE,
"bringDesktopAppsToFront: reordering all active tasks to the front");
@@ -354,7 +357,7 @@
if (wct == null) {
wct = new WindowContainerTransaction();
}
- wct.merge(bringDesktopAppsToFront(), true /* transfer */);
+ wct.merge(bringDesktopAppsToFront(false /* ignoreVisibility */), true /* transfer */);
wct.reorder(request.getTriggerTask().token, true /* onTop */);
return wct;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
index 3341470..9165f70 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
@@ -84,8 +84,7 @@
fun showDesktopApps() {
ProtoLog.v(WM_SHELL_DESKTOP_MODE, "showDesktopApps")
val wct = WindowContainerTransaction()
-
- bringDesktopAppsToFront(wct)
+ bringDesktopAppsToFront(wct, force = true)
// Execute transaction if there are pending operations
if (!wct.isEmpty) {
@@ -150,11 +149,11 @@
?: WINDOWING_MODE_UNDEFINED
}
- private fun bringDesktopAppsToFront(wct: WindowContainerTransaction) {
+ private fun bringDesktopAppsToFront(wct: WindowContainerTransaction, force: Boolean = false) {
val activeTasks = desktopModeTaskRepository.getActiveTasks()
// Skip if all tasks are already visible
- if (activeTasks.isNotEmpty() && activeTasks.all(desktopModeTaskRepository::isVisibleTask)) {
+ if (!force && activeTasks.all(desktopModeTaskRepository::isVisibleTask)) {
ProtoLog.d(
WM_SHELL_DESKTOP_MODE,
"bringDesktopAppsToFront: active tasks are already in front, skipping."
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java
index b310ee2..8ebcd81 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java
@@ -104,7 +104,7 @@
}
@Override
- protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) {
+ protected SurfaceControl getParentSurface(IWindow window, WindowManager.LayoutParams attrs) {
final SurfaceControl.Builder builder = new SurfaceControl.Builder(new SurfaceSession())
.setColorLayer()
.setBufferSize(mDisplayBounds.width(), mDisplayBounds.height())
@@ -113,7 +113,7 @@
.setName(TAG)
.setCallsite("BackgroundWindowManager#attachToParentSurface");
mLeash = builder.build();
- b.setParent(mLeash);
+ return mLeash;
}
/** Inflates background view on to the root surface. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java
index efe938f..3153313 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java
@@ -207,7 +207,8 @@
private Consumer<Boolean> mOnIsInPipStateChangedListener;
- private interface PipAnimationListener {
+ @VisibleForTesting
+ interface PipAnimationListener {
/**
* Notifies the listener that the Pip animation is started.
*/
@@ -434,11 +435,7 @@
Optional<OneHandedController> oneHandedController,
ShellExecutor mainExecutor
) {
- // Ensure that we are the primary user's SystemUI.
- final int processUser = UserManager.get(context).getProcessUserId();
- if (processUser != UserHandle.USER_SYSTEM) {
- throw new IllegalStateException("Non-primary Pip component not currently supported.");
- }
+
mContext = context;
mShellCommandHandler = shellCommandHandler;
@@ -817,7 +814,7 @@
@Override
public void onKeyguardVisibilityChanged(boolean visible, boolean occluded,
boolean animatingDismiss) {
- if (!mPipTaskOrganizer.isInPip()) {
+ if (!mPipTransitionState.hasEnteredPip()) {
return;
}
if (visible) {
@@ -872,11 +869,17 @@
animationType == PipAnimationController.ANIM_TYPE_BOUNDS);
}
- private void setPinnedStackAnimationListener(PipAnimationListener callback) {
+ @VisibleForTesting
+ void setPinnedStackAnimationListener(PipAnimationListener callback) {
mPinnedStackAnimationRecentsCallback = callback;
onPipResourceDimensionsChanged();
}
+ @VisibleForTesting
+ boolean hasPinnedStackAnimationListener() {
+ return mPinnedStackAnimationRecentsCallback != null;
+ }
+
private void onPipResourceDimensionsChanged() {
if (mPinnedStackAnimationRecentsCallback != null) {
mPinnedStackAnimationRecentsCallback.onPipResourceDimensionsChanged(
@@ -1166,6 +1169,8 @@
@Override
public void invalidate() {
mController = null;
+ // Unregister the listener to ensure any registered binder death recipients are unlinked
+ mListener.unregister();
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
index db0f0bf..8490f9f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java
@@ -280,15 +280,22 @@
}
}
- private void registerRecentTasksListener(IRecentTasksListener listener) {
+ @VisibleForTesting
+ void registerRecentTasksListener(IRecentTasksListener listener) {
mListener = listener;
}
- private void unregisterRecentTasksListener() {
+ @VisibleForTesting
+ void unregisterRecentTasksListener() {
mListener = null;
}
@VisibleForTesting
+ boolean hasRecentTasksListener() {
+ return mListener != null;
+ }
+
+ @VisibleForTesting
ArrayList<GroupedRecentTaskInfo> getRecentTasks(int maxNum, int flags, int userId) {
// Note: the returned task list is from the most-recent to least-recent order
final List<ActivityManager.RecentTaskInfo> rawList = mActivityTaskManager.getRecentTasks(
@@ -442,6 +449,8 @@
@Override
public void invalidate() {
mController = null;
+ // Unregister the listener to ensure any registered binder death recipients are unlinked
+ mListener.unregister();
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
index ef70d9b..38099fc 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
@@ -954,6 +954,8 @@
@Override
public void invalidate() {
mController = null;
+ // Unregister the listener to ensure any registered binder death recipients are unlinked
+ mListener.unregister();
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
index 0c23f10..be2e793 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java
@@ -39,6 +39,7 @@
import android.window.TaskSnapshot;
import androidx.annotation.BinderThread;
+import androidx.annotation.VisibleForTesting;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.function.TriConsumer;
@@ -138,10 +139,16 @@
*
* @param listener The callback when need a starting window.
*/
+ @VisibleForTesting
void setStartingWindowListener(TriConsumer<Integer, Integer, Integer> listener) {
mTaskLaunchingCallback = listener;
}
+ @VisibleForTesting
+ boolean hasStartingWindowListener() {
+ return mTaskLaunchingCallback != null;
+ }
+
/**
* Called when a task need a starting window.
*/
@@ -281,6 +288,8 @@
@Override
public void invalidate() {
mController = null;
+ // Unregister the listener to ensure any registered binder death recipients are unlinked
+ mListener.unregister();
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/sysui/ShellController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/sysui/ShellController.java
index fdf073f..3f944cb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/sysui/ShellController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/sysui/ShellController.java
@@ -164,7 +164,8 @@
* Updates the given bundle with the set of external interfaces, invalidating the old set of
* binders.
*/
- private void createExternalInterfaces(Bundle output) {
+ @VisibleForTesting
+ public void createExternalInterfaces(Bundle output) {
// Invalidate the old binders
for (int i = 0; i < mExternalInterfaces.size(); i++) {
mExternalInterfaces.valueAt(i).invalidate();
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/AutoEnterPipOnGoToHomeTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/AutoEnterPipOnGoToHomeTest.kt
index 5e898e8..4f3facb 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/AutoEnterPipOnGoToHomeTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/AutoEnterPipOnGoToHomeTest.kt
@@ -21,12 +21,7 @@
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
-import com.android.server.wm.flicker.helpers.setRotation
-import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
-import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule
-import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule.Companion.removeAllTasksButHome
-import com.android.server.wm.traces.common.service.PlatformConsts
import org.junit.Assume
import org.junit.FixMethodOrder
import org.junit.Test
@@ -64,17 +59,12 @@
override val transition: FlickerBuilder.() -> Unit
get() = {
setup {
- removeAllTasksButHome()
- device.wakeUpAndGoToHomeScreen()
pipApp.launchViaIntent(wmHelper)
pipApp.enableAutoEnterForPipActivity()
}
teardown {
// close gracefully so that onActivityUnpinned() can be called before force exit
pipApp.closePipWindow(wmHelper)
-
- setRotation(PlatformConsts.Rotation.ROTATION_0)
- RemoveAllTasksButHomeRule.removeAllTasksButHome()
pipApp.exit(wmHelper)
}
transitions { tapl.goHome() }
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt
index 79feeaa..bc9fc73 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt
@@ -20,11 +20,7 @@
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
-import com.android.server.wm.flicker.helpers.setRotation
-import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
-import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule
-import com.android.server.wm.traces.common.service.PlatformConsts
import org.junit.Assume
import org.junit.FixMethodOrder
import org.junit.Test
@@ -61,15 +57,10 @@
override val transition: FlickerBuilder.() -> Unit
get() = {
setup {
- RemoveAllTasksButHomeRule.removeAllTasksButHome()
- device.wakeUpAndGoToHomeScreen()
- device.wakeUpAndGoToHomeScreen()
pipApp.launchViaIntent(wmHelper)
pipApp.enableEnterPipOnUserLeaveHint()
}
teardown {
- setRotation(PlatformConsts.Rotation.ROTATION_0)
- RemoveAllTasksButHomeRule.removeAllTasksButHome()
pipApp.exit(wmHelper)
}
transitions { tapl.goHome() }
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt
index 1a76142..1524b16 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt
@@ -21,10 +21,7 @@
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
-import com.android.server.wm.flicker.helpers.setRotation
-import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
-import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule
import com.android.server.wm.traces.common.ComponentNameMatcher
import com.android.server.wm.traces.common.service.PlatformConsts
import org.junit.FixMethodOrder
@@ -63,13 +60,9 @@
override val transition: FlickerBuilder.() -> Unit
get() = {
setup {
- RemoveAllTasksButHomeRule.removeAllTasksButHome()
- device.wakeUpAndGoToHomeScreen()
pipApp.launchViaIntent(wmHelper)
}
teardown {
- setRotation(PlatformConsts.Rotation.ROTATION_0)
- RemoveAllTasksButHomeRule.removeAllTasksButHome()
pipApp.exit(wmHelper)
}
transitions { pipApp.clickEnterPipButton(wmHelper) }
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt
index a4c8d6f..da16240 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt
@@ -26,11 +26,8 @@
import com.android.server.wm.flicker.entireScreenCovered
import com.android.server.wm.flicker.helpers.FixedOrientationAppHelper
import com.android.server.wm.flicker.helpers.WindowUtils
-import com.android.server.wm.flicker.helpers.setRotation
-import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.navBarLayerPositionAtStartAndEnd
-import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule
import com.android.server.wm.flicker.testapp.ActivityOptions.Pip.ACTION_ENTER_PIP
import com.android.server.wm.flicker.testapp.ActivityOptions.PortraitOnlyActivity.EXTRA_FIXED_ORIENTATION
import com.android.server.wm.traces.common.ComponentNameMatcher
@@ -79,9 +76,6 @@
override val transition: FlickerBuilder.() -> Unit
get() = {
setup {
- RemoveAllTasksButHomeRule.removeAllTasksButHome()
- device.wakeUpAndGoToHomeScreen()
-
// Launch a portrait only app on the fullscreen stack
testApp.launchViaIntent(
wmHelper,
@@ -95,8 +89,6 @@
)
}
teardown {
- setRotation(PlatformConsts.Rotation.ROTATION_0)
- RemoveAllTasksButHomeRule.removeAllTasksButHome()
pipApp.exit(wmHelper)
testApp.exit(wmHelper)
}
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipKeyboardTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipKeyboardTest.kt
index 12d6362..737e65c 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipKeyboardTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipKeyboardTest.kt
@@ -58,7 +58,6 @@
}
teardown {
imeApp.exit(wmHelper)
- setRotation(PlatformConsts.Rotation.ROTATION_0)
}
transitions {
// open the soft keyboard
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt
index 0e0be79..a9fe93d 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt
@@ -72,8 +72,6 @@
pipApp.launchViaIntentAndWaitForPip(wmHelper, stringExtras = stringExtras)
}
teardown {
- setRotation(PlatformConsts.Rotation.ROTATION_0)
- removeAllTasksButHome()
pipApp.exit(wmHelper)
}
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt
index 7d5dd89..d7107db 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt
@@ -26,10 +26,7 @@
import com.android.server.wm.flicker.FlickerTestFactory
import com.android.server.wm.flicker.helpers.WindowUtils
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
-import com.android.server.wm.flicker.helpers.setRotation
-import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
-import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule.Companion.removeAllTasksButHome
import com.android.server.wm.flicker.testapp.ActivityOptions
import com.android.server.wm.flicker.testapp.ActivityOptions.PortraitOnlyActivity.EXTRA_FIXED_ORIENTATION
import com.android.server.wm.traces.common.service.PlatformConsts
@@ -58,9 +55,6 @@
override val transition: FlickerBuilder.() -> Unit
get() = {
setup {
- removeAllTasksButHome()
- device.wakeUpAndGoToHomeScreen()
-
// Launch the PiP activity fixed as landscape.
pipApp.launchViaIntent(
wmHelper,
@@ -80,8 +74,6 @@
}
teardown {
pipApp.exit(wmHelper)
- setRotation(PlatformConsts.Rotation.ROTATION_0)
- removeAllTasksButHome()
}
transitions {
// Launch the activity back into fullscreen and ensure that it is now in landscape
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTestCase.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTestCase.java
index 71102f4..51a20ee 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTestCase.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTestCase.java
@@ -76,7 +76,14 @@
* only be run on TVs.
*/
protected void assumeTelevision() {
- assumeTrue(mPm.hasSystemFeature(PackageManager.FEATURE_LEANBACK)
- || mPm.hasSystemFeature(PackageManager.FEATURE_LEANBACK_ONLY));
+ assumeTrue(isTelevision());
+ }
+
+ /**
+ * Returns whether this test device is a TV device.
+ */
+ protected boolean isTelevision() {
+ return mPm.hasSystemFeature(PackageManager.FEATURE_LEANBACK)
+ || mPm.hasSystemFeature(PackageManager.FEATURE_LEANBACK_ONLY);
}
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java
new file mode 100644
index 0000000..3608474
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.wm.shell.back;
+
+import static android.window.BackEvent.EDGE_LEFT;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+import android.window.BackEvent;
+import android.window.BackMotionEvent;
+import android.window.BackProgressAnimator;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@SmallTest
+@TestableLooper.RunWithLooper
+@RunWith(AndroidTestingRunner.class)
+public class BackProgressAnimatorTest {
+ private BackProgressAnimator mProgressAnimator;
+ private BackEvent mReceivedBackEvent;
+ private float mTargetProgress = 0.5f;
+ private CountDownLatch mTargetProgressCalled = new CountDownLatch(1);
+ private Handler mMainThreadHandler;
+
+ @Before
+ public void setUp() throws Exception {
+ mMainThreadHandler = new Handler(Looper.getMainLooper());
+ final BackMotionEvent backEvent = new BackMotionEvent(
+ 0, 0,
+ 0, EDGE_LEFT, null);
+ mMainThreadHandler.post(
+ () -> {
+ mProgressAnimator = new BackProgressAnimator();
+ mProgressAnimator.onBackStarted(backEvent, this::onGestureProgress);
+ });
+ }
+
+ @Test
+ public void testBackProgressed() throws InterruptedException {
+ final BackMotionEvent backEvent = new BackMotionEvent(
+ 100, 0,
+ mTargetProgress, EDGE_LEFT, null);
+ mMainThreadHandler.post(
+ () -> mProgressAnimator.onBackProgressed(backEvent));
+
+ mTargetProgressCalled.await(1, TimeUnit.SECONDS);
+
+ assertNotNull(mReceivedBackEvent);
+ assertEquals(mReceivedBackEvent.getProgress(), mTargetProgress, 0 /* delta */);
+ }
+
+ @Test
+ public void testBackCancelled() throws InterruptedException {
+ // Give the animator some progress.
+ final BackMotionEvent backEvent = new BackMotionEvent(
+ 100, 0,
+ mTargetProgress, EDGE_LEFT, null);
+ mMainThreadHandler.post(
+ () -> mProgressAnimator.onBackProgressed(backEvent));
+ mTargetProgressCalled.await(1, TimeUnit.SECONDS);
+ assertNotNull(mReceivedBackEvent);
+
+ // Trigger animation cancel, the target progress should be 0.
+ mTargetProgress = 0;
+ mTargetProgressCalled = new CountDownLatch(1);
+ CountDownLatch cancelCallbackCalled = new CountDownLatch(1);
+ mMainThreadHandler.post(
+ () -> mProgressAnimator.onBackCancelled(() -> cancelCallbackCalled.countDown()));
+ cancelCallbackCalled.await(1, TimeUnit.SECONDS);
+ mTargetProgressCalled.await(1, TimeUnit.SECONDS);
+ assertNotNull(mReceivedBackEvent);
+ assertEquals(mReceivedBackEvent.getProgress(), mTargetProgress, 0 /* delta */);
+ }
+
+ private void onGestureProgress(BackEvent backEvent) {
+ if (mTargetProgress == backEvent.getProgress()) {
+ mReceivedBackEvent = backEvent;
+ mTargetProgressCalled.countDown();
+ }
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java
index 08af3d3..35cc168 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java
@@ -279,7 +279,7 @@
}
@Test
- public void testShowDesktopApps_appsAlreadyVisible_doesNothing() {
+ public void testShowDesktopApps_appsAlreadyVisible_bringsToFront() {
final RunningTaskInfo task1 = createFreeformTask();
mDesktopModeTaskRepository.addActiveTask(task1.taskId);
mDesktopModeTaskRepository.addOrMoveFreeformTaskToTop(task1.taskId);
@@ -294,8 +294,17 @@
mController.showDesktopApps();
final WindowContainerTransaction wct = getBringAppsToFrontTransaction();
- // No reordering needed.
- assertThat(wct.getHierarchyOps()).isEmpty();
+ // Check wct has reorder calls
+ assertThat(wct.getHierarchyOps()).hasSize(2);
+ // Task 1 appeared first, must be first reorder to top.
+ HierarchyOp op1 = wct.getHierarchyOps().get(0);
+ assertThat(op1.getType()).isEqualTo(HIERARCHY_OP_TYPE_REORDER);
+ assertThat(op1.getContainer()).isEqualTo(task1.token.asBinder());
+
+ // Task 2 appeared last, must be last reorder to top.
+ HierarchyOp op2 = wct.getHierarchyOps().get(1);
+ assertThat(op2.getType()).isEqualTo(HIERARCHY_OP_TYPE_REORDER);
+ assertThat(op2.getContainer()).isEqualTo(task2.token.asBinder());
}
@Test
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
index 9a92879..4011d08 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
@@ -150,8 +150,8 @@
}
@Test
- fun showDesktopApps_appsAlreadyVisible_doesNothing() {
- setUpHomeTask()
+ fun showDesktopApps_appsAlreadyVisible_bringsToFront() {
+ val homeTask = setUpHomeTask()
val task1 = setUpFreeformTask()
val task2 = setUpFreeformTask()
markTaskVisible(task1)
@@ -159,7 +159,12 @@
controller.showDesktopApps()
- verifyWCTNotExecuted()
+ val wct = getLatestWct()
+ assertThat(wct.hierarchyOps).hasSize(3)
+ // Expect order to be from bottom: home, task1, task2
+ wct.assertReorderAt(index = 0, homeTask)
+ wct.assertReorderAt(index = 1, task1)
+ wct.assertReorderAt(index = 2, task2)
}
@Test
@@ -207,6 +212,23 @@
}
@Test
+ fun moveToDesktop_otherFreeformTasksBroughtToFront() {
+ val homeTask = setUpHomeTask()
+ val freeformTask = setUpFreeformTask()
+ val fullscreenTask = setUpFullscreenTask()
+ markTaskHidden(freeformTask)
+
+ controller.moveToDesktop(fullscreenTask)
+
+ with(getLatestWct()) {
+ assertThat(hierarchyOps).hasSize(3)
+ assertReorderSequence(homeTask, freeformTask, fullscreenTask)
+ assertThat(changes[fullscreenTask.token.asBinder()]?.windowingMode)
+ .isEqualTo(WINDOWING_MODE_FREEFORM)
+ }
+ }
+
+ @Test
fun moveToFullscreen() {
val task = setUpFreeformTask()
controller.moveToFullscreen(task)
@@ -406,3 +428,9 @@
assertThat(op.type).isEqualTo(HIERARCHY_OP_TYPE_REORDER)
assertThat(op.container).isEqualTo(task.token.asBinder())
}
+
+private fun WindowContainerTransaction.assertReorderSequence(vararg tasks: RunningTaskInfo) {
+ for (i in tasks.indices) {
+ assertReorderAt(i, tasks[i])
+ }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java
index 7ec4e21..35c09a1 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java
@@ -18,7 +18,9 @@
import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
@@ -38,6 +40,7 @@
import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.Rect;
+import android.os.Bundle;
import android.os.RemoteException;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
@@ -62,6 +65,7 @@
import com.android.wm.shell.pip.PipTaskOrganizer;
import com.android.wm.shell.pip.PipTransitionController;
import com.android.wm.shell.pip.PipTransitionState;
+import com.android.wm.shell.recents.IRecentTasksListener;
import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
@@ -188,6 +192,24 @@
}
@Test
+ public void testInvalidateExternalInterface_unregistersListener() {
+ mPipController.setPinnedStackAnimationListener(new PipController.PipAnimationListener() {
+ @Override
+ public void onPipAnimationStarted() {}
+ @Override
+ public void onPipResourceDimensionsChanged(int cornerRadius, int shadowRadius) {}
+ @Override
+ public void onExpandPip() {}
+ });
+ assertTrue(mPipController.hasPinnedStackAnimationListener());
+ // Create initial interface
+ mShellController.createExternalInterfaces(new Bundle());
+ // Recreate the interface to trigger invalidation of the previous instance
+ mShellController.createExternalInterfaces(new Bundle());
+ assertFalse(mPipController.hasPinnedStackAnimationListener());
+ }
+
+ @Test
public void createPip_notSupported_returnsNull() {
Context spyContext = spy(mContext);
PackageManager mockPackageManager = mock(PackageManager.class);
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipActionProviderTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipActionProviderTest.java
index 41f8456..e5b61ed 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipActionProviderTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipActionProviderTest.java
@@ -95,6 +95,9 @@
@Before
public void setUp() {
+ if (!isTelevision()) {
+ return;
+ }
MockitoAnnotations.initMocks(this);
mActionsProvider = new TvPipActionsProvider(mContext, mMockPipMediaController,
mMockSystemActionsHandler);
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipBoundsControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipBoundsControllerTest.kt
index 7e85030..7370ed7 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipBoundsControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipBoundsControllerTest.kt
@@ -84,6 +84,9 @@
@Before
fun setUp() {
+ if (!isTelevision) {
+ return
+ }
MockitoAnnotations.initMocks(this)
time = 0L
inMenu = false
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipGravityTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipGravityTest.java
index ca2c693..51f86b8 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipGravityTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipGravityTest.java
@@ -48,6 +48,9 @@
@Before
public void setUp() {
+ if (!isTelevision()) {
+ return;
+ }
MockitoAnnotations.initMocks(this);
mTvPipBoundsState = new TvPipBoundsState(mContext);
mTvPipBoundsAlgorithm = new TvPipBoundsAlgorithm(mContext, mTvPipBoundsState,
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithmTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithmTest.kt
index 0390f3e..aedf65d 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithmTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithmTest.kt
@@ -56,6 +56,9 @@
@Before
fun setup() {
+ if (!isTelevision) {
+ return
+ }
movementBounds = Rect(0, 0, SCREEN_SIZE.width, SCREEN_SIZE.height)
movementBounds.inset(SCREEN_EDGE_INSET, SCREEN_EDGE_INSET)
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
index f6ac3ee..82392ad9 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/recents/RecentTasksControllerTest.java
@@ -23,6 +23,7 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -45,6 +46,7 @@
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Rect;
+import android.os.Bundle;
import android.view.SurfaceControl;
import androidx.test.filters.SmallTest;
@@ -87,8 +89,6 @@
@Mock
private TaskStackListenerImpl mTaskStackListener;
@Mock
- private ShellController mShellController;
- @Mock
private ShellCommandHandler mShellCommandHandler;
@Mock
private DesktopModeTaskRepository mDesktopModeTaskRepository;
@@ -97,7 +97,9 @@
private ShellTaskOrganizer mShellTaskOrganizer;
private RecentTasksController mRecentTasksController;
+ private RecentTasksController mRecentTasksControllerReal;
private ShellInit mShellInit;
+ private ShellController mShellController;
private TestShellExecutor mMainExecutor;
@Before
@@ -105,9 +107,12 @@
mMainExecutor = new TestShellExecutor();
when(mContext.getPackageManager()).thenReturn(mock(PackageManager.class));
mShellInit = spy(new ShellInit(mMainExecutor));
- mRecentTasksController = spy(new RecentTasksController(mContext, mShellInit,
+ mShellController = spy(new ShellController(mShellInit, mShellCommandHandler,
+ mMainExecutor));
+ mRecentTasksControllerReal = new RecentTasksController(mContext, mShellInit,
mShellController, mShellCommandHandler, mTaskStackListener, mActivityTaskManager,
- Optional.of(mDesktopModeTaskRepository), mMainExecutor));
+ Optional.of(mDesktopModeTaskRepository), mMainExecutor);
+ mRecentTasksController = spy(mRecentTasksControllerReal);
mShellTaskOrganizer = new ShellTaskOrganizer(mShellInit, mShellCommandHandler,
null /* sizeCompatUI */, Optional.empty(), Optional.of(mRecentTasksController),
mMainExecutor);
@@ -132,6 +137,20 @@
}
@Test
+ public void testInvalidateExternalInterface_unregistersListener() {
+ // Note: We have to use the real instance of the controller here since that is the instance
+ // that is passed to ShellController internally, and the instance that the listener will be
+ // unregistered from
+ mRecentTasksControllerReal.registerRecentTasksListener(new IRecentTasksListener.Default());
+ assertTrue(mRecentTasksControllerReal.hasRecentTasksListener());
+ // Create initial interface
+ mShellController.createExternalInterfaces(new Bundle());
+ // Recreate the interface to trigger invalidation of the previous instance
+ mShellController.createExternalInterfaces(new Bundle());
+ assertFalse(mRecentTasksControllerReal.hasRecentTasksListener());
+ }
+
+ @Test
public void testAddRemoveSplitNotifyChange() {
ActivityManager.RecentTaskInfo t1 = makeTaskInfo(1);
ActivityManager.RecentTaskInfo t2 = makeTaskInfo(2);
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitScreenControllerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitScreenControllerTests.java
index f8ded77..ea3af9d 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitScreenControllerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitScreenControllerTests.java
@@ -27,11 +27,14 @@
import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
@@ -46,6 +49,7 @@
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ActivityInfo;
+import android.os.Bundle;
import androidx.test.annotation.UiThreadTest;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -86,7 +90,6 @@
public class SplitScreenControllerTests extends ShellTestCase {
@Mock ShellInit mShellInit;
- @Mock ShellController mShellController;
@Mock ShellCommandHandler mShellCommandHandler;
@Mock ShellTaskOrganizer mTaskOrganizer;
@Mock SyncTransactionQueue mSyncQueue;
@@ -103,12 +106,15 @@
@Mock RecentTasksController mRecentTasks;
@Captor ArgumentCaptor<Intent> mIntentCaptor;
+ private ShellController mShellController;
private SplitScreenController mSplitScreenController;
@Before
public void setup() {
assumeTrue(ActivityTaskManager.supportsSplitScreenMultiWindow(mContext));
MockitoAnnotations.initMocks(this);
+ mShellController = spy(new ShellController(mShellInit, mShellCommandHandler,
+ mMainExecutor));
mSplitScreenController = spy(new SplitScreenController(mContext, mShellInit,
mShellCommandHandler, mShellController, mTaskOrganizer, mSyncQueue,
mRootTDAOrganizer, mDisplayController, mDisplayImeController,
@@ -118,7 +124,7 @@
@Test
public void instantiateController_addInitCallback() {
- verify(mShellInit, times(1)).addInitCallback(any(), any());
+ verify(mShellInit, times(1)).addInitCallback(any(), isA(SplitScreenController.class));
}
@Test
@@ -159,6 +165,19 @@
}
@Test
+ public void testInvalidateExternalInterface_unregistersListener() {
+ mSplitScreenController.onInit();
+ mSplitScreenController.registerSplitScreenListener(
+ new SplitScreen.SplitScreenListener() {});
+ verify(mStageCoordinator).registerSplitScreenListener(any());
+ // Create initial interface
+ mShellController.createExternalInterfaces(new Bundle());
+ // Recreate the interface to trigger invalidation of the previous instance
+ mShellController.createExternalInterfaces(new Bundle());
+ verify(mStageCoordinator).unregisterSplitScreenListener(any());
+ }
+
+ @Test
public void testStartIntent_appendsNoUserActionFlag() {
Intent startIntent = createStartIntent("startActivity");
PendingIntent pendingIntent =
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingWindowControllerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingWindowControllerTests.java
index 90165d1..10dec9e 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingWindowControllerTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/startingsurface/StartingWindowControllerTests.java
@@ -16,9 +16,12 @@
package com.android.wm.shell.startingsurface;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -27,16 +30,19 @@
import android.content.Context;
import android.hardware.display.DisplayManager;
+import android.os.Bundle;
import android.view.Display;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.internal.util.function.TriConsumer;
import com.android.launcher3.icons.IconProvider;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.TransactionPool;
+import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.sysui.ShellSharedConstants;
@@ -59,7 +65,7 @@
private @Mock Context mContext;
private @Mock DisplayManager mDisplayManager;
- private @Mock ShellController mShellController;
+ private @Mock ShellCommandHandler mShellCommandHandler;
private @Mock ShellTaskOrganizer mTaskOrganizer;
private @Mock ShellExecutor mMainExecutor;
private @Mock StartingWindowTypeAlgorithm mTypeAlgorithm;
@@ -67,6 +73,7 @@
private @Mock TransactionPool mTransactionPool;
private StartingWindowController mController;
private ShellInit mShellInit;
+ private ShellController mShellController;
@Before
public void setUp() {
@@ -74,6 +81,8 @@
doReturn(mock(Display.class)).when(mDisplayManager).getDisplay(anyInt());
doReturn(mDisplayManager).when(mContext).getSystemService(eq(DisplayManager.class));
mShellInit = spy(new ShellInit(mMainExecutor));
+ mShellController = spy(new ShellController(mShellInit, mShellCommandHandler,
+ mMainExecutor));
mController = new StartingWindowController(mContext, mShellInit, mShellController,
mTaskOrganizer, mMainExecutor, mTypeAlgorithm, mIconProvider, mTransactionPool);
mShellInit.init();
@@ -81,7 +90,7 @@
@Test
public void instantiateController_addInitCallback() {
- verify(mShellInit, times(1)).addInitCallback(any(), any());
+ verify(mShellInit, times(1)).addInitCallback(any(), isA(StartingWindowController.class));
}
@Test
@@ -89,4 +98,18 @@
verify(mShellController, times(1)).addExternalInterface(
eq(ShellSharedConstants.KEY_EXTRA_SHELL_STARTING_WINDOW), any(), any());
}
+
+ @Test
+ public void testInvalidateExternalInterface_unregistersListener() {
+ mController.setStartingWindowListener(new TriConsumer<Integer, Integer, Integer>() {
+ @Override
+ public void accept(Integer integer, Integer integer2, Integer integer3) {}
+ });
+ assertTrue(mController.hasStartingWindowListener());
+ // Create initial interface
+ mShellController.createExternalInterfaces(new Bundle());
+ // Recreate the interface to trigger invalidation of the previous instance
+ mShellController.createExternalInterfaces(new Bundle());
+ assertFalse(mController.hasStartingWindowListener());
+ }
}
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
index 3e3d77b..59e4b7a 100644
--- a/libs/hwui/Android.bp
+++ b/libs/hwui/Android.bp
@@ -329,6 +329,7 @@
"jni/android_util_PathParser.cpp",
"jni/Bitmap.cpp",
+ "jni/HardwareBufferHelpers.cpp",
"jni/BitmapFactory.cpp",
"jni/ByteBufferStreamAdaptor.cpp",
"jni/Camera.cpp",
@@ -397,6 +398,7 @@
"jni/AnimatedImageDrawable.cpp",
"jni/android_graphics_TextureLayer.cpp",
"jni/android_graphics_HardwareRenderer.cpp",
+ "jni/android_graphics_HardwareBufferRenderer.cpp",
"jni/BitmapRegionDecoder.cpp",
"jni/GIFMovie.cpp",
"jni/GraphicsStatsService.cpp",
diff --git a/libs/hwui/RecordingCanvas.cpp b/libs/hwui/RecordingCanvas.cpp
index 3f21940..5b6fff1 100644
--- a/libs/hwui/RecordingCanvas.cpp
+++ b/libs/hwui/RecordingCanvas.cpp
@@ -605,12 +605,17 @@
};
}
+static constexpr inline bool is_power_of_two(int value) {
+ return (value & (value - 1)) == 0;
+}
+
template <typename T, typename... Args>
void* DisplayListData::push(size_t pod, Args&&... args) {
size_t skip = SkAlignPtr(sizeof(T) + pod);
SkASSERT(skip < (1 << 24));
if (fUsed + skip > fReserved) {
- static_assert(SkIsPow2(SKLITEDL_PAGE), "This math needs updating for non-pow2.");
+ static_assert(is_power_of_two(SKLITEDL_PAGE),
+ "This math needs updating for non-pow2.");
// Next greater multiple of SKLITEDL_PAGE.
fReserved = (fUsed + skip + SKLITEDL_PAGE) & ~(SKLITEDL_PAGE - 1);
fBytes.realloc(fReserved);
diff --git a/libs/hwui/SkiaInterpolator.cpp b/libs/hwui/SkiaInterpolator.cpp
index b28b15a..47bd0b9 100644
--- a/libs/hwui/SkiaInterpolator.cpp
+++ b/libs/hwui/SkiaInterpolator.cpp
@@ -20,9 +20,10 @@
#include "include/core/SkScalar.h"
#include "include/core/SkTypes.h"
#include "include/private/SkFixed.h"
-#include "include/private/SkMalloc.h"
#include "src/core/SkTSearch.h"
+#include <log/log.h>
+
typedef int Dot14;
#define Dot14_ONE (1 << 14)
#define Dot14_HALF (1 << 13)
@@ -96,7 +97,7 @@
SkiaInterpolatorBase::~SkiaInterpolatorBase() {
if (fStorage) {
- sk_free(fStorage);
+ free(fStorage);
}
}
@@ -106,7 +107,7 @@
fFrameCount = static_cast<int16_t>(frameCount);
fRepeat = SK_Scalar1;
if (fStorage) {
- sk_free(fStorage);
+ free(fStorage);
fStorage = nullptr;
fTimes = nullptr;
}
@@ -213,7 +214,10 @@
void SkiaInterpolator::reset(int elemCount, int frameCount) {
INHERITED::reset(elemCount, frameCount);
- fStorage = sk_malloc_throw((sizeof(float) * elemCount + sizeof(SkTimeCode)) * frameCount);
+ size_t numBytes = (sizeof(float) * elemCount + sizeof(SkTimeCode)) * frameCount;
+ fStorage = malloc(numBytes);
+ LOG_ALWAYS_FATAL_IF(!fStorage, "Failed to allocate %zu bytes in %s",
+ numBytes, __func__);
fTimes = (SkTimeCode*)fStorage;
fValues = (float*)((char*)fStorage + sizeof(SkTimeCode) * frameCount);
}
diff --git a/libs/hwui/apex/jni_runtime.cpp b/libs/hwui/apex/jni_runtime.cpp
index e6cfa7b..f57d80c 100644
--- a/libs/hwui/apex/jni_runtime.cpp
+++ b/libs/hwui/apex/jni_runtime.cpp
@@ -83,6 +83,7 @@
extern int register_android_view_DisplayListCanvas(JNIEnv* env);
extern int register_android_view_RenderNode(JNIEnv* env);
extern int register_android_view_ThreadedRenderer(JNIEnv* env);
+extern int register_android_graphics_HardwareBufferRenderer(JNIEnv* env);
#ifdef NDEBUG
#define REG_JNI(name) { name }
@@ -151,6 +152,8 @@
REG_JNI(register_android_util_PathParser),
REG_JNI(register_android_view_RenderNode),
REG_JNI(register_android_view_DisplayListCanvas),
+ REG_JNI(register_android_graphics_HardwareBufferRenderer),
+
REG_JNI(register_android_view_ThreadedRenderer),
};
diff --git a/libs/hwui/jni/Bitmap.cpp b/libs/hwui/jni/Bitmap.cpp
index 94cea65..540abec 100755
--- a/libs/hwui/jni/Bitmap.cpp
+++ b/libs/hwui/jni/Bitmap.cpp
@@ -2,48 +2,41 @@
#define LOG_TAG "Bitmap"
#include "Bitmap.h"
+#include <hwui/Bitmap.h>
+#include <hwui/Paint.h>
+
+#include "CreateJavaOutputStreamAdaptor.h"
#include "GraphicsJNI.h"
+#include "HardwareBufferHelpers.h"
#include "SkBitmap.h"
#include "SkBlendMode.h"
#include "SkCanvas.h"
#include "SkColor.h"
#include "SkColorSpace.h"
#include "SkData.h"
-#include "SkImageEncoder.h"
#include "SkImageInfo.h"
#include "SkPaint.h"
-#include "SkPixelRef.h"
#include "SkPixmap.h"
#include "SkPoint.h"
#include "SkRefCnt.h"
#include "SkStream.h"
#include "SkTypes.h"
-#include "SkWebpEncoder.h"
-
-
#include "android_nio_utils.h"
-#include "CreateJavaOutputStreamAdaptor.h"
-#include <hwui/Paint.h>
-#include <hwui/Bitmap.h>
-#include <utils/Color.h>
#ifdef __ANDROID__ // Layoutlib does not support graphic buffer, parcel or render thread
#include <android-base/unique_fd.h>
#include <android/binder_parcel.h>
#include <android/binder_parcel_jni.h>
#include <android/binder_parcel_platform.h>
-#include <android/binder_parcel_utils.h>
-#include <private/android/AHardwareBufferHelpers.h>
#include <cutils/ashmem.h>
-#include <dlfcn.h>
#include <renderthread/RenderProxy.h>
#include <sys/mman.h>
#endif
#include <inttypes.h>
#include <string.h>
+
#include <memory>
-#include <string>
#define DEBUG_PARCEL 0
@@ -1197,18 +1190,11 @@
return createBitmap(env, bitmap.release(), getPremulBitmapCreateFlags(false));
}
-#ifdef __ANDROID__ // Layoutlib does not support graphic buffer
-typedef AHardwareBuffer* (*AHB_from_HB)(JNIEnv*, jobject);
-AHB_from_HB AHardwareBuffer_fromHardwareBuffer;
-
-typedef jobject (*AHB_to_HB)(JNIEnv*, AHardwareBuffer*);
-AHB_to_HB AHardwareBuffer_toHardwareBuffer;
-#endif
-
static jobject Bitmap_wrapHardwareBufferBitmap(JNIEnv* env, jobject, jobject hardwareBuffer,
jlong colorSpacePtr) {
#ifdef __ANDROID__ // Layoutlib does not support graphic buffer
- AHardwareBuffer* buffer = AHardwareBuffer_fromHardwareBuffer(env, hardwareBuffer);
+ AHardwareBuffer* buffer = uirenderer::HardwareBufferHelpers::AHardwareBuffer_fromHardwareBuffer(
+ env, hardwareBuffer);
sk_sp<Bitmap> bitmap = Bitmap::createFrom(buffer,
GraphicsJNI::getNativeColorSpace(colorSpacePtr));
if (!bitmap.get()) {
@@ -1231,7 +1217,8 @@
}
Bitmap& bitmap = bitmapHandle->bitmap();
- return AHardwareBuffer_toHardwareBuffer(env, bitmap.hardwareBuffer());
+ return uirenderer::HardwareBufferHelpers::AHardwareBuffer_toHardwareBuffer(
+ env, bitmap.hardwareBuffer());
#else
return nullptr;
#endif
@@ -1329,18 +1316,7 @@
gBitmap_nativePtr = GetFieldIDOrDie(env, gBitmap_class, "mNativePtr", "J");
gBitmap_constructorMethodID = GetMethodIDOrDie(env, gBitmap_class, "<init>", "(JIIIZ[BLandroid/graphics/NinePatch$InsetStruct;Z)V");
gBitmap_reinitMethodID = GetMethodIDOrDie(env, gBitmap_class, "reinit", "(IIZ)V");
-
-#ifdef __ANDROID__ // Layoutlib does not support graphic buffer or parcel
- void* handle_ = dlopen("libandroid.so", RTLD_NOW | RTLD_NODELETE);
- AHardwareBuffer_fromHardwareBuffer =
- (AHB_from_HB)dlsym(handle_, "AHardwareBuffer_fromHardwareBuffer");
- LOG_ALWAYS_FATAL_IF(AHardwareBuffer_fromHardwareBuffer == nullptr,
- "Failed to find required symbol AHardwareBuffer_fromHardwareBuffer!");
-
- AHardwareBuffer_toHardwareBuffer = (AHB_to_HB)dlsym(handle_, "AHardwareBuffer_toHardwareBuffer");
- LOG_ALWAYS_FATAL_IF(AHardwareBuffer_toHardwareBuffer == nullptr,
- " Failed to find required symbol AHardwareBuffer_toHardwareBuffer!");
-#endif
+ uirenderer::HardwareBufferHelpers::init();
return android::RegisterMethodsOrDie(env, "android/graphics/Bitmap", gBitmapMethods,
NELEM(gBitmapMethods));
}
diff --git a/libs/hwui/jni/GraphicsJNI.h b/libs/hwui/jni/GraphicsJNI.h
index 085a905..c4a61cc 100644
--- a/libs/hwui/jni/GraphicsJNI.h
+++ b/libs/hwui/jni/GraphicsJNI.h
@@ -2,19 +2,18 @@
#define _ANDROID_GRAPHICS_GRAPHICS_JNI_H_
#include <cutils/compiler.h>
+#include <hwui/Bitmap.h>
+#include <hwui/Canvas.h>
-#include "Bitmap.h"
#include "BRDAllocator.h"
+#include "Bitmap.h"
#include "SkBitmap.h"
#include "SkCodec.h"
-#include "SkPixelRef.h"
+#include "SkColorSpace.h"
#include "SkMallocPixelRef.h"
+#include "SkPixelRef.h"
#include "SkPoint.h"
#include "SkRect.h"
-#include "SkColorSpace.h"
-#include <hwui/Canvas.h>
-#include <hwui/Bitmap.h>
-
#include "graphics_jni_helpers.h"
class SkCanvas;
@@ -335,6 +334,26 @@
int fLen;
};
+class JGlobalRefHolder {
+public:
+ JGlobalRefHolder(JavaVM* vm, jobject object) : mVm(vm), mObject(object) {}
+
+ virtual ~JGlobalRefHolder() {
+ GraphicsJNI::getJNIEnv()->DeleteGlobalRef(mObject);
+ mObject = nullptr;
+ }
+
+ jobject object() { return mObject; }
+ JavaVM* vm() { return mVm; }
+
+private:
+ JGlobalRefHolder(const JGlobalRefHolder&) = delete;
+ void operator=(const JGlobalRefHolder&) = delete;
+
+ JavaVM* mVm;
+ jobject mObject;
+};
+
void doThrowNPE(JNIEnv* env);
void doThrowAIOOBE(JNIEnv* env); // Array Index Out Of Bounds Exception
void doThrowIAE(JNIEnv* env, const char* msg = NULL); // Illegal Argument
diff --git a/libs/hwui/jni/HardwareBufferHelpers.cpp b/libs/hwui/jni/HardwareBufferHelpers.cpp
new file mode 100644
index 0000000..7e3f771
--- /dev/null
+++ b/libs/hwui/jni/HardwareBufferHelpers.cpp
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "HardwareBufferHelpers.h"
+
+#include <dlfcn.h>
+#include <log/log.h>
+
+#ifdef __ANDROID__
+typedef AHardwareBuffer* (*AHB_from_HB)(JNIEnv*, jobject);
+typedef jobject (*AHB_to_HB)(JNIEnv*, AHardwareBuffer*);
+static AHB_from_HB fromHardwareBuffer = nullptr;
+static AHB_to_HB toHardwareBuffer = nullptr;
+#endif
+
+void android::uirenderer::HardwareBufferHelpers::init() {
+#ifdef __ANDROID__ // Layoutlib does not support graphic buffer or parcel
+ void* handle_ = dlopen("libandroid.so", RTLD_NOW | RTLD_NODELETE);
+ fromHardwareBuffer = (AHB_from_HB)dlsym(handle_, "AHardwareBuffer_fromHardwareBuffer");
+ LOG_ALWAYS_FATAL_IF(fromHardwareBuffer == nullptr,
+ "Failed to find required symbol AHardwareBuffer_fromHardwareBuffer!");
+
+ toHardwareBuffer = (AHB_to_HB)dlsym(handle_, "AHardwareBuffer_toHardwareBuffer");
+ LOG_ALWAYS_FATAL_IF(toHardwareBuffer == nullptr,
+ " Failed to find required symbol AHardwareBuffer_toHardwareBuffer!");
+#endif
+}
+
+AHardwareBuffer* android::uirenderer::HardwareBufferHelpers::AHardwareBuffer_fromHardwareBuffer(
+ JNIEnv* env, jobject hardwarebuffer) {
+#ifdef __ANDROID__
+ LOG_ALWAYS_FATAL_IF(fromHardwareBuffer == nullptr,
+ "Failed to find symbol AHardwareBuffer_fromHardwareBuffer, did you forget "
+ "to call HardwareBufferHelpers::init?");
+ return fromHardwareBuffer(env, hardwarebuffer);
+#else
+ ALOGE("ERROR attempting to invoke AHardwareBuffer_fromHardwareBuffer on non Android "
+ "configuration");
+ return nullptr;
+#endif
+}
+
+jobject android::uirenderer::HardwareBufferHelpers::AHardwareBuffer_toHardwareBuffer(
+ JNIEnv* env, AHardwareBuffer* ahardwarebuffer) {
+#ifdef __ANDROID__
+ LOG_ALWAYS_FATAL_IF(toHardwareBuffer == nullptr,
+ "Failed to find symbol AHardwareBuffer_toHardwareBuffer, did you forget to "
+ "call HardwareBufferHelpers::init?");
+ return toHardwareBuffer(env, ahardwarebuffer);
+#else
+ ALOGE("ERROR attempting to invoke AHardwareBuffer_toHardwareBuffer on non Android "
+ "configuration");
+ return nullptr;
+#endif
+}
\ No newline at end of file
diff --git a/libs/hwui/jni/HardwareBufferHelpers.h b/libs/hwui/jni/HardwareBufferHelpers.h
new file mode 100644
index 0000000..326babf
--- /dev/null
+++ b/libs/hwui/jni/HardwareBufferHelpers.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef HARDWAREBUFFER_JNI_HELPERS_H
+#define HARDWAREBUFFER_JNI_HELPERS_H
+
+#include <android/bitmap.h>
+#include <jni.h>
+
+namespace android {
+namespace uirenderer {
+
+class HardwareBufferHelpers {
+public:
+ static void init();
+ static AHardwareBuffer* AHardwareBuffer_fromHardwareBuffer(JNIEnv*, jobject);
+ static jobject AHardwareBuffer_toHardwareBuffer(JNIEnv*, AHardwareBuffer*);
+
+private:
+ HardwareBufferHelpers() = default; // not to be instantiated
+};
+
+} // namespace uirenderer
+} // namespace android
+
+#endif // HARDWAREBUFFER_JNI_HELPERS_H
\ No newline at end of file
diff --git a/libs/hwui/jni/JvmErrorReporter.h b/libs/hwui/jni/JvmErrorReporter.h
new file mode 100644
index 0000000..5e10b9d
--- /dev/null
+++ b/libs/hwui/jni/JvmErrorReporter.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef JVMERRORREPORTER_H
+#define JVMERRORREPORTER_H
+
+#include <TreeInfo.h>
+#include <jni.h>
+#include <nativehelper/JNIHelp.h>
+
+#include "GraphicsJNI.h"
+
+namespace android {
+namespace uirenderer {
+
+class JvmErrorReporter : public android::uirenderer::ErrorHandler {
+public:
+ JvmErrorReporter(JNIEnv* env) { env->GetJavaVM(&mVm); }
+
+ virtual void onError(const std::string& message) override {
+ JNIEnv* env = GraphicsJNI::getJNIEnv();
+ jniThrowException(env, "java/lang/IllegalStateException", message.c_str());
+ }
+
+private:
+ JavaVM* mVm;
+};
+
+} // namespace uirenderer
+} // namespace android
+
+#endif // JVMERRORREPORTER_H
diff --git a/libs/hwui/jni/android_graphics_HardwareBufferRenderer.cpp b/libs/hwui/jni/android_graphics_HardwareBufferRenderer.cpp
new file mode 100644
index 0000000..4886fdd
--- /dev/null
+++ b/libs/hwui/jni/android_graphics_HardwareBufferRenderer.cpp
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#undef LOG_TAG
+#define LOG_TAG "HardwareBufferRenderer"
+#define ATRACE_TAG ATRACE_TAG_VIEW
+
+#include <GraphicsJNI.h>
+#include <RootRenderNode.h>
+#include <TreeInfo.h>
+#include <android-base/unique_fd.h>
+#include <android/native_window.h>
+#include <nativehelper/JNIPlatformHelp.h>
+#include <renderthread/CanvasContext.h>
+#include <renderthread/RenderProxy.h>
+#include <renderthread/RenderThread.h>
+
+#include "HardwareBufferHelpers.h"
+#include "JvmErrorReporter.h"
+
+namespace android {
+
+using namespace android::uirenderer;
+using namespace android::uirenderer::renderthread;
+
+struct {
+ jclass clazz;
+ jmethodID invokeRenderCallback;
+} gHardwareBufferRendererClassInfo;
+
+static RenderCallback createRenderCallback(JNIEnv* env, jobject releaseCallback) {
+ if (releaseCallback == nullptr) return nullptr;
+
+ JavaVM* vm = nullptr;
+ LOG_ALWAYS_FATAL_IF(env->GetJavaVM(&vm) != JNI_OK, "Unable to get Java VM");
+ auto globalCallbackRef =
+ std::make_shared<JGlobalRefHolder>(vm, env->NewGlobalRef(releaseCallback));
+ return [globalCallbackRef](android::base::unique_fd&& fd, int status) {
+ GraphicsJNI::getJNIEnv()->CallStaticVoidMethod(
+ gHardwareBufferRendererClassInfo.clazz,
+ gHardwareBufferRendererClassInfo.invokeRenderCallback, globalCallbackRef->object(),
+ reinterpret_cast<jint>(fd.release()), reinterpret_cast<jint>(status));
+ };
+}
+
+static long android_graphics_HardwareBufferRenderer_createRootNode(JNIEnv* env, jobject) {
+ auto* node = new RootRenderNode(std::make_unique<JvmErrorReporter>(env));
+ node->incStrong(nullptr);
+ node->setName("RootRenderNode");
+ return reinterpret_cast<jlong>(node);
+}
+
+static void android_graphics_hardwareBufferRenderer_destroyRootNode(JNIEnv*, jobject,
+ jlong renderNodePtr) {
+ auto* node = reinterpret_cast<RootRenderNode*>(renderNodePtr);
+ node->destroy();
+}
+
+static long android_graphics_HardwareBufferRenderer_create(JNIEnv* env, jobject, jobject buffer,
+ jlong renderNodePtr) {
+ auto* hardwareBuffer = HardwareBufferHelpers::AHardwareBuffer_fromHardwareBuffer(env, buffer);
+ auto* rootRenderNode = reinterpret_cast<RootRenderNode*>(renderNodePtr);
+ ContextFactoryImpl factory(rootRenderNode);
+ auto* proxy = new RenderProxy(true, rootRenderNode, &factory);
+ proxy->setHardwareBuffer(hardwareBuffer);
+ return (jlong)proxy;
+}
+
+static void HardwareBufferRenderer_destroy(jobject renderProxy) {
+ auto* proxy = reinterpret_cast<RenderProxy*>(renderProxy);
+ delete proxy;
+}
+
+static SkMatrix createMatrixFromBufferTransform(SkScalar width, SkScalar height, int transform) {
+ auto matrix = SkMatrix();
+ switch (transform) {
+ case ANATIVEWINDOW_TRANSFORM_ROTATE_90:
+ matrix.setRotate(90);
+ matrix.postTranslate(width, 0);
+ break;
+ case ANATIVEWINDOW_TRANSFORM_ROTATE_180:
+ matrix.setRotate(180);
+ matrix.postTranslate(width, height);
+ break;
+ case ANATIVEWINDOW_TRANSFORM_ROTATE_270:
+ matrix.setRotate(270);
+ matrix.postTranslate(0, width);
+ break;
+ default:
+ ALOGE("Invalid transform provided. Transform should be validated from"
+ "the java side. Leveraging identity transform as a fallback");
+ [[fallthrough]];
+ case ANATIVEWINDOW_TRANSFORM_IDENTITY:
+ break;
+ }
+ return matrix;
+}
+
+static int android_graphics_HardwareBufferRenderer_render(JNIEnv* env, jobject, jobject renderProxy,
+ jint transform, jint width, jint height,
+ jlong colorspacePtr, jobject consumer) {
+ auto* proxy = reinterpret_cast<RenderProxy*>(renderProxy);
+ auto skWidth = static_cast<SkScalar>(width);
+ auto skHeight = static_cast<SkScalar>(height);
+ auto matrix = createMatrixFromBufferTransform(skWidth, skHeight, transform);
+ auto colorSpace = GraphicsJNI::getNativeColorSpace(colorspacePtr);
+ proxy->setHardwareBufferRenderParams(
+ HardwareBufferRenderParams(matrix, colorSpace, createRenderCallback(env, consumer)));
+ return proxy->syncAndDrawFrame();
+}
+
+static void android_graphics_HardwareBufferRenderer_setLightGeometry(JNIEnv*, jobject,
+ jobject renderProxyPtr,
+ jfloat lightX, jfloat lightY,
+ jfloat lightZ,
+ jfloat lightRadius) {
+ auto* proxy = reinterpret_cast<RenderProxy*>(renderProxyPtr);
+ proxy->setLightGeometry((Vector3){lightX, lightY, lightZ}, lightRadius);
+}
+
+static void android_graphics_HardwareBufferRenderer_setLightAlpha(JNIEnv* env, jobject,
+ jobject renderProxyPtr,
+ jfloat ambientShadowAlpha,
+ jfloat spotShadowAlpha) {
+ auto* proxy = reinterpret_cast<RenderProxy*>(renderProxyPtr);
+ proxy->setLightAlpha((uint8_t)(255 * ambientShadowAlpha), (uint8_t)(255 * spotShadowAlpha));
+}
+
+static jlong android_graphics_HardwareBufferRenderer_getFinalizer() {
+ return static_cast<jlong>(reinterpret_cast<uintptr_t>(&HardwareBufferRenderer_destroy));
+}
+
+// ----------------------------------------------------------------------------
+// JNI Glue
+// ----------------------------------------------------------------------------
+
+const char* const kClassPathName = "android/graphics/HardwareBufferRenderer";
+
+static const JNINativeMethod gMethods[] = {
+ {"nCreateHardwareBufferRenderer", "(Landroid/hardware/HardwareBuffer;J)J",
+ (void*)android_graphics_HardwareBufferRenderer_create},
+ {"nRender", "(JIIIJLjava/util/function/Consumer;)I",
+ (void*)android_graphics_HardwareBufferRenderer_render},
+ {"nCreateRootRenderNode", "()J",
+ (void*)android_graphics_HardwareBufferRenderer_createRootNode},
+ {"nSetLightGeometry", "(JFFFF)V",
+ (void*)android_graphics_HardwareBufferRenderer_setLightGeometry},
+ {"nSetLightAlpha", "(JFF)V", (void*)android_graphics_HardwareBufferRenderer_setLightAlpha},
+ {"nGetFinalizer", "()J", (void*)android_graphics_HardwareBufferRenderer_getFinalizer},
+ {"nDestroyRootRenderNode", "(J)V",
+ (void*)android_graphics_hardwareBufferRenderer_destroyRootNode}};
+
+int register_android_graphics_HardwareBufferRenderer(JNIEnv* env) {
+ jclass hardwareBufferRendererClazz =
+ FindClassOrDie(env, "android/graphics/HardwareBufferRenderer");
+ gHardwareBufferRendererClassInfo.clazz = hardwareBufferRendererClazz;
+ gHardwareBufferRendererClassInfo.invokeRenderCallback =
+ GetStaticMethodIDOrDie(env, hardwareBufferRendererClazz, "invokeRenderCallback",
+ "(Ljava/util/function/Consumer;II)V");
+ HardwareBufferHelpers::init();
+ return RegisterMethodsOrDie(env, kClassPathName, gMethods, NELEM(gMethods));
+}
+
+} // namespace android
\ No newline at end of file
diff --git a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
index 0663121..47e2edb 100644
--- a/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
+++ b/libs/hwui/jni/android_graphics_HardwareRenderer.cpp
@@ -56,6 +56,7 @@
#include <atomic>
#include <vector>
+#include "JvmErrorReporter.h"
#include "android_graphics_HardwareRendererObserver.h"
namespace android {
@@ -93,35 +94,12 @@
jmethodID getDestinationBitmap;
} gCopyRequest;
-static JNIEnv* getenv(JavaVM* vm) {
- JNIEnv* env;
- if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
- LOG_ALWAYS_FATAL("Failed to get JNIEnv for JavaVM: %p", vm);
- }
- return env;
-}
-
typedef ANativeWindow* (*ANW_fromSurface)(JNIEnv* env, jobject surface);
ANW_fromSurface fromSurface;
-class JvmErrorReporter : public ErrorHandler {
-public:
- JvmErrorReporter(JNIEnv* env) {
- env->GetJavaVM(&mVm);
- }
-
- virtual void onError(const std::string& message) override {
- JNIEnv* env = getenv(mVm);
- jniThrowException(env, "java/lang/IllegalStateException", message.c_str());
- }
-private:
- JavaVM* mVm;
-};
-
class FrameCommitWrapper : public LightRefBase<FrameCommitWrapper> {
public:
explicit FrameCommitWrapper(JNIEnv* env, jobject jobject) {
- env->GetJavaVM(&mVm);
mObject = env->NewGlobalRef(jobject);
LOG_ALWAYS_FATAL_IF(!mObject, "Failed to make global ref");
}
@@ -131,19 +109,18 @@
void onFrameCommit(bool didProduceBuffer) {
if (mObject) {
ATRACE_FORMAT("frameCommit success=%d", didProduceBuffer);
- getenv(mVm)->CallVoidMethod(mObject, gFrameCommitCallback.onFrameCommit,
- didProduceBuffer);
+ GraphicsJNI::getJNIEnv()->CallVoidMethod(mObject, gFrameCommitCallback.onFrameCommit,
+ didProduceBuffer);
releaseObject();
}
}
private:
- JavaVM* mVm;
jobject mObject;
void releaseObject() {
if (mObject) {
- getenv(mVm)->DeleteGlobalRef(mObject);
+ GraphicsJNI::getJNIEnv()->DeleteGlobalRef(mObject);
mObject = nullptr;
}
}
@@ -443,26 +420,6 @@
proxy->forceDrawNextFrame();
}
-class JGlobalRefHolder {
-public:
- JGlobalRefHolder(JavaVM* vm, jobject object) : mVm(vm), mObject(object) {}
-
- virtual ~JGlobalRefHolder() {
- getenv(mVm)->DeleteGlobalRef(mObject);
- mObject = nullptr;
- }
-
- jobject object() { return mObject; }
- JavaVM* vm() { return mVm; }
-
-private:
- JGlobalRefHolder(const JGlobalRefHolder&) = delete;
- void operator=(const JGlobalRefHolder&) = delete;
-
- JavaVM* mVm;
- jobject mObject;
-};
-
using TextureMap = std::unordered_map<uint32_t, sk_sp<SkImage>>;
struct PictureCaptureState {
@@ -578,7 +535,7 @@
auto pictureState = std::make_shared<PictureCaptureState>();
proxy->setPictureCapturedCallback([globalCallbackRef,
pictureState](sk_sp<SkPicture>&& picture) {
- JNIEnv* env = getenv(globalCallbackRef->vm());
+ JNIEnv* env = GraphicsJNI::getJNIEnv();
Picture* wrapper = new PictureWrapper{std::move(picture), pictureState};
env->CallStaticVoidMethod(gHardwareRenderer.clazz,
gHardwareRenderer.invokePictureCapturedCallback,
@@ -600,7 +557,7 @@
vm, env->NewGlobalRef(aSurfaceTransactionCallback));
proxy->setASurfaceTransactionCallback(
[globalCallbackRef](int64_t transObj, int64_t scObj, int64_t frameNr) -> bool {
- JNIEnv* env = getenv(globalCallbackRef->vm());
+ JNIEnv* env = GraphicsJNI::getJNIEnv();
jboolean ret = env->CallBooleanMethod(
globalCallbackRef->object(),
gASurfaceTransactionCallback.onMergeTransaction,
@@ -622,7 +579,7 @@
auto globalCallbackRef =
std::make_shared<JGlobalRefHolder>(vm, env->NewGlobalRef(callback));
proxy->setPrepareSurfaceControlForWebviewCallback([globalCallbackRef]() {
- JNIEnv* env = getenv(globalCallbackRef->vm());
+ JNIEnv* env = GraphicsJNI::getJNIEnv();
env->CallVoidMethod(globalCallbackRef->object(),
gPrepareSurfaceControlForWebviewCallback.prepare);
});
@@ -641,7 +598,7 @@
env->NewGlobalRef(frameCallback));
proxy->setFrameCallback([globalCallbackRef](int32_t syncResult,
int64_t frameNr) -> std::function<void(bool)> {
- JNIEnv* env = getenv(globalCallbackRef->vm());
+ JNIEnv* env = GraphicsJNI::getJNIEnv();
ScopedLocalRef<jobject> frameCommitCallback(
env, env->CallObjectMethod(
globalCallbackRef->object(), gFrameDrawingCallback.onFrameDraw,
@@ -680,7 +637,7 @@
auto globalCallbackRef =
std::make_shared<JGlobalRefHolder>(vm, env->NewGlobalRef(callback));
proxy->setFrameCompleteCallback([globalCallbackRef]() {
- JNIEnv* env = getenv(globalCallbackRef->vm());
+ JNIEnv* env = GraphicsJNI::getJNIEnv();
env->CallVoidMethod(globalCallbackRef->object(),
gFrameCompleteCallback.onFrameComplete);
});
@@ -693,7 +650,7 @@
: CopyRequest(srcRect), mRefHolder(vm, jCopyRequest) {}
virtual SkBitmap getDestinationBitmap(int srcWidth, int srcHeight) override {
- JNIEnv* env = getenv(mRefHolder.vm());
+ JNIEnv* env = GraphicsJNI::getJNIEnv();
jlong bitmapPtr = env->CallLongMethod(
mRefHolder.object(), gCopyRequest.getDestinationBitmap, srcWidth, srcHeight);
SkBitmap bitmap;
@@ -702,7 +659,7 @@
}
virtual void onCopyFinished(CopyResult result) override {
- JNIEnv* env = getenv(mRefHolder.vm());
+ JNIEnv* env = GraphicsJNI::getJNIEnv();
env->CallVoidMethod(mRefHolder.object(), gCopyRequest.onCopyFinished,
static_cast<jint>(result));
}
diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
index 19cd7bd..202a62c 100644
--- a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
@@ -55,7 +55,9 @@
MakeCurrentResult SkiaOpenGLPipeline::makeCurrent() {
// In case the surface was destroyed (e.g. a previous trimMemory call) we
// need to recreate it here.
- if (!isSurfaceReady() && mNativeWindow) {
+ if (mHardwareBuffer) {
+ mRenderThread.requireGlContext();
+ } else if (!isSurfaceReady() && mNativeWindow) {
setSurface(mNativeWindow.get(), mSwapBehavior);
}
@@ -67,17 +69,24 @@
}
Frame SkiaOpenGLPipeline::getFrame() {
- LOG_ALWAYS_FATAL_IF(mEglSurface == EGL_NO_SURFACE,
- "drawRenderNode called on a context with no surface!");
- return mEglManager.beginFrame(mEglSurface);
+ if (mHardwareBuffer) {
+ AHardwareBuffer_Desc description;
+ AHardwareBuffer_describe(mHardwareBuffer, &description);
+ return Frame(description.width, description.height, 0);
+ } else {
+ LOG_ALWAYS_FATAL_IF(mEglSurface == EGL_NO_SURFACE,
+ "drawRenderNode called on a context with no surface!");
+ return mEglManager.beginFrame(mEglSurface);
+ }
}
IRenderPipeline::DrawResult SkiaOpenGLPipeline::draw(
const Frame& frame, const SkRect& screenDirty, const SkRect& dirty,
const LightGeometry& lightGeometry, LayerUpdateQueue* layerUpdateQueue,
const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
- const std::vector<sp<RenderNode>>& renderNodes, FrameInfoVisualizer* profiler) {
- if (!isCapturingSkp()) {
+ const std::vector<sp<RenderNode>>& renderNodes, FrameInfoVisualizer* profiler,
+ const HardwareBufferRenderParams& bufferParams) {
+ if (!isCapturingSkp() && !mHardwareBuffer) {
mEglManager.damageFrame(frame, dirty);
}
@@ -104,13 +113,25 @@
SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
SkASSERT(mRenderThread.getGrContext() != nullptr);
- sk_sp<SkSurface> surface(SkSurface::MakeFromBackendRenderTarget(
- mRenderThread.getGrContext(), backendRT, this->getSurfaceOrigin(), colorType,
- mSurfaceColorSpace, &props));
+ sk_sp<SkSurface> surface;
+ SkMatrix preTransform;
+ if (mHardwareBuffer) {
+ surface = getBufferSkSurface(bufferParams);
+ preTransform = bufferParams.getTransform();
+ } else {
+ surface = SkSurface::MakeFromBackendRenderTarget(mRenderThread.getGrContext(), backendRT,
+ getSurfaceOrigin(), colorType,
+ mSurfaceColorSpace, &props);
+ preTransform = SkMatrix::I();
+ }
- LightingInfo::updateLighting(lightGeometry, lightInfo);
+ SkPoint lightCenter = preTransform.mapXY(lightGeometry.center.x, lightGeometry.center.y);
+ LightGeometry localGeometry = lightGeometry;
+ localGeometry.center.x = lightCenter.fX;
+ localGeometry.center.y = lightCenter.fY;
+ LightingInfo::updateLighting(localGeometry, lightInfo);
renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, surface,
- SkMatrix::I());
+ preTransform);
// Draw visual debugging features
if (CC_UNLIKELY(Properties::showDirtyRegions ||
@@ -142,6 +163,10 @@
// metrics the frame was swapped at this point
currentFrameInfo->markSwapBuffers();
+ if (mHardwareBuffer) {
+ return false;
+ }
+
*requireSwap = drew || mEglManager.damageRequiresSwap();
if (*requireSwap && (CC_UNLIKELY(!mEglManager.swapBuffers(frame, screenDirty)))) {
@@ -197,6 +222,26 @@
return false;
}
+[[nodiscard]] android::base::unique_fd SkiaOpenGLPipeline::flush() {
+ int fence = -1;
+ EGLSyncKHR sync = EGL_NO_SYNC_KHR;
+ mEglManager.createReleaseFence(true, &sync, &fence);
+ // If a sync object is returned here then the device does not support native
+ // fences, we block on the returned sync and return -1 as a file descriptor
+ if (sync != EGL_NO_SYNC_KHR) {
+ EGLDisplay display = mEglManager.eglDisplay();
+ EGLint result = eglClientWaitSyncKHR(display, sync, 0, 1000000000);
+ if (result == EGL_FALSE) {
+ ALOGE("EglManager::createReleaseFence: error waiting for previous fence: %#x",
+ eglGetError());
+ } else if (result == EGL_TIMEOUT_EXPIRED_KHR) {
+ ALOGE("EglManager::createReleaseFence: timeout waiting for previous fence");
+ }
+ eglDestroySyncKHR(display, sync);
+ }
+ return android::base::unique_fd(fence);
+}
+
bool SkiaOpenGLPipeline::isSurfaceReady() {
return CC_UNLIKELY(mEglSurface != EGL_NO_SURFACE);
}
diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
index a80c613..940d6bf 100644
--- a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
@@ -21,6 +21,7 @@
#include "SkiaPipeline.h"
#include "renderstate/RenderState.h"
+#include "renderthread/HardwareBufferRenderParams.h"
namespace android {
@@ -36,19 +37,18 @@
renderthread::MakeCurrentResult makeCurrent() override;
renderthread::Frame getFrame() override;
- renderthread::IRenderPipeline::DrawResult draw(const renderthread::Frame& frame,
- const SkRect& screenDirty, const SkRect& dirty,
- const LightGeometry& lightGeometry,
- LayerUpdateQueue* layerUpdateQueue,
- const Rect& contentDrawBounds, bool opaque,
- const LightInfo& lightInfo,
- const std::vector<sp<RenderNode> >& renderNodes,
- FrameInfoVisualizer* profiler) override;
+ renderthread::IRenderPipeline::DrawResult draw(
+ const renderthread::Frame& frame, const SkRect& screenDirty, const SkRect& dirty,
+ const LightGeometry& lightGeometry, LayerUpdateQueue* layerUpdateQueue,
+ const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
+ const std::vector<sp<RenderNode> >& renderNodes, FrameInfoVisualizer* profiler,
+ const renderthread::HardwareBufferRenderParams& bufferParams) override;
GrSurfaceOrigin getSurfaceOrigin() override { return kBottomLeft_GrSurfaceOrigin; }
bool swapBuffers(const renderthread::Frame& frame, bool drew, const SkRect& screenDirty,
FrameInfo* currentFrameInfo, bool* requireSwap) override;
DeferredLayerUpdater* createTextureLayer() override;
bool setSurface(ANativeWindow* surface, renderthread::SwapBehavior swapBehavior) override;
+ [[nodiscard]] android::base::unique_fd flush() override;
void onStop() override;
bool isSurfaceReady() override;
bool isContextReady() override;
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
index c546ada..1a336c5 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
@@ -604,6 +604,31 @@
ALOGD("%s", log.c_str());
}
+void SkiaPipeline::setHardwareBuffer(AHardwareBuffer* buffer) {
+ if (mHardwareBuffer) {
+ AHardwareBuffer_release(mHardwareBuffer);
+ mHardwareBuffer = nullptr;
+ }
+
+ if (buffer) {
+ AHardwareBuffer_acquire(buffer);
+ mHardwareBuffer = buffer;
+ }
+}
+
+sk_sp<SkSurface> SkiaPipeline::getBufferSkSurface(
+ const renderthread::HardwareBufferRenderParams& bufferParams) {
+ auto bufferColorSpace = bufferParams.getColorSpace();
+ if (mBufferSurface == nullptr || mBufferColorSpace == nullptr ||
+ !SkColorSpace::Equals(mBufferColorSpace.get(), bufferColorSpace.get())) {
+ mBufferSurface = SkSurface::MakeFromAHardwareBuffer(
+ mRenderThread.getGrContext(), mHardwareBuffer, kTopLeft_GrSurfaceOrigin,
+ bufferColorSpace, nullptr, true);
+ mBufferColorSpace = bufferColorSpace;
+ }
+ return mBufferSurface;
+}
+
void SkiaPipeline::setSurfaceColorProperties(ColorMode colorMode) {
mColorMode = colorMode;
switch (colorMode) {
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.h b/libs/hwui/pipeline/skia/SkiaPipeline.h
index 7887d1a..4f93346 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.h
@@ -20,9 +20,11 @@
#include <SkDocument.h>
#include <SkMultiPictureDocument.h>
#include <SkSurface.h>
+
#include "Lighting.h"
#include "hwui/AnimatedImageDrawable.h"
#include "renderthread/CanvasContext.h"
+#include "renderthread/HardwareBufferRenderParams.h"
#include "renderthread/IRenderPipeline.h"
class SkFILEWStream;
@@ -73,11 +75,20 @@
mCaptureMode = callback ? CaptureMode::CallbackAPI : CaptureMode::None;
}
+ virtual void setHardwareBuffer(AHardwareBuffer* buffer) override;
+ bool hasHardwareBuffer() override { return mHardwareBuffer != nullptr; }
+
protected:
+ sk_sp<SkSurface> getBufferSkSurface(
+ const renderthread::HardwareBufferRenderParams& bufferParams);
void dumpResourceCacheUsage() const;
renderthread::RenderThread& mRenderThread;
+ AHardwareBuffer* mHardwareBuffer = nullptr;
+ sk_sp<SkSurface> mBufferSurface = nullptr;
+ sk_sp<SkColorSpace> mBufferColorSpace = nullptr;
+
ColorMode mColorMode = ColorMode::Default;
SkColorType mSurfaceColorType;
sk_sp<SkColorSpace> mSurfaceColorSpace;
diff --git a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
index f10bca6..b94b6cf 100644
--- a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
@@ -57,37 +57,55 @@
MakeCurrentResult SkiaVulkanPipeline::makeCurrent() {
// In case the surface was destroyed (e.g. a previous trimMemory call) we
// need to recreate it here.
- if (!isSurfaceReady() && mNativeWindow) {
+ if (mHardwareBuffer) {
+ mRenderThread.requireVkContext();
+ } else if (!isSurfaceReady() && mNativeWindow) {
setSurface(mNativeWindow.get(), SwapBehavior::kSwap_default);
}
return isContextReady() ? MakeCurrentResult::AlreadyCurrent : MakeCurrentResult::Failed;
}
Frame SkiaVulkanPipeline::getFrame() {
- LOG_ALWAYS_FATAL_IF(mVkSurface == nullptr, "getFrame() called on a context with no surface!");
- return vulkanManager().dequeueNextBuffer(mVkSurface);
+ if (mHardwareBuffer) {
+ AHardwareBuffer_Desc description;
+ AHardwareBuffer_describe(mHardwareBuffer, &description);
+ return Frame(description.width, description.height, 0);
+ } else {
+ LOG_ALWAYS_FATAL_IF(mVkSurface == nullptr,
+ "getFrame() called on a context with no surface!");
+ return vulkanManager().dequeueNextBuffer(mVkSurface);
+ }
}
IRenderPipeline::DrawResult SkiaVulkanPipeline::draw(
const Frame& frame, const SkRect& screenDirty, const SkRect& dirty,
const LightGeometry& lightGeometry, LayerUpdateQueue* layerUpdateQueue,
const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
- const std::vector<sp<RenderNode>>& renderNodes, FrameInfoVisualizer* profiler) {
- sk_sp<SkSurface> backBuffer = mVkSurface->getCurrentSkSurface();
+ const std::vector<sp<RenderNode>>& renderNodes, FrameInfoVisualizer* profiler,
+ const HardwareBufferRenderParams& bufferParams) {
+ sk_sp<SkSurface> backBuffer;
+ SkMatrix preTransform;
+ if (mHardwareBuffer) {
+ backBuffer = getBufferSkSurface(bufferParams);
+ preTransform = bufferParams.getTransform();
+ } else {
+ backBuffer = mVkSurface->getCurrentSkSurface();
+ preTransform = mVkSurface->getCurrentPreTransform();
+ }
+
if (backBuffer.get() == nullptr) {
return {false, -1};
}
// update the coordinates of the global light position based on surface rotation
- SkPoint lightCenter = mVkSurface->getCurrentPreTransform().mapXY(lightGeometry.center.x,
- lightGeometry.center.y);
+ SkPoint lightCenter = preTransform.mapXY(lightGeometry.center.x, lightGeometry.center.y);
LightGeometry localGeometry = lightGeometry;
localGeometry.center.x = lightCenter.fX;
localGeometry.center.y = lightCenter.fY;
LightingInfo::updateLighting(localGeometry, lightInfo);
renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, contentDrawBounds, backBuffer,
- mVkSurface->getCurrentPreTransform());
+ preTransform);
// Draw visual debugging features
if (CC_UNLIKELY(Properties::showDirtyRegions ||
@@ -116,12 +134,16 @@
bool SkiaVulkanPipeline::swapBuffers(const Frame& frame, bool drew, const SkRect& screenDirty,
FrameInfo* currentFrameInfo, bool* requireSwap) {
- *requireSwap = drew;
-
// Even if we decided to cancel the frame, from the perspective of jank
// metrics the frame was swapped at this point
currentFrameInfo->markSwapBuffers();
+ if (mHardwareBuffer) {
+ return false;
+ }
+
+ *requireSwap = drew;
+
if (*requireSwap) {
vulkanManager().swapBuffers(mVkSurface, screenDirty);
}
@@ -137,6 +159,12 @@
void SkiaVulkanPipeline::onStop() {}
+[[nodiscard]] android::base::unique_fd SkiaVulkanPipeline::flush() {
+ int fence = -1;
+ vulkanManager().createReleaseFence(&fence, mRenderThread.getGrContext());
+ return android::base::unique_fd(fence);
+}
+
// We can safely ignore the swap behavior because VkManager will always operate
// in a mode equivalent to EGLManager::SwapBehavior::kBufferAge
bool SkiaVulkanPipeline::setSurface(ANativeWindow* surface, SwapBehavior /*swapBehavior*/) {
diff --git a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
index f3d3613..2c7b268 100644
--- a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
@@ -16,14 +16,13 @@
#pragma once
+#include "SkRefCnt.h"
#include "SkiaPipeline.h"
+#include "renderstate/RenderState.h"
+#include "renderthread/HardwareBufferRenderParams.h"
#include "renderthread/VulkanManager.h"
#include "renderthread/VulkanSurface.h"
-#include "renderstate/RenderState.h"
-
-#include "SkRefCnt.h"
-
class SkBitmap;
struct SkRect;
@@ -38,18 +37,18 @@
renderthread::MakeCurrentResult makeCurrent() override;
renderthread::Frame getFrame() override;
- renderthread::IRenderPipeline::DrawResult draw(const renderthread::Frame& frame,
- const SkRect& screenDirty, const SkRect& dirty,
- const LightGeometry& lightGeometry,
- LayerUpdateQueue* layerUpdateQueue,
- const Rect& contentDrawBounds, bool opaque,
- const LightInfo& lightInfo,
- const std::vector<sp<RenderNode> >& renderNodes,
- FrameInfoVisualizer* profiler) override;
+ renderthread::IRenderPipeline::DrawResult draw(
+ const renderthread::Frame& frame, const SkRect& screenDirty, const SkRect& dirty,
+ const LightGeometry& lightGeometry, LayerUpdateQueue* layerUpdateQueue,
+ const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
+ const std::vector<sp<RenderNode> >& renderNodes, FrameInfoVisualizer* profiler,
+ const renderthread::HardwareBufferRenderParams& bufferParams) override;
GrSurfaceOrigin getSurfaceOrigin() override { return kTopLeft_GrSurfaceOrigin; }
bool swapBuffers(const renderthread::Frame& frame, bool drew, const SkRect& screenDirty,
FrameInfo* currentFrameInfo, bool* requireSwap) override;
DeferredLayerUpdater* createTextureLayer() override;
+ [[nodiscard]] android::base::unique_fd flush() override;
+
bool setSurface(ANativeWindow* surface, renderthread::SwapBehavior swapBehavior) override;
void onStop() override;
bool isSurfaceReady() override;
@@ -64,7 +63,6 @@
private:
renderthread::VulkanManager& vulkanManager();
-
renderthread::VulkanSurface* mVkSurface = nullptr;
sp<ANativeWindow> mNativeWindow;
};
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 78ae5cf..b769f8d 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -153,6 +153,7 @@
void CanvasContext::destroy() {
stopDrawing();
+ setHardwareBuffer(nullptr);
setSurface(nullptr);
setSurfaceControl(nullptr);
freePrefetchedLayers();
@@ -176,6 +177,19 @@
native_window_set_buffer_count(window, bufferCount);
}
+void CanvasContext::setHardwareBuffer(AHardwareBuffer* buffer) {
+ if (mHardwareBuffer) {
+ AHardwareBuffer_release(mHardwareBuffer);
+ mHardwareBuffer = nullptr;
+ }
+
+ if (buffer) {
+ AHardwareBuffer_acquire(buffer);
+ mHardwareBuffer = buffer;
+ }
+ mRenderPipeline->setHardwareBuffer(mHardwareBuffer);
+}
+
void CanvasContext::setSurface(ANativeWindow* window, bool enableTimeout) {
ATRACE_CALL();
@@ -257,7 +271,7 @@
mRenderThread.removeFrameCallback(this);
mRenderPipeline->onStop();
mRenderThread.cacheManager().onContextStopped(this);
- } else if (mIsDirty && hasSurface()) {
+ } else if (mIsDirty && hasOutputTarget()) {
mRenderThread.postFrameCallback(this);
}
}
@@ -390,7 +404,7 @@
mIsDirty = true;
- if (CC_UNLIKELY(!hasSurface())) {
+ if (CC_UNLIKELY(!hasOutputTarget())) {
mCurrentFrameInfo->addFlag(FrameInfoFlags::SkippedFrame);
info.out.canDrawThisFrame = false;
return;
@@ -535,7 +549,7 @@
std::scoped_lock lock(mFrameMetricsReporterMutex);
drawResult = mRenderPipeline->draw(frame, windowDirty, dirty, mLightGeometry,
&mLayerUpdateQueue, mContentDrawBounds, mOpaque,
- mLightInfo, mRenderNodes, &(profiler()));
+ mLightInfo, mRenderNodes, &(profiler()), mBufferParams);
}
uint64_t frameCompleteNr = getFrameNumber();
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index e875c42..3f796d9 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -125,12 +125,13 @@
// Won't take effect until next EGLSurface creation
void setSwapBehavior(SwapBehavior swapBehavior);
+ void setHardwareBuffer(AHardwareBuffer* buffer);
void setSurface(ANativeWindow* window, bool enableTimeout = true);
void setSurfaceControl(ASurfaceControl* surfaceControl);
bool pauseSurface();
void setStopped(bool stopped);
- bool isStopped() { return mStopped || !hasSurface(); }
- bool hasSurface() const { return mNativeSurface.get(); }
+ bool isStopped() { return mStopped || !hasOutputTarget(); }
+ bool hasOutputTarget() const { return mNativeSurface.get() || mHardwareBuffer; }
void allocateBuffers();
void setLightAlpha(uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha);
@@ -206,6 +207,10 @@
mASurfaceTransactionCallback = callback;
}
+ void setHardwareBufferRenderParams(const HardwareBufferRenderParams& params) {
+ mBufferParams = params;
+ }
+
bool mergeTransaction(ASurfaceTransaction* transaction, ASurfaceControl* control);
void setPrepareSurfaceControlForWebviewCallback(const std::function<void()>& callback) {
@@ -258,6 +263,9 @@
int32_t mLastFrameHeight = 0;
RenderThread& mRenderThread;
+
+ AHardwareBuffer* mHardwareBuffer = nullptr;
+ HardwareBufferRenderParams mBufferParams;
std::unique_ptr<ReliableSurface> mNativeSurface;
// The SurfaceControl reference is passed from ViewRootImpl, can be set to
// NULL to remove the reference
diff --git a/libs/hwui/renderthread/DrawFrameTask.cpp b/libs/hwui/renderthread/DrawFrameTask.cpp
index 1cc82fd..b06c5dd 100644
--- a/libs/hwui/renderthread/DrawFrameTask.cpp
+++ b/libs/hwui/renderthread/DrawFrameTask.cpp
@@ -26,6 +26,7 @@
#include "../Properties.h"
#include "../RenderNode.h"
#include "CanvasContext.h"
+#include "HardwareBufferRenderParams.h"
#include "RenderThread.h"
namespace android {
@@ -91,6 +92,9 @@
mContext->setSyncDelayDuration(systemTime(SYSTEM_TIME_MONOTONIC) - mSyncQueued);
+ auto hardwareBufferParams = mHardwareBufferParams;
+ mContext->setHardwareBufferRenderParams(hardwareBufferParams);
+ IRenderPipeline* pipeline = mContext->getRenderPipeline();
bool canUnblockUiThread;
bool canDrawThisFrame;
{
@@ -150,6 +154,11 @@
if (!canUnblockUiThread) {
unblockUiThread();
}
+
+ if (pipeline->hasHardwareBuffer()) {
+ auto fence = pipeline->flush();
+ hardwareBufferParams.invokeRenderCallback(std::move(fence), 0);
+ }
}
bool DrawFrameTask::syncFrameState(TreeInfo& info) {
@@ -175,8 +184,9 @@
// This is after the prepareTree so that any pending operations
// (RenderNode tree state, prefetched layers, etc...) will be flushed.
- if (CC_UNLIKELY(!mContext->hasSurface() || !canDraw)) {
- if (!mContext->hasSurface()) {
+ bool hasTarget = mContext->hasOutputTarget();
+ if (CC_UNLIKELY(!hasTarget || !canDraw)) {
+ if (!hasTarget) {
mSyncResult |= SyncResult::LostSurfaceRewardIfFound;
} else {
// If we have a surface but can't draw we must be stopped
diff --git a/libs/hwui/renderthread/DrawFrameTask.h b/libs/hwui/renderthread/DrawFrameTask.h
index fafab24..c5c5fe2 100644
--- a/libs/hwui/renderthread/DrawFrameTask.h
+++ b/libs/hwui/renderthread/DrawFrameTask.h
@@ -27,8 +27,16 @@
#include "../Rect.h"
#include "../TreeInfo.h"
#include "RenderTask.h"
+#include "SkColorSpace.h"
+#include "SwapBehavior.h"
+#include "utils/TimeUtils.h"
+#ifdef __ANDROID__ // Layoutlib does not support hardware acceleration
+#include <android/hardware_buffer.h>
+#endif
+#include "HardwareBufferRenderParams.h"
namespace android {
+
namespace uirenderer {
class DeferredLayerUpdater;
@@ -88,6 +96,10 @@
void forceDrawNextFrame() { mForceDrawFrame = true; }
+ void setHardwareBufferRenderParams(const HardwareBufferRenderParams& params) {
+ mHardwareBufferParams = params;
+ }
+
private:
void postAndWait();
bool syncFrameState(TreeInfo& info);
@@ -111,6 +123,7 @@
int64_t mFrameInfo[UI_THREAD_FRAME_INFO_SIZE];
+ HardwareBufferRenderParams mHardwareBufferParams;
std::function<std::function<void(bool)>(int32_t, int64_t)> mFrameCallback;
std::function<void(bool)> mFrameCommitCallback;
std::function<void()> mFrameCompleteCallback;
diff --git a/libs/hwui/renderthread/HardwareBufferRenderParams.h b/libs/hwui/renderthread/HardwareBufferRenderParams.h
new file mode 100644
index 0000000..91fe3f6
--- /dev/null
+++ b/libs/hwui/renderthread/HardwareBufferRenderParams.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef HARDWAREBUFFERRENDERER_H_
+#define HARDWAREBUFFERRENDERER_H_
+
+#include <android-base/unique_fd.h>
+#include <android/hardware_buffer.h>
+
+#include "SkColorSpace.h"
+#include "SkMatrix.h"
+#include "SkSurface.h"
+
+namespace android {
+namespace uirenderer {
+namespace renderthread {
+
+using namespace android::uirenderer::renderthread;
+
+using RenderCallback = std::function<void(android::base::unique_fd&&, int)>;
+
+class RenderProxy;
+
+class HardwareBufferRenderParams {
+public:
+ HardwareBufferRenderParams() = default;
+ HardwareBufferRenderParams(const SkMatrix& transform, const sk_sp<SkColorSpace>& colorSpace,
+ RenderCallback&& callback)
+ : mTransform(transform)
+ , mColorSpace(colorSpace)
+ , mRenderCallback(std::move(callback)) {}
+ const SkMatrix& getTransform() const { return mTransform; }
+ sk_sp<SkColorSpace> getColorSpace() const { return mColorSpace; }
+
+ void invokeRenderCallback(android::base::unique_fd&& fenceFd, int status) {
+ if (mRenderCallback) {
+ std::invoke(mRenderCallback, std::move(fenceFd), status);
+ }
+ }
+
+private:
+ SkMatrix mTransform = SkMatrix::I();
+ sk_sp<SkColorSpace> mColorSpace = SkColorSpace::MakeSRGB();
+ RenderCallback mRenderCallback = nullptr;
+};
+
+} // namespace renderthread
+} // namespace uirenderer
+} // namespace android
+#endif // HARDWAREBUFFERRENDERER_H_
diff --git a/libs/hwui/renderthread/IRenderPipeline.h b/libs/hwui/renderthread/IRenderPipeline.h
index 35e370f..715c17d 100644
--- a/libs/hwui/renderthread/IRenderPipeline.h
+++ b/libs/hwui/renderthread/IRenderPipeline.h
@@ -16,17 +16,19 @@
#pragma once
+#include <SkColorSpace.h>
+#include <SkRect.h>
+#include <android-base/unique_fd.h>
+#include <utils/RefBase.h>
+
+#include "ColorMode.h"
#include "DamageAccumulator.h"
#include "FrameInfoVisualizer.h"
+#include "HardwareBufferRenderParams.h"
#include "LayerUpdateQueue.h"
#include "Lighting.h"
#include "SwapBehavior.h"
#include "hwui/Bitmap.h"
-#include "ColorMode.h"
-
-#include <SkColorSpace.h>
-#include <SkRect.h>
-#include <utils/RefBase.h>
class GrDirectContext;
@@ -64,10 +66,14 @@
const LightGeometry& lightGeometry, LayerUpdateQueue* layerUpdateQueue,
const Rect& contentDrawBounds, bool opaque, const LightInfo& lightInfo,
const std::vector<sp<RenderNode>>& renderNodes,
- FrameInfoVisualizer* profiler) = 0;
+ FrameInfoVisualizer* profiler,
+ const HardwareBufferRenderParams& bufferParams) = 0;
virtual bool swapBuffers(const Frame& frame, bool drew, const SkRect& screenDirty,
FrameInfo* currentFrameInfo, bool* requireSwap) = 0;
virtual DeferredLayerUpdater* createTextureLayer() = 0;
+ [[nodiscard]] virtual android::base::unique_fd flush() = 0;
+ virtual void setHardwareBuffer(AHardwareBuffer* hardwareBuffer) = 0;
+ virtual bool hasHardwareBuffer() = 0;
virtual bool setSurface(ANativeWindow* window, SwapBehavior swapBehavior) = 0;
virtual void onStop() = 0;
virtual bool isSurfaceReady() = 0;
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 07f5a78..ed01e32 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -85,6 +85,18 @@
mRenderThread.queue().runSync([this, name]() { mContext->setName(std::string(name)); });
}
+void RenderProxy::setHardwareBuffer(AHardwareBuffer* buffer) {
+ if (buffer) {
+ AHardwareBuffer_acquire(buffer);
+ }
+ mRenderThread.queue().post([this, hardwareBuffer = buffer]() mutable {
+ mContext->setHardwareBuffer(hardwareBuffer);
+ if (hardwareBuffer) {
+ AHardwareBuffer_release(hardwareBuffer);
+ }
+ });
+}
+
void RenderProxy::setSurface(ANativeWindow* window, bool enableTimeout) {
if (window) { ANativeWindow_acquire(window); }
mRenderThread.queue().post([this, win = window, enableTimeout]() mutable {
@@ -324,6 +336,10 @@
mDrawFrameTask.setContentDrawBounds(left, top, right, bottom);
}
+void RenderProxy::setHardwareBufferRenderParams(const HardwareBufferRenderParams& params) {
+ mDrawFrameTask.setHardwareBufferRenderParams(params);
+}
+
void RenderProxy::setPictureCapturedCallback(
const std::function<void(sk_sp<SkPicture>&&)>& callback) {
mRenderThread.queue().post(
diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h
index a21faa8..17cf665 100644
--- a/libs/hwui/renderthread/RenderProxy.h
+++ b/libs/hwui/renderthread/RenderProxy.h
@@ -18,6 +18,7 @@
#define RENDERPROXY_H_
#include <SkRefCnt.h>
+#include <android/hardware_buffer.h>
#include <android/native_window.h>
#include <android/surface_control.h>
#include <cutils/compiler.h>
@@ -76,7 +77,7 @@
void setSwapBehavior(SwapBehavior swapBehavior);
bool loadSystemProperties();
void setName(const char* name);
-
+ void setHardwareBuffer(AHardwareBuffer* buffer);
void setSurface(ANativeWindow* window, bool enableTimeout = true);
void setSurfaceControl(ASurfaceControl* surfaceControl);
void allocateBuffers();
@@ -84,6 +85,7 @@
void setStopped(bool stopped);
void setLightAlpha(uint8_t ambientShadowAlpha, uint8_t spotShadowAlpha);
void setLightGeometry(const Vector3& lightCenter, float lightRadius);
+ void setHardwareBufferRenderParams(const HardwareBufferRenderParams& params);
void setOpaque(bool opaque);
void setColorMode(ColorMode mode);
int64_t* frameInfo();
diff --git a/libs/hwui/tests/unit/CanvasContextTests.cpp b/libs/hwui/tests/unit/CanvasContextTests.cpp
index 88420a5..9e376e3 100644
--- a/libs/hwui/tests/unit/CanvasContextTests.cpp
+++ b/libs/hwui/tests/unit/CanvasContextTests.cpp
@@ -38,7 +38,7 @@
std::unique_ptr<CanvasContext> canvasContext(
CanvasContext::create(renderThread, false, rootNode.get(), &contextFactory, 0, 0));
- ASSERT_FALSE(canvasContext->hasSurface());
+ ASSERT_FALSE(canvasContext->hasOutputTarget());
canvasContext->destroy();
}
diff --git a/libs/hwui/tests/unit/GraphicsStatsServiceTests.cpp b/libs/hwui/tests/unit/GraphicsStatsServiceTests.cpp
index 92fd829..c2d23e6 100644
--- a/libs/hwui/tests/unit/GraphicsStatsServiceTests.cpp
+++ b/libs/hwui/tests/unit/GraphicsStatsServiceTests.cpp
@@ -15,6 +15,7 @@
*/
#include <android-base/macros.h>
+#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <stdio.h>
#include <stdlib.h>
@@ -49,8 +50,14 @@
// No code left untested
TEST(GraphicsStats, findRootPath) {
- std::string expected = "/data/local/tmp/nativetest/hwui_unit_tests/" ABI_STRING;
- EXPECT_EQ(expected, findRootPath());
+ // Different tools/infrastructure seem to push this to different locations. It shouldn't really
+ // matter where the binary is, so add new locations here as needed. This test still seems good
+ // as it's nice to understand the possibility space, and ensure findRootPath continues working
+ // as expected.
+ std::string acceptableLocations[] = {"/data/nativetest/hwui_unit_tests",
+ "/data/nativetest64/hwui_unit_tests",
+ "/data/local/tmp/nativetest/hwui_unit_tests/" ABI_STRING};
+ EXPECT_THAT(acceptableLocations, ::testing::Contains(findRootPath()));
}
TEST(GraphicsStats, saveLoad) {
diff --git a/libs/incident/Android.bp b/libs/incident/Android.bp
index ff1714d..a996700 100644
--- a/libs/incident/Android.bp
+++ b/libs/incident/Android.bp
@@ -60,6 +60,7 @@
":libincident_aidl",
"src/IncidentReportArgs.cpp",
],
+ min_sdk_version: "29",
}
cc_library_shared {
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 761edf6..4475aed 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -3500,6 +3500,19 @@
}
/**
+ * Suspends the use of LE Audio.
+ *
+ * @param enable {@code true} to suspend le audio, {@code false} to unsuspend
+ *
+ * @hide
+ */
+ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+ @RequiresPermission(android.Manifest.permission.BLUETOOTH_STACK)
+ public void setLeAudioSuspended(boolean enable) {
+ AudioSystem.setParameters("LeAudioSuspended=" + enable);
+ }
+
+ /**
* Gets a variable number of parameter values from audio hardware.
*
* @param keys list of parameters
diff --git a/media/java/android/media/ImageUtils.java b/media/java/android/media/ImageUtils.java
index 8f7019d..44bb56e 100644
--- a/media/java/android/media/ImageUtils.java
+++ b/media/java/android/media/ImageUtils.java
@@ -257,10 +257,10 @@
case ImageFormat.RAW_SENSOR:
case ImageFormat.RAW_PRIVATE: // round estimate, real size is unknown
case ImageFormat.DEPTH16:
- case ImageFormat.YCBCR_P010:
estimatedBytePerPixel = 2.0;
break;
case PixelFormat.RGB_888:
+ case ImageFormat.YCBCR_P010:
estimatedBytePerPixel = 3.0;
break;
case PixelFormat.RGBA_8888:
diff --git a/media/java/android/media/MediaRoute2Info.java b/media/java/android/media/MediaRoute2Info.java
index e8648cc..1022d93 100644
--- a/media/java/android/media/MediaRoute2Info.java
+++ b/media/java/android/media/MediaRoute2Info.java
@@ -353,6 +353,8 @@
final Set<String> mDeduplicationIds;
final Bundle mExtras;
final String mProviderId;
+ final boolean mIsVisibilityRestricted;
+ final Set<String> mAllowedPackages;
MediaRoute2Info(@NonNull Builder builder) {
mId = builder.mId;
@@ -372,6 +374,8 @@
mDeduplicationIds = builder.mDeduplicationIds;
mExtras = builder.mExtras;
mProviderId = builder.mProviderId;
+ mIsVisibilityRestricted = builder.mIsVisibilityRestricted;
+ mAllowedPackages = builder.mAllowedPackages;
}
MediaRoute2Info(@NonNull Parcel in) {
@@ -393,6 +397,8 @@
mDeduplicationIds = Set.of(in.readStringArray());
mExtras = in.readBundle();
mProviderId = in.readString();
+ mIsVisibilityRestricted = in.readBoolean();
+ mAllowedPackages = Set.of(in.createString8Array());
}
/**
@@ -628,6 +634,15 @@
}
/**
+ * Returns whether this route is visible to the package with the given name.
+ * @hide
+ */
+ public boolean isVisibleTo(String packageName) {
+ return !mIsVisibilityRestricted || getPackageName().equals(packageName)
+ || mAllowedPackages.contains(packageName);
+ }
+
+ /**
* Dumps the current state of the object to the given {@code pw} as a human-readable string.
*
* <p> Used in the context of dumpsys. </p>
@@ -655,6 +670,8 @@
pw.println(indent + "mDeduplicationIds=" + mDeduplicationIds);
pw.println(indent + "mExtras=" + mExtras);
pw.println(indent + "mProviderId=" + mProviderId);
+ pw.println(indent + "mIsVisibilityRestricted=" + mIsVisibilityRestricted);
+ pw.println(indent + "mAllowedPackages=" + mAllowedPackages);
}
private void dumpVolume(@NonNull PrintWriter pw, @NonNull String prefix) {
@@ -705,7 +722,9 @@
&& (mVolume == other.mVolume)
&& Objects.equals(mAddress, other.mAddress)
&& Objects.equals(mDeduplicationIds, other.mDeduplicationIds)
- && Objects.equals(mProviderId, other.mProviderId);
+ && Objects.equals(mProviderId, other.mProviderId)
+ && (mIsVisibilityRestricted == other.mIsVisibilityRestricted)
+ && Objects.equals(mAllowedPackages, other.mAllowedPackages);
}
@Override
@@ -713,7 +732,8 @@
// Note: mExtras is not included.
return Objects.hash(mId, mName, mFeatures, mType, mIsSystem, mIconUri, mDescription,
mConnectionState, mClientPackageName, mPackageName, mVolumeHandling, mVolumeMax,
- mVolume, mAddress, mDeduplicationIds, mProviderId);
+ mVolume, mAddress, mDeduplicationIds, mProviderId, mIsVisibilityRestricted,
+ mAllowedPackages);
}
@Override
@@ -733,6 +753,8 @@
.append(", volume=").append(getVolume())
.append(", deduplicationIds=").append(String.join(",", getDeduplicationIds()))
.append(", providerId=").append(getProviderId())
+ .append(", isVisibilityRestricted=").append(mIsVisibilityRestricted)
+ .append(", allowedPackages=").append(String.join(",", mAllowedPackages))
.append(" }");
return result.toString();
}
@@ -761,6 +783,8 @@
dest.writeStringArray(mDeduplicationIds.toArray(new String[mDeduplicationIds.size()]));
dest.writeBundle(mExtras);
dest.writeString(mProviderId);
+ dest.writeBoolean(mIsVisibilityRestricted);
+ dest.writeString8Array(mAllowedPackages.toArray(new String[0]));
}
/**
@@ -787,6 +811,8 @@
Set<String> mDeduplicationIds;
Bundle mExtras;
String mProviderId;
+ boolean mIsVisibilityRestricted;
+ Set<String> mAllowedPackages;
/**
* Constructor for builder to create {@link MediaRoute2Info}.
@@ -809,6 +835,7 @@
mName = name;
mFeatures = new ArrayList<>();
mDeduplicationIds = Set.of();
+ mAllowedPackages = Set.of();
}
/**
@@ -854,6 +881,8 @@
mExtras = new Bundle(routeInfo.mExtras);
}
mProviderId = routeInfo.mProviderId;
+ mIsVisibilityRestricted = routeInfo.mIsVisibilityRestricted;
+ mAllowedPackages = routeInfo.mAllowedPackages;
}
/**
@@ -1057,6 +1086,29 @@
}
/**
+ * Sets the visibility of this route to public. This is the default
+ * visibility for routes that are public to all other apps.
+ */
+ @NonNull
+ public Builder setVisibilityPublic() {
+ mIsVisibilityRestricted = false;
+ mAllowedPackages = Set.of();
+ return this;
+ }
+
+ /**
+ * Sets the visibility of this route to restricted. This means that the
+ * route is only visible to a set of package name.
+ * @param allowedPackages set of package names which are allowed to see this route.
+ */
+ @NonNull
+ public Builder setVisibilityRestricted(@NonNull Set<String> allowedPackages) {
+ mIsVisibilityRestricted = true;
+ mAllowedPackages = Set.copyOf(allowedPackages);
+ return this;
+ }
+
+ /**
* Builds the {@link MediaRoute2Info media route info}.
*
* @throws IllegalArgumentException if no features are added.
diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java
index aea6bcb..3abfc629 100644
--- a/media/java/android/media/MediaRouter2Manager.java
+++ b/media/java/android/media/MediaRouter2Manager.java
@@ -247,7 +247,6 @@
return getTransferableRoutes(sessions.get(sessions.size() - 1));
}
-
/**
* Gets available routes for the given routing session.
* The returned routes can be passed to
@@ -313,9 +312,15 @@
mDiscoveryPreferenceMap.getOrDefault(packageName, RouteDiscoveryPreference.EMPTY);
for (MediaRoute2Info route : getSortedRoutes(discoveryPreference)) {
- if (sessionInfo.getTransferableRoutes().contains(route.getId())
- || (includeSelectedRoutes
- && sessionInfo.getSelectedRoutes().contains(route.getId()))) {
+ if (!route.isVisibleTo(packageName)) {
+ continue;
+ }
+ boolean transferableRoutesContainRoute =
+ sessionInfo.getTransferableRoutes().contains(route.getId());
+ boolean selectedRoutesContainRoute =
+ sessionInfo.getSelectedRoutes().contains(route.getId());
+ if (transferableRoutesContainRoute
+ || (includeSelectedRoutes && selectedRoutesContainRoute)) {
routes.add(route);
continue;
}
diff --git a/media/java/android/media/RouteListingPreference.java b/media/java/android/media/RouteListingPreference.java
index b1d74d4..b03653c0 100644
--- a/media/java/android/media/RouteListingPreference.java
+++ b/media/java/android/media/RouteListingPreference.java
@@ -19,6 +19,9 @@
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.Intent;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
@@ -40,6 +43,18 @@
*/
public final class RouteListingPreference implements Parcelable {
+ /**
+ * {@link Intent} action for apps to take the user to a screen for transferring media playback
+ * to the route with the id provided by the extra with key {@link #EXTRA_ROUTE_ID}.
+ */
+ public static final String ACTION_TRANSFER_MEDIA = "android.media.action.TRANSFER_MEDIA";
+
+ /**
+ * {@link Intent} string extra key that contains the {@link Item#getRouteId() id} of the route
+ * to transfer to, as part of an {@link #ACTION_TRANSFER_MEDIA} intent.
+ */
+ public static final String EXTRA_ROUTE_ID = "android.media.extra.ROUTE_ID";
+
@NonNull
public static final Creator<RouteListingPreference> CREATOR =
new Creator<>() {
@@ -56,10 +71,12 @@
@NonNull private final List<Item> mItems;
private final boolean mUseSystemOrdering;
+ @Nullable private final ComponentName mInAppOnlyItemRoutingReceiver;
private RouteListingPreference(Builder builder) {
mItems = builder.mItems;
mUseSystemOrdering = builder.mUseSystemOrdering;
+ mInAppOnlyItemRoutingReceiver = builder.mInAppOnlyItemRoutingReceiver;
}
private RouteListingPreference(Parcel in) {
@@ -67,6 +84,7 @@
in.readParcelableList(new ArrayList<>(), Item.class.getClassLoader(), Item.class);
mItems = List.copyOf(items);
mUseSystemOrdering = in.readBoolean();
+ mInAppOnlyItemRoutingReceiver = ComponentName.readFromParcel(in);
}
/**
@@ -90,6 +108,21 @@
return mUseSystemOrdering;
}
+ /**
+ * Returns a {@link ComponentName} for handling routes disabled via {@link
+ * Item#DISABLE_REASON_IN_APP_ONLY}, or null if the user needs to manually navigate to the app
+ * in order to route to select the corresponding routes.
+ *
+ * <p>If the user selects an {@link Item} disabled via {@link Item#DISABLE_REASON_IN_APP_ONLY},
+ * and this method returns a non-null {@link ComponentName}, the system takes the user back to
+ * the app by launching an intent to the returned {@link ComponentName}, using action {@link
+ * #ACTION_TRANSFER_MEDIA}, with the extra {@link #EXTRA_ROUTE_ID}.
+ */
+ @Nullable
+ public ComponentName getInAppOnlyItemRoutingReceiver() {
+ return mInAppOnlyItemRoutingReceiver;
+ }
+
// RouteListingPreference Parcelable implementation.
@Override
@@ -101,6 +134,7 @@
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeParcelableList(mItems, flags);
dest.writeBoolean(mUseSystemOrdering);
+ ComponentName.writeToParcel(mInAppOnlyItemRoutingReceiver, dest);
}
// Equals and hashCode.
@@ -114,12 +148,15 @@
return false;
}
RouteListingPreference that = (RouteListingPreference) other;
- return mItems.equals(that.mItems) && mUseSystemOrdering == that.mUseSystemOrdering;
+ return mItems.equals(that.mItems)
+ && mUseSystemOrdering == that.mUseSystemOrdering
+ && Objects.equals(
+ mInAppOnlyItemRoutingReceiver, that.mInAppOnlyItemRoutingReceiver);
}
@Override
public int hashCode() {
- return Objects.hash(mItems, mUseSystemOrdering);
+ return Objects.hash(mItems, mUseSystemOrdering, mInAppOnlyItemRoutingReceiver);
}
/** Builder for {@link RouteListingPreference}. */
@@ -127,6 +164,7 @@
private List<Item> mItems;
private boolean mUseSystemOrdering;
+ private ComponentName mInAppOnlyItemRoutingReceiver;
/** Creates a new instance with default values (documented in the setters). */
public Builder() {
@@ -159,6 +197,18 @@
}
/**
+ * See {@link #getInAppOnlyItemRoutingReceiver()}.
+ *
+ * <p>The default value is {@code null}.
+ */
+ @NonNull
+ public Builder setInAppOnlyItemRoutingReceiver(
+ @Nullable ComponentName inAppOnlyItemRoutingReceiver) {
+ mInAppOnlyItemRoutingReceiver = inAppOnlyItemRoutingReceiver;
+ return this;
+ }
+
+ /**
* Creates and returns a new {@link RouteListingPreference} instance with the given
* parameters.
*/
@@ -203,7 +253,8 @@
DISABLE_REASON_NONE,
DISABLE_REASON_SUBSCRIPTION_REQUIRED,
DISABLE_REASON_DOWNLOADED_CONTENT,
- DISABLE_REASON_AD
+ DISABLE_REASON_AD,
+ DISABLE_REASON_IN_APP_ONLY
})
public @interface DisableReason {}
@@ -221,6 +272,14 @@
public static final int DISABLE_REASON_DOWNLOADED_CONTENT = 2;
/** The corresponding route is not available because an ad is in progress. */
public static final int DISABLE_REASON_AD = 3;
+ /**
+ * The corresponding route is only available for routing from within the app.
+ *
+ * <p>The user may still select the corresponding route if the app provides an {@link
+ * #getInAppOnlyItemRoutingReceiver() in-app routing receiver}, in which case the system
+ * will take the user to the app.
+ */
+ public static final int DISABLE_REASON_IN_APP_ONLY = 4;
@NonNull
public static final Creator<Item> CREATOR =
@@ -257,7 +316,11 @@
Preconditions.checkArgument(mSessionParticipantCount >= 0);
}
- /** Returns the id of the route that corresponds to this route listing preference item. */
+ /**
+ * Returns the id of the route that corresponds to this route listing preference item.
+ *
+ * @see MediaRoute2Info#getId()
+ */
@NonNull
public String getRouteId() {
return mRouteId;
@@ -282,6 +345,7 @@
* @see #DISABLE_REASON_SUBSCRIPTION_REQUIRED
* @see #DISABLE_REASON_DOWNLOADED_CONTENT
* @see #DISABLE_REASON_AD
+ * @see #DISABLE_REASON_IN_APP_ONLY
*/
@DisableReason
public int getDisableReason() {
diff --git a/media/java/android/media/tv/ITvInputClient.aidl b/media/java/android/media/tv/ITvInputClient.aidl
index ed2fd20..d55d287 100644
--- a/media/java/android/media/tv/ITvInputClient.aidl
+++ b/media/java/android/media/tv/ITvInputClient.aidl
@@ -49,6 +49,7 @@
void onTimeShiftCurrentPositionChanged(long timeMs, int seq);
void onAitInfoUpdated(in AitInfo aitInfo, int seq);
void onSignalStrength(int stength, int seq);
+ void onTvMessage(in String type, in Bundle data, int seq);
void onTuned(in Uri channelUri, int seq);
// For the recording session
diff --git a/media/java/android/media/tv/ITvInputSessionCallback.aidl b/media/java/android/media/tv/ITvInputSessionCallback.aidl
index b2a8d1c..8216622 100644
--- a/media/java/android/media/tv/ITvInputSessionCallback.aidl
+++ b/media/java/android/media/tv/ITvInputSessionCallback.aidl
@@ -58,4 +58,7 @@
// For ad response
void onAdResponse(in AdResponse response);
void onAdBufferConsumed(in AdBuffer buffer);
+
+ // For messages sent from the TV input
+ void onTvMessage(in String type, in Bundle data);
}
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 690fcb1..e6da1a3 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -22,6 +22,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.StringDef;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
@@ -130,6 +131,20 @@
VIDEO_UNAVAILABLE_REASON_CAS_REBOOTING, VIDEO_UNAVAILABLE_REASON_CAS_UNKNOWN})
public @interface VideoUnavailableReason {}
+ /**
+ * @hide
+ */
+ public static final String TV_MESSAGE_TYPE_WATERMARK = "Watermark";
+ /**
+ * @hide
+ */
+ public static final String TV_MESSAGE_TYPE_ATSC_CC = "ATSC_CC";
+
+ /** @hide */
+ @Retention(RetentionPolicy.SOURCE)
+ @StringDef({TV_MESSAGE_TYPE_WATERMARK, TV_MESSAGE_TYPE_ATSC_CC})
+ public @interface TvMessageType {}
+
static final int VIDEO_UNAVAILABLE_REASON_START = 0;
static final int VIDEO_UNAVAILABLE_REASON_END = 18;
@@ -690,6 +705,17 @@
public void onTuned(Session session, Uri channelUri) {
}
+ /**
+ * This is called when the session receives a new Tv Message
+ *
+ * @param type the type of {@link TvMessageType}
+ * @param data the raw data of the message
+ * @hide
+ */
+ public void onTvMessage(Session session, @TvInputManager.TvMessageType String type,
+ Bundle data) {
+ }
+
// For the recording session only
/**
* This is called when the current recording session has stopped recording and created a
@@ -919,6 +945,19 @@
});
}
+ void postTvMessage(String type, Bundle data) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mSessionCallback.onTvMessage(mSession, type, data);
+ if (mSession.mIAppNotificationEnabled
+ && mSession.getInteractiveAppSession() != null) {
+ mSession.getInteractiveAppSession().notifyTvMessage(type, data);
+ }
+ }
+ });
+ }
+
// For the recording session only
void postRecordingStopped(final Uri recordedProgramUri) {
mHandler.post(new Runnable() {
@@ -1379,6 +1418,18 @@
}
@Override
+ public void onTvMessage(String type, Bundle data, int seq) {
+ synchronized (mSessionCallbackRecordMap) {
+ SessionCallbackRecord record = mSessionCallbackRecordMap.get(seq);
+ if (record == null) {
+ Log.e(TAG, "Callback not found for seq " + seq);
+ return;
+ }
+ record.postTvMessage(type, data);
+ }
+ }
+
+ @Override
public void onRecordingStopped(Uri recordedProgramUri, int seq) {
synchronized (mSessionCallbackRecordMap) {
SessionCallbackRecord record = mSessionCallbackRecordMap.get(seq);
diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java
index c46cdbc..15f511b 100755
--- a/media/java/android/media/tv/TvInputService.java
+++ b/media/java/android/media/tv/TvInputService.java
@@ -2063,6 +2063,27 @@
}
/**
+ * Informs the application of the raw data from the TV message.
+ * @param type The {@link TvInputManager.TvMessageType} of message that was sent.
+ * @param data The data sent with the message.
+ * @hide
+ */
+ public void notifyTvMessage(@TvInputManager.TvMessageType String type, Bundle data) {
+ }
+
+ /**
+ * Called when the application enables or disables the detection of the specified message
+ * type.
+ * @param type The {@link TvInputManager.TvMessageType} of message that was sent.
+ * @param enabled {@code true} if you want to enable TV message detecting
+ * {@code false} otherwise.
+ * @hide
+ */
+ public void onSetTvMessageEnabled(@TvInputManager.TvMessageType String type,
+ boolean enabled) {
+ }
+
+ /**
* Called when the application requests to tune to a given channel for TV program recording.
*
* <p>The application may call this method before starting or after stopping recording, but
diff --git a/media/java/android/media/tv/TvView.java b/media/java/android/media/tv/TvView.java
index ff3d06c..2fdbc3b 100644
--- a/media/java/android/media/tv/TvView.java
+++ b/media/java/android/media/tv/TvView.java
@@ -653,6 +653,17 @@
mOnUnhandledInputEventListener = listener;
}
+ /**
+ * Enables or disables TV message detecting in the streams of bound TV input.
+ *
+ * @param type The type of {@link android.media.tv.TvInputManager.TvMessageType}
+ * @param enabled {@code true} if you want to enable TV message detecting
+ * {@code false} otherwise.
+ * @hide
+ */
+ public void setTvMessageEnabled(@TvInputManager.TvMessageType String type, boolean enabled) {
+ }
+
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (super.dispatchKeyEvent(event)) {
@@ -1094,6 +1105,17 @@
*/
public void onTuned(@NonNull String inputId, @NonNull Uri channelUri) {
}
+
+ /**
+ * This is called when the session has been tuned to the given channel.
+ *
+ * @param type The type of {@link android.media.tv.TvInputManager.TvMessageType}
+ * @param data The raw data of the message
+ * @hide
+ */
+ public void onTvMessage(@NonNull String inputId, @TvInputManager.TvMessageType String type,
+ Bundle data) {
+ }
}
/**
@@ -1432,5 +1454,19 @@
mCallback.onTuned(mInputId, channelUri);
}
}
+
+ @Override
+ public void onTvMessage(Session session, String type, Bundle data) {
+ if (DEBUG) {
+ Log.d(TAG, "onTvMessage(type=" + type + ", data=" + data + ")");
+ }
+ if (this != mSessionCallback) {
+ Log.w(TAG, "onTvMessage - session not created");
+ return;
+ }
+ if (mCallback != null) {
+ mCallback.onTvMessage(mInputId, type, data);
+ }
+ }
}
}
diff --git a/media/java/android/media/tv/interactive/ITvInteractiveAppManager.aidl b/media/java/android/media/tv/interactive/ITvInteractiveAppManager.aidl
index 3b272daa..5a0ac84 100644
--- a/media/java/android/media/tv/interactive/ITvInteractiveAppManager.aidl
+++ b/media/java/android/media/tv/interactive/ITvInteractiveAppManager.aidl
@@ -70,6 +70,7 @@
void notifySignalStrength(in IBinder sessionToken, int stength, int userId);
void notifyRecordingStarted(in IBinder sessionToken, in String recordingId, int userId);
void notifyRecordingStopped(in IBinder sessionToken, in String recordingId, int userId);
+ void notifyTvMessage(in IBinder sessionToken, in String type, in Bundle data, int userId);
void setSurface(in IBinder sessionToken, in Surface surface, int userId);
void dispatchSurfaceChanged(in IBinder sessionToken, int format, int width, int height,
int userId);
diff --git a/media/java/android/media/tv/interactive/ITvInteractiveAppSession.aidl b/media/java/android/media/tv/interactive/ITvInteractiveAppSession.aidl
index bc09cea..20ba57b 100644
--- a/media/java/android/media/tv/interactive/ITvInteractiveAppSession.aidl
+++ b/media/java/android/media/tv/interactive/ITvInteractiveAppSession.aidl
@@ -59,6 +59,7 @@
void notifySignalStrength(int strength);
void notifyRecordingStarted(in String recordingId);
void notifyRecordingStopped(in String recordingId);
+ void notifyTvMessage(in String type, in Bundle data);
void setSurface(in Surface surface);
void dispatchSurfaceChanged(int format, int width, int height);
void notifyBroadcastInfoResponse(in BroadcastInfoResponse response);
diff --git a/media/java/android/media/tv/interactive/ITvInteractiveAppSessionWrapper.java b/media/java/android/media/tv/interactive/ITvInteractiveAppSessionWrapper.java
index af031dc..a55e1ac 100644
--- a/media/java/android/media/tv/interactive/ITvInteractiveAppSessionWrapper.java
+++ b/media/java/android/media/tv/interactive/ITvInteractiveAppSessionWrapper.java
@@ -86,8 +86,9 @@
private static final int DO_NOTIFY_RECORDING_STARTED = 30;
private static final int DO_NOTIFY_RECORDING_STOPPED = 31;
private static final int DO_NOTIFY_AD_BUFFER_CONSUMED = 32;
- private static final int DO_SEND_RECORDING_INFO = 33;
- private static final int DO_SEND_RECORDING_INFO_LIST = 34;
+ private static final int DO_NOTIFY_TV_MESSAGE = 33;
+ private static final int DO_SEND_RECORDING_INFO = 34;
+ private static final int DO_SEND_RECORDING_INFO_LIST = 35;
private final HandlerCaller mCaller;
private Session mSessionImpl;
@@ -213,6 +214,12 @@
mSessionImpl.notifyTracksChanged((List<TvTrackInfo>) msg.obj);
break;
}
+ case DO_NOTIFY_TV_MESSAGE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ mSessionImpl.notifyTvMessage((String) args.arg1, (Bundle) args.arg2);
+ args.recycle();
+ break;
+ }
case DO_NOTIFY_VIDEO_AVAILABLE: {
mSessionImpl.notifyVideoAvailable();
break;
@@ -390,6 +397,12 @@
}
@Override
+ public void notifyTvMessage(String type, Bundle data) {
+ mCaller.executeOrSendMessage(
+ mCaller.obtainMessageOO(DO_NOTIFY_TRACK_SELECTED, type, data));
+ }
+
+ @Override
public void notifyTracksChanged(List<TvTrackInfo> tracks) {
mCaller.executeOrSendMessage(mCaller.obtainMessageO(DO_NOTIFY_TRACKS_CHANGED, tracks));
}
diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppManager.java b/media/java/android/media/tv/interactive/TvInteractiveAppManager.java
index fa60b66..f4847f7 100755
--- a/media/java/android/media/tv/interactive/TvInteractiveAppManager.java
+++ b/media/java/android/media/tv/interactive/TvInteractiveAppManager.java
@@ -1504,6 +1504,21 @@
}
}
+ /**
+ * Notifies Interactive APP session when a new TV message is received.
+ */
+ public void notifyTvMessage(String type, Bundle data) {
+ if (mToken == null) {
+ Log.w(TAG, "The session has been already released");
+ return;
+ }
+ try {
+ mService.notifyTvMessage(mToken, type, data, mUserId);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
private void flushPendingEventsLocked() {
mHandler.removeMessages(InputEventHandler.MSG_FLUSH_INPUT_EVENT);
diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppService.java b/media/java/android/media/tv/interactive/TvInteractiveAppService.java
index 1fa0aaa..3ca9f2f 100755
--- a/media/java/android/media/tv/interactive/TvInteractiveAppService.java
+++ b/media/java/android/media/tv/interactive/TvInteractiveAppService.java
@@ -641,6 +641,14 @@
* @hide
*/
public void onAdBufferConsumed(AdBuffer buffer) {
+
+ }
+
+ /**
+ * Called when a tv message is received
+ * @hide
+ */
+ public void onTvMessage(@NonNull String type, @NonNull Bundle data) {
}
@Override
@@ -1289,6 +1297,13 @@
onAdResponse(response);
}
+ void notifyTvMessage(String type, Bundle data) {
+ if (DEBUG) {
+ Log.d(TAG, "notifyTvMessage (type=" + type + ", data= " + data + ")");
+ }
+ onTvMessage(type, data);
+ }
+
/**
* Calls {@link #onAdBufferConsumed}.
*/
diff --git a/packages/CompanionDeviceManager/res/drawable-night/ic_warning.xml b/packages/CompanionDeviceManager/res/drawable-night/ic_warning.xml
new file mode 100644
index 0000000..6c8906e
--- /dev/null
+++ b/packages/CompanionDeviceManager/res/drawable-night/ic_warning.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="@android:color/system_accent1_200">
+ <path android:fillColor="@android:color/white"
+ android:pathData="M1,21 L12,2 23,21ZM4.45,19H19.55L12,6ZM12,18Q12.425,18 12.713,17.712Q13,17.425 13,17Q13,16.575 12.713,16.288Q12.425,16 12,16Q11.575,16 11.288,16.288Q11,16.575 11,17Q11,17.425 11.288,17.712Q11.575,18 12,18ZM11,15H13V10H11ZM12,12.5Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/CompanionDeviceManager/res/drawable/ic_warning.xml b/packages/CompanionDeviceManager/res/drawable/ic_warning.xml
new file mode 100644
index 0000000..d70bbb3
--- /dev/null
+++ b/packages/CompanionDeviceManager/res/drawable/ic_warning.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ Copyright (C) 2023 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="@android:color/system_accent1_600">
+ <path android:fillColor="@android:color/white"
+ android:pathData="M1,21 L12,2 23,21ZM4.45,19H19.55L12,6ZM12,18Q12.425,18 12.713,17.712Q13,17.425 13,17Q13,16.575 12.713,16.288Q12.425,16 12,16Q11.575,16 11.288,16.288Q11,16.575 11,17Q11,17.425 11.288,17.712Q11.575,18 12,18ZM11,15H13V10H11ZM12,12.5Z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/CompanionDeviceManager/res/layout/data_transfer_confirmation.xml b/packages/CompanionDeviceManager/res/layout/data_transfer_confirmation.xml
index 3d08493..db8ebb4 100644
--- a/packages/CompanionDeviceManager/res/layout/data_transfer_confirmation.xml
+++ b/packages/CompanionDeviceManager/res/layout/data_transfer_confirmation.xml
@@ -14,43 +14,61 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/data_transfer_confirmation"
- style="@style/ContainerLayout">
-
- <!-- Do NOT change the ID of the root LinearLayout above: it's referenced in CTS tests. -->
-
- <LinearLayout style="@style/Description">
- <TextView
- android:id="@+id/title"
- style="@style/DescriptionTitle" />
-
- <TextView
- android:id="@+id/summary"
- style="@style/DescriptionSummary" />
-
- </LinearLayout>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ style="@style/ScrollViewStyle">
<LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:orientation="vertical"
- android:layout_marginTop="16dp">
+ android:id="@+id/data_transfer_confirmation"
+ style="@style/ContainerLayout">
- <!-- Do NOT change the IDs of the buttons: they are referenced in CTS tests. -->
+ <!-- Do NOT change the ID of the root LinearLayout above: it's referenced in CTS tests. -->
- <Button
- android:id="@+id/btn_positive"
- style="@style/PositiveButton"
- android:text="@string/consent_yes" />
+ <ImageView
+ android:id="@+id/header_icon"
+ android:layout_width="match_parent"
+ android:layout_height="32dp"
+ android:gravity="center"
+ android:layout_marginTop="18dp"
+ android:src="@drawable/ic_warning"
+ android:contentDescription="@null" />
- <Button
- android:id="@+id/btn_negative"
- android:layout_marginBottom="12dp"
- style="@style/NegativeButton"
- android:text="@string/consent_no" />
+ <LinearLayout style="@style/Description">
+
+ <TextView
+ android:id="@+id/title"
+ style="@style/DescriptionTitle" />
+
+ <TextView
+ android:id="@+id/summary"
+ style="@style/DescriptionSummary" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:orientation="vertical"
+ android:layout_marginTop="12dp"
+ android:layout_marginBottom="18dp">
+
+ <!-- Do NOT change the IDs of the buttons: they are referenced in CTS tests. -->
+
+ <Button
+ android:id="@+id/btn_positive"
+ style="@style/PositiveButton"
+ android:text="@string/consent_yes" />
+
+ <Button
+ android:id="@+id/btn_negative"
+ style="@style/NegativeButton"
+ android:text="@string/consent_no" />
+
+ </LinearLayout>
</LinearLayout>
-</LinearLayout>
\ No newline at end of file
+</ScrollView>
\ No newline at end of file
diff --git a/packages/CompanionDeviceManager/res/values-af/strings.xml b/packages/CompanionDeviceManager/res/values-af/strings.xml
index bdbd70f..c2350a2 100644
--- a/packages/CompanionDeviceManager/res/values-af/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-af/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakte"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalender"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofoon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Toestelle in die omtrek"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto\'s en media"</string>
<string name="permission_notification" msgid="693762568127741203">"Kennisgewings"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Toestel in die Omtrek-stroming"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Het toegang tot jou foonnommer en netwerkinligting. Word vereis vir die maak van oproepe en VoIP, stemboodskapdiens, oproepherleiding en die wysiging van oproeprekords"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kan jou kontaklys lees, skep, of wysig, en het toegang tot die lys van al die rekeninge wat op jou toestel gebruik word"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Kan die mikrofoon gebruik om oudio op te neem"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Kan alle kennisgewings lees, insluitend inligting soos kontakte, boodskappe en foto\'s"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stroom jou foon se apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-am/strings.xml b/packages/CompanionDeviceManager/res/values-am/strings.xml
index 962bd74..f629c04f 100644
--- a/packages/CompanionDeviceManager/res/values-am/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-am/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"ዕውቂያዎች"</string>
<string name="permission_calendar" msgid="6805668388691290395">"ቀን መቁጠሪያ"</string>
<string name="permission_microphone" msgid="2152206421428732949">"ማይክሮፎን"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"በአቅራቢያ ያሉ መሣሪያዎች"</string>
<string name="permission_storage" msgid="6831099350839392343">"ፎቶዎች እና ሚዲያ"</string>
<string name="permission_notification" msgid="693762568127741203">"ማሳወቂያዎች"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"መተግበሪያዎች"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"በአቅራቢያ ያለ መሣሪያ በዥረት መልቀቅ"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"የእርስዎን ስልክ ቁጥር እና የአውታረ መረብ መረጃ መድረስ ይችላል። ጥሪዎችን ለማድረግ እና VoIP፣ የድምፅ መልዕክት፣ የጥሪ ማዘዋወር እና የጥሪ ምዝገባ ማስታወሻዎችን ለማርትዕ ያስፈልጋል"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"የእኛን የዕውቂያ ዝርዝር ማንበብ፣ መፍጠር ወይም ማርትዕ እንዲሁም በመሣሪያዎ ላይ ጥቅም ላይ የዋሉትን ሁሉንም መለያዎች ዝርዝር መድረስ ይችላል"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"ማይክሮፎኑን በመጠቀም ኦዲዮ መቅዳት ይችላል"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"እንደ እውቂያዎች፣ መልዕክቶች እና ፎቶዎች ያሉ መረጃዎችን ጨምሮ ሁሉንም ማሳወቂያዎች ማንበብ ይችላል"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"የስልክዎን መተግበሪያዎች በዥረት ይልቀቁ"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml
index 65b6697e8c..4fe6140 100644
--- a/packages/CompanionDeviceManager/res/values-ar/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"جهات الاتصال"</string>
<string name="permission_calendar" msgid="6805668388691290395">"التقويم"</string>
<string name="permission_microphone" msgid="2152206421428732949">"الميكروفون"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"الأجهزة المجاورة"</string>
<string name="permission_storage" msgid="6831099350839392343">"الصور والوسائط"</string>
<string name="permission_notification" msgid="693762568127741203">"الإشعارات"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"التطبيقات"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"بثّ محتوى إلى الأجهزة المجاورة"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"يسمح هذا الإذن بالوصول إلى رقم هاتفك ومعلومات الشبكة. ويجب منح هذا الإذن لإجراء مكالمات وتلقّي بريد صوتي عبر بروتوكول الصوت على الإنترنت وإعادة توجيه المكالمات وتعديل سجلات المكالمات."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"يسمح هذا الإذن بقراءة قائمة جهات الاتصال أو إنشائها أو تعديلها وكذلك قائمة كل الحسابات المُستخدَمة على جهازك."</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"يمكن تسجيل الصوت باستخدام الميكروفون."</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"يمكن لهذا الملف الشخصي قراءة جميع الإشعارات، بما في ذلك المعلومات، مثل جهات الاتصال والرسائل والصور."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"بث تطبيقات هاتفك"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-as/strings.xml b/packages/CompanionDeviceManager/res/values-as/strings.xml
index 6b5870a..6938ed2 100644
--- a/packages/CompanionDeviceManager/res/values-as/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-as/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"সম্পৰ্ক"</string>
<string name="permission_calendar" msgid="6805668388691290395">"কেলেণ্ডাৰ"</string>
<string name="permission_microphone" msgid="2152206421428732949">"মাইক্ৰ’ফ’ন"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"নিকটৱৰ্তী ডিভাইচ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ফট’ আৰু মিডিয়া"</string>
<string name="permission_notification" msgid="693762568127741203">"জাননী"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"এপ্"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"নিকটৱৰ্তী ডিভাইচত ষ্ট্ৰীম কৰা"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"কল আৰু VoIP, ভইচমেইল, কল ৰিডাইৰেক্ট আৰু কলৰ লগ সম্পাদনা কৰিবলৈ আৱশ্যক হোৱা আপোনাৰ ফ’ন নম্বৰ আৰু নেটৱৰ্কৰ তথ্য এক্সেছ কৰিব পাৰে"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"আমাৰ সম্পৰ্কসূচী পঢ়িব, সৃষ্টি কৰিব অথবা সম্পাদনা কৰিব পাৰে আৰু লগতে আপোনাৰ ডিভাইচত ব্যৱহাৰ কৰা আটাইবোৰ একাউণ্টৰ সূচীখন এক্সেছ কৰিব পাৰে"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰি অডিঅ’ ৰেকৰ্ড কৰিব পাৰে"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"সম্পৰ্কসূচী, বাৰ্তা আৰু ফট’ৰ দৰে তথ্যকে ধৰি আটাইবোৰ জাননী পঢ়িব পাৰে"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"আপোনাৰ ফ’নৰ এপ্ ষ্ট্ৰীম কৰক"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-az/strings.xml b/packages/CompanionDeviceManager/res/values-az/strings.xml
index ec74883..66b4916 100644
--- a/packages/CompanionDeviceManager/res/values-az/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-az/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakt"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Təqvim"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Yaxınlıqdakı cihazlar"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto və media"</string>
<string name="permission_notification" msgid="693762568127741203">"Bildirişlər"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Tətbiqlər"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Yaxınlıqdakı Cihazlarda Yayım"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Telefon nömrənizə və şəbəkə məlumatınıza giriş edə bilər. Zəng etmək və VoIP, səsli poçt, zəng yönləndirməsi və zəng qeydlərini redaktə etmək üçün tələb olunur"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kontakt siyahımızı oxuya, yarada və ya redaktə edə, həmçinin cihazınızda istifadə edilən bütün hesabların siyahısına giriş edə bilər"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Mikrofonunuzdan istifadə edərək audio yaza bilər."</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Bütün bildirişləri, o cümlədən kontaktlar, mesajlar və fotolar kimi məlumatları oxuya bilər"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefonunuzun tətbiqlərini yayımlayın"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
index cf0be97..09b8c0d 100644
--- a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakti"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Uređaji u blizini"</string>
<string name="permission_storage" msgid="6831099350839392343">"Slike i mediji"</string>
<string name="permission_notification" msgid="693762568127741203">"Obaveštenja"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Strimovanje, uređaji u blizini"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Može da pristupa vašem broju telefona i informacijama o mreži. Neophodno za upućivanje poziva i VoIP, govornu poštu, preusmeravanje poziva i izmene evidencije poziva"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Može da čita, kreira ili menja listu kontakata, kao i da pristupa listi svih naloga koji se koriste na vašem uređaju"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Može da snima zvuk pomoću mikrofona"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Može da čita sva obaveštenja, uključujući informacije poput kontakata, poruka i slika"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Strimujte aplikacije na telefonu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-be/strings.xml b/packages/CompanionDeviceManager/res/values-be/strings.xml
index 8ab290f..2491298 100644
--- a/packages/CompanionDeviceManager/res/values-be/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-be/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Кантакты"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Каляндар"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Мікрафон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Прылады паблізу"</string>
<string name="permission_storage" msgid="6831099350839392343">"Фота і медыяфайлы"</string>
<string name="permission_notification" msgid="693762568127741203">"Апавяшчэнні"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Праграмы"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Перадача плынню для прылады паблізу"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Доступ да вашага нумара тэлефона і інфармацыі пра сетку. Гэты дазвол патрабуецца, каб рабіць звычайныя і VoIP-выклікі, адпраўляць галасавыя паведамленні, перанакіроўваць выклікі і рэдагаваць журналы выклікаў"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Магчымасць чытаць, ствараць і рэдагаваць спіс кантактаў, а таксама атрымліваць доступ да спіса ўсіх уліковых запісаў на вашай прыладзе"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Можа запісваць аўдыя з выкарыстаннем мікрафона"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Можа счытваць усе апавяшчэнні, уключаючы паведамленні, фота і інфармацыю пра кантакты"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Трансляцыя змесціва праграм з вашага тэлефона"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-bg/strings.xml b/packages/CompanionDeviceManager/res/values-bg/strings.xml
index 20b94f9..ce29de7 100644
--- a/packages/CompanionDeviceManager/res/values-bg/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bg/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Контакти"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Календар"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Устройства в близост"</string>
<string name="permission_storage" msgid="6831099350839392343">"Снимки и мултимедия"</string>
<string name="permission_notification" msgid="693762568127741203">"Известия"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Приложения"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Пот. предав. към у-ва наблизо"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Може да осъществява достъп до номера и мрежата на телефона ви. Изисква се за провеждането на обаждания и разговори през VoIP, гласовата поща, пренасочването на обаждания и редактирането на списъците с обажданията"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Може да чете, създава и редактира записи в списъка с контактите ви, както и да осъществява достъп до списъка с всички профили, използвани на устройството ви"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Може да записва аудио посредством микрофона"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Може да чете всички известия, включително различна информация, като например контакти, съобщения и снимки"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Поточно предаване на приложенията на телефона ви"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-bn/strings.xml b/packages/CompanionDeviceManager/res/values-bn/strings.xml
index d144510..02eae74 100644
--- a/packages/CompanionDeviceManager/res/values-bn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bn/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"পরিচিতি"</string>
<string name="permission_calendar" msgid="6805668388691290395">"ক্যালেন্ডার"</string>
<string name="permission_microphone" msgid="2152206421428732949">"মাইক্রোফোন"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"আশেপাশের ডিভাইস"</string>
<string name="permission_storage" msgid="6831099350839392343">"ফটো ও মিডিয়া"</string>
<string name="permission_notification" msgid="693762568127741203">"বিজ্ঞপ্তি"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"অ্যাপ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"আশেপাশের ডিভাইসে স্ট্রিম করা"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"আপনার ফোন নম্বর ও নেটওয়ার্ক সংক্রান্ত তথ্য অ্যাক্সেস করতে পারবে। কল করার জন্য এবং VoIP, ভয়েসমেল, কল রিডাইরেক্ট ও কল লগ এডিট করার জন্য যা প্রয়োজন"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"আমাদের পরিচিতি তালিকা দেখতে, তৈরি বা এডিট করতে পারবে, পাশাপাশি আপনার ডিভাইসে ব্যবহার করা হয় এমন সবকটি অ্যাকাউন্টের তালিকা অ্যাক্সেস করতে পারবে"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"মাইক্রোফোন ব্যবহার করে অডিও রেকর্ড করতে পারবেন"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"সব বিজ্ঞপ্তি পড়তে পারবে, যার মধ্যে পরিচিতি, মেসেজ ও ফটোর মতো তথ্য অন্তর্ভুক্ত"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"আপনার ফোনের অ্যাপ স্ট্রিম করুন"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-bs/strings.xml b/packages/CompanionDeviceManager/res/values-bs/strings.xml
index 606abc0..07daffb 100644
--- a/packages/CompanionDeviceManager/res/values-bs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bs/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakti"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Uređaji u blizini"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografije i mediji"</string>
<string name="permission_notification" msgid="693762568127741203">"Obavještenja"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Prijenos na uređajima u blizini"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Može pristupiti vašem broju telefona i informacijama o mreži. Potrebno je za upućivanje poziva i VoIP, govornu poštu, preusmjeravanje poziva te uređivanje zapisnika poziva"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Može čitati, kreirati ili uređivati našu listu kontakata te pristupiti listi svih računa koji se koriste na vašem uređaju"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Može snimati zvuk pomoću mikrofona"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Može čitati sva obavještenja, uključujući informacije kao što su kontakti, poruke i fotografije"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Prenosite aplikacije s telefona"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ca/strings.xml b/packages/CompanionDeviceManager/res/values-ca/strings.xml
index 8d0ed5a..d03fca5 100644
--- a/packages/CompanionDeviceManager/res/values-ca/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ca/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contactes"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendari"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Micròfon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositius propers"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos i contingut multimèdia"</string>
<string name="permission_notification" msgid="693762568127741203">"Notificacions"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplicacions"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Reproducció en disp. propers"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Pot accedir al teu número de telèfon i a la informació de la xarxa. Es requereix per fer trucades i VoIP, enviar missatges de veu, redirigir trucades i editar els registres de trucades."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Pot llegir, crear o editar la nostra llista de contactes i també accedir a la llista de tots els comptes que s\'utilitzen al teu dispositiu"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Pots gravar àudios amb el micròfon"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Pot llegir totes les notificacions, inclosa informació com ara els contactes, els missatges i les fotos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Reprodueix en continu aplicacions del telèfon"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-cs/strings.xml b/packages/CompanionDeviceManager/res/values-cs/strings.xml
index bb6d105..ecfbac3 100644
--- a/packages/CompanionDeviceManager/res/values-cs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-cs/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakty"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendář"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Zařízení v okolí"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotky a média"</string>
<string name="permission_notification" msgid="693762568127741203">"Oznámení"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikace"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streamování do zařízení v okolí"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Má přístup k vašemu telefonnímu číslu a informacím o síti. Vyžadováno pro volání a VoIP, hlasové zprávy, přesměrování hovorů a úpravy seznamů hovorů."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Může načítat, vytvářet a upravovat váš seznam kontaktů a má přístup k seznamu všech účtů používaných v zařízení"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Může nahrávat zvuk pomocí mikrofonu"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Může číst veškerá oznámení včetně informací, jako jsou kontakty, zprávy a fotky"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streamujte aplikace v telefonu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-da/strings.xml b/packages/CompanionDeviceManager/res/values-da/strings.xml
index 70bae81..62a05d1 100644
--- a/packages/CompanionDeviceManager/res/values-da/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-da/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakter"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalender"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Enheder i nærheden"</string>
<string name="permission_storage" msgid="6831099350839392343">"Billeder og medier"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifikationer"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming til enhed i nærheden"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Har adgang til oplysninger om dit telefonnummer og netværk. Påkrævet for at foretage opkald og VoIP, talebeskeder, omdirigering og redigering af opkaldshistorikken"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kan læse, oprette eller redigere din liste over kontakter samt tilgå lister for alle de konti, der bruges på din enhed"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Kan optage lyd via mikrofonen"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Kan læse alle notifikationer, herunder oplysninger som f.eks. kontakter, beskeder og billeder"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream din telefons apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-de/strings.xml b/packages/CompanionDeviceManager/res/values-de/strings.xml
index 6a765be..79d4df3 100644
--- a/packages/CompanionDeviceManager/res/values-de/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-de/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakte"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalender"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Geräte in der Nähe"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos und Medien"</string>
<string name="permission_notification" msgid="693762568127741203">"Benachrichtigungen"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streamen an Geräte in der Nähe"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Darf auf deine Telefonnummer und Netzwerkinformationen zugreifen. Erforderlich für normale und VoIP-Anrufe, Mailbox, Anrufweiterleitung und das Bearbeiten von Anruflisten"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Darf deine Kontaktliste lesen, erstellen oder bearbeiten sowie auf die Kontaktliste aller auf diesem Gerät verwendeten Konten zugreifen"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Mit dem Mikrofon dürfen Audioaufnahmen gemacht werden"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Kann alle Benachrichtigungen lesen, einschließlich Informationen wie Kontakten, Nachrichten und Fotos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Smartphone-Apps streamen"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-el/strings.xml b/packages/CompanionDeviceManager/res/values-el/strings.xml
index 23b1dbd..a857b9a 100644
--- a/packages/CompanionDeviceManager/res/values-el/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-el/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Επαφές"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Ημερολόγιο"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Μικρόφωνο"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Συσκευές σε κοντινή απόσταση"</string>
<string name="permission_storage" msgid="6831099350839392343">"Φωτογραφίες και μέσα"</string>
<string name="permission_notification" msgid="693762568127741203">"Ειδοποιήσεις"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Εφαρμογές"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Ροή σε κοντινή συσκευή"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Δυνατότητα πρόσβασης στον αριθμό τηλεφώνου σας και στις πληροφορίες δικτύου. Απαιτείται για την πραγματοποίηση κλήσεων και για υπηρεσίες VoIP, μηνύματα αυτόματου τηλεφωνητή, ανακατεύθυνση κλήσεων και επεξεργασία αρχείων καταγραφής κλήσεων"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Δυνατότητα ανάγνωσης, δημιουργίας ή επεξεργασίας της λίστας επαφών σας, καθώς και πρόσβασης στη λίστα επαφών όλων των λογαριασμών που χρησιμοποιούνται στη συσκευή σας"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Μπορεί να εγγράφει ήχο χρησιμοποιώντας το μικρόφωνο"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Μπορεί να διαβάσει όλες τις ειδοποιήσεις, συμπεριλαμβανομένων πληροφοριών όπως επαφές, μηνύματα και φωτογραφίες"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Μεταδώστε σε ροή τις εφαρμογές του τηλεφώνου σας"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
index d897bab..ed63728 100644
--- a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
@@ -51,17 +51,19 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
+ <string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Nearby device streaming"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Can access your phone number and network info. Required for making calls and VoIP, voicemail, call redirect and editing call logs"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Can read, create or edit our contact list, as well as access the list of all accounts used on your device"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
<string name="permission_microphone_summary" msgid="4241354865859396558">"Can record audio using the microphone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to and determine the relative position of nearby devices"</string>
<string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages and photos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
index 04fbe8f..aeaef38 100644
--- a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
@@ -51,17 +51,19 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
+ <string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Nearby Device Streaming"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Can access your phone number and network info. Required for making calls and VoIP, voicemail, call redirect, and editing call logs"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Can read, create, or edit our contact list, as well as access the list of all accounts used on your device"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
<string name="permission_microphone_summary" msgid="4241354865859396558">"Can record audio using the microphone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to, and determine the relative position of nearby devices"</string>
<string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages, and photos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
index d897bab..ed63728 100644
--- a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
@@ -51,17 +51,19 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
+ <string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Nearby device streaming"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Can access your phone number and network info. Required for making calls and VoIP, voicemail, call redirect and editing call logs"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Can read, create or edit our contact list, as well as access the list of all accounts used on your device"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
<string name="permission_microphone_summary" msgid="4241354865859396558">"Can record audio using the microphone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to and determine the relative position of nearby devices"</string>
<string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages and photos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
index d897bab..ed63728 100644
--- a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
@@ -51,17 +51,19 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
+ <string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Nearby device streaming"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Can access your phone number and network info. Required for making calls and VoIP, voicemail, call redirect and editing call logs"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Can read, create or edit our contact list, as well as access the list of all accounts used on your device"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
<string name="permission_microphone_summary" msgid="4241354865859396558">"Can record audio using the microphone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to and determine the relative position of nearby devices"</string>
<string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages and photos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml b/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
index bde667c..25dd7ba 100644
--- a/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
@@ -51,17 +51,19 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
+ <string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Nearby Device Streaming"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Can access your phone number and network info. Required for making calls and VoIP, voicemail, call redirect, and editing call logs"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Can read, create, or edit our contact list, as well as access the list of all accounts used on your device"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
<string name="permission_microphone_summary" msgid="4241354865859396558">"Can record audio using the microphone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to, and determine the relative position of nearby devices"</string>
<string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages, and photos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
index 41ebc86..75c58b8 100644
--- a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contactos"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendario"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Micrófono"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos cercanos"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos y contenido multimedia"</string>
<string name="permission_notification" msgid="693762568127741203">"Notificaciones"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Transmisión a disp. cercanos"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Puede acceder a tu número de teléfono y a la información de la red (es obligatorio para realizar llamadas VoIP, enviar mensajes de voz, redireccionar llamadas y editar registros de llamadas)"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Puede leer, crear o editar la lista de contactos, además de acceder a la lista de contactos para todas las cuentas que se usan en tu dispositivo"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Puede grabar audio con el micrófono"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Puede leer todas las notificaciones, incluso con información como contactos, mensajes y fotos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Transmitir las apps de tu teléfono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-es/strings.xml b/packages/CompanionDeviceManager/res/values-es/strings.xml
index 1c6d86e..b6676cb 100644
--- a/packages/CompanionDeviceManager/res/values-es/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contactos"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendario"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Micrófono"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos cercanos"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos y elementos multimedia"</string>
<string name="permission_notification" msgid="693762568127741203">"Notificaciones"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplicaciones"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming en dispositivos cercanos"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Puede acceder a tu número de teléfono e información de red. Es necesario para hacer llamadas y VoIP, enviar mensajes de voz, redirigir llamadas y editar registros de llamadas"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Puede leer, crear o editar tu lista de contactos, así como acceder a la lista de contactos de todas las cuentas que se usan en tu dispositivo"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Puede grabar audio usando el micrófono"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Puede leer todas las notificaciones, incluida información como contactos, mensajes y fotos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Muestra en streaming las aplicaciones de tu teléfono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-et/strings.xml b/packages/CompanionDeviceManager/res/values-et/strings.xml
index dec4552..f67c9a6 100644
--- a/packages/CompanionDeviceManager/res/values-et/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-et/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontaktid"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalender"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Läheduses olevad seadmed"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotod ja meedia"</string>
<string name="permission_notification" msgid="693762568127741203">"Märguanded"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Rakendused"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Läheduses olevas seadmes esit."</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Pääseb juurde teie telefoninumbrile ja võrguteabele. Nõutav helistamiseks, VoIP-i ja kõneposti kasutamiseks, kõnede ümbersuunamiseks ning kõnelogide muutmiseks."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Saab lugeda, luua või muuta kontaktiloendit ja pääseda juurde kõigi teie seadmes kasutatavate kontode loendile"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Saab mikrofoni abil heli salvestada"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Kõikide märguannete, sealhulgas teabe, nagu kontaktid, sõnumid ja fotod, lugemine"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefoni rakenduste voogesitamine"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-eu/strings.xml b/packages/CompanionDeviceManager/res/values-eu/strings.xml
index c895832..98eec25 100644
--- a/packages/CompanionDeviceManager/res/values-eu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-eu/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontaktuak"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Egutegia"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofonoa erabiltzeko baimena"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Inguruko gailuak"</string>
<string name="permission_storage" msgid="6831099350839392343">"Argazkiak eta multimedia-edukia"</string>
<string name="permission_notification" msgid="693762568127741203">"Jakinarazpenak"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikazioak"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Inguruko gailuetara igortzeko baimena"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Telefono-zenbakia eta sareari buruzko informazioa atzi ditzake. Dei arruntak eta VoIP bidezko deiak egiteko, erantzungailurako, deiak birbideratzeko aukerarako eta deien erregistroan editatzeko behar da."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kontaktuen zerrenda irakurri, sortu edo edita dezake, baita kontuan erabilitako kontu guztien zerrenda atzitu ere"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Audioa graba dezake mikrofonoa erabilita"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Jakinarazpen guztiak irakur ditzake; besteak beste, kontaktuak, mezuak, argazkiak eta antzeko informazioa"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Igorri zuzenean telefonoko aplikazioak"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-fa/strings.xml b/packages/CompanionDeviceManager/res/values-fa/strings.xml
index 5e24ebd..5fd7876 100644
--- a/packages/CompanionDeviceManager/res/values-fa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fa/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"مخاطبین"</string>
<string name="permission_calendar" msgid="6805668388691290395">"تقویم"</string>
<string name="permission_microphone" msgid="2152206421428732949">"میکروفون"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"دستگاههای اطراف"</string>
<string name="permission_storage" msgid="6831099350839392343">"عکسها و رسانهها"</string>
<string name="permission_notification" msgid="693762568127741203">"اعلانها"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"برنامهها"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"جاریسازی دستگاههای اطراف"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"میتواند به شماره تلفن و اطلاعات شبکهتان دسترسی داشته باشد. برای برقراری تماسهای تلفنی و VoIP، استفاده از پست صوتی، هدایت تماس، و ویرایش گزارشهای تماس لازم است"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"میتواند فهرست مخاطبین ما را بخواند و ایجاد یا ویرایش کند و همچنین میتواند به فهرست همه حسابهای مورداستفاده در دستگاهتان دسترسی داشته باشد"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"میتواند بااستفاده از میکروفون صدا ضبط کند"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"میتواند همه اعلانها، ازجمله اطلاعاتی مثل مخاطبین، پیامها، و عکسها را بخواند"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"جاریسازی برنامههای تلفن"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-fi/strings.xml b/packages/CompanionDeviceManager/res/values-fi/strings.xml
index effacd1..11e7c70 100644
--- a/packages/CompanionDeviceManager/res/values-fi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fi/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Yhteystiedot"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalenteri"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofoni"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Lähellä olevat laitteet"</string>
<string name="permission_storage" msgid="6831099350839392343">"Kuvat ja media"</string>
<string name="permission_notification" msgid="693762568127741203">"Ilmoitukset"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Sovellukset"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Striimaus muille laitteille"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Voi nähdä puhelinnumerosi ja verkon tiedot. Tätä tarvitaan puheluiden soittamiseen, VoIP:n, puhelinvastaajan ja puheluiden uudelleenohjauksen käyttämiseen sekä puhelulokien muokkaamiseen."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Voi luoda yhteystietolistan tai lukea tai muokata sitä sekä avata listan kaikilla tileillä, joita käytetään laitteellasi."</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Voi tallentaa audiota mikrofonilla"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Voi lukea kaikkia ilmoituksia, esim. kontakteihin, viesteihin ja kuviin liittyviä tietoja"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Striimaa puhelimen sovelluksia"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
index 3fc2695..4059416 100644
--- a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Agenda"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Appareils à proximité"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos et fichiers multimédias"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Applications"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Diffusion en cours à proximité"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Peut accéder à votre numéro de téléphone et à vos renseignements de réseau. Ceci est nécessaire pour passer des appels téléphoniques et des appels voix sur IP, laisser un message vocal, rediriger les appels et modifier les journaux d\'appels"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Peut lire, créer ou modifier notre liste de contacts et accéder à la liste de tous les comptes utilisés sur votre appareil"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Il est possible d\'enregistrer du contenu audio en utilisant le microphone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Peut lire toutes les notifications, y compris les renseignements tels que les contacts, les messages et les photos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Diffusez les applications de votre téléphone"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-fr/strings.xml b/packages/CompanionDeviceManager/res/values-fr/strings.xml
index 5dab30d..0b94d40 100644
--- a/packages/CompanionDeviceManager/res/values-fr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Agenda"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Micro"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Appareils à proximité"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos et contenus multimédias"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Applis"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming appareil à proximité"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Peut accéder à votre numéro de téléphone et aux informations réseau. Nécessaire pour passer des appels et pour VoIP, la messagerie vocale, la redirection d\'appels et la modification des journaux d\'appels."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Peut lire, créer ou modifier votre liste de contacts, et accéder à la liste de tous les comptes utilisés sur votre appareil"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Peut enregistrer de l\'audio à l\'aide du micro"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Peut lire toutes les notifications, y compris des informations comme les contacts, messages et photos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Diffuser en streaming les applis de votre téléphone"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-gl/strings.xml b/packages/CompanionDeviceManager/res/values-gl/strings.xml
index 9ddaa57..f18157c 100644
--- a/packages/CompanionDeviceManager/res/values-gl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gl/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contactos"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendario"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Micrófono"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos próximos"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos e contido multimedia"</string>
<string name="permission_notification" msgid="693762568127741203">"Notificacións"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplicacións"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Emitir a dispositivos próximos"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Pode acceder ao teu número de teléfono e á información de rede do dispositivo. Necesítase para facer chamadas, usar VoIP, acceder ao correo de voz, redirixir chamadas e modificar os rexistros de chamadas"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Pode ler, crear ou editar a túa lista de contactos, así como acceder á lista de todas as contas usadas no teu dispositivo"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Pode gravar audio usando o micrófono"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Pode ler todas as notificacións (que poden incluír información como contactos, mensaxes e fotos)"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Emite as aplicacións do teu teléfono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-gu/strings.xml b/packages/CompanionDeviceManager/res/values-gu/strings.xml
index baa1729..0a62551 100644
--- a/packages/CompanionDeviceManager/res/values-gu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gu/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"સંપર્કો"</string>
<string name="permission_calendar" msgid="6805668388691290395">"કૅલેન્ડર"</string>
<string name="permission_microphone" msgid="2152206421428732949">"માઇક્રોફોન"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"નજીકના ડિવાઇસ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ફોટા અને મીડિયા"</string>
<string name="permission_notification" msgid="693762568127741203">"નોટિફિકેશન"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ઍપ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"નજીકના ડિવાઇસ પર સ્ટ્રીમિંગ"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"તમારો ફોન નંબર અને નેટવર્કની માહિતી ઍક્સેસ કરી શકે છે. કૉલ અને VoIP કૉલ, વૉઇસમેઇલ કરવા, કૉલ રીડાયરેક્ટ કરવા તથા કૉલ લૉગમાં ફેરફાર કરવા માટે જરૂરી છે"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"તમારી સંપર્ક સૂચિ વાંચી, બનાવી શકે છે અથવા તેમાં ફેરફાર કરી શકે છે તેમજ તમારા ડિવાઇસ પર ઉપયોગમાં લેવાતા બધા એકાઉન્ટની સંપર્ક સૂચિને ઍક્સેસ કરી શકે છે"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"માઇક્રોફોનનો ઉપયોગ કરીને ઑડિયો રેકોર્ડ કરી શકાય છે"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"સંપર્કો, મેસેજ અને ફોટા જેવી માહિતી સહિતના બધા નોટિફિકેશન વાંચી શકે છે"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"તમારા ફોનની ઍપ સ્ટ્રીમ કરો"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-hi/strings.xml b/packages/CompanionDeviceManager/res/values-hi/strings.xml
index 3f3ea5c..6d7f1b4 100644
--- a/packages/CompanionDeviceManager/res/values-hi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hi/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"संपर्क"</string>
<string name="permission_calendar" msgid="6805668388691290395">"कैलेंडर"</string>
<string name="permission_microphone" msgid="2152206421428732949">"माइक्रोफ़ोन"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"आस-पास मौजूद डिवाइस"</string>
<string name="permission_storage" msgid="6831099350839392343">"फ़ोटो और मीडिया"</string>
<string name="permission_notification" msgid="693762568127741203">"सूचनाएं"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ऐप्लिकेशन"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"आस-पास के डिवाइस पर स्ट्रीमिंग"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"यह अनुमति मिलने पर, आपके फ़ोन नंबर और नेटवर्क की जानकारी को ऐक्सेस किया जा सकता है, जो VoIP और कॉल, वॉइसमेल, कॉल रीडायरेक्ट, और कॉल लॉग में बदलाव करने के लिए ज़रूरी है"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"यह अनुमति मिलने पर, आपके प्रोफ़ाइल के लिए संपर्क सूची बनाई जा सकती है, इसे पढ़ा जा सकता है, और इसमें बदलाव किए जा सकते हैं. साथ ही, डिवाइस पर इस्तेमाल किए गए सभी खातों की संपर्क सूची को ऐक्सेस किया जा सकता है"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"माइक्रोफ़ोन का इस्तेमाल करके ऑडियो रिकॉर्ड किया जा सकता है"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"इससे सभी सूचनाएं देखी जा सकती हैं. इनमें संपर्क, मैसेज, और फ़ोटो जैसी जानकारी शामिल होती है"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"अपने फ़ोन पर मौजूद ऐप्लिकेशन स्ट्रीम करें"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml
index de9b60e..2210785 100644
--- a/packages/CompanionDeviceManager/res/values-hr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakti"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Uređaji u blizini"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografije i mediji"</string>
<string name="permission_notification" msgid="693762568127741203">"Obavijesti"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streamanje uređaja u blizini"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Može pristupati vašem broju telefona i podacima o mreži. Potrebno je za uspostavu poziva i VoIP, govornu poštu, preusmjeravanje poziva i uređivanje zapisnika poziva"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Može čitati, izrađivati ili uređivati vaš popis kontakata te pristupati popisu kontakata svih računa korištenih na vašem uređaju"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Može snimiti zvuk pomoću mikrofona"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Može čitati sve obavijesti, uključujući informacije kao što su kontakti, poruke i fotografije"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streaming aplikacija vašeg telefona"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-hu/strings.xml b/packages/CompanionDeviceManager/res/values-hu/strings.xml
index 05a79b3..6dec223 100644
--- a/packages/CompanionDeviceManager/res/values-hu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hu/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Címtár"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Naptár"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Közeli eszközök"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotók és médiatartalmak"</string>
<string name="permission_notification" msgid="693762568127741203">"Értesítések"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Alkalmazások"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streamelés közeli eszközökre"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Hozzáférhet telefonszámához és hálózati adataihoz. Hívások és VoIP indításához, hívásátirányításhoz és hívásnaplók szerkesztéséhez szükséges."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Olvashatja, létrehozhatja és szerkesztheti a névjegylistánkat, valamint hozzáférhet az eszközén használt összes fiók listájához"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Hangfelvételt készíthet a mikrofon használatával."</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Elolvashat minden értesítést, ideértve az olyan információkat, mint a névjegyek, az üzenetek és a fotók"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"A telefon alkalmazásainak streamelése"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-hy/strings.xml b/packages/CompanionDeviceManager/res/values-hy/strings.xml
index f08e42c..a890e93 100644
--- a/packages/CompanionDeviceManager/res/values-hy/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hy/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Կոնտակտներ"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Օրացույց"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Խոսափող"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Մոտակա սարքեր"</string>
<string name="permission_storage" msgid="6831099350839392343">"Լուսանկարներ և մուլտիմեդիա"</string>
<string name="permission_notification" msgid="693762568127741203">"Ծանուցումներ"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Հավելվածներ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Հեռարձակում մոտակա սարքերին"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Կարող է օգտագործել ձեր հեռախոսահամարը և ցանցի մասին տեղեկությունները։ Պահանջվում է սովորական և VoIP զանգեր կատարելու, ձայնային փոստի, զանգերի վերահասցեավորման և զանգերի մատյանները փոփոխելու համար"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Կարող է կարդալ, ստեղծել և փոփոխել կոնտակտների ցանկը, ինչպես նաև բացել ձեր սարքի բոլոր հաշիվների ցանկը"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Կարող է օգտագործել խոսափողը՝ ձայնագրություններ անելու համար"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Կարող է կարդալ բոլոր ծանուցումները, ներառյալ տեղեկությունները, օրինակ՝ կոնտակտները, հաղորդագրությունները և լուսանկարները"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Հեռարձակել հեռախոսի հավելվածները"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-in/strings.xml b/packages/CompanionDeviceManager/res/values-in/strings.xml
index 7340dd1..153797a 100644
--- a/packages/CompanionDeviceManager/res/values-in/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-in/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontak"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalender"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Perangkat di sekitar"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto dan media"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifikasi"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikasi"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming Perangkat di Sekitar"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Dapat mengakses nomor telepon dan info jaringan. Diperlukan untuk melakukan panggilan dan VoIP, pesan suara, pengalihan panggilan, dan pengeditan log panggilan"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Dapat membaca, membuat, atau mengedit daftar kontak, serta mengakses daftar kontak untuk semua akun yang digunakan di perangkat"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Dapat merekam audio menggunakan mikrofon"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Dapat membaca semua notifikasi, termasuk informasi seperti kontak, pesan, dan foto"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streaming aplikasi ponsel"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-is/strings.xml b/packages/CompanionDeviceManager/res/values-is/strings.xml
index 859b2f4..60ae27c 100644
--- a/packages/CompanionDeviceManager/res/values-is/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-is/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Tengiliðir"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Dagatal"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Hljóðnemi"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nálæg tæki"</string>
<string name="permission_storage" msgid="6831099350839392343">"Myndir og efni"</string>
<string name="permission_notification" msgid="693762568127741203">"Tilkynningar"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Forrit"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streymi í nálægum tækjum"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Fær aðgang að símanúmeri og netkerfisupplýsingum. Nauðsynlegt til að hringja símtöl og netsímtöl, fyrir talhólf, framsendingu símtala og breytingar símtalaskráa"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Getur lesið, búið til eða breytt tengiliðalista og fær auk þess aðgang að tengiliðalista allra reikninga sem eru notaðir í tækinu"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Getur tekið upp hljóð með hljóðnemanum"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Getur lesið allar tilkynningar, þar á meðal upplýsingar á borð við tengiliði, skilaboð og myndir"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streymdu forritum símans"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-it/strings.xml b/packages/CompanionDeviceManager/res/values-it/strings.xml
index 7406fc4..9f3c9cd 100644
--- a/packages/CompanionDeviceManager/res/values-it/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-it/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contatti"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendario"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microfono"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivi nelle vicinanze"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto e contenuti multimediali"</string>
<string name="permission_notification" msgid="693762568127741203">"Notifiche"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"App"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming dispos. in vicinanze"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Può accedere al tuo numero di telefono e alle informazioni della rete. Necessaria per chiamate e VoIP, segreteria, deviazione delle chiamate e modifica dei registri chiamate"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Può leggere, creare o modificare l\'elenco contatti, nonché accedere all\'elenco contatti di tutti gli account usati sul dispositivo"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Consente di registrare audio usando il microfono"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Puoi leggere tutte le notifiche, incluse le informazioni come contatti, messaggi e foto"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Trasmetti in streaming le app del tuo telefono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-iw/strings.xml b/packages/CompanionDeviceManager/res/values-iw/strings.xml
index 5d2de01..c435f67 100644
--- a/packages/CompanionDeviceManager/res/values-iw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-iw/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"אנשי קשר"</string>
<string name="permission_calendar" msgid="6805668388691290395">"יומן"</string>
<string name="permission_microphone" msgid="2152206421428732949">"מיקרופון"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"מכשירים בקרבת מקום"</string>
<string name="permission_storage" msgid="6831099350839392343">"תמונות ומדיה"</string>
<string name="permission_notification" msgid="693762568127741203">"התראות"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"אפליקציות"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"סטרימינג למכשירים בקרבת מקום"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"אפשרות לגשת למספר הטלפון ופרטי הרשת שלך. הדבר נדרש לצורך ביצוע שיחות ו-VoIP, להודעה קולית, להפניית שיחות ולעריכת יומני שיחות"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"אפשרות לקרוא, ליצור או לערוך את רשימת אנשי הקשר שלנו, וגם לגשת לרשימה של כל החשבונות שבהם נעשה שימוש במכשיר שלך"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"הרשאה להשתמש במיקרופון כדי להקליט אודיו"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"גישת קריאה לכל ההתראות, כולל מידע כמו אנשי קשר, הודעות ותמונות."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"שידור אפליקציות מהטלפון"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ja/strings.xml b/packages/CompanionDeviceManager/res/values-ja/strings.xml
index 083f211..cfd21a9 100644
--- a/packages/CompanionDeviceManager/res/values-ja/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ja/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"連絡先"</string>
<string name="permission_calendar" msgid="6805668388691290395">"カレンダー"</string>
<string name="permission_microphone" msgid="2152206421428732949">"マイク"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"付近のデバイス"</string>
<string name="permission_storage" msgid="6831099350839392343">"写真とメディア"</string>
<string name="permission_notification" msgid="693762568127741203">"通知"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"アプリ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"付近のデバイスへのストリーミング"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"電話番号とネットワーク情報にアクセスできます。電話と VoIP の発信、ボイスメールの送信、通話のリダイレクト、通話履歴の編集に必要です"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"連絡先リストの読み取り、作成、編集を行えるほか、デバイスで使用するすべてのアカウントのリストにアクセスできます"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"マイクを使って録音できます"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"連絡先、メッセージ、写真に関する情報を含め、すべての通知を読み取ることができます"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"スマートフォンのアプリをストリーミングします"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ka/strings.xml b/packages/CompanionDeviceManager/res/values-ka/strings.xml
index a55b277..4f8b103 100644
--- a/packages/CompanionDeviceManager/res/values-ka/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ka/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"კონტაქტები"</string>
<string name="permission_calendar" msgid="6805668388691290395">"კალენდარი"</string>
<string name="permission_microphone" msgid="2152206421428732949">"მიკროფონი"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"ახლომახლო მოწყობილობები"</string>
<string name="permission_storage" msgid="6831099350839392343">"ფოტოები და მედია"</string>
<string name="permission_notification" msgid="693762568127741203">"შეტყობინებები"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"აპები"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"ახლომდებარე მოწყობილობის სტრიმინგი"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"შეუძლია თქვენი ტელეფონის ნომერსა და ქსელის ინფორმაციაზე წვდომა. საჭიროა ზარების განსახორციელებლად და VoIP-ისთვის, ხმოვანი ფოსტისთვის, ზარის გადამისამართებისა და ზარების ჟურნალების რედაქტირებისთვის"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"შეუძლია ჩვენი კონტაქტების სიის წაკითხვა, შექმნა ან რედაქტირება, ასევე, თქვენს მოწყობილობაზე გამოყენებული ყველა ანგარიშის კონტაქტების სიაზე წვდომა"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"შეუძლია აუდიოს ჩაწერა მიკროფონის გამოყენებით"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"შეუძლია წაიკითხოს ყველა შეტყობინება, მათ შორის ისეთი ინფორმაცია, როგორიცაა კონტაქტები, ტექსტური შეტყობინებები და ფოტოები"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"თქვენი ტელეფონის აპების სტრიმინგი"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-kk/strings.xml b/packages/CompanionDeviceManager/res/values-kk/strings.xml
index fc16562..70b3623 100644
--- a/packages/CompanionDeviceManager/res/values-kk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kk/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Контактілер"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Күнтізбе"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Маңайдағы құрылғылар"</string>
<string name="permission_storage" msgid="6831099350839392343">"Фотосуреттер мен медиафайлдар"</string>
<string name="permission_notification" msgid="693762568127741203">"Хабарландырулар"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Қолданбалар"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Маңайдағы құрылғыға трансляция"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Телефон нөміріңізге және желі ақпаратына қол жеткізе алады. Қоңырау шалу, VoIP, дауыстық хабар жіберу, қоңырау бағытын ауыстыру және қоңырау журналдарын өзгерту үшін қажет."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Контактілер тізімін оқуға, жасауға немесе өзгертуге, сондай-ақ құрылғыңызда қолданылатын барлық аккаунт тізімін пайдалануға рұқсат беріледі."</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Микрофон пайдалану арқылы аудио жаза алады."</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Барлық хабарландыруды, соның ішінде контактілер, хабарлар және фотосуреттер сияқты ақпаратты оқи алады."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Телефон қолданбаларын трансляциялайды."</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-km/strings.xml b/packages/CompanionDeviceManager/res/values-km/strings.xml
index 6da5370..85c1806 100644
--- a/packages/CompanionDeviceManager/res/values-km/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-km/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"ប្រតិទិន"</string>
<string name="permission_microphone" msgid="2152206421428732949">"មីក្រូហ្វូន"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"ឧបករណ៍នៅជិត"</string>
<string name="permission_storage" msgid="6831099350839392343">"រូបថត និងមេឌៀ"</string>
<string name="permission_notification" msgid="693762568127741203">"ការជូនដំណឹង"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"កម្មវិធី"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"ការផ្សាយទៅឧបករណ៍នៅជិត"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"អាចចូលមើលលេខទូរសព្ទ និងព័ត៌មានបណ្ដាញរបស់អ្នក។ ត្រូវបានតម្រូវសម្រាប់ការហៅទូរសព្ទនិង VoIP, សារជាសំឡេង, ការបញ្ជូនបន្តការហៅទូរសព្ទ និងការកែកំណត់ហេតុហៅទូរសព្ទ"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"អាចអាន បង្កើត ឬកែបញ្ជីទំនាក់ទំនងរបស់យើង ក៏ដូចជាចូលប្រើបញ្ជីគណនីទាំងអស់ដែលត្រូវបានប្រើនៅលើឧបករណ៍របស់អ្នក"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"អាចថតសំឡេងដោយប្រើមីក្រូហ្វូន"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"អាចអានការជូនដំណឹងទាំងអស់ រួមទាំងព័ត៌មានដូចជាទំនាក់ទំនង សារ និងរូបថត"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"ផ្សាយកម្មវិធីរបស់ទូរសព្ទអ្នក"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-kn/strings.xml b/packages/CompanionDeviceManager/res/values-kn/strings.xml
index f11da17..ef4699c 100644
--- a/packages/CompanionDeviceManager/res/values-kn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kn/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"ಸಂಪರ್ಕಗಳು"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"ಮೈಕ್ರೊಫೋನ್"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳು"</string>
<string name="permission_storage" msgid="6831099350839392343">"ಫೋಟೋಗಳು ಮತ್ತು ಮಾಧ್ಯಮ"</string>
<string name="permission_notification" msgid="693762568127741203">"ಅಧಿಸೂಚನೆಗಳು"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ಆ್ಯಪ್ಗಳು"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನದ ಸ್ಟ್ರೀಮಿಂಗ್"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"ನಿಮ್ಮ ಫೋನ್ ಸಂಖ್ಯೆ ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಮಾಹಿತಿಯನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಕರೆಗಳನ್ನು ಮಾಡಲು ಮತ್ತು VoIP, ಧ್ವನಿಮೇಲ್, ಕರೆ ಮರುನಿರ್ದೇಶನ ಮತ್ತು ಕರೆಯ ಲಾಗ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಲು ಅಗತ್ಯವಿದೆ"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"ನಮ್ಮ ಸಂಪರ್ಕ ಪಟ್ಟಿಯನ್ನು ಓದಬಹುದು, ರಚಿಸಬಹುದು ಅಥವಾ ಎಡಿಟ್ ಮಾಡಬಹುದು, ಹಾಗೆಯೇ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಬಳಸಲಾದ ಎಲ್ಲಾ ಖಾತೆಗಳ ಪಟ್ಟಿಯನ್ನು ಪ್ರವೇಶಿಸಬಹುದು"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"ಮೈಕ್ರೊಫೋನ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಆಡಿಯೋವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಬಹುದು"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"ಸಂಪರ್ಕಗಳು, ಸಂದೇಶಗಳು ಮತ್ತು ಫೋಟೋಗಳಂತಹ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಂತೆ ಎಲ್ಲಾ ಅಧಿಸೂಚನೆಗಳನ್ನು ಓದಬಹುದು"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"ನಿಮ್ಮ ಫೋನ್ನ ಆ್ಯಪ್ಗಳನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡಿ"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ko/strings.xml b/packages/CompanionDeviceManager/res/values-ko/strings.xml
index 04e6187..ce47b82 100644
--- a/packages/CompanionDeviceManager/res/values-ko/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ko/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"연락처"</string>
<string name="permission_calendar" msgid="6805668388691290395">"캘린더"</string>
<string name="permission_microphone" msgid="2152206421428732949">"마이크"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"근처 기기"</string>
<string name="permission_storage" msgid="6831099350839392343">"사진 및 미디어"</string>
<string name="permission_notification" msgid="693762568127741203">"알림"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"앱"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"근처 기기 스트리밍"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"전화번호 및 네트워크 정보에 액세스할 수 있습니다. 전화 걸기 및 VoIP, 음성사서함, 통화 리디렉션, 통화 기록 수정 시 필요합니다."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"연락처 목록을 읽고, 만들고, 수정할 수 있으며 기기에서 사용되는 모든 계정의 목록에도 액세스할 수 있습니다."</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"마이크를 사용하여 오디오를 녹음할 수 있습니다."</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"연락처, 메시지, 사진 등의 정보를 포함한 모든 알림을 읽을 수 있습니다."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"휴대전화의 앱을 스트리밍합니다."</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ky/strings.xml b/packages/CompanionDeviceManager/res/values-ky/strings.xml
index 89d54c72..07ef58d 100644
--- a/packages/CompanionDeviceManager/res/values-ky/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ky/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Байланыштар"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Жылнаама"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Жакын жердеги түзмөктөр"</string>
<string name="permission_storage" msgid="6831099350839392343">"Сүрөттөр жана медиафайлдар"</string>
<string name="permission_notification" msgid="693762568127741203">"Билдирмелер"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Колдонмолор"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Жакын жердеги түзмөктөрдө алып ойнотуу"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Телефонуңуздун номерин жана тармак тууралуу маалыматты көрө алат. Чалуу жана VoIP, үн почтасы, чалууларды багыттоо жана чалуулар тизмесин түзөтүү үчүн талап кылынат"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Байланыштар тизмесин окуп, түзүп же түзөтүп жана түзмөгүңүздөгү бардык аккаунттардагы тизмелерге кире алат"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Микрофон аркылуу аудио жаздыра алат"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Бардык билдирмелерди, анын ичинде байланыштар, билдирүүлөр жана сүрөттөр сыяктуу маалыматты окуй алат"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Телефондогу колдонмолорду алып ойнотуу"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-lo/strings.xml b/packages/CompanionDeviceManager/res/values-lo/strings.xml
index 43fc12d..0ffe6b9 100644
--- a/packages/CompanionDeviceManager/res/values-lo/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lo/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"ລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
<string name="permission_calendar" msgid="6805668388691290395">"ປະຕິທິນ"</string>
<string name="permission_microphone" msgid="2152206421428732949">"ໄມໂຄຣໂຟນ"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"ອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ຮູບພາບ ແລະ ມີເດຍ"</string>
<string name="permission_notification" msgid="693762568127741203">"ການແຈ້ງເຕືອນ"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ແອັບ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"ການສະຕຣີມອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"ສາມາດເຂົ້າເຖິງເບີໂທລະສັບ ແລະ ຂໍ້ມູນເຄືອຂ່າຍຂອງທ່ານ. ເຊິ່ງຈຳເປັນສຳລັບການໂທ ແລະ VoIP, ຂໍ້ຄວາມສຽງ, ການປ່ຽນເສັ້ນທາງການໂທ ແລະ ການແກ້ໄຂບັນທຶກການໂທ"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"ສາມາດອ່ານ, ສ້າງ ຫຼື ແກ້ໄຂລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງພວກເຮົາ, ຮວມທັງເຂົ້າເຖິງລາຍຊື່ຂອງບັນຊີທັງໝົດທີ່ໃຊ້ຢູ່ໃນອຸປະກອນຂອງທ່ານ"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"ສາມາດບັນທຶກສຽງໂດຍນຳໃຊ້ໄມໂຄຣໂຟນໄດ້"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"ສາມາດອ່ານການແຈ້ງເຕືອນທັງໝົດ, ຮວມທັງຂໍ້ມູນ ເຊັ່ນ: ລາຍຊື່ຜູ້ຕິດຕໍ່, ຂໍ້ຄວາມ ແລະ ຮູບພາບ"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"ສະຕຣີມແອັບຂອງໂທລະສັບທ່ານ"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-lt/strings.xml b/packages/CompanionDeviceManager/res/values-lt/strings.xml
index 11531d0..a1b5def 100644
--- a/packages/CompanionDeviceManager/res/values-lt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lt/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontaktai"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendorius"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofonas"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Įrenginiai netoliese"</string>
<string name="permission_storage" msgid="6831099350839392343">"Nuotraukos ir medija"</string>
<string name="permission_notification" msgid="693762568127741203">"Pranešimai"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Programos"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Perdav. įrenginiams netoliese"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Galima pasiekti telefono numerio ir tinklo informaciją. Reikalinga norint skambinti ir naudoti „VoIP“, balso paštą, skambučių peradresavimo funkciją bei redaguoti skambučių žurnalus"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Galima skaityti, kurti ar redaguoti kontaktų sąrašą bei pasiekti visų įrenginyje naudojamų paskyrų sąrašą"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Naudojant šį mikrofoną negalima įrašyti garso"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Galima skaityti visus pranešimus, įskaitant tokią informaciją kaip kontaktai, pranešimai ir nuotraukos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefono programų perdavimas srautu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-lv/strings.xml b/packages/CompanionDeviceManager/res/values-lv/strings.xml
index 0af8051..232afa59 100644
--- a/packages/CompanionDeviceManager/res/values-lv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lv/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontaktpersonas"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendārs"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofons"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Tuvumā esošas ierīces"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotoattēli un multivides faili"</string>
<string name="permission_notification" msgid="693762568127741203">"Paziņojumi"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Lietotnes"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Straumēšana ierīcēs tuvumā"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Var piekļūt jūsu tālruņa numuram un tīkla informācijai. Nepieciešama, lai veiktu zvanus un VoIP zvanus, izmantotu balss pastu, pāradresētu zvanus un rediģētu zvanu žurnālus."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Var lasīt, izveidot vai rediģēt jūsu kontaktpersonu sarakstu, kā arī piekļūt visu jūsu ierīcē izmantoto kontu kontaktpersonu sarakstiem"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Var ierakstīt audio, izmantojot mikrofonu"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Var lasīt visus paziņojumus, tostarp tādu informāciju kā kontaktpersonas, ziņojumi un fotoattēli."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Straumēt jūsu tālruņa lietotnes"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-mk/strings.xml b/packages/CompanionDeviceManager/res/values-mk/strings.xml
index c35a879..43716e3 100644
--- a/packages/CompanionDeviceManager/res/values-mk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mk/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Контакти"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Календар"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Уреди во близина"</string>
<string name="permission_storage" msgid="6831099350839392343">"Аудиовизуелни содржини"</string>
<string name="permission_notification" msgid="693762568127741203">"Известувања"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Апликации"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Стриминг на уреди во близина"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Може да пристапува до вашиот телефонски број и податоците за мрежата. Потребно за упатување повици и VoIP, говорна пошта, пренасочување повици и изменување евиденција на повици"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Може да го чита, создава или изменува вашиот список со контакти, како и да пристапува до списоците со контакти на сите сметки што се користат на уредот"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Може да снима аудио со микрофонот"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"може да ги чита сите известувања, вклучително и податоци како контакти, пораки и фотографии"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Стримувајте ги апликациите на телефонот"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ml/strings.xml b/packages/CompanionDeviceManager/res/values-ml/strings.xml
index 08e939b..430b936 100644
--- a/packages/CompanionDeviceManager/res/values-ml/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ml/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"മൈക്രോഫോൺ"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"സമീപമുള്ള ഉപകരണങ്ങൾ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ഫോട്ടോകളും മീഡിയയും"</string>
<string name="permission_notification" msgid="693762568127741203">"അറിയിപ്പുകൾ"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ആപ്പുകൾ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"സമീപമുള്ള ഉപകരണ സ്ട്രീമിംഗ്"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"നിങ്ങളുടെ ഫോൺ നമ്പറും നെറ്റ്വർക്ക് വിവരങ്ങളും ആക്സസ് ചെയ്യാനാകും. കോളുകൾ, VoIP, വോയ്സ്മെയിൽ, കോൾ റീഡയറക്റ്റ് ചെയ്യൽ, കോൾ ചരിത്രം എഡിറ്റ് ചെയ്യൽ എന്നിവയ്ക്ക് ഇത് ആവശ്യമാണ്"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"നിങ്ങളുടെ കോൺടാക്റ്റ് ലിസ്റ്റ് വായിക്കാനും സൃഷ്ടിക്കാനും എഡിറ്റ് ചെയ്യാനും കഴിയും, കൂടാതെ നിങ്ങളുടെ ഉപകരണത്തിൽ ഉപയോഗിക്കുന്ന എല്ലാ അക്കൗണ്ടുകളുടെയും കോൺടാക്റ്റ് ലിസ്റ്റ് ആക്സസ് ചെയ്യാനുമാകും"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"മൈക്രോഫോൺ ഉപയോഗിച്ച് ഓഡിയോ റെക്കോർഡ് ചെയ്യാം"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"കോൺടാക്റ്റുകൾ, സന്ദേശങ്ങൾ, ഫോട്ടോകൾ മുതലായ വിവരങ്ങൾ ഉൾപ്പെടെയുള്ള എല്ലാ അറിയിപ്പുകളും വായിക്കാനാകും"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"നിങ്ങളുടെ ഫോണിലെ ആപ്പുകൾ സ്ട്രീം ചെയ്യുക"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-mn/strings.xml b/packages/CompanionDeviceManager/res/values-mn/strings.xml
index e2a252a..cf781d4 100644
--- a/packages/CompanionDeviceManager/res/values-mn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mn/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Харилцагчид"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Календарь"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Ойролцоох төхөөрөмжүүд"</string>
<string name="permission_storage" msgid="6831099350839392343">"Зураг болон медиа"</string>
<string name="permission_notification" msgid="693762568127741203">"Мэдэгдэл"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Аппууд"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Ойролцоох төхөөрөмжид дамжуул"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Таны утасны дугаар болон сүлжээний мэдээлэлд хандах боломжтой. Дуудлага хийх, VoIP, дуут шуудан, дуудлагыг дахин чиглүүлэх болон дуудлагын жагсаалтыг засахад шаардлагатай"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Манай харилцагчийн жагсаалтыг унших, үүсгэх эсвэл засахаас гадна таны төхөөрөмж дээр ашигласан бүх бүртгэлийн жагсаалтад хандах боломжтой"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Микрофоныг ашиглан аудио бичих боломжтой"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Харилцагчид, мессеж болон зураг зэрэг мэдээллийг оруулаад бүх мэдэгдлийг унших боломжтой"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Утасныхаа аппуудыг дамжуулаарай"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-mr/strings.xml b/packages/CompanionDeviceManager/res/values-mr/strings.xml
index f8e7727..f67561e 100644
--- a/packages/CompanionDeviceManager/res/values-mr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mr/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"मायक्रोफोन"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"जवळपासची डिव्हाइस"</string>
<string name="permission_storage" msgid="6831099350839392343">"फोटो आणि मीडिया"</string>
<string name="permission_notification" msgid="693762568127741203">"सूचना"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ॲप्स"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"जवळपासच्या डिव्हाइसवरील स्ट्रीमिंग"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"तुमचा फोन नंबर आणि नेटवर्कची माहिती अॅक्सेस करू शकते. कॉल करणे व VoIP, व्हॉइसमेल, कॉल रीडिरेक्ट करणे आणि कॉल लॉग संपादित करणे यांसाठी आवश्यक"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"आमची संपर्क सूची रीड, तयार आणि संपादित करू शकते, तसेच तुमच्या डिव्हाइसवर वापरल्या जाणाऱ्या खात्यांची सूची अॅक्सेस करू शकते"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"मायक्रोफोन वापरून ऑडिओ रेकॉर्ड करता येईल"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"संपर्क, मेसेज आणि फोटो यांसारख्या माहितीचा समावेश असलेल्या सर्व सूचना वाचू शकते"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"तुमच्या फोनवरील ॲप्स स्ट्रीम करा"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ms/strings.xml b/packages/CompanionDeviceManager/res/values-ms/strings.xml
index ca02edc..fd1c488 100644
--- a/packages/CompanionDeviceManager/res/values-ms/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ms/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kenalan"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Peranti berdekatan"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto dan media"</string>
<string name="permission_notification" msgid="693762568127741203">"Pemberitahuan"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apl"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Penstriman Peranti Berdekatan"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Boleh mengakses nombor telefon dan maklumat rangkaian anda. Diperlukan untuk membuat panggilan dan VoIP, mel suara, ubah hala panggilan dan mengedit log panggilan"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Boleh membaca, membuat atau mengedit senarai kenalan kami, serta mengakses senarai semua akaun yang digunakan pada peranti anda"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Boleh merakam audio menggunakan mikrofon"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Boleh membaca semua pemberitahuan, termasuk maklumat seperti kenalan, mesej dan foto"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Strim apl telefon anda"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-my/strings.xml b/packages/CompanionDeviceManager/res/values-my/strings.xml
index 79d19ad..9df27a0 100644
--- a/packages/CompanionDeviceManager/res/values-my/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-my/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"အဆက်အသွယ်များ"</string>
<string name="permission_calendar" msgid="6805668388691290395">"ပြက္ခဒိန်"</string>
<string name="permission_microphone" msgid="2152206421428732949">"မိုက်ခရိုဖုန်း"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"အနီးတစ်ဝိုက်ရှိ စက်များ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ဓာတ်ပုံနှင့် မီဒီယာများ"</string>
<string name="permission_notification" msgid="693762568127741203">"အကြောင်းကြားချက်များ"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"အက်ပ်များ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"အနီးရှိစက်တိုက်ရိုက်ဖွင့်ခြင်း"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"သင့်ဖုန်းနံပါတ်နှင့် ကွန်ရက်အချက်အလက်ကို သုံးနိုင်သည်။ ဖုန်းခေါ်ဆိုခြင်းနှင့် VoIP၊ အသံမေးလ်၊ ခေါ်ဆိုမှု တစ်ဆင့်ပြန်လွှဲခြင်းနှင့် ခေါ်ဆိုမှတ်တမ်းများ တည်းဖြတ်ခြင်းတို့အတွက် လိုအပ်သည်"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"အဆက်အသွယ် စာရင်းကို ဖတ်နိုင်၊ ပြုလုပ်နိုင် (သို့) တည်းဖြတ်နိုင်သည့်ပြင် သင့်စက်တွင်သုံးသော အကောင့်အားလုံး၏စာရင်းကို သုံးနိုင်သည်"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"မိုက်ခရိုဖုန်းသုံးပြီး အသံဖမ်းနိုင်သည်"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"အဆက်အသွယ်၊ မက်ဆေ့ဂျ်နှင့် ဓာတ်ပုံကဲ့သို့ အချက်အလက်များအပါအဝင် အကြောင်းကြားချက်အားလုံးကို ဖတ်နိုင်သည်"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"သင့်ဖုန်းရှိအက်ပ်များကို တိုက်ရိုက်ဖွင့်နိုင်သည်"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-nb/strings.xml b/packages/CompanionDeviceManager/res/values-nb/strings.xml
index a671018..1010cd2 100644
--- a/packages/CompanionDeviceManager/res/values-nb/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nb/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakter"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalender"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Enheter i nærheten"</string>
<string name="permission_storage" msgid="6831099350839392343">"Bilder og medier"</string>
<string name="permission_notification" msgid="693762568127741203">"Varsler"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apper"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Strøm til enheter i nærheten"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Kan se telefonnummeret ditt og nettverksinformasjon. Dette kreves for samtaler og VoIP, talepost, viderekobling av anrop og endring av samtalelogger"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kan lese, opprette eller endre kontaktlisten din og se listen over alle kontoene som brukes på enheten"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Kan ta opp lyd med mikrofonen"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Kan lese alle varsler, inkludert informasjon som kontakter, meldinger og bilder"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Strøm appene på telefonen"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ne/strings.xml b/packages/CompanionDeviceManager/res/values-ne/strings.xml
index 8624e36..427a5f1 100644
--- a/packages/CompanionDeviceManager/res/values-ne/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ne/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacts"</string>
<string name="permission_calendar" msgid="6805668388691290395">"पात्रो"</string>
<string name="permission_microphone" msgid="2152206421428732949">"माइक्रोफोन"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"नजिकैका डिभाइसहरू"</string>
<string name="permission_storage" msgid="6831099350839392343">"फोटो र मिडिया"</string>
<string name="permission_notification" msgid="693762568127741203">"सूचनाहरू"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"एपहरू"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"नजिकैको डिभाइसमा स्ट्रिम गरिँदै छ"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"यसले तपाईंको फोन नम्बर र नेटवर्कसम्बन्धी जानकारी प्रयोग गर्न सक्छ। कल तथा VoIP कल गर्न, भ्वाइस मेल पठाउन, कल रिडिरेक्ट गर्न तथा कलका लग सम्पादन गर्न यो अनुमति आवश्यक पर्छ।"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"यसले तपाईंको कन्ट्याक्ट लिस्ट रिड गर्न, बनाउन वा सम्पादन गर्नुका साथै तपाईंको डिभाइसमा प्रयोग गरिएका सबै खाताका सूचीहरू पनि प्रयोग गर्न सक्छ"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"यसका सहायताले माइक्रोफोन प्रयोग गरी अडियो रेकर्ड गर्न सकिन्छ"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"कन्ट्याक्ट, म्यासेज र फोटोलगायतका जानकारीसहित सबै सूचनाहरू पढ्न सक्छ"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"आफ्नो फोनका एपहरू प्रयोग गर्नुहोस्"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-nl/strings.xml b/packages/CompanionDeviceManager/res/values-nl/strings.xml
index 8d4a7cf..1da394e 100644
--- a/packages/CompanionDeviceManager/res/values-nl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nl/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contacten"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Agenda"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microfoon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Apparaten in de buurt"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto\'s en media"</string>
<string name="permission_notification" msgid="693762568127741203">"Meldingen"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming op apparaten in de buurt"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Heeft toegang tot je telefoonnummer en netwerkgegevens. Vereist voor bellen en VoIP, voicemail, gesprek omleiden en gesprekslijsten bewerken."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kan je contactenlijst lezen, maken of bewerken, en heeft toegang tot de contactenlijst voor alle accounts die op je apparaat worden gebruikt."</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Kan audio opnemen met de microfoon"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Kan alle meldingen lezen, waaronder informatie zoals contacten, berichten en foto\'s"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream de apps van je telefoon"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-or/strings.xml b/packages/CompanionDeviceManager/res/values-or/strings.xml
index 96163ada..23d88d3 100644
--- a/packages/CompanionDeviceManager/res/values-or/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-or/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"କଣ୍ଟାକ୍ଟଗୁଡ଼ିକ"</string>
<string name="permission_calendar" msgid="6805668388691290395">"କେଲେଣ୍ଡର"</string>
<string name="permission_microphone" msgid="2152206421428732949">"ମାଇକ୍ରୋଫୋନ"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ଫଟୋ ଏବଂ ମିଡିଆ"</string>
<string name="permission_notification" msgid="693762568127741203">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ଆପ୍ସ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"ଆଖପାଖର ଡିଭାଇସରେ ଷ୍ଟ୍ରିମିଂ"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"ଆପଣଙ୍କ ଫୋନ ନମ୍ବର ଏବଂ ନେଟୱାର୍କ ସୂଚନା ଆକ୍ସେସ କରିପାରିବେ।କଲ କରିବା ଓ VoIP, ଭଏସମେଲ, କଲ ଡାଇରେକ୍ଟ ଏବଂ କଲ ଲଗକୁ ଏଡିଟ କରିବା ପାଇଁ ଆବଶ୍ୟକ"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"ଆପଣଙ୍କ କଣ୍ଟାକ୍ଟ ତାଲିକା ପଢ଼ିପାରିବେ, ତିଆରି କିମ୍ବା ଏଡିଟ କରିପାରିବେ ତଥା ଆପଣଙ୍କ ଡିଭାଇସରେ ବ୍ୟବହାର କରାଯାଇଥିବା ସମସ୍ତ ଆକାଉଣ୍ଟର ତାଲିକାକୁ ଆକ୍ସେସ କରିପାରିବେ"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"ମାଇକ୍ରୋଫୋନକୁ ବ୍ୟବହାର କରି ଅଡିଓ ରେକର୍ଡ କରାଯାଇପାରିବ"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"ଯୋଗାଯୋଗ, ମେସେଜ ଏବଂ ଫଟୋଗୁଡ଼ିକ ପରି ସୂଚନା ସମେତ ସମସ୍ତ ବିଜ୍ଞପ୍ତିକୁ ପଢ଼ିପାରିବ"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"ଆପଣଙ୍କ ଫୋନର ଆପ୍ସକୁ ଷ୍ଟ୍ରିମ କରନ୍ତୁ"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-pa/strings.xml b/packages/CompanionDeviceManager/res/values-pa/strings.xml
index 2354b82..63744a1 100644
--- a/packages/CompanionDeviceManager/res/values-pa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pa/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"ਸੰਪਰਕ"</string>
<string name="permission_calendar" msgid="6805668388691290395">"ਕੈਲੰਡਰ"</string>
<string name="permission_microphone" msgid="2152206421428732949">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ਫ਼ੋਟੋਆਂ ਅਤੇ ਮੀਡੀਆ"</string>
<string name="permission_notification" msgid="693762568127741203">"ਸੂਚਨਾਵਾਂ"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ਐਪਾਂ"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ \'ਤੇ ਸਟ੍ਰੀਮਿੰਗ"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"ਤੁਹਾਡੇ ਫ਼ੋਨ ਨੰਬਰ ਅਤੇ ਨੈੱਟਵਰਕ ਜਾਣਕਾਰੀ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ। ਇਹ ਕਾਲਾਂ ਅਤੇ VoIP, ਵੌਇਸਮੇਲ, ਕਾਲ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਅਤੇ ਕਾਲ ਲੌਗਾਂ ਦਾ ਸੰਪਾਦਨ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਹੈ"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"ਤੁਹਾਡੀ ਸੰਪਰਕ ਸੂਚੀ ਨੂੰ ਪੜ੍ਹ, ਬਣਾ ਸਕਦੀ ਹੈ ਜਾਂ ਉਸਦਾ ਸੰਪਾਦਨ ਕਰ ਸਕਦੀ ਹੈ ਅਤੇ ਇਸ ਤੋਂ ਇਲਾਵਾ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਵਰਤੇ ਗਏ ਸਾਰੇ ਖਾਤਿਆਂ ਦੀ ਸੂਚੀ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਆਡੀਓ ਰਿਕਾਰਡ ਕਰ ਸਕਦੇ ਹੋ"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"ਤੁਸੀਂ ਸਾਰੀਆਂ ਸੂਚਨਾਵਾਂ ਪੜ੍ਹ ਸਕਦੇ ਹੋ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਸੰਪਰਕਾਂ, ਸੁਨੇਹਿਆਂ ਅਤੇ ਫ਼ੋਟੋਆਂ ਵਰਗੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਹੁੰਦੀ ਹੈ"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"ਆਪਣੇ ਫ਼ੋਨ ਦੀਆਂ ਐਪਾਂ ਨੂੰ ਸਟ੍ਰੀਮ ਕਰੋ"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-pl/strings.xml b/packages/CompanionDeviceManager/res/values-pl/strings.xml
index ceb0705..167a050 100644
--- a/packages/CompanionDeviceManager/res/values-pl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pl/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakty"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendarz"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Urządzenia w pobliżu"</string>
<string name="permission_storage" msgid="6831099350839392343">"Zdjęcia i multimedia"</string>
<string name="permission_notification" msgid="693762568127741203">"Powiadomienia"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacje"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Strumieniowanie danych na urządzenia w pobliżu"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Może korzystać z numeru telefonu i informacji o sieci. Wymagane przy nawiązywaniu połączeń, korzystaniu z VoIP oraz poczty głosowej, przekierowywaniu połączeń oraz edytowaniu rejestrów połączeń"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Może odczytywać, tworzyć i edytować listę kontaktów, jak również korzystać z listy wszystkich kont używanych na urządzeniu"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Może nagrywać dźwięk przy użyciu mikrofonu"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Może odczytywać wszystkie powiadomienia, w tym informacje takie jak kontakty, wiadomości i zdjęcia"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Odtwarzaj strumieniowo aplikacje z telefonu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
index 044bb0d..e29e785 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contatos"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Agenda"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microfone"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos por perto"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos e mídia"</string>
<string name="permission_notification" msgid="693762568127741203">"Notificações"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming em disp. por perto"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Acessar seu número de telefone e informações da rede. Necessária para chamadas e VoIP, correio de voz, redirecionamento de chamadas e edição de registros de chamadas"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Ler, criar ou editar sua lista de contatos, e também acessar a lista de contatos de todas as contas usadas no seu dispositivo"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Pode gravar áudio usando o microfone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Pode ler todas as notificações, incluindo informações como contatos, mensagens e fotos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Fazer transmissão dos apps no seu smartphone"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
index 4ab20b2..66bf220 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contactos"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendário"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microfone"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos próximos"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos e multimédia"</string>
<string name="permission_notification" msgid="693762568127741203">"Notificações"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Stream de dispositivo próximo"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Pode aceder ao seu número de telefone e informações da rede. É precisa para fazer chamadas e VoIP (voice over Internet Protocol), o correio de voz, redirecionar a chamada e editar registos de chamadas"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Pode ler, criar ou editar a nossa lista de contactos e aceder à lista de todas as contas usadas no seu dispositivo"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Não é possível gravar áudio através do microfone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Pode ler todas as notificações, incluindo informações como contactos, mensagens e fotos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Faça stream das apps do telemóvel"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-pt/strings.xml b/packages/CompanionDeviceManager/res/values-pt/strings.xml
index 044bb0d..e29e785 100644
--- a/packages/CompanionDeviceManager/res/values-pt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Contatos"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Agenda"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microfone"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos por perto"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos e mídia"</string>
<string name="permission_notification" msgid="693762568127741203">"Notificações"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming em disp. por perto"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Acessar seu número de telefone e informações da rede. Necessária para chamadas e VoIP, correio de voz, redirecionamento de chamadas e edição de registros de chamadas"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Ler, criar ou editar sua lista de contatos, e também acessar a lista de contatos de todas as contas usadas no seu dispositivo"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Pode gravar áudio usando o microfone"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Pode ler todas as notificações, incluindo informações como contatos, mensagens e fotos"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Fazer transmissão dos apps no seu smartphone"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ro/strings.xml b/packages/CompanionDeviceManager/res/values-ro/strings.xml
index fb66972..e527ac1 100644
--- a/packages/CompanionDeviceManager/res/values-ro/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ro/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Agendă"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Microfon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispozitive din apropiere"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografii și media"</string>
<string name="permission_notification" msgid="693762568127741203">"Notificări"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplicații"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming pe dispozitivele din apropiere"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Poate să acceseze numărul tău de telefon și informațiile despre rețea. Permisiunea este necesară pentru inițierea apelurilor și VoIP, mesaje vocale, redirecționarea apelurilor și editarea jurnalelor de apeluri"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Poate să citească, să creeze sau să editeze agenda, precum și să acceseze lista tuturor conturilor folosite pe dispozitiv"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Poate înregistra conținut audio folosind microfonul"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Poate să citească toate notificările, inclusiv informații cum ar fi agenda, mesajele și fotografiile"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Să redea în stream aplicațiile telefonului"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ru/strings.xml b/packages/CompanionDeviceManager/res/values-ru/strings.xml
index e44a4d8..326d241 100644
--- a/packages/CompanionDeviceManager/res/values-ru/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ru/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Контакты"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Календарь"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Устройства поблизости"</string>
<string name="permission_storage" msgid="6831099350839392343">"Фотографии и медиафайлы"</string>
<string name="permission_notification" msgid="693762568127741203">"Уведомления"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Приложения"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Трансляция на устройства рядом"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Доступ к номеру телефона и информации о сети. Это разрешение необходимо, чтобы совершать обычные и VoIP-звонки, отправлять голосовые сообщения, перенаправлять вызовы и редактировать списки вызовов."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Возможность читать, создавать и редактировать список контактов, а также получать доступ к списку всех аккаунтов на вашем устройстве."</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Можно записывать аудио с помощью микрофона"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Чтение всех уведомлений, в том числе сведений о контактах, сообщениях и фотографиях."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Трансляция приложений с телефона."</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-si/strings.xml b/packages/CompanionDeviceManager/res/values-si/strings.xml
index bea0f98..f23b8d6 100644
--- a/packages/CompanionDeviceManager/res/values-si/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-si/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"සම්බන්ධතා"</string>
<string name="permission_calendar" msgid="6805668388691290395">"දිනදර්ශනය"</string>
<string name="permission_microphone" msgid="2152206421428732949">"මයික්රෆෝනය"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"අවට උපාංග"</string>
<string name="permission_storage" msgid="6831099350839392343">"ඡායාරූප සහ මාධ්ය"</string>
<string name="permission_notification" msgid="693762568127741203">"දැනුම්දීම්"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"යෙදුම්"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"ආසන්න උපාංග ප්රවාහය"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"ඔබේ දුරකථන අංකයට සහ ජාල තොරතුරු වෙත ප්රවේශ විය හැක. ඇමතුම් සහ VoIP, හඬ තැපැල්, ඇමතුම් ප්රතියෝමුව, සහ ඇමතුම් සටහන් සංස්කරණය සඳහා අවශ්යයි."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"අපගේ සම්බන්ධතා ලැයිස්තුව කියවීමට, සෑදීමට, හෝ සංස්කරණ කිරීමට මෙන් ම ඔබේ උපාංගය මත භාවිත කරනු ලබන සියලුම ගිණුම් ලැයිස්තු වෙත ප්රවේශ වීමට හැකිය"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"මයික්රෆෝනය භාවිතයෙන් ශ්රව්ය පටිගත කළ හැක"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"සම්බන්ධතා, පණිවිඩ සහ ඡායාරූප වැනි තොරතුරු ඇතුළුව සියලු දැනුම්දීම් කියවිය හැකිය"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"ඔබේ දුරකථනයේ යෙදුම් ප්රවාහ කරන්න"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-sk/strings.xml b/packages/CompanionDeviceManager/res/values-sk/strings.xml
index b9a25fe..1ed177e 100644
--- a/packages/CompanionDeviceManager/res/values-sk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sk/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakty"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendár"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofón"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Zariadenia v okolí"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotky a médiá"</string>
<string name="permission_notification" msgid="693762568127741203">"Upozornenia"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikácie"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streamovať do zariad. v okolí"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Má prístup k vášmu telefónnemu číslu a informáciám o sieti. Vyžaduje sa na volanie a VoIP, fungovanie hlasovej schránky, presmerovanie hovorov a upravovanie zoznamu hovorov"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Môže čítať, vytvárať alebo upravovať náš zoznam kontaktov, ako aj získavať prístup k zoznamu všetkých účtov používaných vo vašom zariadení"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Môže nahrávať zvuk pomocou mikrofónu"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Môže čítať všetky upozornenia vrátane informácií, ako sú kontakty, správy a fotky"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streamovať aplikácie telefónu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-sl/strings.xml b/packages/CompanionDeviceManager/res/values-sl/strings.xml
index a591563..40a8827 100644
--- a/packages/CompanionDeviceManager/res/values-sl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sl/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Stiki"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Koledar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Naprave v bližini"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografije in predstavnost"</string>
<string name="permission_notification" msgid="693762568127741203">"Obvestila"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Predvajanje v napravi v bližini"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Lahko dostopa do telefonske številke in podatkov o omrežju. Obvezno za opravljanje klicev, uporabo storitve VoIP in glasovne pošte, preusmerjanje klicev in urejanje dnevnikov klicev."</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Lahko bere, ustvarja ali ureja seznam stikov in dostopa do seznama stikov vseh računov, uporabljenih v napravi."</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Lahko uporablja mikrofon za snemanje zvoka."</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Lahko bere vsa obvestila, vključno s podatki, kot so stiki, sporočila in fotografije."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Pretočno predvajanje aplikacij telefona"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-sq/strings.xml b/packages/CompanionDeviceManager/res/values-sq/strings.xml
index 72ada95..2a65cb3 100644
--- a/packages/CompanionDeviceManager/res/values-sq/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sq/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontaktet"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalendari"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofoni"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Pajisjet në afërsi"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografitë dhe media"</string>
<string name="permission_notification" msgid="693762568127741203">"Njoftimet"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacionet"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Transmetim: Pajisjet në afërsi"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Mund të qaset te informacionet e numrit të telefonit dhe të rrjetit. Kërkohet për të bërë telefonata dhe VoIP, postë zanore, ridrejtim të telefonatës dhe modifikim të evidencave të telefonatave"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Mund të lexojë, të krijojë ose të modifikojë listën tënde të kontakteve si dhe të qaset në listën e të gjitha llogarive të përdorura në pajisjen tënde"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Mund të regjistrojë audio duke përdorur mikrofonin"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Mund të lexojë të gjitha njoftimet, duke përfshirë informacione si kontaktet, mesazhet dhe fotografitë"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Transmeto aplikacionet e telefonit tënd"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-sr/strings.xml b/packages/CompanionDeviceManager/res/values-sr/strings.xml
index 5bc353d..bca28ab 100644
--- a/packages/CompanionDeviceManager/res/values-sr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sr/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Контакти"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Календар"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Уређаји у близини"</string>
<string name="permission_storage" msgid="6831099350839392343">"Слике и медији"</string>
<string name="permission_notification" msgid="693762568127741203">"Обавештења"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Апликације"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Стримовање, уређаји у близини"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Може да приступа вашем броју телефона и информацијама о мрежи. Неопходно за упућивање позива и VoIP, говорну пошту, преусмеравање позива и измене евиденције позива"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Може да чита, креира или мења листу контаката, као и да приступа листи свих налога који се користе на вашем уређају"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Може да снима звук помоћу микрофона"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Може да чита сва обавештења, укључујући информације попут контаката, порука и слика"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Стримујте апликације на телефону"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-sv/strings.xml b/packages/CompanionDeviceManager/res/values-sv/strings.xml
index 9d44c71..20d6069 100644
--- a/packages/CompanionDeviceManager/res/values-sv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sv/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontakter"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalender"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Enheter i närheten"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foton och media"</string>
<string name="permission_notification" msgid="693762568127741203">"Aviseringar"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Appar"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"En enhet i närheten streamar"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Kan få åtkomst till ditt telefonnummer och din nätverksinformation. Krävs för att ringa samtal och VoIP-samtal, röstbrevlådan, omdirigering av samtal och redigering av samtalsloggar"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kan läsa, skapa eller redigera din kontaktlista samt få åtkomst till kontaktlistan för alla konton som används på enheten"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Kan spela in ljud med mikrofonen"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Kan läsa alla aviseringar, inklusive information som kontakter, meddelanden och foton"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streama telefonens appar"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-sw/strings.xml b/packages/CompanionDeviceManager/res/values-sw/strings.xml
index d296a6b..29c6a42 100644
--- a/packages/CompanionDeviceManager/res/values-sw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sw/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Anwani"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalenda"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Maikrofoni"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Vifaa vilivyo karibu"</string>
<string name="permission_storage" msgid="6831099350839392343">"Picha na maudhui"</string>
<string name="permission_notification" msgid="693762568127741203">"Arifa"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Programu"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Kutiririsha kwenye Kifaa kilicho Karibu"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Inaweza kufikia nambari yako ya simu na maelezo ya mtandao. Inahitajika kwa ajili ya kupiga simu na VoIP, ujumbe wa sauti, uelekezaji wa simu kwingine na kubadilisha rekodi za nambari za simu"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Inaweza kusoma, kuunda au kubadilisha orodha yetu ya anwani na pia kufikia orodha ya akaunti zote zinazotumiwa kwenye kifaa chako"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Inaweza kurekodi sauti ikitumia maikrofoni"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Inaweza kusoma arifa zote, ikiwa ni pamoja na maelezo kama vile anwani, ujumbe na picha"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Tiririsha programu za simu yako"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ta/strings.xml b/packages/CompanionDeviceManager/res/values-ta/strings.xml
index b225bb7..0658728 100644
--- a/packages/CompanionDeviceManager/res/values-ta/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ta/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"தொடர்புகள்"</string>
<string name="permission_calendar" msgid="6805668388691290395">"கேலெண்டர்"</string>
<string name="permission_microphone" msgid="2152206421428732949">"மைக்ரோஃபோன்"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"அருகிலுள்ள சாதனங்கள்"</string>
<string name="permission_storage" msgid="6831099350839392343">"படங்கள் மற்றும் மீடியா"</string>
<string name="permission_notification" msgid="693762568127741203">"அறிவிப்புகள்"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ஆப்ஸ்"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"அருகிலுள்ள சாதன ஸ்ட்ரீமிங்"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"உங்கள் மொபைல் எண், நெட்வொர்க் தகவல் ஆகியவற்றை அணுகலாம். அழைப்புகள் & VoIP, குரலஞ்சல், அழைப்பைத் திசைதிருப்புதல், அழைப்புப் பதிவுகளைத் திருத்துதல் ஆகியவற்றுக்கு இது தேவை"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"உங்கள் தொடர்புப் பட்டியலைப் படிக்கலாம் உருவாக்கலாம் திருத்தலாம். மேலும் உங்கள் சாதனத்தில் பயன்படுத்தப்படும் அனைத்துக் கணக்குகளின் தொடர்புப் பட்டியலையும் அணுகலாம்"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"மைக்ரோஃபோனைப் பயன்படுத்தி ஆடியோவை ரெக்கார்டு செய்யலாம்"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"தொடர்புகள், மெசேஜ்கள், படங்கள் போன்ற தகவல்கள் உட்பட அனைத்து அறிவிப்புகளையும் படிக்க முடியும்"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"உங்கள் மொபைல் ஆப்ஸை ஸ்ட்ரீம் செய்யலாம்"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-te/strings.xml b/packages/CompanionDeviceManager/res/values-te/strings.xml
index 0a6ddda..8450507 100644
--- a/packages/CompanionDeviceManager/res/values-te/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-te/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"కాంటాక్ట్లు"</string>
<string name="permission_calendar" msgid="6805668388691290395">"క్యాలెండర్"</string>
<string name="permission_microphone" msgid="2152206421428732949">"మైక్రోఫోన్"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"సమీపంలోని పరికరాలు"</string>
<string name="permission_storage" msgid="6831099350839392343">"ఫోటోలు, మీడియా"</string>
<string name="permission_notification" msgid="693762568127741203">"నోటిఫికేషన్లు"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"యాప్లు"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"సమీపంలోని పరికర స్ట్రీమింగ్"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"మీ ఫోన్ నంబర్, ఇంకా నెట్వర్క్ సమాచారాన్ని యాక్సెస్ చేయగలదు. కాల్స్ చేయడానికి, VoIP కాల్స్ చేయడానికి, వాయిస్ మెయిల్కు, కాల్ మళ్లింపునకు, ఇంకా కాల్ లాగ్లను ఎడిట్ చేయడానికి ఇది అవసరం"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"మీ కాంటాక్ట్ లిస్ట్ను చదవడం, క్రియేట్ చేయడం, లేదా ఎడిట్ చేయడంతో పాటు మీ పరికరంలో ఉపయోగించబడే ఖాతాలన్నింటి లిస్ట్ను యాక్సెస్ కూడా చేయగలదు"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"మైక్రోఫోన్ను ఉపయోగించి ఆడియోను రికార్డ్ చేయవచ్చు"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"కాంటాక్ట్లు, మెసేజ్లు, ఫోటోల వంటి సమాచారంతో సహా అన్ని నోటిఫికేషన్లను చదవగలదు"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"మీ ఫోన్లోని యాప్లను స్ట్రీమ్ చేయండి"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-th/strings.xml b/packages/CompanionDeviceManager/res/values-th/strings.xml
index 36e5c4f..5a51d4d 100644
--- a/packages/CompanionDeviceManager/res/values-th/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-th/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"รายชื่อติดต่อ"</string>
<string name="permission_calendar" msgid="6805668388691290395">"ปฏิทิน"</string>
<string name="permission_microphone" msgid="2152206421428732949">"ไมโครโฟน"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"อุปกรณ์ที่อยู่ใกล้เคียง"</string>
<string name="permission_storage" msgid="6831099350839392343">"รูปภาพและสื่อ"</string>
<string name="permission_notification" msgid="693762568127741203">"การแจ้งเตือน"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"แอป"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"การสตรีมไปยังอุปกรณ์ที่อยู่ใกล้เคียง"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"สามารถเข้าถึงหมายเลขโทรศัพท์และข้อมูลเครือข่ายของคุณ จำเป็นสำหรับการโทรและ VoIP, ข้อความเสียง, การเปลี่ยนเส้นทางการโทร และการแก้ไขบันทึกการโทร"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"สามารถอ่าน สร้าง หรือแก้ไขข้อมูลรายชื่อติดต่อของเรา รวมทั้งเข้าถึงข้อมูลรายชื่อติดต่อของทุกบัญชีที่ใช้ในอุปกรณ์ของคุณ"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"บันทึกเสียงโดยใช้ไมโครโฟนได้"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"สามารถอ่านการแจ้งเตือนทั้งหมด รวมถึงข้อมูลอย่างรายชื่อติดต่อ ข้อความ และรูปภาพ"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"สตรีมแอปของโทรศัพท์คุณ"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-tl/strings.xml b/packages/CompanionDeviceManager/res/values-tl/strings.xml
index d17765f..7bdd81b 100644
--- a/packages/CompanionDeviceManager/res/values-tl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tl/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Mga Contact"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Calendar"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikropono"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Mga kalapit na device"</string>
<string name="permission_storage" msgid="6831099350839392343">"Mga larawan at media"</string>
<string name="permission_notification" msgid="693762568127741203">"Mga Notification"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Mga App"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Streaming sa Kalapit na Device"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Naa-access ang iyong numero ng telepono at impormasyon ng network. Kinakailangan para sa mga pagtawag at VoIP, voicemail, pag-redirect ng tawag, at pag-edit ng mga log ng tawag"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Nakaka-read, nakakagawa, o nakakapag-edit ng aming listahan ng contact, pati na rin nakaka-access ng listahan ng lahat ng account na ginamit sa iyong device"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Puwedeng mag-record ng audio gamit ang mikropono"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Magbasa ng lahat ng notification, kabilang ang impormasyon gaya ng mga contact, mensahe, at larawan"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"I-stream ang mga app ng iyong telepono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-tr/strings.xml b/packages/CompanionDeviceManager/res/values-tr/strings.xml
index cc46473..98ea47a 100644
--- a/packages/CompanionDeviceManager/res/values-tr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tr/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kişiler"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Takvim"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Yakındaki cihazlar"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotoğraflar ve medya"</string>
<string name="permission_notification" msgid="693762568127741203">"Bildirimler"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Uygulamalar"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Yakındaki Cihazda Oynatma"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Telefon numaranıza ve ağ bilgilerinize erişebilir. Arama, VoIP, sesli mesaj, arama yönlendirme gibi işlemleri gerçekleştirmek ve arama kayıtlarını düzenlemek için gereklidir"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kişi listesini okuyabilir, oluşturabilir veya düzenleyebilir, ayrıca cihazınızda kullanılan tüm hesapların listesine erişebilir"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Mikrofonu kullanarak ses kaydedebilir"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Kişiler, mesajlar ve fotoğraflar da dahil olmak üzere tüm bildirimleri okuyabilir"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefonunuzun uygulamalarını yayınlama"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-uk/strings.xml b/packages/CompanionDeviceManager/res/values-uk/strings.xml
index 80375d0..38c9ba2 100644
--- a/packages/CompanionDeviceManager/res/values-uk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uk/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Контакти"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Календар"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Мікрофон"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Пристрої поблизу"</string>
<string name="permission_storage" msgid="6831099350839392343">"Фотографії та медіафайли"</string>
<string name="permission_notification" msgid="693762568127741203">"Сповіщення"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Додатки"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Трансляція на пристрої поблизу"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Може переглядати ваш номер телефону й інформацію про мережу. Потрібно для здійснення викликів і зв’язку через VoIP, голосової пошти, переадресації викликів і редагування журналів викликів"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Може читати, створювати або редагувати список контактів, а також переглядати список усіх облікових записів, які використовуються на вашому пристрої"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Може записувати звук за допомогою мікрофона"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Може читати всі сповіщення, зокрема таку інформацію, як контакти, повідомлення та фотографії"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Транслювати додатки телефона"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml
index 346cdd6..b68044e 100644
--- a/packages/CompanionDeviceManager/res/values-ur/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"رابطے"</string>
<string name="permission_calendar" msgid="6805668388691290395">"کیلنڈر"</string>
<string name="permission_microphone" msgid="2152206421428732949">"مائیکروفون"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"قریبی آلات"</string>
<string name="permission_storage" msgid="6831099350839392343">"تصاویر اور میڈیا"</string>
<string name="permission_notification" msgid="693762568127741203">"اطلاعات"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ایپس"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"قریبی آلات کی سلسلہ بندی"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"آپ کے فون نمبر اور نیٹ ورک کی معلومات تک رسائی حاصل کر سکتی ہے۔ کالز کرنے اور VoIP، صوتی میل، کال ری ڈائریکٹ، اور کال لاگز میں ترمیم کرنے کے لیے درکار ہے"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"ہماری رابطوں کی فہرست پڑھ سکتی ہے، اسے تخلیق سکتی ہے یا اس میں ترمیم کر سکتی ہے، نیز آپ کے آلے پر استعمال ہونے والے تمام اکاؤنٹس کی فہرست تک رسائی حاصل کر سکتی ہے"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"مائیکروفون کا استعمال کر کے آڈیو ریکارڈ کر سکتے ہیں"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"رابطوں، پیغامات اور تصاویر جیسی معلومات سمیت تمام اطلاعات پڑھ سکتے ہیں"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"اپنے فون کی ایپس کی سلسلہ بندی کریں"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-uz/strings.xml b/packages/CompanionDeviceManager/res/values-uz/strings.xml
index 4dff519..514f4bf 100644
--- a/packages/CompanionDeviceManager/res/values-uz/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uz/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Kontaktlar"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Taqvim"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Atrofdagi qurilmalar"</string>
<string name="permission_storage" msgid="6831099350839392343">"Suratlar va media"</string>
<string name="permission_notification" msgid="693762568127741203">"Bildirishnomalar"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Ilovalar"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Atrofdagi qurilmalarga uzatish"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Telefon raqamingiz va tarmoq maʼlumotlariga kira oladi. Telefon qilish va VoIP, ovozli xabar, chaqiruvlarni yoʻnaltirish va chaqiruvlar jurnallarini tahrirlash uchun talab qilinadi"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Kontaktlar roʻyxatini oʻqishi, yaratishi yoki tahrirlashi, shuningdek, qurilmangizda foydalaniladigan barcha hisoblar roʻyxatiga kirishi mumkin"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Mikrofon orqali audio yozib olishi mumkin"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Barcha bildirishnomalarni, jumladan, kontaktlar, xabarlar va suratlarni oʻqishi mumkin"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefondagi ilovalarni translatsiya qilish"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-vi/strings.xml b/packages/CompanionDeviceManager/res/values-vi/strings.xml
index 3656078..05596e1 100644
--- a/packages/CompanionDeviceManager/res/values-vi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-vi/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Danh bạ"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Lịch"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Micrô"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Thiết bị ở gần"</string>
<string name="permission_storage" msgid="6831099350839392343">"Ảnh và nội dung nghe nhìn"</string>
<string name="permission_notification" msgid="693762568127741203">"Thông báo"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Ứng dụng"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Truyền đến thiết bị ở gần"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Có thể truy cập vào thông tin mạng và số điện thoại của bạn. Điện thoại cần được cấp quyền này để gọi điện và gọi bằng dịch vụ VoIP, soạn thư thoại, chuyển hướng cuộc gọi, đồng thời chỉnh sửa nhật ký cuộc gọi"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Có thể tạo, đọc, chỉnh sửa, đồng thời truy cập danh bạ của mọi tài khoản được sử dụng trên thiết bị"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Có thể ghi âm bằng micrô"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Có thể đọc tất cả các thông báo, kể cả những thông tin như danh bạ, tin nhắn và ảnh"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Truyền các ứng dụng trên điện thoại của bạn"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
index 0b4072b..275b9a0 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"通讯录"</string>
<string name="permission_calendar" msgid="6805668388691290395">"日历"</string>
<string name="permission_microphone" msgid="2152206421428732949">"麦克风"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"附近的设备"</string>
<string name="permission_storage" msgid="6831099350839392343">"照片和媒体内容"</string>
<string name="permission_notification" msgid="693762568127741203">"通知"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"应用"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"附近的设备流式传输"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"可以访问您的电话号码和网络信息。具备此权限才能实现电话拨打以及 VoIP、语音信箱、电话转接和通话记录编辑功能"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"可以读取、创建或修改您的联系人列表,以及访问您设备上使用的所有帐号的联系人列表"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"可使用麦克风录音"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"可以读取所有通知,包括合同、消息和照片等信息"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"流式传输手机上的应用"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
index 17d3583..70d988b 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"通訊錄"</string>
<string name="permission_calendar" msgid="6805668388691290395">"日曆"</string>
<string name="permission_microphone" msgid="2152206421428732949">"麥克風"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"附近的裝置"</string>
<string name="permission_storage" msgid="6831099350839392343">"相片和媒體"</string>
<string name="permission_notification" msgid="693762568127741203">"通知"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"應用程式"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"附近的裝置串流"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"可存取您的電話號碼及網絡資訊。必須授予此權限才可撥打電話和 VoIP 通話、留言、轉駁來電及編輯通話記錄"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"可讀取、建立或編輯通訊錄,以及存取您裝置上所有用過的帳戶清單"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"可使用麥克風錄音"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"可以讀取所有通知,包括聯絡人、訊息和電話等資訊"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"串流播放手機應用程式內容"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
index 29ef003..c18a9f1 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"聯絡人"</string>
<string name="permission_calendar" msgid="6805668388691290395">"日曆"</string>
<string name="permission_microphone" msgid="2152206421428732949">"麥克風"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"鄰近裝置"</string>
<string name="permission_storage" msgid="6831099350839392343">"相片和媒體"</string>
<string name="permission_notification" msgid="693762568127741203">"通知"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"應用程式"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"鄰近裝置串流"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"可存取你的電話號碼和網路資訊。你必須授予這項權限,才能撥打電話和進行 VoIP 通話、聽取語音留言、轉接來電,以及編輯通話記錄"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"可讀取、建立或編輯你的聯絡人清單,還能存取裝置上所有帳戶的聯絡人清單"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"可使用麥克風錄音"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"可讀取所有通知,包括聯絡人、訊息和電話等資訊"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"串流傳輸手機應用程式內容"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values-zu/strings.xml b/packages/CompanionDeviceManager/res/values-zu/strings.xml
index c2b0eef..9dba977 100644
--- a/packages/CompanionDeviceManager/res/values-zu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zu/strings.xml
@@ -51,17 +51,26 @@
<string name="permission_contacts" msgid="3858319347208004438">"Oxhumana nabo"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Ikhalenda"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Imakrofoni"</string>
+ <!-- no translation found for permission_call_logs (5546761417694586041) -->
+ <skip />
<string name="permission_nearby_devices" msgid="7530973297737123481">"Amadivayisi aseduze"</string>
<string name="permission_storage" msgid="6831099350839392343">"Izithombe nemidiya"</string>
<string name="permission_notification" msgid="693762568127741203">"Izaziso"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Ama-app"</string>
<string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Ukusakazwa Kwedivayisi Eseduze"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Ingakwazi ukufinyelela inombolo yakho yefoni kanye nolwazi lwenethiwekhi. Iyadingeka ekwenzeni amakholi ne-VoIP, ivoyisimeyili, ukuqondisa kabusha ikholi, nokuhlela amarekhodi amakholi"</string>
- <string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Angafunda, asungule, noma ahlele uhlu lwethu loxhumana nabo, futhi afinyelele uhlu lwawo wonke ama-akhawunti asetshenziswa kudivayisi yakho"</string>
- <string name="permission_calendar_summary" msgid="9070743747408808156"></string>
+ <!-- no translation found for permission_phone_summary (6684396967861278044) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (6186103394658755022) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (3508442683678912017) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (675861979475628708) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (6460000922511766226) -->
+ <skip />
<string name="permission_microphone_summary" msgid="4241354865859396558">"Ingakwazi ukurekhoda umsindo isebenzisa imakrofoni"</string>
- <string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
+ <!-- no translation found for permission_nearby_devices_summary (931940524460876655) -->
+ <skip />
<string name="permission_notification_summary" msgid="884075314530071011">"Ingafunda zonke izaziso, okubandakanya ulwazi olufana noxhumana nabo, imilayezo, nezithombe"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Sakaza ama-app wefoni yakho"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
diff --git a/packages/CompanionDeviceManager/res/values/strings.xml b/packages/CompanionDeviceManager/res/values/strings.xml
index c410d64..7397688 100644
--- a/packages/CompanionDeviceManager/res/values/strings.xml
+++ b/packages/CompanionDeviceManager/res/values/strings.xml
@@ -117,8 +117,7 @@
<string name="permission_sync_confirmation_title">Give apps on <strong><xliff:g id="companion_device_name" example="Galaxy Watch 5">%1$s</xliff:g></strong> the same permissions as on <strong><xliff:g id="primary_device_name" example="Pixel 6">%2$s</xliff:g></strong>?</string>
<!-- Text of the permission sync explanation in the confirmation dialog. [CHAR LIMIT=NONE] -->
- <string name="permission_sync_summary"><p>This may include Microphone, Camera, and Location access, and other sensitive permissions on <strong><xliff:g id="companion_device_name" example="Galaxy Watch 5">%1$s</xliff:g></strong>.</p>
- <p>You can change these permissions any time in your Settings on <strong><xliff:g id="companion_device_name" example="Galaxy Watch 5">%1$s</xliff:g></strong>.</p></string>
+ <string name="permission_sync_summary">This may include <strong>Microphone</strong>, <strong>Camera</strong>, and <strong>Location access</strong>, and other sensitive permissions on <strong><xliff:g id="companion_device_name" example="My Watch">%1$s</xliff:g></strong>. <br/><br/>You can change these permissions any time in your Settings on <strong><xliff:g id="companion_device_name" example="My Watch">%1$s</xliff:g></strong>.</string>
<!--Description for vendor icon [CHAR LIMIT=30]-->
<string name="vendor_icon_description">App Icon</string>
@@ -158,7 +157,7 @@
<!-- Apps permission will be granted of corresponding profile [CHAR LIMIT=30] -->
<string name="permission_app_streaming">Apps</string>
- <!-- Nearby_device_streaming permission will be granted to the corresponding profile [CHAR LIMIT=30] -->
+ <!-- Nearby_device_streaming permission will be granted to the corresponding profile [CHAR LIMIT=45] -->
<string name="permission_nearby_device_streaming">Nearby Device Streaming</string>
<!-- Description of phone permission of corresponding profile [CHAR LIMIT=NONE] -->
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDataTransferActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDataTransferActivity.java
index e13e639c..c7de71c 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDataTransferActivity.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceDataTransferActivity.java
@@ -23,6 +23,7 @@
import static java.util.Objects.requireNonNull;
+import android.annotation.SuppressLint;
import android.app.Activity;
import android.companion.datatransfer.PermissionSyncRequest;
import android.companion.datatransfer.SystemDataTransferRequest;
@@ -37,6 +38,7 @@
/**
* This activity manages the UI of companion device data transfer.
*/
+@SuppressLint("LongLogTag")
public class CompanionDeviceDataTransferActivity extends Activity {
private static final String LOG_TAG = "CDM_CompanionDeviceDataTransferActivity";
diff --git a/packages/CredentialManager/Android.bp b/packages/CredentialManager/Android.bp
index d8577c3..90bb2d1 100644
--- a/packages/CredentialManager/Android.bp
+++ b/packages/CredentialManager/Android.bp
@@ -14,6 +14,11 @@
srcs: ["src/**/*.kt"],
resource_dirs: ["res"],
+ dex_preopt: {
+ profile_guided: true,
+ profile: "profile.txt.prof",
+ },
+
static_libs: [
"androidx.activity_activity-compose",
"androidx.appcompat_appcompat",
diff --git a/packages/CredentialManager/AndroidManifest.xml b/packages/CredentialManager/AndroidManifest.xml
index bd27dab..5a4d256 100644
--- a/packages/CredentialManager/AndroidManifest.xml
+++ b/packages/CredentialManager/AndroidManifest.xml
@@ -32,9 +32,11 @@
android:supportsRtl="true"
android:theme="@style/Theme.CredentialSelector">
+ <!--TODO: make sure implementing singleTop on NewIntent-->
<activity
android:name=".CredentialSelectorActivity"
android:exported="true"
+ android:launchMode="singleTop"
android:label="@string/app_name"
android:excludeFromRecents="true"
android:theme="@style/Theme.CredentialSelector">
diff --git a/packages/CredentialManager/profile.txt.prof b/packages/CredentialManager/profile.txt.prof
new file mode 100644
index 0000000..16f8798
--- /dev/null
+++ b/packages/CredentialManager/profile.txt.prof
@@ -0,0 +1,14627 @@
+HPLandroidx/compose/animation/core/FloatSpringSpec;->getValueFromNanos(JFFF)F
+HPLandroidx/compose/animation/core/FloatSpringSpec;->getVelocityFromNanos(JFFF)F
+HPLandroidx/compose/animation/core/SpringSimulation;->updateValues-IJZedt4$animation_core_release(FFJ)J
+HPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->invoke(Landroidx/compose/animation/core/AnimationVector1D;)Ljava/lang/Float;
+HPLandroidx/compose/animation/core/VectorizedSpringSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HPLandroidx/compose/animation/core/VectorizedSpringSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HPLandroidx/compose/foundation/ImageKt;->Image(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;Landroidx/compose/runtime/Composer;II)V
+HPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->waitForUpOrCancellation(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$measuredItemProvider$1;->createItem-HK0c1C0(ILjava/lang/Object;Ljava/util/List;)Landroidx/compose/foundation/lazy/LazyMeasuredItem;
+HPLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;->invoke-0kLqBqw(Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;J)Landroidx/compose/foundation/lazy/LazyListMeasureResult;
+HPLandroidx/compose/foundation/lazy/LazyListMeasureKt;->measureLazyList-jIHJTys(ILandroidx/compose/foundation/lazy/LazyMeasuredItemProvider;IIIIIIFJZLjava/util/List;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;ZLandroidx/compose/ui/unit/Density;Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;ILkotlin/jvm/functions/Function3;)Landroidx/compose/foundation/lazy/LazyListMeasureResult;
+HPLandroidx/compose/foundation/lazy/LazyListPositionedItem;->place(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HPLandroidx/compose/foundation/lazy/LazyMeasuredItem;-><init>(ILjava/util/List;ZLandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/ui/unit/LayoutDirection;ZIILandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;IJLjava/lang/Object;)V
+HPLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider;->getKey(I)Ljava/lang/Object;
+HPLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getContent(ILjava/lang/Object;)Lkotlin/jvm/functions/Function2;
+HPLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->measure-0kLqBqw(IJ)Ljava/util/List;
+HPLandroidx/compose/runtime/ComposerKt;->removeCurrentGroup(Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->isValid(Landroidx/compose/runtime/DerivedState;Landroidx/compose/runtime/snapshots/Snapshot;)Z
+HPLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->readableHash(Landroidx/compose/runtime/DerivedState;Landroidx/compose/runtime/snapshots/Snapshot;)I
+HPLandroidx/compose/runtime/DerivedSnapshotState;->currentRecord(Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord;Landroidx/compose/runtime/snapshots/Snapshot;ZLkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord;
+HPLandroidx/compose/runtime/DerivedSnapshotState;->getValue()Ljava/lang/Object;
+HPLandroidx/compose/runtime/SlotWriter$groupSlots$1;->hasNext()Z
+HPLandroidx/compose/runtime/SlotWriter$groupSlots$1;->next()Ljava/lang/Object;
+HPLandroidx/compose/runtime/SlotWriter;->access$dataIndexToDataAddress(Landroidx/compose/runtime/SlotWriter;I)I
+HPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V
+HPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->intersects$SnapshotStateKt__SnapshotFlowKt(Ljava/util/Set;Ljava/util/Set;)Z
+HPLandroidx/compose/runtime/snapshots/SnapshotKt;->current(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord;
+HPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateEnterObserver$1;->invoke(Landroidx/compose/runtime/State;)V
+HPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateExitObserver$1;->invoke(Landroidx/compose/runtime/State;)V
+HPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateExitObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$getDeriveStateScopeCount$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)I
+HPLandroidx/compose/ui/Modifier$Node;->detach$ui_release()V
+HPLandroidx/compose/ui/geometry/OffsetKt;->isFinite-k-4lQ0M(J)Z
+HPLandroidx/compose/ui/graphics/Matrix;->map-MK-Hz9U([FJ)J
+HPLandroidx/compose/ui/input/pointer/InternalPointerEvent;->issuesEnterExitEvent-0FcD4WY(J)Z
+HPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->convertToPointerInputEvent$ui_release(Landroid/view/MotionEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;)Landroidx/compose/ui/input/pointer/PointerInputEvent;
+HPLandroidx/compose/ui/input/pointer/MotionEventAdapter;->createPointerInputEventData(Landroidx/compose/ui/input/pointer/PositionCalculator;Landroid/view/MotionEvent;IZ)Landroidx/compose/ui/input/pointer/PointerInputEventData;
+HPLandroidx/compose/ui/input/pointer/Node;->buildCache(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z
+HPLandroidx/compose/ui/input/pointer/Node;->cleanUpHits(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V
+HPLandroidx/compose/ui/input/pointer/Node;->dispatchFinalEventPass(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)Z
+HPLandroidx/compose/ui/input/pointer/Node;->dispatchMainEventPass(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z
+HPLandroidx/compose/ui/input/pointer/PointerId;-><init>(J)V
+HPLandroidx/compose/ui/input/pointer/PointerId;->equals-impl(JLjava/lang/Object;)Z
+HPLandroidx/compose/ui/input/pointer/PointerInputChange;-><init>(JJJZJJZZIJ)V
+HPLandroidx/compose/ui/input/pointer/PointerInputChange;->copy-OHpmEuE$default(Landroidx/compose/ui/input/pointer/PointerInputChange;JJJZJJZILjava/util/List;JILjava/lang/Object;)Landroidx/compose/ui/input/pointer/PointerInputChange;
+HPLandroidx/compose/ui/input/pointer/PointerInputChange;->copy-OHpmEuE(JJJZJJZILjava/util/List;J)Landroidx/compose/ui/input/pointer/PointerInputChange;
+HPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer;->produce(Landroidx/compose/ui/input/pointer/PointerInputEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;)Landroidx/compose/ui/input/pointer/InternalPointerEvent;
+HPLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;->process-BIzXfog(Landroidx/compose/ui/input/pointer/PointerInputEvent;Landroidx/compose/ui/input/pointer/PositionCalculator;Z)I
+HPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->offerPointerEvent(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;)V
+HPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->dispatchPointerEvent(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;)V
+HPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V
+HPLandroidx/compose/ui/node/AlignmentLines;->reset$ui_release()V
+HPLandroidx/compose/ui/node/BackwardsCompatNode;->onPointerEvent-H0pRuoY(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEventPass;J)V
+HPLandroidx/compose/ui/node/InnerNodeCoordinator;->hitTestChild-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V
+HPLandroidx/compose/ui/node/LayoutNode;->detach$ui_release()V
+HPLandroidx/compose/ui/node/NodeChain;->detach$ui_release()V
+HPLandroidx/compose/ui/node/NodeCoordinator;->ancestorToLocal-R5De75A(Landroidx/compose/ui/node/NodeCoordinator;J)J
+HPLandroidx/compose/ui/node/NodeCoordinator;->detach()V
+HPLandroidx/compose/ui/node/NodeCoordinator;->findCommonAncestor$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)Landroidx/compose/ui/node/NodeCoordinator;
+HPLandroidx/compose/ui/node/NodeCoordinator;->fromParentPosition-MK-Hz9U(J)J
+HPLandroidx/compose/ui/node/NodeCoordinator;->hitTestChild-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V
+HPLandroidx/compose/ui/node/NodeCoordinator;->localPositionOf-R5De75A(Landroidx/compose/ui/layout/LayoutCoordinates;J)J
+HPLandroidx/compose/ui/node/PointerInputModifierNodeKt;->isAttached(Landroidx/compose/ui/node/PointerInputModifierNode;)Z
+HPLandroidx/compose/ui/platform/AndroidComposeView;->handleMotionEvent-8iAsVTc(Landroid/view/MotionEvent;)I
+HPLandroidx/compose/ui/platform/AndroidComposeView;->screenToLocal-MK-Hz9U(J)J
+HPLandroidx/compose/ui/platform/AndroidComposeView;->sendMotionEvent-8iAsVTc(Landroid/view/MotionEvent;)I
+HPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;->calculateMatrixToWindow-EL8BTi8(Landroid/view/View;[F)V
+HPLandroidx/compose/ui/platform/LayerMatrixCache;->calculateInverseMatrix-bWbORWo(Ljava/lang/Object;)[F
+HPLandroidx/compose/ui/platform/LayerMatrixCache;->calculateMatrix-GrdbGEg(Ljava/lang/Object;)[F
+HPLandroidx/compose/ui/platform/RenderNodeLayer;->mapOffset-8S9VItk(JZ)J
+HPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->cornersFit(Landroidx/compose/ui/geometry/RoundRect;)Z
+HPLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInRoundedRect(Landroidx/compose/ui/graphics/Outline$Rounded;FFLandroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Path;)Z
+HPLandroidx/compose/ui/unit/IntOffsetKt;->minus-Nv-tHpc(JJ)J
+HPLcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2$1;->invoke(Landroidx/compose/animation/core/Animatable;)V
+HPLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+HPLkotlinx/coroutines/JobSupport;->cancelMakeCompleting(Ljava/lang/Object;)Ljava/lang/Object;
+HPLkotlinx/coroutines/channels/AbstractSendChannel;->offerInternal(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;->onContextAvailable(Landroid/content/Context;)V
+HSPLandroidx/activity/ComponentActivity$1;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$2;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$3;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$3;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/activity/ComponentActivity$4;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$4;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/activity/ComponentActivity$5;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$5;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/activity/ComponentActivity$Api33Impl;->getOnBackInvokedDispatcher(Landroid/app/Activity;)Landroid/window/OnBackInvokedDispatcher;
+HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;-><init>(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;->onDraw()V
+HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;->viewCreated(Landroid/view/View;)V
+HSPLandroidx/activity/ComponentActivity;->$r8$lambda$h2i_RK2mddCIbAsGubaI4eL8_cU(Landroidx/activity/ComponentActivity;Landroid/content/Context;)V
+HSPLandroidx/activity/ComponentActivity;-><init>()V
+HSPLandroidx/activity/ComponentActivity;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V
+HSPLandroidx/activity/ComponentActivity;->createFullyDrawnExecutor()Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor;
+HSPLandroidx/activity/ComponentActivity;->ensureViewModelStore()V
+HSPLandroidx/activity/ComponentActivity;->getActivityResultRegistry()Landroidx/activity/result/ActivityResultRegistry;
+HSPLandroidx/activity/ComponentActivity;->getDefaultViewModelCreationExtras()Landroidx/lifecycle/viewmodel/CreationExtras;
+HSPLandroidx/activity/ComponentActivity;->getDefaultViewModelProviderFactory()Landroidx/lifecycle/ViewModelProvider$Factory;
+HSPLandroidx/activity/ComponentActivity;->getLifecycle()Landroidx/lifecycle/Lifecycle;
+HSPLandroidx/activity/ComponentActivity;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry;
+HSPLandroidx/activity/ComponentActivity;->getViewModelStore()Landroidx/lifecycle/ViewModelStore;
+HSPLandroidx/activity/ComponentActivity;->initViewTreeOwners()V
+HSPLandroidx/activity/ComponentActivity;->lambda$new$2(Landroid/content/Context;)V
+HSPLandroidx/activity/ComponentActivity;->onCreate(Landroid/os/Bundle;)V
+HSPLandroidx/activity/ComponentActivity;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
+HSPLandroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0;-><init>(Landroidx/activity/FullyDrawnReporter;)V
+HSPLandroidx/activity/FullyDrawnReporter;-><init>(Ljava/util/concurrent/Executor;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/activity/OnBackPressedDispatcher$$ExternalSyntheticLambda1;-><init>(Landroidx/activity/OnBackPressedDispatcher;)V
+HSPLandroidx/activity/OnBackPressedDispatcher$$ExternalSyntheticLambda2;-><init>(Landroidx/activity/OnBackPressedDispatcher;)V
+HSPLandroidx/activity/OnBackPressedDispatcher$$ExternalSyntheticThrowCCEIfNotNull0;->m(Ljava/lang/Object;)V
+HSPLandroidx/activity/OnBackPressedDispatcher$Api33Impl$$ExternalSyntheticLambda0;-><init>(Ljava/lang/Runnable;)V
+HSPLandroidx/activity/OnBackPressedDispatcher$Api33Impl;->createOnBackInvokedCallback(Ljava/lang/Runnable;)Landroid/window/OnBackInvokedCallback;
+HSPLandroidx/activity/OnBackPressedDispatcher;-><init>(Ljava/lang/Runnable;)V
+HSPLandroidx/activity/OnBackPressedDispatcher;->hasEnabledCallbacks()Z
+HSPLandroidx/activity/OnBackPressedDispatcher;->setOnBackInvokedDispatcher(Landroid/window/OnBackInvokedDispatcher;)V
+HSPLandroidx/activity/OnBackPressedDispatcher;->updateBackInvokedCallbackState()V
+HSPLandroidx/activity/ViewTreeFullyDrawnReporterOwner;->set(Landroid/view/View;Landroidx/activity/FullyDrawnReporterOwner;)V
+HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner;->set(Landroid/view/View;Landroidx/activity/OnBackPressedDispatcherOwner;)V
+HSPLandroidx/activity/compose/ActivityResultLauncherHolder;-><init>()V
+HSPLandroidx/activity/compose/ActivityResultLauncherHolder;->setLauncher(Landroidx/activity/result/ActivityResultLauncher;)V
+HSPLandroidx/activity/compose/ActivityResultLauncherHolder;->unregister()V
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1$1;-><init>(Landroidx/compose/runtime/State;)V
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/activity/compose/ActivityResultLauncherHolder;)V
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1$invoke$$inlined$onDispose$1;->dispose()V
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1;-><init>(Landroidx/activity/compose/ActivityResultLauncherHolder;Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/compose/runtime/State;)V
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$key$1;-><clinit>()V
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$key$1;-><init>()V
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$key$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$key$1;->invoke()Ljava/lang/String;
+HSPLandroidx/activity/compose/ActivityResultRegistryKt;->rememberLauncherForActivityResult(Landroidx/activity/result/contract/ActivityResultContract;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/activity/compose/ManagedActivityResultLauncher;
+HSPLandroidx/activity/compose/ComponentActivityKt;-><clinit>()V
+HSPLandroidx/activity/compose/ComponentActivityKt;->setContent$default(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V
+HSPLandroidx/activity/compose/ComponentActivityKt;->setContent(Landroidx/activity/ComponentActivity;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/activity/compose/ComponentActivityKt;->setOwners(Landroidx/activity/ComponentActivity;)V
+HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;-><clinit>()V
+HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;-><init>()V
+HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;->invoke()Landroidx/activity/result/ActivityResultRegistryOwner;
+HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner;-><clinit>()V
+HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner;-><init>()V
+HSPLandroidx/activity/compose/LocalActivityResultRegistryOwner;->getCurrent(Landroidx/compose/runtime/Composer;I)Landroidx/activity/result/ActivityResultRegistryOwner;
+HSPLandroidx/activity/compose/ManagedActivityResultLauncher;-><clinit>()V
+HSPLandroidx/activity/compose/ManagedActivityResultLauncher;-><init>(Landroidx/activity/compose/ActivityResultLauncherHolder;Landroidx/compose/runtime/State;)V
+HSPLandroidx/activity/contextaware/ContextAwareHelper;-><init>()V
+HSPLandroidx/activity/contextaware/ContextAwareHelper;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V
+HSPLandroidx/activity/contextaware/ContextAwareHelper;->dispatchOnContextAvailable(Landroid/content/Context;)V
+HSPLandroidx/activity/result/ActivityResultLauncher;-><init>()V
+HSPLandroidx/activity/result/ActivityResultRegistry$3;-><init>(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;)V
+HSPLandroidx/activity/result/ActivityResultRegistry$3;->unregister()V
+HSPLandroidx/activity/result/ActivityResultRegistry$CallbackAndContract;-><init>(Landroidx/activity/result/ActivityResultCallback;Landroidx/activity/result/contract/ActivityResultContract;)V
+HSPLandroidx/activity/result/ActivityResultRegistry;-><init>()V
+HSPLandroidx/activity/result/ActivityResultRegistry;->bindRcKey(ILjava/lang/String;)V
+HSPLandroidx/activity/result/ActivityResultRegistry;->generateRandomNumber()I
+HSPLandroidx/activity/result/ActivityResultRegistry;->register(Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/activity/result/ActivityResultCallback;)Landroidx/activity/result/ActivityResultLauncher;
+HSPLandroidx/activity/result/ActivityResultRegistry;->registerKey(Ljava/lang/String;)V
+HSPLandroidx/activity/result/ActivityResultRegistry;->unregister(Ljava/lang/String;)V
+HSPLandroidx/activity/result/contract/ActivityResultContract;-><init>()V
+HSPLandroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult$Companion;-><init>()V
+HSPLandroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult;-><clinit>()V
+HSPLandroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult;-><init>()V
+HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda0;-><init>()V
+HSPLandroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;-><init>()V
+HSPLandroidx/arch/core/executor/ArchTaskExecutor;-><clinit>()V
+HSPLandroidx/arch/core/executor/ArchTaskExecutor;-><init>()V
+HSPLandroidx/arch/core/executor/ArchTaskExecutor;->getInstance()Landroidx/arch/core/executor/ArchTaskExecutor;
+HSPLandroidx/arch/core/executor/ArchTaskExecutor;->isMainThread()Z
+HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;-><init>(Landroidx/arch/core/executor/DefaultTaskExecutor;)V
+HSPLandroidx/arch/core/executor/DefaultTaskExecutor;-><init>()V
+HSPLandroidx/arch/core/executor/DefaultTaskExecutor;->isMainThread()Z
+HSPLandroidx/arch/core/executor/TaskExecutor;-><init>()V
+HSPLandroidx/arch/core/internal/FastSafeIterableMap;-><init>()V
+HSPLandroidx/arch/core/internal/FastSafeIterableMap;->ceil(Ljava/lang/Object;)Ljava/util/Map$Entry;
+HSPLandroidx/arch/core/internal/FastSafeIterableMap;->contains(Ljava/lang/Object;)Z
+HSPLandroidx/arch/core/internal/FastSafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
+HSPLandroidx/arch/core/internal/FastSafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/arch/core/internal/FastSafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/arch/core/internal/SafeIterableMap$AscendingIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
+HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getKey()Ljava/lang/Object;
+HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getValue()Ljava/lang/Object;
+HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;-><init>(Landroidx/arch/core/internal/SafeIterableMap;)V
+HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->hasNext()Z
+HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/lang/Object;
+HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/util/Map$Entry;
+HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
+HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
+HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->hasNext()Z
+HSPLandroidx/arch/core/internal/SafeIterableMap$SupportRemove;-><init>()V
+HSPLandroidx/arch/core/internal/SafeIterableMap;-><init>()V
+HSPLandroidx/arch/core/internal/SafeIterableMap;->eldest()Ljava/util/Map$Entry;
+HSPLandroidx/arch/core/internal/SafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
+HSPLandroidx/arch/core/internal/SafeIterableMap;->iterator()Ljava/util/Iterator;
+HSPLandroidx/arch/core/internal/SafeIterableMap;->iteratorWithAdditions()Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;
+HSPLandroidx/arch/core/internal/SafeIterableMap;->newest()Ljava/util/Map$Entry;
+HSPLandroidx/arch/core/internal/SafeIterableMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
+HSPLandroidx/arch/core/internal/SafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/arch/core/internal/SafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/arch/core/internal/SafeIterableMap;->size()I
+HSPLandroidx/collection/ArraySet$Companion;-><init>()V
+HSPLandroidx/collection/ArraySet$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/collection/ArraySet;-><clinit>()V
+HSPLandroidx/collection/ArraySet;-><init>()V
+HSPLandroidx/collection/ArraySet;-><init>(I)V
+HSPLandroidx/collection/ArraySet;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/collection/ArraySet;->add(Ljava/lang/Object;)Z
+HSPLandroidx/collection/ArraySet;->allocArrays(I)V
+HSPLandroidx/collection/ArraySet;->clear()V
+HSPLandroidx/collection/ArraySet;->indexOf(Ljava/lang/Object;I)I
+HSPLandroidx/collection/ArraySet;->toArray()[Ljava/lang/Object;
+HSPLandroidx/collection/LruCache;-><init>(I)V
+HSPLandroidx/collection/SimpleArrayMap;-><init>()V
+HSPLandroidx/collection/SimpleArrayMap;-><init>(I)V
+HSPLandroidx/collection/SimpleArrayMap;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/collection/SparseArrayCompat;-><init>()V
+HSPLandroidx/collection/SparseArrayCompat;-><init>(I)V
+HSPLandroidx/collection/SparseArrayCompat;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/collection/internal/ContainerHelpersKt;-><clinit>()V
+HSPLandroidx/collection/internal/ContainerHelpersKt;->idealByteArraySize(I)I
+HSPLandroidx/collection/internal/ContainerHelpersKt;->idealIntArraySize(I)I
+HSPLandroidx/collection/internal/Lock;-><init>()V
+HSPLandroidx/collection/internal/LruHashMap;-><init>(IF)V
+HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;-><init>(Landroidx/compose/animation/core/Animatable;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/Ref$BooleanRef;)V
+HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->invoke(Landroidx/compose/animation/core/AnimationScope;)V
+HSPLandroidx/compose/animation/core/Animatable$runAnimation$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;-><init>(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/Animation;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->create(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invoke(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable$runAnimation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;-><clinit>()V
+HSPLandroidx/compose/animation/core/Animatable;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;)V
+HSPLandroidx/compose/animation/core/Animatable;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/animation/core/Animatable;->access$clampToBounds(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;->access$endAnimation(Landroidx/compose/animation/core/Animatable;)V
+HSPLandroidx/compose/animation/core/Animatable;->access$setRunning(Landroidx/compose/animation/core/Animatable;Z)V
+HSPLandroidx/compose/animation/core/Animatable;->access$setTargetValue(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;)V
+HSPLandroidx/compose/animation/core/Animatable;->animateTo$default(Landroidx/compose/animation/core/Animatable;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;->animateTo(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;->asState()Landroidx/compose/runtime/State;
+HSPLandroidx/compose/animation/core/Animatable;->clampToBounds(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;->createVector(Ljava/lang/Object;F)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/Animatable;->endAnimation()V
+HSPLandroidx/compose/animation/core/Animatable;->getInternalState$animation_core_release()Landroidx/compose/animation/core/AnimationState;
+HSPLandroidx/compose/animation/core/Animatable;->getTargetValue()Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/Animatable;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;->getVelocity()Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/Animatable;->runAnimation(Landroidx/compose/animation/core/Animation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/Animatable;->setRunning(Z)V
+HSPLandroidx/compose/animation/core/Animatable;->setTargetValue(Ljava/lang/Object;)V
+HSPLandroidx/compose/animation/core/AnimatableKt;->Animatable$default(FFILjava/lang/Object;)Landroidx/compose/animation/core/Animatable;
+HSPLandroidx/compose/animation/core/AnimatableKt;->Animatable(FF)Landroidx/compose/animation/core/Animatable;
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;-><init>(Lkotlinx/coroutines/channels/Channel;Ljava/lang/Object;)V
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;->invoke()V
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/Animatable;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;-><init>(Lkotlinx/coroutines/channels/Channel;Landroidx/compose/animation/core/Animatable;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/AnimateAsStateKt;-><clinit>()V
+HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateFloatAsState(FLandroidx/compose/animation/core/AnimationSpec;FLjava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationSpec;Ljava/lang/Object;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/animation/core/Animation;->isFinishedFromNanos(J)Z
+HSPLandroidx/compose/animation/core/AnimationEndReason;->$values()[Landroidx/compose/animation/core/AnimationEndReason;
+HSPLandroidx/compose/animation/core/AnimationEndReason;-><clinit>()V
+HSPLandroidx/compose/animation/core/AnimationEndReason;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/animation/core/AnimationKt;->TargetBasedAnimation(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroidx/compose/animation/core/TargetBasedAnimation;
+HSPLandroidx/compose/animation/core/AnimationResult;-><clinit>()V
+HSPLandroidx/compose/animation/core/AnimationResult;-><init>(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/AnimationEndReason;)V
+HSPLandroidx/compose/animation/core/AnimationScope;-><clinit>()V
+HSPLandroidx/compose/animation/core/AnimationScope;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/TwoWayConverter;Landroidx/compose/animation/core/AnimationVector;JLjava/lang/Object;JZLkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/animation/core/AnimationScope;->getFinishedTimeNanos()J
+HSPLandroidx/compose/animation/core/AnimationScope;->getLastFrameTimeNanos()J
+HSPLandroidx/compose/animation/core/AnimationScope;->getStartTimeNanos()J
+HSPLandroidx/compose/animation/core/AnimationScope;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/AnimationScope;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/AnimationScope;->isRunning()Z
+HSPLandroidx/compose/animation/core/AnimationScope;->setFinishedTimeNanos$animation_core_release(J)V
+HSPLandroidx/compose/animation/core/AnimationScope;->setLastFrameTimeNanos$animation_core_release(J)V
+HSPLandroidx/compose/animation/core/AnimationScope;->setRunning$animation_core_release(Z)V
+HSPLandroidx/compose/animation/core/AnimationScope;->setValue$animation_core_release(Ljava/lang/Object;)V
+HSPLandroidx/compose/animation/core/AnimationScope;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V
+HSPLandroidx/compose/animation/core/AnimationSpecKt;->spring$default(FFLjava/lang/Object;ILjava/lang/Object;)Landroidx/compose/animation/core/SpringSpec;
+HSPLandroidx/compose/animation/core/AnimationSpecKt;->spring(FFLjava/lang/Object;)Landroidx/compose/animation/core/SpringSpec;
+HSPLandroidx/compose/animation/core/AnimationState;-><clinit>()V
+HSPLandroidx/compose/animation/core/AnimationState;-><init>(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZ)V
+HSPLandroidx/compose/animation/core/AnimationState;-><init>(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/animation/core/AnimationState;->getLastFrameTimeNanos()J
+HSPLandroidx/compose/animation/core/AnimationState;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/AnimationState;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/AnimationState;->getVelocityVector()Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/AnimationState;->isRunning()Z
+HSPLandroidx/compose/animation/core/AnimationState;->setFinishedTimeNanos$animation_core_release(J)V
+HSPLandroidx/compose/animation/core/AnimationState;->setLastFrameTimeNanos$animation_core_release(J)V
+HSPLandroidx/compose/animation/core/AnimationState;->setRunning$animation_core_release(Z)V
+HSPLandroidx/compose/animation/core/AnimationState;->setValue$animation_core_release(Ljava/lang/Object;)V
+HSPLandroidx/compose/animation/core/AnimationState;->setVelocityVector$animation_core_release(Landroidx/compose/animation/core/AnimationVector;)V
+HSPLandroidx/compose/animation/core/AnimationStateKt;->copy$default(Landroidx/compose/animation/core/AnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZILjava/lang/Object;)Landroidx/compose/animation/core/AnimationState;
+HSPLandroidx/compose/animation/core/AnimationStateKt;->copy(Landroidx/compose/animation/core/AnimationState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;JJZ)Landroidx/compose/animation/core/AnimationState;
+HSPLandroidx/compose/animation/core/AnimationStateKt;->createZeroVectorFrom(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/AnimationVector1D;-><clinit>()V
+HSPLandroidx/compose/animation/core/AnimationVector1D;-><init>(F)V
+HSPLandroidx/compose/animation/core/AnimationVector1D;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/animation/core/AnimationVector1D;->get$animation_core_release(I)F
+HSPLandroidx/compose/animation/core/AnimationVector1D;->getSize$animation_core_release()I
+HSPLandroidx/compose/animation/core/AnimationVector1D;->getValue()F
+HSPLandroidx/compose/animation/core/AnimationVector1D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector1D;
+HSPLandroidx/compose/animation/core/AnimationVector1D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/AnimationVector1D;->reset$animation_core_release()V
+HSPLandroidx/compose/animation/core/AnimationVector1D;->set$animation_core_release(IF)V
+HSPLandroidx/compose/animation/core/AnimationVector;-><clinit>()V
+HSPLandroidx/compose/animation/core/AnimationVector;-><init>()V
+HSPLandroidx/compose/animation/core/AnimationVector;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/animation/core/AnimationVectorsKt;->copy(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/AnimationVectorsKt;->copyFrom(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)V
+HSPLandroidx/compose/animation/core/AnimationVectorsKt;->newInstance(Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/CubicBezierEasing;-><init>(FFFF)V
+HSPLandroidx/compose/animation/core/CubicBezierEasing;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/animation/core/CubicBezierEasing;->evaluateCubic(FFF)F
+HSPLandroidx/compose/animation/core/CubicBezierEasing;->transform(F)F
+HSPLandroidx/compose/animation/core/EasingKt$LinearEasing$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/EasingKt$LinearEasing$1;-><init>()V
+HSPLandroidx/compose/animation/core/EasingKt;-><clinit>()V
+HSPLandroidx/compose/animation/core/EasingKt;->getFastOutSlowInEasing()Landroidx/compose/animation/core/Easing;
+HSPLandroidx/compose/animation/core/EasingKt;->getLinearEasing()Landroidx/compose/animation/core/Easing;
+HSPLandroidx/compose/animation/core/FloatTweenSpec;-><clinit>()V
+HSPLandroidx/compose/animation/core/FloatTweenSpec;-><init>(IILandroidx/compose/animation/core/Easing;)V
+HSPLandroidx/compose/animation/core/FloatTweenSpec;->clampPlayTime(J)J
+HSPLandroidx/compose/animation/core/FloatTweenSpec;->getValueFromNanos(JFFF)F
+HSPLandroidx/compose/animation/core/FloatTweenSpec;->getVelocityFromNanos(JFFF)F
+HSPLandroidx/compose/animation/core/MutatePriority;->$values()[Landroidx/compose/animation/core/MutatePriority;
+HSPLandroidx/compose/animation/core/MutatePriority;-><clinit>()V
+HSPLandroidx/compose/animation/core/MutatePriority;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/animation/core/MutatorMutex$Mutator;-><init>(Landroidx/compose/animation/core/MutatePriority;Lkotlinx/coroutines/Job;)V
+HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;-><init>(Landroidx/compose/animation/core/MutatePriority;Landroidx/compose/animation/core/MutatorMutex;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/MutatorMutex$mutate$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/MutatorMutex;-><init>()V
+HSPLandroidx/compose/animation/core/MutatorMutex;->access$getCurrentMutator$p(Landroidx/compose/animation/core/MutatorMutex;)Ljava/util/concurrent/atomic/AtomicReference;
+HSPLandroidx/compose/animation/core/MutatorMutex;->access$getMutex$p(Landroidx/compose/animation/core/MutatorMutex;)Lkotlinx/coroutines/sync/Mutex;
+HSPLandroidx/compose/animation/core/MutatorMutex;->access$tryMutateOrCancel(Landroidx/compose/animation/core/MutatorMutex;Landroidx/compose/animation/core/MutatorMutex$Mutator;)V
+HSPLandroidx/compose/animation/core/MutatorMutex;->mutate$default(Landroidx/compose/animation/core/MutatorMutex;Landroidx/compose/animation/core/MutatePriority;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/MutatorMutex;->mutate(Landroidx/compose/animation/core/MutatePriority;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/MutatorMutex;->tryMutateOrCancel(Landroidx/compose/animation/core/MutatorMutex$Mutator;)V
+HSPLandroidx/compose/animation/core/SpringSpec;-><init>(FFLjava/lang/Object;)V
+HSPLandroidx/compose/animation/core/SpringSpec;-><init>(FFLjava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/animation/core/SpringSpec;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$4;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6$1;-><init>(Landroidx/compose/animation/core/AnimationState;)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;-><init>(Lkotlin/jvm/internal/Ref$ObjectRef;Ljava/lang/Object;Landroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationState;FLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;->invoke(J)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;-><init>(Lkotlin/jvm/internal/Ref$ObjectRef;FLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;->invoke(J)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$animate$9;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;->invoke(J)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/SuspendAnimationKt;->access$doAnimationFrameWithScale(Landroidx/compose/animation/core/AnimationScope;JFLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt;->animate(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/Animation;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/SuspendAnimationKt;->callWithFrameNanos(Landroidx/compose/animation/core/Animation;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/SuspendAnimationKt;->doAnimationFrame(Landroidx/compose/animation/core/AnimationScope;JJLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt;->doAnimationFrameWithScale(Landroidx/compose/animation/core/AnimationScope;JFLandroidx/compose/animation/core/Animation;Landroidx/compose/animation/core/AnimationState;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/animation/core/SuspendAnimationKt;->getDurationScale(Lkotlin/coroutines/CoroutineContext;)F
+HSPLandroidx/compose/animation/core/SuspendAnimationKt;->updateState(Landroidx/compose/animation/core/AnimationScope;Landroidx/compose/animation/core/AnimationState;)V
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;-><clinit>()V
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;-><init>(Landroidx/compose/animation/core/AnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;)V
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;-><init>(Landroidx/compose/animation/core/VectorizedAnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;)V
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getDurationNanos()J
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getTargetValue()Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getValueFromNanos(J)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;->getVelocityVectorFromNanos(J)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/TargetBasedAnimation;->isInfinite()Z
+HSPLandroidx/compose/animation/core/TweenSpec;-><init>(IILandroidx/compose/animation/core/Easing;)V
+HSPLandroidx/compose/animation/core/TweenSpec;-><init>(IILandroidx/compose/animation/core/Easing;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/animation/core/TweenSpec;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/animation/core/TweenSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedAnimationSpec;
+HSPLandroidx/compose/animation/core/TweenSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedTweenSpec;
+HSPLandroidx/compose/animation/core/TwoWayConverterImpl;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/animation/core/TwoWayConverterImpl;->getConvertFromVector()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/animation/core/TwoWayConverterImpl;->getConvertToVector()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;->invoke-0680j_4(F)Landroidx/compose/animation/core/AnimationVector1D;
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;->invoke-u2uoSUM(Landroidx/compose/animation/core/AnimationVector1D;)F
+HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->invoke(F)Landroidx/compose/animation/core/AnimationVector1D;
+HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$RectToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2;-><init>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->TwoWayConverter(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Offset$Companion;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Rect$Companion;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/geometry/Size$Companion;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/Dp$Companion;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/DpOffset$Companion;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/IntOffset$Companion;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Landroidx/compose/ui/unit/IntSize$Companion;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Lkotlin/jvm/internal/FloatCompanionObject;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->getVectorConverter(Lkotlin/jvm/internal/IntCompanionObject;)Landroidx/compose/animation/core/TwoWayConverter;
+HSPLandroidx/compose/animation/core/VectorConvertersKt;->lerp(FFF)F
+HSPLandroidx/compose/animation/core/VectorizedAnimationSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J
+HSPLandroidx/compose/animation/core/VectorizedFiniteAnimationSpec;->isInfinite()Z
+HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec$1;-><init>(Landroidx/compose/animation/core/FloatAnimationSpec;)V
+HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec$1;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec;
+HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;-><init>(Landroidx/compose/animation/core/Animations;)V
+HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;-><init>(Landroidx/compose/animation/core/FloatAnimationSpec;)V
+HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/VectorizedTweenSpec;-><clinit>()V
+HSPLandroidx/compose/animation/core/VectorizedTweenSpec;-><init>(IILandroidx/compose/animation/core/Easing;)V
+HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getDelayMillis()I
+HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getDurationMillis()I
+HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/VectorizedTweenSpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;-><clinit>()V
+HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Offset$Companion;)J
+HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Rect$Companion;)Landroidx/compose/ui/geometry/Rect;
+HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/geometry/Size$Companion;)J
+HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/Dp$Companion;)F
+HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/IntOffset$Companion;)J
+HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Landroidx/compose/ui/unit/IntSize$Companion;)J
+HSPLandroidx/compose/animation/core/VisibilityThresholdsKt;->getVisibilityThreshold(Lkotlin/jvm/internal/IntCompanionObject;)I
+HSPLandroidx/compose/foundation/Background;-><init>(Landroidx/compose/ui/graphics/Color;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/Background;-><init>(Landroidx/compose/ui/graphics/Color;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/Background;-><init>(Landroidx/compose/ui/graphics/Color;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Shape;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/Background;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+HSPLandroidx/compose/foundation/Background;->drawOutline(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+HSPLandroidx/compose/foundation/Background;->drawRect(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+HSPLandroidx/compose/foundation/Background;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/BackgroundKt;->background-bw27NRU$default(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;ILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/BackgroundKt;->background-bw27NRU(Landroidx/compose/ui/Modifier;JLandroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/CanvasKt;->Canvas(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/foundation/ClickableKt$PressedInteractionSourceDisposableEffect$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/MutableState;Ljava/util/Map;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/ClickableKt$PressedInteractionSourceDisposableEffect$1;-><init>(Landroidx/compose/runtime/MutableState;Ljava/util/Map;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/ClickableKt$PressedInteractionSourceDisposableEffect$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/foundation/ClickableKt$PressedInteractionSourceDisposableEffect$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$1$1$1;-><init>(Landroidx/compose/ui/input/ScrollContainerInfo;)V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$1$1;-><init>(Landroidx/compose/runtime/MutableState;)V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$1$1;->invoke(Landroidx/compose/ui/input/ScrollContainerInfo;)V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$delayPressInteraction$1$1;-><clinit>()V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$delayPressInteraction$1$1;-><init>()V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$1;-><init>(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$2;-><init>(ZLandroidx/compose/runtime/State;)V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1;-><init>(Landroidx/compose/runtime/MutableState;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4;-><init>(Lkotlin/jvm/functions/Function0;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;Ljava/lang/String;Landroidx/compose/ui/semantics/Role;)V
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/ClickableKt$clickable$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$clickSemantics$1$1;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$clickSemantics$1;-><init>(Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;ZLkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$clickSemantics$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+HSPLandroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$clickSemantics$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$detectPressAndClickFromKey$1;-><init>(ZLjava/util/Map;Landroidx/compose/runtime/State;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/ClickableKt;->PressedInteractionSourceDisposableEffect(Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Ljava/util/Map;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/foundation/ClickableKt;->clickable-O2vRcR0$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/ClickableKt;->clickable-O2vRcR0(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/ClickableKt;->genericClickableWithoutGesture-bdNGguI(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/Indication;Lkotlinx/coroutines/CoroutineScope;Ljava/util/Map;Landroidx/compose/runtime/State;ZLjava/lang/String;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/ClickableKt;->genericClickableWithoutGesture_bdNGguI$clickSemantics(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/semantics/Role;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Ljava/lang/String;ZLkotlin/jvm/functions/Function0;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/ClickableKt;->genericClickableWithoutGesture_bdNGguI$detectPressAndClickFromKey(Landroidx/compose/ui/Modifier;ZLjava/util/Map;Landroidx/compose/runtime/State;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function0;Landroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/DarkThemeKt;->isSystemInDarkTheme(Landroidx/compose/runtime/Composer;I)Z
+HSPLandroidx/compose/foundation/DarkTheme_androidKt;->_isSystemInDarkTheme(Landroidx/compose/runtime/Composer;I)Z
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$1$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$1$1;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$2$invoke$$inlined$onDispose$1;-><init>()V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$2;-><init>(ZLkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$3$1;-><init>(Landroidx/compose/ui/focus/FocusRequester;Landroidx/compose/runtime/MutableState;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$3;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$3;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$4$1;-><init>(Landroidx/compose/runtime/MutableState;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$4$1;->invoke(Landroidx/compose/foundation/lazy/layout/PinnableParent;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$4$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$5$3;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$5$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$5$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$5;-><init>(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$5;->invoke(Landroidx/compose/ui/focus/FocusState;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;-><init>(Landroidx/compose/foundation/interaction/MutableInteractionSource;Z)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;->access$invoke$lambda$3(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/lazy/layout/PinnableParent;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;->access$invoke$lambda$5(Landroidx/compose/runtime/MutableState;)Z
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;->access$invoke$lambda$6(Landroidx/compose/runtime/MutableState;Z)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;->invoke$lambda$3(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/lazy/layout/PinnableParent;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;->invoke$lambda$5(Landroidx/compose/runtime/MutableState;)Z
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;->invoke$lambda$6(Landroidx/compose/runtime/MutableState;Z)V
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/FocusableKt$focusable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$2$1;-><init>(Landroidx/compose/ui/input/InputModeManager;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$2$1;->invoke(Landroidx/compose/ui/focus/FocusProperties;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$2;-><init>(ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/FocusableKt;-><clinit>()V
+HSPLandroidx/compose/foundation/FocusableKt;->access$onPinnableParentAvailable(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/FocusableKt;->focusable(Landroidx/compose/ui/Modifier;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/FocusableKt;->focusableInNonTouchMode(Landroidx/compose/ui/Modifier;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/FocusableKt;->onPinnableParentAvailable(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$1$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$1$1;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$2$1;-><init>(ZLandroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$3$1;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$3$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$3;-><init>(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$3;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2;-><init>(Landroidx/compose/foundation/interaction/MutableInteractionSource;Z)V
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/HoverableKt$hoverable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/HoverableKt;->hoverable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Z)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/IndicationKt$LocalIndication$1;-><clinit>()V
+HSPLandroidx/compose/foundation/IndicationKt$LocalIndication$1;-><init>()V
+HSPLandroidx/compose/foundation/IndicationKt$indication$2;-><init>(Landroidx/compose/foundation/Indication;Landroidx/compose/foundation/interaction/InteractionSource;)V
+HSPLandroidx/compose/foundation/IndicationKt$indication$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/IndicationKt$indication$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/IndicationKt;-><clinit>()V
+HSPLandroidx/compose/foundation/IndicationKt;->getLocalIndication()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/foundation/IndicationKt;->indication(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/foundation/Indication;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/IndicationModifier;-><init>(Landroidx/compose/foundation/IndicationInstance;)V
+HSPLandroidx/compose/foundation/IndicationModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+HSPLandroidx/compose/foundation/MutatePriority;->$values()[Landroidx/compose/foundation/MutatePriority;
+HSPLandroidx/compose/foundation/MutatePriority;-><clinit>()V
+HSPLandroidx/compose/foundation/MutatePriority;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/foundation/MutatorMutex$Mutator;-><init>(Landroidx/compose/foundation/MutatePriority;Lkotlinx/coroutines/Job;)V
+HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;-><init>(Landroidx/compose/foundation/MutatePriority;Landroidx/compose/foundation/MutatorMutex;Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/MutatorMutex$mutateWith$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/MutatorMutex;-><init>()V
+HSPLandroidx/compose/foundation/MutatorMutex;->access$getCurrentMutator$p(Landroidx/compose/foundation/MutatorMutex;)Ljava/util/concurrent/atomic/AtomicReference;
+HSPLandroidx/compose/foundation/MutatorMutex;->access$getMutex$p(Landroidx/compose/foundation/MutatorMutex;)Lkotlinx/coroutines/sync/Mutex;
+HSPLandroidx/compose/foundation/MutatorMutex;->access$tryMutateOrCancel(Landroidx/compose/foundation/MutatorMutex;Landroidx/compose/foundation/MutatorMutex$Mutator;)V
+HSPLandroidx/compose/foundation/MutatorMutex;->mutateWith(Ljava/lang/Object;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/MutatorMutex;->tryMutateOrCancel(Landroidx/compose/foundation/MutatorMutex$Mutator;)V
+HSPLandroidx/compose/foundation/PinnableParentConsumer;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/PinnableParentConsumer;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/PinnableParentConsumer;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$drag$2;-><init>(Landroidx/compose/foundation/gestures/DefaultDraggableState;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$drag$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$drag$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$drag$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$drag$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$dragScope$1;-><init>(Landroidx/compose/foundation/gestures/DefaultDraggableState;)V
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState$dragScope$1;->dragBy(F)V
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState;->access$getDragScope$p(Landroidx/compose/foundation/gestures/DefaultDraggableState;)Landroidx/compose/foundation/gestures/DragScope;
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState;->access$getScrollMutex$p(Landroidx/compose/foundation/gestures/DefaultDraggableState;)Landroidx/compose/foundation/MutatorMutex;
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState;->drag(Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DefaultDraggableState;->getOnDelta()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/foundation/gestures/DragLogic;-><init>(Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$1;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$3;-><clinit>()V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$3;-><init>()V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$4;-><init>(Z)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$5;-><init>(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$1$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$1$1;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$2;-><init>(Lkotlinx/coroutines/channels/Channel;Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1$1;-><init>(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/Orientation;Lkotlinx/coroutines/channels/Channel;ZLkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1;-><init>(Landroidx/compose/ui/input/pointer/PointerInputScope;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/Orientation;Lkotlinx/coroutines/channels/Channel;ZLkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3;-><init>(ZLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/Orientation;Lkotlinx/coroutines/channels/Channel;ZLkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9;-><init>(Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/foundation/gestures/Orientation;ZZ)V
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/gestures/DraggableKt$draggable$9;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt;->DraggableState(Lkotlin/jvm/functions/Function1;)Landroidx/compose/foundation/gestures/DraggableState;
+HSPLandroidx/compose/foundation/gestures/DraggableKt;->access$awaitDownAndSlop(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt;->awaitDownAndSlop(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/DraggableKt;->draggable$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/gestures/DraggableKt;->draggable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/gestures/DraggableKt;->draggable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/DraggableState;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Z)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/gestures/DraggableState;->drag$default(Landroidx/compose/foundation/gestures/DraggableState;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/ForEachGestureKt;->awaitEachGesture(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/Orientation;->$values()[Landroidx/compose/foundation/gestures/Orientation;
+HSPLandroidx/compose/foundation/gestures/Orientation;-><clinit>()V
+HSPLandroidx/compose/foundation/gestures/Orientation;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1;-><init>(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;-><init>(Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->reset(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$NoPressGesture$1;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;-><init>(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;-><init>(Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invoke(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;-><init>(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1;-><init>(Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1;->invoke(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2;-><init>(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;-><clinit>()V
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->awaitFirstDown$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;ZLandroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->awaitFirstDown(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;ZLandroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->detectTapAndPress(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->detectTapGestures$default(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->detectTapGestures(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/interaction/InteractionSourceKt;->MutableInteractionSource()Landroidx/compose/foundation/interaction/MutableInteractionSource;
+HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;-><init>()V
+HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->getInteractions()Lkotlinx/coroutines/flow/Flow;
+HSPLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->getInteractions()Lkotlinx/coroutines/flow/MutableSharedFlow;
+HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;-><clinit>()V
+HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;-><init>(J)V
+HSPLandroidx/compose/foundation/interaction/PressInteraction$Press;-><init>(JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/Arrangement$Bottom$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V
+HSPLandroidx/compose/foundation/layout/Arrangement$Center$1;->getSpacing-D9Ej5fM()F
+HSPLandroidx/compose/foundation/layout/Arrangement$End$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement$Horizontal;->getSpacing-D9Ej5fM()F
+HSPLandroidx/compose/foundation/layout/Arrangement$SpaceAround$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V
+HSPLandroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;->getSpacing-D9Ej5fM()F
+HSPLandroidx/compose/foundation/layout/Arrangement$SpaceEvenly$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement$Start$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement$Start$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V
+HSPLandroidx/compose/foundation/layout/Arrangement$Top$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement$Top$1;->arrange(Landroidx/compose/ui/unit/Density;I[I[I)V
+HSPLandroidx/compose/foundation/layout/Arrangement$Vertical;->getSpacing-D9Ej5fM()F
+HSPLandroidx/compose/foundation/layout/Arrangement;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/Arrangement;-><init>()V
+HSPLandroidx/compose/foundation/layout/Arrangement;->getCenter()Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical;
+HSPLandroidx/compose/foundation/layout/Arrangement;->getSpaceBetween()Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical;
+HSPLandroidx/compose/foundation/layout/Arrangement;->getStart()Landroidx/compose/foundation/layout/Arrangement$Horizontal;
+HSPLandroidx/compose/foundation/layout/Arrangement;->getTop()Landroidx/compose/foundation/layout/Arrangement$Vertical;
+HSPLandroidx/compose/foundation/layout/Arrangement;->placeCenter$foundation_layout_release(I[I[IZ)V
+HSPLandroidx/compose/foundation/layout/Arrangement;->placeLeftOrTop$foundation_layout_release([I[IZ)V
+HSPLandroidx/compose/foundation/layout/Arrangement;->placeSpaceBetween$foundation_layout_release(I[I[IZ)V
+HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;-><init>(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/layout/MeasureScope;IILandroidx/compose/ui/Alignment;)V
+HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;-><init>([Landroidx/compose/ui/layout/Placeable;Ljava/util/List;Landroidx/compose/ui/layout/MeasureScope;Lkotlin/jvm/internal/Ref$IntRef;Lkotlin/jvm/internal/Ref$IntRef;Landroidx/compose/ui/Alignment;)V
+HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1;-><init>(ZLandroidx/compose/ui/Alignment;)V
+HSPLandroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/BoxKt;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/BoxKt;->Box(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/foundation/layout/BoxKt;->access$getMatchesParentSize(Landroidx/compose/ui/layout/Measurable;)Z
+HSPLandroidx/compose/foundation/layout/BoxKt;->access$placeInBox(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/unit/LayoutDirection;IILandroidx/compose/ui/Alignment;)V
+HSPLandroidx/compose/foundation/layout/BoxKt;->boxMeasurePolicy(Landroidx/compose/ui/Alignment;Z)Landroidx/compose/ui/layout/MeasurePolicy;
+HSPLandroidx/compose/foundation/layout/BoxKt;->getBoxChildData(Landroidx/compose/ui/layout/Measurable;)Landroidx/compose/foundation/layout/BoxChildData;
+HSPLandroidx/compose/foundation/layout/BoxKt;->getMatchesParentSize(Landroidx/compose/ui/layout/Measurable;)Z
+HSPLandroidx/compose/foundation/layout/BoxKt;->placeInBox(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/Measurable;Landroidx/compose/ui/unit/LayoutDirection;IILandroidx/compose/ui/Alignment;)V
+HSPLandroidx/compose/foundation/layout/BoxKt;->rememberBoxMeasurePolicy(Landroidx/compose/ui/Alignment;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy;
+HSPLandroidx/compose/foundation/layout/BoxScopeInstance;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/BoxScopeInstance;-><init>()V
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;-><init>(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;I)V
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;-><init>(Landroidx/compose/ui/layout/MeasurePolicy;Lkotlin/jvm/functions/Function3;I)V
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;->invoke-0kLqBqw(Landroidx/compose/ui/layout/SubcomposeMeasureScope;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsKt;->BoxWithConstraints(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;ZLkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;-><init>(Landroidx/compose/ui/unit/Density;J)V
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;-><init>(Landroidx/compose/ui/unit/Density;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;->getConstraints-msEJaDk()J
+HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V
+HSPLandroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/ColumnKt;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/ColumnKt;->columnMeasurePolicy(Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy;
+HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;-><init>()V
+HSPLandroidx/compose/foundation/layout/ColumnScopeInstance;->align(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment$Horizontal;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment;-><init>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;-><init>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->horizontal$foundation_layout_release(Landroidx/compose/ui/Alignment$Horizontal;)Landroidx/compose/foundation/layout/CrossAxisAlignment;
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$Companion;->vertical$foundation_layout_release(Landroidx/compose/ui/Alignment$Vertical;)Landroidx/compose/foundation/layout/CrossAxisAlignment;
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment;-><init>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment;-><init>(Landroidx/compose/ui/Alignment$Horizontal;)V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment;->align$foundation_layout_release(ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/layout/Placeable;I)I
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment;-><init>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment;-><init>(Landroidx/compose/ui/Alignment$Vertical;)V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment;->align$foundation_layout_release(ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/layout/Placeable;I)I
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;-><init>()V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/CrossAxisAlignment;->isRelative$foundation_layout_release()Z
+HSPLandroidx/compose/foundation/layout/Direction;->$values()[Landroidx/compose/foundation/layout/Direction;
+HSPLandroidx/compose/foundation/layout/Direction;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/Direction;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/foundation/layout/FillModifier$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;)V
+HSPLandroidx/compose/foundation/layout/FillModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/FillModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/FillModifier;-><init>(Landroidx/compose/foundation/layout/Direction;FLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/layout/FillModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/FillModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/HorizontalAlignModifier;-><init>(Landroidx/compose/ui/Alignment$Horizontal;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/layout/HorizontalAlignModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/HorizontalAlignModifier;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Landroidx/compose/foundation/layout/RowColumnParentData;
+HSPLandroidx/compose/foundation/layout/HorizontalAlignModifier;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/LayoutOrientation;->$values()[Landroidx/compose/foundation/layout/LayoutOrientation;
+HSPLandroidx/compose/foundation/layout/LayoutOrientation;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/LayoutOrientation;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/foundation/layout/OffsetKt;->offset(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/OffsetPxModifier$measure$1;-><init>(Landroidx/compose/foundation/layout/OffsetPxModifier;Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Placeable;)V
+HSPLandroidx/compose/foundation/layout/OffsetPxModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/OffsetPxModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/OffsetPxModifier;-><init>(Lkotlin/jvm/functions/Function1;ZLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/layout/OffsetPxModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/OffsetPxModifier;->getOffset()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/foundation/layout/OffsetPxModifier;->getRtlAware()Z
+HSPLandroidx/compose/foundation/layout/OffsetPxModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;-><init>(IIII)V
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;-><init>(JLandroidx/compose/foundation/layout/LayoutOrientation;)V
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;-><init>(JLandroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->copy$default(Landroidx/compose/foundation/layout/OrientationIndependentConstraints;IIIIILjava/lang/Object;)Landroidx/compose/foundation/layout/OrientationIndependentConstraints;
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->copy(IIII)Landroidx/compose/foundation/layout/OrientationIndependentConstraints;
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->getCrossAxisMax()I
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->getCrossAxisMin()I
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->getMainAxisMax()I
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->getMainAxisMin()I
+HSPLandroidx/compose/foundation/layout/OrientationIndependentConstraints;->toBoxConstraints-OenEA2s(Landroidx/compose/foundation/layout/LayoutOrientation;)J
+HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-YgX7TsA$default(FFILjava/lang/Object;)Landroidx/compose/foundation/layout/PaddingValues;
+HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-YgX7TsA(FF)Landroidx/compose/foundation/layout/PaddingValues;
+HSPLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-a9UjIt4(FFFF)Landroidx/compose/foundation/layout/PaddingValues;
+HSPLandroidx/compose/foundation/layout/PaddingKt;->padding(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/PaddingValues;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-qDBjuR0$default(Landroidx/compose/ui/Modifier;FFFFILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/PaddingKt;->padding-qDBjuR0(Landroidx/compose/ui/Modifier;FFFF)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/PaddingModifier$measure$1;-><init>(Landroidx/compose/foundation/layout/PaddingModifier;Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/MeasureScope;)V
+HSPLandroidx/compose/foundation/layout/PaddingModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/PaddingModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/PaddingModifier;-><init>(FFFFZLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/layout/PaddingModifier;-><init>(FFFFZLkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/PaddingModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/PaddingModifier;->getRtlAware()Z
+HSPLandroidx/compose/foundation/layout/PaddingModifier;->getStart-D9Ej5fM()F
+HSPLandroidx/compose/foundation/layout/PaddingModifier;->getTop-D9Ej5fM()F
+HSPLandroidx/compose/foundation/layout/PaddingModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;-><init>(FFFF)V
+HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;-><init>(FFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateBottomPadding-D9Ej5fM()F
+HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateLeftPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F
+HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateRightPadding-u2uoSUM(Landroidx/compose/ui/unit/LayoutDirection;)F
+HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->calculateTopPadding-D9Ej5fM()F
+HSPLandroidx/compose/foundation/layout/PaddingValuesImpl;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;-><init>(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/foundation/layout/PaddingValuesModifier;)V
+HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;-><init>(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->getPaddingValues()Landroidx/compose/foundation/layout/PaddingValues;
+HSPLandroidx/compose/foundation/layout/PaddingValuesModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$4;-><init>(Ljava/util/List;[Landroidx/compose/ui/layout/Placeable;Lkotlin/jvm/functions/Function5;ILandroidx/compose/ui/layout/MeasureScope;[ILandroidx/compose/foundation/layout/LayoutOrientation;[Landroidx/compose/foundation/layout/RowColumnParentData;Landroidx/compose/foundation/layout/CrossAxisAlignment;ILkotlin/jvm/internal/Ref$IntRef;)V
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$4;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1;-><init>(Landroidx/compose/foundation/layout/LayoutOrientation;FLandroidx/compose/foundation/layout/SizeMode;Lkotlin/jvm/functions/Function5;Landroidx/compose/foundation/layout/CrossAxisAlignment;)V
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->access$getCrossAxisAlignment(Landroidx/compose/foundation/layout/RowColumnParentData;)Landroidx/compose/foundation/layout/CrossAxisAlignment;
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->access$getData(Landroidx/compose/ui/layout/IntrinsicMeasurable;)Landroidx/compose/foundation/layout/RowColumnParentData;
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->access$getWeight(Landroidx/compose/foundation/layout/RowColumnParentData;)F
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->access$isRelative(Landroidx/compose/foundation/layout/RowColumnParentData;)Z
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->access$rowColumnMeasurePolicy_TDGSqEk$crossAxisSize(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/LayoutOrientation;)I
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->access$rowColumnMeasurePolicy_TDGSqEk$mainAxisSize(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/LayoutOrientation;)I
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getCrossAxisAlignment(Landroidx/compose/foundation/layout/RowColumnParentData;)Landroidx/compose/foundation/layout/CrossAxisAlignment;
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getData(Landroidx/compose/ui/layout/IntrinsicMeasurable;)Landroidx/compose/foundation/layout/RowColumnParentData;
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->getWeight(Landroidx/compose/foundation/layout/RowColumnParentData;)F
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->isRelative(Landroidx/compose/foundation/layout/RowColumnParentData;)Z
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->rowColumnMeasurePolicy-TDGSqEk(Landroidx/compose/foundation/layout/LayoutOrientation;Lkotlin/jvm/functions/Function5;FLandroidx/compose/foundation/layout/SizeMode;Landroidx/compose/foundation/layout/CrossAxisAlignment;)Landroidx/compose/ui/layout/MeasurePolicy;
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->rowColumnMeasurePolicy_TDGSqEk$crossAxisSize(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/LayoutOrientation;)I
+HSPLandroidx/compose/foundation/layout/RowColumnImplKt;->rowColumnMeasurePolicy_TDGSqEk$mainAxisSize(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/LayoutOrientation;)I
+HSPLandroidx/compose/foundation/layout/RowColumnParentData;-><init>(FZLandroidx/compose/foundation/layout/CrossAxisAlignment;)V
+HSPLandroidx/compose/foundation/layout/RowColumnParentData;-><init>(FZLandroidx/compose/foundation/layout/CrossAxisAlignment;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/RowColumnParentData;->getCrossAxisAlignment()Landroidx/compose/foundation/layout/CrossAxisAlignment;
+HSPLandroidx/compose/foundation/layout/RowColumnParentData;->getWeight()F
+HSPLandroidx/compose/foundation/layout/RowColumnParentData;->setCrossAxisAlignment(Landroidx/compose/foundation/layout/CrossAxisAlignment;)V
+HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;-><init>(Landroidx/compose/foundation/layout/Arrangement$Horizontal;)V
+HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V
+HSPLandroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/RowKt;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/RowKt;->rowMeasurePolicy(Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/layout/MeasurePolicy;
+HSPLandroidx/compose/foundation/layout/RowScopeInstance;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/RowScopeInstance;-><init>()V
+HSPLandroidx/compose/foundation/layout/SizeKt$createFillHeightModifier$1;-><init>(F)V
+HSPLandroidx/compose/foundation/layout/SizeKt$createFillSizeModifier$1;-><init>(F)V
+HSPLandroidx/compose/foundation/layout/SizeKt$createFillWidthModifier$1;-><init>(F)V
+HSPLandroidx/compose/foundation/layout/SizeKt$createWrapContentHeightModifier$1;-><init>(Landroidx/compose/ui/Alignment$Vertical;)V
+HSPLandroidx/compose/foundation/layout/SizeKt$createWrapContentHeightModifier$2;-><init>(Landroidx/compose/ui/Alignment$Vertical;Z)V
+HSPLandroidx/compose/foundation/layout/SizeKt$createWrapContentSizeModifier$1;-><init>(Landroidx/compose/ui/Alignment;)V
+HSPLandroidx/compose/foundation/layout/SizeKt$createWrapContentSizeModifier$2;-><init>(Landroidx/compose/ui/Alignment;Z)V
+HSPLandroidx/compose/foundation/layout/SizeKt$createWrapContentWidthModifier$1;-><init>(Landroidx/compose/ui/Alignment$Horizontal;)V
+HSPLandroidx/compose/foundation/layout/SizeKt$createWrapContentWidthModifier$2;-><init>(Landroidx/compose/ui/Alignment$Horizontal;Z)V
+HSPLandroidx/compose/foundation/layout/SizeKt;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/SizeKt;->createFillHeightModifier(F)Landroidx/compose/foundation/layout/FillModifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->createFillSizeModifier(F)Landroidx/compose/foundation/layout/FillModifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->createFillWidthModifier(F)Landroidx/compose/foundation/layout/FillModifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->createWrapContentHeightModifier(Landroidx/compose/ui/Alignment$Vertical;Z)Landroidx/compose/foundation/layout/WrapContentModifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->createWrapContentSizeModifier(Landroidx/compose/ui/Alignment;Z)Landroidx/compose/foundation/layout/WrapContentModifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->createWrapContentWidthModifier(Landroidx/compose/ui/Alignment$Horizontal;Z)Landroidx/compose/foundation/layout/WrapContentModifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->defaultMinSize-VpY3zN4$default(Landroidx/compose/ui/Modifier;FFILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->defaultMinSize-VpY3zN4(Landroidx/compose/ui/Modifier;FF)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxSize$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxSize(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxWidth$default(Landroidx/compose/ui/Modifier;FILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->fillMaxWidth(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->height-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->size-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeKt;->width-3ABfNKs(Landroidx/compose/ui/Modifier;F)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/layout/SizeMode;->$values()[Landroidx/compose/foundation/layout/SizeMode;
+HSPLandroidx/compose/foundation/layout/SizeMode;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/SizeMode;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/foundation/layout/SizeModifier$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;)V
+HSPLandroidx/compose/foundation/layout/SizeModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/SizeModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/SizeModifier;-><init>(FFFFZLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/layout/SizeModifier;-><init>(FFFFZLkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/SizeModifier;-><init>(FFFFZLkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/SizeModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/SizeModifier;->getTargetConstraints-OenEA2s(Landroidx/compose/ui/unit/Density;)J
+HSPLandroidx/compose/foundation/layout/SizeModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/SpacerKt;->Spacer(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;-><init>()V
+HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;-><clinit>()V
+HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;-><init>()V
+HSPLandroidx/compose/foundation/layout/SpacerMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsModifier$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;)V
+HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsModifier;-><init>(FFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsModifier;-><init>(FFLkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/layout/UnspecifiedConstraintsModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/layout/WrapContentModifier;-><init>(Landroidx/compose/foundation/layout/Direction;ZLkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/lazy/layout/PinnableParentKt$ModifierLocalPinnableParent$1;-><clinit>()V
+HSPLandroidx/compose/foundation/lazy/layout/PinnableParentKt$ModifierLocalPinnableParent$1;-><init>()V
+HSPLandroidx/compose/foundation/lazy/layout/PinnableParentKt$ModifierLocalPinnableParent$1;->invoke()Landroidx/compose/foundation/lazy/layout/PinnableParent;
+HSPLandroidx/compose/foundation/lazy/layout/PinnableParentKt$ModifierLocalPinnableParent$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/foundation/lazy/layout/PinnableParentKt;-><clinit>()V
+HSPLandroidx/compose/foundation/lazy/layout/PinnableParentKt;->getModifierLocalPinnableParent()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/foundation/relocation/AndroidBringIntoViewParent;-><init>(Landroid/view/View;)V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewChildModifier;-><init>(Landroidx/compose/foundation/relocation/BringIntoViewParent;)V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewChildModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewChildModifier;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;-><clinit>()V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;-><init>()V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->invoke()Landroidx/compose/foundation/relocation/BringIntoViewParent;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewKt;-><clinit>()V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewKt;->getModifierLocalBringIntoViewParent()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;-><init>()V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;->getModifiers()Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/foundation/relocation/BringIntoViewRequesterModifier;)V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2$1;-><init>(Landroidx/compose/foundation/relocation/BringIntoViewRequester;Landroidx/compose/foundation/relocation/BringIntoViewRequesterModifier;)V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2;-><init>(Landroidx/compose/foundation/relocation/BringIntoViewRequester;)V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt;->BringIntoViewRequester()Landroidx/compose/foundation/relocation/BringIntoViewRequester;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt;->bringIntoViewRequester(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewRequester;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/relocation/BringIntoViewRequesterModifier;-><init>(Landroidx/compose/foundation/relocation/BringIntoViewParent;)V
+HSPLandroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt;->rememberDefaultBringIntoViewParent(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/relocation/BringIntoViewParent;
+HSPLandroidx/compose/foundation/shape/CornerBasedShape;-><clinit>()V
+HSPLandroidx/compose/foundation/shape/CornerBasedShape;-><init>(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)V
+HSPLandroidx/compose/foundation/shape/CornerBasedShape;->createOutline-Pq9zytI(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Landroidx/compose/ui/graphics/Outline;
+HSPLandroidx/compose/foundation/shape/CornerSizeKt$ZeroCornerSize$1;-><init>()V
+HSPLandroidx/compose/foundation/shape/CornerSizeKt;-><clinit>()V
+HSPLandroidx/compose/foundation/shape/CornerSizeKt;->CornerSize(I)Landroidx/compose/foundation/shape/CornerSize;
+HSPLandroidx/compose/foundation/shape/CornerSizeKt;->CornerSize-0680j_4(F)Landroidx/compose/foundation/shape/CornerSize;
+HSPLandroidx/compose/foundation/shape/DpCornerSize;-><init>(F)V
+HSPLandroidx/compose/foundation/shape/DpCornerSize;-><init>(FLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/shape/DpCornerSize;->toPx-TmRCtEA(JLandroidx/compose/ui/unit/Density;)F
+HSPLandroidx/compose/foundation/shape/PercentCornerSize;-><init>(F)V
+HSPLandroidx/compose/foundation/shape/PercentCornerSize;->toPx-TmRCtEA(JLandroidx/compose/ui/unit/Density;)F
+HSPLandroidx/compose/foundation/shape/RoundedCornerShape;-><clinit>()V
+HSPLandroidx/compose/foundation/shape/RoundedCornerShape;-><init>(Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;Landroidx/compose/foundation/shape/CornerSize;)V
+HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->createOutline-LjSzlW0(JFFFFLandroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/graphics/Outline;
+HSPLandroidx/compose/foundation/shape/RoundedCornerShape;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;-><clinit>()V
+HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape(I)Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape(Landroidx/compose/foundation/shape/CornerSize;)Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape-0680j_4(F)Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->RoundedCornerShape-a9UjIt4(FFFF)Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/foundation/shape/RoundedCornerShapeKt;->getCircleShape()Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-4YKlhWE$$inlined$Layout$1;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/foundation/text/BasicTextKt$BasicText-4YKlhWE$$inlined$Layout$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/foundation/text/BasicTextKt;->BasicText-4YKlhWE(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function1;IZIILandroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/foundation/text/CoreTextKt;-><clinit>()V
+HSPLandroidx/compose/foundation/text/CoreTextKt;->updateTextDelegate-x_uQXYA(Landroidx/compose/foundation/text/TextDelegate;Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;ZIII)Landroidx/compose/foundation/text/TextDelegate;
+HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;-><init>(IILandroidx/compose/ui/text/TextStyle;)V
+HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt;->heightInLines$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;IIILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt;->heightInLines(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/TextStyle;II)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/text/HeightInLinesModifierKt;->validateMinMaxLines(II)V
+HSPLandroidx/compose/foundation/text/TextController$coreModifiers$1;-><init>(Landroidx/compose/foundation/text/TextController;)V
+HSPLandroidx/compose/foundation/text/TextController$coreModifiers$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/foundation/text/TextController$coreModifiers$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/text/TextController$createSemanticsModifierFor$1$1;-><init>(Landroidx/compose/foundation/text/TextController;)V
+HSPLandroidx/compose/foundation/text/TextController$createSemanticsModifierFor$1;-><init>(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/foundation/text/TextController;)V
+HSPLandroidx/compose/foundation/text/TextController$createSemanticsModifierFor$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+HSPLandroidx/compose/foundation/text/TextController$createSemanticsModifierFor$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/text/TextController$drawTextAndSelectionBehind$1;-><init>(Landroidx/compose/foundation/text/TextController;)V
+HSPLandroidx/compose/foundation/text/TextController$drawTextAndSelectionBehind$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+HSPLandroidx/compose/foundation/text/TextController$drawTextAndSelectionBehind$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/text/TextController$measurePolicy$1$measure$2;-><init>(Ljava/util/List;)V
+HSPLandroidx/compose/foundation/text/TextController$measurePolicy$1$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/foundation/text/TextController$measurePolicy$1$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/foundation/text/TextController$measurePolicy$1;-><init>(Landroidx/compose/foundation/text/TextController;)V
+HSPLandroidx/compose/foundation/text/TextController$measurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/foundation/text/TextController;-><init>(Landroidx/compose/foundation/text/TextState;)V
+HSPLandroidx/compose/foundation/text/TextController;->access$getSelectionRegistrar$p(Landroidx/compose/foundation/text/TextController;)Landroidx/compose/foundation/text/selection/SelectionRegistrar;
+HSPLandroidx/compose/foundation/text/TextController;->createSemanticsModifierFor(Landroidx/compose/ui/text/AnnotatedString;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/text/TextController;->drawTextAndSelectionBehind(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/text/TextController;->getMeasurePolicy()Landroidx/compose/ui/layout/MeasurePolicy;
+HSPLandroidx/compose/foundation/text/TextController;->getModifiers()Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/foundation/text/TextController;->getState()Landroidx/compose/foundation/text/TextState;
+HSPLandroidx/compose/foundation/text/TextController;->onRemembered()V
+HSPLandroidx/compose/foundation/text/TextController;->setTextDelegate(Landroidx/compose/foundation/text/TextDelegate;)V
+HSPLandroidx/compose/foundation/text/TextController;->update(Landroidx/compose/foundation/text/selection/SelectionRegistrar;)V
+HSPLandroidx/compose/foundation/text/TextDelegate$Companion;-><init>()V
+HSPLandroidx/compose/foundation/text/TextDelegate$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/text/TextDelegate$Companion;->paint(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/text/TextLayoutResult;)V
+HSPLandroidx/compose/foundation/text/TextDelegate;-><clinit>()V
+HSPLandroidx/compose/foundation/text/TextDelegate;-><init>(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;)V
+HSPLandroidx/compose/foundation/text/TextDelegate;-><init>(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/text/TextDelegate;-><init>(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;IIZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;Ljava/util/List;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/text/TextDelegate;->getDensity()Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/foundation/text/TextDelegate;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver;
+HSPLandroidx/compose/foundation/text/TextDelegate;->getMaxIntrinsicWidth()I
+HSPLandroidx/compose/foundation/text/TextDelegate;->getMaxLines()I
+HSPLandroidx/compose/foundation/text/TextDelegate;->getMinLines()I
+HSPLandroidx/compose/foundation/text/TextDelegate;->getNonNullIntrinsics()Landroidx/compose/ui/text/MultiParagraphIntrinsics;
+HSPLandroidx/compose/foundation/text/TextDelegate;->getOverflow-gIe3tQ8()I
+HSPLandroidx/compose/foundation/text/TextDelegate;->getSoftWrap()Z
+HSPLandroidx/compose/foundation/text/TextDelegate;->getStyle()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/foundation/text/TextDelegate;->getText()Landroidx/compose/ui/text/AnnotatedString;
+HSPLandroidx/compose/foundation/text/TextDelegate;->layout-NN6Ew-U(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/TextLayoutResult;)Landroidx/compose/ui/text/TextLayoutResult;
+HSPLandroidx/compose/foundation/text/TextDelegate;->layoutIntrinsics(Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/foundation/text/TextDelegate;->layoutText-K40F9xA(JLandroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/MultiParagraph;
+HSPLandroidx/compose/foundation/text/TextDelegateKt;->ceilToIntPx(F)I
+HSPLandroidx/compose/foundation/text/TextLayoutHelperKt;->canReuse-7_7YC6M(Landroidx/compose/ui/text/TextLayoutResult;Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)Z
+HSPLandroidx/compose/foundation/text/TextState$onTextLayout$1;-><clinit>()V
+HSPLandroidx/compose/foundation/text/TextState$onTextLayout$1;-><init>()V
+HSPLandroidx/compose/foundation/text/TextState;-><init>(Landroidx/compose/foundation/text/TextDelegate;J)V
+HSPLandroidx/compose/foundation/text/TextState;->getDrawScopeInvalidation()Lkotlin/Unit;
+HSPLandroidx/compose/foundation/text/TextState;->getLayoutInvalidation()Lkotlin/Unit;
+HSPLandroidx/compose/foundation/text/TextState;->getLayoutResult()Landroidx/compose/ui/text/TextLayoutResult;
+HSPLandroidx/compose/foundation/text/TextState;->getOnTextLayout()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/foundation/text/TextState;->getSelectableId()J
+HSPLandroidx/compose/foundation/text/TextState;->getTextDelegate()Landroidx/compose/foundation/text/TextDelegate;
+HSPLandroidx/compose/foundation/text/TextState;->setDrawScopeInvalidation(Lkotlin/Unit;)V
+HSPLandroidx/compose/foundation/text/TextState;->setLayoutCoordinates(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/foundation/text/TextState;->setLayoutResult(Landroidx/compose/ui/text/TextLayoutResult;)V
+HSPLandroidx/compose/foundation/text/TextState;->setOnTextLayout(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;-><clinit>()V
+HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;-><init>()V
+HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->invoke()Landroidx/compose/foundation/text/selection/SelectionRegistrar;
+HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt;-><clinit>()V
+HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt;->getLocalSelectionRegistrar()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/foundation/text/selection/SelectionRegistrarKt;->hasSelection(Landroidx/compose/foundation/text/selection/SelectionRegistrar;J)Z
+HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;-><init>(JJ)V
+HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;-><init>(JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/foundation/text/selection/TextSelectionColors;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1;-><clinit>()V
+HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1;-><init>()V
+HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt;-><clinit>()V
+HSPLandroidx/compose/foundation/text/selection/TextSelectionColorsKt;->getLocalTextSelectionColors()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;-><init>(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V
+HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;-><init>(ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/material/ripple/RippleContainer;)V
+HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;-><init>(ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/material/ripple/RippleContainer;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->drawIndication(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->getInvalidateTick()Z
+HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->getRippleHostView()Landroidx/compose/material/ripple/RippleHostView;
+HSPLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->onRemembered()V
+HSPLandroidx/compose/material/ripple/PlatformRipple;-><init>(ZFLandroidx/compose/runtime/State;)V
+HSPLandroidx/compose/material/ripple/PlatformRipple;-><init>(ZFLandroidx/compose/runtime/State;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material/ripple/PlatformRipple;->findNearestViewGroup(Landroidx/compose/runtime/Composer;I)Landroid/view/ViewGroup;
+HSPLandroidx/compose/material/ripple/PlatformRipple;->rememberUpdatedRippleInstance-942rkJo(Landroidx/compose/foundation/interaction/InteractionSource;ZFLandroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/ripple/RippleIndicationInstance;
+HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;-><init>(Landroidx/compose/material/ripple/RippleIndicationInstance;Lkotlinx/coroutines/CoroutineScope;)V
+HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;-><init>(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/material/ripple/RippleIndicationInstance;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material/ripple/Ripple;-><init>(ZFLandroidx/compose/runtime/State;)V
+HSPLandroidx/compose/material/ripple/Ripple;-><init>(ZFLandroidx/compose/runtime/State;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material/ripple/Ripple;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material/ripple/Ripple;->rememberUpdatedInstance(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/IndicationInstance;
+HSPLandroidx/compose/material/ripple/RippleAlpha;-><init>(FFFF)V
+HSPLandroidx/compose/material/ripple/RippleAlpha;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material/ripple/RippleAlpha;->getPressedAlpha()F
+HSPLandroidx/compose/material/ripple/RippleAnimationKt;-><clinit>()V
+HSPLandroidx/compose/material/ripple/RippleAnimationKt;->getRippleEndRadius-cSwnlzA(Landroidx/compose/ui/unit/Density;ZJ)F
+HSPLandroidx/compose/material/ripple/RippleContainer;-><init>(Landroid/content/Context;)V
+HSPLandroidx/compose/material/ripple/RippleHostMap;-><init>()V
+HSPLandroidx/compose/material/ripple/RippleHostView$Companion;-><init>()V
+HSPLandroidx/compose/material/ripple/RippleHostView$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material/ripple/RippleHostView;-><clinit>()V
+HSPLandroidx/compose/material/ripple/RippleHostView;-><init>(Landroid/content/Context;)V
+HSPLandroidx/compose/material/ripple/RippleHostView;->refreshDrawableState()V
+HSPLandroidx/compose/material/ripple/RippleIndicationInstance;-><init>(ZLandroidx/compose/runtime/State;)V
+HSPLandroidx/compose/material/ripple/RippleIndicationInstance;->drawStateLayer-H2RKhps(Landroidx/compose/ui/graphics/drawscope/DrawScope;FJ)V
+HSPLandroidx/compose/material/ripple/RippleKt;-><clinit>()V
+HSPLandroidx/compose/material/ripple/RippleKt;->rememberRipple-9IZ8Weo(ZFJLandroidx/compose/runtime/Composer;II)Landroidx/compose/foundation/Indication;
+HSPLandroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1;-><clinit>()V
+HSPLandroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1;-><init>()V
+HSPLandroidx/compose/material/ripple/RippleThemeKt;-><clinit>()V
+HSPLandroidx/compose/material/ripple/RippleThemeKt;->getLocalRippleTheme()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/material/ripple/StateLayer;-><init>(ZLandroidx/compose/runtime/State;)V
+HSPLandroidx/compose/material/ripple/StateLayer;->drawStateLayer-H2RKhps(Landroidx/compose/ui/graphics/drawscope/DrawScope;FJ)V
+HSPLandroidx/compose/material3/ButtonColors;-><init>(JJJJ)V
+HSPLandroidx/compose/material3/ButtonColors;-><init>(JJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/ButtonColors;->containerColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ButtonColors;->contentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ButtonColors;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material3/ButtonDefaults;-><clinit>()V
+HSPLandroidx/compose/material3/ButtonDefaults;-><init>()V
+HSPLandroidx/compose/material3/ButtonDefaults;->filledTonalButtonColors-ro_MJ88(JJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ButtonColors;
+HSPLandroidx/compose/material3/ButtonDefaults;->filledTonalButtonElevation-R_JCAzs(FFFFFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ButtonElevation;
+HSPLandroidx/compose/material3/ButtonDefaults;->getContentPadding()Landroidx/compose/foundation/layout/PaddingValues;
+HSPLandroidx/compose/material3/ButtonDefaults;->getFilledTonalShape(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape;
+HSPLandroidx/compose/material3/ButtonDefaults;->getMinHeight-D9Ej5fM()F
+HSPLandroidx/compose/material3/ButtonDefaults;->getMinWidth-D9Ej5fM()F
+HSPLandroidx/compose/material3/ButtonDefaults;->getTextButtonContentPadding()Landroidx/compose/foundation/layout/PaddingValues;
+HSPLandroidx/compose/material3/ButtonDefaults;->getTextShape(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape;
+HSPLandroidx/compose/material3/ButtonDefaults;->textButtonColors-ro_MJ88(JJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ButtonColors;
+HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateList;)V
+HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;-><init>(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/material3/ButtonElevation$animateElevation$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;-><init>(Landroidx/compose/animation/core/Animatable;Landroidx/compose/material3/ButtonElevation;FLandroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/material3/ButtonElevation$animateElevation$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ButtonElevation;-><init>(FFFFF)V
+HSPLandroidx/compose/material3/ButtonElevation;-><init>(FFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/ButtonElevation;->access$getPressedElevation$p(Landroidx/compose/material3/ButtonElevation;)F
+HSPLandroidx/compose/material3/ButtonElevation;->animateElevation(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ButtonElevation;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material3/ButtonElevation;->shadowElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ButtonElevation;->tonalElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ButtonKt$Button$2$1$1;-><init>(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V
+HSPLandroidx/compose/material3/ButtonKt$Button$2$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/ButtonKt$Button$2$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ButtonKt$Button$2$1;-><init>(Landroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V
+HSPLandroidx/compose/material3/ButtonKt$Button$2$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/ButtonKt$Button$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ButtonKt$Button$2;-><init>(JLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function3;I)V
+HSPLandroidx/compose/material3/ButtonKt$Button$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/ButtonKt$Button$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ButtonKt$Button$3;-><init>(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ButtonColors;Landroidx/compose/material3/ButtonElevation;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function3;II)V
+HSPLandroidx/compose/material3/ButtonKt;->Button(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ButtonColors;Landroidx/compose/material3/ButtonElevation;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/ButtonKt;->FilledTonalButton(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ButtonColors;Landroidx/compose/material3/ButtonElevation;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/ButtonKt;->TextButton(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ButtonColors;Landroidx/compose/material3/ButtonElevation;Landroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/CardColors;-><init>(JJJJ)V
+HSPLandroidx/compose/material3/CardColors;-><init>(JJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/CardColors;->containerColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/CardColors;->contentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/CardColors;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material3/CardDefaults;-><clinit>()V
+HSPLandroidx/compose/material3/CardDefaults;-><init>()V
+HSPLandroidx/compose/material3/CardDefaults;->cardColors-ro_MJ88(JJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/CardColors;
+HSPLandroidx/compose/material3/CardDefaults;->cardElevation-aqJV_2Y(FFFFFFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/CardElevation;
+HSPLandroidx/compose/material3/CardDefaults;->getShape(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape;
+HSPLandroidx/compose/material3/CardElevation;-><init>(FFFFFF)V
+HSPLandroidx/compose/material3/CardElevation;-><init>(FFFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/CardElevation;->access$getDefaultElevation$p(Landroidx/compose/material3/CardElevation;)F
+HSPLandroidx/compose/material3/CardElevation;->shadowElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/CardElevation;->tonalElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/CardKt$Card$1;-><init>(Lkotlin/jvm/functions/Function3;I)V
+HSPLandroidx/compose/material3/CardKt$Card$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/CardKt$Card$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/CardKt$Card$2;-><init>(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/CardColors;Landroidx/compose/material3/CardElevation;Landroidx/compose/foundation/BorderStroke;Lkotlin/jvm/functions/Function3;II)V
+HSPLandroidx/compose/material3/CardKt;->Card(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/CardColors;Landroidx/compose/material3/CardElevation;Landroidx/compose/foundation/BorderStroke;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/ChipColors;-><init>(JJJJJJJJ)V
+HSPLandroidx/compose/material3/ChipColors;-><init>(JJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/ChipColors;->containerColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ChipColors;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material3/ChipColors;->labelColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ChipColors;->leadingIconContentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ChipColors;->trailingIconContentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ChipElevation$animateElevation$1$1$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateList;)V
+HSPLandroidx/compose/material3/ChipElevation$animateElevation$1$1;-><init>(Landroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/snapshots/SnapshotStateList;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/material3/ChipElevation$animateElevation$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/material3/ChipElevation$animateElevation$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ChipElevation$animateElevation$3;-><init>(Landroidx/compose/animation/core/Animatable;Landroidx/compose/material3/ChipElevation;FLandroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/material3/ChipElevation$animateElevation$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/material3/ChipElevation$animateElevation$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ChipElevation;-><init>(FFFFFF)V
+HSPLandroidx/compose/material3/ChipElevation;-><init>(FFFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/ChipElevation;->access$getPressedElevation$p(Landroidx/compose/material3/ChipElevation;)F
+HSPLandroidx/compose/material3/ChipElevation;->animateElevation(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ChipElevation;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material3/ChipElevation;->shadowElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ChipElevation;->tonalElevation$material3_release(ZLandroidx/compose/foundation/interaction/InteractionSource;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/material3/ChipKt$Chip$1;-><init>(Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/material3/ChipColors;ZIFLandroidx/compose/foundation/layout/PaddingValues;I)V
+HSPLandroidx/compose/material3/ChipKt$Chip$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/ChipKt$Chip$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ChipKt$Chip$2;-><init>(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;ZLkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ChipColors;Landroidx/compose/material3/ChipElevation;Landroidx/compose/foundation/BorderStroke;FLandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;II)V
+HSPLandroidx/compose/material3/ChipKt$ChipContent$1;-><init>(FLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/functions/Function2;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;J)V
+HSPLandroidx/compose/material3/ChipKt$ChipContent$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/ChipKt$ChipContent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/ChipKt$SuggestionChip$2;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ChipColors;Landroidx/compose/material3/ChipElevation;Landroidx/compose/material3/ChipBorder;Landroidx/compose/foundation/interaction/MutableInteractionSource;II)V
+HSPLandroidx/compose/material3/ChipKt;-><clinit>()V
+HSPLandroidx/compose/material3/ChipKt;->Chip-nkUnTEs(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;ZLkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ChipColors;Landroidx/compose/material3/ChipElevation;Landroidx/compose/foundation/BorderStroke;FLandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/ChipKt;->ChipContent-fe0OD_I(Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;JJFLandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/ChipKt;->SuggestionChip(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function2;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ChipColors;Landroidx/compose/material3/ChipElevation;Landroidx/compose/material3/ChipBorder;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/ChipKt;->access$ChipContent-fe0OD_I(Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;JJFLandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/ChipKt;->access$getHorizontalElementsPadding$p()F
+HSPLandroidx/compose/material3/ColorResourceHelper;-><clinit>()V
+HSPLandroidx/compose/material3/ColorResourceHelper;-><init>()V
+HSPLandroidx/compose/material3/ColorResourceHelper;->getColor-WaAFU9c(Landroid/content/Context;I)J
+HSPLandroidx/compose/material3/ColorScheme;-><init>(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)V
+HSPLandroidx/compose/material3/ColorScheme;-><init>(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/ColorScheme;->copy-G1PFc-w$default(Landroidx/compose/material3/ColorScheme;JJJJJJJJJJJJJJJJJJJJJJJJJJJJJILjava/lang/Object;)Landroidx/compose/material3/ColorScheme;
+HSPLandroidx/compose/material3/ColorScheme;->copy-G1PFc-w(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)Landroidx/compose/material3/ColorScheme;
+HSPLandroidx/compose/material3/ColorScheme;->getBackground-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getError-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getErrorContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getInverseOnSurface-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getInversePrimary-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getInverseSurface-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnBackground-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnError-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnErrorContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnPrimary-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnPrimaryContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnSecondary-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnSecondaryContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnSurface-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnSurfaceVariant-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnTertiary-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOnTertiaryContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOutline-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getOutlineVariant-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getPrimary-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getPrimaryContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getScrim-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getSecondary-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getSecondaryContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getSurface-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getSurfaceTint-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getSurfaceVariant-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getTertiary-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->getTertiaryContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/ColorScheme;->setBackground-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setError-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setErrorContainer-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setInverseOnSurface-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setInversePrimary-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setInverseSurface-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnBackground-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnError-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnErrorContainer-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnPrimary-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnPrimaryContainer-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnSecondary-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnSecondaryContainer-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnSurface-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnSurfaceVariant-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnTertiary-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOnTertiaryContainer-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOutline-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setOutlineVariant-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setPrimary-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setPrimaryContainer-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setScrim-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setSecondary-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setSecondaryContainer-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setSurface-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setSurfaceTint-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setSurfaceVariant-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setTertiary-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorScheme;->setTertiaryContainer-8_81llA$material3_release(J)V
+HSPLandroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1;-><clinit>()V
+HSPLandroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1;-><init>()V
+HSPLandroidx/compose/material3/ColorSchemeKt$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/material3/ColorSchemeKt;-><clinit>()V
+HSPLandroidx/compose/material3/ColorSchemeKt;->contentColorFor-4WTKRHQ(Landroidx/compose/material3/ColorScheme;J)J
+HSPLandroidx/compose/material3/ColorSchemeKt;->contentColorFor-ek8zF_U(JLandroidx/compose/runtime/Composer;I)J
+HSPLandroidx/compose/material3/ColorSchemeKt;->fromToken(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;)J
+HSPLandroidx/compose/material3/ColorSchemeKt;->getLocalColorScheme()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/material3/ColorSchemeKt;->lightColorScheme-G1PFc-w$default(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJILjava/lang/Object;)Landroidx/compose/material3/ColorScheme;
+HSPLandroidx/compose/material3/ColorSchemeKt;->lightColorScheme-G1PFc-w(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)Landroidx/compose/material3/ColorScheme;
+HSPLandroidx/compose/material3/ColorSchemeKt;->surfaceColorAtElevation-3ABfNKs(Landroidx/compose/material3/ColorScheme;F)J
+HSPLandroidx/compose/material3/ColorSchemeKt;->toColor(Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;Landroidx/compose/runtime/Composer;I)J
+HSPLandroidx/compose/material3/ColorSchemeKt;->updateColorSchemeFrom(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/ColorScheme;)V
+HSPLandroidx/compose/material3/ContentColorKt$LocalContentColor$1;-><clinit>()V
+HSPLandroidx/compose/material3/ContentColorKt$LocalContentColor$1;-><init>()V
+HSPLandroidx/compose/material3/ContentColorKt;-><clinit>()V
+HSPLandroidx/compose/material3/ContentColorKt;->getLocalContentColor()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/material3/DividerKt;->Divider-9IZ8Weo(Landroidx/compose/ui/Modifier;FJLandroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/DynamicTonalPaletteKt;->dynamicLightColorScheme(Landroid/content/Context;)Landroidx/compose/material3/ColorScheme;
+HSPLandroidx/compose/material3/DynamicTonalPaletteKt;->dynamicTonalPalette(Landroid/content/Context;)Landroidx/compose/material3/TonalPalette;
+HSPLandroidx/compose/material3/ElevationDefaults;-><clinit>()V
+HSPLandroidx/compose/material3/ElevationDefaults;-><init>()V
+HSPLandroidx/compose/material3/ElevationDefaults;->outgoingAnimationSpecForInteraction(Landroidx/compose/foundation/interaction/Interaction;)Landroidx/compose/animation/core/AnimationSpec;
+HSPLandroidx/compose/material3/ElevationKt;-><clinit>()V
+HSPLandroidx/compose/material3/ElevationKt;->access$getDefaultOutgoingSpec$p()Landroidx/compose/animation/core/TweenSpec;
+HSPLandroidx/compose/material3/ElevationKt;->animateElevation-rAjV9yQ(Landroidx/compose/animation/core/Animatable;FLandroidx/compose/foundation/interaction/Interaction;Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/IconKt;-><clinit>()V
+HSPLandroidx/compose/material3/IconKt;->Icon-ww6aTOc(Landroidx/compose/ui/graphics/ImageBitmap;Ljava/lang/String;Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/IconKt;->Icon-ww6aTOc(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/IconKt;->defaultSizeFor(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/material3/IconKt;->isInfinite-uvyYCjk(J)Z
+HSPLandroidx/compose/material3/MaterialRippleTheme;-><clinit>()V
+HSPLandroidx/compose/material3/MaterialRippleTheme;-><init>()V
+HSPLandroidx/compose/material3/MaterialRippleTheme;->defaultColor-WaAFU9c(Landroidx/compose/runtime/Composer;I)J
+HSPLandroidx/compose/material3/MaterialRippleTheme;->rippleAlpha(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material/ripple/RippleAlpha;
+HSPLandroidx/compose/material3/MaterialTheme;-><clinit>()V
+HSPLandroidx/compose/material3/MaterialTheme;-><init>()V
+HSPLandroidx/compose/material3/MaterialTheme;->getColorScheme(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/ColorScheme;
+HSPLandroidx/compose/material3/MaterialTheme;->getShapes(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/Shapes;
+HSPLandroidx/compose/material3/MaterialTheme;->getTypography(Landroidx/compose/runtime/Composer;I)Landroidx/compose/material3/Typography;
+HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;-><init>(Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;I)V
+HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/MaterialThemeKt$MaterialTheme$2;-><init>(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/Shapes;Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;II)V
+HSPLandroidx/compose/material3/MaterialThemeKt;-><clinit>()V
+HSPLandroidx/compose/material3/MaterialThemeKt;->MaterialTheme(Landroidx/compose/material3/ColorScheme;Landroidx/compose/material3/Shapes;Landroidx/compose/material3/Typography;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/MaterialThemeKt;->access$getDefaultRippleAlpha$p()Landroidx/compose/material/ripple/RippleAlpha;
+HSPLandroidx/compose/material3/MaterialThemeKt;->rememberTextSelectionColors(Landroidx/compose/material3/ColorScheme;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/text/selection/TextSelectionColors;
+HSPLandroidx/compose/material3/MinimumTouchTargetModifier$measure$1;-><init>(ILandroidx/compose/ui/layout/Placeable;I)V
+HSPLandroidx/compose/material3/MinimumTouchTargetModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/material3/MinimumTouchTargetModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/MinimumTouchTargetModifier;-><init>(J)V
+HSPLandroidx/compose/material3/MinimumTouchTargetModifier;-><init>(JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/MinimumTouchTargetModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material3/MinimumTouchTargetModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/material3/ShapeDefaults;-><clinit>()V
+HSPLandroidx/compose/material3/ShapeDefaults;-><init>()V
+HSPLandroidx/compose/material3/ShapeDefaults;->getExtraLarge()Landroidx/compose/foundation/shape/CornerBasedShape;
+HSPLandroidx/compose/material3/ShapeDefaults;->getExtraSmall()Landroidx/compose/foundation/shape/CornerBasedShape;
+HSPLandroidx/compose/material3/Shapes;-><init>(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;)V
+HSPLandroidx/compose/material3/Shapes;-><init>(Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;Landroidx/compose/foundation/shape/CornerBasedShape;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/Shapes;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material3/Shapes;->getMedium()Landroidx/compose/foundation/shape/CornerBasedShape;
+HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;-><clinit>()V
+HSPLandroidx/compose/material3/ShapesKt$LocalShapes$1;-><init>()V
+HSPLandroidx/compose/material3/ShapesKt$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/material3/ShapesKt;-><clinit>()V
+HSPLandroidx/compose/material3/ShapesKt;->fromToken(Landroidx/compose/material3/Shapes;Landroidx/compose/material3/tokens/ShapeKeyTokens;)Landroidx/compose/ui/graphics/Shape;
+HSPLandroidx/compose/material3/ShapesKt;->getLocalShapes()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/material3/ShapesKt;->toShape(Landroidx/compose/material3/tokens/ShapeKeyTokens;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape;
+HSPLandroidx/compose/material3/SuggestionChipDefaults;-><clinit>()V
+HSPLandroidx/compose/material3/SuggestionChipDefaults;-><init>()V
+HSPLandroidx/compose/material3/SuggestionChipDefaults;->getHeight-D9Ej5fM()F
+HSPLandroidx/compose/material3/SuggestionChipDefaults;->suggestionChipColors-5tl4gsc(JJJJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ChipColors;
+HSPLandroidx/compose/material3/SuggestionChipDefaults;->suggestionChipElevation-aqJV_2Y(FFFFFFLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/ChipElevation;
+HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;-><clinit>()V
+HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;-><init>()V
+HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;->invoke-D9Ej5fM()F
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;-><clinit>()V
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;-><init>()V
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1;-><init>(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JFILandroidx/compose/foundation/BorderStroke;FLkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/SurfaceKt$Surface$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/SurfaceKt$Surface$3;-><init>(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JFILandroidx/compose/foundation/BorderStroke;FLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;I)V
+HSPLandroidx/compose/material3/SurfaceKt$Surface$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/SurfaceKt$Surface$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/SurfaceKt;-><clinit>()V
+HSPLandroidx/compose/material3/SurfaceKt;->Surface-T9BRK9s(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JJFFLandroidx/compose/foundation/BorderStroke;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/material3/SurfaceKt;->Surface-o_FOJdg(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/ui/graphics/Shape;JJFFLandroidx/compose/foundation/BorderStroke;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;III)V
+HSPLandroidx/compose/material3/SurfaceKt;->access$surface-8ww4TTg(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JLandroidx/compose/foundation/BorderStroke;F)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/material3/SurfaceKt;->access$surfaceColorAtElevation-CLU3JFs(JFLandroidx/compose/runtime/Composer;I)J
+HSPLandroidx/compose/material3/SurfaceKt;->surface-8ww4TTg(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;JLandroidx/compose/foundation/BorderStroke;F)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/material3/SurfaceKt;->surfaceColorAtElevation-CLU3JFs(JFLandroidx/compose/runtime/Composer;I)J
+HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;-><clinit>()V
+HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;-><init>()V
+HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->invoke()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/TextKt$LocalTextStyle$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/material3/TextKt$ProvideTextStyle$1;-><init>(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;I)V
+HSPLandroidx/compose/material3/TextKt$Text$1;-><clinit>()V
+HSPLandroidx/compose/material3/TextKt$Text$1;-><init>()V
+HSPLandroidx/compose/material3/TextKt$Text$1;->invoke(Landroidx/compose/ui/text/TextLayoutResult;)V
+HSPLandroidx/compose/material3/TextKt$Text$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/TextKt$Text$2;-><init>(Ljava/lang/String;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;III)V
+HSPLandroidx/compose/material3/TextKt;-><clinit>()V
+HSPLandroidx/compose/material3/TextKt;->ProvideTextStyle(Landroidx/compose/ui/text/TextStyle;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/material3/TextKt;->Text--4IGK_g(Ljava/lang/String;Landroidx/compose/ui/Modifier;JJLandroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontFamily;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/text/style/TextAlign;JIZIILkotlin/jvm/functions/Function1;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;III)V
+HSPLandroidx/compose/material3/TextKt;->getLocalTextStyle()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/material3/TonalPalette;-><init>(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)V
+HSPLandroidx/compose/material3/TonalPalette;-><init>(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/TonalPalette;->getNeutral10-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getNeutral20-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getNeutral95-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getNeutral99-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant30-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant50-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getNeutralVariant90-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getPrimary10-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getPrimary100-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getPrimary40-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getPrimary80-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getPrimary90-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getSecondary10-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getSecondary100-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getSecondary40-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getSecondary90-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getTertiary10-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getTertiary100-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getTertiary40-0d7_KjU()J
+HSPLandroidx/compose/material3/TonalPalette;->getTertiary90-0d7_KjU()J
+HSPLandroidx/compose/material3/TouchTargetKt$LocalMinimumTouchTargetEnforcement$1;-><clinit>()V
+HSPLandroidx/compose/material3/TouchTargetKt$LocalMinimumTouchTargetEnforcement$1;-><init>()V
+HSPLandroidx/compose/material3/TouchTargetKt$LocalMinimumTouchTargetEnforcement$1;->invoke()Ljava/lang/Boolean;
+HSPLandroidx/compose/material3/TouchTargetKt$LocalMinimumTouchTargetEnforcement$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/material3/TouchTargetKt$minimumTouchTargetSize$2;-><clinit>()V
+HSPLandroidx/compose/material3/TouchTargetKt$minimumTouchTargetSize$2;-><init>()V
+HSPLandroidx/compose/material3/TouchTargetKt$minimumTouchTargetSize$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/material3/TouchTargetKt$minimumTouchTargetSize$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/material3/TouchTargetKt;-><clinit>()V
+HSPLandroidx/compose/material3/TouchTargetKt;->getLocalMinimumTouchTargetEnforcement()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/material3/TouchTargetKt;->minimumTouchTargetSize(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/material3/Typography;-><init>(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;)V
+HSPLandroidx/compose/material3/Typography;-><init>(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/material3/Typography;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/material3/Typography;->getBodyLarge()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/Typography;->getBodyMedium()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/Typography;->getLabelLarge()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/Typography;->getTitleLarge()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/Typography;->getTitleMedium()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/TypographyKt$LocalTypography$1;-><clinit>()V
+HSPLandroidx/compose/material3/TypographyKt$LocalTypography$1;-><init>()V
+HSPLandroidx/compose/material3/TypographyKt$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/material3/TypographyKt;-><clinit>()V
+HSPLandroidx/compose/material3/TypographyKt;->fromToken(Landroidx/compose/material3/Typography;Landroidx/compose/material3/tokens/TypographyKeyTokens;)Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/TypographyKt;->getLocalTypography()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/material3/tokens/ColorLightTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/ColorLightTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getError-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getErrorContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOnError-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOnErrorContainer-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getOutlineVariant-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/ColorLightTokens;->getScrim-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->$values()[Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/material3/tokens/ColorSchemeKeyTokens;->values()[Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+HSPLandroidx/compose/material3/tokens/ElevationTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/ElevationTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel0-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel1-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel2-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel3-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/ElevationTokens;->getLevel4-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledButtonTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/FilledButtonTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/FilledButtonTokens;->getIconSize-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;->getContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;->getContainerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens;
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;->getDisabledContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;->getDisabledContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;->getDraggedContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;->getFocusContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;->getHoverContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledCardTokens;->getPressedContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;->getContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;->getContainerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens;
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;->getDisabledContainerColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;->getDisabledLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;->getFocusContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;->getHoverContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/FilledTonalButtonTokens;->getPressedContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/IconButtonTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/IconButtonTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/IconButtonTokens;->getIconSize-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/PaletteTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/PaletteTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError10-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError100-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError40-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getError90-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral0-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral10-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral20-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral95-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutral99-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant30-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant50-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant80-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getNeutralVariant90-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary10-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary100-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary40-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary80-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getPrimary90-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary10-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary100-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary40-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getSecondary90-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary10-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary100-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary40-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/PaletteTokens;->getTertiary90-0d7_KjU()J
+HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->$values()[Landroidx/compose/material3/tokens/ShapeKeyTokens;
+HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/material3/tokens/ShapeKeyTokens;->values()[Landroidx/compose/material3/tokens/ShapeKeyTokens;
+HSPLandroidx/compose/material3/tokens/ShapeTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/ShapeTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerExtraLarge()Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerExtraSmall()Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerLarge()Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerMedium()Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/material3/tokens/ShapeTokens;->getCornerSmall()Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;->getContainerHeight-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;->getDisabledLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;->getDisabledLeadingIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;->getDraggedContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;->getFlatContainerElevation-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;->getLabelTextFont()Landroidx/compose/material3/tokens/TypographyKeyTokens;
+HSPLandroidx/compose/material3/tokens/SuggestionChipTokens;->getLeadingIconSize-D9Ej5fM()F
+HSPLandroidx/compose/material3/tokens/TextButtonTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/TextButtonTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/TextButtonTokens;->getContainerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens;
+HSPLandroidx/compose/material3/tokens/TextButtonTokens;->getDisabledLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyLargeWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodyMediumWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getBodySmallWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayLargeWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplayMediumWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getDisplaySmallWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineLargeWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineMediumWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getHeadlineSmallWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelLargeWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelMediumWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getLabelSmallWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleLargeWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleMediumWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallFont()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallLineHeight-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallSize-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallTracking-XSAIIZE()J
+HSPLandroidx/compose/material3/tokens/TypeScaleTokens;->getTitleSmallWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypefaceTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/TypefaceTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getBrand()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getPlain()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getWeightMedium()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypefaceTokens;->getWeightRegular()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->$values()[Landroidx/compose/material3/tokens/TypographyKeyTokens;
+HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/material3/tokens/TypographyKeyTokens;->values()[Landroidx/compose/material3/tokens/TypographyKeyTokens;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;-><clinit>()V
+HSPLandroidx/compose/material3/tokens/TypographyTokens;-><init>()V
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getBodySmall()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplayLarge()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplayMedium()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getDisplaySmall()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineLarge()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineMedium()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getHeadlineSmall()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getLabelMedium()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getLabelSmall()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/material3/tokens/TypographyTokens;->getTitleSmall()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/runtime/AbstractApplier;-><clinit>()V
+HSPLandroidx/compose/runtime/AbstractApplier;-><init>(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/AbstractApplier;->down(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/AbstractApplier;->getCurrent()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/AbstractApplier;->getRoot()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/AbstractApplier;->setCurrent(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/AbstractApplier;->up()V
+HSPLandroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2;-><clinit>()V
+HSPLandroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2;-><init>()V
+HSPLandroidx/compose/runtime/ActualAndroid_androidKt;-><clinit>()V
+HSPLandroidx/compose/runtime/ActualAndroid_androidKt;->createSnapshotMutableState(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/snapshots/SnapshotMutableState;
+HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->identityHashCode(Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->invokeComposable(Landroidx/compose/runtime/Composer;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/ActualJvm_jvmKt;->invokeComposableForResult(Landroidx/compose/runtime/Composer;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Anchor;-><init>(I)V
+HSPLandroidx/compose/runtime/Anchor;->getLocation$runtime_release()I
+HSPLandroidx/compose/runtime/Anchor;->getValid()Z
+HSPLandroidx/compose/runtime/Anchor;->setLocation$runtime_release(I)V
+HSPLandroidx/compose/runtime/Anchor;->toIndexFor(Landroidx/compose/runtime/SlotTable;)I
+HSPLandroidx/compose/runtime/Anchor;->toIndexFor(Landroidx/compose/runtime/SlotWriter;)I
+HSPLandroidx/compose/runtime/Applier;->onBeginChanges()V
+HSPLandroidx/compose/runtime/Applier;->onEndChanges()V
+HSPLandroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter;->resume(J)V
+HSPLandroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1;-><init>(Landroidx/compose/runtime/BroadcastFrameClock;Lkotlin/jvm/internal/Ref$ObjectRef;)V
+HSPLandroidx/compose/runtime/BroadcastFrameClock;-><clinit>()V
+HSPLandroidx/compose/runtime/BroadcastFrameClock;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getAwaiters$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/util/List;
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getFailureCause$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/lang/Throwable;
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getLock$p(Landroidx/compose/runtime/BroadcastFrameClock;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->access$getOnNewAwaiters$p(Landroidx/compose/runtime/BroadcastFrameClock;)Lkotlin/jvm/functions/Function0;
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->getHasAwaiters()Z
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->sendFrame(J)V
+HSPLandroidx/compose/runtime/BroadcastFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1;-><init>()V
+HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1;-><init>()V
+HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;-><init>()V
+HSPLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->getLambda-1$runtime_release()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/runtime/ComposablesKt;->getCurrentCompositeKeyHash(Landroidx/compose/runtime/Composer;I)I
+HSPLandroidx/compose/runtime/ComposablesKt;->rememberCompositionContext(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/CompositionContext;
+HSPLandroidx/compose/runtime/Composer$Companion$Empty$1;-><init>()V
+HSPLandroidx/compose/runtime/Composer$Companion;-><clinit>()V
+HSPLandroidx/compose/runtime/Composer$Companion;-><init>()V
+HSPLandroidx/compose/runtime/Composer$Companion;->getEmpty()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Composer;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;-><init>(Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl;)V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->getRef()Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl;
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->onRemembered()V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;-><init>(Landroidx/compose/runtime/ComposerImpl;IZ)V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->composeInitial$runtime_release(Landroidx/compose/runtime/ControlledComposition;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->doneComposing$runtime_release()V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCollectingParameterInformation$runtime_release()Z
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompositionLocalScope$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompositionLocalScope()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getCompoundHashKey$runtime_release()I
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getEffectCoroutineContext$runtime_release()Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->invalidate$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->registerComposer$runtime_release(Landroidx/compose/runtime/Composer;)V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->setCompositionLocalScope(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->startComposing$runtime_release()V
+HSPLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->updateCompositionLocalScope(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)V
+HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;-><init>(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$apply$operation$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;-><init>(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Anchor;I)V
+HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$createNode$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;-><init>(Landroidx/compose/runtime/Anchor;I)V
+HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$createNode$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$doCompose$2$3;-><init>(Landroidx/compose/runtime/ComposerImpl;)V
+HSPLandroidx/compose/runtime/ComposerImpl$doCompose$2$4;-><init>(Landroidx/compose/runtime/ComposerImpl;)V
+HSPLandroidx/compose/runtime/ComposerImpl$doCompose$2$5;-><init>(Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/ComposerImpl;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl$doCompose$2$5;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$doCompose$2$5;->invoke()V
+HSPLandroidx/compose/runtime/ComposerImpl$doCompose$lambda$37$$inlined$sortBy$1;-><init>()V
+HSPLandroidx/compose/runtime/ComposerImpl$doCompose$lambda$37$$inlined$sortBy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;-><init>(Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/ComposerImpl;)V
+HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;-><init>([Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$realizeDowns$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;-><init>(I)V
+HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;-><init>(I)V
+HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$realizeUps$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;-><init>(Landroidx/compose/runtime/SlotTable;Landroidx/compose/runtime/Anchor;)V
+HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;-><init>(Landroidx/compose/runtime/SlotTable;Landroidx/compose/runtime/Anchor;Ljava/util/List;)V
+HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$recordInsert$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$recordSideEffect$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;-><init>(Landroidx/compose/runtime/Anchor;)V
+HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;-><init>([Landroidx/compose/runtime/ProvidedValue;Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)V
+HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;->invoke(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;-><init>(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$startReaderGroup$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;-><init>(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$updateValue$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;-><init>(Ljava/lang/Object;I)V
+HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerImpl$updateValue$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl;-><init>(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/SlotTable;Ljava/util/Set;Ljava/util/List;Ljava/util/List;Landroidx/compose/runtime/ControlledComposition;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->access$endGroup(Landroidx/compose/runtime/ComposerImpl;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->access$getChildrenComposing$p(Landroidx/compose/runtime/ComposerImpl;)I
+HSPLandroidx/compose/runtime/ComposerImpl;->access$getForciblyRecompose$p(Landroidx/compose/runtime/ComposerImpl;)Z
+HSPLandroidx/compose/runtime/ComposerImpl;->access$getParentContext$p(Landroidx/compose/runtime/ComposerImpl;)Landroidx/compose/runtime/CompositionContext;
+HSPLandroidx/compose/runtime/ComposerImpl;->access$getProvidersInvalid$p(Landroidx/compose/runtime/ComposerImpl;)Z
+HSPLandroidx/compose/runtime/ComposerImpl;->access$setChildrenComposing$p(Landroidx/compose/runtime/ComposerImpl;I)V
+HSPLandroidx/compose/runtime/ComposerImpl;->access$startGroup(Landroidx/compose/runtime/ComposerImpl;ILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->addRecomposeScope()V
+HSPLandroidx/compose/runtime/ComposerImpl;->apply(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->buildContext()Landroidx/compose/runtime/CompositionContext;
+HSPLandroidx/compose/runtime/ComposerImpl;->changed(J)Z
+HSPLandroidx/compose/runtime/ComposerImpl;->changed(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/ComposerImpl;->changed(Z)Z
+HSPLandroidx/compose/runtime/ComposerImpl;->changedInstance(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/ComposerImpl;->changesApplied$runtime_release()V
+HSPLandroidx/compose/runtime/ComposerImpl;->cleanUpCompose()V
+HSPLandroidx/compose/runtime/ComposerImpl;->clearUpdatedNodeCounts()V
+HSPLandroidx/compose/runtime/ComposerImpl;->composeContent$runtime_release(Landroidx/compose/runtime/collection/IdentityArrayMap;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->compoundKeyOf(III)I
+HSPLandroidx/compose/runtime/ComposerImpl;->consume(Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl;->createNode(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->currentCompositionLocalScope$default(Landroidx/compose/runtime/ComposerImpl;Ljava/lang/Integer;ILjava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/ComposerImpl;->currentCompositionLocalScope(Ljava/lang/Integer;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/ComposerImpl;->disableReusing()V
+HSPLandroidx/compose/runtime/ComposerImpl;->doCompose(Landroidx/compose/runtime/collection/IdentityArrayMap;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->doRecordDownsFor(II)V
+HSPLandroidx/compose/runtime/ComposerImpl;->enableReusing()V
+HSPLandroidx/compose/runtime/ComposerImpl;->end(Z)V
+HSPLandroidx/compose/runtime/ComposerImpl;->endDefaults()V
+HSPLandroidx/compose/runtime/ComposerImpl;->endGroup()V
+HSPLandroidx/compose/runtime/ComposerImpl;->endNode()V
+HSPLandroidx/compose/runtime/ComposerImpl;->endProviders()V
+HSPLandroidx/compose/runtime/ComposerImpl;->endReplaceableGroup()V
+HSPLandroidx/compose/runtime/ComposerImpl;->endRestartGroup()Landroidx/compose/runtime/ScopeUpdateScope;
+HSPLandroidx/compose/runtime/ComposerImpl;->endReusableGroup()V
+HSPLandroidx/compose/runtime/ComposerImpl;->endRoot()V
+HSPLandroidx/compose/runtime/ComposerImpl;->ensureWriter()V
+HSPLandroidx/compose/runtime/ComposerImpl;->enterGroup(ZLandroidx/compose/runtime/Pending;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->exitGroup(IZ)V
+HSPLandroidx/compose/runtime/ComposerImpl;->finalizeCompose()V
+HSPLandroidx/compose/runtime/ComposerImpl;->getApplier()Landroidx/compose/runtime/Applier;
+HSPLandroidx/compose/runtime/ComposerImpl;->getApplyCoroutineContext()Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/runtime/ComposerImpl;->getAreChildrenComposing$runtime_release()Z
+HSPLandroidx/compose/runtime/ComposerImpl;->getComposition()Landroidx/compose/runtime/ControlledComposition;
+HSPLandroidx/compose/runtime/ComposerImpl;->getCompoundKeyHash()I
+HSPLandroidx/compose/runtime/ComposerImpl;->getCurrentRecomposeScope$runtime_release()Landroidx/compose/runtime/RecomposeScopeImpl;
+HSPLandroidx/compose/runtime/ComposerImpl;->getDefaultsInvalid()Z
+HSPLandroidx/compose/runtime/ComposerImpl;->getInserting()Z
+HSPLandroidx/compose/runtime/ComposerImpl;->getNode(Landroidx/compose/runtime/SlotReader;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl;->getRecomposeScope()Landroidx/compose/runtime/RecomposeScope;
+HSPLandroidx/compose/runtime/ComposerImpl;->getSkipping()Z
+HSPLandroidx/compose/runtime/ComposerImpl;->groupCompoundKeyPart(Landroidx/compose/runtime/SlotReader;I)I
+HSPLandroidx/compose/runtime/ComposerImpl;->insertedGroupVirtualIndex(I)I
+HSPLandroidx/compose/runtime/ComposerImpl;->isComposing$runtime_release()Z
+HSPLandroidx/compose/runtime/ComposerImpl;->nextSlot()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl;->nodeIndexOf(IIII)I
+HSPLandroidx/compose/runtime/ComposerImpl;->prepareCompose$runtime_release(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->realizeDowns()V
+HSPLandroidx/compose/runtime/ComposerImpl;->realizeDowns([Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->realizeMovement()V
+HSPLandroidx/compose/runtime/ComposerImpl;->realizeOperationLocation$default(Landroidx/compose/runtime/ComposerImpl;ZILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->realizeOperationLocation(Z)V
+HSPLandroidx/compose/runtime/ComposerImpl;->realizeUps()V
+HSPLandroidx/compose/runtime/ComposerImpl;->recompose$runtime_release(Landroidx/compose/runtime/collection/IdentityArrayMap;)Z
+HSPLandroidx/compose/runtime/ComposerImpl;->recomposeToGroupEnd()V
+HSPLandroidx/compose/runtime/ComposerImpl;->record(Lkotlin/jvm/functions/Function3;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordApplierOperation(Lkotlin/jvm/functions/Function3;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordDown(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordEndGroup()V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordEndRoot()V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordFixup(Lkotlin/jvm/functions/Function3;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordInsert(Landroidx/compose/runtime/Anchor;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordInsertUpFixup(Lkotlin/jvm/functions/Function3;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordReaderMoving(I)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordSideEffect(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotEditing()V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotEditingOperation(Lkotlin/jvm/functions/Function3;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotTableOperation$default(Landroidx/compose/runtime/ComposerImpl;ZLkotlin/jvm/functions/Function3;ILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordSlotTableOperation(ZLkotlin/jvm/functions/Function3;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordUp()V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordUpsAndDowns(III)V
+HSPLandroidx/compose/runtime/ComposerImpl;->recordUsed(Landroidx/compose/runtime/RecomposeScope;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->registerInsertUpFixup()V
+HSPLandroidx/compose/runtime/ComposerImpl;->rememberedValue()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl;->resolveCompositionLocal(Landroidx/compose/runtime/CompositionLocal;Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerImpl;->skipCurrentGroup()V
+HSPLandroidx/compose/runtime/ComposerImpl;->skipGroup()V
+HSPLandroidx/compose/runtime/ComposerImpl;->skipReaderToGroupEnd()V
+HSPLandroidx/compose/runtime/ComposerImpl;->skipToGroupEnd()V
+HSPLandroidx/compose/runtime/ComposerImpl;->start(ILjava/lang/Object;ZLjava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->startDefaults()V
+HSPLandroidx/compose/runtime/ComposerImpl;->startGroup(I)V
+HSPLandroidx/compose/runtime/ComposerImpl;->startGroup(ILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->startNode()V
+HSPLandroidx/compose/runtime/ComposerImpl;->startProviders([Landroidx/compose/runtime/ProvidedValue;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->startReaderGroup(ZLjava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->startReplaceableGroup(I)V
+HSPLandroidx/compose/runtime/ComposerImpl;->startRestartGroup(I)Landroidx/compose/runtime/Composer;
+HSPLandroidx/compose/runtime/ComposerImpl;->startReusableGroup(ILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->startReusableNode()V
+HSPLandroidx/compose/runtime/ComposerImpl;->startRoot()V
+HSPLandroidx/compose/runtime/ComposerImpl;->tryImminentInvalidation$runtime_release(Landroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeEnterGroup(ILjava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeEnterGroupKeyHash(I)V
+HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeExitGroup(ILjava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->updateCompoundKeyWhenWeExitGroupKeyHash(I)V
+HSPLandroidx/compose/runtime/ComposerImpl;->updateNodeCount(II)V
+HSPLandroidx/compose/runtime/ComposerImpl;->updateNodeCountOverrides(II)V
+HSPLandroidx/compose/runtime/ComposerImpl;->updateProviderMapGroup(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/ComposerImpl;->updateRememberedValue(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->updateValue(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerImpl;->updatedNodeCount(I)I
+HSPLandroidx/compose/runtime/ComposerImpl;->useNode()V
+HSPLandroidx/compose/runtime/ComposerImpl;->validateNodeExpected()V
+HSPLandroidx/compose/runtime/ComposerImpl;->validateNodeNotExpected()V
+HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;-><init>()V
+HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerKt$endGroupInstance$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;-><init>()V
+HSPLandroidx/compose/runtime/ComposerKt$resetSlotsInstance$1;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposerKt$resetSlotsInstance$1;-><init>()V
+HSPLandroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1;-><init>()V
+HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;-><init>()V
+HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+HSPLandroidx/compose/runtime/ComposerKt$startRootGroup$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;-><clinit>()V
+HSPLandroidx/compose/runtime/ComposerKt;->access$asBool(I)Z
+HSPLandroidx/compose/runtime/ComposerKt;->access$asInt(Z)I
+HSPLandroidx/compose/runtime/ComposerKt;->access$compositionLocalMapOf([Landroidx/compose/runtime/ProvidedValue;Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/ComposerKt;->access$firstInRange(Ljava/util/List;II)Landroidx/compose/runtime/Invalidation;
+HSPLandroidx/compose/runtime/ComposerKt;->access$getEndGroupInstance$p()Lkotlin/jvm/functions/Function3;
+HSPLandroidx/compose/runtime/ComposerKt;->access$getJoinedKey(Landroidx/compose/runtime/KeyInfo;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->access$getStartRootGroup$p()Lkotlin/jvm/functions/Function3;
+HSPLandroidx/compose/runtime/ComposerKt;->access$insertIfMissing(Ljava/util/List;ILandroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerKt;->access$multiMap()Ljava/util/HashMap;
+HSPLandroidx/compose/runtime/ComposerKt;->access$nearestCommonRootOf(Landroidx/compose/runtime/SlotReader;III)I
+HSPLandroidx/compose/runtime/ComposerKt;->access$pop(Ljava/util/HashMap;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->access$put(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/ComposerKt;->access$removeLocation(Ljava/util/List;I)Landroidx/compose/runtime/Invalidation;
+HSPLandroidx/compose/runtime/ComposerKt;->asBool(I)Z
+HSPLandroidx/compose/runtime/ComposerKt;->asInt(Z)I
+HSPLandroidx/compose/runtime/ComposerKt;->compositionLocalMapOf([Landroidx/compose/runtime/ProvidedValue;Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/ComposerKt;->contains(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;Landroidx/compose/runtime/CompositionLocal;)Z
+HSPLandroidx/compose/runtime/ComposerKt;->findInsertLocation(Ljava/util/List;I)I
+HSPLandroidx/compose/runtime/ComposerKt;->findLocation(Ljava/util/List;I)I
+HSPLandroidx/compose/runtime/ComposerKt;->firstInRange(Ljava/util/List;II)Landroidx/compose/runtime/Invalidation;
+HSPLandroidx/compose/runtime/ComposerKt;->getCompositionLocalMap()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->getInvocation()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->getJoinedKey(Landroidx/compose/runtime/KeyInfo;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->getProvider()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->getProviderMaps()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->getProviderValues()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->getReference()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->getValueOf(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;Landroidx/compose/runtime/CompositionLocal;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->insertIfMissing(Ljava/util/List;ILandroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/ComposerKt;->isTraceInProgress()Z
+HSPLandroidx/compose/runtime/ComposerKt;->multiMap()Ljava/util/HashMap;
+HSPLandroidx/compose/runtime/ComposerKt;->nearestCommonRootOf(Landroidx/compose/runtime/SlotReader;III)I
+HSPLandroidx/compose/runtime/ComposerKt;->pop(Ljava/util/HashMap;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/ComposerKt;->put(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/ComposerKt;->remove(Ljava/util/HashMap;Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Unit;
+HSPLandroidx/compose/runtime/ComposerKt;->removeLocation(Ljava/util/List;I)Landroidx/compose/runtime/Invalidation;
+HSPLandroidx/compose/runtime/ComposerKt;->runtimeCheck(Z)V
+HSPLandroidx/compose/runtime/CompositionContext;-><clinit>()V
+HSPLandroidx/compose/runtime/CompositionContext;-><init>()V
+HSPLandroidx/compose/runtime/CompositionContext;->doneComposing$runtime_release()V
+HSPLandroidx/compose/runtime/CompositionContext;->getCompositionLocalScope$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/CompositionContext;->registerComposer$runtime_release(Landroidx/compose/runtime/Composer;)V
+HSPLandroidx/compose/runtime/CompositionContext;->startComposing$runtime_release()V
+HSPLandroidx/compose/runtime/CompositionContextKt;-><clinit>()V
+HSPLandroidx/compose/runtime/CompositionContextKt;->access$getEmptyCompositionLocalMap$p()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;-><init>(Ljava/util/Set;)V
+HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchAbandons()V
+HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchRememberObservers()V
+HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->dispatchSideEffects()V
+HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->forgetting(Landroidx/compose/runtime/RememberObserver;)V
+HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->remembering(Landroidx/compose/runtime/RememberObserver;)V
+HSPLandroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;->sideEffect(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/CompositionImpl;-><init>(Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/Applier;Lkotlin/coroutines/CoroutineContext;)V
+HSPLandroidx/compose/runtime/CompositionImpl;-><init>(Landroidx/compose/runtime/CompositionContext;Landroidx/compose/runtime/Applier;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->addPendingInvalidationsLocked$invalidate(Landroidx/compose/runtime/CompositionImpl;ZLkotlin/jvm/internal/Ref$ObjectRef;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->addPendingInvalidationsLocked(Ljava/util/Set;Z)V
+HSPLandroidx/compose/runtime/CompositionImpl;->applyChanges()V
+HSPLandroidx/compose/runtime/CompositionImpl;->applyChangesInLocked(Ljava/util/List;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->applyLateChanges()V
+HSPLandroidx/compose/runtime/CompositionImpl;->changesApplied()V
+HSPLandroidx/compose/runtime/CompositionImpl;->cleanUpDerivedStateObservations()V
+HSPLandroidx/compose/runtime/CompositionImpl;->composeContent(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->drainPendingModificationsForCompositionLocked()V
+HSPLandroidx/compose/runtime/CompositionImpl;->drainPendingModificationsLocked()V
+HSPLandroidx/compose/runtime/CompositionImpl;->getAreChildrenComposing()Z
+HSPLandroidx/compose/runtime/CompositionImpl;->getHasInvalidations()Z
+HSPLandroidx/compose/runtime/CompositionImpl;->invalidate(Landroidx/compose/runtime/RecomposeScopeImpl;Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult;
+HSPLandroidx/compose/runtime/CompositionImpl;->invalidateChecked(Landroidx/compose/runtime/RecomposeScopeImpl;Landroidx/compose/runtime/Anchor;Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult;
+HSPLandroidx/compose/runtime/CompositionImpl;->invalidateScopeOfLocked(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->isComposing()Z
+HSPLandroidx/compose/runtime/CompositionImpl;->isDisposed()Z
+HSPLandroidx/compose/runtime/CompositionImpl;->prepareCompose(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->recompose()Z
+HSPLandroidx/compose/runtime/CompositionImpl;->recordModificationsOf(Ljava/util/Set;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->recordReadOf(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->recordWriteOf(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->removeObservation$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/RecomposeScopeImpl;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->setContent(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/CompositionImpl;->takeInvalidations()Landroidx/compose/runtime/collection/IdentityArrayMap;
+HSPLandroidx/compose/runtime/CompositionKt;-><clinit>()V
+HSPLandroidx/compose/runtime/CompositionKt;->Composition(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/Composition;
+HSPLandroidx/compose/runtime/CompositionKt;->access$addValue(Landroidx/compose/runtime/collection/IdentityArrayMap;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/CompositionKt;->access$getPendingApplyNoModifications$p()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/CompositionKt;->addValue(Landroidx/compose/runtime/collection/IdentityArrayMap;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/CompositionLocal;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/CompositionLocal;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/CompositionLocal;->getDefaultValueHolder$runtime_release()Landroidx/compose/runtime/LazyValueHolder;
+HSPLandroidx/compose/runtime/CompositionLocalKt;->CompositionLocalProvider([Landroidx/compose/runtime/ProvidedValue;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/CompositionLocalKt;->compositionLocalOf$default(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/runtime/CompositionLocalKt;->compositionLocalOf(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/runtime/CompositionLocalKt;->staticCompositionLocalOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;-><init>(Lkotlinx/coroutines/CoroutineScope;)V
+HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->getCoroutineScope()Lkotlinx/coroutines/CoroutineScope;
+HSPLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->onRemembered()V
+HSPLandroidx/compose/runtime/DisposableEffectImpl;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/DisposableEffectImpl;->onForgotten()V
+HSPLandroidx/compose/runtime/DisposableEffectImpl;->onRemembered()V
+HSPLandroidx/compose/runtime/DisposableEffectScope;-><clinit>()V
+HSPLandroidx/compose/runtime/DisposableEffectScope;-><init>()V
+HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;-><init>(Landroidx/compose/runtime/SnapshotMutationPolicy;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/DynamicProvidableCompositionLocal;->provided$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/runtime/EffectsKt;-><clinit>()V
+HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/EffectsKt;->DisposableEffect(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/EffectsKt;->LaunchedEffect([Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/EffectsKt;->SideEffect(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/EffectsKt;->access$getInternalDisposableEffectScope$p()Landroidx/compose/runtime/DisposableEffectScope;
+HSPLandroidx/compose/runtime/EffectsKt;->createCompositionCoroutineScope(Lkotlin/coroutines/CoroutineContext;Landroidx/compose/runtime/Composer;)Lkotlinx/coroutines/CoroutineScope;
+HSPLandroidx/compose/runtime/GroupInfo;-><init>(III)V
+HSPLandroidx/compose/runtime/GroupInfo;->getNodeCount()I
+HSPLandroidx/compose/runtime/GroupInfo;->getNodeIndex()I
+HSPLandroidx/compose/runtime/GroupInfo;->getSlotIndex()I
+HSPLandroidx/compose/runtime/IntStack;-><init>()V
+HSPLandroidx/compose/runtime/IntStack;->clear()V
+HSPLandroidx/compose/runtime/IntStack;->getSize()I
+HSPLandroidx/compose/runtime/IntStack;->isEmpty()Z
+HSPLandroidx/compose/runtime/IntStack;->peek()I
+HSPLandroidx/compose/runtime/IntStack;->peekOr(I)I
+HSPLandroidx/compose/runtime/IntStack;->pop()I
+HSPLandroidx/compose/runtime/IntStack;->push(I)V
+HSPLandroidx/compose/runtime/Invalidation;-><init>(Landroidx/compose/runtime/RecomposeScopeImpl;ILandroidx/compose/runtime/collection/IdentityArraySet;)V
+HSPLandroidx/compose/runtime/Invalidation;->getLocation()I
+HSPLandroidx/compose/runtime/Invalidation;->getScope()Landroidx/compose/runtime/RecomposeScopeImpl;
+HSPLandroidx/compose/runtime/Invalidation;->isInvalid()Z
+HSPLandroidx/compose/runtime/Invalidation;->setInstances(Landroidx/compose/runtime/collection/IdentityArraySet;)V
+HSPLandroidx/compose/runtime/InvalidationResult;->$values()[Landroidx/compose/runtime/InvalidationResult;
+HSPLandroidx/compose/runtime/InvalidationResult;-><clinit>()V
+HSPLandroidx/compose/runtime/InvalidationResult;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/runtime/KeyInfo;-><init>(ILjava/lang/Object;III)V
+HSPLandroidx/compose/runtime/KeyInfo;->getKey()I
+HSPLandroidx/compose/runtime/KeyInfo;->getLocation()I
+HSPLandroidx/compose/runtime/KeyInfo;->getNodes()I
+HSPLandroidx/compose/runtime/KeyInfo;->getObjectKey()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Latch;-><init>()V
+HSPLandroidx/compose/runtime/Latch;->await(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Latch;->closeLatch()V
+HSPLandroidx/compose/runtime/Latch;->isOpen()Z
+HSPLandroidx/compose/runtime/Latch;->openLatch()V
+HSPLandroidx/compose/runtime/LaunchedEffectImpl;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/LaunchedEffectImpl;->onForgotten()V
+HSPLandroidx/compose/runtime/LaunchedEffectImpl;->onRemembered()V
+HSPLandroidx/compose/runtime/LazyValueHolder;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/LazyValueHolder;->getCurrent()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/LazyValueHolder;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->fold(Landroidx/compose/runtime/MonotonicFrameClock;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->get(Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLandroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;->minusKey(Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/runtime/MonotonicFrameClock$Key;-><clinit>()V
+HSPLandroidx/compose/runtime/MonotonicFrameClock$Key;-><init>()V
+HSPLandroidx/compose/runtime/MonotonicFrameClock;-><clinit>()V
+HSPLandroidx/compose/runtime/MonotonicFrameClock;->getKey()Lkotlin/coroutines/CoroutineContext$Key;
+HSPLandroidx/compose/runtime/MonotonicFrameClockKt;->getMonotonicFrameClock(Lkotlin/coroutines/CoroutineContext;)Landroidx/compose/runtime/MonotonicFrameClock;
+HSPLandroidx/compose/runtime/MonotonicFrameClockKt;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/NeverEqualPolicy;-><clinit>()V
+HSPLandroidx/compose/runtime/NeverEqualPolicy;-><init>()V
+HSPLandroidx/compose/runtime/NeverEqualPolicy;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/OpaqueKey;-><init>(Ljava/lang/String;)V
+HSPLandroidx/compose/runtime/OpaqueKey;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/OpaqueKey;->hashCode()I
+HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion$CREATOR$1;-><init>()V
+HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion;-><init>()V
+HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState;-><clinit>()V
+HSPLandroidx/compose/runtime/ParcelableSnapshotMutableState;-><init>(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)V
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1;-><init>(Landroidx/compose/runtime/PausableMonotonicFrameClock;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;-><clinit>()V
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;-><init>(Landroidx/compose/runtime/MonotonicFrameClock;)V
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->pause()V
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->resume()V
+HSPLandroidx/compose/runtime/PausableMonotonicFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Pending$keyMap$2;-><init>(Landroidx/compose/runtime/Pending;)V
+HSPLandroidx/compose/runtime/Pending$keyMap$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Pending$keyMap$2;->invoke()Ljava/util/HashMap;
+HSPLandroidx/compose/runtime/Pending;-><init>(Ljava/util/List;I)V
+HSPLandroidx/compose/runtime/Pending;->getGroupIndex()I
+HSPLandroidx/compose/runtime/Pending;->getKeyInfos()Ljava/util/List;
+HSPLandroidx/compose/runtime/Pending;->getKeyMap()Ljava/util/HashMap;
+HSPLandroidx/compose/runtime/Pending;->getNext(ILjava/lang/Object;)Landroidx/compose/runtime/KeyInfo;
+HSPLandroidx/compose/runtime/Pending;->getStartIndex()I
+HSPLandroidx/compose/runtime/Pending;->getUsed()Ljava/util/List;
+HSPLandroidx/compose/runtime/Pending;->nodePositionOf(Landroidx/compose/runtime/KeyInfo;)I
+HSPLandroidx/compose/runtime/Pending;->recordUsed(Landroidx/compose/runtime/KeyInfo;)Z
+HSPLandroidx/compose/runtime/Pending;->registerInsert(Landroidx/compose/runtime/KeyInfo;I)V
+HSPLandroidx/compose/runtime/Pending;->registerMoveSlot(II)V
+HSPLandroidx/compose/runtime/Pending;->setGroupIndex(I)V
+HSPLandroidx/compose/runtime/Pending;->slotPositionOf(Landroidx/compose/runtime/KeyInfo;)I
+HSPLandroidx/compose/runtime/Pending;->updatedNodeCountOf(Landroidx/compose/runtime/KeyInfo;)I
+HSPLandroidx/compose/runtime/PrioritySet;-><init>(Ljava/util/List;)V
+HSPLandroidx/compose/runtime/PrioritySet;-><init>(Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/PrioritySet;->add(I)V
+HSPLandroidx/compose/runtime/PrioritySet;->isNotEmpty()Z
+HSPLandroidx/compose/runtime/PrioritySet;->takeMax()I
+HSPLandroidx/compose/runtime/ProvidableCompositionLocal;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->provides(Ljava/lang/Object;)Landroidx/compose/runtime/ProvidedValue;
+HSPLandroidx/compose/runtime/ProvidableCompositionLocal;->providesDefault(Ljava/lang/Object;)Landroidx/compose/runtime/ProvidedValue;
+HSPLandroidx/compose/runtime/ProvidedValue;-><clinit>()V
+HSPLandroidx/compose/runtime/ProvidedValue;-><init>(Landroidx/compose/runtime/CompositionLocal;Ljava/lang/Object;Z)V
+HSPLandroidx/compose/runtime/ProvidedValue;->getCanOverride()Z
+HSPLandroidx/compose/runtime/ProvidedValue;->getCompositionLocal()Landroidx/compose/runtime/CompositionLocal;
+HSPLandroidx/compose/runtime/ProvidedValue;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;-><init>(Landroidx/compose/runtime/RecomposeScopeImpl;ILandroidx/compose/runtime/collection/IdentityArrayIntMap;)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;->invoke(Landroidx/compose/runtime/Composition;)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl$end$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;-><init>(Landroidx/compose/runtime/CompositionImpl;)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$getCurrentToken$p(Landroidx/compose/runtime/RecomposeScopeImpl;)I
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->access$getTrackedInstances$p(Landroidx/compose/runtime/RecomposeScopeImpl;)Landroidx/compose/runtime/collection/IdentityArrayIntMap;
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->compose(Landroidx/compose/runtime/Composer;)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->end(I)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getAnchor()Landroidx/compose/runtime/Anchor;
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getCanRecompose()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getDefaultsInScope()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getDefaultsInvalid()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getRequiresRecompose()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getRereading()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getSkipped$runtime_release()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getUsed()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->getValid()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->invalidate()V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->invalidateForResult(Ljava/lang/Object;)Landroidx/compose/runtime/InvalidationResult;
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->isConditional()Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->isInvalidFor(Landroidx/compose/runtime/collection/IdentityArraySet;)Z
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->recordRead(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->scopeSkipped()V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setAnchor(Landroidx/compose/runtime/Anchor;)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setDefaultsInScope(Z)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setDefaultsInvalid(Z)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setRequiresRecompose(Z)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setSkipped(Z)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->setUsed(Z)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->start(I)V
+HSPLandroidx/compose/runtime/RecomposeScopeImpl;->updateScope(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/RecomposeScopeImplKt;->updateChangedFlags(I)I
+HSPLandroidx/compose/runtime/Recomposer$Companion;-><init>()V
+HSPLandroidx/compose/runtime/Recomposer$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/Recomposer$Companion;->access$addRunning(Landroidx/compose/runtime/Recomposer$Companion;Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;)V
+HSPLandroidx/compose/runtime/Recomposer$Companion;->addRunning(Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;)V
+HSPLandroidx/compose/runtime/Recomposer$RecomposerInfoImpl;-><init>(Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/runtime/Recomposer$State;->$values()[Landroidx/compose/runtime/Recomposer$State;
+HSPLandroidx/compose/runtime/Recomposer$State;-><clinit>()V
+HSPLandroidx/compose/runtime/Recomposer$State;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;-><init>(Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$broadcastFrameClock$1;->invoke()V
+HSPLandroidx/compose/runtime/Recomposer$effectJob$1$1;-><init>(Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/runtime/Recomposer$join$2;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/runtime/Recomposer$join$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/runtime/Recomposer$join$2;->invoke(Landroidx/compose/runtime/Recomposer$State;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$join$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$join$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$performRecompose$1$1;-><init>(Landroidx/compose/runtime/collection/IdentityArraySet;Landroidx/compose/runtime/ControlledComposition;)V
+HSPLandroidx/compose/runtime/Recomposer$performRecompose$1$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$performRecompose$1$1;->invoke()V
+HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;-><init>(Landroidx/compose/runtime/ControlledComposition;)V
+HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$readObserverOf$1;->invoke(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$2;-><init>(Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;-><init>(Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;-><init>(Landroidx/compose/runtime/Recomposer;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$recompositionRunner$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$2;-><init>(Landroidx/compose/runtime/Recomposer;Ljava/util/List;Ljava/util/List;Ljava/util/Set;Ljava/util/List;Ljava/util/Set;)V
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$2;->invoke(J)V
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;-><init>(Landroidx/compose/runtime/Recomposer;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->access$invokeSuspend$fillToInsert(Ljava/util/List;Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/MonotonicFrameClock;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invokeSuspend$fillToInsert(Ljava/util/List;Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;-><init>(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)V
+HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer$writeObserverOf$1;->invoke(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/Recomposer;-><clinit>()V
+HSPLandroidx/compose/runtime/Recomposer;-><init>(Lkotlin/coroutines/CoroutineContext;)V
+HSPLandroidx/compose/runtime/Recomposer;->access$awaitWorkAvailable(Landroidx/compose/runtime/Recomposer;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer;->access$deriveStateLocked(Landroidx/compose/runtime/Recomposer;)Lkotlinx/coroutines/CancellableContinuation;
+HSPLandroidx/compose/runtime/Recomposer;->access$discardUnusedValues(Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/runtime/Recomposer;->access$getBroadcastFrameClock$p(Landroidx/compose/runtime/Recomposer;)Landroidx/compose/runtime/BroadcastFrameClock;
+HSPLandroidx/compose/runtime/Recomposer;->access$getCompositionInvalidations$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List;
+HSPLandroidx/compose/runtime/Recomposer;->access$getCompositionValuesAwaitingInsert$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List;
+HSPLandroidx/compose/runtime/Recomposer;->access$getHasFrameWorkLocked(Landroidx/compose/runtime/Recomposer;)Z
+HSPLandroidx/compose/runtime/Recomposer;->access$getHasSchedulingWork(Landroidx/compose/runtime/Recomposer;)Z
+HSPLandroidx/compose/runtime/Recomposer;->access$getKnownCompositions$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/List;
+HSPLandroidx/compose/runtime/Recomposer;->access$getRecomposerInfo$p(Landroidx/compose/runtime/Recomposer;)Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;
+HSPLandroidx/compose/runtime/Recomposer;->access$getShouldKeepRecomposing(Landroidx/compose/runtime/Recomposer;)Z
+HSPLandroidx/compose/runtime/Recomposer;->access$getSnapshotInvalidations$p(Landroidx/compose/runtime/Recomposer;)Ljava/util/Set;
+HSPLandroidx/compose/runtime/Recomposer;->access$getStateLock$p(Landroidx/compose/runtime/Recomposer;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer;->access$get_runningRecomposers$cp()Lkotlinx/coroutines/flow/MutableStateFlow;
+HSPLandroidx/compose/runtime/Recomposer;->access$get_state$p(Landroidx/compose/runtime/Recomposer;)Lkotlinx/coroutines/flow/MutableStateFlow;
+HSPLandroidx/compose/runtime/Recomposer;->access$performRecompose(Landroidx/compose/runtime/Recomposer;Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Landroidx/compose/runtime/ControlledComposition;
+HSPLandroidx/compose/runtime/Recomposer;->access$recordComposerModificationsLocked(Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/runtime/Recomposer;->access$registerRunnerJob(Landroidx/compose/runtime/Recomposer;Lkotlinx/coroutines/Job;)V
+HSPLandroidx/compose/runtime/Recomposer;->access$setChangeCount$p(Landroidx/compose/runtime/Recomposer;J)V
+HSPLandroidx/compose/runtime/Recomposer;->access$setWorkContinuation$p(Landroidx/compose/runtime/Recomposer;Lkotlinx/coroutines/CancellableContinuation;)V
+HSPLandroidx/compose/runtime/Recomposer;->applyAndCheck(Landroidx/compose/runtime/snapshots/MutableSnapshot;)V
+HSPLandroidx/compose/runtime/Recomposer;->awaitWorkAvailable(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer;->composeInitial$runtime_release(Landroidx/compose/runtime/ControlledComposition;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/Recomposer;->deriveStateLocked()Lkotlinx/coroutines/CancellableContinuation;
+HSPLandroidx/compose/runtime/Recomposer;->discardUnusedValues()V
+HSPLandroidx/compose/runtime/Recomposer;->getChangeCount()J
+HSPLandroidx/compose/runtime/Recomposer;->getCollectingParameterInformation$runtime_release()Z
+HSPLandroidx/compose/runtime/Recomposer;->getCompoundHashKey$runtime_release()I
+HSPLandroidx/compose/runtime/Recomposer;->getCurrentState()Lkotlinx/coroutines/flow/StateFlow;
+HSPLandroidx/compose/runtime/Recomposer;->getEffectCoroutineContext$runtime_release()Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/runtime/Recomposer;->getHasFrameWorkLocked()Z
+HSPLandroidx/compose/runtime/Recomposer;->getHasSchedulingWork()Z
+HSPLandroidx/compose/runtime/Recomposer;->getShouldKeepRecomposing()Z
+HSPLandroidx/compose/runtime/Recomposer;->invalidate$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V
+HSPLandroidx/compose/runtime/Recomposer;->join(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer;->performInitialMovableContentInserts(Landroidx/compose/runtime/ControlledComposition;)V
+HSPLandroidx/compose/runtime/Recomposer;->performRecompose(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Landroidx/compose/runtime/ControlledComposition;
+HSPLandroidx/compose/runtime/Recomposer;->readObserverOf(Landroidx/compose/runtime/ControlledComposition;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/Recomposer;->recompositionRunner(Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer;->recordComposerModificationsLocked()V
+HSPLandroidx/compose/runtime/Recomposer;->registerRunnerJob(Lkotlinx/coroutines/Job;)V
+HSPLandroidx/compose/runtime/Recomposer;->runRecomposeAndApplyChanges(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Recomposer;->writeObserverOf(Landroidx/compose/runtime/ControlledComposition;Landroidx/compose/runtime/collection/IdentityArraySet;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/ReferentialEqualityPolicy;-><clinit>()V
+HSPLandroidx/compose/runtime/ReferentialEqualityPolicy;-><init>()V
+HSPLandroidx/compose/runtime/SkippableUpdater;-><init>(Landroidx/compose/runtime/Composer;)V
+HSPLandroidx/compose/runtime/SkippableUpdater;->box-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/SkippableUpdater;
+HSPLandroidx/compose/runtime/SkippableUpdater;->constructor-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/Composer;
+HSPLandroidx/compose/runtime/SkippableUpdater;->unbox-impl()Landroidx/compose/runtime/Composer;
+HSPLandroidx/compose/runtime/SlotReader;-><init>(Landroidx/compose/runtime/SlotTable;)V
+HSPLandroidx/compose/runtime/SlotReader;->anchor(I)Landroidx/compose/runtime/Anchor;
+HSPLandroidx/compose/runtime/SlotReader;->aux([II)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->beginEmpty()V
+HSPLandroidx/compose/runtime/SlotReader;->close()V
+HSPLandroidx/compose/runtime/SlotReader;->endEmpty()V
+HSPLandroidx/compose/runtime/SlotReader;->endGroup()V
+HSPLandroidx/compose/runtime/SlotReader;->extractKeys()Ljava/util/List;
+HSPLandroidx/compose/runtime/SlotReader;->getCurrentGroup()I
+HSPLandroidx/compose/runtime/SlotReader;->getGroupAux()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->getGroupEnd()I
+HSPLandroidx/compose/runtime/SlotReader;->getGroupKey()I
+HSPLandroidx/compose/runtime/SlotReader;->getGroupObjectKey()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->getGroupSlotIndex()I
+HSPLandroidx/compose/runtime/SlotReader;->getInEmpty()Z
+HSPLandroidx/compose/runtime/SlotReader;->getParent()I
+HSPLandroidx/compose/runtime/SlotReader;->getParentNodes()I
+HSPLandroidx/compose/runtime/SlotReader;->getSize()I
+HSPLandroidx/compose/runtime/SlotReader;->getTable$runtime_release()Landroidx/compose/runtime/SlotTable;
+HSPLandroidx/compose/runtime/SlotReader;->groupAux(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->groupGet(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->groupGet(II)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->groupKey(I)I
+HSPLandroidx/compose/runtime/SlotReader;->groupObjectKey(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->groupSize(I)I
+HSPLandroidx/compose/runtime/SlotReader;->hasObjectKey(I)Z
+HSPLandroidx/compose/runtime/SlotReader;->isGroupEnd()Z
+HSPLandroidx/compose/runtime/SlotReader;->isNode()Z
+HSPLandroidx/compose/runtime/SlotReader;->isNode(I)Z
+HSPLandroidx/compose/runtime/SlotReader;->next()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->node(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->node([II)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->nodeCount(I)I
+HSPLandroidx/compose/runtime/SlotReader;->objectKey([II)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotReader;->parent(I)I
+HSPLandroidx/compose/runtime/SlotReader;->reposition(I)V
+HSPLandroidx/compose/runtime/SlotReader;->restoreParent(I)V
+HSPLandroidx/compose/runtime/SlotReader;->skipGroup()I
+HSPLandroidx/compose/runtime/SlotReader;->skipToGroupEnd()V
+HSPLandroidx/compose/runtime/SlotReader;->startGroup()V
+HSPLandroidx/compose/runtime/SlotReader;->startNode()V
+HSPLandroidx/compose/runtime/SlotTable;-><init>()V
+HSPLandroidx/compose/runtime/SlotTable;->anchorIndex(Landroidx/compose/runtime/Anchor;)I
+HSPLandroidx/compose/runtime/SlotTable;->close$runtime_release(Landroidx/compose/runtime/SlotReader;)V
+HSPLandroidx/compose/runtime/SlotTable;->close$runtime_release(Landroidx/compose/runtime/SlotWriter;[II[Ljava/lang/Object;ILjava/util/ArrayList;)V
+HSPLandroidx/compose/runtime/SlotTable;->getAnchors$runtime_release()Ljava/util/ArrayList;
+HSPLandroidx/compose/runtime/SlotTable;->getGroups()[I
+HSPLandroidx/compose/runtime/SlotTable;->getGroupsSize()I
+HSPLandroidx/compose/runtime/SlotTable;->getSlots()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotTable;->getSlotsSize()I
+HSPLandroidx/compose/runtime/SlotTable;->isEmpty()Z
+HSPLandroidx/compose/runtime/SlotTable;->openReader()Landroidx/compose/runtime/SlotReader;
+HSPLandroidx/compose/runtime/SlotTable;->openWriter()Landroidx/compose/runtime/SlotWriter;
+HSPLandroidx/compose/runtime/SlotTable;->ownsAnchor(Landroidx/compose/runtime/Anchor;)Z
+HSPLandroidx/compose/runtime/SlotTable;->setTo$runtime_release([II[Ljava/lang/Object;ILjava/util/ArrayList;)V
+HSPLandroidx/compose/runtime/SlotTableKt;->access$auxIndex([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$containsAnyMark([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->access$containsMark([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->access$countOneBits(I)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$dataAnchor([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$groupInfo([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$groupSize([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$hasAux([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->access$hasMark([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->access$hasObjectKey([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->access$initGroup([IIIZZZII)V
+HSPLandroidx/compose/runtime/SlotTableKt;->access$isNode([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->access$key([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$locationOf(Ljava/util/ArrayList;II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$nodeCount([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$nodeIndex([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$objectKeyIndex([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$parentAnchor([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$search(Ljava/util/ArrayList;II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$slotAnchor([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->access$updateContainsMark([IIZ)V
+HSPLandroidx/compose/runtime/SlotTableKt;->access$updateDataAnchor([III)V
+HSPLandroidx/compose/runtime/SlotTableKt;->access$updateGroupSize([III)V
+HSPLandroidx/compose/runtime/SlotTableKt;->access$updateMark([IIZ)V
+HSPLandroidx/compose/runtime/SlotTableKt;->access$updateNodeCount([III)V
+HSPLandroidx/compose/runtime/SlotTableKt;->access$updateParentAnchor([III)V
+HSPLandroidx/compose/runtime/SlotTableKt;->auxIndex([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->containsAnyMark([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->containsMark([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->countOneBits(I)I
+HSPLandroidx/compose/runtime/SlotTableKt;->dataAnchor([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->groupInfo([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->groupSize([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->hasAux([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->hasMark([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->hasObjectKey([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->initGroup([IIIZZZII)V
+HSPLandroidx/compose/runtime/SlotTableKt;->isNode([II)Z
+HSPLandroidx/compose/runtime/SlotTableKt;->key([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->locationOf(Ljava/util/ArrayList;II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->nodeCount([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->nodeIndex([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->objectKeyIndex([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->parentAnchor([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->search(Ljava/util/ArrayList;II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->slotAnchor([II)I
+HSPLandroidx/compose/runtime/SlotTableKt;->updateContainsMark([IIZ)V
+HSPLandroidx/compose/runtime/SlotTableKt;->updateDataAnchor([III)V
+HSPLandroidx/compose/runtime/SlotTableKt;->updateGroupSize([III)V
+HSPLandroidx/compose/runtime/SlotTableKt;->updateMark([IIZ)V
+HSPLandroidx/compose/runtime/SlotTableKt;->updateNodeCount([III)V
+HSPLandroidx/compose/runtime/SlotTableKt;->updateParentAnchor([III)V
+HSPLandroidx/compose/runtime/SlotWriter$Companion;-><init>()V
+HSPLandroidx/compose/runtime/SlotWriter$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/SlotWriter$Companion;->access$moveGroup(Landroidx/compose/runtime/SlotWriter$Companion;Landroidx/compose/runtime/SlotWriter;ILandroidx/compose/runtime/SlotWriter;ZZ)Ljava/util/List;
+HSPLandroidx/compose/runtime/SlotWriter$Companion;->moveGroup(Landroidx/compose/runtime/SlotWriter;ILandroidx/compose/runtime/SlotWriter;ZZ)Ljava/util/List;
+HSPLandroidx/compose/runtime/SlotWriter;-><clinit>()V
+HSPLandroidx/compose/runtime/SlotWriter;-><init>(Landroidx/compose/runtime/SlotTable;)V
+HSPLandroidx/compose/runtime/SlotWriter;->access$containsAnyGroupMarks(Landroidx/compose/runtime/SlotWriter;I)Z
+HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndex(Landroidx/compose/runtime/SlotWriter;I)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndex(Landroidx/compose/runtime/SlotWriter;[II)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$dataIndexToDataAnchor(Landroidx/compose/runtime/SlotWriter;IIII)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$getAnchors$p(Landroidx/compose/runtime/SlotWriter;)Ljava/util/ArrayList;
+HSPLandroidx/compose/runtime/SlotWriter;->access$getCurrentSlot$p(Landroidx/compose/runtime/SlotWriter;)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$getGroupGapStart$p(Landroidx/compose/runtime/SlotWriter;)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$getGroups$p(Landroidx/compose/runtime/SlotWriter;)[I
+HSPLandroidx/compose/runtime/SlotWriter;->access$getNodeCount$p(Landroidx/compose/runtime/SlotWriter;)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$getSlots$p(Landroidx/compose/runtime/SlotWriter;)[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapLen$p(Landroidx/compose/runtime/SlotWriter;)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapOwner$p(Landroidx/compose/runtime/SlotWriter;)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$getSlotsGapStart$p(Landroidx/compose/runtime/SlotWriter;)I
+HSPLandroidx/compose/runtime/SlotWriter;->access$insertGroups(Landroidx/compose/runtime/SlotWriter;I)V
+HSPLandroidx/compose/runtime/SlotWriter;->access$insertSlots(Landroidx/compose/runtime/SlotWriter;II)V
+HSPLandroidx/compose/runtime/SlotWriter;->access$setCurrentGroup$p(Landroidx/compose/runtime/SlotWriter;I)V
+HSPLandroidx/compose/runtime/SlotWriter;->access$setCurrentSlot$p(Landroidx/compose/runtime/SlotWriter;I)V
+HSPLandroidx/compose/runtime/SlotWriter;->access$setNodeCount$p(Landroidx/compose/runtime/SlotWriter;I)V
+HSPLandroidx/compose/runtime/SlotWriter;->access$setSlotsGapOwner$p(Landroidx/compose/runtime/SlotWriter;I)V
+HSPLandroidx/compose/runtime/SlotWriter;->advanceBy(I)V
+HSPLandroidx/compose/runtime/SlotWriter;->anchor(I)Landroidx/compose/runtime/Anchor;
+HSPLandroidx/compose/runtime/SlotWriter;->anchorIndex(Landroidx/compose/runtime/Anchor;)I
+HSPLandroidx/compose/runtime/SlotWriter;->auxIndex([II)I
+HSPLandroidx/compose/runtime/SlotWriter;->beginInsert()V
+HSPLandroidx/compose/runtime/SlotWriter;->childContainsAnyMarks(I)Z
+HSPLandroidx/compose/runtime/SlotWriter;->close()V
+HSPLandroidx/compose/runtime/SlotWriter;->containsAnyGroupMarks(I)Z
+HSPLandroidx/compose/runtime/SlotWriter;->containsGroupMark(I)Z
+HSPLandroidx/compose/runtime/SlotWriter;->dataAnchorToDataIndex(III)I
+HSPLandroidx/compose/runtime/SlotWriter;->dataIndex(I)I
+HSPLandroidx/compose/runtime/SlotWriter;->dataIndex([II)I
+HSPLandroidx/compose/runtime/SlotWriter;->dataIndexToDataAddress(I)I
+HSPLandroidx/compose/runtime/SlotWriter;->dataIndexToDataAnchor(IIII)I
+HSPLandroidx/compose/runtime/SlotWriter;->endGroup()I
+HSPLandroidx/compose/runtime/SlotWriter;->endInsert()V
+HSPLandroidx/compose/runtime/SlotWriter;->ensureStarted(I)V
+HSPLandroidx/compose/runtime/SlotWriter;->ensureStarted(Landroidx/compose/runtime/Anchor;)V
+HSPLandroidx/compose/runtime/SlotWriter;->getCapacity()I
+HSPLandroidx/compose/runtime/SlotWriter;->getClosed()Z
+HSPLandroidx/compose/runtime/SlotWriter;->getCurrentGroup()I
+HSPLandroidx/compose/runtime/SlotWriter;->getParent()I
+HSPLandroidx/compose/runtime/SlotWriter;->getSize$runtime_release()I
+HSPLandroidx/compose/runtime/SlotWriter;->getTable$runtime_release()Landroidx/compose/runtime/SlotTable;
+HSPLandroidx/compose/runtime/SlotWriter;->groupAux(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotWriter;->groupIndexToAddress(I)I
+HSPLandroidx/compose/runtime/SlotWriter;->groupKey(I)I
+HSPLandroidx/compose/runtime/SlotWriter;->groupObjectKey(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotWriter;->groupSize(I)I
+HSPLandroidx/compose/runtime/SlotWriter;->insertGroups(I)V
+HSPLandroidx/compose/runtime/SlotWriter;->insertSlots(II)V
+HSPLandroidx/compose/runtime/SlotWriter;->markGroup$default(Landroidx/compose/runtime/SlotWriter;IILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/SlotWriter;->markGroup(I)V
+HSPLandroidx/compose/runtime/SlotWriter;->moveFrom(Landroidx/compose/runtime/SlotTable;I)Ljava/util/List;
+HSPLandroidx/compose/runtime/SlotWriter;->moveGroupGapTo(I)V
+HSPLandroidx/compose/runtime/SlotWriter;->moveSlotGapTo(II)V+]Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/SlotWriter;
+HSPLandroidx/compose/runtime/SlotWriter;->node(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotWriter;->node(Landroidx/compose/runtime/Anchor;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotWriter;->nodeIndex([II)I
+HSPLandroidx/compose/runtime/SlotWriter;->parent(I)I
+HSPLandroidx/compose/runtime/SlotWriter;->parent([II)I
+HSPLandroidx/compose/runtime/SlotWriter;->parentAnchorToIndex(I)I+]Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/SlotWriter;
+HSPLandroidx/compose/runtime/SlotWriter;->parentIndexToAnchor(II)I
+HSPLandroidx/compose/runtime/SlotWriter;->recalculateMarks()V
+HSPLandroidx/compose/runtime/SlotWriter;->removeAnchors(II)Z
+HSPLandroidx/compose/runtime/SlotWriter;->removeGroup()Z
+HSPLandroidx/compose/runtime/SlotWriter;->removeGroups(II)Z
+HSPLandroidx/compose/runtime/SlotWriter;->removeSlots(III)V
+HSPLandroidx/compose/runtime/SlotWriter;->restoreCurrentGroupEnd()I
+HSPLandroidx/compose/runtime/SlotWriter;->saveCurrentGroupEnd()V
+HSPLandroidx/compose/runtime/SlotWriter;->set(ILjava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotWriter;->set(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/SlotWriter;->skip()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotWriter;->skipGroup()I
+HSPLandroidx/compose/runtime/SlotWriter;->skipToGroupEnd()V
+HSPLandroidx/compose/runtime/SlotWriter;->slotIndex([II)I
+HSPLandroidx/compose/runtime/SlotWriter;->startData(ILjava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/SlotWriter;->startGroup()V
+HSPLandroidx/compose/runtime/SlotWriter;->startGroup(ILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/SlotWriter;->startGroup(ILjava/lang/Object;ZLjava/lang/Object;)V
+HSPLandroidx/compose/runtime/SlotWriter;->startNode(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/SlotWriter;->update(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SlotWriter;->updateAnchors(II)V
+HSPLandroidx/compose/runtime/SlotWriter;->updateAux(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/SlotWriter;->updateContainsMark(I)V
+HSPLandroidx/compose/runtime/SlotWriter;->updateContainsMarkNow(ILandroidx/compose/runtime/PrioritySet;)V
+HSPLandroidx/compose/runtime/SlotWriter;->updateNode(Landroidx/compose/runtime/Anchor;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/SlotWriter;->updateNodeOfGroup(ILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;-><init>(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;->setValue(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;-><init>(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)V
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy;
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V
+HSPLandroidx/compose/runtime/SnapshotMutableStateImpl;->setValue(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateListOf()Landroidx/compose/runtime/snapshots/SnapshotStateList;
+HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateOf$default(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;ILjava/lang/Object;)Landroidx/compose/runtime/MutableState;
+HSPLandroidx/compose/runtime/SnapshotStateKt;->mutableStateOf(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/MutableState;
+HSPLandroidx/compose/runtime/SnapshotStateKt;->neverEqualPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy;
+HSPLandroidx/compose/runtime/SnapshotStateKt;->observeDerivedStateRecalculations(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/SnapshotStateKt;->referentialEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy;
+HSPLandroidx/compose/runtime/SnapshotStateKt;->rememberUpdatedState(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/runtime/SnapshotStateKt;->snapshotFlow(Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/Flow;
+HSPLandroidx/compose/runtime/SnapshotStateKt;->structuralEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy;
+HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;-><clinit>()V
+HSPLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->observeDerivedStateRecalculations(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->snapshotFlow(Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/flow/Flow;
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->neverEqualPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy;
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->referentialEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy;
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;->structuralEqualityPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy;
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateListOf()Landroidx/compose/runtime/snapshots/SnapshotStateList;
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateOf$default(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;ILjava/lang/Object;)Landroidx/compose/runtime/MutableState;
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->mutableStateOf(Ljava/lang/Object;Landroidx/compose/runtime/SnapshotMutationPolicy;)Landroidx/compose/runtime/MutableState;
+HSPLandroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;->rememberUpdatedState(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/runtime/SnapshotThreadLocal;-><init>()V
+HSPLandroidx/compose/runtime/SnapshotThreadLocal;->get()Ljava/lang/Object;+]Landroidx/compose/runtime/internal/ThreadMap;Landroidx/compose/runtime/internal/ThreadMap;
+HSPLandroidx/compose/runtime/SnapshotThreadLocal;->set(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/Stack;-><init>()V
+HSPLandroidx/compose/runtime/Stack;->clear()V
+HSPLandroidx/compose/runtime/Stack;->getSize()I
+HSPLandroidx/compose/runtime/Stack;->isEmpty()Z
+HSPLandroidx/compose/runtime/Stack;->isNotEmpty()Z
+HSPLandroidx/compose/runtime/Stack;->peek()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Stack;->pop()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Stack;->push(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/Stack;->toArray()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/StaticProvidableCompositionLocal;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/StaticProvidableCompositionLocal;->provided$runtime_release(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/runtime/StaticValueHolder;-><init>(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/StaticValueHolder;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/StaticValueHolder;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/StructuralEqualityPolicy;-><clinit>()V
+HSPLandroidx/compose/runtime/StructuralEqualityPolicy;-><init>()V
+HSPLandroidx/compose/runtime/StructuralEqualityPolicy;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/Trace;-><clinit>()V
+HSPLandroidx/compose/runtime/Trace;-><init>()V
+HSPLandroidx/compose/runtime/Trace;->beginSection(Ljava/lang/String;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/Trace;->endSection(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/Updater;->constructor-impl(Landroidx/compose/runtime/Composer;)Landroidx/compose/runtime/Composer;
+HSPLandroidx/compose/runtime/Updater;->set-impl(Landroidx/compose/runtime/Composer;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;-><init>()V
+HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->add(Ljava/lang/Object;I)I
+HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->find(Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getKeys()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getSize()I
+HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->getValues()[I
+HSPLandroidx/compose/runtime/collection/IdentityArrayIntMap;->setSize(I)V
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;-><init>(I)V
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->contains(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->find(Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getKeys$runtime_release()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getSize$runtime_release()I
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->getValues$runtime_release()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->isNotEmpty()Z
+HSPLandroidx/compose/runtime/collection/IdentityArrayMap;->set(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;-><init>()V
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->add(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->clear()V
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->contains(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->find(Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->get(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->getSize()I
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->getValues()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->isNotEmpty()Z
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->remove(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->setSize(I)V
+HSPLandroidx/compose/runtime/collection/IdentityArraySet;->size()I+]Landroidx/compose/runtime/collection/IdentityArraySet;Landroidx/compose/runtime/collection/IdentityArraySet;
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;-><init>()V
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->access$find(Landroidx/compose/runtime/collection/IdentityScopeMap;Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->access$scopeSetAt(Landroidx/compose/runtime/collection/IdentityScopeMap;I)Landroidx/compose/runtime/collection/IdentityArraySet;
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->add(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->contains(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->find(Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getOrCreateIdentitySet(Ljava/lang/Object;)Landroidx/compose/runtime/collection/IdentityArraySet;
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getScopeSets()[Landroidx/compose/runtime/collection/IdentityArraySet;
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getSize()I
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getValueOrder()[I
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->getValues()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->scopeSetAt(I)Landroidx/compose/runtime/collection/IdentityArraySet;
+HSPLandroidx/compose/runtime/collection/IdentityScopeMap;->setSize(I)V
+HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;-><init>(Landroidx/compose/runtime/collection/MutableVector;)V
+HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->get(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->getSize()I
+HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->indexOf(Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->isEmpty()Z
+HSPLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->size()I
+HSPLandroidx/compose/runtime/collection/MutableVector;-><clinit>()V
+HSPLandroidx/compose/runtime/collection/MutableVector;-><init>([Ljava/lang/Object;I)V
+HSPLandroidx/compose/runtime/collection/MutableVector;->add(ILjava/lang/Object;)V
+HSPLandroidx/compose/runtime/collection/MutableVector;->add(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/MutableVector;->addAll(ILandroidx/compose/runtime/collection/MutableVector;)Z
+HSPLandroidx/compose/runtime/collection/MutableVector;->asMutableList()Ljava/util/List;
+HSPLandroidx/compose/runtime/collection/MutableVector;->clear()V
+HSPLandroidx/compose/runtime/collection/MutableVector;->contains(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/MutableVector;->ensureCapacity(I)V
+HSPLandroidx/compose/runtime/collection/MutableVector;->getContent()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/MutableVector;->getSize()I
+HSPLandroidx/compose/runtime/collection/MutableVector;->indexOf(Ljava/lang/Object;)I
+HSPLandroidx/compose/runtime/collection/MutableVector;->isEmpty()Z
+HSPLandroidx/compose/runtime/collection/MutableVector;->isNotEmpty()Z
+HSPLandroidx/compose/runtime/collection/MutableVector;->remove(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/collection/MutableVector;->removeAt(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/MutableVector;->removeRange(II)V
+HSPLandroidx/compose/runtime/collection/MutableVector;->set(ILjava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/collection/MutableVector;->sortWith(Ljava/util/Comparator;)V
+HSPLandroidx/compose/runtime/collection/MutableVectorKt;->access$checkIndex(Ljava/util/List;I)V
+HSPLandroidx/compose/runtime/collection/MutableVectorKt;->checkIndex(Ljava/util/List;I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentHashMapOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentListOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;->persistentSetOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;->getEMPTY()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;-><clinit>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;-><init>([Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/UtilsKt;->persistentVectorOf()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getKey()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;->emptyOf$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;-><clinit>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->builder()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap$Builder;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->builder()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->containsKey(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->createEntries()Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getEntries()Ljava/util/Set;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getNode$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;[Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->checkHasNext()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->ensureNextEntryIsReady()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->hasNext()Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->moveToNextNodeWithData(I)I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;->next()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->build()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->build()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getModCount$runtime_release()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getOwnership$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->putAll(Ljava/util/Map;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setModCount$runtime_release(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setOperationResult$runtime_release(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;->setSize(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;->iterator()Ljava/util/Iterator;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntriesIterator;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;->getEMPTY$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getNode()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;->getSizeDelta()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;-><clinit>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;-><init>(II[Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;-><init>(II[Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->asInsertResult()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->containsKey(ILjava/lang/Object;I)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->elementsIdentityEquals(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryCount$runtime_release()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->entryKeyIndex$runtime_release(I)I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->get(ILjava/lang/Object;I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->getBuffer$runtime_release()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasEntryAt$runtime_release(I)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->hasNodeAt(I)Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->insertEntryAt(ILjava/lang/Object;Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->keyAtIndex(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->makeNode(ILjava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableInsertEntryAt(ILjava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePut(ILjava/lang/Object;Ljava/lang/Object;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePutAll(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;ILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutablePutAllFromOtherNodeCell(Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;IILandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->mutableUpdateValueAtIndex(ILjava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeAtIndex$runtime_release(I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->nodeIndex$runtime_release(I)I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->put(ILjava/lang/Object;Ljava/lang/Object;I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->valueAtKeyIndex(I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->currentNode()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->getBuffer()[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->getIndex()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->hasNextKey()Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->hasNextNode()Z
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->reset([Ljava/lang/Object;I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->reset([Ljava/lang/Object;II)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->setIndex(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->next()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;->next()Ljava/util/Map$Entry;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->access$insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->indexSegment(II)I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;->insertEntryAtIndex([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;->emptyOf$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;-><clinit>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;-><init>(Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->access$getEMPTY$cp()Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->getSize()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/CommonFunctionsKt;->assert(Z)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;-><init>(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->getCount()I
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;->setCount(I)V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;-><clinit>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;-><init>()V
+HSPLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;-><init>()V
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;-><init>(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;I)V
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;-><init>(IZ)V
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Landroidx/compose/runtime/Composer;I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->trackRead(Landroidx/compose/runtime/Composer;)V
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->trackWrite()V
+HSPLandroidx/compose/runtime/internal/ComposableLambdaImpl;->update(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->bitsForSlot(II)I
+HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->composableLambda(Landroidx/compose/runtime/Composer;IZLjava/lang/Object;)Landroidx/compose/runtime/internal/ComposableLambda;
+HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->composableLambdaInstance(IZLjava/lang/Object;)Landroidx/compose/runtime/internal/ComposableLambda;
+HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->differentBits(I)I
+HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->replacableWith(Landroidx/compose/runtime/RecomposeScope;Landroidx/compose/runtime/RecomposeScope;)Z
+HSPLandroidx/compose/runtime/internal/ComposableLambdaKt;->sameBits(I)I
+HSPLandroidx/compose/runtime/internal/ThreadMap;-><init>(I[J[Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/internal/ThreadMap;->find(J)I
+HSPLandroidx/compose/runtime/internal/ThreadMap;->get(J)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/internal/ThreadMap;->newWith(JLjava/lang/Object;)Landroidx/compose/runtime/internal/ThreadMap;
+HSPLandroidx/compose/runtime/internal/ThreadMap;->trySet(JLjava/lang/Object;)Z
+HSPLandroidx/compose/runtime/internal/ThreadMapKt;-><clinit>()V
+HSPLandroidx/compose/runtime/internal/ThreadMapKt;->getEmptyThreadMap()Landroidx/compose/runtime/internal/ThreadMap;
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry;)V
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1;-><init>(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/String;Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;)V
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;-><clinit>()V
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->access$requireCanBeSaved(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->rememberSaveable([Ljava/lang/Object;Landroidx/compose/runtime/saveable/Saver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;II)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/saveable/RememberSaveableKt;->requireCanBeSaved(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;-><init>(Ljava/util/Map;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->canBeSaved(Ljava/lang/Object;)Z
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry;
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1;-><clinit>()V
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1;-><init>()V
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;-><clinit>()V
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->SaveableStateRegistry(Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/SaveableStateRegistry;
+HSPLandroidx/compose/runtime/saveable/SaveableStateRegistryKt;->getLocalSaveableStateRegistry()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;-><clinit>()V
+HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;-><init>()V
+HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$2;-><clinit>()V
+HSPLandroidx/compose/runtime/saveable/SaverKt$AutoSaver$2;-><init>()V
+HSPLandroidx/compose/runtime/saveable/SaverKt$Saver$1;-><init>(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/saveable/SaverKt$Saver$1;->save(Landroidx/compose/runtime/saveable/SaverScope;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/saveable/SaverKt;-><clinit>()V
+HSPLandroidx/compose/runtime/saveable/SaverKt;->Saver(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver;
+HSPLandroidx/compose/runtime/saveable/SaverKt;->autoSaver()Landroidx/compose/runtime/saveable/Saver;
+HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/MutableSnapshot;
+HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;-><init>(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)V
+HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->dispose()V
+HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->notifyObjectsInitialized$runtime_release()V
+HSPLandroidx/compose/runtime/snapshots/GlobalSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot;
+HSPLandroidx/compose/runtime/snapshots/ListUtilsKt;->fastToSet(Ljava/util/List;)Ljava/util/Set;
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;-><init>(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult;
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->closeLocked$runtime_release()V
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->dispose()V
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getModified$runtime_release()Ljava/util/Set;
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getPreviousIds$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getReadObserver$runtime_release()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getReadOnly()Z
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->getWriteObserver$runtime_release()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->innerApplyLocked$runtime_release(ILjava/util/Map;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotApplyResult;
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->nestedDeactivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordModified$runtime_release(Landroidx/compose/runtime/snapshots/StateObject;)V
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->releasePinnedSnapshotsForCloseLocked$runtime_release()V
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->releasePreviouslyPinnedSnapshotsLocked$runtime_release()V
+HSPLandroidx/compose/runtime/snapshots/MutableSnapshot;->setModified(Ljava/util/Set;)V
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2;-><init>(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerGlobalWriteObserver$2;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->createNonObservableSnapshot()Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->getCurrent()Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->notifyObjectsInitialized()V
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->observe(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->registerApplyObserver(Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/snapshots/ObserverHandle;
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->registerGlobalWriteObserver(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/ObserverHandle;
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->sendApplyNotifications()V
+HSPLandroidx/compose/runtime/snapshots/Snapshot$Companion;->takeMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot;
+HSPLandroidx/compose/runtime/snapshots/Snapshot;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/Snapshot;-><init>(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)V
+HSPLandroidx/compose/runtime/snapshots/Snapshot;-><init>(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->dispose()V
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->getDisposed$runtime_release()Z
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->getId()I
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->getInvalid$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->makeCurrent()Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->releasePinnedSnapshotLocked$runtime_release()V
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->releasePinnedSnapshotsForCloseLocked$runtime_release()V
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->restoreCurrent(Landroidx/compose/runtime/snapshots/Snapshot;)V
+HSPLandroidx/compose/runtime/snapshots/Snapshot;->setDisposed$runtime_release(Z)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult$Success;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult$Success;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotApplyResult;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->add(I)I
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->allocateHandle()I
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->ensure(I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->freeHandle(I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->lowestOrDefault(I)I
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->remove(I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->shiftDown(I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->shiftUp(I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;->swap(II)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;->getEMPTY()Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;-><init>(JJI[I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getEMPTY$cp()Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->andNot(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->clear(I)Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->get(I)Z
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->lowest(I)I
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->or(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSet;->set(I)Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->access$lowestBitOf(J)I
+HSPLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->lowestBitOf(J)I
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;->invoke(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$advanceGlobalSnapshot()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$advanceGlobalSnapshot(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getApplyObservers$p()Ljava/util/List;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getCurrentGlobalSnapshot$p()Ljava/util/concurrent/atomic/AtomicReference;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getEmptyLambda$p()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getGlobalWriteObservers$p()Ljava/util/List;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getNextSnapshotId$p()I
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getOpenSnapshots$p()Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$getThreadSnapshot$p()Landroidx/compose/runtime/SnapshotThreadLocal;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$mergedReadObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Z)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$mergedWriteObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$optimisticMerges(Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Ljava/util/Map;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$readable(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$setNextSnapshotId$p(I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$setOpenSnapshots$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$takeNewGlobalSnapshot(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$takeNewSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->access$validateOpen(Landroidx/compose/runtime/snapshots/Snapshot;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->advanceGlobalSnapshot()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->advanceGlobalSnapshot(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->createTransparentSnapshotWithNoParentReadObserver$default(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->createTransparentSnapshotWithNoParentReadObserver(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;Z)Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->current(Landroidx/compose/runtime/snapshots/StateRecord;)Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->currentSnapshot()Landroidx/compose/runtime/snapshots/Snapshot;+]Landroidx/compose/runtime/SnapshotThreadLocal;Landroidx/compose/runtime/SnapshotThreadLocal;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->getLock()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->getSnapshotInitializer()Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedReadObserver$default(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ZILjava/lang/Object;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedReadObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Z)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->mergedWriteObserver(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->newOverwritableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->notifyWrite(Landroidx/compose/runtime/snapshots/Snapshot;Landroidx/compose/runtime/snapshots/StateObject;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->optimisticMerges(Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/MutableSnapshot;Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Ljava/util/Map;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->overwritableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;Landroidx/compose/runtime/snapshots/StateRecord;)Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->readable(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/StateRecord;+]Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/DerivedSnapshotState$ResultRecord;,Landroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;,Landroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->readable(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->releasePinningLocked(I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->takeNewGlobalSnapshot(Landroidx/compose/runtime/snapshots/Snapshot;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->takeNewSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->trackPinning(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)I
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->used(Landroidx/compose/runtime/snapshots/StateObject;)Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->valid(IILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Z
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->valid(Landroidx/compose/runtime/snapshots/StateRecord;ILandroidx/compose/runtime/snapshots/SnapshotIdSet;)Z
+HSPLandroidx/compose/runtime/snapshots/SnapshotKt;->validateOpen(Landroidx/compose/runtime/snapshots/Snapshot;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;-><init>(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->getList$runtime_release()Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->getReadable$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateList;->isEmpty()Z
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateEnterObserver$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateExitObserver$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$clearObsoleteStateReads(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$getCurrentScope$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$getCurrentScopeReads$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)Landroidx/compose/runtime/collection/IdentityArrayIntMap;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$getCurrentToken$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)I
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$getScopeToValues$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;)Landroidx/compose/runtime/collection/IdentityArrayMap;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$setCurrentScope$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$setCurrentScopeReads$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;Landroidx/compose/runtime/collection/IdentityArrayIntMap;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$setCurrentToken$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;I)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->clearObsoleteStateReads(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->getDerivedStateEnterObserver()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->getDerivedStateExitObserver()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->getOnChanged()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->notifyInvalidatedScopes()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->recordInvalidation(Ljava/util/Set;)Z+]Landroidx/compose/runtime/collection/IdentityArraySet;Landroidx/compose/runtime/collection/IdentityArraySet;]Landroidx/compose/runtime/collection/IdentityScopeMap;Landroidx/compose/runtime/collection/IdentityScopeMap;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->recordRead(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->removeObservation(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1$2;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1$2;->invoke()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;->invoke(Ljava/util/Set;Landroidx/compose/runtime/snapshots/Snapshot;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$observeReads$1$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$observeReads$1$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$observeReads$1$1;->invoke()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;->invoke(Ljava/lang/Object;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getCurrentMap$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getObservedScopeMaps$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getOnChangedExecutor$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$getReadObserver$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->access$isPaused$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver;)Z
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->ensureMap(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->observeReads(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->start()V
+HSPLandroidx/compose/runtime/snapshots/StateRecord;-><clinit>()V
+HSPLandroidx/compose/runtime/snapshots/StateRecord;-><init>()V
+HSPLandroidx/compose/runtime/snapshots/StateRecord;->getNext$runtime_release()Landroidx/compose/runtime/snapshots/StateRecord;
+HSPLandroidx/compose/runtime/snapshots/StateRecord;->getSnapshotId$runtime_release()I
+HSPLandroidx/compose/runtime/snapshots/StateRecord;->setNext$runtime_release(Landroidx/compose/runtime/snapshots/StateRecord;)V
+HSPLandroidx/compose/runtime/snapshots/StateRecord;->setSnapshotId$runtime_release(I)V
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;-><init>(Landroidx/compose/runtime/snapshots/MutableSnapshot;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ZZ)V
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult;
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->dispose()V
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getCurrentSnapshot()Landroidx/compose/runtime/snapshots/MutableSnapshot;
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getId()I+]Landroidx/compose/runtime/snapshots/Snapshot;Landroidx/compose/runtime/snapshots/GlobalSnapshot;,Landroidx/compose/runtime/snapshots/MutableSnapshot;,Landroidx/compose/runtime/snapshots/NestedMutableSnapshot;,Landroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getInvalid$runtime_release()Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->getReadOnly()Z
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->notifyObjectsInitialized$runtime_release()V
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->recordModified$runtime_release(Landroidx/compose/runtime/snapshots/StateObject;)V
+HSPLandroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot;
+HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;-><clinit>()V
+HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;-><init>()V
+HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;->invoke()Ljava/util/Set;
+HSPLandroidx/compose/runtime/tooling/InspectionTablesKt;-><clinit>()V
+HSPLandroidx/compose/runtime/tooling/InspectionTablesKt;->getLocalInspectionTables()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/ActualKt;->areObjectsOfSameType(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/Alignment$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/Alignment$Companion;-><init>()V
+HSPLandroidx/compose/ui/Alignment$Companion;->getCenter()Landroidx/compose/ui/Alignment;
+HSPLandroidx/compose/ui/Alignment$Companion;->getCenterHorizontally()Landroidx/compose/ui/Alignment$Horizontal;
+HSPLandroidx/compose/ui/Alignment$Companion;->getCenterVertically()Landroidx/compose/ui/Alignment$Vertical;
+HSPLandroidx/compose/ui/Alignment$Companion;->getStart()Landroidx/compose/ui/Alignment$Horizontal;
+HSPLandroidx/compose/ui/Alignment$Companion;->getTop()Landroidx/compose/ui/Alignment$Vertical;
+HSPLandroidx/compose/ui/Alignment$Companion;->getTopStart()Landroidx/compose/ui/Alignment;
+HSPLandroidx/compose/ui/Alignment;-><clinit>()V
+HSPLandroidx/compose/ui/BiasAlignment$Horizontal;-><init>(F)V
+HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->align(IILandroidx/compose/ui/unit/LayoutDirection;)I
+HSPLandroidx/compose/ui/BiasAlignment$Horizontal;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/BiasAlignment$Vertical;-><init>(F)V
+HSPLandroidx/compose/ui/BiasAlignment$Vertical;->align(II)I
+HSPLandroidx/compose/ui/BiasAlignment$Vertical;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/BiasAlignment;-><init>(FF)V
+HSPLandroidx/compose/ui/BiasAlignment;->align-KFBX0sM(JJLandroidx/compose/ui/unit/LayoutDirection;)J
+HSPLandroidx/compose/ui/BiasAlignment;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/CombinedModifier;-><clinit>()V
+HSPLandroidx/compose/ui/CombinedModifier;-><init>(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier;)V
+HSPLandroidx/compose/ui/CombinedModifier;->all(Lkotlin/jvm/functions/Function1;)Z
+HSPLandroidx/compose/ui/CombinedModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/CombinedModifier;->foldIn(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/CombinedModifier;->getInner$ui_release()Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/CombinedModifier;->getOuter$ui_release()Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/ComposedModifier;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)V
+HSPLandroidx/compose/ui/ComposedModifier;->getFactory()Lkotlin/jvm/functions/Function3;
+HSPLandroidx/compose/ui/ComposedModifierKt$WrapFocusEventModifier$1;-><clinit>()V
+HSPLandroidx/compose/ui/ComposedModifierKt$WrapFocusEventModifier$1;-><init>()V
+HSPLandroidx/compose/ui/ComposedModifierKt$WrapFocusRequesterModifier$1;-><clinit>()V
+HSPLandroidx/compose/ui/ComposedModifierKt$WrapFocusRequesterModifier$1;-><init>()V
+HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;-><clinit>()V
+HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;-><init>()V
+HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->invoke(Landroidx/compose/ui/Modifier$Element;)Ljava/lang/Boolean;
+HSPLandroidx/compose/ui/ComposedModifierKt$materialize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;-><init>(Landroidx/compose/runtime/Composer;)V
+HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Modifier$Element;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/ComposedModifierKt$materialize$result$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/ComposedModifierKt;-><clinit>()V
+HSPLandroidx/compose/ui/ComposedModifierKt;->composed(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/ComposedModifierKt;->materialize(Landroidx/compose/runtime/Composer;Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/Modifier$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/Modifier$Companion;-><init>()V
+HSPLandroidx/compose/ui/Modifier$Companion;->all(Lkotlin/jvm/functions/Function1;)Z
+HSPLandroidx/compose/ui/Modifier$Companion;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/Modifier$Element;->all(Lkotlin/jvm/functions/Function1;)Z
+HSPLandroidx/compose/ui/Modifier$Element;->foldIn(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/Modifier$Node;-><clinit>()V
+HSPLandroidx/compose/ui/Modifier$Node;-><init>()V
+HSPLandroidx/compose/ui/Modifier$Node;->attach$ui_release()V
+HSPLandroidx/compose/ui/Modifier$Node;->getAggregateChildKindSet$ui_release()I
+HSPLandroidx/compose/ui/Modifier$Node;->getChild$ui_release()Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/Modifier$Node;->getCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/Modifier$Node;->getKindSet$ui_release()I
+HSPLandroidx/compose/ui/Modifier$Node;->getNode()Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/Modifier$Node;->getParent$ui_release()Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/Modifier$Node;->isAttached()Z
+HSPLandroidx/compose/ui/Modifier$Node;->onAttach()V
+HSPLandroidx/compose/ui/Modifier$Node;->setAggregateChildKindSet$ui_release(I)V
+HSPLandroidx/compose/ui/Modifier$Node;->setChild$ui_release(Landroidx/compose/ui/Modifier$Node;)V
+HSPLandroidx/compose/ui/Modifier$Node;->setKindSet$ui_release(I)V
+HSPLandroidx/compose/ui/Modifier$Node;->setParent$ui_release(Landroidx/compose/ui/Modifier$Node;)V
+HSPLandroidx/compose/ui/Modifier$Node;->sideEffect(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/Modifier$Node;->updateCoordinator$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V
+HSPLandroidx/compose/ui/Modifier;-><clinit>()V
+HSPLandroidx/compose/ui/Modifier;->then(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->fold(Landroidx/compose/ui/MotionDurationScale;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->get(Landroidx/compose/ui/MotionDurationScale;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLandroidx/compose/ui/MotionDurationScale$DefaultImpls;->minusKey(Landroidx/compose/ui/MotionDurationScale;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/ui/MotionDurationScale$Key;-><clinit>()V
+HSPLandroidx/compose/ui/MotionDurationScale$Key;-><init>()V
+HSPLandroidx/compose/ui/MotionDurationScale;-><clinit>()V
+HSPLandroidx/compose/ui/MotionDurationScale;->getKey()Lkotlin/coroutines/CoroutineContext$Key;
+HSPLandroidx/compose/ui/autofill/AndroidAutofill;-><init>(Landroid/view/View;Landroidx/compose/ui/autofill/AutofillTree;)V
+HSPLandroidx/compose/ui/autofill/AndroidAutofill;->getAutofillManager()Landroid/view/autofill/AutofillManager;
+HSPLandroidx/compose/ui/autofill/AutofillCallback;-><clinit>()V
+HSPLandroidx/compose/ui/autofill/AutofillCallback;-><init>()V
+HSPLandroidx/compose/ui/autofill/AutofillCallback;->register(Landroidx/compose/ui/autofill/AndroidAutofill;)V
+HSPLandroidx/compose/ui/autofill/AutofillTree;-><clinit>()V
+HSPLandroidx/compose/ui/autofill/AutofillTree;-><init>()V
+HSPLandroidx/compose/ui/draw/ClipKt;->clip(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+HSPLandroidx/compose/ui/draw/DrawBackgroundModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/draw/DrawModifierKt;->drawBehind(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/draw/PainterModifier$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;)V
+HSPLandroidx/compose/ui/draw/PainterModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/ui/draw/PainterModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/draw/PainterModifier;-><init>(Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/draw/PainterModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+HSPLandroidx/compose/ui/draw/PainterModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/draw/PainterModifier;->getUseIntrinsicSize()Z
+HSPLandroidx/compose/ui/draw/PainterModifier;->hasSpecifiedAndFiniteHeight-uvyYCjk(J)Z
+HSPLandroidx/compose/ui/draw/PainterModifier;->hasSpecifiedAndFiniteWidth-uvyYCjk(J)Z
+HSPLandroidx/compose/ui/draw/PainterModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/draw/PainterModifier;->modifyConstraints-ZezNO4M(J)J
+HSPLandroidx/compose/ui/draw/PainterModifierKt;->paint$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;ILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/draw/PainterModifierKt;->paint(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/painter/Painter;ZLandroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/draw/ShadowKt$shadow$2$1;-><init>(FLandroidx/compose/ui/graphics/Shape;ZJJ)V
+HSPLandroidx/compose/ui/draw/ShadowKt$shadow$2$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V
+HSPLandroidx/compose/ui/draw/ShadowKt$shadow$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/draw/ShadowKt;->shadow-s4CzXII$default(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Shape;ZJJILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/draw/ShadowKt;->shadow-s4CzXII(Landroidx/compose/ui/Modifier;FLandroidx/compose/ui/graphics/Shape;ZJJ)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$2$1$1;-><init>(Landroidx/compose/runtime/MutableState;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$2$1$1;->invoke(Landroidx/compose/ui/focus/FocusState;)V
+HSPLandroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$2$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$2;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusChangedModifierKt;->onFocusChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$ModifierLocalFocusEvent$1;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$ModifierLocalFocusEvent$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$ModifierLocalFocusEvent$1;->invoke()Landroidx/compose/ui/focus/FocusEventModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$ModifierLocalFocusEvent$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$2$1$1;-><init>(Landroidx/compose/ui/focus/FocusEventModifierLocal;)V
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$2$1$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$2$1$1;->invoke()V
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$2;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt;->getModifierLocalFocusEvent()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusEventModifierKt;->onFocusEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;->addFocusModifier(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;->getValue()Landroidx/compose/ui/focus/FocusEventModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;->notifyIfNoFocusModifiers()V
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;->propagateFocusEvent()V
+HSPLandroidx/compose/ui/focus/FocusEventModifierLocal;->removeFocusModifier(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusManagerImpl;-><init>(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusManagerImpl;-><init>(Landroidx/compose/ui/focus/FocusModifier;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/focus/FocusManagerImpl;->fetchUpdatedFocusProperties()V
+HSPLandroidx/compose/ui/focus/FocusManagerImpl;->getModifier()Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusManagerImpl;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/ui/focus/FocusManagerKt;->access$updateProperties(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusManagerKt;->updateProperties(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusModifier$Companion$RefreshFocusProperties$1;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusModifier$Companion$RefreshFocusProperties$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusModifier$Companion;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusModifier$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/focus/FocusModifier$Companion;->getRefreshFocusProperties()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/focus/FocusModifier;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusModifier;-><init>(Landroidx/compose/ui/focus/FocusStateImpl;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/focus/FocusModifier;-><init>(Landroidx/compose/ui/focus/FocusStateImpl;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/focus/FocusModifier;->access$getRefreshFocusProperties$cp()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getChildren()Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getCoordinator()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getFocusEventListener()Landroidx/compose/ui/focus/FocusEventModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getFocusProperties()Landroidx/compose/ui/focus/FocusProperties;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getFocusPropertiesModifier()Landroidx/compose/ui/focus/FocusPropertiesModifier;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getFocusState()Landroidx/compose/ui/focus/FocusStateImpl;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getKeyInputChildren()Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getValue()Landroidx/compose/ui/focus/FocusModifier;
+HSPLandroidx/compose/ui/focus/FocusModifier;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/focus/FocusModifier;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/ui/focus/FocusModifier;->setFocusState(Landroidx/compose/ui/focus/FocusStateImpl;)V
+HSPLandroidx/compose/ui/focus/FocusModifier;->setModifierLocalReadScope(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ModifierLocalParentFocusModifier$1;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ModifierLocalParentFocusModifier$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ModifierLocalParentFocusModifier$1;->invoke()Landroidx/compose/ui/focus/FocusModifier;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ModifierLocalParentFocusModifier$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$1;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$1;->getValue()Landroidx/compose/ui/focus/FocusPropertiesModifier;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$1;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$2;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$2;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$2;->getValue()Landroidx/compose/ui/focus/FocusEventModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$2;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$3;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$3;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$3;->getValue()Landroidx/compose/ui/focus/FocusRequesterModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$3;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$focusTarget$2$1$1;-><init>(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$focusTarget$2$1$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$focusTarget$2$1$1;->invoke()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$focusTarget$2;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$focusTarget$2;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt$focusTarget$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusModifierKt$focusTarget$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusModifierKt;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusModifierKt;->focusTarget(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusModifierKt;->focusTarget(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/focus/FocusModifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusModifierKt;->getModifierLocalParentFocusModifier()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$exit$1;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl$exit$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->getCanFocus()Z
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setCanFocus(Z)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setDown(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setEnd(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setEnter(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setExit(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setLeft(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setNext(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setPrevious(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setRight(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setStart(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesImpl;->setUp(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$ModifierLocalFocusProperties$1;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$ModifierLocalFocusProperties$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$ModifierLocalFocusProperties$1;->invoke()Landroidx/compose/ui/focus/FocusPropertiesModifier;
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$ModifierLocalFocusProperties$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$clear$1;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$clear$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$clear$2;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$clear$2;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$refreshFocusProperties$1;-><init>(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$refreshFocusProperties$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt$refreshFocusProperties$1;->invoke()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt;->clear(Landroidx/compose/ui/focus/FocusProperties;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt;->focusProperties(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt;->getModifierLocalFocusProperties()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt;->refreshFocusProperties(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesKt;->setUpdatedProperties(Landroidx/compose/ui/focus/FocusModifier;Landroidx/compose/ui/focus/FocusProperties;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;->calculateProperties(Landroidx/compose/ui/focus/FocusProperties;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;->getParent()Landroidx/compose/ui/focus/FocusPropertiesModifier;
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;->getValue()Landroidx/compose/ui/focus/FocusPropertiesModifier;
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/focus/FocusPropertiesModifier;->setParent(Landroidx/compose/ui/focus/FocusPropertiesModifier;)V
+HSPLandroidx/compose/ui/focus/FocusRequester$Companion;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusRequester$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/focus/FocusRequester$Companion;->getDefault()Landroidx/compose/ui/focus/FocusRequester;
+HSPLandroidx/compose/ui/focus/FocusRequester;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusRequester;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusRequester;->access$getDefault$cp()Landroidx/compose/ui/focus/FocusRequester;
+HSPLandroidx/compose/ui/focus/FocusRequester;->getFocusRequesterModifierLocals$ui_release()Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt$ModifierLocalFocusRequester$1;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt$ModifierLocalFocusRequester$1;-><init>()V
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt$ModifierLocalFocusRequester$1;->invoke()Landroidx/compose/ui/focus/FocusRequesterModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt$ModifierLocalFocusRequester$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt$focusRequester$2;-><init>(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt$focusRequester$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt$focusRequester$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt;->focusRequester(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/focus/FocusRequester;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierKt;->getModifierLocalFocusRequester()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierLocal;-><init>(Landroidx/compose/ui/focus/FocusRequester;)V
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierLocal;->addFocusModifier(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierLocal;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierLocal;->getValue()Landroidx/compose/ui/focus/FocusRequesterModifierLocal;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierLocal;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/focus/FocusRequesterModifierLocal;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/focus/FocusStateImpl$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusStateImpl;->$values()[Landroidx/compose/ui/focus/FocusStateImpl;
+HSPLandroidx/compose/ui/focus/FocusStateImpl;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusStateImpl;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/focus/FocusStateImpl;->isFocused()Z
+HSPLandroidx/compose/ui/focus/FocusStateImpl;->values()[Landroidx/compose/ui/focus/FocusStateImpl;
+HSPLandroidx/compose/ui/focus/FocusTransactionsKt$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->activateNode(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->deactivateNode(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/focus/FocusTransactionsKt;->sendOnFocusEvent(Landroidx/compose/ui/focus/FocusModifier;)V
+HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;-><init>()V
+HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/geometry/CornerRadius$Companion;->getZero-kKHJgLs()J
+HSPLandroidx/compose/ui/geometry/CornerRadius;-><clinit>()V
+HSPLandroidx/compose/ui/geometry/CornerRadius;->access$getZero$cp()J
+HSPLandroidx/compose/ui/geometry/CornerRadius;->constructor-impl(J)J
+HSPLandroidx/compose/ui/geometry/CornerRadius;->getX-impl(J)F
+HSPLandroidx/compose/ui/geometry/CornerRadius;->getY-impl(J)F
+HSPLandroidx/compose/ui/geometry/CornerRadiusKt;->CornerRadius$default(FFILjava/lang/Object;)J
+HSPLandroidx/compose/ui/geometry/CornerRadiusKt;->CornerRadius(FF)J
+HSPLandroidx/compose/ui/geometry/Offset$Companion;-><init>()V
+HSPLandroidx/compose/ui/geometry/Offset$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/geometry/Offset$Companion;->getInfinite-F1C5BW0()J
+HSPLandroidx/compose/ui/geometry/Offset$Companion;->getUnspecified-F1C5BW0()J
+HSPLandroidx/compose/ui/geometry/Offset$Companion;->getZero-F1C5BW0()J
+HSPLandroidx/compose/ui/geometry/Offset;-><clinit>()V
+HSPLandroidx/compose/ui/geometry/Offset;-><init>(J)V
+HSPLandroidx/compose/ui/geometry/Offset;->access$getInfinite$cp()J
+HSPLandroidx/compose/ui/geometry/Offset;->access$getUnspecified$cp()J
+HSPLandroidx/compose/ui/geometry/Offset;->access$getZero$cp()J
+HSPLandroidx/compose/ui/geometry/Offset;->box-impl(J)Landroidx/compose/ui/geometry/Offset;
+HSPLandroidx/compose/ui/geometry/Offset;->constructor-impl(J)J
+HSPLandroidx/compose/ui/geometry/Offset;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/geometry/Offset;->equals-impl(JLjava/lang/Object;)Z
+HSPLandroidx/compose/ui/geometry/Offset;->getDistance-impl(J)F
+HSPLandroidx/compose/ui/geometry/Offset;->getX-impl(J)F
+HSPLandroidx/compose/ui/geometry/Offset;->getY-impl(J)F
+HSPLandroidx/compose/ui/geometry/Offset;->unbox-impl()J
+HSPLandroidx/compose/ui/geometry/OffsetKt;->Offset(FF)J
+HSPLandroidx/compose/ui/geometry/Rect$Companion;-><init>()V
+HSPLandroidx/compose/ui/geometry/Rect$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/geometry/Rect$Companion;->getZero()Landroidx/compose/ui/geometry/Rect;
+HSPLandroidx/compose/ui/geometry/Rect;-><clinit>()V
+HSPLandroidx/compose/ui/geometry/Rect;-><init>(FFFF)V
+HSPLandroidx/compose/ui/geometry/Rect;->access$getZero$cp()Landroidx/compose/ui/geometry/Rect;
+HSPLandroidx/compose/ui/geometry/Rect;->getBottom()F
+HSPLandroidx/compose/ui/geometry/Rect;->getLeft()F
+HSPLandroidx/compose/ui/geometry/Rect;->getRight()F
+HSPLandroidx/compose/ui/geometry/Rect;->getTop()F
+HSPLandroidx/compose/ui/geometry/RectKt;->Rect-tz77jQw(JJ)Landroidx/compose/ui/geometry/Rect;
+HSPLandroidx/compose/ui/geometry/RoundRect$Companion;-><init>()V
+HSPLandroidx/compose/ui/geometry/RoundRect$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/geometry/RoundRect;-><clinit>()V
+HSPLandroidx/compose/ui/geometry/RoundRect;-><init>(FFFFJJJJ)V
+HSPLandroidx/compose/ui/geometry/RoundRect;-><init>(FFFFJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/geometry/RoundRect;->getBottom()F
+HSPLandroidx/compose/ui/geometry/RoundRect;->getBottomLeftCornerRadius-kKHJgLs()J
+HSPLandroidx/compose/ui/geometry/RoundRect;->getBottomRightCornerRadius-kKHJgLs()J
+HSPLandroidx/compose/ui/geometry/RoundRect;->getHeight()F
+HSPLandroidx/compose/ui/geometry/RoundRect;->getLeft()F
+HSPLandroidx/compose/ui/geometry/RoundRect;->getRight()F
+HSPLandroidx/compose/ui/geometry/RoundRect;->getTop()F
+HSPLandroidx/compose/ui/geometry/RoundRect;->getTopLeftCornerRadius-kKHJgLs()J
+HSPLandroidx/compose/ui/geometry/RoundRect;->getTopRightCornerRadius-kKHJgLs()J
+HSPLandroidx/compose/ui/geometry/RoundRect;->getWidth()F
+HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect(FFFFFF)Landroidx/compose/ui/geometry/RoundRect;
+HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect-ZAM2FJo(Landroidx/compose/ui/geometry/Rect;JJJJ)Landroidx/compose/ui/geometry/RoundRect;
+HSPLandroidx/compose/ui/geometry/RoundRectKt;->RoundRect-gG7oq9Y(FFFFJ)Landroidx/compose/ui/geometry/RoundRect;
+HSPLandroidx/compose/ui/geometry/RoundRectKt;->isSimple(Landroidx/compose/ui/geometry/RoundRect;)Z
+HSPLandroidx/compose/ui/geometry/Size$Companion;-><init>()V
+HSPLandroidx/compose/ui/geometry/Size$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/geometry/Size$Companion;->getUnspecified-NH-jbRc()J
+HSPLandroidx/compose/ui/geometry/Size$Companion;->getZero-NH-jbRc()J
+HSPLandroidx/compose/ui/geometry/Size;-><clinit>()V
+HSPLandroidx/compose/ui/geometry/Size;-><init>(J)V
+HSPLandroidx/compose/ui/geometry/Size;->access$getUnspecified$cp()J
+HSPLandroidx/compose/ui/geometry/Size;->access$getZero$cp()J
+HSPLandroidx/compose/ui/geometry/Size;->box-impl(J)Landroidx/compose/ui/geometry/Size;
+HSPLandroidx/compose/ui/geometry/Size;->constructor-impl(J)J
+HSPLandroidx/compose/ui/geometry/Size;->equals-impl(JLjava/lang/Object;)Z
+HSPLandroidx/compose/ui/geometry/Size;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/geometry/Size;->getHeight-impl(J)F
+HSPLandroidx/compose/ui/geometry/Size;->getMinDimension-impl(J)F
+HSPLandroidx/compose/ui/geometry/Size;->getWidth-impl(J)F
+HSPLandroidx/compose/ui/geometry/Size;->unbox-impl()J
+HSPLandroidx/compose/ui/geometry/SizeKt;->Size(FF)J
+HSPLandroidx/compose/ui/geometry/SizeKt;->toRect-uvyYCjk(J)Landroidx/compose/ui/geometry/Rect;
+HSPLandroidx/compose/ui/graphics/AndroidBlendMode_androidKt;->toAndroidBlendMode-s9anfk8(I)Landroid/graphics/BlendMode;
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;-><init>()V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->disableZ()V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawImageRect-HPBpro0(Landroidx/compose/ui/graphics/ImageBitmap;JJJJLandroidx/compose/ui/graphics/Paint;)V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawPath(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Paint;)V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawRect(FFFFLandroidx/compose/ui/graphics/Paint;)V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->drawRoundRect(FFFFFFLandroidx/compose/ui/graphics/Paint;)V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->enableZ()V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->getInternalCanvas()Landroid/graphics/Canvas;
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->restore()V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->save()V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->setInternalCanvas(Landroid/graphics/Canvas;)V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas;->translate(FF)V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->access$getEmptyCanvas$p()Landroid/graphics/Canvas;
+HSPLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->getNativeCanvas(Landroidx/compose/ui/graphics/Canvas;)Landroid/graphics/Canvas;
+HSPLandroidx/compose/ui/graphics/AndroidColorFilter_androidKt;->actualTintColorFilter-xETnrds(JI)Landroidx/compose/ui/graphics/ColorFilter;
+HSPLandroidx/compose/ui/graphics/AndroidColorFilter_androidKt;->asAndroidColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)Landroid/graphics/ColorFilter;
+HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;-><init>(Landroid/graphics/Bitmap;)V
+HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getBitmap$ui_graphics_release()Landroid/graphics/Bitmap;
+HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getHeight()I
+HSPLandroidx/compose/ui/graphics/AndroidImageBitmap;->getWidth()I
+HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->asAndroidBitmap(Landroidx/compose/ui/graphics/ImageBitmap;)Landroid/graphics/Bitmap;
+HSPLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->asImageBitmap(Landroid/graphics/Bitmap;)Landroidx/compose/ui/graphics/ImageBitmap;
+HSPLandroidx/compose/ui/graphics/AndroidPaint;-><init>()V
+HSPLandroidx/compose/ui/graphics/AndroidPaint;-><init>(Landroid/graphics/Paint;)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->asFrameworkPaint()Landroid/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->getAlpha()F
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->getBlendMode-0nO6VwU()I
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->getColor-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->getColorFilter()Landroidx/compose/ui/graphics/ColorFilter;
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->getFilterQuality-f-v9h1I()I
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->getShader()Landroid/graphics/Shader;
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->setAlpha(F)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->setColor-8_81llA(J)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->setColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->setShader(Landroid/graphics/Shader;)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->setStrokeWidth(F)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint;->setStyle-k9PVt8s(I)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->Paint()Landroidx/compose/ui/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeAlpha(Landroid/graphics/Paint;)F
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeColor(Landroid/graphics/Paint;)J
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->getNativeFilterQuality(Landroid/graphics/Paint;)I
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->makeNativePaint()Landroid/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeAlpha(Landroid/graphics/Paint;F)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeColor-4WTKRHQ(Landroid/graphics/Paint;J)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeColorFilter(Landroid/graphics/Paint;Landroidx/compose/ui/graphics/ColorFilter;)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeShader(Landroid/graphics/Paint;Landroid/graphics/Shader;)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeStrokeWidth(Landroid/graphics/Paint;F)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeStyle--5YerkU(Landroid/graphics/Paint;I)V
+HSPLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->toComposePaint(Landroid/graphics/Paint;)Landroidx/compose/ui/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/AndroidPath;-><init>(Landroid/graphics/Path;)V
+HSPLandroidx/compose/ui/graphics/AndroidPath;-><init>(Landroid/graphics/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/AndroidPath;->addRoundRect(Landroidx/compose/ui/geometry/RoundRect;)V
+HSPLandroidx/compose/ui/graphics/AndroidPath;->getInternalPath()Landroid/graphics/Path;
+HSPLandroidx/compose/ui/graphics/AndroidPath;->reset()V
+HSPLandroidx/compose/ui/graphics/AndroidPath_androidKt;->Path()Landroidx/compose/ui/graphics/Path;
+HSPLandroidx/compose/ui/graphics/BlendMode$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/BlendMode$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getClear-0nO6VwU()I
+HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getDst-0nO6VwU()I
+HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getDstOver-0nO6VwU()I
+HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrc-0nO6VwU()I
+HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrcIn-0nO6VwU()I
+HSPLandroidx/compose/ui/graphics/BlendMode$Companion;->getSrcOver-0nO6VwU()I
+HSPLandroidx/compose/ui/graphics/BlendMode;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/BlendMode;->access$getClear$cp()I
+HSPLandroidx/compose/ui/graphics/BlendMode;->access$getDst$cp()I
+HSPLandroidx/compose/ui/graphics/BlendMode;->access$getDstOver$cp()I
+HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrc$cp()I
+HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrcIn$cp()I
+HSPLandroidx/compose/ui/graphics/BlendMode;->access$getSrcOver$cp()I
+HSPLandroidx/compose/ui/graphics/BlendMode;->constructor-impl(I)I
+HSPLandroidx/compose/ui/graphics/BlendMode;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;-><init>()V
+HSPLandroidx/compose/ui/graphics/BlendModeColorFilterHelper;->BlendModeColorFilter-xETnrds(JI)Landroid/graphics/BlendModeColorFilter;
+HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;)V
+HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->access$getLayerBlock$p(Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/graphics/BlockGraphicsLayerModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/graphics/CanvasHolder;-><init>()V
+HSPLandroidx/compose/ui/graphics/CanvasHolder;->getAndroidCanvas()Landroidx/compose/ui/graphics/AndroidCanvas;
+HSPLandroidx/compose/ui/graphics/CanvasUtils;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/CanvasUtils;-><init>()V
+HSPLandroidx/compose/ui/graphics/CanvasUtils;->enableZ(Landroid/graphics/Canvas;Z)V
+HSPLandroidx/compose/ui/graphics/CanvasZHelper;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/CanvasZHelper;-><init>()V
+HSPLandroidx/compose/ui/graphics/CanvasZHelper;->enableZ(Landroid/graphics/Canvas;Z)V
+HSPLandroidx/compose/ui/graphics/Color$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/Color$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/Color$Companion;->getBlack-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/Color$Companion;->getBlue-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/Color$Companion;->getLightGray-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/Color$Companion;->getRed-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/Color$Companion;->getTransparent-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/Color$Companion;->getUnspecified-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/Color;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/Color;-><init>(J)V
+HSPLandroidx/compose/ui/graphics/Color;->access$getBlack$cp()J
+HSPLandroidx/compose/ui/graphics/Color;->access$getBlue$cp()J
+HSPLandroidx/compose/ui/graphics/Color;->access$getLightGray$cp()J
+HSPLandroidx/compose/ui/graphics/Color;->access$getRed$cp()J
+HSPLandroidx/compose/ui/graphics/Color;->access$getTransparent$cp()J
+HSPLandroidx/compose/ui/graphics/Color;->access$getUnspecified$cp()J
+HSPLandroidx/compose/ui/graphics/Color;->box-impl(J)Landroidx/compose/ui/graphics/Color;
+HSPLandroidx/compose/ui/graphics/Color;->constructor-impl(J)J
+HSPLandroidx/compose/ui/graphics/Color;->convert-vNxB06k(JLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J
+HSPLandroidx/compose/ui/graphics/Color;->copy-wmQWz5c$default(JFFFFILjava/lang/Object;)J
+HSPLandroidx/compose/ui/graphics/Color;->copy-wmQWz5c(JFFFF)J
+HSPLandroidx/compose/ui/graphics/Color;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/graphics/Color;->equals-impl(JLjava/lang/Object;)Z
+HSPLandroidx/compose/ui/graphics/Color;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/graphics/Color;->getAlpha-impl(J)F
+HSPLandroidx/compose/ui/graphics/Color;->getBlue-impl(J)F
+HSPLandroidx/compose/ui/graphics/Color;->getColorSpace-impl(J)Landroidx/compose/ui/graphics/colorspace/ColorSpace;
+HSPLandroidx/compose/ui/graphics/Color;->getGreen-impl(J)F
+HSPLandroidx/compose/ui/graphics/Color;->getRed-impl(J)F
+HSPLandroidx/compose/ui/graphics/Color;->unbox-impl()J
+HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->tint-xETnrds$default(Landroidx/compose/ui/graphics/ColorFilter$Companion;JIILjava/lang/Object;)Landroidx/compose/ui/graphics/ColorFilter;
+HSPLandroidx/compose/ui/graphics/ColorFilter$Companion;->tint-xETnrds(JI)Landroidx/compose/ui/graphics/ColorFilter;
+HSPLandroidx/compose/ui/graphics/ColorFilter;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/ColorFilter;-><init>(Landroid/graphics/ColorFilter;)V
+HSPLandroidx/compose/ui/graphics/ColorFilter;->getNativeColorFilter$ui_graphics_release()Landroid/graphics/ColorFilter;
+HSPLandroidx/compose/ui/graphics/ColorKt;->Color$default(IIIIILjava/lang/Object;)J
+HSPLandroidx/compose/ui/graphics/ColorKt;->Color(FFFFLandroidx/compose/ui/graphics/colorspace/ColorSpace;)J
+HSPLandroidx/compose/ui/graphics/ColorKt;->Color(I)J
+HSPLandroidx/compose/ui/graphics/ColorKt;->Color(IIII)J
+HSPLandroidx/compose/ui/graphics/ColorKt;->Color(J)J
+HSPLandroidx/compose/ui/graphics/ColorKt;->compositeOver--OWjLjI(JJ)J
+HSPLandroidx/compose/ui/graphics/ColorKt;->toArgb-8_81llA(J)I
+HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getAuto--NrFUSI()I
+HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getModulateAlpha--NrFUSI()I
+HSPLandroidx/compose/ui/graphics/CompositingStrategy$Companion;->getOffscreen--NrFUSI()I
+HSPLandroidx/compose/ui/graphics/CompositingStrategy;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getAuto$cp()I
+HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getModulateAlpha$cp()I
+HSPLandroidx/compose/ui/graphics/CompositingStrategy;->access$getOffscreen$cp()I
+HSPLandroidx/compose/ui/graphics/CompositingStrategy;->constructor-impl(I)I
+HSPLandroidx/compose/ui/graphics/CompositingStrategy;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/FilterQuality$Companion;->getLow-f-v9h1I()I
+HSPLandroidx/compose/ui/graphics/FilterQuality;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/FilterQuality;->access$getLow$cp()I
+HSPLandroidx/compose/ui/graphics/FilterQuality;->constructor-impl(I)I
+HSPLandroidx/compose/ui/graphics/FilterQuality;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/graphics/Float16$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/Float16$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/Float16$Companion;->access$floatToHalf(Landroidx/compose/ui/graphics/Float16$Companion;F)S
+HSPLandroidx/compose/ui/graphics/Float16$Companion;->floatToHalf(F)S
+HSPLandroidx/compose/ui/graphics/Float16;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/Float16;->constructor-impl(F)S
+HSPLandroidx/compose/ui/graphics/Float16;->constructor-impl(S)S
+HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer-Ap8cVGQ$default(Landroidx/compose/ui/Modifier;FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJIILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->graphicsLayer-Ap8cVGQ(Landroidx/compose/ui/Modifier;FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJI)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/graphics/GraphicsLayerModifierKt;->toolingGraphicsLayer(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/graphics/GraphicsLayerScopeKt;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/GraphicsLayerScopeKt;->getDefaultShadowColor()J
+HSPLandroidx/compose/ui/graphics/Matrix$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/Matrix$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/Matrix;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/Matrix;->constructor-impl$default([FILkotlin/jvm/internal/DefaultConstructorMarker;)[F
+HSPLandroidx/compose/ui/graphics/Matrix;->constructor-impl([F)[F
+HSPLandroidx/compose/ui/graphics/Outline$Rounded;-><init>(Landroidx/compose/ui/geometry/RoundRect;)V
+HSPLandroidx/compose/ui/graphics/Outline$Rounded;->getRoundRect()Landroidx/compose/ui/geometry/RoundRect;
+HSPLandroidx/compose/ui/graphics/Outline$Rounded;->getRoundRectPath$ui_graphics_release()Landroidx/compose/ui/graphics/Path;
+HSPLandroidx/compose/ui/graphics/Outline;-><init>()V
+HSPLandroidx/compose/ui/graphics/Outline;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/OutlineKt;->access$hasSameCornerRadius(Landroidx/compose/ui/geometry/RoundRect;)Z
+HSPLandroidx/compose/ui/graphics/OutlineKt;->drawOutline-wDX37Ww$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Outline;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V
+HSPLandroidx/compose/ui/graphics/OutlineKt;->drawOutline-wDX37Ww(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Outline;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V
+HSPLandroidx/compose/ui/graphics/OutlineKt;->hasSameCornerRadius(Landroidx/compose/ui/geometry/RoundRect;)Z
+HSPLandroidx/compose/ui/graphics/OutlineKt;->size(Landroidx/compose/ui/geometry/RoundRect;)J
+HSPLandroidx/compose/ui/graphics/OutlineKt;->topLeft(Landroidx/compose/ui/geometry/RoundRect;)J
+HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->getFill-TiuSbCo()I
+HSPLandroidx/compose/ui/graphics/PaintingStyle$Companion;->getStroke-TiuSbCo()I
+HSPLandroidx/compose/ui/graphics/PaintingStyle;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/PaintingStyle;->access$getFill$cp()I
+HSPLandroidx/compose/ui/graphics/PaintingStyle;->access$getStroke$cp()I
+HSPLandroidx/compose/ui/graphics/PaintingStyle;->constructor-impl(I)I
+HSPLandroidx/compose/ui/graphics/PaintingStyle;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/graphics/RectangleShapeKt$RectangleShape$1;-><init>()V
+HSPLandroidx/compose/ui/graphics/RectangleShapeKt;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/RectangleShapeKt;->getRectangleShape()Landroidx/compose/ui/graphics/Shape;
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;-><init>()V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getAlpha()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getAmbientShadowColor-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getCameraDistance()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getClip()Z
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getCompositingStrategy--NrFUSI()I
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getDensity()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRenderEffect()Landroidx/compose/ui/graphics/RenderEffect;
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationX()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationY()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getRotationZ()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getScaleX()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getScaleY()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getShadowElevation()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getShape()Landroidx/compose/ui/graphics/Shape;
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getSpotShadowColor-0d7_KjU()J
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTransformOrigin-SzJe1aQ()J
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTranslationX()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->getTranslationY()F
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->reset()V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setAlpha(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setAmbientShadowColor-8_81llA(J)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setCameraDistance(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setClip(Z)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setCompositingStrategy-aDBOjCE(I)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setGraphicsDensity$ui_release(Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRenderEffect(Landroidx/compose/ui/graphics/RenderEffect;)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationX(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationY(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setRotationZ(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setScaleX(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setScaleY(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setShadowElevation(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setShape(Landroidx/compose/ui/graphics/Shape;)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setSize-uvyYCjk(J)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setSpotShadowColor-8_81llA(J)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTransformOrigin-__ExYCQ(J)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTranslationX(F)V
+HSPLandroidx/compose/ui/graphics/ReusableGraphicsLayerScope;->setTranslationY(F)V
+HSPLandroidx/compose/ui/graphics/Shadow$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/Shadow$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/Shadow$Companion;->getNone()Landroidx/compose/ui/graphics/Shadow;
+HSPLandroidx/compose/ui/graphics/Shadow;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/Shadow;-><init>(JJF)V
+HSPLandroidx/compose/ui/graphics/Shadow;-><init>(JJFILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/Shadow;-><init>(JJFLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/Shadow;->access$getNone$cp()Landroidx/compose/ui/graphics/Shadow;
+HSPLandroidx/compose/ui/graphics/Shadow;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;-><init>(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)V
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)V
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;-><init>(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;-><init>(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getAlpha$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getAmbientShadowColor$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)J
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getCameraDistance$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getClip$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)Z
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getCompositingStrategy$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)I
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getLayerBlock$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getRenderEffect$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)Landroidx/compose/ui/graphics/RenderEffect;
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getRotationX$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getRotationY$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getRotationZ$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getScaleX$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getScaleY$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getShadowElevation$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getShape$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)Landroidx/compose/ui/graphics/Shape;
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getSpotShadowColor$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)J
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getTransformOrigin$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)J
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getTranslationX$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->access$getTranslationY$p(Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;)F
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/TransformOrigin$Companion;->getCenter-SzJe1aQ()J
+HSPLandroidx/compose/ui/graphics/TransformOrigin;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/TransformOrigin;->access$getCenter$cp()J
+HSPLandroidx/compose/ui/graphics/TransformOrigin;->constructor-impl(J)J
+HSPLandroidx/compose/ui/graphics/TransformOrigin;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/graphics/TransformOrigin;->getPivotFractionX-impl(J)F
+HSPLandroidx/compose/ui/graphics/TransformOrigin;->getPivotFractionY-impl(J)F
+HSPLandroidx/compose/ui/graphics/TransformOriginKt;->TransformOrigin(FF)J
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Bradford$1;-><init>([F)V
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Ciecat02$1;-><init>([F)V
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion$VonKries$1;-><init>([F)V
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation$Companion;->getBradford()Landroidx/compose/ui/graphics/colorspace/Adaptation;
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;-><init>([F)V
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;-><init>([FLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->access$getBradford$cp()Landroidx/compose/ui/graphics/colorspace/Adaptation;
+HSPLandroidx/compose/ui/graphics/colorspace/Adaptation;->getTransform$ui_graphics_release()[F
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getLab-xdoWZVw()J
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getRgb-xdoWZVw()J
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel$Companion;->getXyz-xdoWZVw()J
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getLab$cp()J
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getRgb$cp()J
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->access$getXyz$cp()J
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->constructor-impl(J)J
+HSPLandroidx/compose/ui/graphics/colorspace/ColorModel;->getComponentCount-impl(J)I
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;-><init>(Ljava/lang/String;JI)V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;-><init>(Ljava/lang/String;JILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getComponentCount()I
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getId$ui_graphics_release()I
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->chromaticAdaptation([F[F[F)[F
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->compare(Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/WhitePoint;)Z
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->compare([F[F)Z
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->inverse3x3([F)[F
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3([F[F)[F
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Diag([F[F)[F
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->mul3x3Float3([F[F)[F
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->rcpResponse(DDDDDD)D
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->response(DDDDDD)D
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$2;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$2;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getColorSpacesArray$ui_graphics_release()[Landroidx/compose/ui/graphics/colorspace/ColorSpace;
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getNtsc1953Primaries$ui_graphics_release()[F
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getSrgb()Landroidx/compose/ui/graphics/colorspace/Rgb;
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getSrgbPrimaries$ui_graphics_release()[F
+HSPLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getUnspecified$ui_graphics_release()Landroidx/compose/ui/graphics/colorspace/Rgb;
+HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getC()Landroidx/compose/ui/graphics/colorspace/WhitePoint;
+HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD50()Landroidx/compose/ui/graphics/colorspace/WhitePoint;
+HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD60()Landroidx/compose/ui/graphics/colorspace/WhitePoint;
+HSPLandroidx/compose/ui/graphics/colorspace/Illuminant;->getD65()Landroidx/compose/ui/graphics/colorspace/WhitePoint;
+HSPLandroidx/compose/ui/graphics/colorspace/Lab$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Lab$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Lab;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Lab;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/graphics/colorspace/Oklab$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Oklab$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Oklab;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Oklab;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$1;-><init>(Landroidx/compose/ui/graphics/colorspace/TransferParameters;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$1;->invoke(D)Ljava/lang/Double;
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$3;-><init>(Landroidx/compose/ui/graphics/colorspace/TransferParameters;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$3;->invoke(D)Ljava/lang/Double;
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$5;-><init>(D)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$6;-><init>(D)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion$DoubleIdentity$1;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion$DoubleIdentity$1;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion$DoubleIdentity$1;->invoke(D)Ljava/lang/Double;
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion$DoubleIdentity$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$computeXYZMatrix(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)[F
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$isSrgb(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FFI)Z
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$isWideGamut(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[FFF)Z
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->access$xyPrimaries(Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;[F)[F
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->area([F)F
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->compare(DLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Z
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->computeXYZMatrix([FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)[F
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->contains([F[F)Z
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->cross(FFFF)F
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->isSrgb([FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FFI)Z
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->isWideGamut([FFF)Z
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$Companion;->xyPrimaries([F)[F
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$eotf$1;-><init>(Landroidx/compose/ui/graphics/colorspace/Rgb;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb$oetf$1;-><init>(Landroidx/compose/ui/graphics/colorspace/Rgb;)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;-><init>(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;DFFI)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;-><init>(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/TransferParameters;I)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;-><init>(Ljava/lang/String;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;[FLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;FFLandroidx/compose/ui/graphics/colorspace/TransferParameters;I)V
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getEotfOrig$ui_graphics_release()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getMaxValue(I)F
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getMinValue(I)F
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->getOetfOrig$ui_graphics_release()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/graphics/colorspace/Rgb;->isSrgb()Z
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;-><init>(DDDDDDD)V
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;-><init>(DDDDDDDILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getA()D
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getB()D
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getC()D
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getD()D
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getE()D
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getF()D
+HSPLandroidx/compose/ui/graphics/colorspace/TransferParameters;->getGamma()D
+HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;-><init>(FF)V
+HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->getX()F
+HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->getY()F
+HSPLandroidx/compose/ui/graphics/colorspace/WhitePoint;->toXyz$ui_graphics_release()[F
+HSPLandroidx/compose/ui/graphics/colorspace/Xyz;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;-><init>(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;J)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;-><init>(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;-><init>(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/graphics/Canvas;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component1()Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component2()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component3()Landroidx/compose/ui/graphics/Canvas;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->component4-NH-jbRc()J
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getCanvas()Landroidx/compose/ui/graphics/Canvas;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getDensity()Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->getSize-NH-jbRc()J
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setCanvas(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setDensity(Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;->setSize-uvyYCjk(J)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;-><init>(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getCanvas()Landroidx/compose/ui/graphics/Canvas;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getSize-NH-jbRc()J
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->getTransform()Landroidx/compose/ui/graphics/drawscope/DrawTransform;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;->setSize-uvyYCjk(J)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;-><init>()V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-2qPWKa0$default(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;JLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)Landroidx/compose/ui/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-2qPWKa0(JLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;II)Landroidx/compose/ui/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-swdJneE(Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;II)Landroidx/compose/ui/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawImage-AZ2fEMs(Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;II)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawPath-LG529CI(Landroidx/compose/ui/graphics/Path;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawRect-n-J9OG0(JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawRoundRect-u-Aw5IA(JJJJLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;I)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDensity()F
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDrawContext()Landroidx/compose/ui/graphics/drawscope/DrawContext;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getDrawParams()Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->modulate-5vOe2sY(JF)J
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->obtainFillPaint()Landroidx/compose/ui/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->selectPaint(Landroidx/compose/ui/graphics/drawscope/DrawStyle;)Landroidx/compose/ui/graphics/Paint;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;-><init>(Landroidx/compose/ui/graphics/drawscope/DrawContext;)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->getSize-NH-jbRc()J
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->inset(FFFF)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->translate(FF)V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->access$asDrawTransform(Landroidx/compose/ui/graphics/drawscope/DrawContext;)Landroidx/compose/ui/graphics/drawscope/DrawTransform;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->access$getDefaultDensity$p()Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;->asDrawTransform(Landroidx/compose/ui/graphics/drawscope/DrawContext;)Landroidx/compose/ui/graphics/drawscope/DrawTransform;
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;-><init>()V
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->getDefaultBlendMode-0nO6VwU()I
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope$Companion;->getDefaultFilterQuality-f-v9h1I()I
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawImage-AZ2fEMs$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)V
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawRect-n-J9OG0$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->getSize-NH-jbRc()J
+HSPLandroidx/compose/ui/graphics/drawscope/DrawScope;->offsetSize-PENXr5M(JJ)J
+HSPLandroidx/compose/ui/graphics/drawscope/DrawStyle;-><init>()V
+HSPLandroidx/compose/ui/graphics/drawscope/DrawStyle;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/drawscope/EmptyCanvas;-><init>()V
+HSPLandroidx/compose/ui/graphics/drawscope/Fill;-><clinit>()V
+HSPLandroidx/compose/ui/graphics/drawscope/Fill;-><init>()V
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;-><init>(Landroidx/compose/ui/graphics/ImageBitmap;JJ)V
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;-><init>(Landroidx/compose/ui/graphics/ImageBitmap;JJILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;-><init>(Landroidx/compose/ui/graphics/ImageBitmap;JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;->applyColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)Z
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;->getIntrinsicSize-NH-jbRc()J
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;->onDraw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+HSPLandroidx/compose/ui/graphics/painter/BitmapPainter;->validateSize-N5eqBDc(JJ)J
+HSPLandroidx/compose/ui/graphics/painter/Painter$drawLambda$1;-><init>(Landroidx/compose/ui/graphics/painter/Painter;)V
+HSPLandroidx/compose/ui/graphics/painter/Painter;-><init>()V
+HSPLandroidx/compose/ui/graphics/painter/Painter;->configureAlpha(F)V
+HSPLandroidx/compose/ui/graphics/painter/Painter;->configureColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)V
+HSPLandroidx/compose/ui/graphics/painter/Painter;->configureLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/ui/graphics/painter/Painter;->draw-x_KDEd0(Landroidx/compose/ui/graphics/drawscope/DrawScope;JFLandroidx/compose/ui/graphics/ColorFilter;)V
+HSPLandroidx/compose/ui/hapticfeedback/PlatformHapticFeedback;-><init>(Landroid/view/View;)V
+HSPLandroidx/compose/ui/input/InputMode$Companion;-><init>()V
+HSPLandroidx/compose/ui/input/InputMode$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/input/InputMode$Companion;->getTouch-aOaMEAU()I
+HSPLandroidx/compose/ui/input/InputMode;-><clinit>()V
+HSPLandroidx/compose/ui/input/InputMode;-><init>(I)V
+HSPLandroidx/compose/ui/input/InputMode;->access$getTouch$cp()I
+HSPLandroidx/compose/ui/input/InputMode;->box-impl(I)Landroidx/compose/ui/input/InputMode;
+HSPLandroidx/compose/ui/input/InputMode;->constructor-impl(I)I
+HSPLandroidx/compose/ui/input/InputMode;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/input/InputMode;->equals-impl(ILjava/lang/Object;)Z
+HSPLandroidx/compose/ui/input/InputMode;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/input/InputMode;->unbox-impl()I
+HSPLandroidx/compose/ui/input/InputModeManagerImpl;-><init>(ILkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/input/InputModeManagerImpl;-><init>(ILkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/input/InputModeManagerImpl;->getInputMode-aOaMEAU()I
+HSPLandroidx/compose/ui/input/InputModeManagerImpl;->setInputMode-iuPiT84(I)V
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt$ModifierLocalScrollContainerInfo$1;-><clinit>()V
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt$ModifierLocalScrollContainerInfo$1;-><init>()V
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt$ModifierLocalScrollContainerInfo$1;->invoke()Landroidx/compose/ui/input/ScrollContainerInfo;
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt$ModifierLocalScrollContainerInfo$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt$consumeScrollContainerInfo$1;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt$consumeScrollContainerInfo$1;->invoke(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt$consumeScrollContainerInfo$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt;-><clinit>()V
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt;->consumeScrollContainerInfo(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/ScrollContainerInfoKt;->getModifierLocalScrollContainerInfo()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/input/focus/FocusAwareInputModifier;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/modifier/ProvidableModifierLocal;)V
+HSPLandroidx/compose/ui/input/focus/FocusAwareInputModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/input/focus/FocusAwareInputModifier;->getValue()Landroidx/compose/ui/input/focus/FocusAwareInputModifier;
+HSPLandroidx/compose/ui/input/focus/FocusAwareInputModifier;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/focus/FocusAwareInputModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/input/key/KeyInputModifier;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/input/key/KeyInputModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/input/key/KeyInputModifier;->getValue()Landroidx/compose/ui/input/key/KeyInputModifier;
+HSPLandroidx/compose/ui/input/key/KeyInputModifier;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/key/KeyInputModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/input/key/KeyInputModifier;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/ui/input/key/KeyInputModifierKt$ModifierLocalKeyInput$1;-><clinit>()V
+HSPLandroidx/compose/ui/input/key/KeyInputModifierKt$ModifierLocalKeyInput$1;-><init>()V
+HSPLandroidx/compose/ui/input/key/KeyInputModifierKt$ModifierLocalKeyInput$1;->invoke()Landroidx/compose/ui/input/key/KeyInputModifier;
+HSPLandroidx/compose/ui/input/key/KeyInputModifierKt$ModifierLocalKeyInput$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/key/KeyInputModifierKt;-><clinit>()V
+HSPLandroidx/compose/ui/input/key/KeyInputModifierKt;->getModifierLocalKeyInput()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/input/key/KeyInputModifierKt;->onKeyEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;-><clinit>()V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;-><init>()V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setCalculateNestedScrollScope$ui_release(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setOriginNestedScrollScope$ui_release(Lkotlinx/coroutines/CoroutineScope;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->setParent$ui_release(Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt$nestedScroll$2;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt$nestedScroll$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt$nestedScroll$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt;->nestedScroll$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;ILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt;->nestedScroll(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$1;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->getParent()Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->setParent(Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;)V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocalKt$ModifierLocalNestedScroll$1;-><clinit>()V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocalKt$ModifierLocalNestedScroll$1;-><init>()V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocalKt$ModifierLocalNestedScroll$1;->invoke()Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocalKt$ModifierLocalNestedScroll$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocalKt;-><clinit>()V
+HSPLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocalKt;->getModifierLocalNestedScroll()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/input/pointer/AwaitPointerEventScope;->awaitPointerEvent$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/HitPathTracker;-><init>(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/ui/input/pointer/MotionEventAdapter;-><init>()V
+HSPLandroidx/compose/ui/input/pointer/NodeParent;-><init>()V
+HSPLandroidx/compose/ui/input/pointer/PointerButtons;->constructor-impl(I)I
+HSPLandroidx/compose/ui/input/pointer/PointerEvent;-><clinit>()V
+HSPLandroidx/compose/ui/input/pointer/PointerEvent;-><init>(Ljava/util/List;)V
+HSPLandroidx/compose/ui/input/pointer/PointerEvent;-><init>(Ljava/util/List;Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V
+HSPLandroidx/compose/ui/input/pointer/PointerEvent;->calculatePointerEventType-7fucELk()I
+HSPLandroidx/compose/ui/input/pointer/PointerEvent;->getMotionEvent$ui_release()Landroid/view/MotionEvent;
+HSPLandroidx/compose/ui/input/pointer/PointerEventPass;->$values()[Landroidx/compose/ui/input/pointer/PointerEventPass;
+HSPLandroidx/compose/ui/input/pointer/PointerEventPass;-><clinit>()V
+HSPLandroidx/compose/ui/input/pointer/PointerEventPass;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;-><init>()V
+HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getMove-7fucELk()I
+HSPLandroidx/compose/ui/input/pointer/PointerEventType;-><clinit>()V
+HSPLandroidx/compose/ui/input/pointer/PointerEventType;->access$getMove$cp()I
+HSPLandroidx/compose/ui/input/pointer/PointerEventType;->constructor-impl(I)I
+HSPLandroidx/compose/ui/input/pointer/PointerEvent_androidKt;->EmptyPointerKeyboardModifiers()I
+HSPLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer;-><init>()V
+HSPLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;-><clinit>()V
+HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;-><init>()V
+HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;->getSize-YbymL2g()J
+HSPLandroidx/compose/ui/input/pointer/PointerInputFilter;->setLayoutCoordinates$ui_release(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;-><init>(I)V
+HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->box-impl(I)Landroidx/compose/ui/input/pointer/PointerKeyboardModifiers;
+HSPLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->constructor-impl(I)I
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;-><init>(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->access$setAwaitPass$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;Landroidx/compose/ui/input/pointer/PointerEventPass;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->access$setPointerAwaiter$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;Lkotlinx/coroutines/CancellableContinuation;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->awaitPointerEvent(Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->cancel(Ljava/lang/Throwable;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->resumeWith(Ljava/lang/Object;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$awaitPointerEventScope$2$2;-><init>(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$awaitPointerEventScope$2$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$awaitPointerEventScope$2$2;->invoke(Ljava/lang/Throwable;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;-><init>(Landroidx/compose/ui/platform/ViewConfiguration;Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->access$getPointerHandlers$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;)Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->awaitPointerEventScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->getPointerInputFilter()Landroidx/compose/ui/input/pointer/PointerInputFilter;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->setCoroutineScope(Lkotlinx/coroutines/CoroutineScope;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$2$2$1;-><init>(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$2$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$2$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$2;-><init>(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$4$2$1;-><init>(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$4$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$4$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$4;-><init>(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$4;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$6$2$1;-><init>(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$6$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$6$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$6;-><init>([Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$6;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;-><clinit>()V
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->access$getEmptyPointerEvent$p()Landroidx/compose/ui/input/pointer/PointerEvent;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->pointerInput(Landroidx/compose/ui/Modifier;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->pointerInput(Landroidx/compose/ui/Modifier;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;->pointerInput(Landroidx/compose/ui/Modifier;[Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;-><clinit>()V
+HSPLandroidx/compose/ui/input/pointer/util/VelocityTracker;-><init>()V
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt$ModifierLocalRotaryScrollParent$1;-><clinit>()V
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt$ModifierLocalRotaryScrollParent$1;-><init>()V
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt$ModifierLocalRotaryScrollParent$1;->invoke()Landroidx/compose/ui/input/focus/FocusAwareInputModifier;
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt$ModifierLocalRotaryScrollParent$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt$focusAwareCallback$1;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt;-><clinit>()V
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt;->focusAwareCallback(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt;->getModifierLocalRotaryScrollParent()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/input/rotary/RotaryInputModifierKt;->onRotaryScrollEvent(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/layout/AlignmentLine$Companion;-><init>()V
+HSPLandroidx/compose/ui/layout/AlignmentLine$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/layout/AlignmentLine;-><clinit>()V
+HSPLandroidx/compose/ui/layout/AlignmentLine;-><init>(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/layout/AlignmentLine;-><init>(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1;-><clinit>()V
+HSPLandroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1;-><init>()V
+HSPLandroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1;-><clinit>()V
+HSPLandroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1;-><init>()V
+HSPLandroidx/compose/ui/layout/AlignmentLineKt;-><clinit>()V
+HSPLandroidx/compose/ui/layout/AlignmentLineKt;->getFirstBaseline()Landroidx/compose/ui/layout/HorizontalAlignmentLine;
+HSPLandroidx/compose/ui/layout/AlignmentLineKt;->getLastBaseline()Landroidx/compose/ui/layout/HorizontalAlignmentLine;
+HSPLandroidx/compose/ui/layout/BeyondBoundsLayoutKt$ModifierLocalBeyondBoundsLayout$1;-><clinit>()V
+HSPLandroidx/compose/ui/layout/BeyondBoundsLayoutKt$ModifierLocalBeyondBoundsLayout$1;-><init>()V
+HSPLandroidx/compose/ui/layout/BeyondBoundsLayoutKt$ModifierLocalBeyondBoundsLayout$1;->invoke()Landroidx/compose/ui/layout/BeyondBoundsLayout;
+HSPLandroidx/compose/ui/layout/BeyondBoundsLayoutKt$ModifierLocalBeyondBoundsLayout$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/BeyondBoundsLayoutKt;-><clinit>()V
+HSPLandroidx/compose/ui/layout/BeyondBoundsLayoutKt;->getModifierLocalBeyondBoundsLayout()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1;-><clinit>()V
+HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1;-><init>()V
+HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;-><clinit>()V
+HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;-><init>()V
+HSPLandroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;->getLambda-1$ui_release()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/layout/ContentScale$Companion$Crop$1;-><init>()V
+HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillBounds$1;-><init>()V
+HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillHeight$1;-><init>()V
+HSPLandroidx/compose/ui/layout/ContentScale$Companion$FillWidth$1;-><init>()V
+HSPLandroidx/compose/ui/layout/ContentScale$Companion$Fit$1;-><init>()V
+HSPLandroidx/compose/ui/layout/ContentScale$Companion$Fit$1;->computeScaleFactor-H7hwNQA(JJ)J
+HSPLandroidx/compose/ui/layout/ContentScale$Companion$Inside$1;-><init>()V
+HSPLandroidx/compose/ui/layout/ContentScale$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/layout/ContentScale$Companion;-><init>()V
+HSPLandroidx/compose/ui/layout/ContentScale$Companion;->getFit()Landroidx/compose/ui/layout/ContentScale;
+HSPLandroidx/compose/ui/layout/ContentScale;-><clinit>()V
+HSPLandroidx/compose/ui/layout/ContentScaleKt;->access$computeFillMinDimension-iLBOSCw(JJ)F
+HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillHeight-iLBOSCw(JJ)F
+HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillMinDimension-iLBOSCw(JJ)F
+HSPLandroidx/compose/ui/layout/ContentScaleKt;->computeFillWidth-iLBOSCw(JJ)F
+HSPLandroidx/compose/ui/layout/FixedScale;-><init>(F)V
+HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;-><clinit>()V
+HSPLandroidx/compose/ui/layout/HorizontalAlignmentLine;-><init>(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;-><init>(Landroidx/compose/ui/Modifier;)V
+HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/LayoutKt$materializerOf$1;->invoke-Deg8D_g(Landroidx/compose/runtime/Composer;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/layout/LayoutKt;->materializerOf(Landroidx/compose/ui/Modifier;)Lkotlin/jvm/functions/Function3;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;-><init>(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composition;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;-><init>(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composition;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getActive()Z
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getComposition()Landroidx/compose/runtime/Composition;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getContent()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setComposition(Landroidx/compose/runtime/Composition;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setContent(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setForceRecompose(Z)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;-><init>(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setDensity(F)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setFontScale(F)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->subcompose(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/List;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;-><init>(Landroidx/compose/ui/layout/MeasureResult;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;I)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getAlignmentLines()Ljava/util/Map;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getHeight()I
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->getWidth()I
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;->placeChildren()V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1;-><init>(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;Lkotlin/jvm/functions/Function2;Ljava/lang/String;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$2$1$1;-><init>(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$2$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$2$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;-><init>(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getCurrentIndex$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)I
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getScope$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$setCurrentIndex$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;I)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->createMeasurePolicy(Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/layout/MeasurePolicy;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->createNodeAt(I)Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->disposeOrReuseStartingFromIndex(I)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->forceRecomposeChildren()V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->makeSureStateIsConsistent()V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->setCompositionContext(Landroidx/compose/runtime/CompositionContext;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->setSlotReusePolicy(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Landroidx/compose/ui/node/LayoutNode;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcompose(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/util/List;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->subcomposeInto(Landroidx/compose/runtime/Composition;Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition;
+HSPLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->takeNodeFromReusables(Ljava/lang/Object;)Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;-><init>(IILjava/util/Map;Landroidx/compose/ui/layout/MeasureScope;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getAlignmentLines()Ljava/util/Map;
+HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getHeight()I
+HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->getWidth()I
+HSPLandroidx/compose/ui/layout/MeasureScope$layout$1;->placeChildren()V
+HSPLandroidx/compose/ui/layout/MeasureScope;->layout$default(Landroidx/compose/ui/layout/MeasureScope;IILjava/util/Map;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/layout/MeasureScope;->layout(IILjava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy;-><clinit>()V
+HSPLandroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy;-><init>()V
+HSPLandroidx/compose/ui/layout/OnGloballyPositionedModifierImpl;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/layout/OnGloballyPositionedModifierImpl;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/layout/OnGloballyPositionedModifierImpl;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/ui/layout/OnGloballyPositionedModifierKt;->onGloballyPositioned(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;-><init>()V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$configureForPlacingForAlignment(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;Landroidx/compose/ui/node/LookaheadCapablePlaceable;)Z
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$getParentLayoutDirection(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;)Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->access$getParentWidth(Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;)I
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->configureForPlacingForAlignment(Landroidx/compose/ui/node/LookaheadCapablePlaceable;)Z
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->getParentLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope$Companion;->getParentWidth()I
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;-><clinit>()V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;-><init>()V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getLayoutDelegate$cp()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentLayoutDirection$cp()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentLayoutDirection(Landroidx/compose/ui/layout/Placeable$PlacementScope;)Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$getParentWidth$cp()I
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$get_coordinates$cp()Landroidx/compose/ui/layout/LayoutCoordinates;
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setLayoutDelegate$cp(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setParentLayoutDirection$cp(Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$setParentWidth$cp(I)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->access$set_coordinates$cp(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFILjava/lang/Object;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place(Landroidx/compose/ui/layout/Placeable;IIF)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place-70tqf50$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;JFILjava/lang/Object;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->place-70tqf50(Landroidx/compose/ui/layout/Placeable;JF)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelative$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFILjava/lang/Object;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelative(Landroidx/compose/ui/layout/Placeable;IIF)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelativeWithLayer$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeRelativeWithLayer(Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer(Landroidx/compose/ui/layout/Placeable;IIFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer-aW-9-wM(Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/layout/Placeable;-><clinit>()V
+HSPLandroidx/compose/ui/layout/Placeable;-><init>()V
+HSPLandroidx/compose/ui/layout/Placeable;->access$getApparentToRealOffset-nOcc-ac(Landroidx/compose/ui/layout/Placeable;)J
+HSPLandroidx/compose/ui/layout/Placeable;->access$placeAt-f8xVGno(Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/layout/Placeable;->getApparentToRealOffset-nOcc-ac()J
+HSPLandroidx/compose/ui/layout/Placeable;->getHeight()I
+HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredSize-YbymL2g()J
+HSPLandroidx/compose/ui/layout/Placeable;->getMeasuredWidth()I
+HSPLandroidx/compose/ui/layout/Placeable;->getMeasurementConstraints-msEJaDk()J
+HSPLandroidx/compose/ui/layout/Placeable;->getWidth()I
+HSPLandroidx/compose/ui/layout/Placeable;->recalculateWidthAndHeight()V
+HSPLandroidx/compose/ui/layout/Placeable;->setMeasuredSize-ozmzZPI(J)V
+HSPLandroidx/compose/ui/layout/Placeable;->setMeasurementConstraints-BRTryo0(J)V
+HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;-><clinit>()V
+HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;-><init>()V
+HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->invoke(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V
+HSPLandroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/PlaceableKt;-><clinit>()V
+HSPLandroidx/compose/ui/layout/PlaceableKt;->access$getDefaultConstraints$p()J
+HSPLandroidx/compose/ui/layout/PlaceableKt;->access$getDefaultLayerBlock$p()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;-><init>(Landroidx/compose/ui/layout/Placeable;)V
+HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+HSPLandroidx/compose/ui/layout/RootMeasurePolicy$measure$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/RootMeasurePolicy;-><clinit>()V
+HSPLandroidx/compose/ui/layout/RootMeasurePolicy;-><init>()V
+HSPLandroidx/compose/ui/layout/RootMeasurePolicy;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/layout/ScaleFactor$Companion;-><init>()V
+HSPLandroidx/compose/ui/layout/ScaleFactor$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/layout/ScaleFactor;-><clinit>()V
+HSPLandroidx/compose/ui/layout/ScaleFactor;->constructor-impl(J)J
+HSPLandroidx/compose/ui/layout/ScaleFactor;->getScaleX-impl(J)F
+HSPLandroidx/compose/ui/layout/ScaleFactor;->getScaleY-impl(J)F
+HSPLandroidx/compose/ui/layout/ScaleFactorKt;->ScaleFactor(FF)J
+HSPLandroidx/compose/ui/layout/ScaleFactorKt;->times-UQTWf7w(JJ)J
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$4;-><init>(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$4;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$4;->invoke()V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$5$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/State;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$5$1;-><init>(Landroidx/compose/runtime/State;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$5$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$5$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt;->SubcomposeLayout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutKt;->SubcomposeLayout(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;-><init>(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;-><init>(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;-><init>(Landroidx/compose/ui/layout/SubcomposeLayoutState;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;->invoke(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/layout/SubcomposeLayoutState;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;-><clinit>()V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;-><init>()V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;-><init>(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$getSlotReusePolicy$p(Landroidx/compose/ui/layout/SubcomposeLayoutState;)Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$getState(Landroidx/compose/ui/layout/SubcomposeLayoutState;)Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->access$set_state$p(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->forceRecomposeChildren$ui_release()V
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetCompositionContext$ui_release()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetMeasurePolicy$ui_release()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getSetRoot$ui_release()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/layout/SubcomposeLayoutState;->getState()Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;
+HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;-><clinit>()V
+HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;-><init>(Ljava/util/Set;)V
+HSPLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;-><init>(Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;-><init>(Landroidx/compose/ui/modifier/ModifierLocalProvider;)V
+HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->contains$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Z
+HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->get$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/modifier/BackwardsCompatLocalMap;->setElement(Landroidx/compose/ui/modifier/ModifierLocalProvider;)V
+HSPLandroidx/compose/ui/modifier/EmptyMap;-><clinit>()V
+HSPLandroidx/compose/ui/modifier/EmptyMap;-><init>()V
+HSPLandroidx/compose/ui/modifier/EmptyMap;->contains$ui_release(Landroidx/compose/ui/modifier/ModifierLocal;)Z
+HSPLandroidx/compose/ui/modifier/ModifierLocal;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocal;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocal;->getDefaultFactory$ui_release()Lkotlin/jvm/functions/Function0;
+HSPLandroidx/compose/ui/modifier/ModifierLocalConsumerImpl;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocalConsumerImpl;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/modifier/ModifierLocalConsumerImpl;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocalConsumerKt;->modifierLocalConsumer(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/modifier/ModifierLocalKt;->modifierLocalOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;-><init>(Landroidx/compose/ui/modifier/ModifierLocalManager;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;->invoke()V
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager;-><init>(Landroidx/compose/ui/node/Owner;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->invalidate()V
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->invalidateConsumersOfNodeForKey(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/modifier/ModifierLocal;Ljava/util/Set;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->removedProvider(Landroidx/compose/ui/node/BackwardsCompatNode;Landroidx/compose/ui/modifier/ModifierLocal;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->triggerUpdates()V
+HSPLandroidx/compose/ui/modifier/ModifierLocalManager;->updatedProvider(Landroidx/compose/ui/node/BackwardsCompatNode;Landroidx/compose/ui/modifier/ModifierLocal;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocalMap;-><clinit>()V
+HSPLandroidx/compose/ui/modifier/ModifierLocalMap;-><init>()V
+HSPLandroidx/compose/ui/modifier/ModifierLocalMap;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/modifier/ModifierLocalNodeKt;->modifierLocalMapOf()Landroidx/compose/ui/modifier/ModifierLocalMap;
+HSPLandroidx/compose/ui/modifier/ProvidableModifierLocal;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/node/AlignmentLines;-><init>(Landroidx/compose/ui/node/AlignmentLinesOwner;)V
+HSPLandroidx/compose/ui/node/AlignmentLines;-><init>(Landroidx/compose/ui/node/AlignmentLinesOwner;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/AlignmentLines;->getDirty$ui_release()Z
+HSPLandroidx/compose/ui/node/AlignmentLines;->getQueried$ui_release()Z
+HSPLandroidx/compose/ui/node/AlignmentLines;->getRequired$ui_release()Z
+HSPLandroidx/compose/ui/node/AlignmentLines;->getUsedDuringParentLayout$ui_release()Z
+HSPLandroidx/compose/ui/node/AlignmentLines;->onAlignmentsChanged()V
+HSPLandroidx/compose/ui/node/AlignmentLines;->recalculateQueryOwner()V
+HSPLandroidx/compose/ui/node/AlignmentLines;->setPreviousUsedDuringParentLayout$ui_release(Z)V
+HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedByModifierLayout$ui_release(Z)V
+HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedByModifierMeasurement$ui_release(Z)V
+HSPLandroidx/compose/ui/node/AlignmentLines;->setUsedDuringParentMeasurement$ui_release(Z)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;-><init>(Landroidx/compose/ui/node/BackwardsCompatNode;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;->invoke()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$4;-><init>(Landroidx/compose/ui/node/BackwardsCompatNode;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$4;->onLayoutComplete()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;-><init>(Landroidx/compose/ui/node/BackwardsCompatNode;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;->invoke()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;-><init>(Landroidx/compose/ui/Modifier$Element;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->access$getLastOnPlacedCoordinates$p(Landroidx/compose/ui/node/BackwardsCompatNode;)Landroidx/compose/ui/layout/LayoutCoordinates;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getCurrent(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object;+]Landroidx/compose/ui/modifier/ModifierLocal;Landroidx/compose/ui/modifier/ProvidableModifierLocal;]Landroidx/compose/ui/modifier/ModifierLocalMap;Landroidx/compose/ui/modifier/BackwardsCompatLocalMap;,Landroidx/compose/ui/modifier/EmptyMap;]Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/BackwardsCompatNode;,Landroidx/compose/ui/node/InnerNodeCoordinator$tail$1;]Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/node/NodeChain;]Landroidx/compose/ui/modifier/ModifierLocalNode;Landroidx/compose/ui/node/BackwardsCompatNode;]Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;]Lkotlin/jvm/functions/Function0;megamorphic_types]Landroidx/compose/ui/node/DelegatableNode;Landroidx/compose/ui/node/BackwardsCompatNode;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getElement()Landroidx/compose/ui/Modifier$Element;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getProvidedValues()Landroidx/compose/ui/modifier/ModifierLocalMap;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getReadValues()Ljava/util/HashSet;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->getSemanticsConfiguration()Landroidx/compose/ui/semantics/SemanticsConfiguration;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->initializeModifier(Z)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onAttach()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onMeasureResultChanged()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->onRemeasured-ozmzZPI(J)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->setElement(Landroidx/compose/ui/Modifier$Element;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->uninitializeModifier()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->updateModifierLocalConsumer()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNode;->updateModifierLocalProvider(Landroidx/compose/ui/modifier/ModifierLocalProvider;)V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1;-><init>()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1;->getCurrent(Landroidx/compose/ui/modifier/ModifierLocal;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1;-><init>()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateFocusOrderModifierLocalConsumer$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateFocusOrderModifierLocalConsumer$1;-><init>()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;-><init>()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;-><clinit>()V
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->access$getDetachedModifierLocalReadScope$p()Landroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1;
+HSPLandroidx/compose/ui/node/BackwardsCompatNodeKt;->access$getUpdateModifierLocalConsumer$p()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/node/CenteredArray;->constructor-impl([I)[I
+HSPLandroidx/compose/ui/node/CenteredArray;->get-impl([II)I
+HSPLandroidx/compose/ui/node/CenteredArray;->getMid-impl([I)I
+HSPLandroidx/compose/ui/node/CenteredArray;->set-impl([III)V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;-><init>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;-><init>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;-><init>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/layout/MeasurePolicy;)V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;-><init>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/Modifier;)V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;-><init>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->invoke(Landroidx/compose/ui/node/ComposeUiNode;Landroidx/compose/ui/platform/ViewConfiguration;)V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1;-><init>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;-><init>()V
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getConstructor()Lkotlin/jvm/functions/Function0;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetDensity()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetLayoutDirection()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetMeasurePolicy()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetModifier()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/node/ComposeUiNode$Companion;->getSetViewConfiguration()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/node/ComposeUiNode;-><clinit>()V
+HSPLandroidx/compose/ui/node/DelegatableNodeKt;->access$addLayoutNodeChildren(Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/ui/Modifier$Node;)V
+HSPLandroidx/compose/ui/node/DelegatableNodeKt;->addLayoutNodeChildren(Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/ui/Modifier$Node;)V
+HSPLandroidx/compose/ui/node/DelegatableNodeKt;->has-64DMado(Landroidx/compose/ui/node/DelegatableNode;I)Z
+HSPLandroidx/compose/ui/node/DelegatableNodeKt;->localChild(Landroidx/compose/ui/node/DelegatableNode;I)Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireCoordinator-64DMado(Landroidx/compose/ui/node/DelegatableNode;I)Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireLayoutNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/node/DelegatableNodeKt;->requireOwner(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/Owner;
+HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;-><init>()V
+HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;->compare(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I
+HSPLandroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2;-><clinit>()V
+HSPLandroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2;-><init>()V
+HSPLandroidx/compose/ui/node/DepthSortedSet;-><init>(Z)V
+HSPLandroidx/compose/ui/node/DepthSortedSet;->add(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/DepthSortedSet;->isEmpty()Z
+HSPLandroidx/compose/ui/node/DepthSortedSet;->pop()Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/node/DepthSortedSet;->remove(Landroidx/compose/ui/node/LayoutNode;)Z
+HSPLandroidx/compose/ui/node/DrawModifierNodeKt;->invalidateDraw(Landroidx/compose/ui/node/DrawModifierNode;)V
+HSPLandroidx/compose/ui/node/HitTestResult;-><init>()V
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator$Companion;-><init>()V
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator$tail$1;-><init>()V
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator;-><clinit>()V
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->getTail()Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable;
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->performDraw(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/node/InnerNodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/IntStack;-><init>(I)V
+HSPLandroidx/compose/ui/node/IntStack;->compareDiagonal(II)Z
+HSPLandroidx/compose/ui/node/IntStack;->isNotEmpty()Z
+HSPLandroidx/compose/ui/node/IntStack;->partition(III)I
+HSPLandroidx/compose/ui/node/IntStack;->pop()I
+HSPLandroidx/compose/ui/node/IntStack;->pushDiagonal(III)V
+HSPLandroidx/compose/ui/node/IntStack;->pushRange(IIII)V
+HSPLandroidx/compose/ui/node/IntStack;->quickSort(III)V
+HSPLandroidx/compose/ui/node/IntStack;->sortDiagonals()V
+HSPLandroidx/compose/ui/node/IntStack;->swapDiagonal(II)V
+HSPLandroidx/compose/ui/node/IntrinsicsPolicy$Companion;-><init>()V
+HSPLandroidx/compose/ui/node/IntrinsicsPolicy$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/IntrinsicsPolicy;-><clinit>()V
+HSPLandroidx/compose/ui/node/IntrinsicsPolicy;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->setMeasurePolicyState(Landroidx/compose/ui/layout/MeasurePolicy;)V
+HSPLandroidx/compose/ui/node/IntrinsicsPolicy;->updateFrom(Landroidx/compose/ui/layout/MeasurePolicy;)V
+HSPLandroidx/compose/ui/node/LayerPositionalProperties;-><init>()V
+HSPLandroidx/compose/ui/node/LayerPositionalProperties;->copyFrom(Landroidx/compose/ui/graphics/GraphicsLayerScope;)V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;-><init>(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutModifierNode;)V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getLayoutModifierNode()Landroidx/compose/ui/node/LayoutModifierNode;
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getTail()Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->getWrappedNonNull()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable;
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->onLayoutModifierNodeChanged()V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->performDraw(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->setLayoutModifierNode$ui_release(Landroidx/compose/ui/node/LayoutModifierNode;)V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeKt;->invalidateLayer(Landroidx/compose/ui/node/LayoutModifierNode;)V
+HSPLandroidx/compose/ui/node/LayoutModifierNodeKt;->invalidateMeasurements(Landroidx/compose/ui/node/LayoutModifierNode;)V
+HSPLandroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->invoke()Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNode$Companion$DummyViewConfiguration$1;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNode$Companion$ErrorMeasurePolicy$1;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNode$Companion;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNode$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/LayoutNode$Companion;->getConstructor$ui_release()Lkotlin/jvm/functions/Function0;
+HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->$values()[Landroidx/compose/ui/node/LayoutNode$LayoutState;
+HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/node/LayoutNode$LayoutState;->values()[Landroidx/compose/ui/node/LayoutNode$LayoutState;
+HSPLandroidx/compose/ui/node/LayoutNode$NoIntrinsicsMeasurePolicy;-><init>(Ljava/lang/String;)V
+HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->$values()[Landroidx/compose/ui/node/LayoutNode$UsageByParent;
+HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/node/LayoutNode$UsageByParent;->values()[Landroidx/compose/ui/node/LayoutNode$UsageByParent;
+HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNode$_foldedChildren$1;->invoke()V
+HSPLandroidx/compose/ui/node/LayoutNode;->$r8$lambda$7po1rmUuVs6tXeBa5BDq-nmH7XI(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I
+HSPLandroidx/compose/ui/node/LayoutNode;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNode;-><init>(ZI)V
+HSPLandroidx/compose/ui/node/LayoutNode;-><init>(ZIILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->ZComparator$lambda$39(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I
+HSPLandroidx/compose/ui/node/LayoutNode;->access$getConstructor$cp()Lkotlin/jvm/functions/Function0;
+HSPLandroidx/compose/ui/node/LayoutNode;->access$setIgnoreRemeasureRequests$p(Landroidx/compose/ui/node/LayoutNode;Z)V
+HSPLandroidx/compose/ui/node/LayoutNode;->attach$ui_release(Landroidx/compose/ui/node/Owner;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->checkChildrenPlaceOrderForUpdates$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->clearPlaceOrder$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->clearSubtreeIntrinsicsUsage$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->clearSubtreePlacementIntrinsicsUsage()V
+HSPLandroidx/compose/ui/node/LayoutNode;->dispatchOnPositionedCallbacks$ui_release()V+]Landroidx/compose/ui/node/GlobalPositionAwareModifierNode;Landroidx/compose/ui/node/BackwardsCompatNode;]Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/node/BackwardsCompatNode;]Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/node/NodeChain;]Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/node/LayoutNode;->draw$ui_release(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->getCanMultiMeasure$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->getChildMeasurables$ui_release()Ljava/util/List;
+HSPLandroidx/compose/ui/node/LayoutNode;->getChildren$ui_release()Ljava/util/List;
+HSPLandroidx/compose/ui/node/LayoutNode;->getCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates;
+HSPLandroidx/compose/ui/node/LayoutNode;->getDensity()Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/ui/node/LayoutNode;->getDepth$ui_release()I
+HSPLandroidx/compose/ui/node/LayoutNode;->getFoldedChildren$ui_release()Ljava/util/List;
+HSPLandroidx/compose/ui/node/LayoutNode;->getHeight()I
+HSPLandroidx/compose/ui/node/LayoutNode;->getInnerCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/LayoutNode;->getInnerLayerCoordinator()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/LayoutNode;->getIntrinsicsUsageByParent$ui_release()Landroidx/compose/ui/node/LayoutNode$UsageByParent;
+HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;
+HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutPending$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->getLayoutState$ui_release()Landroidx/compose/ui/node/LayoutNode$LayoutState;
+HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadLayoutPending$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->getLookaheadMeasurePending$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->getMDrawScope$ui_release()Landroidx/compose/ui/node/LayoutNodeDrawScope;
+HSPLandroidx/compose/ui/node/LayoutNode;->getMLookaheadScope$ui_release()Landroidx/compose/ui/layout/LookaheadScope;
+HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePassDelegate()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;
+HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePending$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->getMeasurePolicy()Landroidx/compose/ui/layout/MeasurePolicy;
+HSPLandroidx/compose/ui/node/LayoutNode;->getMeasuredByParent$ui_release()Landroidx/compose/ui/node/LayoutNode$UsageByParent;
+HSPLandroidx/compose/ui/node/LayoutNode;->getNeedsOnPositionedDispatch$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->getNodes$ui_release()Landroidx/compose/ui/node/NodeChain;
+HSPLandroidx/compose/ui/node/LayoutNode;->getOuterCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/LayoutNode;->getOwner$ui_release()Landroidx/compose/ui/node/Owner;
+HSPLandroidx/compose/ui/node/LayoutNode;->getParent$ui_release()Landroidx/compose/ui/node/LayoutNode;+]Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/node/LayoutNode;->getSemanticsId()I
+HSPLandroidx/compose/ui/node/LayoutNode;->getSubcompositionsState$ui_release()Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;
+HSPLandroidx/compose/ui/node/LayoutNode;->getWidth()I
+HSPLandroidx/compose/ui/node/LayoutNode;->getZSortedChildren()Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/node/LayoutNode;->get_children$ui_release()Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/node/LayoutNode;->insertAt$ui_release(ILandroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->invalidateLayer$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->invalidateLayers$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->invalidateMeasurements$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->invalidateUnfoldedVirtualChildren()V
+HSPLandroidx/compose/ui/node/LayoutNode;->isAttached()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->isPlaced()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->isValid()Z
+HSPLandroidx/compose/ui/node/LayoutNode;->markLayoutPending$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->markMeasurePending$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->markNodeAndSubtreeAsPlaced()V
+HSPLandroidx/compose/ui/node/LayoutNode;->onDensityOrLayoutDirectionChanged()V
+HSPLandroidx/compose/ui/node/LayoutNode;->onNodePlaced$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->onZSortedChildrenInvalidated$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->place$ui_release(II)V
+HSPLandroidx/compose/ui/node/LayoutNode;->recreateUnfoldedChildrenIfDirty()V
+HSPLandroidx/compose/ui/node/LayoutNode;->remeasure-_Sx5XlM$ui_release$default(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;ILjava/lang/Object;)Z
+HSPLandroidx/compose/ui/node/LayoutNode;->remeasure-_Sx5XlM$ui_release(Landroidx/compose/ui/unit/Constraints;)Z
+HSPLandroidx/compose/ui/node/LayoutNode;->replace$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->requestRelayout$ui_release$default(Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->requestRelayout$ui_release(Z)V
+HSPLandroidx/compose/ui/node/LayoutNode;->requestRemeasure$ui_release$default(Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->requestRemeasure$ui_release(Z)V
+HSPLandroidx/compose/ui/node/LayoutNode;->resetSubtreeIntrinsicsUsage$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNode;->setCanMultiMeasure$ui_release(Z)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setDensity(Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setInnerLayerCoordinatorIsDirty$ui_release(Z)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setMLookaheadScope(Landroidx/compose/ui/layout/LookaheadScope;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setMeasurePolicy(Landroidx/compose/ui/layout/MeasurePolicy;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setMeasuredByParent$ui_release(Landroidx/compose/ui/node/LayoutNode$UsageByParent;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setModifier(Landroidx/compose/ui/Modifier;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setNeedsOnPositionedDispatch$ui_release(Z)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setSubcompositionsState$ui_release(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->setViewConfiguration(Landroidx/compose/ui/platform/ViewConfiguration;)V
+HSPLandroidx/compose/ui/node/LayoutNode;->updateChildrenIfDirty$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNodeAlignmentLines;-><init>(Landroidx/compose/ui/node/AlignmentLinesOwner;)V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;-><init>(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;)V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;-><init>(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->draw-x_KDEd0$ui_release(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/node/DrawModifierNode;)V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawContent()V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawImage-AZ2fEMs(Landroidx/compose/ui/graphics/ImageBitmap;JJJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;II)V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawPath-LG529CI(Landroidx/compose/ui/graphics/Path;JFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawRect-n-J9OG0(JJJFLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->drawRoundRect-u-Aw5IA(JJJJLandroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;I)V
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getDrawContext()Landroidx/compose/ui/graphics/drawscope/DrawContext;
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->getSize-NH-jbRc()J
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScope;->toPx-0680j_4(F)F
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScopeKt;->access$nextDrawNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/DrawModifierNode;
+HSPLandroidx/compose/ui/node/LayoutNodeDrawScopeKt;->nextDrawNode(Landroidx/compose/ui/node/DelegatableNode;)Landroidx/compose/ui/node/DrawModifierNode;
+HSPLandroidx/compose/ui/node/LayoutNodeKt;->requireOwner(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/node/Owner;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$childMeasurables$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$childMeasurables$1;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$childMeasurables$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/layout/Measurable;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$childMeasurables$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;-><init>(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;->invoke()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;-><init>(Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;JF)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;->invoke()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;-><init>()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;-><init>(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->forEachChildAlignmentLinesOwner(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getAlignmentLines()Landroidx/compose/ui/node/AlignmentLines;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getChildMeasurables$ui_release()Ljava/util/List;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getInnerCoordinator()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getLastConstraints-DWUhwKw()Landroidx/compose/ui/unit/Constraints;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getMeasuredWidth()I
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getParentAlignmentLinesOwner()Landroidx/compose/ui/node/AlignmentLinesOwner;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->getParentData()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->invalidateIntrinsicsParent(Z)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->layoutChildren()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->measure-BRTryo0(J)Landroidx/compose/ui/layout/Placeable;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->notifyChildrenUsingCoordinatesWhilePlacing()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->onBeforeLayoutChildren()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->placeOuterCoordinator-f8xVGno(JFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->remeasure-BRTryo0(J)Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->replace()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->setChildMeasurablesDirty$ui_release(Z)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->trackMeasurementByParent(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->updateParentData()Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;-><init>(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;J)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;->invoke()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$getLayoutNode$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$getLayoutPendingForAlignment$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;)Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$isOutMostLookaheadRoot(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;)Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$performMeasure-BRTryo0(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;J)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutPending$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Z)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutPendingForAlignment$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Z)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->access$setLayoutState$p(Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;Landroidx/compose/ui/node/LayoutNode$LayoutState;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getAlignmentLinesOwner$ui_release()Landroidx/compose/ui/node/AlignmentLinesOwner;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getChildrenAccessingCoordinatesDuringPlacement()I
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getHeight$ui_release()I
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLastConstraints-DWUhwKw()Landroidx/compose/ui/unit/Constraints;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLayoutPending$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLayoutState$ui_release()Landroidx/compose/ui/node/LayoutNode$LayoutState;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLookaheadLayoutPending$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getLookaheadMeasurePending$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getMeasurePassDelegate$ui_release()Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getMeasurePending$ui_release()Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getOuterCoordinator()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getWidth$ui_release()I
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->isOutMostLookaheadRoot(Landroidx/compose/ui/node/LayoutNode;)Z
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markChildrenDirty()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markLayoutPending$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->markMeasurePending$ui_release()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->performMeasure-BRTryo0(J)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->setCoordinatesAccessedDuringPlacement(Z)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->updateParentData()V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegateKt;->access$updateChildMeasurables(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/collection/MutableVector;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/LayoutNodeLayoutDelegateKt;->updateChildMeasurables(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/collection/MutableVector;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;-><init>()V
+HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->invalidateAlignmentLinesFromPositionChange(Landroidx/compose/ui/node/NodeCoordinator;)V
+HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->isPlacingForAlignment$ui_release()Z
+HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->isShallowPlacing$ui_release()Z
+HSPLandroidx/compose/ui/node/LookaheadCapablePlaceable;->setPlacingForAlignment$ui_release(Z)V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->access$getRoot$p(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;)Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->access$remeasureAndRelayoutIfNeeded(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->callOnLayoutCompletedListeners()V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->dispatchOnPositionedCallbacks$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;ZILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->dispatchOnPositionedCallbacks(Z)V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->doRemeasure-sdFAvZA(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->forceMeasureTheSubtree(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getCanAffectParent(Landroidx/compose/ui/node/LayoutNode;)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->getMeasureAffectsParent(Landroidx/compose/ui/node/LayoutNode;)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureAndLayout(Lkotlin/jvm/functions/Function0;)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureOnly()V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->recurseRemeasure(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->registerOnLayoutCompletedListener(Landroidx/compose/ui/node/Owner$OnLayoutCompletedListener;)V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->remeasureAndRelayoutIfNeeded(Landroidx/compose/ui/node/LayoutNode;)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->remeasureOnly(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRelayout(Landroidx/compose/ui/node/LayoutNode;Z)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRemeasure$default(Landroidx/compose/ui/node/MeasureAndLayoutDelegate;Landroidx/compose/ui/node/LayoutNode;ZILjava/lang/Object;)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->requestRemeasure(Landroidx/compose/ui/node/LayoutNode;Z)Z
+HSPLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->updateRootConstraints-BRTryo0(J)V
+HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;-><init>(Landroidx/compose/runtime/collection/MutableVector;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->add(ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->asList()Ljava/util/List;
+HSPLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->getVector()Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/node/MyersDiffKt;->access$swap([III)V
+HSPLandroidx/compose/ui/node/MyersDiffKt;->applyDiff(IILandroidx/compose/ui/node/IntStack;Landroidx/compose/ui/node/DiffCallback;)V
+HSPLandroidx/compose/ui/node/MyersDiffKt;->backward-4l5_RBY(IIIILandroidx/compose/ui/node/DiffCallback;[I[II[I)Z
+HSPLandroidx/compose/ui/node/MyersDiffKt;->calculateDiff(IILandroidx/compose/ui/node/DiffCallback;)Landroidx/compose/ui/node/IntStack;
+HSPLandroidx/compose/ui/node/MyersDiffKt;->executeDiff(IILandroidx/compose/ui/node/DiffCallback;)V
+HSPLandroidx/compose/ui/node/MyersDiffKt;->fillSnake(IIIIZ[I)V
+HSPLandroidx/compose/ui/node/MyersDiffKt;->forward-4l5_RBY(IIIILandroidx/compose/ui/node/DiffCallback;[I[II[I)Z
+HSPLandroidx/compose/ui/node/MyersDiffKt;->midPoint-q5eDKzI(IIIILandroidx/compose/ui/node/DiffCallback;[I[I[I)Z
+HSPLandroidx/compose/ui/node/MyersDiffKt;->swap([III)V
+HSPLandroidx/compose/ui/node/NodeChain$Differ;-><init>(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Node;ILandroidx/compose/runtime/collection/MutableVector;Landroidx/compose/runtime/collection/MutableVector;)V
+HSPLandroidx/compose/ui/node/NodeChain$Differ;->areItemsTheSame(II)Z
+HSPLandroidx/compose/ui/node/NodeChain$Differ;->insert(II)V
+HSPLandroidx/compose/ui/node/NodeChain$Differ;->same(II)V
+HSPLandroidx/compose/ui/node/NodeChain;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/NodeChain;->access$createAndInsertNodeAsParent(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeChain;->access$getAggregateChildKindSet(Landroidx/compose/ui/node/NodeChain;)I
+HSPLandroidx/compose/ui/node/NodeChain;->access$getLogger$p(Landroidx/compose/ui/node/NodeChain;)Landroidx/compose/ui/node/NodeChain$Logger;
+HSPLandroidx/compose/ui/node/NodeChain;->access$updateNodeAndReplaceIfNeeded(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeChain;->attach(Z)V
+HSPLandroidx/compose/ui/node/NodeChain;->createAndInsertNodeAsParent(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeChain;->getAggregateChildKindSet()I
+HSPLandroidx/compose/ui/node/NodeChain;->getDiffer(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/runtime/collection/MutableVector;Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/ui/node/NodeChain$Differ;
+HSPLandroidx/compose/ui/node/NodeChain;->getHead$ui_release()Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeChain;->getInnerCoordinator$ui_release()Landroidx/compose/ui/node/InnerNodeCoordinator;
+HSPLandroidx/compose/ui/node/NodeChain;->getOuterCoordinator$ui_release()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/NodeChain;->getTail$ui_release()Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeChain;->has-H91voCI$ui_release(I)Z
+HSPLandroidx/compose/ui/node/NodeChain;->insertParent(Landroidx/compose/ui/Modifier$Node;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeChain;->padChain()V
+HSPLandroidx/compose/ui/node/NodeChain;->structuralUpdate(Landroidx/compose/runtime/collection/MutableVector;ILandroidx/compose/runtime/collection/MutableVector;ILandroidx/compose/ui/Modifier$Node;)V
+HSPLandroidx/compose/ui/node/NodeChain;->syncCoordinators()V
+HSPLandroidx/compose/ui/node/NodeChain;->trimChain()V
+HSPLandroidx/compose/ui/node/NodeChain;->updateFrom$ui_release(Landroidx/compose/ui/Modifier;)V
+HSPLandroidx/compose/ui/node/NodeChain;->updateNodeAndReplaceIfNeeded(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeChainKt$SentinelHead$1;-><init>()V
+HSPLandroidx/compose/ui/node/NodeChainKt;-><clinit>()V
+HSPLandroidx/compose/ui/node/NodeChainKt;->access$fillVector(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/node/NodeChainKt;->access$getSentinelHead$p()Landroidx/compose/ui/node/NodeChainKt$SentinelHead$1;
+HSPLandroidx/compose/ui/node/NodeChainKt;->fillVector(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/collection/MutableVector;)Landroidx/compose/runtime/collection/MutableVector;
+HSPLandroidx/compose/ui/node/NodeChainKt;->reuseActionForModifiers(Landroidx/compose/ui/Modifier$Element;Landroidx/compose/ui/Modifier$Element;)I
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;-><init>()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$SemanticsSource$1;-><init>()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;-><init>()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->invoke(Landroidx/compose/ui/node/NodeCoordinator;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;-><init>()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion;-><init>()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;-><init>(Landroidx/compose/ui/node/NodeCoordinator;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;->invoke()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;-><init>(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/NodeCoordinator$invoke$1;->invoke()V
+HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;->invoke()V
+HSPLandroidx/compose/ui/node/NodeCoordinator;-><clinit>()V
+HSPLandroidx/compose/ui/node/NodeCoordinator;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->access$drawContainedDrawModifiers(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getGraphicsLayerScope$cp()Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->access$getMeasuredSize-YbymL2g(Landroidx/compose/ui/node/NodeCoordinator;)J
+HSPLandroidx/compose/ui/node/NodeCoordinator;->access$headNode(Landroidx/compose/ui/node/NodeCoordinator;Z)Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->access$setMeasurementConstraints-BRTryo0(Landroidx/compose/ui/node/NodeCoordinator;J)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->attach()V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->draw(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->drawContainedDrawModifiers(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getAlignmentLinesOwner()Landroidx/compose/ui/node/AlignmentLinesOwner;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getCoordinates()Landroidx/compose/ui/layout/LayoutCoordinates;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getDensity()F
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getFontScale()F
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getLastLayerDrawingWasSkipped$ui_release()Z
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayer()Landroidx/compose/ui/node/OwnedLayer;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getLayoutNode()Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getLookaheadDelegate$ui_release()Landroidx/compose/ui/node/LookaheadDelegate;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getMeasureResult$ui_release()Landroidx/compose/ui/layout/MeasureResult;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getParent()Landroidx/compose/ui/node/LookaheadCapablePlaceable;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getParentData()Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getPosition-nOcc-ac()J
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getSize-YbymL2g()J
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getSnapshotObserver()Landroidx/compose/ui/node/OwnerSnapshotObserver;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getWrapped$ui_release()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getWrappedBy$ui_release()Landroidx/compose/ui/node/NodeCoordinator;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->getZIndex()F
+HSPLandroidx/compose/ui/node/NodeCoordinator;->hasNode-H91voCI(I)Z
+HSPLandroidx/compose/ui/node/NodeCoordinator;->headNode(Z)Landroidx/compose/ui/Modifier$Node;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->invalidateLayer()V+]Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/node/InnerNodeCoordinator;,Landroidx/compose/ui/node/LayoutModifierNodeCoordinator;]Landroidx/compose/ui/node/OwnedLayer;Landroidx/compose/ui/platform/RenderNodeLayer;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->invoke(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/NodeCoordinator;->isAttached()Z
+HSPLandroidx/compose/ui/node/NodeCoordinator;->onLayerBlockUpdated(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->onLayoutModifierNodeChanged()V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->onMeasureResultChanged(II)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->onMeasured()V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->onPlaced()V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->placeAt-f8xVGno(JFLkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->setMeasureResult$ui_release(Landroidx/compose/ui/layout/MeasureResult;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->setPosition--gyyYBs(J)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->setWrapped$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->setWrappedBy$ui_release(Landroidx/compose/ui/node/NodeCoordinator;)V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLayerParameters()V
+HSPLandroidx/compose/ui/node/NodeCoordinator;->updateLookaheadScope$ui_release(Landroidx/compose/ui/layout/LookaheadScope;)V
+HSPLandroidx/compose/ui/node/NodeKind;->constructor-impl(I)I
+HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateInsertedNode(Landroidx/compose/ui/Modifier$Node;)V
+HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateNode(Landroidx/compose/ui/Modifier$Node;I)V
+HSPLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateUpdatedNode(Landroidx/compose/ui/Modifier$Node;)V
+HSPLandroidx/compose/ui/node/NodeKindKt;->calculateNodeKindSetFrom(Landroidx/compose/ui/Modifier$Element;)I
+HSPLandroidx/compose/ui/node/NodeKindKt;->getIncludeSelfInTraversal-H91voCI(I)Z
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;-><clinit>()V
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;-><init>()V
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->compare(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/node/LayoutNode;)I
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion;-><init>()V
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher;-><clinit>()V
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher;-><init>()V
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->dispatch()V
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->dispatchHierarchy(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/OnPositionedDispatcher;->onNodePositioned(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/Owner$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/node/Owner$Companion;-><init>()V
+HSPLandroidx/compose/ui/node/Owner$Companion;->getEnableExtraAssertions()Z
+HSPLandroidx/compose/ui/node/Owner;-><clinit>()V
+HSPLandroidx/compose/ui/node/Owner;->measureAndLayout$default(Landroidx/compose/ui/node/Owner;ZILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/Owner;->onRequestMeasure$default(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/node/LayoutNode;ZZILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/Owner;->onRequestRelayout$default(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/node/LayoutNode;ZZILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;-><init>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;-><init>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1;-><init>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1;-><init>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1;-><init>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;-><clinit>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;-><init>()V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->invoke(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeLayoutModifierSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeLayoutSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeMeasureSnapshotReads$ui_release(Landroidx/compose/ui/node/LayoutNode;ZLkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->observeReads$ui_release(Landroidx/compose/ui/node/OwnerScope;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/node/OwnerSnapshotObserver;->startObserving$ui_release()V
+HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->collapsedSemanticsConfiguration(Landroidx/compose/ui/node/SemanticsModifierNode;)Landroidx/compose/ui/semantics/SemanticsConfiguration;
+HSPLandroidx/compose/ui/node/SemanticsModifierNodeKt;->invalidateSemantics(Landroidx/compose/ui/node/SemanticsModifierNode;)V
+HSPLandroidx/compose/ui/node/Snake;->addDiagonalToStack-impl([ILandroidx/compose/ui/node/IntStack;)V
+HSPLandroidx/compose/ui/node/Snake;->constructor-impl([I)[I
+HSPLandroidx/compose/ui/node/Snake;->getDiagonalSize-impl([I)I
+HSPLandroidx/compose/ui/node/Snake;->getEndX-impl([I)I
+HSPLandroidx/compose/ui/node/Snake;->getEndY-impl([I)I
+HSPLandroidx/compose/ui/node/Snake;->getHasAdditionOrRemoval-impl([I)Z
+HSPLandroidx/compose/ui/node/Snake;->getReverse-impl([I)Z
+HSPLandroidx/compose/ui/node/Snake;->getStartX-impl([I)I
+HSPLandroidx/compose/ui/node/Snake;->getStartY-impl([I)I
+HSPLandroidx/compose/ui/node/Snake;->isAddition-impl([I)Z
+HSPLandroidx/compose/ui/node/TreeSet;-><init>(Ljava/util/Comparator;)V
+HSPLandroidx/compose/ui/node/UiApplier;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/UiApplier;->insertBottomUp(ILandroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/UiApplier;->insertBottomUp(ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/UiApplier;->insertTopDown(ILandroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/node/UiApplier;->insertTopDown(ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/node/UiApplier;->onEndChanges()V
+HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;-><init>(Landroidx/compose/ui/platform/AbstractComposeView;)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AbstractComposeView;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->cacheIfAlive(Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/CompositionContext;
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->checkAddView()V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->ensureCompositionCreated()V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->internalOnLayout$ui_release(ZIIII)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->internalOnMeasure$ui_release(II)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->isAlive(Landroidx/compose/runtime/CompositionContext;)Z
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->onAttachedToWindow()V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->onLayout(ZIIII)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->onMeasure(II)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->onRtlPropertiesChanged(I)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->resolveParentCompositionContext()Landroidx/compose/runtime/CompositionContext;
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->setParentCompositionContext(Landroidx/compose/runtime/CompositionContext;)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->setParentContext(Landroidx/compose/runtime/CompositionContext;)V
+HSPLandroidx/compose/ui/platform/AbstractComposeView;->setPreviousAttachedWindowToken(Landroid/os/IBinder;)V
+HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidAccessibilityManager;-><init>(Landroid/content/Context;)V
+HSPLandroidx/compose/ui/platform/AndroidClipboardManager;-><init>(Landroid/content/ClipboardManager;)V
+HSPLandroidx/compose/ui/platform/AndroidClipboardManager;-><init>(Landroid/content/Context;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda0;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda0;->onGlobalLayout()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda2;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda2;->onTouchModeChanged(Z)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda3;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->access$getIsShowingLayoutBounds(Landroidx/compose/ui/platform/AndroidComposeView$Companion;)Z
+HSPLandroidx/compose/ui/platform/AndroidComposeView$Companion;->getIsShowingLayoutBounds()Z
+HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;-><init>(Landroidx/lifecycle/LifecycleOwner;Landroidx/savedstate/SavedStateRegistryOwner;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->getLifecycleOwner()Landroidx/lifecycle/LifecycleOwner;
+HSPLandroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;->getSavedStateRegistryOwner()Landroidx/savedstate/SavedStateRegistryOwner;
+HSPLandroidx/compose/ui/platform/AndroidComposeView$_inputModeManager$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$keyInputModifier$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$pointerIconService$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;->invoke()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$resendMotionEventRunnable$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1$value$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+HSPLandroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1;->getValue()Landroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1$value$1;
+HSPLandroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidComposeView$semanticsModifier$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$semanticsModifier$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$semanticsModifier$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$semanticsModifier$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;->invoke(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->$r8$lambda$6rnsioIDxAVR319ScBkOteeoeiE(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->$r8$lambda$TvhWqMihl4JwF42Odovn0ewO6fk(Landroidx/compose/ui/platform/AndroidComposeView;Z)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;-><init>(Landroid/content/Context;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getGetBooleanMethod$cp()Ljava/lang/reflect/Method;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getPreviousMotionEvent$p(Landroidx/compose/ui/platform/AndroidComposeView;)Landroid/view/MotionEvent;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$getSystemPropertiesClass$cp()Ljava/lang/Class;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$setGetBooleanMethod$cp(Ljava/lang/reflect/Method;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->access$setSystemPropertiesClass$cp(Ljava/lang/Class;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->autofillSupported()Z
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->boundsUpdatesEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->convertMeasureSpec(I)Lkotlin/Pair;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->createLayer(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/node/OwnedLayer;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->dispatchDraw(Landroid/graphics/Canvas;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->forceMeasureTheSubtree(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAccessibilityManager()Landroidx/compose/ui/platform/AccessibilityManager;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAccessibilityManager()Landroidx/compose/ui/platform/AndroidAccessibilityManager;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAutofill()Landroidx/compose/ui/autofill/Autofill;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getAutofillTree()Landroidx/compose/ui/autofill/AutofillTree;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getClipboardManager()Landroidx/compose/ui/platform/AndroidClipboardManager;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getClipboardManager()Landroidx/compose/ui/platform/ClipboardManager;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getDensity()Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFocusManager()Landroidx/compose/ui/focus/FocusManager;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontLoader()Landroidx/compose/ui/text/font/Font$ResourceLoader;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getFontWeightAdjustmentCompat(Landroid/content/res/Configuration;)I
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getHapticFeedBack()Landroidx/compose/ui/hapticfeedback/HapticFeedback;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getInputModeManager()Landroidx/compose/ui/input/InputModeManager;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getModifierLocalManager()Landroidx/compose/ui/modifier/ModifierLocalManager;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getPointerIconService()Landroidx/compose/ui/input/pointer/PointerIconService;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getRoot()Landroidx/compose/ui/node/LayoutNode;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSemanticsOwner()Landroidx/compose/ui/semantics/SemanticsOwner;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSharedDrawScope()Landroidx/compose/ui/node/LayoutNodeDrawScope;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getShowLayoutBounds()Z
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getSnapshotObserver()Landroidx/compose/ui/node/OwnerSnapshotObserver;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getTextInputService()Landroidx/compose/ui/text/input/TextInputService;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getTextToolbar()Landroidx/compose/ui/platform/TextToolbar;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getView()Landroid/view/View;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getViewTreeOwners()Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->getWindowInfo()Landroidx/compose/ui/platform/WindowInfo;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->globalLayoutListener$lambda$1(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->invalidateLayers(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->invalidateLayoutNodeMeasurement(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->keyboardVisibilityEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->measureAndLayout(Z)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->notifyLayerIsDirty$ui_release(Landroidx/compose/ui/node/OwnedLayer;Z)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onAttach(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onAttachedToWindow()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onCheckIsTextEditor()Z
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onDraw(Landroid/graphics/Canvas;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onEndApplyChanges()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onLayout(ZIIII)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onLayoutChange(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onMeasure(II)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRequestMeasure(Landroidx/compose/ui/node/LayoutNode;ZZ)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRequestRelayout(Landroidx/compose/ui/node/LayoutNode;ZZ)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onResume(Landroidx/lifecycle/LifecycleOwner;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onRtlPropertiesChanged(I)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onSemanticsChange()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->onWindowFocusChanged(Z)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->registerOnEndApplyChangesListener(Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->registerOnLayoutCompletedListener(Landroidx/compose/ui/node/Owner$OnLayoutCompletedListener;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->scheduleMeasureAndLayout$default(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/ui/node/LayoutNode;ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->scheduleMeasureAndLayout(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->setConfigurationChangeObserver(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->setLayoutDirection(Landroidx/compose/ui/unit/LayoutDirection;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->setOnViewTreeOwnersAvailable(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->setShowLayoutBounds(Z)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->setViewTreeOwners(Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->touchModeChangeListener$lambda$3(Landroidx/compose/ui/platform/AndroidComposeView;Z)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView;->updatePositionCacheAndDispatch()V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda0;-><init>(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda1;-><init>(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda2;-><init>(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->onViewAttachedToWindow(Landroid/view/View;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider;-><init>(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$SemanticsNodeCopy;-><init>(Landroidx/compose/ui/semantics/SemanticsNode;Ljava/util/Map;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendScrollEventIfNeededLambda$1;-><init>(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->boundsUpdatesEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getAccessibilityManager$ui_release()Landroid/view/accessibility/AccessibilityManager;
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getEnabledStateListener$ui_release()Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->getTouchExplorationStateListener$ui_release()Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->isEnabled$ui_release()Z
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onLayoutChange$ui_release(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->onSemanticsChange$ui_release()V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;->disallowForceDark(Landroid/view/View;)V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;->focusable(Landroid/view/View;IZ)V
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt$textInputServiceFactory$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt$textInputServiceFactory$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt$textInputServiceFactory$1;->invoke(Landroidx/compose/ui/text/input/PlatformTextInputService;)Landroidx/compose/ui/text/input/TextInputService;
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt$textInputServiceFactory$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->access$layoutDirectionFromInt(I)Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->getLocaleLayoutDirection(Landroid/content/res/Configuration;)Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->getTextInputServiceFactory()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/platform/AndroidComposeView_androidKt;->layoutDirectionFromInt(I)Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$1$1;-><init>(Landroidx/compose/runtime/MutableState;)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;-><init>(Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/ui/platform/AndroidUriHandler;Lkotlin/jvm/functions/Function2;I)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function2;I)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$invoke$$inlined$onDispose$1;-><init>(Landroid/content/Context;Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;-><init>(Landroid/content/Context;Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;-><init>(Landroid/content/res/Configuration;Landroidx/compose/ui/res/ImageVectorCache;)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->ProvideAndroidCompositionLocals$lambda$1(Landroidx/compose/runtime/MutableState;)Landroid/content/res/Configuration;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->ProvideAndroidCompositionLocals(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalContext()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->getLocalView()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;->obtainImageVectorCache(Landroid/content/Context;Landroid/content/res/Configuration;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/res/ImageVectorCache;
+HSPLandroidx/compose/ui/platform/AndroidFontResourceLoader;-><init>(Landroid/content/Context;)V
+HSPLandroidx/compose/ui/platform/AndroidTextToolbar$textActionModeCallback$1;-><init>(Landroidx/compose/ui/platform/AndroidTextToolbar;)V
+HSPLandroidx/compose/ui/platform/AndroidTextToolbar;-><init>(Landroid/view/View;)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;->invoke()Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion$currentThread$1;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->getCurrentThread()Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$Companion;->getMain()Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;-><init>(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;->doFrame(J)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;->run()V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;-><init>(Landroid/view/Choreographer;Landroid/os/Handler;)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;-><init>(Landroid/view/Choreographer;Landroid/os/Handler;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getHandler$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Landroid/os/Handler;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getLock$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getMain$delegate$cp()Lkotlin/Lazy;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$getToRunOnFrame$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;)Ljava/util/List;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performFrameDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;J)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$performTrampolineDispatch(Landroidx/compose/ui/platform/AndroidUiDispatcher;)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->access$setScheduledFrameDispatch$p(Landroidx/compose/ui/platform/AndroidUiDispatcher;Z)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getChoreographer()Landroid/view/Choreographer;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->getFrameClock()Landroidx/compose/runtime/MonotonicFrameClock;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->nextTask()Ljava/lang/Runnable;
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->performFrameDispatch(J)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->performTrampolineDispatch()V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher;->postFrameCallback$ui_release(Landroid/view/Choreographer$FrameCallback;)V
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher_androidKt;->access$isMainThread()Z
+HSPLandroidx/compose/ui/platform/AndroidUiDispatcher_androidKt;->isMainThread()Z
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$1;-><init>(Landroidx/compose/ui/platform/AndroidUiDispatcher;Landroid/view/Choreographer$FrameCallback;)V
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1;-><init>(Lkotlinx/coroutines/CancellableContinuation;Landroidx/compose/ui/platform/AndroidUiFrameClock;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1;->doFrame(J)V
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;-><init>(Landroid/view/Choreographer;)V
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->getChoreographer()Landroid/view/Choreographer;
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/ui/platform/AndroidUiFrameClock;->withFrameNanos(Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/AndroidUriHandler;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidUriHandler;-><init>(Landroid/content/Context;)V
+HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;-><clinit>()V
+HSPLandroidx/compose/ui/platform/AndroidViewConfiguration;-><init>(Landroid/view/ViewConfiguration;)V
+HSPLandroidx/compose/ui/platform/CalculateMatrixToWindowApi29;-><init>()V
+HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;-><init>()V
+HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;-><init>()V
+HSPLandroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;->getLambda-1$ui_release()Lkotlin/jvm/functions/Function2;
+HSPLandroidx/compose/ui/platform/ComposeView$Content$1;-><init>(Landroidx/compose/ui/platform/ComposeView;I)V
+HSPLandroidx/compose/ui/platform/ComposeView;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ComposeView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroidx/compose/ui/platform/ComposeView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/ComposeView;->Content(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/platform/ComposeView;->getShouldCreateCompositionOnAttachedToWindow()Z
+HSPLandroidx/compose/ui/platform/ComposeView;->setContent(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1;-><init>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt$ProvideCommonCompositionLocals$1;-><init>(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/platform/UriHandler;Lkotlin/jvm/functions/Function2;I)V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt;-><clinit>()V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->ProvideCommonCompositionLocals(Landroidx/compose/ui/node/Owner;Landroidx/compose/ui/platform/UriHandler;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalDensity()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalFontFamilyResolver()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalInputModeManager()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalLayoutDirection()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/platform/CompositionLocalsKt;->getLocalViewConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->canBeSaved(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry;
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;-><init>(ZLandroidx/savedstate/SavedStateRegistry;Ljava/lang/String;)V
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$registered$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;-><init>()V
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean;
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;-><clinit>()V
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->DisposableSaveableStateRegistry(Landroid/view/View;Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->DisposableSaveableStateRegistry(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->access$canBeSavedToBundle(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->canBeSavedToBundle(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;-><init>(Lkotlinx/coroutines/channels/Channel;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;-><init>(Lkotlinx/coroutines/channels/Channel;)V
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;->invoke(Ljava/lang/Object;)V
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;-><clinit>()V
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;-><init>()V
+HSPLandroidx/compose/ui/platform/GlobalSnapshotManager;->ensureStarted()V
+HSPLandroidx/compose/ui/platform/InspectableModifier$End;-><init>(Landroidx/compose/ui/platform/InspectableModifier;)V
+HSPLandroidx/compose/ui/platform/InspectableModifier;-><clinit>()V
+HSPLandroidx/compose/ui/platform/InspectableModifier;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/platform/InspectableModifier;->getEnd()Landroidx/compose/ui/platform/InspectableModifier$End;
+HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;-><init>()V
+HSPLandroidx/compose/ui/platform/InspectableValueKt;-><clinit>()V
+HSPLandroidx/compose/ui/platform/InspectableValueKt;->getNoInspectorInfo()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/platform/InspectableValueKt;->inspectableWrapper(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/platform/InspectableValueKt;->isDebugInspectorInfoEnabled()Z
+HSPLandroidx/compose/ui/platform/InspectorValueInfo;-><clinit>()V
+HSPLandroidx/compose/ui/platform/InspectorValueInfo;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/platform/LayerMatrixCache;-><init>(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/platform/LayerMatrixCache;->invalidate()V
+HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;-><init>()V
+HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->getScaleFactor()F
+HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLandroidx/compose/ui/platform/MotionDurationScaleImpl;->setScaleFactor(F)V
+HSPLandroidx/compose/ui/platform/OutlineResolver;-><init>(Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/platform/OutlineResolver;->getOutline()Landroid/graphics/Outline;
+HSPLandroidx/compose/ui/platform/OutlineResolver;->getOutlineClipSupported()Z
+HSPLandroidx/compose/ui/platform/OutlineResolver;->update(Landroidx/compose/ui/graphics/Shape;FZFLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Z
+HSPLandroidx/compose/ui/platform/OutlineResolver;->update-uvyYCjk(J)V
+HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCache()V
+HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithPath(Landroidx/compose/ui/graphics/Path;)V
+HSPLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithRoundRect(Landroidx/compose/ui/geometry/RoundRect;)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->drawInto(Landroid/graphics/Canvas;)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getAlpha()F
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getClipToOutline()Z
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getElevation()F
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getHasDisplayList()Z
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getHeight()I
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getLeft()I
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getTop()I
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->getWidth()I
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->offsetLeftAndRight(I)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->offsetTopAndBottom(I)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->record(Landroidx/compose/ui/graphics/CanvasHolder;Landroidx/compose/ui/graphics/Path;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setAlpha(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setAmbientShadowColor(I)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setCameraDistance(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setClipToBounds(Z)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setClipToOutline(Z)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setCompositingStrategy-aDBOjCE(I)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setElevation(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setHasOverlappingRendering(Z)Z
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setOutline(Landroid/graphics/Outline;)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPivotX(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPivotY(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setPosition(IIII)Z
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRenderEffect(Landroidx/compose/ui/graphics/RenderEffect;)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationX(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationY(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setRotationZ(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setScaleX(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setScaleY(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setSpotShadowColor(I)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setTranslationX(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29;->setTranslationY(F)V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;-><clinit>()V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;-><init>()V
+HSPLandroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;->setRenderEffect(Landroid/graphics/RenderNode;Landroidx/compose/ui/graphics/RenderEffect;)V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;-><init>()V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;-><clinit>()V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->drawLayer(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->invalidate()V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->move--gyyYBs(J)V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->resize-ozmzZPI(J)V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->setDirty(Z)V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->triggerRepaint()V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->updateDisplayList()V
+HSPLandroidx/compose/ui/platform/RenderNodeLayer;->updateLayerProperties-dDxr-wY(FFFFFFFFFFJLandroidx/compose/ui/graphics/Shape;ZLandroidx/compose/ui/graphics/RenderEffect;JJILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/platform/TextToolbarStatus;->$values()[Landroidx/compose/ui/platform/TextToolbarStatus;
+HSPLandroidx/compose/ui/platform/TextToolbarStatus;-><clinit>()V
+HSPLandroidx/compose/ui/platform/TextToolbarStatus;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$Companion;->getDefault()Landroidx/compose/ui/platform/ViewCompositionStrategy;
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$1;-><init>(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;Landroidx/customview/poolingcontainer/PoolingContainerListener;)V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;-><init>(Landroidx/compose/ui/platform/AbstractComposeView;)V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;->onViewAttachedToWindow(Landroid/view/View;)V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$poolingContainerListener$1;-><init>(Landroidx/compose/ui/platform/AbstractComposeView;)V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;-><init>()V
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;->installFor(Landroidx/compose/ui/platform/AbstractComposeView;)Lkotlin/jvm/functions/Function0;
+HSPLandroidx/compose/ui/platform/ViewCompositionStrategy;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ViewConfiguration;->getMinimumTouchTargetSize-MYxV2XQ()J
+HSPLandroidx/compose/ui/platform/ViewLayer$Companion$OutlineProvider$1;-><init>()V
+HSPLandroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;-><init>()V
+HSPLandroidx/compose/ui/platform/ViewLayer$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/ViewLayer$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/ViewLayer$Companion;->getShouldUseDispatchDraw()Z
+HSPLandroidx/compose/ui/platform/ViewLayer;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ViewLayer;->access$getShouldUseDispatchDraw$cp()Z
+HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/ViewRootForTest$Companion;->getOnViewCreatedCallback()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/platform/ViewRootForTest;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WeakCache;-><init>()V
+HSPLandroidx/compose/ui/platform/WeakCache;->clearWeakReferences()V
+HSPLandroidx/compose/ui/platform/WeakCache;->pop()Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowInfoImpl$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/WindowInfoImpl$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/platform/WindowInfoImpl;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WindowInfoImpl;-><init>()V
+HSPLandroidx/compose/ui/platform/WindowInfoImpl;->setWindowFocused(Z)V
+HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;-><init>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;->createRecomposer(Landroid/view/View;)Landroidx/compose/runtime/Recomposer;
+HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;-><init>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposerFactory$Companion;->getLifecycleAware()Landroidx/compose/ui/platform/WindowRecomposerFactory;
+HSPLandroidx/compose/ui/platform/WindowRecomposerFactory;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;-><init>(Lkotlinx/coroutines/Job;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;->onViewAttachedToWindow(Landroid/view/View;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;-><init>(Landroidx/compose/runtime/Recomposer;Landroid/view/View;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;-><init>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposerPolicy;->createAndInstallWindowRecomposer$ui_release(Landroid/view/View;)Landroidx/compose/runtime/Recomposer;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;-><init>(Landroid/view/View;Landroidx/compose/runtime/Recomposer;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;->onViewAttachedToWindow(Landroid/view/View;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;-><init>(Landroidx/compose/ui/platform/MotionDurationScaleImpl;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;->emit(FLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;-><init>(Lkotlinx/coroutines/flow/StateFlow;Landroidx/compose/ui/platform/MotionDurationScaleImpl;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;-><init>(Lkotlin/jvm/internal/Ref$ObjectRef;Landroidx/compose/runtime/Recomposer;Landroidx/lifecycle/LifecycleOwner;Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;Landroid/view/View;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;-><init>(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/runtime/PausableMonotonicFrameClock;Landroidx/compose/runtime/Recomposer;Lkotlin/jvm/internal/Ref$ObjectRef;Landroid/view/View;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;-><init>(Landroid/content/ContentResolver;Landroid/net/Uri;Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1;Lkotlinx/coroutines/channels/Channel;Landroid/content/Context;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1;-><init>(Lkotlinx/coroutines/channels/Channel;Landroid/os/Handler;)V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->access$getAnimationScaleFlowFor(Landroid/content/Context;)Lkotlinx/coroutines/flow/StateFlow;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->createLifecycleAwareWindowRecomposer$default(Landroid/view/View;Lkotlin/coroutines/CoroutineContext;Landroidx/lifecycle/Lifecycle;ILjava/lang/Object;)Landroidx/compose/runtime/Recomposer;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->createLifecycleAwareWindowRecomposer(Landroid/view/View;Lkotlin/coroutines/CoroutineContext;Landroidx/lifecycle/Lifecycle;)Landroidx/compose/runtime/Recomposer;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->findViewTreeCompositionContext(Landroid/view/View;)Landroidx/compose/runtime/CompositionContext;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getAnimationScaleFlowFor(Landroid/content/Context;)Lkotlinx/coroutines/flow/StateFlow;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getCompositionContext(Landroid/view/View;)Landroidx/compose/runtime/CompositionContext;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getContentChild(Landroid/view/View;)Landroid/view/View;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->getWindowRecomposer(Landroid/view/View;)Landroidx/compose/runtime/Recomposer;
+HSPLandroidx/compose/ui/platform/WindowRecomposer_androidKt;->setCompositionContext(Landroid/view/View;Landroidx/compose/runtime/CompositionContext;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;-><init>(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;-><init>(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$3;-><init>(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;-><init>(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;-><init>(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;->invoke(Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition$setContent$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/platform/WrappedComposition;-><init>(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/runtime/Composition;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition;->access$getAddedToLifecycle$p(Landroidx/compose/ui/platform/WrappedComposition;)Landroidx/lifecycle/Lifecycle;
+HSPLandroidx/compose/ui/platform/WrappedComposition;->access$getDisposed$p(Landroidx/compose/ui/platform/WrappedComposition;)Z
+HSPLandroidx/compose/ui/platform/WrappedComposition;->access$setAddedToLifecycle$p(Landroidx/compose/ui/platform/WrappedComposition;Landroidx/lifecycle/Lifecycle;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition;->access$setLastContent$p(Landroidx/compose/ui/platform/WrappedComposition;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition;->getOriginal()Landroidx/compose/runtime/Composition;
+HSPLandroidx/compose/ui/platform/WrappedComposition;->getOwner()Landroidx/compose/ui/platform/AndroidComposeView;
+HSPLandroidx/compose/ui/platform/WrappedComposition;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/compose/ui/platform/WrappedComposition;->setContent(Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;-><init>()V
+HSPLandroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;->onDescendantInvalidated(Landroidx/compose/ui/platform/AndroidComposeView;)V
+HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;-><clinit>()V
+HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;-><init>()V
+HSPLandroidx/compose/ui/platform/WrapperVerificationHelperMethods;->attributeSourceResourceMap(Landroid/view/View;)Ljava/util/Map;
+HSPLandroidx/compose/ui/platform/Wrapper_androidKt;-><clinit>()V
+HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->createSubcomposition(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/runtime/CompositionContext;)Landroidx/compose/runtime/Composition;
+HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->doSetContent(Landroidx/compose/ui/platform/AndroidComposeView;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition;
+HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->inspectionWanted(Landroidx/compose/ui/platform/AndroidComposeView;)Z
+HSPLandroidx/compose/ui/platform/Wrapper_androidKt;->setContent(Landroidx/compose/ui/platform/AbstractComposeView;Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function2;)Landroidx/compose/runtime/Composition;
+HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;-><init>(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;-><init>(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/geometry/Rect;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/res/ImageVectorCache;-><init>()V
+HSPLandroidx/compose/ui/res/Resources_androidKt;->resources(Landroidx/compose/runtime/Composer;I)Landroid/content/res/Resources;
+HSPLandroidx/compose/ui/res/StringResources_androidKt;->stringResource(ILandroidx/compose/runtime/Composer;I)Ljava/lang/String;
+HSPLandroidx/compose/ui/res/StringResources_androidKt;->stringResource(I[Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/String;
+HSPLandroidx/compose/ui/semantics/AccessibilityAction;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/AccessibilityAction;-><init>(Ljava/lang/String;Lkotlin/Function;)V
+HSPLandroidx/compose/ui/semantics/AccessibilityAction;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/semantics/Role$Companion;-><init>()V
+HSPLandroidx/compose/ui/semantics/Role$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/semantics/Role$Companion;->getButton-o7Vup1c()I
+HSPLandroidx/compose/ui/semantics/Role;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/Role;-><init>(I)V
+HSPLandroidx/compose/ui/semantics/Role;->access$getButton$cp()I
+HSPLandroidx/compose/ui/semantics/Role;->box-impl(I)Landroidx/compose/ui/semantics/Role;
+HSPLandroidx/compose/ui/semantics/Role;->constructor-impl(I)I
+HSPLandroidx/compose/ui/semantics/Role;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/semantics/Role;->equals-impl(ILjava/lang/Object;)Z
+HSPLandroidx/compose/ui/semantics/Role;->unbox-impl()I
+HSPLandroidx/compose/ui/semantics/SemanticsActions;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsActions;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsActions;->getCustomActions()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsActions;->getDismiss()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsActions;->getGetTextLayoutResult()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsActions;->getOnClick()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsActions;->getRequestFocus()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->contains(Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Z
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->getOrElseNullable(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->isClearingSemantics()Z
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->set(Landroidx/compose/ui/semantics/SemanticsPropertyKey;Ljava/lang/Object;)V
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->setClearingSemantics(Z)V
+HSPLandroidx/compose/ui/semantics/SemanticsConfiguration;->setMergingSemanticsOfDescendants(Z)V
+HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/semantics/SemanticsConfigurationKt;->getOrNull(Landroidx/compose/ui/semantics/SemanticsConfiguration;Landroidx/compose/ui/semantics/SemanticsPropertyKey;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore$Companion;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore$Companion;->generateSemanticsId()I
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore;-><init>(ZZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore;-><init>(ZZLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore;->access$getLastIdentifier$cp()Ljava/util/concurrent/atomic/AtomicInteger;
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/semantics/SemanticsModifierCore;->getSemanticsConfiguration()Landroidx/compose/ui/semantics/SemanticsConfiguration;
+HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->semantics$default(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/semantics/SemanticsModifierKt;->semantics(Landroidx/compose/ui/Modifier;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+HSPLandroidx/compose/ui/semantics/SemanticsNode;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsNode;-><init>(Landroidx/compose/ui/node/SemanticsModifierNode;ZLandroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/semantics/SemanticsNode;-><init>(Landroidx/compose/ui/node/SemanticsModifierNode;ZLandroidx/compose/ui/node/LayoutNode;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/semantics/SemanticsNode;->emitFakeNodes(Ljava/util/List;)V
+HSPLandroidx/compose/ui/semantics/SemanticsNode;->getChildren(ZZZ)Ljava/util/List;
+HSPLandroidx/compose/ui/semantics/SemanticsNode;->getReplacedChildren$ui_release()Ljava/util/List;
+HSPLandroidx/compose/ui/semantics/SemanticsNode;->getUnmergedConfig$ui_release()Landroidx/compose/ui/semantics/SemanticsConfiguration;
+HSPLandroidx/compose/ui/semantics/SemanticsNode;->isMergingSemanticsOfDescendants()Z
+HSPLandroidx/compose/ui/semantics/SemanticsNode;->unmergedChildren$ui_release(ZZ)Ljava/util/List;
+HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->access$getRole(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/semantics/Role;
+HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->findOneLayerOfSemanticsWrappers$default(Landroidx/compose/ui/node/LayoutNode;Ljava/util/List;ILjava/lang/Object;)Ljava/util/List;
+HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->findOneLayerOfSemanticsWrappers(Landroidx/compose/ui/node/LayoutNode;Ljava/util/List;)Ljava/util/List;
+HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getOuterSemantics(Landroidx/compose/ui/node/LayoutNode;)Landroidx/compose/ui/node/SemanticsModifierNode;
+HSPLandroidx/compose/ui/semantics/SemanticsNodeKt;->getRole(Landroidx/compose/ui/semantics/SemanticsNode;)Landroidx/compose/ui/semantics/Role;
+HSPLandroidx/compose/ui/semantics/SemanticsOwner;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsOwner;-><init>(Landroidx/compose/ui/node/LayoutNode;)V
+HSPLandroidx/compose/ui/semantics/SemanticsOwner;->getUnmergedRootSemanticsNode()Landroidx/compose/ui/semantics/SemanticsNode;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$Role$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$Role$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$TestTag$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$TestTag$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$Text$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties$Text$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getCollectionInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getCollectionItemInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getContentDescription()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getEditableText()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getFocused()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getHorizontalScrollAxisRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getImeAction()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getLiveRegion()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getPaneTitle()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getProgressBarRangeInfo()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getRole()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getSelected()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getStateDescription()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTestTag()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getText()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getTextSelectionRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getToggleableState()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsProperties;->getVerticalScrollAxisRange()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->dismiss$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->dismiss(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->getTextLayoutResult(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onClick$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->onClick(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->requestFocus(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setContentDescription(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setFocused(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Z)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setRole-kuIjeqM(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;I)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setText(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/text/AnnotatedString;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey$1;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey$1;-><init>()V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;-><clinit>()V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;-><init>(Ljava/lang/String;Lkotlin/jvm/functions/Function2;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;-><init>(Ljava/lang/String;Lkotlin/jvm/functions/Function2;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/semantics/SemanticsPropertyKey;->setValue(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Lkotlin/reflect/KProperty;Ljava/lang/Object;)V
+HSPLandroidx/compose/ui/text/AndroidParagraph$wordBoundary$2;-><init>(Landroidx/compose/ui/text/AndroidParagraph;)V
+HSPLandroidx/compose/ui/text/AndroidParagraph;-><init>(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;IZJ)V
+HSPLandroidx/compose/ui/text/AndroidParagraph;-><init>(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;IZJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/AndroidParagraph;->constructTextLayout(IILandroid/text/TextUtils$TruncateAt;IIIII)Landroidx/compose/ui/text/android/TextLayout;
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getDidExceedMaxLines()Z
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getFirstBaseline()F
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getHeight()F
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getLastBaseline()F
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getLineBaseline$ui_text_release(I)F
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getLineCount()I
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getPlaceholderRects()Ljava/util/List;
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getShaderBrushSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/platform/style/ShaderBrushSpan;
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getTextPaint$ui_text_release()Landroidx/compose/ui/text/platform/AndroidTextPaint;
+HSPLandroidx/compose/ui/text/AndroidParagraph;->getWidth()F
+HSPLandroidx/compose/ui/text/AndroidParagraph;->paint(Landroidx/compose/ui/graphics/Canvas;)V
+HSPLandroidx/compose/ui/text/AndroidParagraph;->paint-iJQMabo(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$shouldAttachIndentationFixSpan(Landroidx/compose/ui/text/TextStyle;Z)Z
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutAlign-AMY3VfE(Landroidx/compose/ui/text/style/TextAlign;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutBreakStrategy-u6PBz3U(Landroidx/compose/ui/text/style/LineBreak$Strategy;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutHyphenationFrequency(Landroidx/compose/ui/text/style/Hyphens;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutLineBreakStyle-4a2g8L8(Landroidx/compose/ui/text/style/LineBreak$Strictness;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->access$toLayoutLineBreakWordStyle-gvcdTPQ(Landroidx/compose/ui/text/style/LineBreak$WordBreak;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->shouldAttachIndentationFixSpan(Landroidx/compose/ui/text/TextStyle;Z)Z
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutAlign-AMY3VfE(Landroidx/compose/ui/text/style/TextAlign;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutBreakStrategy-u6PBz3U(Landroidx/compose/ui/text/style/LineBreak$Strategy;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutHyphenationFrequency(Landroidx/compose/ui/text/style/Hyphens;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutLineBreakStyle-4a2g8L8(Landroidx/compose/ui/text/style/LineBreak$Strictness;)I
+HSPLandroidx/compose/ui/text/AndroidParagraph_androidKt;->toLayoutLineBreakWordStyle-gvcdTPQ(Landroidx/compose/ui/text/style/LineBreak$WordBreak;)I
+HSPLandroidx/compose/ui/text/AnnotatedString$Range;-><init>(Ljava/lang/Object;II)V
+HSPLandroidx/compose/ui/text/AnnotatedString$Range;-><init>(Ljava/lang/Object;IILjava/lang/String;)V
+HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getEnd()I
+HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getItem()Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/AnnotatedString$Range;->getStart()I
+HSPLandroidx/compose/ui/text/AnnotatedString$special$$inlined$sortedBy$1;-><init>()V
+HSPLandroidx/compose/ui/text/AnnotatedString;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
+HSPLandroidx/compose/ui/text/AnnotatedString;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/AnnotatedString;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
+HSPLandroidx/compose/ui/text/AnnotatedString;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/AnnotatedString;->getParagraphStyles()Ljava/util/List;
+HSPLandroidx/compose/ui/text/AnnotatedString;->getSpanStyles()Ljava/util/List;
+HSPLandroidx/compose/ui/text/AnnotatedString;->getText()Ljava/lang/String;
+HSPLandroidx/compose/ui/text/AnnotatedStringKt;-><clinit>()V
+HSPLandroidx/compose/ui/text/AnnotatedStringKt;->access$substringWithoutParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;II)Landroidx/compose/ui/text/AnnotatedString;
+HSPLandroidx/compose/ui/text/AnnotatedStringKt;->getLocalSpanStyles(Landroidx/compose/ui/text/AnnotatedString;II)Ljava/util/List;
+HSPLandroidx/compose/ui/text/AnnotatedStringKt;->normalizedParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/ParagraphStyle;)Ljava/util/List;
+HSPLandroidx/compose/ui/text/AnnotatedStringKt;->substringWithoutParagraphStyles(Landroidx/compose/ui/text/AnnotatedString;II)Landroidx/compose/ui/text/AnnotatedString;
+HSPLandroidx/compose/ui/text/MultiParagraph;-><clinit>()V
+HSPLandroidx/compose/ui/text/MultiParagraph;-><init>(Landroidx/compose/ui/text/MultiParagraphIntrinsics;JIZ)V
+HSPLandroidx/compose/ui/text/MultiParagraph;-><init>(Landroidx/compose/ui/text/MultiParagraphIntrinsics;JIZLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/MultiParagraph;->getDidExceedMaxLines()Z
+HSPLandroidx/compose/ui/text/MultiParagraph;->getFirstBaseline()F
+HSPLandroidx/compose/ui/text/MultiParagraph;->getHeight()F
+HSPLandroidx/compose/ui/text/MultiParagraph;->getIntrinsics()Landroidx/compose/ui/text/MultiParagraphIntrinsics;
+HSPLandroidx/compose/ui/text/MultiParagraph;->getLastBaseline()F
+HSPLandroidx/compose/ui/text/MultiParagraph;->getPlaceholderRects()Ljava/util/List;
+HSPLandroidx/compose/ui/text/MultiParagraph;->getWidth()F
+HSPLandroidx/compose/ui/text/MultiParagraph;->paint-iJQMabo(Landroidx/compose/ui/graphics/Canvas;JLandroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;-><init>(Landroidx/compose/ui/text/MultiParagraphIntrinsics;)V
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;->invoke()Ljava/lang/Float;
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics$minIntrinsicWidth$2;-><init>(Landroidx/compose/ui/text/MultiParagraphIntrinsics;)V
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;-><clinit>()V
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;-><init>(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)V
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->access$resolveTextDirection(Landroidx/compose/ui/text/MultiParagraphIntrinsics;Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle;
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getHasStaleResolvedFonts()Z
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getInfoList$ui_text_release()Ljava/util/List;
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getMaxIntrinsicWidth()F
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->getPlaceholders()Ljava/util/List;
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsics;->resolveTextDirection(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle;
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsicsKt;->access$getLocalPlaceholders(Ljava/util/List;II)Ljava/util/List;
+HSPLandroidx/compose/ui/text/MultiParagraphIntrinsicsKt;->getLocalPlaceholders(Ljava/util/List;II)Ljava/util/List;
+HSPLandroidx/compose/ui/text/ParagraphInfo;-><init>(Landroidx/compose/ui/text/Paragraph;IIIIFF)V
+HSPLandroidx/compose/ui/text/ParagraphInfo;->getParagraph()Landroidx/compose/ui/text/Paragraph;
+HSPLandroidx/compose/ui/text/ParagraphInfo;->toGlobalYPosition(F)F
+HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;-><init>(Landroidx/compose/ui/text/ParagraphIntrinsics;II)V
+HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getEndIndex()I
+HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getIntrinsics()Landroidx/compose/ui/text/ParagraphIntrinsics;
+HSPLandroidx/compose/ui/text/ParagraphIntrinsicInfo;->getStartIndex()I
+HSPLandroidx/compose/ui/text/ParagraphIntrinsicsKt;->ParagraphIntrinsics(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)Landroidx/compose/ui/text/ParagraphIntrinsics;
+HSPLandroidx/compose/ui/text/ParagraphKt;->Paragraph-_EkL_-Y(Landroidx/compose/ui/text/ParagraphIntrinsics;JIZ)Landroidx/compose/ui/text/Paragraph;
+HSPLandroidx/compose/ui/text/ParagraphKt;->ceilToInt(F)I
+HSPLandroidx/compose/ui/text/ParagraphStyle;-><init>(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;)V
+HSPLandroidx/compose/ui/text/ParagraphStyle;-><init>(Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Landroidx/compose/ui/text/PlatformParagraphStyle;Landroidx/compose/ui/text/style/LineHeightStyle;Landroidx/compose/ui/text/style/LineBreak;Landroidx/compose/ui/text/style/Hyphens;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/ParagraphStyle;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/ParagraphStyle;->getHyphens()Landroidx/compose/ui/text/style/Hyphens;
+HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineBreak()Landroidx/compose/ui/text/style/LineBreak;
+HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineHeight-XSAIIZE()J
+HSPLandroidx/compose/ui/text/ParagraphStyle;->getLineHeightStyle()Landroidx/compose/ui/text/style/LineHeightStyle;
+HSPLandroidx/compose/ui/text/ParagraphStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformParagraphStyle;
+HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextAlign-buA522U()Landroidx/compose/ui/text/style/TextAlign;
+HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextDirection-mmuk1to()Landroidx/compose/ui/text/style/TextDirection;
+HSPLandroidx/compose/ui/text/ParagraphStyle;->getTextIndent()Landroidx/compose/ui/text/style/TextIndent;
+HSPLandroidx/compose/ui/text/ParagraphStyle;->merge(Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/ParagraphStyle;
+HSPLandroidx/compose/ui/text/ParagraphStyle;->mergePlatformStyle(Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformParagraphStyle;
+HSPLandroidx/compose/ui/text/ParagraphStyleKt;-><clinit>()V
+HSPLandroidx/compose/ui/text/ParagraphStyleKt;->resolveParagraphStyleDefaults(Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/ParagraphStyle;
+HSPLandroidx/compose/ui/text/SpanStyle;-><init>(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;)V
+HSPLandroidx/compose/ui/text/SpanStyle;-><init>(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/SpanStyle;-><init>(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;)V
+HSPLandroidx/compose/ui/text/SpanStyle;-><init>(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/SpanStyle;-><init>(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/SpanStyle;-><init>(Landroidx/compose/ui/text/style/TextForegroundStyle;JLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V
+HSPLandroidx/compose/ui/text/SpanStyle;-><init>(Landroidx/compose/ui/text/style/TextForegroundStyle;JLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/SpanStyle;-><init>(Landroidx/compose/ui/text/style/TextForegroundStyle;JLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/graphics/drawscope/DrawStyle;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/SpanStyle;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/SpanStyle;->getAlpha()F
+HSPLandroidx/compose/ui/text/SpanStyle;->getBackground-0d7_KjU()J
+HSPLandroidx/compose/ui/text/SpanStyle;->getBaselineShift-5SSeXJ0()Landroidx/compose/ui/text/style/BaselineShift;
+HSPLandroidx/compose/ui/text/SpanStyle;->getBrush()Landroidx/compose/ui/graphics/Brush;
+HSPLandroidx/compose/ui/text/SpanStyle;->getColor-0d7_KjU()J
+HSPLandroidx/compose/ui/text/SpanStyle;->getDrawStyle()Landroidx/compose/ui/graphics/drawscope/DrawStyle;
+HSPLandroidx/compose/ui/text/SpanStyle;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily;
+HSPLandroidx/compose/ui/text/SpanStyle;->getFontFeatureSettings()Ljava/lang/String;
+HSPLandroidx/compose/ui/text/SpanStyle;->getFontSize-XSAIIZE()J
+HSPLandroidx/compose/ui/text/SpanStyle;->getFontStyle-4Lr2A7w()Landroidx/compose/ui/text/font/FontStyle;
+HSPLandroidx/compose/ui/text/SpanStyle;->getFontSynthesis-ZQGJjVo()Landroidx/compose/ui/text/font/FontSynthesis;
+HSPLandroidx/compose/ui/text/SpanStyle;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/SpanStyle;->getLetterSpacing-XSAIIZE()J
+HSPLandroidx/compose/ui/text/SpanStyle;->getLocaleList()Landroidx/compose/ui/text/intl/LocaleList;
+HSPLandroidx/compose/ui/text/SpanStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformSpanStyle;
+HSPLandroidx/compose/ui/text/SpanStyle;->getShadow()Landroidx/compose/ui/graphics/Shadow;
+HSPLandroidx/compose/ui/text/SpanStyle;->getTextDecoration()Landroidx/compose/ui/text/style/TextDecoration;
+HSPLandroidx/compose/ui/text/SpanStyle;->getTextForegroundStyle$ui_text_release()Landroidx/compose/ui/text/style/TextForegroundStyle;
+HSPLandroidx/compose/ui/text/SpanStyle;->getTextGeometricTransform()Landroidx/compose/ui/text/style/TextGeometricTransform;
+HSPLandroidx/compose/ui/text/SpanStyle;->hasSameLayoutAffectingAttributes$ui_text_release(Landroidx/compose/ui/text/SpanStyle;)Z
+HSPLandroidx/compose/ui/text/SpanStyle;->hasSameNonLayoutAttributes(Landroidx/compose/ui/text/SpanStyle;)Z
+HSPLandroidx/compose/ui/text/SpanStyle;->merge(Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle;
+HSPLandroidx/compose/ui/text/SpanStyle;->mergePlatformStyle(Landroidx/compose/ui/text/PlatformSpanStyle;)Landroidx/compose/ui/text/PlatformSpanStyle;
+HSPLandroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1;-><clinit>()V
+HSPLandroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1;-><init>()V
+HSPLandroidx/compose/ui/text/SpanStyleKt;-><clinit>()V
+HSPLandroidx/compose/ui/text/SpanStyleKt;->resolveSpanStyleDefaults(Landroidx/compose/ui/text/SpanStyle;)Landroidx/compose/ui/text/SpanStyle;
+HSPLandroidx/compose/ui/text/TextLayoutInput;-><clinit>()V
+HSPLandroidx/compose/ui/text/TextLayoutInput;-><init>(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/Font$ResourceLoader;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)V
+HSPLandroidx/compose/ui/text/TextLayoutInput;-><init>(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;J)V
+HSPLandroidx/compose/ui/text/TextLayoutInput;-><init>(Landroidx/compose/ui/text/AnnotatedString;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;IZILandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/font/FontFamily$Resolver;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/TextLayoutInput;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/TextLayoutInput;->getStyle()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/ui/text/TextLayoutInput;->getText()Landroidx/compose/ui/text/AnnotatedString;
+HSPLandroidx/compose/ui/text/TextLayoutResult;-><clinit>()V
+HSPLandroidx/compose/ui/text/TextLayoutResult;-><init>(Landroidx/compose/ui/text/TextLayoutInput;Landroidx/compose/ui/text/MultiParagraph;J)V
+HSPLandroidx/compose/ui/text/TextLayoutResult;-><init>(Landroidx/compose/ui/text/TextLayoutInput;Landroidx/compose/ui/text/MultiParagraph;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/TextLayoutResult;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getDidOverflowHeight()Z
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getDidOverflowWidth()Z
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getFirstBaseline()F
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getHasVisualOverflow()Z
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getLastBaseline()F
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getLayoutInput()Landroidx/compose/ui/text/TextLayoutInput;
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getMultiParagraph()Landroidx/compose/ui/text/MultiParagraph;
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getPlaceholderRects()Ljava/util/List;
+HSPLandroidx/compose/ui/text/TextLayoutResult;->getSize-YbymL2g()J
+HSPLandroidx/compose/ui/text/TextPainter;-><clinit>()V
+HSPLandroidx/compose/ui/text/TextPainter;-><init>()V
+HSPLandroidx/compose/ui/text/TextPainter;->paint(Landroidx/compose/ui/graphics/Canvas;Landroidx/compose/ui/text/TextLayoutResult;)V
+HSPLandroidx/compose/ui/text/TextRange$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/TextRange$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/TextRange$Companion;->getZero-d9O1mEE()J
+HSPLandroidx/compose/ui/text/TextRange;-><clinit>()V
+HSPLandroidx/compose/ui/text/TextRange;->access$getZero$cp()J
+HSPLandroidx/compose/ui/text/TextRange;->constructor-impl(J)J
+HSPLandroidx/compose/ui/text/TextRange;->getEnd-impl(J)I
+HSPLandroidx/compose/ui/text/TextRange;->getStart-impl(J)I
+HSPLandroidx/compose/ui/text/TextRangeKt;->TextRange(I)J
+HSPLandroidx/compose/ui/text/TextRangeKt;->TextRange(II)J
+HSPLandroidx/compose/ui/text/TextRangeKt;->constrain-8ffj60Q(JII)J
+HSPLandroidx/compose/ui/text/TextRangeKt;->packWithCheck(II)J
+HSPLandroidx/compose/ui/text/TextStyle$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/TextStyle$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/TextStyle$Companion;->getDefault()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/ui/text/TextStyle;-><clinit>()V
+HSPLandroidx/compose/ui/text/TextStyle;-><init>(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;)V
+HSPLandroidx/compose/ui/text/TextStyle;-><init>(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/TextStyle;-><init>(JJLandroidx/compose/ui/text/font/FontWeight;Landroidx/compose/ui/text/font/FontStyle;Landroidx/compose/ui/text/font/FontSynthesis;Landroidx/compose/ui/text/font/FontFamily;Ljava/lang/String;JLandroidx/compose/ui/text/style/BaselineShift;Landroidx/compose/ui/text/style/TextGeometricTransform;Landroidx/compose/ui/text/intl/LocaleList;JLandroidx/compose/ui/text/style/TextDecoration;Landroidx/compose/ui/graphics/Shadow;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/style/TextDirection;JLandroidx/compose/ui/text/style/TextIndent;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/TextStyle;-><init>(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;)V
+HSPLandroidx/compose/ui/text/TextStyle;-><init>(Landroidx/compose/ui/text/SpanStyle;Landroidx/compose/ui/text/ParagraphStyle;Landroidx/compose/ui/text/PlatformTextStyle;)V
+HSPLandroidx/compose/ui/text/TextStyle;->access$getDefault$cp()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/TextStyle;->getAlpha()F
+HSPLandroidx/compose/ui/text/TextStyle;->getBrush()Landroidx/compose/ui/graphics/Brush;
+HSPLandroidx/compose/ui/text/TextStyle;->getColor-0d7_KjU()J
+HSPLandroidx/compose/ui/text/TextStyle;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily;
+HSPLandroidx/compose/ui/text/TextStyle;->getFontStyle-4Lr2A7w()Landroidx/compose/ui/text/font/FontStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->getFontSynthesis-ZQGJjVo()Landroidx/compose/ui/text/font/FontSynthesis;
+HSPLandroidx/compose/ui/text/TextStyle;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/TextStyle;->getLineBreak()Landroidx/compose/ui/text/style/LineBreak;
+HSPLandroidx/compose/ui/text/TextStyle;->getLineHeight-XSAIIZE()J
+HSPLandroidx/compose/ui/text/TextStyle;->getLineHeightStyle()Landroidx/compose/ui/text/style/LineHeightStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->getLocaleList()Landroidx/compose/ui/text/intl/LocaleList;
+HSPLandroidx/compose/ui/text/TextStyle;->getParagraphStyle$ui_text_release()Landroidx/compose/ui/text/ParagraphStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->getPlatformStyle()Landroidx/compose/ui/text/PlatformTextStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->getSpanStyle$ui_text_release()Landroidx/compose/ui/text/SpanStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->getTextAlign-buA522U()Landroidx/compose/ui/text/style/TextAlign;
+HSPLandroidx/compose/ui/text/TextStyle;->getTextDecoration()Landroidx/compose/ui/text/style/TextDecoration;
+HSPLandroidx/compose/ui/text/TextStyle;->getTextDirection-mmuk1to()Landroidx/compose/ui/text/style/TextDirection;
+HSPLandroidx/compose/ui/text/TextStyle;->getTextIndent()Landroidx/compose/ui/text/style/TextIndent;
+HSPLandroidx/compose/ui/text/TextStyle;->merge(Landroidx/compose/ui/text/ParagraphStyle;)Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->merge(Landroidx/compose/ui/text/TextStyle;)Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->toParagraphStyle()Landroidx/compose/ui/text/ParagraphStyle;
+HSPLandroidx/compose/ui/text/TextStyle;->toSpanStyle()Landroidx/compose/ui/text/SpanStyle;
+HSPLandroidx/compose/ui/text/TextStyleKt$WhenMappings;-><clinit>()V
+HSPLandroidx/compose/ui/text/TextStyleKt;->access$createPlatformTextStyleInternal(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformTextStyle;
+HSPLandroidx/compose/ui/text/TextStyleKt;->createPlatformTextStyleInternal(Landroidx/compose/ui/text/PlatformSpanStyle;Landroidx/compose/ui/text/PlatformParagraphStyle;)Landroidx/compose/ui/text/PlatformTextStyle;
+HSPLandroidx/compose/ui/text/TextStyleKt;->resolveDefaults(Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/unit/LayoutDirection;)Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/ui/text/TextStyleKt;->resolveTextDirection-Yj3eThk(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/text/style/TextDirection;)I
+HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;-><init>()V
+HSPLandroidx/compose/ui/text/android/BoringLayoutFactory33;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;)Landroid/text/BoringLayout$Metrics;
+HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;-><init>()V
+HSPLandroidx/compose/ui/text/android/BoringLayoutFactory;->measure(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;)Landroid/text/BoringLayout$Metrics;
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics$boringMetrics$2;-><init>(ILjava/lang/CharSequence;Landroid/text/TextPaint;)V
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics$boringMetrics$2;->invoke()Landroid/text/BoringLayout$Metrics;
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics$boringMetrics$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics$maxIntrinsicWidth$2;-><init>(Landroidx/compose/ui/text/android/LayoutIntrinsics;Ljava/lang/CharSequence;Landroid/text/TextPaint;)V
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics$maxIntrinsicWidth$2;->invoke()Ljava/lang/Float;
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics$maxIntrinsicWidth$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics$minIntrinsicWidth$2;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;)V
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;I)V
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->getBoringMetrics()Landroid/text/BoringLayout$Metrics;
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsics;->getMaxIntrinsicWidth()F
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->access$shouldIncreaseMaxIntrinsic(FLjava/lang/CharSequence;Landroid/text/TextPaint;)Z
+HSPLandroidx/compose/ui/text/android/LayoutIntrinsicsKt;->shouldIncreaseMaxIntrinsic(FLjava/lang/CharSequence;Landroid/text/TextPaint;)Z
+HSPLandroidx/compose/ui/text/android/SpannedExtensionsKt;->hasSpan(Landroid/text/Spanned;Ljava/lang/Class;)Z
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory23;-><init>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory23;->create(Landroidx/compose/ui/text/android/StaticLayoutParams;)Landroid/text/StaticLayout;
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;-><init>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory26;->setJustificationMode(Landroid/text/StaticLayout$Builder;I)V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;-><init>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory28;->setUseLineSpacingFromFallbacks(Landroid/text/StaticLayout$Builder;Z)V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;-><init>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory33;->setLineBreakConfig(Landroid/text/StaticLayout$Builder;II)V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;-><init>()V
+HSPLandroidx/compose/ui/text/android/StaticLayoutFactory;->create(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/TextDirectionHeuristic;Landroid/text/Layout$Alignment;ILandroid/text/TextUtils$TruncateAt;IFFIZZIIII[I[I)Landroid/text/StaticLayout;
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;-><init>(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/TextDirectionHeuristic;Landroid/text/Layout$Alignment;ILandroid/text/TextUtils$TruncateAt;IFFIZZIIII[I[I)V
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getAlignment()Landroid/text/Layout$Alignment;
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getBreakStrategy()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEllipsize()Landroid/text/TextUtils$TruncateAt;
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEllipsizedWidth()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getEnd()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getHyphenationFrequency()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getIncludePadding()Z
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getJustificationMode()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLeftIndents()[I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineBreakStyle()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineBreakWordStyle()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineSpacingExtra()F
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getLineSpacingMultiplier()F
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getMaxLines()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getPaint()Landroid/text/TextPaint;
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getRightIndents()[I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getStart()I
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getText()Ljava/lang/CharSequence;
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getTextDir()Landroid/text/TextDirectionHeuristic;
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getUseFallbackLineSpacing()Z
+HSPLandroidx/compose/ui/text/android/StaticLayoutParams;->getWidth()I
+HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;-><init>()V
+HSPLandroidx/compose/ui/text/android/TextAlignmentAdapter;->get(I)Landroid/text/Layout$Alignment;
+HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;-><init>()V
+HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V
+HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->getClipBounds(Landroid/graphics/Rect;)Z
+HSPLandroidx/compose/ui/text/android/TextAndroidCanvas;->setCanvas(Landroid/graphics/Canvas;)V
+HSPLandroidx/compose/ui/text/android/TextLayout$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/android/TextLayout$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/android/TextLayout$layoutHelper$2;-><init>(Landroidx/compose/ui/text/android/TextLayout;)V
+HSPLandroidx/compose/ui/text/android/TextLayout;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/TextLayout;-><init>(Ljava/lang/CharSequence;FLandroid/text/TextPaint;ILandroid/text/TextUtils$TruncateAt;IFFZZIIIIII[I[ILandroidx/compose/ui/text/android/LayoutIntrinsics;)V
+HSPLandroidx/compose/ui/text/android/TextLayout;-><init>(Ljava/lang/CharSequence;FLandroid/text/TextPaint;ILandroid/text/TextUtils$TruncateAt;IFFZZIIIIII[I[ILandroidx/compose/ui/text/android/LayoutIntrinsics;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/android/TextLayout;->getDidExceedMaxLines()Z
+HSPLandroidx/compose/ui/text/android/TextLayout;->getHeight()I
+HSPLandroidx/compose/ui/text/android/TextLayout;->getIncludePadding()Z
+HSPLandroidx/compose/ui/text/android/TextLayout;->getLayout()Landroid/text/Layout;
+HSPLandroidx/compose/ui/text/android/TextLayout;->getLineBaseline(I)F
+HSPLandroidx/compose/ui/text/android/TextLayout;->getLineCount()I
+HSPLandroidx/compose/ui/text/android/TextLayout;->getText()Ljava/lang/CharSequence;
+HSPLandroidx/compose/ui/text/android/TextLayout;->paint(Landroid/graphics/Canvas;)V
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLastLineMetrics(Landroidx/compose/ui/text/android/TextLayout;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)Lkotlin/Pair;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLineHeightPaddings(Landroidx/compose/ui/text/android/TextLayout;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)Lkotlin/Pair;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getLineHeightSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->access$getVerticalPaddings(Landroidx/compose/ui/text/android/TextLayout;)Lkotlin/Pair;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLastLineMetrics(Landroidx/compose/ui/text/android/TextLayout;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)Lkotlin/Pair;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLineHeightPaddings(Landroidx/compose/ui/text/android/TextLayout;[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;)Lkotlin/Pair;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getLineHeightSpans(Landroidx/compose/ui/text/android/TextLayout;)[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getTextDirectionHeuristic(I)Landroid/text/TextDirectionHeuristic;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->getVerticalPaddings(Landroidx/compose/ui/text/android/TextLayout;)Lkotlin/Pair;
+HSPLandroidx/compose/ui/text/android/TextLayoutKt;->isLineEllipsized(Landroid/text/Layout;I)Z
+HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedLeftPadding$default(Landroid/text/Layout;ILandroid/graphics/Paint;ILjava/lang/Object;)F
+HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedLeftPadding(Landroid/text/Layout;ILandroid/graphics/Paint;)F
+HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedRightPadding$default(Landroid/text/Layout;ILandroid/graphics/Paint;ILjava/lang/Object;)F
+HSPLandroidx/compose/ui/text/android/style/IndentationFixSpanKt;->getEllipsizedRightPadding(Landroid/text/Layout;ILandroid/graphics/Paint;)F
+HSPLandroidx/compose/ui/text/android/style/LineHeightSpan;-><clinit>()V
+HSPLandroidx/compose/ui/text/android/style/LineHeightSpan;-><init>(F)V
+HSPLandroidx/compose/ui/text/android/style/LineHeightSpan;->chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V
+HSPLandroidx/compose/ui/text/android/style/LineHeightStyleSpanKt;->lineHeight(Landroid/graphics/Paint$FontMetricsInt;)I
+HSPLandroidx/compose/ui/text/caches/ContainerHelpersKt;-><clinit>()V
+HSPLandroidx/compose/ui/text/caches/LruCache;-><init>(I)V
+HSPLandroidx/compose/ui/text/caches/LruCache;->access$getMonitor$p(Landroidx/compose/ui/text/caches/LruCache;)Landroidx/compose/ui/text/platform/SynchronizedObject;
+HSPLandroidx/compose/ui/text/caches/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/caches/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/caches/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/caches/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroidx/compose/ui/text/caches/LruCache;->size()I
+HSPLandroidx/compose/ui/text/caches/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroidx/compose/ui/text/caches/LruCache;->trimToSize(I)V
+HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;-><init>(I)V
+HSPLandroidx/compose/ui/text/caches/SimpleArrayMap;-><init>(IILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/AndroidFontLoader;-><init>(Landroid/content/Context;)V
+HSPLandroidx/compose/ui/text/font/AndroidFontLoader;->getCacheKey()Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor;-><init>(I)V
+HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor;->interceptFontWeight(Landroidx/compose/ui/text/font/FontWeight;)Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/font/AndroidFontResolveInterceptor_androidKt;->AndroidFontResolveInterceptor(Landroid/content/Context;)Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor;
+HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/font/AsyncTypefaceCache;-><init>()V
+HSPLandroidx/compose/ui/text/font/DefaultFontFamily;-><init>()V
+HSPLandroidx/compose/ui/text/font/FontFamily$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/font/FontFamily$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->getDefault()Landroidx/compose/ui/text/font/SystemFontFamily;
+HSPLandroidx/compose/ui/text/font/FontFamily$Companion;->getSansSerif()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/ui/text/font/FontFamily;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/FontFamily;-><init>(Z)V
+HSPLandroidx/compose/ui/text/font/FontFamily;-><init>(ZLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/FontFamily;->access$getDefault$cp()Landroidx/compose/ui/text/font/SystemFontFamily;
+HSPLandroidx/compose/ui/text/font/FontFamily;->access$getSansSerif$cp()Landroidx/compose/ui/text/font/GenericFontFamily;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$createDefaultTypeface$1;-><init>(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)V
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;-><init>(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;Landroidx/compose/ui/text/font/TypefaceRequest;)V
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;->invoke(Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;-><init>(Landroidx/compose/ui/text/font/PlatformFontLoader;Landroidx/compose/ui/text/font/PlatformResolveInterceptor;Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;)V
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;-><init>(Landroidx/compose/ui/text/font/PlatformFontLoader;Landroidx/compose/ui/text/font/PlatformResolveInterceptor;Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getCreateDefaultTypeface$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Lkotlin/jvm/functions/Function1;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getFontListFontFamilyTypefaceAdapter$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->access$getPlatformFamilyTypefaceAdapter$p(Landroidx/compose/ui/text/font/FontFamilyResolverImpl;)Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->getPlatformFontLoader$ui_text_release()Landroidx/compose/ui/text/font/PlatformFontLoader;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverImpl;->resolve-DPcqOEQ(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;II)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->getGlobalAsyncTypefaceCache()Landroidx/compose/ui/text/font/AsyncTypefaceCache;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolverKt;->getGlobalTypefaceRequestCache()Landroidx/compose/ui/text/font/TypefaceRequestCache;
+HSPLandroidx/compose/ui/text/font/FontFamilyResolver_androidKt;->createFontFamilyResolver(Landroid/content/Context;)Landroidx/compose/ui/text/font/FontFamily$Resolver;
+HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1;-><init>(Lkotlinx/coroutines/CoroutineExceptionHandler$Key;)V
+HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;-><init>(Landroidx/compose/ui/text/font/AsyncTypefaceCache;Lkotlin/coroutines/CoroutineContext;)V
+HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;-><init>(Landroidx/compose/ui/text/font/AsyncTypefaceCache;Lkotlin/coroutines/CoroutineContext;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult;
+HSPLandroidx/compose/ui/text/font/FontMatcher;-><init>()V
+HSPLandroidx/compose/ui/text/font/FontStyle$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/font/FontStyle$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->getItalic-_-LCdwA()I
+HSPLandroidx/compose/ui/text/font/FontStyle$Companion;->getNormal-_-LCdwA()I
+HSPLandroidx/compose/ui/text/font/FontStyle;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/FontStyle;-><init>(I)V
+HSPLandroidx/compose/ui/text/font/FontStyle;->access$getItalic$cp()I
+HSPLandroidx/compose/ui/text/font/FontStyle;->access$getNormal$cp()I
+HSPLandroidx/compose/ui/text/font/FontStyle;->box-impl(I)Landroidx/compose/ui/text/font/FontStyle;
+HSPLandroidx/compose/ui/text/font/FontStyle;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/font/FontStyle;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/text/font/FontStyle;->hashCode-impl(I)I
+HSPLandroidx/compose/ui/text/font/FontStyle;->unbox-impl()I
+HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/FontSynthesis$Companion;->getAll-GVVA2EU()I
+HSPLandroidx/compose/ui/text/font/FontSynthesis;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/FontSynthesis;-><init>(I)V
+HSPLandroidx/compose/ui/text/font/FontSynthesis;->access$getAll$cp()I
+HSPLandroidx/compose/ui/text/font/FontSynthesis;->box-impl(I)Landroidx/compose/ui/text/font/FontSynthesis;
+HSPLandroidx/compose/ui/text/font/FontSynthesis;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/font/FontSynthesis;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/text/font/FontSynthesis;->hashCode-impl(I)I
+HSPLandroidx/compose/ui/text/font/FontSynthesis;->unbox-impl()I
+HSPLandroidx/compose/ui/text/font/FontWeight$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/font/FontWeight$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getBold()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getMedium()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/font/FontWeight$Companion;->getNormal()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/font/FontWeight;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/FontWeight;-><init>(I)V
+HSPLandroidx/compose/ui/text/font/FontWeight;->access$getBold$cp()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/font/FontWeight;->access$getMedium$cp()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/font/FontWeight;->access$getNormal$cp()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/font/FontWeight;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/font/FontWeight;->getWeight()I
+HSPLandroidx/compose/ui/text/font/FontWeight;->hashCode()I
+HSPLandroidx/compose/ui/text/font/GenericFontFamily;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;-><init>()V
+HSPLandroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;->resolve(Landroidx/compose/ui/text/font/TypefaceRequest;Landroidx/compose/ui/text/font/PlatformFontLoader;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/text/font/TypefaceResult;
+HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion$Default$1;-><init>()V
+HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontFamily(Landroidx/compose/ui/text/font/FontFamily;)Landroidx/compose/ui/text/font/FontFamily;
+HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontStyle-T2F_aPo(I)I
+HSPLandroidx/compose/ui/text/font/PlatformResolveInterceptor;->interceptFontSynthesis-Mscr08Y(I)I
+HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;-><init>()V
+HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createAndroidTypefaceApi28-RetOiIg(Ljava/lang/String;Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface;
+HSPLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createDefault-FO1MlWM(Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface;
+HSPLandroidx/compose/ui/text/font/PlatformTypefacesKt;->PlatformTypefaces()Landroidx/compose/ui/text/font/PlatformTypefaces;
+HSPLandroidx/compose/ui/text/font/SystemFontFamily;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/SystemFontFamily;-><init>()V
+HSPLandroidx/compose/ui/text/font/SystemFontFamily;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/TypefaceRequest;-><init>(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;IILjava/lang/Object;)V
+HSPLandroidx/compose/ui/text/font/TypefaceRequest;-><init>(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;IILjava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/TypefaceRequest;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontFamily()Landroidx/compose/ui/text/font/FontFamily;
+HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontStyle-_-LCdwA()I
+HSPLandroidx/compose/ui/text/font/TypefaceRequest;->getFontWeight()Landroidx/compose/ui/text/font/FontWeight;
+HSPLandroidx/compose/ui/text/font/TypefaceRequest;->hashCode()I
+HSPLandroidx/compose/ui/text/font/TypefaceRequestCache$runCached$currentTypefaceResult$1;-><init>(Landroidx/compose/ui/text/font/TypefaceRequestCache;Landroidx/compose/ui/text/font/TypefaceRequest;)V
+HSPLandroidx/compose/ui/text/font/TypefaceRequestCache;-><init>()V
+HSPLandroidx/compose/ui/text/font/TypefaceRequestCache;->runCached(Landroidx/compose/ui/text/font/TypefaceRequest;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/State;
+HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;-><clinit>()V
+HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;-><init>(Ljava/lang/Object;Z)V
+HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;-><init>(Ljava/lang/Object;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->getCacheable()Z
+HSPLandroidx/compose/ui/text/font/TypefaceResult$Immutable;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/input/ImeAction$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/input/ImeAction$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/ImeAction$Companion;->getDefault-eUduSuo()I
+HSPLandroidx/compose/ui/text/input/ImeAction;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/ImeAction;->access$getDefault$cp()I
+HSPLandroidx/compose/ui/text/input/ImeAction;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/ImeOptions$Companion;->getDefault()Landroidx/compose/ui/text/input/ImeOptions;
+HSPLandroidx/compose/ui/text/input/ImeOptions;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/ImeOptions;-><init>(ZIZII)V
+HSPLandroidx/compose/ui/text/input/ImeOptions;-><init>(ZIZIIILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/ImeOptions;-><init>(ZIZIILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/ImeOptions;->access$getDefault$cp()Landroidx/compose/ui/text/input/ImeOptions;
+HSPLandroidx/compose/ui/text/input/ImmHelper30;-><init>(Landroid/view/View;)V
+HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2;-><init>(Landroidx/compose/ui/text/input/InputMethodManagerImpl;)V
+HSPLandroidx/compose/ui/text/input/InputMethodManagerImpl;-><init>(Landroid/view/View;)V
+HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/KeyboardCapitalization$Companion;->getNone-IUNYP9k()I
+HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->access$getNone$cp()I
+HSPLandroidx/compose/ui/text/input/KeyboardCapitalization;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/KeyboardType$Companion;->getText-PjHm6EE()I
+HSPLandroidx/compose/ui/text/input/KeyboardType;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/KeyboardType;->access$getText$cp()I
+HSPLandroidx/compose/ui/text/input/KeyboardType;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1;-><init>()V
+HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;-><init>()V
+HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/input/TextFieldValue$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/TextFieldValue;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/TextFieldValue;-><init>(Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;)V
+HSPLandroidx/compose/ui/text/input/TextFieldValue;-><init>(Landroidx/compose/ui/text/AnnotatedString;JLandroidx/compose/ui/text/TextRange;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/TextFieldValue;-><init>(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;)V
+HSPLandroidx/compose/ui/text/input/TextFieldValue;-><init>(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/TextFieldValue;-><init>(Ljava/lang/String;JLandroidx/compose/ui/text/TextRange;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/input/TextFieldValue;->getText()Ljava/lang/String;
+HSPLandroidx/compose/ui/text/input/TextInputService;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/TextInputService;-><init>(Landroidx/compose/ui/text/input/PlatformTextInputService;)V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$baseInputConnection$2;-><init>(Landroidx/compose/ui/text/input/TextInputServiceAndroid;)V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1;-><init>()V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1;-><clinit>()V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1;-><init>()V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid$textInputCommandEventLoop$1;-><init>(Landroidx/compose/ui/text/input/TextInputServiceAndroid;Lkotlin/coroutines/Continuation;)V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;-><init>(Landroid/view/View;)V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;-><init>(Landroid/view/View;Landroidx/compose/ui/text/input/InputMethodManager;)V
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->isEditorFocused()Z
+HSPLandroidx/compose/ui/text/input/TextInputServiceAndroid;->textInputCommandEventLoop(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/intl/AndroidLocale;-><init>(Ljava/util/Locale;)V
+HSPLandroidx/compose/ui/text/intl/AndroidLocale;->toLanguageTag()Ljava/lang/String;
+HSPLandroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24;-><init>()V
+HSPLandroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24;->getCurrent()Ljava/util/List;
+HSPLandroidx/compose/ui/text/intl/AndroidPlatformLocale_androidKt;->createPlatformLocaleDelegate()Landroidx/compose/ui/text/intl/PlatformLocaleDelegate;
+HSPLandroidx/compose/ui/text/intl/Locale$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/intl/Locale$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/intl/Locale;-><clinit>()V
+HSPLandroidx/compose/ui/text/intl/Locale;-><init>(Landroidx/compose/ui/text/intl/PlatformLocale;)V
+HSPLandroidx/compose/ui/text/intl/Locale;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/intl/Locale;->toLanguageTag()Ljava/lang/String;
+HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/intl/LocaleList$Companion;->getCurrent()Landroidx/compose/ui/text/intl/LocaleList;
+HSPLandroidx/compose/ui/text/intl/LocaleList;-><clinit>()V
+HSPLandroidx/compose/ui/text/intl/LocaleList;-><init>(Ljava/util/List;)V
+HSPLandroidx/compose/ui/text/intl/LocaleList;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/intl/PlatformLocaleKt;-><clinit>()V
+HSPLandroidx/compose/ui/text/intl/PlatformLocaleKt;->getPlatformLocaleDelegate()Landroidx/compose/ui/text/intl/PlatformLocaleDelegate;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt$NoopSpan$1;-><init>()V
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;-><clinit>()V
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->createCharSequence(Ljava/lang/String;FLandroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Lkotlin/jvm/functions/Function4;Z)Ljava/lang/CharSequence;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;->isIncludeFontPaddingEnabled(Landroidx/compose/ui/text/TextStyle;)Z
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;-><init>(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;)V
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;->invoke-DPcqOEQ(Landroidx/compose/ui/text/font/FontFamily;Landroidx/compose/ui/text/font/FontWeight;II)Landroid/graphics/Typeface;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;-><init>(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/text/font/FontFamily$Resolver;Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->access$getResolvedTypefaces$p(Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;)Ljava/util/List;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getCharSequence$ui_text_release()Ljava/lang/CharSequence;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getFontFamilyResolver()Landroidx/compose/ui/text/font/FontFamily$Resolver;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getHasStaleResolvedFonts()Z
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getLayoutIntrinsics$ui_text_release()Landroidx/compose/ui/text/android/LayoutIntrinsics;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getMaxIntrinsicWidth()F
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getStyle()Landroidx/compose/ui/text/TextStyle;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getTextDirectionHeuristic$ui_text_release()I
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;->getTextPaint$ui_text_release()Landroidx/compose/ui/text/platform/AndroidTextPaint;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->ActualParagraphIntrinsics(Ljava/lang/String;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Ljava/util/List;Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/text/font/FontFamily$Resolver;)Landroidx/compose/ui/text/ParagraphIntrinsics;
+HSPLandroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;->resolveTextDirectionHeuristics-9GRLPo0(Landroidx/compose/ui/text/style/TextDirection;Landroidx/compose/ui/text/intl/LocaleList;)I
+HSPLandroidx/compose/ui/text/platform/AndroidParagraph_androidKt;->ActualParagraph--hBUhpc(Landroidx/compose/ui/text/ParagraphIntrinsics;IZJ)Landroidx/compose/ui/text/Paragraph;
+HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;-><init>(IF)V
+HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setBrush-12SF9DM(Landroidx/compose/ui/graphics/Brush;JF)V
+HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setColor-8_81llA(J)V
+HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setDrawStyle(Landroidx/compose/ui/graphics/drawscope/DrawStyle;)V
+HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setShadow(Landroidx/compose/ui/graphics/Shadow;)V
+HSPLandroidx/compose/ui/text/platform/AndroidTextPaint;->setTextDecoration(Landroidx/compose/ui/text/style/TextDecoration;)V
+HSPLandroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/ui/text/platform/DefaultImpl;)V
+HSPLandroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1;->onInitialized()V
+HSPLandroidx/compose/ui/text/platform/DefaultImpl;-><init>()V
+HSPLandroidx/compose/ui/text/platform/DefaultImpl;->access$setLoadState$p(Landroidx/compose/ui/text/platform/DefaultImpl;Landroidx/compose/runtime/State;)V
+HSPLandroidx/compose/ui/text/platform/DefaultImpl;->getFontLoadState()Landroidx/compose/runtime/State;
+HSPLandroidx/compose/ui/text/platform/DefaultImpl;->getFontLoaded()Landroidx/compose/runtime/State;
+HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;-><clinit>()V
+HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;-><init>()V
+HSPLandroidx/compose/ui/text/platform/EmojiCompatStatus;->getFontLoaded()Landroidx/compose/runtime/State;
+HSPLandroidx/compose/ui/text/platform/ImmutableBool;-><init>(Z)V
+HSPLandroidx/compose/ui/text/platform/ImmutableBool;->getValue()Ljava/lang/Boolean;
+HSPLandroidx/compose/ui/text/platform/ImmutableBool;->getValue()Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/platform/Synchronization_jvmKt;->createSynchronizedObject()Landroidx/compose/ui/text/platform/SynchronizedObject;
+HSPLandroidx/compose/ui/text/platform/SynchronizedObject;-><init>()V
+HSPLandroidx/compose/ui/text/platform/TypefaceDirtyTracker;-><init>(Landroidx/compose/runtime/State;)V
+HSPLandroidx/compose/ui/text/platform/TypefaceDirtyTracker;->getTypeface()Landroid/graphics/Typeface;
+HSPLandroidx/compose/ui/text/platform/TypefaceDirtyTracker;->isStaleResolvedFont()Z
+HSPLandroidx/compose/ui/text/platform/extensions/PlaceholderExtensions_androidKt;->setPlaceholders(Landroid/text/Spannable;Ljava/util/List;Landroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1;-><init>(Landroid/text/Spannable;Lkotlin/jvm/functions/Function4;)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->createLetterSpacingSpan-eAf_CNQ(JLandroidx/compose/ui/unit/Density;)Landroid/text/style/MetricAffectingSpan;
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->flattenFontStylesAndApply(Landroidx/compose/ui/text/SpanStyle;Ljava/util/List;Lkotlin/jvm/functions/Function3;)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->hasFontAttributes(Landroidx/compose/ui/text/TextStyle;)Z
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->resolveLineHeightInPx-o2QH7mI(JFLandroidx/compose/ui/unit/Density;)F
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBackground-RPmYEkk(Landroid/text/Spannable;JII)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBaselineShift-0ocSgnM(Landroid/text/Spannable;Landroidx/compose/ui/text/style/BaselineShift;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setBrush(Landroid/text/Spannable;Landroidx/compose/ui/graphics/Brush;FII)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setColor-RPmYEkk(Landroid/text/Spannable;JII)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setDrawStyle(Landroid/text/Spannable;Landroidx/compose/ui/graphics/drawscope/DrawStyle;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontAttributes(Landroid/text/Spannable;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Lkotlin/jvm/functions/Function4;)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontFeatureSettings(Landroid/text/Spannable;Ljava/lang/String;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setFontSize-KmRG4DE(Landroid/text/Spannable;JLandroidx/compose/ui/unit/Density;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setGeometricTransform(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextGeometricTransform;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setLineHeight-r9BaKPg(Landroid/text/Spannable;JFLandroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setLocaleList(Landroid/text/Spannable;Landroidx/compose/ui/text/intl/LocaleList;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setShadow(Landroid/text/Spannable;Landroidx/compose/ui/graphics/Shadow;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpan(Landroid/text/Spannable;Ljava/lang/Object;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpanStyle(Landroid/text/Spannable;Landroidx/compose/ui/text/AnnotatedString$Range;Landroidx/compose/ui/unit/Density;Ljava/util/ArrayList;)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setSpanStyles(Landroid/text/Spannable;Landroidx/compose/ui/text/TextStyle;Ljava/util/List;Landroidx/compose/ui/unit/Density;Lkotlin/jvm/functions/Function4;)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setTextDecoration(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextDecoration;II)V
+HSPLandroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;->setTextIndent(Landroid/text/Spannable;Landroidx/compose/ui/text/style/TextIndent;FLandroidx/compose/ui/unit/Density;)V
+HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->applySpanStyle(Landroidx/compose/ui/text/platform/AndroidTextPaint;Landroidx/compose/ui/text/SpanStyle;Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/unit/Density;)Landroidx/compose/ui/text/SpanStyle;
+HSPLandroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;->hasFontAttributes(Landroidx/compose/ui/text/SpanStyle;)Z
+HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/BaselineShift$Companion;->getNone-y9eOQZs()F
+HSPLandroidx/compose/ui/text/style/BaselineShift;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/BaselineShift;-><init>(F)V
+HSPLandroidx/compose/ui/text/style/BaselineShift;->access$getNone$cp()F
+HSPLandroidx/compose/ui/text/style/BaselineShift;->box-impl(F)Landroidx/compose/ui/text/style/BaselineShift;
+HSPLandroidx/compose/ui/text/style/BaselineShift;->constructor-impl(F)F
+HSPLandroidx/compose/ui/text/style/BaselineShift;->equals-impl0(FF)Z
+HSPLandroidx/compose/ui/text/style/BaselineShift;->unbox-impl()F
+HSPLandroidx/compose/ui/text/style/ColorStyle;-><init>(J)V
+HSPLandroidx/compose/ui/text/style/ColorStyle;-><init>(JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/ColorStyle;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/style/ColorStyle;->getAlpha()F
+HSPLandroidx/compose/ui/text/style/ColorStyle;->getBrush()Landroidx/compose/ui/graphics/Brush;
+HSPLandroidx/compose/ui/text/style/ColorStyle;->getColor-0d7_KjU()J
+HSPLandroidx/compose/ui/text/style/Hyphens$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/Hyphens$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->getAuto()Landroidx/compose/ui/text/style/Hyphens;
+HSPLandroidx/compose/ui/text/style/Hyphens$Companion;->getNone()Landroidx/compose/ui/text/style/Hyphens;
+HSPLandroidx/compose/ui/text/style/Hyphens;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/Hyphens;-><init>()V
+HSPLandroidx/compose/ui/text/style/Hyphens;->access$getAuto$cp()Landroidx/compose/ui/text/style/Hyphens;
+HSPLandroidx/compose/ui/text/style/Hyphens;->access$getNone$cp()Landroidx/compose/ui/text/style/Hyphens;
+HSPLandroidx/compose/ui/text/style/LineBreak$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/LineBreak$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/LineBreak$Companion;->getSimple()Landroidx/compose/ui/text/style/LineBreak;
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getBalanced-fcGXIks()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getHighQuality-fcGXIks()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy$Companion;->getSimple-fcGXIks()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;-><init>(I)V
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getBalanced$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getHighQuality$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->access$getSimple$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$Strategy;
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/text/style/LineBreak$Strategy;->unbox-impl()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getDefault-usljTpc()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getLoose-usljTpc()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getNormal-usljTpc()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness$Companion;->getStrict-usljTpc()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;-><init>(I)V
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getDefault$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getLoose$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getNormal$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->access$getStrict$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$Strictness;
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/text/style/LineBreak$Strictness;->unbox-impl()I
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->getDefault-jp8hJ3c()I
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;->getPhrase-jp8hJ3c()I
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;-><init>(I)V
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->access$getDefault$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->access$getPhrase$cp()I
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->box-impl(I)Landroidx/compose/ui/text/style/LineBreak$WordBreak;
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/text/style/LineBreak$WordBreak;->unbox-impl()I
+HSPLandroidx/compose/ui/text/style/LineBreak;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/LineBreak;-><init>(III)V
+HSPLandroidx/compose/ui/text/style/LineBreak;-><init>(IIILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/LineBreak;->access$getSimple$cp()Landroidx/compose/ui/text/style/LineBreak;
+HSPLandroidx/compose/ui/text/style/LineBreak;->getStrategy-fcGXIks()I
+HSPLandroidx/compose/ui/text/style/LineBreak;->getStrictness-usljTpc()I
+HSPLandroidx/compose/ui/text/style/LineBreak;->getWordBreak-jp8hJ3c()I
+HSPLandroidx/compose/ui/text/style/TextAlign$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/TextAlign$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getCenter-e0LSkKk()I
+HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getJustify-e0LSkKk()I
+HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getLeft-e0LSkKk()I
+HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getRight-e0LSkKk()I
+HSPLandroidx/compose/ui/text/style/TextAlign$Companion;->getStart-e0LSkKk()I
+HSPLandroidx/compose/ui/text/style/TextAlign;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextAlign;-><init>(I)V
+HSPLandroidx/compose/ui/text/style/TextAlign;->access$getCenter$cp()I
+HSPLandroidx/compose/ui/text/style/TextAlign;->access$getJustify$cp()I
+HSPLandroidx/compose/ui/text/style/TextAlign;->access$getLeft$cp()I
+HSPLandroidx/compose/ui/text/style/TextAlign;->access$getRight$cp()I
+HSPLandroidx/compose/ui/text/style/TextAlign;->access$getStart$cp()I
+HSPLandroidx/compose/ui/text/style/TextAlign;->box-impl(I)Landroidx/compose/ui/text/style/TextAlign;
+HSPLandroidx/compose/ui/text/style/TextAlign;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/style/TextAlign;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/style/TextAlign;->equals-impl(ILjava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/style/TextAlign;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/text/style/TextAlign;->unbox-impl()I
+HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->getNone()Landroidx/compose/ui/text/style/TextDecoration;
+HSPLandroidx/compose/ui/text/style/TextDecoration$Companion;->getUnderline()Landroidx/compose/ui/text/style/TextDecoration;
+HSPLandroidx/compose/ui/text/style/TextDecoration;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextDecoration;-><init>(I)V
+HSPLandroidx/compose/ui/text/style/TextDecoration;->access$getNone$cp()Landroidx/compose/ui/text/style/TextDecoration;
+HSPLandroidx/compose/ui/text/style/TextDecoration;->access$getUnderline$cp()Landroidx/compose/ui/text/style/TextDecoration;
+HSPLandroidx/compose/ui/text/style/TextDecoration;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/style/TextDirection$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/TextDirection$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContent-s_7X-co()I
+HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContentOrLtr-s_7X-co()I
+HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getContentOrRtl-s_7X-co()I
+HSPLandroidx/compose/ui/text/style/TextDirection$Companion;->getLtr-s_7X-co()I
+HSPLandroidx/compose/ui/text/style/TextDirection;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextDirection;-><init>(I)V
+HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContent$cp()I
+HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContentOrLtr$cp()I
+HSPLandroidx/compose/ui/text/style/TextDirection;->access$getContentOrRtl$cp()I
+HSPLandroidx/compose/ui/text/style/TextDirection;->access$getLtr$cp()I
+HSPLandroidx/compose/ui/text/style/TextDirection;->box-impl(I)Landroidx/compose/ui/text/style/TextDirection;
+HSPLandroidx/compose/ui/text/style/TextDirection;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/style/TextDirection;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/text/style/TextDirection;->unbox-impl()I
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Companion;->from-8_81llA(J)Landroidx/compose/ui/text/style/TextForegroundStyle;
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;-><init>()V
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getAlpha()F
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getBrush()Landroidx/compose/ui/graphics/Brush;
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;->getColor-0d7_KjU()J
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;-><init>(Landroidx/compose/ui/text/style/TextForegroundStyle;)V
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;->invoke()Landroidx/compose/ui/text/style/TextForegroundStyle;
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle$merge$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle;->merge(Landroidx/compose/ui/text/style/TextForegroundStyle;)Landroidx/compose/ui/text/style/TextForegroundStyle;
+HSPLandroidx/compose/ui/text/style/TextForegroundStyle;->takeOrElse(Lkotlin/jvm/functions/Function0;)Landroidx/compose/ui/text/style/TextForegroundStyle;
+HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/TextGeometricTransform$Companion;->getNone$ui_text_release()Landroidx/compose/ui/text/style/TextGeometricTransform;
+HSPLandroidx/compose/ui/text/style/TextGeometricTransform;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextGeometricTransform;-><init>(FF)V
+HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->access$getNone$cp()Landroidx/compose/ui/text/style/TextGeometricTransform;
+HSPLandroidx/compose/ui/text/style/TextGeometricTransform;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/text/style/TextIndent$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/TextIndent$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/TextIndent$Companion;->getNone()Landroidx/compose/ui/text/style/TextIndent;
+HSPLandroidx/compose/ui/text/style/TextIndent;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextIndent;-><init>(JJ)V
+HSPLandroidx/compose/ui/text/style/TextIndent;-><init>(JJILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/TextIndent;-><init>(JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/TextIndent;->access$getNone$cp()Landroidx/compose/ui/text/style/TextIndent;
+HSPLandroidx/compose/ui/text/style/TextIndent;->getFirstLine-XSAIIZE()J
+HSPLandroidx/compose/ui/text/style/TextIndent;->getRestLine-XSAIIZE()J
+HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;-><init>()V
+HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->getClip-gIe3tQ8()I
+HSPLandroidx/compose/ui/text/style/TextOverflow$Companion;->getEllipsis-gIe3tQ8()I
+HSPLandroidx/compose/ui/text/style/TextOverflow;-><clinit>()V
+HSPLandroidx/compose/ui/text/style/TextOverflow;->access$getClip$cp()I
+HSPLandroidx/compose/ui/text/style/TextOverflow;->access$getEllipsis$cp()I
+HSPLandroidx/compose/ui/text/style/TextOverflow;->constructor-impl(I)I
+HSPLandroidx/compose/ui/text/style/TextOverflow;->equals-impl0(II)Z
+HSPLandroidx/compose/ui/unit/AndroidDensity_androidKt;->Density(Landroid/content/Context;)Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/ui/unit/Constraints$Companion;-><init>()V
+HSPLandroidx/compose/ui/unit/Constraints$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/unit/Constraints$Companion;->bitsNeedForSize(I)I
+HSPLandroidx/compose/ui/unit/Constraints$Companion;->createConstraints-Zbe2FdA$ui_unit_release(IIII)J
+HSPLandroidx/compose/ui/unit/Constraints;-><clinit>()V
+HSPLandroidx/compose/ui/unit/Constraints;-><init>(J)V
+HSPLandroidx/compose/ui/unit/Constraints;->access$getMinHeightOffsets$cp()[I
+HSPLandroidx/compose/ui/unit/Constraints;->box-impl(J)Landroidx/compose/ui/unit/Constraints;
+HSPLandroidx/compose/ui/unit/Constraints;->constructor-impl(J)J
+HSPLandroidx/compose/ui/unit/Constraints;->copy-Zbe2FdA$default(JIIIIILjava/lang/Object;)J
+HSPLandroidx/compose/ui/unit/Constraints;->copy-Zbe2FdA(JIIII)J
+HSPLandroidx/compose/ui/unit/Constraints;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/unit/Constraints;->getFocusIndex-impl(J)I
+HSPLandroidx/compose/ui/unit/Constraints;->getHasBoundedHeight-impl(J)Z
+HSPLandroidx/compose/ui/unit/Constraints;->getHasBoundedWidth-impl(J)Z
+HSPLandroidx/compose/ui/unit/Constraints;->getHasFixedHeight-impl(J)Z
+HSPLandroidx/compose/ui/unit/Constraints;->getHasFixedWidth-impl(J)Z
+HSPLandroidx/compose/ui/unit/Constraints;->getMaxHeight-impl(J)I
+HSPLandroidx/compose/ui/unit/Constraints;->getMaxWidth-impl(J)I
+HSPLandroidx/compose/ui/unit/Constraints;->getMinHeight-impl(J)I
+HSPLandroidx/compose/ui/unit/Constraints;->getMinWidth-impl(J)I
+HSPLandroidx/compose/ui/unit/Constraints;->unbox-impl()J
+HSPLandroidx/compose/ui/unit/ConstraintsKt;->Constraints$default(IIIIILjava/lang/Object;)J
+HSPLandroidx/compose/ui/unit/ConstraintsKt;->Constraints(IIII)J
+HSPLandroidx/compose/ui/unit/ConstraintsKt;->addMaxWithMinimum(II)I
+HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrain-4WqzIAM(JJ)J
+HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrain-N9IONVI(JJ)J
+HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrainHeight-K40F9xA(JI)I
+HSPLandroidx/compose/ui/unit/ConstraintsKt;->constrainWidth-K40F9xA(JI)I
+HSPLandroidx/compose/ui/unit/ConstraintsKt;->offset-NN6Ew-U(JII)J
+HSPLandroidx/compose/ui/unit/Density;->roundToPx-0680j_4(F)I
+HSPLandroidx/compose/ui/unit/Density;->toPx--R2X_6o(J)F
+HSPLandroidx/compose/ui/unit/Density;->toPx-0680j_4(F)F
+HSPLandroidx/compose/ui/unit/DensityImpl;-><init>(FF)V
+HSPLandroidx/compose/ui/unit/DensityImpl;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/unit/DensityImpl;->getDensity()F
+HSPLandroidx/compose/ui/unit/DensityImpl;->getFontScale()F
+HSPLandroidx/compose/ui/unit/DensityKt;->Density$default(FFILjava/lang/Object;)Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/ui/unit/DensityKt;->Density(FF)Landroidx/compose/ui/unit/Density;
+HSPLandroidx/compose/ui/unit/Dp$Companion;-><init>()V
+HSPLandroidx/compose/ui/unit/Dp$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/unit/Dp$Companion;->getHairline-D9Ej5fM()F
+HSPLandroidx/compose/ui/unit/Dp$Companion;->getUnspecified-D9Ej5fM()F
+HSPLandroidx/compose/ui/unit/Dp;-><clinit>()V
+HSPLandroidx/compose/ui/unit/Dp;-><init>(F)V
+HSPLandroidx/compose/ui/unit/Dp;->access$getHairline$cp()F
+HSPLandroidx/compose/ui/unit/Dp;->access$getUnspecified$cp()F
+HSPLandroidx/compose/ui/unit/Dp;->box-impl(F)Landroidx/compose/ui/unit/Dp;
+HSPLandroidx/compose/ui/unit/Dp;->compareTo(Ljava/lang/Object;)I
+HSPLandroidx/compose/ui/unit/Dp;->compareTo-0680j_4(F)I
+HSPLandroidx/compose/ui/unit/Dp;->compareTo-0680j_4(FF)I
+HSPLandroidx/compose/ui/unit/Dp;->constructor-impl(F)F
+HSPLandroidx/compose/ui/unit/Dp;->equals(Ljava/lang/Object;)Z
+HSPLandroidx/compose/ui/unit/Dp;->equals-impl(FLjava/lang/Object;)Z
+HSPLandroidx/compose/ui/unit/Dp;->equals-impl0(FF)Z
+HSPLandroidx/compose/ui/unit/Dp;->unbox-impl()F
+HSPLandroidx/compose/ui/unit/DpKt;->DpOffset-YgX7TsA(FF)J
+HSPLandroidx/compose/ui/unit/DpKt;->DpSize-YgX7TsA(FF)J
+HSPLandroidx/compose/ui/unit/DpOffset$Companion;-><init>()V
+HSPLandroidx/compose/ui/unit/DpOffset$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/unit/DpOffset;-><clinit>()V
+HSPLandroidx/compose/ui/unit/DpOffset;->constructor-impl(J)J
+HSPLandroidx/compose/ui/unit/DpSize$Companion;-><init>()V
+HSPLandroidx/compose/ui/unit/DpSize$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/unit/DpSize;-><clinit>()V
+HSPLandroidx/compose/ui/unit/DpSize;->constructor-impl(J)J
+HSPLandroidx/compose/ui/unit/DpSize;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/unit/DpSize;->getHeight-D9Ej5fM(J)F
+HSPLandroidx/compose/ui/unit/DpSize;->getWidth-D9Ej5fM(J)F
+HSPLandroidx/compose/ui/unit/IntOffset$Companion;-><init>()V
+HSPLandroidx/compose/ui/unit/IntOffset$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/unit/IntOffset$Companion;->getZero-nOcc-ac()J
+HSPLandroidx/compose/ui/unit/IntOffset;-><clinit>()V
+HSPLandroidx/compose/ui/unit/IntOffset;-><init>(J)V
+HSPLandroidx/compose/ui/unit/IntOffset;->access$getZero$cp()J
+HSPLandroidx/compose/ui/unit/IntOffset;->box-impl(J)Landroidx/compose/ui/unit/IntOffset;
+HSPLandroidx/compose/ui/unit/IntOffset;->component1-impl(J)I
+HSPLandroidx/compose/ui/unit/IntOffset;->component2-impl(J)I
+HSPLandroidx/compose/ui/unit/IntOffset;->constructor-impl(J)J
+HSPLandroidx/compose/ui/unit/IntOffset;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/unit/IntOffset;->getX-impl(J)I
+HSPLandroidx/compose/ui/unit/IntOffset;->getY-impl(J)I
+HSPLandroidx/compose/ui/unit/IntOffset;->unbox-impl()J
+HSPLandroidx/compose/ui/unit/IntOffsetKt;->IntOffset(II)J
+HSPLandroidx/compose/ui/unit/IntSize$Companion;-><init>()V
+HSPLandroidx/compose/ui/unit/IntSize$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/unit/IntSize$Companion;->getZero-YbymL2g()J
+HSPLandroidx/compose/ui/unit/IntSize;-><clinit>()V
+HSPLandroidx/compose/ui/unit/IntSize;-><init>(J)V
+HSPLandroidx/compose/ui/unit/IntSize;->access$getZero$cp()J
+HSPLandroidx/compose/ui/unit/IntSize;->box-impl(J)Landroidx/compose/ui/unit/IntSize;
+HSPLandroidx/compose/ui/unit/IntSize;->constructor-impl(J)J
+HSPLandroidx/compose/ui/unit/IntSize;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/unit/IntSize;->getHeight-impl(J)I
+HSPLandroidx/compose/ui/unit/IntSize;->getWidth-impl(J)I
+HSPLandroidx/compose/ui/unit/IntSizeKt;->IntSize(II)J
+HSPLandroidx/compose/ui/unit/IntSizeKt;->getCenter-ozmzZPI(J)J
+HSPLandroidx/compose/ui/unit/IntSizeKt;->toSize-ozmzZPI(J)J
+HSPLandroidx/compose/ui/unit/LayoutDirection;->$values()[Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/unit/LayoutDirection;-><clinit>()V
+HSPLandroidx/compose/ui/unit/LayoutDirection;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/compose/ui/unit/LayoutDirection;->values()[Landroidx/compose/ui/unit/LayoutDirection;
+HSPLandroidx/compose/ui/unit/TextUnit$Companion;-><init>()V
+HSPLandroidx/compose/ui/unit/TextUnit$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/unit/TextUnit$Companion;->getUnspecified-XSAIIZE()J
+HSPLandroidx/compose/ui/unit/TextUnit;-><clinit>()V
+HSPLandroidx/compose/ui/unit/TextUnit;->access$getUnspecified$cp()J
+HSPLandroidx/compose/ui/unit/TextUnit;->constructor-impl(J)J
+HSPLandroidx/compose/ui/unit/TextUnit;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/unit/TextUnit;->getRawType-impl(J)J
+HSPLandroidx/compose/ui/unit/TextUnit;->getType-UIouoOA(J)J
+HSPLandroidx/compose/ui/unit/TextUnit;->getValue-impl(J)F
+HSPLandroidx/compose/ui/unit/TextUnitKt;->checkArithmetic--R2X_6o(J)V
+HSPLandroidx/compose/ui/unit/TextUnitKt;->getSp(D)J
+HSPLandroidx/compose/ui/unit/TextUnitKt;->getSp(I)J
+HSPLandroidx/compose/ui/unit/TextUnitKt;->isUnspecified--R2X_6o(J)Z
+HSPLandroidx/compose/ui/unit/TextUnitKt;->pack(JF)J
+HSPLandroidx/compose/ui/unit/TextUnitType$Companion;-><init>()V
+HSPLandroidx/compose/ui/unit/TextUnitType$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getEm-UIouoOA()J
+HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getSp-UIouoOA()J
+HSPLandroidx/compose/ui/unit/TextUnitType$Companion;->getUnspecified-UIouoOA()J
+HSPLandroidx/compose/ui/unit/TextUnitType;-><clinit>()V
+HSPLandroidx/compose/ui/unit/TextUnitType;-><init>(J)V
+HSPLandroidx/compose/ui/unit/TextUnitType;->access$getEm$cp()J
+HSPLandroidx/compose/ui/unit/TextUnitType;->access$getSp$cp()J
+HSPLandroidx/compose/ui/unit/TextUnitType;->access$getUnspecified$cp()J
+HSPLandroidx/compose/ui/unit/TextUnitType;->box-impl(J)Landroidx/compose/ui/unit/TextUnitType;
+HSPLandroidx/compose/ui/unit/TextUnitType;->constructor-impl(J)J
+HSPLandroidx/compose/ui/unit/TextUnitType;->equals-impl0(JJ)Z
+HSPLandroidx/compose/ui/unit/TextUnitType;->unbox-impl()J
+HSPLandroidx/core/app/ComponentActivity;-><init>()V
+HSPLandroidx/core/app/ComponentActivity;->onCreate(Landroid/os/Bundle;)V
+HSPLandroidx/core/app/CoreComponentFactory;-><init>()V
+HSPLandroidx/core/app/CoreComponentFactory;->checkCompatWrapper(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/core/app/CoreComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity;
+HSPLandroidx/core/app/CoreComponentFactory;->instantiateApplication(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/app/Application;
+HSPLandroidx/core/app/CoreComponentFactory;->instantiateProvider(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/content/ContentProvider;
+HSPLandroidx/core/graphics/TypefaceCompat;-><clinit>()V
+HSPLandroidx/core/graphics/TypefaceCompat;->createFromFontInfo(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;I)Landroid/graphics/Typeface;
+HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;-><init>()V
+HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->createFromFontInfo(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;I)Landroid/graphics/Typeface;
+HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->findBaseFont(Landroid/graphics/fonts/FontFamily;I)Landroid/graphics/fonts/Font;
+HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->getMatchScore(Landroid/graphics/fonts/FontStyle;Landroid/graphics/fonts/FontStyle;)I
+HSPLandroidx/core/graphics/TypefaceCompatBaseImpl;-><init>()V
+HSPLandroidx/core/graphics/TypefaceCompatUtil$Api19Impl;->openFileDescriptor(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;
+HSPLandroidx/core/graphics/TypefaceCompatUtil;->mmap(Landroid/content/Context;Landroid/os/CancellationSignal;Landroid/net/Uri;)Ljava/nio/ByteBuffer;
+HSPLandroidx/core/graphics/drawable/DrawableKt;->toBitmap$default(Landroid/graphics/drawable/Drawable;IILandroid/graphics/Bitmap$Config;ILjava/lang/Object;)Landroid/graphics/Bitmap;
+HSPLandroidx/core/graphics/drawable/DrawableKt;->toBitmap(Landroid/graphics/drawable/Drawable;IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
+HSPLandroidx/core/os/BuildCompat;->isAtLeastT()Z
+HSPLandroidx/core/os/HandlerCompat$Api28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
+HSPLandroidx/core/os/HandlerCompat;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
+HSPLandroidx/core/os/TraceCompat$Api18Impl;->beginSection(Ljava/lang/String;)V
+HSPLandroidx/core/os/TraceCompat$Api18Impl;->endSection()V
+HSPLandroidx/core/os/TraceCompat;-><clinit>()V
+HSPLandroidx/core/os/TraceCompat;->beginSection(Ljava/lang/String;)V
+HSPLandroidx/core/os/TraceCompat;->endSection()V
+HSPLandroidx/core/provider/FontProvider$$ExternalSyntheticLambda0;-><init>()V
+HSPLandroidx/core/provider/FontProvider$Api16Impl;->query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Landroid/database/Cursor;
+HSPLandroidx/core/provider/FontProvider;-><clinit>()V
+HSPLandroidx/core/provider/FontProvider;->convertToByteArrayList([Landroid/content/pm/Signature;)Ljava/util/List;
+HSPLandroidx/core/provider/FontProvider;->equalsByteArrayList(Ljava/util/List;Ljava/util/List;)Z
+HSPLandroidx/core/provider/FontProvider;->getCertificates(Landroidx/core/provider/FontRequest;Landroid/content/res/Resources;)Ljava/util/List;
+HSPLandroidx/core/provider/FontProvider;->getFontFamilyResult(Landroid/content/Context;Landroidx/core/provider/FontRequest;Landroid/os/CancellationSignal;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult;
+HSPLandroidx/core/provider/FontProvider;->getProvider(Landroid/content/pm/PackageManager;Landroidx/core/provider/FontRequest;Landroid/content/res/Resources;)Landroid/content/pm/ProviderInfo;
+HSPLandroidx/core/provider/FontProvider;->query(Landroid/content/Context;Landroidx/core/provider/FontRequest;Ljava/lang/String;Landroid/os/CancellationSignal;)[Landroidx/core/provider/FontsContractCompat$FontInfo;
+HSPLandroidx/core/provider/FontRequest;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V
+HSPLandroidx/core/provider/FontRequest;->createIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroidx/core/provider/FontRequest;->getCertificates()Ljava/util/List;
+HSPLandroidx/core/provider/FontRequest;->getProviderAuthority()Ljava/lang/String;
+HSPLandroidx/core/provider/FontRequest;->getProviderPackage()Ljava/lang/String;
+HSPLandroidx/core/provider/FontRequest;->getQuery()Ljava/lang/String;
+HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;-><init>(I[Landroidx/core/provider/FontsContractCompat$FontInfo;)V
+HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->create(I[Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult;
+HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->getFonts()[Landroidx/core/provider/FontsContractCompat$FontInfo;
+HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;->getStatusCode()I
+HSPLandroidx/core/provider/FontsContractCompat$FontInfo;-><init>(Landroid/net/Uri;IIZI)V
+HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->create(Landroid/net/Uri;IIZI)Landroidx/core/provider/FontsContractCompat$FontInfo;
+HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getResultCode()I
+HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getTtcIndex()I
+HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getUri()Landroid/net/Uri;
+HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->getWeight()I
+HSPLandroidx/core/provider/FontsContractCompat$FontInfo;->isItalic()Z
+HSPLandroidx/core/provider/FontsContractCompat;->buildTypeface(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroid/graphics/Typeface;
+HSPLandroidx/core/provider/FontsContractCompat;->fetchFonts(Landroid/content/Context;Landroid/os/CancellationSignal;Landroidx/core/provider/FontRequest;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult;
+HSPLandroidx/core/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V
+HSPLandroidx/core/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I
+HSPLandroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/core/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V
+HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;-><init>(Landroidx/core/view/AccessibilityDelegateCompat;)V
+HSPLandroidx/core/view/AccessibilityDelegateCompat;-><clinit>()V
+HSPLandroidx/core/view/AccessibilityDelegateCompat;-><init>()V
+HSPLandroidx/core/view/AccessibilityDelegateCompat;-><init>(Landroid/view/View$AccessibilityDelegate;)V
+HSPLandroidx/core/view/AccessibilityDelegateCompat;->getBridge()Landroid/view/View$AccessibilityDelegate;
+HSPLandroidx/core/view/MenuHostHelper;-><init>(Ljava/lang/Runnable;)V
+HSPLandroidx/core/view/ViewCompat$$ExternalSyntheticLambda0;-><init>()V
+HSPLandroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager;-><init>()V
+HSPLandroidx/core/view/ViewCompat;-><clinit>()V
+HSPLandroidx/core/view/ViewCompat;->setAccessibilityDelegate(Landroid/view/View;Landroidx/core/view/AccessibilityDelegateCompat;)V
+HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;-><init>(Ljava/lang/Object;)V
+HSPLandroidx/customview/poolingcontainer/PoolingContainer;-><clinit>()V
+HSPLandroidx/customview/poolingcontainer/PoolingContainer;->addPoolingContainerListener(Landroid/view/View;Landroidx/customview/poolingcontainer/PoolingContainerListener;)V
+HSPLandroidx/customview/poolingcontainer/PoolingContainer;->getPoolingContainerListenerHolder(Landroid/view/View;)Landroidx/customview/poolingcontainer/PoolingContainerListenerHolder;
+HSPLandroidx/customview/poolingcontainer/PoolingContainerListenerHolder;-><init>()V
+HSPLandroidx/customview/poolingcontainer/PoolingContainerListenerHolder;->addListener(Landroidx/customview/poolingcontainer/PoolingContainerListener;)V
+HSPLandroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;)V
+HSPLandroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+HSPLandroidx/emoji2/text/ConcurrencyHelpers$Handler28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
+HSPLandroidx/emoji2/text/ConcurrencyHelpers;->$r8$lambda$rm7NN8F9tEuy2Vr8i0fl8_hnx_A(Ljava/lang/String;Ljava/lang/Runnable;)Ljava/lang/Thread;
+HSPLandroidx/emoji2/text/ConcurrencyHelpers;->createBackgroundPriorityExecutor(Ljava/lang/String;)Ljava/util/concurrent/ThreadPoolExecutor;
+HSPLandroidx/emoji2/text/ConcurrencyHelpers;->lambda$createBackgroundPriorityExecutor$0(Ljava/lang/String;Ljava/lang/Runnable;)Ljava/lang/Thread;
+HSPLandroidx/emoji2/text/ConcurrencyHelpers;->mainHandlerAsync()Landroid/os/Handler;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;-><init>(Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;)V
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->configOrNull(Landroid/content/Context;Landroidx/core/provider/FontRequest;)Landroidx/emoji2/text/EmojiCompat$Config;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->convertToByteArray([Landroid/content/pm/Signature;)Ljava/util/List;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->create(Landroid/content/Context;)Landroidx/emoji2/text/EmojiCompat$Config;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->generateFontRequestFrom(Landroid/content/pm/ProviderInfo;Landroid/content/pm/PackageManager;)Landroidx/core/provider/FontRequest;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->getHelperForApi()Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->hasFlagSystem(Landroid/content/pm/ProviderInfo;)Z
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->queryDefaultInstalledContentProvider(Landroid/content/pm/PackageManager;)Landroid/content/pm/ProviderInfo;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;->queryForDefaultFontRequest(Landroid/content/Context;)Landroidx/core/provider/FontRequest;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;-><init>()V
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;-><init>()V
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;->getProviderInfo(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/ProviderInfo;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;->queryIntentContentProviders(Landroid/content/pm/PackageManager;Landroid/content/Intent;I)Ljava/util/List;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28;-><init>()V
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28;->getSigningSignatures(Landroid/content/pm/PackageManager;Ljava/lang/String;)[Landroid/content/pm/Signature;
+HSPLandroidx/emoji2/text/DefaultEmojiCompatConfig;->create(Landroid/content/Context;)Landroidx/emoji2/text/FontRequestEmojiCompatConfig;
+HSPLandroidx/emoji2/text/DefaultGlyphChecker;-><clinit>()V
+HSPLandroidx/emoji2/text/DefaultGlyphChecker;-><init>()V
+HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19$1;-><init>(Landroidx/emoji2/text/EmojiCompat$CompatInternal19;)V
+HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19$1;->onLoaded(Landroidx/emoji2/text/MetadataRepo;)V
+HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;-><init>(Landroidx/emoji2/text/EmojiCompat;)V
+HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->loadMetadata()V
+HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->onMetadataLoadSuccess(Landroidx/emoji2/text/MetadataRepo;)V
+HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal19;->process(Ljava/lang/CharSequence;IIIZ)Ljava/lang/CharSequence;
+HSPLandroidx/emoji2/text/EmojiCompat$CompatInternal;-><init>(Landroidx/emoji2/text/EmojiCompat;)V
+HSPLandroidx/emoji2/text/EmojiCompat$Config;-><init>(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;)V
+HSPLandroidx/emoji2/text/EmojiCompat$Config;->getMetadataRepoLoader()Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;
+HSPLandroidx/emoji2/text/EmojiCompat$Config;->setMetadataLoadStrategy(I)Landroidx/emoji2/text/EmojiCompat$Config;
+HSPLandroidx/emoji2/text/EmojiCompat$InitCallback;-><init>()V
+HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;-><init>(Ljava/util/Collection;I)V
+HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;-><init>(Ljava/util/Collection;ILjava/lang/Throwable;)V
+HSPLandroidx/emoji2/text/EmojiCompat$ListenerDispatcher;->run()V
+HSPLandroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;-><init>()V
+HSPLandroidx/emoji2/text/EmojiCompat$SpanFactory;-><init>()V
+HSPLandroidx/emoji2/text/EmojiCompat;-><clinit>()V
+HSPLandroidx/emoji2/text/EmojiCompat;-><init>(Landroidx/emoji2/text/EmojiCompat$Config;)V
+HSPLandroidx/emoji2/text/EmojiCompat;->access$000(Landroidx/emoji2/text/EmojiCompat;)Landroidx/emoji2/text/EmojiCompat$GlyphChecker;
+HSPLandroidx/emoji2/text/EmojiCompat;->get()Landroidx/emoji2/text/EmojiCompat;
+HSPLandroidx/emoji2/text/EmojiCompat;->getLoadState()I
+HSPLandroidx/emoji2/text/EmojiCompat;->init(Landroidx/emoji2/text/EmojiCompat$Config;)Landroidx/emoji2/text/EmojiCompat;
+HSPLandroidx/emoji2/text/EmojiCompat;->isConfigured()Z
+HSPLandroidx/emoji2/text/EmojiCompat;->isInitialized()Z
+HSPLandroidx/emoji2/text/EmojiCompat;->load()V
+HSPLandroidx/emoji2/text/EmojiCompat;->loadMetadata()V
+HSPLandroidx/emoji2/text/EmojiCompat;->onMetadataLoadSuccess()V
+HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
+HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence;
+HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;III)Ljava/lang/CharSequence;
+HSPLandroidx/emoji2/text/EmojiCompat;->process(Ljava/lang/CharSequence;IIII)Ljava/lang/CharSequence;
+HSPLandroidx/emoji2/text/EmojiCompat;->registerInitCallback(Landroidx/emoji2/text/EmojiCompat$InitCallback;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$1;-><init>(Landroidx/emoji2/text/EmojiCompatInitializer;Landroidx/lifecycle/Lifecycle;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$1;->onResume(Landroidx/lifecycle/LifecycleOwner;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultConfig;-><init>(Landroid/content/Context;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0;-><init>(Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0;->run()V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1;-><init>(Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1;->onLoaded(Landroidx/emoji2/text/MetadataRepo;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->$r8$lambda$2V1iWTiAwNxOBlVvz73bbuEdzIw(Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;-><init>(Landroid/content/Context;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->doLoad(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->lambda$load$0(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;Ljava/util/concurrent/ThreadPoolExecutor;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;->load(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable;-><init>()V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable;->run()V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer;-><init>()V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer;->create(Landroid/content/Context;)Ljava/lang/Boolean;
+HSPLandroidx/emoji2/text/EmojiCompatInitializer;->create(Landroid/content/Context;)Ljava/lang/Object;
+HSPLandroidx/emoji2/text/EmojiCompatInitializer;->delayUntilFirstResume(Landroid/content/Context;)V
+HSPLandroidx/emoji2/text/EmojiCompatInitializer;->dependencies()Ljava/util/List;
+HSPLandroidx/emoji2/text/EmojiCompatInitializer;->loadEmojiCompatAfterDelay()V
+HSPLandroidx/emoji2/text/EmojiMetadata;-><clinit>()V
+HSPLandroidx/emoji2/text/EmojiMetadata;-><init>(Landroidx/emoji2/text/MetadataRepo;I)V
+HSPLandroidx/emoji2/text/EmojiMetadata;->getCodepointAt(I)I
+HSPLandroidx/emoji2/text/EmojiMetadata;->getCodepointsLength()I
+HSPLandroidx/emoji2/text/EmojiMetadata;->getId()I
+HSPLandroidx/emoji2/text/EmojiMetadata;->getMetadataItem()Landroidx/emoji2/text/flatbuffer/MetadataItem;+]Landroidx/emoji2/text/flatbuffer/MetadataList;Landroidx/emoji2/text/flatbuffer/MetadataList;]Landroidx/emoji2/text/MetadataRepo;Landroidx/emoji2/text/MetadataRepo;
+HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;-><init>(Landroidx/emoji2/text/MetadataRepo$Node;Z[I)V
+HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->check(I)I
+HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->isInFlushableState()Z
+HSPLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->reset()I
+HSPLandroidx/emoji2/text/EmojiProcessor;-><init>(Landroidx/emoji2/text/MetadataRepo;Landroidx/emoji2/text/EmojiCompat$SpanFactory;Landroidx/emoji2/text/EmojiCompat$GlyphChecker;Z[I)V
+HSPLandroidx/emoji2/text/EmojiProcessor;->process(Ljava/lang/CharSequence;IIIZ)Ljava/lang/CharSequence;
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;-><init>()V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;->buildTypeface(Landroid/content/Context;Landroidx/core/provider/FontsContractCompat$FontInfo;)Landroid/graphics/Typeface;
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;->fetchFonts(Landroid/content/Context;Landroidx/core/provider/FontRequest;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult;
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0;-><init>(Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;)V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0;->run()V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;-><init>(Landroid/content/Context;Landroidx/core/provider/FontRequest;Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;)V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->cleanUp()V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->createMetadata()V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->load(Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;)V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->loadInternal()V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->retrieveFontInfo()Landroidx/core/provider/FontsContractCompat$FontInfo;
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;->setExecutor(Ljava/util/concurrent/Executor;)V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;-><clinit>()V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;-><init>(Landroid/content/Context;Landroidx/core/provider/FontRequest;)V
+HSPLandroidx/emoji2/text/FontRequestEmojiCompatConfig;->setLoadingExecutor(Ljava/util/concurrent/Executor;)Landroidx/emoji2/text/FontRequestEmojiCompatConfig;
+HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;-><init>(Ljava/nio/ByteBuffer;)V
+HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->getPosition()J
+HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readTag()I
+HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readUnsignedInt()J
+HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->readUnsignedShort()I
+HSPLandroidx/emoji2/text/MetadataListReader$ByteBufferReader;->skip(I)V
+HSPLandroidx/emoji2/text/MetadataListReader$OffsetInfo;-><init>(JJ)V
+HSPLandroidx/emoji2/text/MetadataListReader$OffsetInfo;->getStartOffset()J
+HSPLandroidx/emoji2/text/MetadataListReader;->findOffsetInfo(Landroidx/emoji2/text/MetadataListReader$OpenTypeReader;)Landroidx/emoji2/text/MetadataListReader$OffsetInfo;
+HSPLandroidx/emoji2/text/MetadataListReader;->read(Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList;
+HSPLandroidx/emoji2/text/MetadataListReader;->toUnsignedInt(I)J
+HSPLandroidx/emoji2/text/MetadataListReader;->toUnsignedShort(S)I
+HSPLandroidx/emoji2/text/MetadataRepo$Node;-><init>()V
+HSPLandroidx/emoji2/text/MetadataRepo$Node;-><init>(I)V
+HSPLandroidx/emoji2/text/MetadataRepo$Node;->get(I)Landroidx/emoji2/text/MetadataRepo$Node;
+HSPLandroidx/emoji2/text/MetadataRepo$Node;->put(Landroidx/emoji2/text/EmojiMetadata;II)V
+HSPLandroidx/emoji2/text/MetadataRepo;-><init>(Landroid/graphics/Typeface;Landroidx/emoji2/text/flatbuffer/MetadataList;)V
+HSPLandroidx/emoji2/text/MetadataRepo;->constructIndex(Landroidx/emoji2/text/flatbuffer/MetadataList;)V
+HSPLandroidx/emoji2/text/MetadataRepo;->create(Landroid/graphics/Typeface;Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/MetadataRepo;
+HSPLandroidx/emoji2/text/MetadataRepo;->getMetadataList()Landroidx/emoji2/text/flatbuffer/MetadataList;
+HSPLandroidx/emoji2/text/MetadataRepo;->getRootNode()Landroidx/emoji2/text/MetadataRepo$Node;
+HSPLandroidx/emoji2/text/MetadataRepo;->put(Landroidx/emoji2/text/EmojiMetadata;)V
+HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;-><init>()V
+HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->__assign(ILjava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataItem;
+HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->__init(ILjava/nio/ByteBuffer;)V
+HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->codepoints(I)I
+HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->codepointsLength()I
+HSPLandroidx/emoji2/text/flatbuffer/MetadataItem;->id()I
+HSPLandroidx/emoji2/text/flatbuffer/MetadataList;-><init>()V
+HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->__assign(ILjava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList;
+HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->__init(ILjava/nio/ByteBuffer;)V
+HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->getRootAsMetadataList(Ljava/nio/ByteBuffer;)Landroidx/emoji2/text/flatbuffer/MetadataList;
+HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->getRootAsMetadataList(Ljava/nio/ByteBuffer;Landroidx/emoji2/text/flatbuffer/MetadataList;)Landroidx/emoji2/text/flatbuffer/MetadataList;
+HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->list(Landroidx/emoji2/text/flatbuffer/MetadataItem;I)Landroidx/emoji2/text/flatbuffer/MetadataItem;+]Landroidx/emoji2/text/flatbuffer/MetadataItem;Landroidx/emoji2/text/flatbuffer/MetadataItem;]Landroidx/emoji2/text/flatbuffer/Table;Landroidx/emoji2/text/flatbuffer/MetadataList;
+HSPLandroidx/emoji2/text/flatbuffer/MetadataList;->listLength()I
+HSPLandroidx/emoji2/text/flatbuffer/Table;-><init>()V
+HSPLandroidx/emoji2/text/flatbuffer/Table;->__indirect(I)I
+HSPLandroidx/emoji2/text/flatbuffer/Table;->__offset(I)I
+HSPLandroidx/emoji2/text/flatbuffer/Table;->__reset(ILjava/nio/ByteBuffer;)V
+HSPLandroidx/emoji2/text/flatbuffer/Table;->__vector(I)I
+HSPLandroidx/emoji2/text/flatbuffer/Table;->__vector_len(I)I
+HSPLandroidx/emoji2/text/flatbuffer/Utf8;-><init>()V
+HSPLandroidx/emoji2/text/flatbuffer/Utf8;->getDefault()Landroidx/emoji2/text/flatbuffer/Utf8;
+HSPLandroidx/emoji2/text/flatbuffer/Utf8Safe;-><init>()V
+HSPLandroidx/lifecycle/DefaultLifecycleObserver;->onCreate(Landroidx/lifecycle/LifecycleOwner;)V
+HSPLandroidx/lifecycle/DefaultLifecycleObserver;->onStart(Landroidx/lifecycle/LifecycleOwner;)V
+HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;-><init>()V
+HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/FullLifecycleObserverAdapter$1;-><clinit>()V
+HSPLandroidx/lifecycle/FullLifecycleObserverAdapter;-><init>(Landroidx/lifecycle/FullLifecycleObserver;Landroidx/lifecycle/LifecycleEventObserver;)V
+HSPLandroidx/lifecycle/FullLifecycleObserverAdapter;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/lifecycle/LegacySavedStateHandleController;->attachHandleIfNeeded(Landroidx/lifecycle/ViewModel;Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/Lifecycle;)V
+HSPLandroidx/lifecycle/Lifecycle$1;-><clinit>()V
+HSPLandroidx/lifecycle/Lifecycle$Event;->$values()[Landroidx/lifecycle/Lifecycle$Event;
+HSPLandroidx/lifecycle/Lifecycle$Event;-><clinit>()V
+HSPLandroidx/lifecycle/Lifecycle$Event;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/lifecycle/Lifecycle$Event;->getTargetState()Landroidx/lifecycle/Lifecycle$State;
+HSPLandroidx/lifecycle/Lifecycle$Event;->upFrom(Landroidx/lifecycle/Lifecycle$State;)Landroidx/lifecycle/Lifecycle$Event;
+HSPLandroidx/lifecycle/Lifecycle$Event;->values()[Landroidx/lifecycle/Lifecycle$Event;
+HSPLandroidx/lifecycle/Lifecycle$State;->$values()[Landroidx/lifecycle/Lifecycle$State;
+HSPLandroidx/lifecycle/Lifecycle$State;-><clinit>()V
+HSPLandroidx/lifecycle/Lifecycle$State;-><init>(Ljava/lang/String;I)V
+HSPLandroidx/lifecycle/Lifecycle$State;->isAtLeast(Landroidx/lifecycle/Lifecycle$State;)Z
+HSPLandroidx/lifecycle/Lifecycle$State;->values()[Landroidx/lifecycle/Lifecycle$State;
+HSPLandroidx/lifecycle/Lifecycle;-><init>()V
+HSPLandroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;-><init>()V
+HSPLandroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/LifecycleDispatcher;-><clinit>()V
+HSPLandroidx/lifecycle/LifecycleDispatcher;->init(Landroid/content/Context;)V
+HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;-><init>(Landroidx/lifecycle/LifecycleObserver;Landroidx/lifecycle/Lifecycle$State;)V
+HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;->dispatchEvent(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;-><init>(Landroidx/lifecycle/LifecycleOwner;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;-><init>(Landroidx/lifecycle/LifecycleOwner;Z)V
+HSPLandroidx/lifecycle/LifecycleRegistry;->addObserver(Landroidx/lifecycle/LifecycleObserver;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;->calculateTargetState(Landroidx/lifecycle/LifecycleObserver;)Landroidx/lifecycle/Lifecycle$State;
+HSPLandroidx/lifecycle/LifecycleRegistry;->enforceMainThreadIfNeeded(Ljava/lang/String;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;->forwardPass(Landroidx/lifecycle/LifecycleOwner;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;->getCurrentState()Landroidx/lifecycle/Lifecycle$State;
+HSPLandroidx/lifecycle/LifecycleRegistry;->handleLifecycleEvent(Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;->isSynced()Z
+HSPLandroidx/lifecycle/LifecycleRegistry;->min(Landroidx/lifecycle/Lifecycle$State;Landroidx/lifecycle/Lifecycle$State;)Landroidx/lifecycle/Lifecycle$State;
+HSPLandroidx/lifecycle/LifecycleRegistry;->moveToState(Landroidx/lifecycle/Lifecycle$State;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;->popParentState()V
+HSPLandroidx/lifecycle/LifecycleRegistry;->pushParentState(Landroidx/lifecycle/Lifecycle$State;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;->removeObserver(Landroidx/lifecycle/LifecycleObserver;)V
+HSPLandroidx/lifecycle/LifecycleRegistry;->sync()V
+HSPLandroidx/lifecycle/Lifecycling;-><clinit>()V
+HSPLandroidx/lifecycle/Lifecycling;->lifecycleEventObserver(Ljava/lang/Object;)Landroidx/lifecycle/LifecycleEventObserver;
+HSPLandroidx/lifecycle/LiveData$1;-><init>(Landroidx/lifecycle/LiveData;)V
+HSPLandroidx/lifecycle/LiveData$LifecycleBoundObserver;-><init>(Landroidx/lifecycle/LiveData;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Observer;)V
+HSPLandroidx/lifecycle/LiveData$LifecycleBoundObserver;->isAttachedTo(Landroidx/lifecycle/LifecycleOwner;)Z
+HSPLandroidx/lifecycle/LiveData$LifecycleBoundObserver;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/lifecycle/LiveData$LifecycleBoundObserver;->shouldBeActive()Z
+HSPLandroidx/lifecycle/LiveData$ObserverWrapper;-><init>(Landroidx/lifecycle/LiveData;Landroidx/lifecycle/Observer;)V
+HSPLandroidx/lifecycle/LiveData$ObserverWrapper;->activeStateChanged(Z)V
+HSPLandroidx/lifecycle/LiveData;-><clinit>()V
+HSPLandroidx/lifecycle/LiveData;-><init>()V
+HSPLandroidx/lifecycle/LiveData;->assertMainThread(Ljava/lang/String;)V
+HSPLandroidx/lifecycle/LiveData;->changeActiveCounter(I)V
+HSPLandroidx/lifecycle/LiveData;->considerNotify(Landroidx/lifecycle/LiveData$ObserverWrapper;)V
+HSPLandroidx/lifecycle/LiveData;->dispatchingValue(Landroidx/lifecycle/LiveData$ObserverWrapper;)V
+HSPLandroidx/lifecycle/LiveData;->observe(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Observer;)V
+HSPLandroidx/lifecycle/LiveData;->onActive()V
+HSPLandroidx/lifecycle/MutableLiveData;-><init>()V
+HSPLandroidx/lifecycle/ProcessLifecycleInitializer;-><init>()V
+HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->create(Landroid/content/Context;)Landroidx/lifecycle/LifecycleOwner;
+HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->create(Landroid/content/Context;)Ljava/lang/Object;
+HSPLandroidx/lifecycle/ProcessLifecycleInitializer;->dependencies()Ljava/util/List;
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$1;-><init>(Landroidx/lifecycle/ProcessLifecycleOwner;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$2;-><init>(Landroidx/lifecycle/ProcessLifecycleOwner;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$3$1;-><init>(Landroidx/lifecycle/ProcessLifecycleOwner$3;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$3$1;->onActivityPostResumed(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$3$1;->onActivityPostStarted(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$3;-><init>(Landroidx/lifecycle/ProcessLifecycleOwner;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$3;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$3;->onActivityPreCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner$Api29Impl;->registerActivityLifecycleCallbacks(Landroid/app/Activity;Landroid/app/Application$ActivityLifecycleCallbacks;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner;-><clinit>()V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner;-><init>()V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner;->activityResumed()V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner;->activityStarted()V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner;->attach(Landroid/content/Context;)V
+HSPLandroidx/lifecycle/ProcessLifecycleOwner;->get()Landroidx/lifecycle/LifecycleOwner;
+HSPLandroidx/lifecycle/ProcessLifecycleOwner;->getLifecycle()Landroidx/lifecycle/Lifecycle;
+HSPLandroidx/lifecycle/ProcessLifecycleOwner;->init(Landroid/content/Context;)V
+HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;-><init>()V
+HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostResumed(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostStarted(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->registerIn(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/ReportFragment;-><init>()V
+HSPLandroidx/lifecycle/ReportFragment;->dispatch(Landroid/app/Activity;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/lifecycle/ReportFragment;->dispatch(Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/lifecycle/ReportFragment;->dispatchCreate(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V
+HSPLandroidx/lifecycle/ReportFragment;->dispatchResume(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V
+HSPLandroidx/lifecycle/ReportFragment;->dispatchStart(Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;)V
+HSPLandroidx/lifecycle/ReportFragment;->injectIfNeededIn(Landroid/app/Activity;)V
+HSPLandroidx/lifecycle/ReportFragment;->onActivityCreated(Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/ReportFragment;->onResume()V
+HSPLandroidx/lifecycle/ReportFragment;->onStart()V
+HSPLandroidx/lifecycle/SavedStateHandleAttacher;-><init>(Landroidx/lifecycle/SavedStateHandlesProvider;)V
+HSPLandroidx/lifecycle/SavedStateHandleAttacher;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1;-><init>()V
+HSPLandroidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1;-><init>()V
+HSPLandroidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1;-><init>()V
+HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1$1;-><clinit>()V
+HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1$1;-><init>()V
+HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1$1;->invoke(Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/SavedStateHandlesVM;
+HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/lifecycle/SavedStateHandleSupport;-><clinit>()V
+HSPLandroidx/lifecycle/SavedStateHandleSupport;->enableSavedStateHandles(Landroidx/savedstate/SavedStateRegistryOwner;)V
+HSPLandroidx/lifecycle/SavedStateHandleSupport;->getSavedStateHandlesVM(Landroidx/lifecycle/ViewModelStoreOwner;)Landroidx/lifecycle/SavedStateHandlesVM;
+HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;-><init>(Landroidx/lifecycle/ViewModelStoreOwner;)V
+HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->invoke()Landroidx/lifecycle/SavedStateHandlesVM;
+HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->invoke()Ljava/lang/Object;
+HSPLandroidx/lifecycle/SavedStateHandlesProvider;-><init>(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/ViewModelStoreOwner;)V
+HSPLandroidx/lifecycle/SavedStateHandlesProvider;->getViewModel()Landroidx/lifecycle/SavedStateHandlesVM;
+HSPLandroidx/lifecycle/SavedStateHandlesProvider;->performRestore()V
+HSPLandroidx/lifecycle/SavedStateHandlesVM;-><init>()V
+HSPLandroidx/lifecycle/SavedStateViewModelFactory;-><init>(Landroid/app/Application;Landroidx/savedstate/SavedStateRegistryOwner;Landroid/os/Bundle;)V
+HSPLandroidx/lifecycle/SavedStateViewModelFactory;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/SavedStateViewModelFactory;->onRequery(Landroidx/lifecycle/ViewModel;)V
+HSPLandroidx/lifecycle/SavedStateViewModelFactoryKt;-><clinit>()V
+HSPLandroidx/lifecycle/SavedStateViewModelFactoryKt;->access$getVIEWMODEL_SIGNATURE$p()Ljava/util/List;
+HSPLandroidx/lifecycle/SavedStateViewModelFactoryKt;->findMatchingConstructor(Ljava/lang/Class;Ljava/util/List;)Ljava/lang/reflect/Constructor;
+HSPLandroidx/lifecycle/ViewModel;-><init>()V
+HSPLandroidx/lifecycle/ViewModel;->getTag(Ljava/lang/String;)Ljava/lang/Object;
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl;-><clinit>()V
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl;-><init>()V
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion;-><init>()V
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion;->getInstance(Landroid/app/Application;)Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;-><clinit>()V
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;-><init>(Landroid/app/Application;)V
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;-><init>(Landroid/app/Application;I)V
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;->access$getSInstance$cp()Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;->access$setSInstance$cp(Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;)V
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;->create(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;->create(Ljava/lang/Class;Landroid/app/Application;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/ViewModelProvider$Factory$Companion;-><clinit>()V
+HSPLandroidx/lifecycle/ViewModelProvider$Factory$Companion;-><init>()V
+HSPLandroidx/lifecycle/ViewModelProvider$Factory;-><clinit>()V
+HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl;-><clinit>()V
+HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl;-><init>()V
+HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion;-><init>()V
+HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory;-><clinit>()V
+HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory;-><init>()V
+HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory;->create(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/ViewModelProvider$OnRequeryFactory;-><init>()V
+HSPLandroidx/lifecycle/ViewModelProvider;-><init>(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;Landroidx/lifecycle/viewmodel/CreationExtras;)V
+HSPLandroidx/lifecycle/ViewModelProvider;-><init>(Landroidx/lifecycle/ViewModelStoreOwner;Landroidx/lifecycle/ViewModelProvider$Factory;)V
+HSPLandroidx/lifecycle/ViewModelProvider;->get(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/ViewModelProvider;->get(Ljava/lang/String;Ljava/lang/Class;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/ViewModelProviderGetKt;->defaultCreationExtras(Landroidx/lifecycle/ViewModelStoreOwner;)Landroidx/lifecycle/viewmodel/CreationExtras;
+HSPLandroidx/lifecycle/ViewModelStore;-><init>()V
+HSPLandroidx/lifecycle/ViewModelStore;->get(Ljava/lang/String;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/ViewModelStore;->put(Ljava/lang/String;Landroidx/lifecycle/ViewModel;)V
+HSPLandroidx/lifecycle/ViewTreeLifecycleOwner;->get(Landroid/view/View;)Landroidx/lifecycle/LifecycleOwner;
+HSPLandroidx/lifecycle/ViewTreeLifecycleOwner;->set(Landroid/view/View;Landroidx/lifecycle/LifecycleOwner;)V
+HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner;->get(Landroid/view/View;)Landroidx/lifecycle/ViewModelStoreOwner;
+HSPLandroidx/lifecycle/ViewTreeViewModelStoreOwner;->set(Landroid/view/View;Landroidx/lifecycle/ViewModelStoreOwner;)V
+HSPLandroidx/lifecycle/viewmodel/CreationExtras$Empty;-><clinit>()V
+HSPLandroidx/lifecycle/viewmodel/CreationExtras$Empty;-><init>()V
+HSPLandroidx/lifecycle/viewmodel/CreationExtras;-><init>()V
+HSPLandroidx/lifecycle/viewmodel/CreationExtras;->getMap$lifecycle_viewmodel_release()Ljava/util/Map;
+HSPLandroidx/lifecycle/viewmodel/InitializerViewModelFactory;-><init>([Landroidx/lifecycle/viewmodel/ViewModelInitializer;)V
+HSPLandroidx/lifecycle/viewmodel/InitializerViewModelFactory;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/viewmodel/InitializerViewModelFactoryBuilder;-><init>()V
+HSPLandroidx/lifecycle/viewmodel/InitializerViewModelFactoryBuilder;->addInitializer(Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/lifecycle/viewmodel/InitializerViewModelFactoryBuilder;->build()Landroidx/lifecycle/ViewModelProvider$Factory;
+HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;-><init>()V
+HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;-><init>(Landroidx/lifecycle/viewmodel/CreationExtras;)V
+HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;-><init>(Landroidx/lifecycle/viewmodel/CreationExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->get(Landroidx/lifecycle/viewmodel/CreationExtras$Key;)Ljava/lang/Object;
+HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;->set(Landroidx/lifecycle/viewmodel/CreationExtras$Key;Ljava/lang/Object;)V
+HSPLandroidx/lifecycle/viewmodel/ViewModelInitializer;-><init>(Ljava/lang/Class;Lkotlin/jvm/functions/Function1;)V
+HSPLandroidx/lifecycle/viewmodel/ViewModelInitializer;->getClazz$lifecycle_viewmodel_release()Ljava/lang/Class;
+HSPLandroidx/lifecycle/viewmodel/ViewModelInitializer;->getInitializer$lifecycle_viewmodel_release()Lkotlin/jvm/functions/Function1;
+HSPLandroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner$LocalViewModelStoreOwner$1;-><clinit>()V
+HSPLandroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner$LocalViewModelStoreOwner$1;-><init>()V
+HSPLandroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner$LocalViewModelStoreOwner$1;->invoke()Landroidx/lifecycle/ViewModelStoreOwner;
+HSPLandroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner$LocalViewModelStoreOwner$1;->invoke()Ljava/lang/Object;
+HSPLandroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner;-><clinit>()V
+HSPLandroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner;-><init>()V
+HSPLandroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner;->getCurrent(Landroidx/compose/runtime/Composer;I)Landroidx/lifecycle/ViewModelStoreOwner;
+HSPLandroidx/lifecycle/viewmodel/compose/ViewModelKt;->get(Landroidx/lifecycle/ViewModelStoreOwner;Ljava/lang/Class;Ljava/lang/String;Landroidx/lifecycle/ViewModelProvider$Factory;Landroidx/lifecycle/viewmodel/CreationExtras;)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/lifecycle/viewmodel/compose/ViewModelKt;->viewModel(Ljava/lang/Class;Landroidx/lifecycle/ViewModelStoreOwner;Ljava/lang/String;Landroidx/lifecycle/ViewModelProvider$Factory;Landroidx/lifecycle/viewmodel/CreationExtras;Landroidx/compose/runtime/Composer;II)Landroidx/lifecycle/ViewModel;
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0;-><init>(Landroidx/profileinstaller/ProfileInstallerInitializer;Landroid/content/Context;)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0;->run()V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1;-><init>(Landroid/content/Context;)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0;-><init>(Ljava/lang/Runnable;)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0;->doFrame(J)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl;->$r8$lambda$DSwPKNQiVu4DdgIKQZrSpqkWM-A(Ljava/lang/Runnable;J)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl;->lambda$postFrameCallback$0(Ljava/lang/Runnable;J)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl;->postFrameCallback(Ljava/lang/Runnable;)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Handler28Impl;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer$Result;-><init>()V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->$r8$lambda$QGpANLTF0YGY0pXfe2eje4OKwkc(Landroidx/profileinstaller/ProfileInstallerInitializer;Landroid/content/Context;)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer;-><init>()V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->create(Landroid/content/Context;)Landroidx/profileinstaller/ProfileInstallerInitializer$Result;
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->create(Landroid/content/Context;)Ljava/lang/Object;
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->delayAfterFirstFrame(Landroid/content/Context;)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->dependencies()Ljava/util/List;
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->installAfterDelay(Landroid/content/Context;)V
+HSPLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$delayAfterFirstFrame$0(Landroid/content/Context;)V
+HSPLandroidx/savedstate/Recreator$Companion;-><init>()V
+HSPLandroidx/savedstate/Recreator$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/savedstate/Recreator;-><clinit>()V
+HSPLandroidx/savedstate/Recreator;-><init>(Landroidx/savedstate/SavedStateRegistryOwner;)V
+HSPLandroidx/savedstate/Recreator;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;-><init>(Landroidx/savedstate/SavedStateRegistry;)V
+HSPLandroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/savedstate/SavedStateRegistry$Companion;-><init>()V
+HSPLandroidx/savedstate/SavedStateRegistry$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/savedstate/SavedStateRegistry;->$r8$lambda$AUDDdpkzZrJMhBj0r-_9pI-j6hA(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/savedstate/SavedStateRegistry;-><clinit>()V
+HSPLandroidx/savedstate/SavedStateRegistry;-><init>()V
+HSPLandroidx/savedstate/SavedStateRegistry;->consumeRestoredStateForKey(Ljava/lang/String;)Landroid/os/Bundle;
+HSPLandroidx/savedstate/SavedStateRegistry;->getSavedStateProvider(Ljava/lang/String;)Landroidx/savedstate/SavedStateRegistry$SavedStateProvider;
+HSPLandroidx/savedstate/SavedStateRegistry;->performAttach$lambda$4(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V
+HSPLandroidx/savedstate/SavedStateRegistry;->performAttach$savedstate_release(Landroidx/lifecycle/Lifecycle;)V
+HSPLandroidx/savedstate/SavedStateRegistry;->performRestore$savedstate_release(Landroid/os/Bundle;)V
+HSPLandroidx/savedstate/SavedStateRegistry;->registerSavedStateProvider(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistry$SavedStateProvider;)V
+HSPLandroidx/savedstate/SavedStateRegistryController$Companion;-><init>()V
+HSPLandroidx/savedstate/SavedStateRegistryController$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/savedstate/SavedStateRegistryController$Companion;->create(Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/savedstate/SavedStateRegistryController;
+HSPLandroidx/savedstate/SavedStateRegistryController;-><clinit>()V
+HSPLandroidx/savedstate/SavedStateRegistryController;-><init>(Landroidx/savedstate/SavedStateRegistryOwner;)V
+HSPLandroidx/savedstate/SavedStateRegistryController;-><init>(Landroidx/savedstate/SavedStateRegistryOwner;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLandroidx/savedstate/SavedStateRegistryController;->create(Landroidx/savedstate/SavedStateRegistryOwner;)Landroidx/savedstate/SavedStateRegistryController;
+HSPLandroidx/savedstate/SavedStateRegistryController;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry;
+HSPLandroidx/savedstate/SavedStateRegistryController;->performAttach()V
+HSPLandroidx/savedstate/SavedStateRegistryController;->performRestore(Landroid/os/Bundle;)V
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;-><clinit>()V
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;-><init>()V
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->invoke(Landroid/view/View;)Landroid/view/View;
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;-><clinit>()V
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;-><init>()V
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->invoke(Landroid/view/View;)Landroidx/savedstate/SavedStateRegistryOwner;
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->get(Landroid/view/View;)Landroidx/savedstate/SavedStateRegistryOwner;
+HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->set(Landroid/view/View;Landroidx/savedstate/SavedStateRegistryOwner;)V
+HSPLandroidx/startup/AppInitializer;-><clinit>()V
+HSPLandroidx/startup/AppInitializer;-><init>(Landroid/content/Context;)V
+HSPLandroidx/startup/AppInitializer;->discoverAndInitialize(Landroid/os/Bundle;)V
+HSPLandroidx/startup/AppInitializer;->discoverAndInitialize(Ljava/lang/Class;)V
+HSPLandroidx/startup/AppInitializer;->doInitialize(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroidx/startup/AppInitializer;->doInitialize(Ljava/lang/Class;Ljava/util/Set;)Ljava/lang/Object;
+HSPLandroidx/startup/AppInitializer;->getInstance(Landroid/content/Context;)Landroidx/startup/AppInitializer;
+HSPLandroidx/startup/AppInitializer;->initializeComponent(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroidx/startup/AppInitializer;->isEagerlyInitialized(Ljava/lang/Class;)Z
+HSPLandroidx/startup/InitializationProvider;-><init>()V
+HSPLandroidx/startup/InitializationProvider;->onCreate()Z
+HSPLandroidx/tracing/Trace;->beginSection(Ljava/lang/String;)V
+HSPLandroidx/tracing/Trace;->endSection()V
+HSPLandroidx/tracing/Trace;->isEnabled()Z
+HSPLandroidx/tracing/TraceApi18Impl;->beginSection(Ljava/lang/String;)V
+HSPLandroidx/tracing/TraceApi18Impl;->endSection()V
+HSPLandroidx/tracing/TraceApi29Impl;->isEnabled()Z
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion$toCreateCredentialUiState$$inlined$compareByDescending$1;-><init>()V
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion$toCreateCredentialUiState$$inlined$compareByDescending$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;-><init>()V
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;->toActiveEntry(Lcom/android/credentialmanager/createflow/EnabledProviderInfo;ILcom/android/credentialmanager/createflow/EnabledProviderInfo;Lcom/android/credentialmanager/createflow/RemoteInfo;)Lcom/android/credentialmanager/createflow/ActiveEntry;
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;->toCreateCredentialUiState(Ljava/util/List;Ljava/util/List;Ljava/lang/String;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;ZZ)Lcom/android/credentialmanager/createflow/CreateCredentialUiState;
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;->toCreateScreenState(IZLcom/android/credentialmanager/createflow/RequestDisplayInfo;Lcom/android/credentialmanager/createflow/EnabledProviderInfo;Lcom/android/credentialmanager/createflow/RemoteInfo;Z)Lcom/android/credentialmanager/createflow/CreateScreenState;
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;->toCreationOptionInfoList(Ljava/lang/String;Ljava/util/List;Landroid/content/Context;)Ljava/util/List;
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;->toDisabledProviderList(Ljava/util/List;Landroid/content/Context;)Ljava/util/List;
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;->toEnabledProviderList(Ljava/util/List;Landroid/content/Context;)Ljava/util/List;
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;->toRemoteInfo(Ljava/lang/String;Landroid/credentials/ui/Entry;)Lcom/android/credentialmanager/createflow/RemoteInfo;
+HSPLcom/android/credentialmanager/CreateFlowUtils$Companion;->toRequestDisplayInfo(Landroid/credentials/ui/RequestInfo;Landroid/content/Context;)Lcom/android/credentialmanager/createflow/RequestDisplayInfo;
+HSPLcom/android/credentialmanager/CreateFlowUtils;-><clinit>()V
+HSPLcom/android/credentialmanager/CredentialManagerRepo$Companion;-><init>()V
+HSPLcom/android/credentialmanager/CredentialManagerRepo$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/CredentialManagerRepo$Companion;->getInstance()Lcom/android/credentialmanager/CredentialManagerRepo;
+HSPLcom/android/credentialmanager/CredentialManagerRepo$Companion;->getRepo()Lcom/android/credentialmanager/CredentialManagerRepo;
+HSPLcom/android/credentialmanager/CredentialManagerRepo$Companion;->setRepo(Lcom/android/credentialmanager/CredentialManagerRepo;)V
+HSPLcom/android/credentialmanager/CredentialManagerRepo$Companion;->setup(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/credentialmanager/CredentialManagerRepo;-><clinit>()V
+HSPLcom/android/credentialmanager/CredentialManagerRepo;-><init>(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/credentialmanager/CredentialManagerRepo;->getCreateProviderDisableListInitialUiState()Ljava/util/List;
+HSPLcom/android/credentialmanager/CredentialManagerRepo;->getCreateProviderEnableListInitialUiState()Ljava/util/List;
+HSPLcom/android/credentialmanager/CredentialManagerRepo;->getCreateRequestDisplayInfoInitialUiState()Lcom/android/credentialmanager/createflow/RequestDisplayInfo;
+HSPLcom/android/credentialmanager/CredentialManagerRepo;->getRequestInfo()Landroid/credentials/ui/RequestInfo;
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$CredentialManagerBottomSheet$3;-><init>(Lcom/android/credentialmanager/CredentialSelectorActivity;Lcom/android/credentialmanager/common/DialogType;I)V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$CredentialManagerBottomSheet$launcher$1$1;-><init>(Landroidx/compose/runtime/MutableState;)V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$WhenMappings;-><clinit>()V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$onCancel$1;-><init>(Lcom/android/credentialmanager/CredentialSelectorActivity;)V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$onCreate$1$1;-><init>(Lcom/android/credentialmanager/CredentialSelectorActivity;Landroid/credentials/ui/RequestInfo;)V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$onCreate$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$onCreate$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$onCreate$1;-><init>(Lcom/android/credentialmanager/CredentialSelectorActivity;Landroid/credentials/ui/RequestInfo;)V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$onCreate$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity$onCreate$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/CredentialSelectorActivity;-><clinit>()V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity;-><init>()V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity;->CredentialManagerBottomSheet(Lcom/android/credentialmanager/common/DialogType;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/CredentialSelectorActivity;->onCreate(Landroid/os/Bundle;)V
+HSPLcom/android/credentialmanager/UserConfigRepo$Companion;-><init>()V
+HSPLcom/android/credentialmanager/UserConfigRepo$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/UserConfigRepo$Companion;->getInstance()Lcom/android/credentialmanager/UserConfigRepo;
+HSPLcom/android/credentialmanager/UserConfigRepo$Companion;->getRepo()Lcom/android/credentialmanager/UserConfigRepo;
+HSPLcom/android/credentialmanager/UserConfigRepo$Companion;->setRepo(Lcom/android/credentialmanager/UserConfigRepo;)V
+HSPLcom/android/credentialmanager/UserConfigRepo$Companion;->setup(Landroid/content/Context;)V
+HSPLcom/android/credentialmanager/UserConfigRepo;-><clinit>()V
+HSPLcom/android/credentialmanager/UserConfigRepo;-><init>(Landroid/content/Context;)V
+HSPLcom/android/credentialmanager/UserConfigRepo;->getDefaultProviderId()Ljava/lang/String;
+HSPLcom/android/credentialmanager/UserConfigRepo;->getIsPasskeyFirstUse()Z
+HSPLcom/android/credentialmanager/common/DialogType$Companion;-><init>()V
+HSPLcom/android/credentialmanager/common/DialogType$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/common/DialogType$Companion;->toDialogType(Ljava/lang/String;)Lcom/android/credentialmanager/common/DialogType;
+HSPLcom/android/credentialmanager/common/DialogType;->$values()[Lcom/android/credentialmanager/common/DialogType;
+HSPLcom/android/credentialmanager/common/DialogType;-><clinit>()V
+HSPLcom/android/credentialmanager/common/DialogType;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/credentialmanager/common/DialogType;->values()[Lcom/android/credentialmanager/common/DialogType;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetDefaults;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetDefaults;-><init>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetDefaults;->getElevation-D9Ej5fM()F
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$1$1;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetState;Lkotlinx/coroutines/CoroutineScope;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$2$1;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetState;F)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$2$1;->invoke-Bjo55l4(Landroidx/compose/ui/unit/Density;)J
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$3$1;-><init>(Landroidx/compose/runtime/MutableState;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$3$1;->invoke(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$3$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4$1;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetState;Lkotlinx/coroutines/CoroutineScope;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetState;Lkotlinx/coroutines/CoroutineScope;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$5;-><init>(Lkotlin/jvm/functions/Function3;I)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$5;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetState;ILandroidx/compose/ui/graphics/Shape;JJFLkotlin/jvm/functions/Function2;JLkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function3;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1;->invoke(Landroidx/compose/foundation/layout/BoxWithConstraintsScope;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$2;-><init>(Lkotlin/jvm/functions/Function3;Landroidx/compose/ui/Modifier;Lcom/android/credentialmanager/common/material/ModalBottomSheetState;Landroidx/compose/ui/graphics/Shape;FJJJLkotlin/jvm/functions/Function2;II)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$1$1;-><init>(JLandroidx/compose/runtime/State;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$1$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$2;-><init>(JLkotlin/jvm/functions/Function0;ZI)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1$1;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$2$1$1;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$2$1;-><init>(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$2$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$1;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$1;-><init>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$2;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetValue;Landroidx/compose/animation/core/AnimationSpec;ZLkotlin/jvm/functions/Function1;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$2;->invoke()Lcom/android/credentialmanager/common/material/ModalBottomSheetState;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$2;->invoke()Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt;->ModalBottomSheetLayout-BzaUkTc(Lkotlin/jvm/functions/Function3;Landroidx/compose/ui/Modifier;Lcom/android/credentialmanager/common/material/ModalBottomSheetState;Landroidx/compose/ui/graphics/Shape;FJJJLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt;->Scrim-3J-VO9M(JLkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt;->Scrim_3J_VO9M$lambda$0(Landroidx/compose/runtime/State;)F
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt;->access$Scrim-3J-VO9M(JLkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt;->access$Scrim_3J_VO9M$lambda$0(Landroidx/compose/runtime/State;)F
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt;->access$bottomSheetSwipeable(Landroidx/compose/ui/Modifier;Lcom/android/credentialmanager/common/material/ModalBottomSheetState;FLandroidx/compose/runtime/State;)Landroidx/compose/ui/Modifier;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt;->bottomSheetSwipeable(Landroidx/compose/ui/Modifier;Lcom/android/credentialmanager/common/material/ModalBottomSheetState;FLandroidx/compose/runtime/State;)Landroidx/compose/ui/Modifier;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetKt;->rememberModalBottomSheetState(Lcom/android/credentialmanager/common/material/ModalBottomSheetValue;Landroidx/compose/animation/core/AnimationSpec;ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Lcom/android/credentialmanager/common/material/ModalBottomSheetState;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion$Saver$1;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion$Saver$1;-><init>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Lcom/android/credentialmanager/common/material/ModalBottomSheetState;)Lcom/android/credentialmanager/common/material/ModalBottomSheetValue;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion$Saver$2;-><init>(Landroidx/compose/animation/core/AnimationSpec;ZLkotlin/jvm/functions/Function1;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion;-><init>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion;->Saver(Landroidx/compose/animation/core/AnimationSpec;ZLkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetValue;Landroidx/compose/animation/core/AnimationSpec;ZLkotlin/jvm/functions/Function1;)V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState;->getHasHalfExpandedState$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Z
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState;->getNestedScrollConnection$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState;->isSkipHalfExpanded$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Z
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetState;->isVisible()Z
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetValue;->$values()[Lcom/android/credentialmanager/common/material/ModalBottomSheetValue;
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetValue;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/ModalBottomSheetValue;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/credentialmanager/common/material/SwipeableDefaults;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/SwipeableDefaults;-><init>()V
+HSPLcom/android/credentialmanager/common/material/SwipeableDefaults;->getAnimationSpec()Landroidx/compose/animation/core/SpringSpec;
+HSPLcom/android/credentialmanager/common/material/SwipeableDefaults;->getVelocityThreshold-D9Ej5fM()F
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$1;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$1;-><init>()V
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$3$1;-><init>(Ljava/util/Map;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/unit/Density;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$3;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;Ljava/util/Map;Lcom/android/credentialmanager/common/material/ResistanceConfig;Landroidx/compose/ui/unit/Density;Lkotlin/jvm/functions/Function2;FLkotlin/coroutines/Continuation;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;Lkotlin/coroutines/Continuation;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3;-><init>(Ljava/util/Map;Lcom/android/credentialmanager/common/material/SwipeableState;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;ZLcom/android/credentialmanager/common/material/ResistanceConfig;Lkotlin/jvm/functions/Function2;F)V
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt;->access$computeTarget(FFLjava/util/Set;Lkotlin/jvm/functions/Function2;FF)F
+HSPLcom/android/credentialmanager/common/material/SwipeableKt;->access$getOffset(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Float;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt;->computeTarget(FFLjava/util/Set;Lkotlin/jvm/functions/Function2;FF)F
+HSPLcom/android/credentialmanager/common/material/SwipeableKt;->findBounds(FLjava/util/Set;)Ljava/util/List;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt;->getOffset(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Float;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt;->getPreUpPostDownNestedScrollConnection(Lcom/android/credentialmanager/common/material/SwipeableState;)Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt;->swipeable-pPrIpRY$default(Landroidx/compose/ui/Modifier;Lcom/android/credentialmanager/common/material/SwipeableState;Ljava/util/Map;Landroidx/compose/foundation/gestures/Orientation;ZZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Lcom/android/credentialmanager/common/material/ResistanceConfig;FILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+HSPLcom/android/credentialmanager/common/material/SwipeableKt;->swipeable-pPrIpRY(Landroidx/compose/ui/Modifier;Lcom/android/credentialmanager/common/material/SwipeableState;Ljava/util/Map;Landroidx/compose/foundation/gestures/Orientation;ZZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Lcom/android/credentialmanager/common/material/ResistanceConfig;F)Landroidx/compose/ui/Modifier;
+HSPLcom/android/credentialmanager/common/material/SwipeableState$Companion;-><init>()V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$draggableState$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$draggableState$1;->invoke(F)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$draggableState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableState$latestNonEmptyAnchorsFlow$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$processNewAnchors$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;Lkotlin/coroutines/Continuation;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$snapInternalToOffset$2;-><init>(FLcom/android/credentialmanager/common/material/SwipeableState;Lkotlin/coroutines/Continuation;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$snapInternalToOffset$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLcom/android/credentialmanager/common/material/SwipeableState$snapInternalToOffset$2;->invoke(Landroidx/compose/foundation/gestures/DragScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableState$snapInternalToOffset$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableState$snapInternalToOffset$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1;-><init>(Lkotlinx/coroutines/flow/Flow;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$thresholds$2;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/SwipeableState$thresholds$2;-><init>()V
+HSPLcom/android/credentialmanager/common/material/SwipeableState;-><clinit>()V
+HSPLcom/android/credentialmanager/common/material/SwipeableState;-><init>(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function1;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->access$getAbsoluteOffset$p(Lcom/android/credentialmanager/common/material/SwipeableState;)Landroidx/compose/runtime/MutableState;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->access$getOffsetState$p(Lcom/android/credentialmanager/common/material/SwipeableState;)Landroidx/compose/runtime/MutableState;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->access$getOverflowState$p(Lcom/android/credentialmanager/common/material/SwipeableState;)Landroidx/compose/runtime/MutableState;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->ensureInit$frameworks__base__packages__CredentialManager__android_common__CredentialManager(Ljava/util/Map;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getAnchors$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Ljava/util/Map;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getCurrentValue()Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getDraggableState$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Landroidx/compose/foundation/gestures/DraggableState;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getMaxBound$frameworks__base__packages__CredentialManager__android_common__CredentialManager()F
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getMinBound$frameworks__base__packages__CredentialManager__android_common__CredentialManager()F
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getOffset()Landroidx/compose/runtime/State;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getResistance$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lcom/android/credentialmanager/common/material/ResistanceConfig;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getTargetValue()Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->getThresholds$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lkotlin/jvm/functions/Function2;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->isAnimationRunning()Z
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->processNewAnchors$frameworks__base__packages__CredentialManager__android_common__CredentialManager(Ljava/util/Map;Ljava/util/Map;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->setAnchors$frameworks__base__packages__CredentialManager__android_common__CredentialManager(Ljava/util/Map;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->setResistance$frameworks__base__packages__CredentialManager__android_common__CredentialManager(Lcom/android/credentialmanager/common/material/ResistanceConfig;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->setThresholds$frameworks__base__packages__CredentialManager__android_common__CredentialManager(Lkotlin/jvm/functions/Function2;)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->setVelocityThreshold$frameworks__base__packages__CredentialManager__android_common__CredentialManager(F)V
+HSPLcom/android/credentialmanager/common/material/SwipeableState;->snapInternalToOffset(FLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/ui/ActionButtonKt$ActionButton$1;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/credentialmanager/common/ui/ActionButtonKt$ActionButton$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/ui/ActionButtonKt$ActionButton$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/ui/ActionButtonKt$ActionButton$2;-><init>(Ljava/lang/String;Lkotlin/jvm/functions/Function0;I)V
+HSPLcom/android/credentialmanager/common/ui/ActionButtonKt;->ActionButton(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/ui/CardsKt$ContainerCard$1;-><init>(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/foundation/BorderStroke;Lkotlin/jvm/functions/Function3;II)V
+HSPLcom/android/credentialmanager/common/ui/CardsKt;->ContainerCard(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/foundation/BorderStroke;Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;II)V
+HSPLcom/android/credentialmanager/common/ui/ConfirmButtonKt$ConfirmButton$1;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/credentialmanager/common/ui/ConfirmButtonKt$ConfirmButton$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/ui/ConfirmButtonKt$ConfirmButton$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/common/ui/ConfirmButtonKt$ConfirmButton$2;-><init>(Ljava/lang/String;Lkotlin/jvm/functions/Function0;I)V
+HSPLcom/android/credentialmanager/common/ui/ConfirmButtonKt;->ConfirmButton(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/ui/EntryKt$Entry$1;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;II)V
+HSPLcom/android/credentialmanager/common/ui/EntryKt;->Entry(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+HSPLcom/android/credentialmanager/common/ui/TextsKt$TextOnSurface$1;-><init>(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/TextStyle;II)V
+HSPLcom/android/credentialmanager/common/ui/TextsKt$TextOnSurfaceVariant$1;-><init>(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/TextStyle;II)V
+HSPLcom/android/credentialmanager/common/ui/TextsKt$TextSecondary$1;-><init>(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/TextStyle;II)V
+HSPLcom/android/credentialmanager/common/ui/TextsKt;->TextInternal-2rk-Xng(Ljava/lang/String;JLandroidx/compose/ui/Modifier;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/common/ui/TextsKt;->TextOnSurface-B9Ufvwk(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;II)V
+HSPLcom/android/credentialmanager/common/ui/TextsKt;->TextOnSurfaceVariant-B9Ufvwk(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;II)V
+HSPLcom/android/credentialmanager/common/ui/TextsKt;->TextSecondary-B9Ufvwk(Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/text/style/TextAlign;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;II)V
+HSPLcom/android/credentialmanager/createflow/ActiveEntry;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/ActiveEntry;-><init>(Lcom/android/credentialmanager/createflow/EnabledProviderInfo;Lcom/android/credentialmanager/createflow/EntryInfo;)V
+HSPLcom/android/credentialmanager/createflow/ActiveEntry;->getActiveEntryInfo()Lcom/android/credentialmanager/createflow/EntryInfo;
+HSPLcom/android/credentialmanager/createflow/ActiveEntry;->getActiveProvider()Lcom/android/credentialmanager/createflow/EnabledProviderInfo;
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-1$1;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-1$1;-><init>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-2$1;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-2$1;-><init>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-3$1;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-3$1;-><init>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-4$1;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-4$1;-><init>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-5$1;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-5$1;-><init>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt;-><init>()V
+HSPLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt;->getLambda-1$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lkotlin/jvm/functions/Function2;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$6;-><init>(Ljava/lang/Object;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$7;-><init>(Ljava/lang/Object;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$8;-><init>(Ljava/lang/Object;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$WhenMappings;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1;-><init>(Lcom/android/credentialmanager/createflow/CreateCredentialViewModel;Landroidx/activity/compose/ManagedActivityResultLauncher;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$2;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetState;Lcom/android/credentialmanager/createflow/CreateCredentialViewModel;Lkotlin/coroutines/Continuation;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$3;-><init>(Lcom/android/credentialmanager/createflow/CreateCredentialViewModel;Landroidx/activity/compose/ManagedActivityResultLauncher;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$1$1$1;-><init>(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Lcom/android/credentialmanager/createflow/CreateOptionInfo;Lkotlin/jvm/functions/Function1;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$1$1$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$1;-><init>(Lcom/android/credentialmanager/createflow/EnabledProviderInfo;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Ljava/util/List;Lcom/android/credentialmanager/createflow/CreateOptionInfo;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$1;-><init>(Lkotlin/jvm/functions/Function1;Lcom/android/credentialmanager/createflow/EntryInfo;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$2;-><init>(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$3;-><init>(Lcom/android/credentialmanager/createflow/EntryInfo;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt;->CreateCredentialScreen(Lcom/android/credentialmanager/createflow/CreateCredentialViewModel;Landroidx/activity/compose/ManagedActivityResultLauncher;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt;->CreationSelectionCard(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Ljava/util/List;Lcom/android/credentialmanager/createflow/EnabledProviderInfo;Lcom/android/credentialmanager/createflow/CreateOptionInfo;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt;->PrimaryCreateOptionRow(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Lcom/android/credentialmanager/createflow/EntryInfo;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialUiState;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialUiState;-><init>(Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/createflow/CreateScreenState;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Ljava/util/List;ZLcom/android/credentialmanager/createflow/ActiveEntry;Lcom/android/credentialmanager/createflow/EntryInfo;ZZLjava/lang/Boolean;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialUiState;-><init>(Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/createflow/CreateScreenState;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Ljava/util/List;ZLcom/android/credentialmanager/createflow/ActiveEntry;Lcom/android/credentialmanager/createflow/EntryInfo;ZZLjava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getActiveEntry()Lcom/android/credentialmanager/createflow/ActiveEntry;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getCurrentScreenState()Lcom/android/credentialmanager/createflow/CreateScreenState;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getEnabledProviders()Ljava/util/List;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getHidden()Z
+HSPLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getRequestDisplayInfo()Lcom/android/credentialmanager/createflow/RequestDisplayInfo;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel$dialogResult$2;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel$dialogResult$2;-><init>()V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel$dialogResult$2;->invoke()Landroidx/lifecycle/MutableLiveData;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel$dialogResult$2;->invoke()Ljava/lang/Object;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel;-><init>()V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel;-><init>(Lcom/android/credentialmanager/CredentialManagerRepo;Lcom/android/credentialmanager/UserConfigRepo;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel;-><init>(Lcom/android/credentialmanager/CredentialManagerRepo;Lcom/android/credentialmanager/UserConfigRepo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->getDialogResult()Landroidx/lifecycle/MutableLiveData;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->getUiState()Lcom/android/credentialmanager/createflow/CreateCredentialUiState;
+HSPLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->observeDialogResult()Landroidx/lifecycle/LiveData;
+HSPLcom/android/credentialmanager/createflow/CreateOptionInfo;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/CreateOptionInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/content/Intent;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Long;)V
+HSPLcom/android/credentialmanager/createflow/CreateOptionInfo;->getLastUsedTimeMillis()Ljava/lang/Long;
+HSPLcom/android/credentialmanager/createflow/CreateOptionInfo;->getProfileIcon()Landroid/graphics/drawable/Drawable;
+HSPLcom/android/credentialmanager/createflow/CreateOptionInfo;->getUserProviderDisplayName()Ljava/lang/String;
+HSPLcom/android/credentialmanager/createflow/CreateScreenState;->$values()[Lcom/android/credentialmanager/createflow/CreateScreenState;
+HSPLcom/android/credentialmanager/createflow/CreateScreenState;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/CreateScreenState;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/credentialmanager/createflow/CreateScreenState;->values()[Lcom/android/credentialmanager/createflow/CreateScreenState;
+HSPLcom/android/credentialmanager/createflow/DisabledProviderInfo;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/DisabledProviderInfo;-><init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/credentialmanager/createflow/EnabledProviderInfo;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/EnabledProviderInfo;-><init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lcom/android/credentialmanager/createflow/RemoteInfo;)V
+HSPLcom/android/credentialmanager/createflow/EnabledProviderInfo;->getCreateOptions()Ljava/util/List;
+HSPLcom/android/credentialmanager/createflow/EnabledProviderInfo;->getRemoteEntry()Lcom/android/credentialmanager/createflow/RemoteInfo;
+HSPLcom/android/credentialmanager/createflow/EntryInfo;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/EntryInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/content/Intent;)V
+HSPLcom/android/credentialmanager/createflow/ProviderInfo;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/ProviderInfo;-><init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/credentialmanager/createflow/ProviderInfo;->getDisplayName()Ljava/lang/String;
+HSPLcom/android/credentialmanager/createflow/ProviderInfo;->getIcon()Landroid/graphics/drawable/Drawable;
+HSPLcom/android/credentialmanager/createflow/ProviderInfo;->getId()Ljava/lang/String;
+HSPLcom/android/credentialmanager/createflow/RequestDisplayInfo;-><clinit>()V
+HSPLcom/android/credentialmanager/createflow/RequestDisplayInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/drawable/Drawable;)V
+HSPLcom/android/credentialmanager/createflow/RequestDisplayInfo;->getAppName()Ljava/lang/String;
+HSPLcom/android/credentialmanager/createflow/RequestDisplayInfo;->getSubtitle()Ljava/lang/String;
+HSPLcom/android/credentialmanager/createflow/RequestDisplayInfo;->getTitle()Ljava/lang/String;
+HSPLcom/android/credentialmanager/createflow/RequestDisplayInfo;->getType()Ljava/lang/String;
+HSPLcom/android/credentialmanager/createflow/RequestDisplayInfo;->getTypeIcon()Landroid/graphics/drawable/Drawable;
+HSPLcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest$Companion;-><init>()V
+HSPLcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest$Companion;->createFrom(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;Z)Lcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest;
+HSPLcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest;-><clinit>()V
+HSPLcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest;-><init>(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;Z)V
+HSPLcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest;->getType()Ljava/lang/String;
+HSPLcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest$Companion;-><init>()V
+HSPLcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest$Companion;->createFrom$frameworks__base__packages__CredentialManager__android_common__CredentialManager(Landroid/os/Bundle;)Lcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest;
+HSPLcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest$Companion;->toCredentialDataBundle$frameworks__base__packages__CredentialManager__android_common__CredentialManager(Ljava/lang/String;Z)Landroid/os/Bundle;
+HSPLcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest;-><clinit>()V
+HSPLcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest;-><init>(Ljava/lang/String;Z)V
+HSPLcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest;->getRequestJson()Ljava/lang/String;
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry$Companion;-><init>()V
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry$Companion;->fromSlice(Landroid/app/slice/Slice;)Lcom/android/credentialmanager/jetpack/provider/CreateEntry;
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry;-><clinit>()V
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry;-><init>(Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/graphics/drawable/Icon;JLjava/util/List;)V
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry;->getAccountName()Ljava/lang/CharSequence;
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry;->getCredentialCountInformationList()Ljava/util/List;
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry;->getIcon()Landroid/graphics/drawable/Icon;
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry;->getLastUsedTimeMillis()J
+HSPLcom/android/credentialmanager/jetpack/provider/CreateEntry;->getPendingIntent()Landroid/app/PendingIntent;
+HSPLcom/android/credentialmanager/jetpack/provider/CredentialCountInformation$Companion;-><init>()V
+HSPLcom/android/credentialmanager/jetpack/provider/CredentialCountInformation$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/credentialmanager/jetpack/provider/CredentialCountInformation$Companion;->getCountForType(Ljava/util/List;Ljava/lang/String;)Ljava/lang/Integer;
+HSPLcom/android/credentialmanager/jetpack/provider/CredentialCountInformation$Companion;->getPasskeyCount(Ljava/util/List;)Ljava/lang/Integer;
+HSPLcom/android/credentialmanager/jetpack/provider/CredentialCountInformation$Companion;->getPasswordCount(Ljava/util/List;)Ljava/lang/Integer;
+HSPLcom/android/credentialmanager/jetpack/provider/CredentialCountInformation$Companion;->getTotalCount(Ljava/util/List;)Ljava/lang/Integer;
+HSPLcom/android/credentialmanager/jetpack/provider/CredentialCountInformation;-><clinit>()V
+HSPLcom/android/credentialmanager/ui/theme/AndroidColorScheme;-><clinit>()V
+HSPLcom/android/credentialmanager/ui/theme/AndroidColorScheme;-><init>(Landroid/content/Context;)V
+HSPLcom/android/credentialmanager/ui/theme/AndroidColorScheme;->getColor-WaAFU9c(Landroid/content/Context;I)J
+HSPLcom/android/credentialmanager/ui/theme/AndroidColorScheme;->getColorAccentPrimaryVariant-0d7_KjU()J
+HSPLcom/android/credentialmanager/ui/theme/AndroidColorSchemeKt$LocalAndroidColorScheme$1;-><clinit>()V
+HSPLcom/android/credentialmanager/ui/theme/AndroidColorSchemeKt$LocalAndroidColorScheme$1;-><init>()V
+HSPLcom/android/credentialmanager/ui/theme/AndroidColorSchemeKt;-><clinit>()V
+HSPLcom/android/credentialmanager/ui/theme/AndroidColorSchemeKt;->getLocalAndroidColorScheme()Landroidx/compose/runtime/ProvidableCompositionLocal;
+HSPLcom/android/credentialmanager/ui/theme/ColorKt;-><clinit>()V
+HSPLcom/android/credentialmanager/ui/theme/ColorKt;->getTextColorPrimary()J
+HSPLcom/android/credentialmanager/ui/theme/ColorKt;->getTextColorSecondary()J
+HSPLcom/android/credentialmanager/ui/theme/EntryShape;-><clinit>()V
+HSPLcom/android/credentialmanager/ui/theme/EntryShape;-><init>()V
+HSPLcom/android/credentialmanager/ui/theme/EntryShape;->getFullSmallRoundedCorner()Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLcom/android/credentialmanager/ui/theme/EntryShape;->getTopRoundedCorner()Landroidx/compose/foundation/shape/RoundedCornerShape;
+HSPLcom/android/credentialmanager/ui/theme/ShapeKt;-><clinit>()V
+HSPLcom/android/credentialmanager/ui/theme/ShapeKt;->getShapes()Landroidx/compose/material3/Shapes;
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$1$1;-><init>(Lkotlin/jvm/functions/Function2;I)V
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$1;-><init>(Lcom/android/credentialmanager/ui/theme/AndroidColorScheme;Lkotlin/jvm/functions/Function2;I)V
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$2;-><init>(ZLkotlin/jvm/functions/Function2;II)V
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/credentialmanager/ui/theme/ThemeKt;->CredentialSelectorTheme(ZLkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+HSPLcom/android/credentialmanager/ui/theme/TypeKt;-><clinit>()V
+HSPLcom/android/credentialmanager/ui/theme/TypeKt;->getTypography()Landroidx/compose/material3/Typography;
+HSPLkotlin/LazyKt;->lazy(Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;
+HSPLkotlin/LazyKt;->lazy(Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;
+HSPLkotlin/LazyKt__LazyJVMKt$WhenMappings;-><clinit>()V
+HSPLkotlin/LazyKt__LazyJVMKt;->lazy(Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;
+HSPLkotlin/LazyKt__LazyJVMKt;->lazy(Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;
+HSPLkotlin/LazyThreadSafetyMode;->$values()[Lkotlin/LazyThreadSafetyMode;
+HSPLkotlin/LazyThreadSafetyMode;-><clinit>()V
+HSPLkotlin/LazyThreadSafetyMode;-><init>(Ljava/lang/String;I)V
+HSPLkotlin/LazyThreadSafetyMode;->values()[Lkotlin/LazyThreadSafetyMode;
+HSPLkotlin/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLkotlin/Pair;->component1()Ljava/lang/Object;
+HSPLkotlin/Pair;->component2()Ljava/lang/Object;
+HSPLkotlin/Pair;->getFirst()Ljava/lang/Object;
+HSPLkotlin/Pair;->getSecond()Ljava/lang/Object;
+HSPLkotlin/Result$Companion;-><init>()V
+HSPLkotlin/Result$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/Result$Failure;-><init>(Ljava/lang/Throwable;)V
+HSPLkotlin/Result;-><clinit>()V
+HSPLkotlin/Result;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/Result;->exceptionOrNull-impl(Ljava/lang/Object;)Ljava/lang/Throwable;
+HSPLkotlin/Result;->isFailure-impl(Ljava/lang/Object;)Z
+HSPLkotlin/Result;->isSuccess-impl(Ljava/lang/Object;)Z
+HSPLkotlin/ResultKt;->createFailure(Ljava/lang/Throwable;)Ljava/lang/Object;
+HSPLkotlin/ResultKt;->throwOnFailure(Ljava/lang/Object;)V
+HSPLkotlin/SynchronizedLazyImpl;-><init>(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;)V
+HSPLkotlin/SynchronizedLazyImpl;-><init>(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/SynchronizedLazyImpl;->getValue()Ljava/lang/Object;
+HSPLkotlin/TuplesKt;->to(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
+HSPLkotlin/ULong$Companion;-><init>()V
+HSPLkotlin/ULong$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/ULong;-><clinit>()V
+HSPLkotlin/ULong;->constructor-impl(J)J
+HSPLkotlin/UNINITIALIZED_VALUE;-><clinit>()V
+HSPLkotlin/UNINITIALIZED_VALUE;-><init>()V
+HSPLkotlin/Unit;-><clinit>()V
+HSPLkotlin/Unit;-><init>()V
+HSPLkotlin/UnsafeLazyImpl;-><init>(Lkotlin/jvm/functions/Function0;)V
+HSPLkotlin/UnsafeLazyImpl;->getValue()Ljava/lang/Object;
+HSPLkotlin/UnsignedKt;->ulongToDouble(J)D
+HSPLkotlin/collections/AbstractCollection;-><init>()V
+HSPLkotlin/collections/AbstractCollection;->isEmpty()Z
+HSPLkotlin/collections/AbstractCollection;->size()I
+HSPLkotlin/collections/AbstractList$Companion;-><init>()V
+HSPLkotlin/collections/AbstractList$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/collections/AbstractList;-><clinit>()V
+HSPLkotlin/collections/AbstractList;-><init>()V
+HSPLkotlin/collections/AbstractMap$Companion;-><init>()V
+HSPLkotlin/collections/AbstractMap$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/collections/AbstractMap;-><clinit>()V
+HSPLkotlin/collections/AbstractMap;-><init>()V
+HSPLkotlin/collections/AbstractMap;->containsEntry$kotlin_stdlib(Ljava/util/Map$Entry;)Z
+HSPLkotlin/collections/AbstractMap;->entrySet()Ljava/util/Set;
+HSPLkotlin/collections/AbstractMap;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/collections/AbstractMap;->size()I
+HSPLkotlin/collections/AbstractMutableList;-><init>()V
+HSPLkotlin/collections/AbstractMutableList;->size()I
+HSPLkotlin/collections/AbstractMutableMap;-><init>()V
+HSPLkotlin/collections/AbstractMutableMap;->size()I
+HSPLkotlin/collections/AbstractSet$Companion;-><init>()V
+HSPLkotlin/collections/AbstractSet$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/collections/AbstractSet$Companion;->setEquals$kotlin_stdlib(Ljava/util/Set;Ljava/util/Set;)Z
+HSPLkotlin/collections/AbstractSet;-><clinit>()V
+HSPLkotlin/collections/AbstractSet;-><init>()V
+HSPLkotlin/collections/AbstractSet;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/collections/ArrayAsCollection;-><init>([Ljava/lang/Object;Z)V
+HSPLkotlin/collections/ArrayAsCollection;->toArray()[Ljava/lang/Object;
+HSPLkotlin/collections/ArrayDeque$Companion;-><init>()V
+HSPLkotlin/collections/ArrayDeque$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/collections/ArrayDeque$Companion;->newCapacity$kotlin_stdlib(II)I
+HSPLkotlin/collections/ArrayDeque;-><clinit>()V
+HSPLkotlin/collections/ArrayDeque;-><init>()V
+HSPLkotlin/collections/ArrayDeque;->addLast(Ljava/lang/Object;)V
+HSPLkotlin/collections/ArrayDeque;->copyElements(I)V
+HSPLkotlin/collections/ArrayDeque;->ensureCapacity(I)V
+HSPLkotlin/collections/ArrayDeque;->getSize()I
+HSPLkotlin/collections/ArrayDeque;->incremented(I)I
+HSPLkotlin/collections/ArrayDeque;->isEmpty()Z
+HSPLkotlin/collections/ArrayDeque;->positiveMod(I)I
+HSPLkotlin/collections/ArrayDeque;->removeFirst()Ljava/lang/Object;
+HSPLkotlin/collections/ArrayDeque;->removeFirstOrNull()Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt;->asList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/ArraysKt;->copyInto$default([F[FIIIILjava/lang/Object;)[F
+HSPLkotlin/collections/ArraysKt;->copyInto$default([I[IIIIILjava/lang/Object;)[I
+HSPLkotlin/collections/ArraysKt;->copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt;->copyInto([F[FIII)[F
+HSPLkotlin/collections/ArraysKt;->copyInto([I[IIII)[I
+HSPLkotlin/collections/ArraysKt;->copyInto([Ljava/lang/Object;[Ljava/lang/Object;III)[Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt;->copyOfRange([Ljava/lang/Object;II)[Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt;->fill$default([Ljava/lang/Object;Ljava/lang/Object;IIILjava/lang/Object;)V
+HSPLkotlin/collections/ArraysKt;->fill([Ljava/lang/Object;Ljava/lang/Object;II)V
+HSPLkotlin/collections/ArraysKt;->getLastIndex([Ljava/lang/Object;)I
+HSPLkotlin/collections/ArraysKt;->sortWith([Ljava/lang/Object;Ljava/util/Comparator;II)V
+HSPLkotlin/collections/ArraysKt;->toList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/ArraysKt__ArraysJVMKt;->copyOfRangeToIndexCheck(II)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->asList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([F[FIIIILjava/lang/Object;)[F
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([I[IIIIILjava/lang/Object;)[I
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([F[FIII)[F
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([I[IIII)[I
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyInto([Ljava/lang/Object;[Ljava/lang/Object;III)[Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->copyOfRange([Ljava/lang/Object;II)[Ljava/lang/Object;
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill$default([Ljava/lang/Object;Ljava/lang/Object;IIILjava/lang/Object;)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->fill([Ljava/lang/Object;Ljava/lang/Object;II)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->sortWith([Ljava/lang/Object;Ljava/util/Comparator;)V
+HSPLkotlin/collections/ArraysKt___ArraysJvmKt;->sortWith([Ljava/lang/Object;Ljava/util/Comparator;II)V
+HSPLkotlin/collections/ArraysKt___ArraysKt;->getLastIndex([Ljava/lang/Object;)I
+HSPLkotlin/collections/ArraysKt___ArraysKt;->toList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/ArraysKt___ArraysKt;->toMutableList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/ArraysUtilJVM;->asList([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->addAll(Ljava/util/Collection;Ljava/lang/Iterable;)Z
+HSPLkotlin/collections/CollectionsKt;->collectionSizeOrDefault(Ljava/lang/Iterable;I)I
+HSPLkotlin/collections/CollectionsKt;->distinct(Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->emptyList()Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->first(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt;->firstOrNull(Ljava/lang/Iterable;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt;->getLastIndex(Ljava/util/List;)I
+HSPLkotlin/collections/CollectionsKt;->last(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt;->lastOrNull(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt;->listOf(Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->listOf([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->listOfNotNull(Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->maxOrNull(Ljava/lang/Iterable;)Ljava/lang/Float;
+HSPLkotlin/collections/CollectionsKt;->minOrNull(Ljava/lang/Iterable;)Ljava/lang/Float;
+HSPLkotlin/collections/CollectionsKt;->plus(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->singleOrNull(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt;->sortWith(Ljava/util/List;Ljava/util/Comparator;)V
+HSPLkotlin/collections/CollectionsKt;->sortedWith(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->toList(Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt;->toMutableList(Ljava/util/Collection;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->copyToArrayOfAny([Ljava/lang/Object;Z)[Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt__CollectionsJVMKt;->listOf(Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->asCollection([Ljava/lang/Object;)Ljava/util/Collection;
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->emptyList()Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->getLastIndex(Ljava/util/List;)I
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->listOf([Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__CollectionsKt;->listOfNotNull(Ljava/lang/Object;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt__IterablesKt;->collectionSizeOrDefault(Ljava/lang/Iterable;I)I
+HSPLkotlin/collections/CollectionsKt__MutableCollectionsJVMKt;->sortWith(Ljava/util/List;Ljava/util/Comparator;)V
+HSPLkotlin/collections/CollectionsKt__MutableCollectionsKt;->addAll(Ljava/util/Collection;Ljava/lang/Iterable;)Z
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->distinct(Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->first(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->firstOrNull(Ljava/lang/Iterable;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->last(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->lastOrNull(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->maxOrNull(Ljava/lang/Iterable;)Ljava/lang/Float;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->minOrNull(Ljava/lang/Iterable;)Ljava/lang/Float;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->plus(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->singleOrNull(Ljava/util/List;)Ljava/lang/Object;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->sortedWith(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toList(Ljava/lang/Iterable;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableList(Ljava/util/Collection;)Ljava/util/List;
+HSPLkotlin/collections/CollectionsKt___CollectionsKt;->toMutableSet(Ljava/lang/Iterable;)Ljava/util/Set;
+HSPLkotlin/collections/EmptyIterator;-><clinit>()V
+HSPLkotlin/collections/EmptyIterator;-><init>()V
+HSPLkotlin/collections/EmptyIterator;->hasNext()Z
+HSPLkotlin/collections/EmptyList;-><clinit>()V
+HSPLkotlin/collections/EmptyList;-><init>()V
+HSPLkotlin/collections/EmptyList;->contains(Ljava/lang/Object;)Z
+HSPLkotlin/collections/EmptyList;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/collections/EmptyList;->getSize()I
+HSPLkotlin/collections/EmptyList;->isEmpty()Z
+HSPLkotlin/collections/EmptyList;->iterator()Ljava/util/Iterator;
+HSPLkotlin/collections/EmptyList;->listIterator()Ljava/util/ListIterator;
+HSPLkotlin/collections/EmptyList;->size()I
+HSPLkotlin/collections/EmptyList;->toArray()[Ljava/lang/Object;
+HSPLkotlin/collections/EmptyMap;-><clinit>()V
+HSPLkotlin/collections/EmptyMap;-><init>()V
+HSPLkotlin/collections/EmptyMap;->entrySet()Ljava/util/Set;
+HSPLkotlin/collections/EmptyMap;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/collections/EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/collections/EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Void;
+HSPLkotlin/collections/EmptyMap;->getEntries()Ljava/util/Set;
+HSPLkotlin/collections/EmptyMap;->getKeys()Ljava/util/Set;
+HSPLkotlin/collections/EmptyMap;->getValues()Ljava/util/Collection;
+HSPLkotlin/collections/EmptyMap;->isEmpty()Z
+HSPLkotlin/collections/EmptyMap;->keySet()Ljava/util/Set;
+HSPLkotlin/collections/EmptyMap;->values()Ljava/util/Collection;
+HSPLkotlin/collections/EmptySet;-><clinit>()V
+HSPLkotlin/collections/EmptySet;-><init>()V
+HSPLkotlin/collections/EmptySet;->iterator()Ljava/util/Iterator;
+HSPLkotlin/collections/IntIterator;-><init>()V
+HSPLkotlin/collections/MapsKt;->emptyMap()Ljava/util/Map;
+HSPLkotlin/collections/MapsKt;->mapCapacity(I)I
+HSPLkotlin/collections/MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsJVMKt;->mapCapacity(I)I
+HSPLkotlin/collections/MapsKt__MapsKt;->emptyMap()Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->mapOf([Lkotlin/Pair;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;Ljava/lang/Iterable;)V
+HSPLkotlin/collections/MapsKt__MapsKt;->putAll(Ljava/util/Map;[Lkotlin/Pair;)V
+HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->toMap(Ljava/lang/Iterable;Ljava/util/Map;)Ljava/util/Map;
+HSPLkotlin/collections/MapsKt__MapsKt;->toMap([Lkotlin/Pair;Ljava/util/Map;)Ljava/util/Map;
+HSPLkotlin/comparisons/ComparisonsKt;->compareValues(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
+HSPLkotlin/comparisons/ComparisonsKt__ComparisonsKt;->compareValues(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
+HSPLkotlin/coroutines/AbstractCoroutineContextElement;-><init>(Lkotlin/coroutines/CoroutineContext$Key;)V
+HSPLkotlin/coroutines/AbstractCoroutineContextElement;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlin/coroutines/AbstractCoroutineContextElement;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlin/coroutines/AbstractCoroutineContextElement;->getKey()Lkotlin/coroutines/CoroutineContext$Key;
+HSPLkotlin/coroutines/AbstractCoroutineContextElement;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/AbstractCoroutineContextElement;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/AbstractCoroutineContextKey;-><init>(Lkotlin/coroutines/CoroutineContext$Key;Lkotlin/jvm/functions/Function1;)V
+HSPLkotlin/coroutines/CombinedContext;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext$Element;)V
+HSPLkotlin/coroutines/CombinedContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlin/coroutines/CombinedContext;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;+]Lkotlin/coroutines/CoroutineContext;megamorphic_types]Lkotlin/coroutines/CoroutineContext$Element;megamorphic_types
+HSPLkotlin/coroutines/CombinedContext;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/CombinedContext;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/ContinuationInterceptor$DefaultImpls;->get(Lkotlin/coroutines/ContinuationInterceptor;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlin/coroutines/ContinuationInterceptor$DefaultImpls;->minusKey(Lkotlin/coroutines/ContinuationInterceptor;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/ContinuationInterceptor$Key;-><clinit>()V
+HSPLkotlin/coroutines/ContinuationInterceptor$Key;-><init>()V
+HSPLkotlin/coroutines/ContinuationInterceptor;-><clinit>()V
+HSPLkotlin/coroutines/ContinuationKt;->createCoroutine(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlin/coroutines/ContinuationKt;->startCoroutine(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLkotlin/coroutines/CoroutineContext$DefaultImpls;->plus(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->fold(Lkotlin/coroutines/CoroutineContext$Element;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->get(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->minusKey(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/CoroutineContext$Element$DefaultImpls;->plus(Lkotlin/coroutines/CoroutineContext$Element;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/CoroutineContext$plus$1;-><clinit>()V
+HSPLkotlin/coroutines/CoroutineContext$plus$1;-><init>()V
+HSPLkotlin/coroutines/CoroutineContext$plus$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/coroutines/CoroutineContext$plus$1;->invoke(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext$Element;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/EmptyCoroutineContext;-><clinit>()V
+HSPLkotlin/coroutines/EmptyCoroutineContext;-><init>()V
+HSPLkotlin/coroutines/EmptyCoroutineContext;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlin/coroutines/EmptyCoroutineContext;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlin/coroutines/EmptyCoroutineContext;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/SafeContinuation$Companion;-><init>()V
+HSPLkotlin/coroutines/SafeContinuation$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/coroutines/SafeContinuation;-><clinit>()V
+HSPLkotlin/coroutines/SafeContinuation;-><init>(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)V
+HSPLkotlin/coroutines/SafeContinuation;->resumeWith(Ljava/lang/Object;)V
+HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;->$values()[Lkotlin/coroutines/intrinsics/CoroutineSingletons;
+HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;-><clinit>()V
+HSPLkotlin/coroutines/intrinsics/CoroutineSingletons;-><init>(Ljava/lang/String;I)V
+HSPLkotlin/coroutines/intrinsics/IntrinsicsKt;->createCoroutineUnintercepted(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlin/coroutines/intrinsics/IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object;
+HSPLkotlin/coroutines/intrinsics/IntrinsicsKt;->intercepted(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt;->createCoroutineUnintercepted(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt;->intercepted(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object;
+HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->releaseIntercepted()V
+HSPLkotlin/coroutines/jvm/internal/BaseContinuationImpl;->resumeWith(Ljava/lang/Object;)V
+HSPLkotlin/coroutines/jvm/internal/Boxing;->boxBoolean(Z)Ljava/lang/Boolean;
+HSPLkotlin/coroutines/jvm/internal/CompletedContinuation;-><clinit>()V
+HSPLkotlin/coroutines/jvm/internal/CompletedContinuation;-><init>()V
+HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;-><init>(Lkotlin/coroutines/Continuation;Lkotlin/coroutines/CoroutineContext;)V
+HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->intercepted()Lkotlin/coroutines/Continuation;
+HSPLkotlin/coroutines/jvm/internal/ContinuationImpl;->releaseIntercepted()V
+HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineCreated(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineResumed(Lkotlin/coroutines/Continuation;)V
+HSPLkotlin/coroutines/jvm/internal/DebugProbesKt;->probeCoroutineSuspended(Lkotlin/coroutines/Continuation;)V
+HSPLkotlin/coroutines/jvm/internal/RestrictedContinuationImpl;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLkotlin/coroutines/jvm/internal/RestrictedContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlin/coroutines/jvm/internal/RestrictedSuspendLambda;-><init>(ILkotlin/coroutines/Continuation;)V
+HSPLkotlin/coroutines/jvm/internal/SuspendLambda;-><init>(ILkotlin/coroutines/Continuation;)V
+HSPLkotlin/coroutines/jvm/internal/SuspendLambda;->getArity()I
+HSPLkotlin/internal/ProgressionUtilKt;->differenceModulo(III)I
+HSPLkotlin/internal/ProgressionUtilKt;->getProgressionLastElement(III)I
+HSPLkotlin/internal/ProgressionUtilKt;->mod(II)I
+HSPLkotlin/jvm/JvmClassMappingKt;->getJavaClass(Lkotlin/reflect/KClass;)Ljava/lang/Class;
+HSPLkotlin/jvm/JvmClassMappingKt;->getJavaObjectType(Lkotlin/reflect/KClass;)Ljava/lang/Class;
+HSPLkotlin/jvm/internal/CallableReference$NoReceiver;-><clinit>()V
+HSPLkotlin/jvm/internal/CallableReference$NoReceiver;-><init>()V
+HSPLkotlin/jvm/internal/CallableReference$NoReceiver;->access$000()Lkotlin/jvm/internal/CallableReference$NoReceiver;
+HSPLkotlin/jvm/internal/CallableReference;-><clinit>()V
+HSPLkotlin/jvm/internal/CallableReference;-><init>(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLkotlin/jvm/internal/CallableReference;->getBoundReceiver()Ljava/lang/Object;
+HSPLkotlin/jvm/internal/CallableReference;->getName()Ljava/lang/String;
+HSPLkotlin/jvm/internal/CallableReference;->getOwner()Lkotlin/reflect/KDeclarationContainer;
+HSPLkotlin/jvm/internal/CallableReference;->getSignature()Ljava/lang/String;
+HSPLkotlin/jvm/internal/ClassReference$Companion;-><init>()V
+HSPLkotlin/jvm/internal/ClassReference$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/jvm/internal/ClassReference;-><clinit>()V
+HSPLkotlin/jvm/internal/ClassReference;-><init>(Ljava/lang/Class;)V
+HSPLkotlin/jvm/internal/ClassReference;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/jvm/internal/ClassReference;->getJClass()Ljava/lang/Class;
+HSPLkotlin/jvm/internal/CollectionToArray;-><clinit>()V
+HSPLkotlin/jvm/internal/CollectionToArray;->toArray(Ljava/util/Collection;)[Ljava/lang/Object;
+HSPLkotlin/jvm/internal/FloatCompanionObject;-><clinit>()V
+HSPLkotlin/jvm/internal/FloatCompanionObject;-><init>()V
+HSPLkotlin/jvm/internal/FunctionReference;-><init>(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/FunctionReference;->equals(Ljava/lang/Object;)Z
+HSPLkotlin/jvm/internal/FunctionReferenceImpl;-><init>(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/FunctionReferenceImpl;-><init>(ILjava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/InlineMarker;->mark(I)V
+HSPLkotlin/jvm/internal/IntCompanionObject;-><clinit>()V
+HSPLkotlin/jvm/internal/IntCompanionObject;-><init>()V
+HSPLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Float;Ljava/lang/Float;)Z
+HSPLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;megamorphic_types
+HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
+HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLkotlin/jvm/internal/Intrinsics;->compare(II)I
+HSPLkotlin/jvm/internal/Lambda;-><init>(I)V
+HSPLkotlin/jvm/internal/Lambda;->getArity()I
+HSPLkotlin/jvm/internal/MutablePropertyReference1;-><init>(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/MutablePropertyReference1Impl;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/MutablePropertyReference;-><init>(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/PropertyReference;-><init>(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLkotlin/jvm/internal/Ref$BooleanRef;-><init>()V
+HSPLkotlin/jvm/internal/Ref$IntRef;-><init>()V
+HSPLkotlin/jvm/internal/Ref$ObjectRef;-><init>()V
+HSPLkotlin/jvm/internal/Reflection;-><clinit>()V
+HSPLkotlin/jvm/internal/Reflection;->getOrCreateKotlinClass(Ljava/lang/Class;)Lkotlin/reflect/KClass;
+HSPLkotlin/jvm/internal/Reflection;->mutableProperty1(Lkotlin/jvm/internal/MutablePropertyReference1;)Lkotlin/reflect/KMutableProperty1;
+HSPLkotlin/jvm/internal/ReflectionFactory;-><init>()V
+HSPLkotlin/jvm/internal/ReflectionFactory;->getOrCreateKotlinClass(Ljava/lang/Class;)Lkotlin/reflect/KClass;
+HSPLkotlin/jvm/internal/ReflectionFactory;->mutableProperty1(Lkotlin/jvm/internal/MutablePropertyReference1;)Lkotlin/reflect/KMutableProperty1;
+HSPLkotlin/jvm/internal/SpreadBuilder;-><init>(I)V
+HSPLkotlin/jvm/internal/SpreadBuilder;->add(Ljava/lang/Object;)V
+HSPLkotlin/jvm/internal/SpreadBuilder;->addSpread(Ljava/lang/Object;)V
+HSPLkotlin/jvm/internal/SpreadBuilder;->size()I
+HSPLkotlin/jvm/internal/SpreadBuilder;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLkotlin/jvm/internal/TypeIntrinsics;->beforeCheckcastToFunctionOfArity(Ljava/lang/Object;I)Ljava/lang/Object;
+HSPLkotlin/jvm/internal/TypeIntrinsics;->getFunctionArity(Ljava/lang/Object;)I
+HSPLkotlin/jvm/internal/TypeIntrinsics;->isFunctionOfArity(Ljava/lang/Object;I)Z
+HSPLkotlin/jvm/internal/TypeIntrinsics;->isMutableSet(Ljava/lang/Object;)Z
+HSPLkotlin/math/MathKt;->roundToInt(F)I
+HSPLkotlin/math/MathKt__MathJVMKt;->roundToInt(F)I
+HSPLkotlin/ranges/IntProgression$Companion;-><init>()V
+HSPLkotlin/ranges/IntProgression$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/ranges/IntProgression;-><clinit>()V
+HSPLkotlin/ranges/IntProgression;-><init>(III)V
+HSPLkotlin/ranges/IntProgression;->getFirst()I
+HSPLkotlin/ranges/IntProgression;->getLast()I
+HSPLkotlin/ranges/IntProgression;->iterator()Ljava/util/Iterator;
+HSPLkotlin/ranges/IntProgression;->iterator()Lkotlin/collections/IntIterator;
+HSPLkotlin/ranges/IntProgressionIterator;-><init>(III)V
+HSPLkotlin/ranges/IntProgressionIterator;->hasNext()Z
+HSPLkotlin/ranges/IntProgressionIterator;->nextInt()I
+HSPLkotlin/ranges/IntRange$Companion;-><init>()V
+HSPLkotlin/ranges/IntRange$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlin/ranges/IntRange;-><clinit>()V
+HSPLkotlin/ranges/IntRange;-><init>(II)V
+HSPLkotlin/ranges/IntRange;->contains(I)Z
+HSPLkotlin/ranges/RangesKt;->coerceAtLeast(II)I
+HSPLkotlin/ranges/RangesKt;->coerceAtLeast(Ljava/lang/Comparable;Ljava/lang/Comparable;)Ljava/lang/Comparable;
+HSPLkotlin/ranges/RangesKt;->coerceAtMost(II)I
+HSPLkotlin/ranges/RangesKt;->coerceIn(FFF)F
+HSPLkotlin/ranges/RangesKt;->coerceIn(III)I
+HSPLkotlin/ranges/RangesKt;->coerceIn(JJJ)J
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(II)I
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(Ljava/lang/Comparable;Ljava/lang/Comparable;)Ljava/lang/Comparable;
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(II)I
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(FFF)F
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(III)I
+HSPLkotlin/ranges/RangesKt___RangesKt;->coerceIn(JJJ)J
+HSPLkotlin/sequences/FilteringSequence$iterator$1;-><init>(Lkotlin/sequences/FilteringSequence;)V
+HSPLkotlin/sequences/FilteringSequence$iterator$1;->calcNext()V
+HSPLkotlin/sequences/FilteringSequence$iterator$1;->hasNext()Z
+HSPLkotlin/sequences/FilteringSequence$iterator$1;->next()Ljava/lang/Object;
+HSPLkotlin/sequences/FilteringSequence;-><init>(Lkotlin/sequences/Sequence;ZLkotlin/jvm/functions/Function1;)V
+HSPLkotlin/sequences/FilteringSequence;->access$getPredicate$p(Lkotlin/sequences/FilteringSequence;)Lkotlin/jvm/functions/Function1;
+HSPLkotlin/sequences/FilteringSequence;->access$getSendWhen$p(Lkotlin/sequences/FilteringSequence;)Z
+HSPLkotlin/sequences/FilteringSequence;->access$getSequence$p(Lkotlin/sequences/FilteringSequence;)Lkotlin/sequences/Sequence;
+HSPLkotlin/sequences/FilteringSequence;->iterator()Ljava/util/Iterator;
+HSPLkotlin/sequences/GeneratorSequence$iterator$1;-><init>(Lkotlin/sequences/GeneratorSequence;)V
+HSPLkotlin/sequences/GeneratorSequence$iterator$1;->calcNext()V
+HSPLkotlin/sequences/GeneratorSequence$iterator$1;->hasNext()Z
+HSPLkotlin/sequences/GeneratorSequence$iterator$1;->next()Ljava/lang/Object;
+HSPLkotlin/sequences/GeneratorSequence;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;)V
+HSPLkotlin/sequences/GeneratorSequence;->access$getGetInitialValue$p(Lkotlin/sequences/GeneratorSequence;)Lkotlin/jvm/functions/Function0;
+HSPLkotlin/sequences/GeneratorSequence;->access$getGetNextValue$p(Lkotlin/sequences/GeneratorSequence;)Lkotlin/jvm/functions/Function1;
+HSPLkotlin/sequences/GeneratorSequence;->iterator()Ljava/util/Iterator;
+HSPLkotlin/sequences/SequencesKt;->firstOrNull(Lkotlin/sequences/Sequence;)Ljava/lang/Object;
+HSPLkotlin/sequences/SequencesKt;->generateSequence(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
+HSPLkotlin/sequences/SequencesKt;->mapNotNull(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
+HSPLkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2;-><init>(Ljava/lang/Object;)V
+HSPLkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2;->invoke()Ljava/lang/Object;
+HSPLkotlin/sequences/SequencesKt__SequencesKt;->generateSequence(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
+HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;-><clinit>()V
+HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;-><init>()V
+HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean;
+HSPLkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlin/sequences/SequencesKt___SequencesKt;->filterNot(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
+HSPLkotlin/sequences/SequencesKt___SequencesKt;->filterNotNull(Lkotlin/sequences/Sequence;)Lkotlin/sequences/Sequence;
+HSPLkotlin/sequences/SequencesKt___SequencesKt;->firstOrNull(Lkotlin/sequences/Sequence;)Ljava/lang/Object;
+HSPLkotlin/sequences/SequencesKt___SequencesKt;->mapNotNull(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
+HSPLkotlin/sequences/TransformingSequence$iterator$1;-><init>(Lkotlin/sequences/TransformingSequence;)V
+HSPLkotlin/sequences/TransformingSequence$iterator$1;->hasNext()Z
+HSPLkotlin/sequences/TransformingSequence$iterator$1;->next()Ljava/lang/Object;
+HSPLkotlin/sequences/TransformingSequence;-><init>(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)V
+HSPLkotlin/sequences/TransformingSequence;->access$getSequence$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/sequences/Sequence;
+HSPLkotlin/sequences/TransformingSequence;->access$getTransformer$p(Lkotlin/sequences/TransformingSequence;)Lkotlin/jvm/functions/Function1;
+HSPLkotlin/sequences/TransformingSequence;->iterator()Ljava/util/Iterator;
+HSPLkotlin/text/CharsKt;->checkRadix(I)I
+HSPLkotlin/text/CharsKt__CharJVMKt;->checkRadix(I)I
+HSPLkotlin/text/CharsKt__CharJVMKt;->isWhitespace(C)Z
+HSPLkotlin/text/StringsKt;->isBlank(Ljava/lang/CharSequence;)Z
+HSPLkotlin/text/StringsKt;->substringAfterLast$default(Ljava/lang/String;CLjava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
+HSPLkotlin/text/StringsKt__StringsJVMKt;->isBlank(Ljava/lang/CharSequence;)Z
+HSPLkotlin/text/StringsKt__StringsKt;->getIndices(Ljava/lang/CharSequence;)Lkotlin/ranges/IntRange;
+HSPLkotlin/text/StringsKt__StringsKt;->getLastIndex(Ljava/lang/CharSequence;)I
+HSPLkotlin/text/StringsKt__StringsKt;->lastIndexOf$default(Ljava/lang/CharSequence;CIZILjava/lang/Object;)I
+HSPLkotlin/text/StringsKt__StringsKt;->lastIndexOf(Ljava/lang/CharSequence;CIZ)I
+HSPLkotlin/text/StringsKt__StringsKt;->substringAfterLast$default(Ljava/lang/String;CLjava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
+HSPLkotlin/text/StringsKt__StringsKt;->substringAfterLast(Ljava/lang/String;CLjava/lang/String;)Ljava/lang/String;
+HSPLkotlinx/atomicfu/AtomicArray;-><init>(I)V
+HSPLkotlinx/atomicfu/AtomicBoolean$Companion;-><init>()V
+HSPLkotlinx/atomicfu/AtomicBoolean$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/atomicfu/AtomicBoolean;-><clinit>()V
+HSPLkotlinx/atomicfu/AtomicBoolean;-><init>(ZLkotlinx/atomicfu/TraceBase;)V
+HSPLkotlinx/atomicfu/AtomicBoolean;->compareAndSet(ZZ)Z
+HSPLkotlinx/atomicfu/AtomicBoolean;->getValue()Z
+HSPLkotlinx/atomicfu/AtomicBoolean;->setValue(Z)V
+HSPLkotlinx/atomicfu/AtomicFU;->atomic(I)Lkotlinx/atomicfu/AtomicInt;
+HSPLkotlinx/atomicfu/AtomicFU;->atomic(ILkotlinx/atomicfu/TraceBase;)Lkotlinx/atomicfu/AtomicInt;
+HSPLkotlinx/atomicfu/AtomicFU;->atomic(J)Lkotlinx/atomicfu/AtomicLong;
+HSPLkotlinx/atomicfu/AtomicFU;->atomic(JLkotlinx/atomicfu/TraceBase;)Lkotlinx/atomicfu/AtomicLong;
+HSPLkotlinx/atomicfu/AtomicFU;->atomic(Ljava/lang/Object;)Lkotlinx/atomicfu/AtomicRef;
+HSPLkotlinx/atomicfu/AtomicFU;->atomic(Ljava/lang/Object;Lkotlinx/atomicfu/TraceBase;)Lkotlinx/atomicfu/AtomicRef;
+HSPLkotlinx/atomicfu/AtomicFU;->atomic(Z)Lkotlinx/atomicfu/AtomicBoolean;
+HSPLkotlinx/atomicfu/AtomicFU;->atomic(ZLkotlinx/atomicfu/TraceBase;)Lkotlinx/atomicfu/AtomicBoolean;
+HSPLkotlinx/atomicfu/AtomicFU_commonKt;->atomicArrayOfNulls(I)Lkotlinx/atomicfu/AtomicArray;
+HSPLkotlinx/atomicfu/AtomicInt$Companion;-><init>()V
+HSPLkotlinx/atomicfu/AtomicInt$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/atomicfu/AtomicInt;-><clinit>()V
+HSPLkotlinx/atomicfu/AtomicInt;-><init>(ILkotlinx/atomicfu/TraceBase;)V
+HSPLkotlinx/atomicfu/AtomicInt;->compareAndSet(II)Z
+HSPLkotlinx/atomicfu/AtomicInt;->getValue()I
+HSPLkotlinx/atomicfu/AtomicInt;->setValue(I)V
+HSPLkotlinx/atomicfu/AtomicLong$Companion;-><init>()V
+HSPLkotlinx/atomicfu/AtomicLong$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/atomicfu/AtomicLong;-><clinit>()V
+HSPLkotlinx/atomicfu/AtomicLong;-><init>(JLkotlinx/atomicfu/TraceBase;)V
+HSPLkotlinx/atomicfu/AtomicRef$Companion;-><init>()V
+HSPLkotlinx/atomicfu/AtomicRef$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/atomicfu/AtomicRef;-><clinit>()V
+HSPLkotlinx/atomicfu/AtomicRef;-><init>(Ljava/lang/Object;Lkotlinx/atomicfu/TraceBase;)V
+HSPLkotlinx/atomicfu/AtomicRef;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLkotlinx/atomicfu/AtomicRef;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/atomicfu/AtomicRef;->getValue()Ljava/lang/Object;
+HSPLkotlinx/atomicfu/AtomicRef;->lazySet(Ljava/lang/Object;)V
+HSPLkotlinx/atomicfu/AtomicRef;->setValue(Ljava/lang/Object;)V
+HSPLkotlinx/atomicfu/TraceBase$None;-><clinit>()V
+HSPLkotlinx/atomicfu/TraceBase$None;-><init>()V
+HSPLkotlinx/atomicfu/TraceBase;-><init>()V
+HSPLkotlinx/coroutines/AbstractCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;ZZ)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->afterResume(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->cancellationExceptionMessage()Ljava/lang/String;
+HSPLkotlinx/coroutines/AbstractCoroutine;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/AbstractCoroutine;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/AbstractCoroutine;->isActive()Z
+HSPLkotlinx/coroutines/AbstractCoroutine;->onCancelled(Ljava/lang/Throwable;Z)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->onCompleted(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->onCompletionInternal(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->resumeWith(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/AbstractCoroutine;->start(Lkotlinx/coroutines/CoroutineStart;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)V
+HSPLkotlinx/coroutines/Active;-><clinit>()V
+HSPLkotlinx/coroutines/Active;-><init>()V
+HSPLkotlinx/coroutines/BeforeResumeCancelHandler;-><init>()V
+HSPLkotlinx/coroutines/BlockingEventLoop;-><init>(Ljava/lang/Thread;)V
+HSPLkotlinx/coroutines/BuildersKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/BuildersKt;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/BuildersKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->launch$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->launch(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/BuildersKt__Builders_commonKt;->withContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancelHandler;-><init>()V
+HSPLkotlinx/coroutines/CancelHandlerBase;-><init>()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;-><init>(Lkotlin/coroutines/Continuation;I)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->callCancelHandler(Lkotlinx/coroutines/CancelHandler;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancel(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->cancelLater(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->completeResume(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->detachChild$external__kotlinx_coroutines__android_common__kotlinx_coroutines()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->detachChildIfNonResuable()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->dispatchResume(I)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getContinuationCancellationCause(Lkotlinx/coroutines/Job;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getDelegate$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getExceptionalResult$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Object;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getResult()Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getState$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->getSuccessfulResult$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->initCancellability()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->installParentHandle()Lkotlinx/coroutines/DisposableHandle;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->invokeOnCancellation(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->isCompleted()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->isReusable()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->makeCancelHandler(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/CancelHandler;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->parentCancelled$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->releaseClaimedReusableContinuation()V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resetStateReusable()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeImpl$default(Lkotlinx/coroutines/CancellableContinuationImpl;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeImpl(Ljava/lang/Object;ILkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumeWith(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->resumedState(Lkotlinx/coroutines/NotCompleted;Ljava/lang/Object;ILkotlin/jvm/functions/Function1;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->takeState$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume()Z
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResume(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->tryResumeImpl(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/CancellableContinuationImpl;->trySuspend()Z
+HSPLkotlinx/coroutines/CancellableContinuationImplKt;-><clinit>()V
+HSPLkotlinx/coroutines/CancellableContinuationKt;->getOrCreateCancellableContinuation(Lkotlin/coroutines/Continuation;)Lkotlinx/coroutines/CancellableContinuationImpl;
+HSPLkotlinx/coroutines/CancelledContinuation;-><init>(Lkotlin/coroutines/Continuation;Ljava/lang/Throwable;Z)V
+HSPLkotlinx/coroutines/CancelledContinuation;->makeResumed()Z
+HSPLkotlinx/coroutines/ChildContinuation;-><init>(Lkotlinx/coroutines/CancellableContinuationImpl;)V
+HSPLkotlinx/coroutines/ChildContinuation;->invoke(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/ChildHandleNode;-><init>(Lkotlinx/coroutines/ChildJob;)V
+HSPLkotlinx/coroutines/ChildHandleNode;->childCancelled(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/ChildHandleNode;->invoke(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CompletedContinuation;-><init>(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/CompletedContinuation;-><init>(Ljava/lang/Object;Lkotlinx/coroutines/CancelHandler;Lkotlin/jvm/functions/Function1;Ljava/lang/Object;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/CompletedExceptionally;-><init>(Ljava/lang/Throwable;Z)V
+HSPLkotlinx/coroutines/CompletedExceptionally;-><init>(Ljava/lang/Throwable;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/CompletedExceptionally;->getHandled()Z
+HSPLkotlinx/coroutines/CompletedExceptionally;->makeHandled()Z
+HSPLkotlinx/coroutines/CompletionHandlerBase;-><init>()V
+HSPLkotlinx/coroutines/CompletionStateKt;->recoverResult(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CompletionStateKt;->toState$default(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CompletionStateKt;->toState(Ljava/lang/Object;Lkotlinx/coroutines/CancellableContinuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;-><clinit>()V
+HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;-><init>()V
+HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;->invoke(ZLkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Boolean;
+HSPLkotlinx/coroutines/CoroutineContextKt;->foldCopies(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Z)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/CoroutineContextKt;->hasCopyableElements(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/CoroutineContextKt;->newCoroutineContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/CoroutineContextKt;->newCoroutineContext(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;-><clinit>()V
+HSPLkotlinx/coroutines/CoroutineDispatcher$Key$1;-><init>()V
+HSPLkotlinx/coroutines/CoroutineDispatcher$Key;-><init>()V
+HSPLkotlinx/coroutines/CoroutineDispatcher$Key;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/CoroutineDispatcher;-><clinit>()V
+HSPLkotlinx/coroutines/CoroutineDispatcher;-><init>()V
+HSPLkotlinx/coroutines/CoroutineDispatcher;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlinx/coroutines/CoroutineDispatcher;->interceptContinuation(Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/CoroutineDispatcher;->isDispatchNeeded(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/CoroutineDispatcher;->limitedParallelism(I)Lkotlinx/coroutines/CoroutineDispatcher;
+HSPLkotlinx/coroutines/CoroutineDispatcher;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/CoroutineDispatcher;->releaseInterceptedContinuation(Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/CoroutineExceptionHandler$Key;-><clinit>()V
+HSPLkotlinx/coroutines/CoroutineExceptionHandler$Key;-><init>()V
+HSPLkotlinx/coroutines/CoroutineExceptionHandler;-><clinit>()V
+HSPLkotlinx/coroutines/CoroutineScopeKt;->CoroutineScope(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/CoroutineScope;
+HSPLkotlinx/coroutines/CoroutineScopeKt;->MainScope()Lkotlinx/coroutines/CoroutineScope;
+HSPLkotlinx/coroutines/CoroutineScopeKt;->coroutineScope(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/CoroutineScopeKt;->isActive(Lkotlinx/coroutines/CoroutineScope;)Z
+HSPLkotlinx/coroutines/CoroutineStart$WhenMappings;-><clinit>()V
+HSPLkotlinx/coroutines/CoroutineStart;->$values()[Lkotlinx/coroutines/CoroutineStart;
+HSPLkotlinx/coroutines/CoroutineStart;-><clinit>()V
+HSPLkotlinx/coroutines/CoroutineStart;-><init>(Ljava/lang/String;I)V
+HSPLkotlinx/coroutines/CoroutineStart;->invoke(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/CoroutineStart;->isLazy()Z
+HSPLkotlinx/coroutines/CoroutineStart;->values()[Lkotlinx/coroutines/CoroutineStart;
+HSPLkotlinx/coroutines/DebugKt;-><clinit>()V
+HSPLkotlinx/coroutines/DebugKt;->getASSERTIONS_ENABLED()Z
+HSPLkotlinx/coroutines/DebugKt;->getDEBUG()Z
+HSPLkotlinx/coroutines/DebugKt;->getRECOVER_STACK_TRACES()Z
+HSPLkotlinx/coroutines/DebugStringsKt;->getClassSimpleName(Ljava/lang/Object;)Ljava/lang/String;
+HSPLkotlinx/coroutines/DefaultExecutor;-><clinit>()V
+HSPLkotlinx/coroutines/DefaultExecutor;-><init>()V
+HSPLkotlinx/coroutines/DefaultExecutorKt;-><clinit>()V
+HSPLkotlinx/coroutines/DefaultExecutorKt;->getDefaultDelay()Lkotlinx/coroutines/Delay;
+HSPLkotlinx/coroutines/DefaultExecutorKt;->initializeDefaultDelay()Lkotlinx/coroutines/Delay;
+HSPLkotlinx/coroutines/DispatchedTask;-><init>(I)V
+HSPLkotlinx/coroutines/DispatchedTask;->getExceptionalResult$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Object;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/DispatchedTask;->getSuccessfulResult$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/DispatchedTask;->handleFatalException(Ljava/lang/Throwable;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/DispatchedTask;->run()V
+HSPLkotlinx/coroutines/DispatchedTaskKt;->dispatch(Lkotlinx/coroutines/DispatchedTask;I)V
+HSPLkotlinx/coroutines/DispatchedTaskKt;->isCancellableMode(I)Z
+HSPLkotlinx/coroutines/DispatchedTaskKt;->isReusableMode(I)Z
+HSPLkotlinx/coroutines/DispatchedTaskKt;->resume(Lkotlinx/coroutines/DispatchedTask;Lkotlin/coroutines/Continuation;Z)V
+HSPLkotlinx/coroutines/DispatchedTaskKt;->resumeUnconfined(Lkotlinx/coroutines/DispatchedTask;)V
+HSPLkotlinx/coroutines/Dispatchers;-><clinit>()V
+HSPLkotlinx/coroutines/Dispatchers;-><init>()V
+HSPLkotlinx/coroutines/Dispatchers;->getDefault()Lkotlinx/coroutines/CoroutineDispatcher;
+HSPLkotlinx/coroutines/Dispatchers;->getMain()Lkotlinx/coroutines/MainCoroutineDispatcher;
+HSPLkotlinx/coroutines/Empty;-><init>(Z)V
+HSPLkotlinx/coroutines/Empty;->getList()Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/Empty;->isActive()Z
+HSPLkotlinx/coroutines/EventLoop;-><init>()V
+HSPLkotlinx/coroutines/EventLoop;->decrementUseCount(Z)V
+HSPLkotlinx/coroutines/EventLoop;->delta(Z)J
+HSPLkotlinx/coroutines/EventLoop;->incrementUseCount$default(Lkotlinx/coroutines/EventLoop;ZILjava/lang/Object;)V
+HSPLkotlinx/coroutines/EventLoop;->incrementUseCount(Z)V
+HSPLkotlinx/coroutines/EventLoop;->isUnconfinedLoopActive()Z
+HSPLkotlinx/coroutines/EventLoop;->processUnconfinedEvent()Z
+HSPLkotlinx/coroutines/EventLoopImplBase;-><init>()V
+HSPLkotlinx/coroutines/EventLoopImplPlatform;-><init>()V
+HSPLkotlinx/coroutines/EventLoopKt;->createEventLoop()Lkotlinx/coroutines/EventLoop;
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1;-><clinit>()V
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1;-><init>()V
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;-><init>()V
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher;-><clinit>()V
+HSPLkotlinx/coroutines/ExecutorCoroutineDispatcher;-><init>()V
+HSPLkotlinx/coroutines/GlobalScope;-><clinit>()V
+HSPLkotlinx/coroutines/GlobalScope;-><init>()V
+HSPLkotlinx/coroutines/GlobalScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/InvokeOnCancel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/InvokeOnCancel;->invoke(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/InvokeOnCompletion;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/Job$DefaultImpls;->cancel$default(Lkotlinx/coroutines/Job;Ljava/util/concurrent/CancellationException;ILjava/lang/Object;)V
+HSPLkotlinx/coroutines/Job$DefaultImpls;->fold(Lkotlinx/coroutines/Job;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/Job$DefaultImpls;->get(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlinx/coroutines/Job$DefaultImpls;->invokeOnCompletion$default(Lkotlinx/coroutines/Job;ZZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/DisposableHandle;
+HSPLkotlinx/coroutines/Job$DefaultImpls;->minusKey(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/Job$DefaultImpls;->plus(Lkotlinx/coroutines/Job;Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/Job$Key;-><clinit>()V
+HSPLkotlinx/coroutines/Job$Key;-><init>()V
+HSPLkotlinx/coroutines/Job;-><clinit>()V
+HSPLkotlinx/coroutines/JobCancellationException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobCancellationException;->equals(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/JobCancellationException;->fillInStackTrace()Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/JobCancellingNode;-><init>()V
+HSPLkotlinx/coroutines/JobImpl;-><init>(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobImpl;->getHandlesException$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Z
+HSPLkotlinx/coroutines/JobImpl;->handlesException()Z
+HSPLkotlinx/coroutines/JobKt;->Job$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/JobKt;->Job(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/JobKt;->ensureActive(Lkotlin/coroutines/CoroutineContext;)V
+HSPLkotlinx/coroutines/JobKt;->ensureActive(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobKt;->getJob(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/JobKt;->isActive(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/JobKt__JobKt;->Job$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/JobKt__JobKt;->Job(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/JobKt__JobKt;->ensureActive(Lkotlin/coroutines/CoroutineContext;)V
+HSPLkotlinx/coroutines/JobKt__JobKt;->ensureActive(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobKt__JobKt;->getJob(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/JobKt__JobKt;->isActive(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/JobNode;-><init>()V
+HSPLkotlinx/coroutines/JobNode;->dispose()V
+HSPLkotlinx/coroutines/JobNode;->getJob()Lkotlinx/coroutines/JobSupport;
+HSPLkotlinx/coroutines/JobNode;->getList()Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/JobNode;->isActive()Z
+HSPLkotlinx/coroutines/JobNode;->setJob(Lkotlinx/coroutines/JobSupport;)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;-><init>(Lkotlinx/coroutines/NodeList;ZLjava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;->addExceptionLocked(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;->allocateList()Ljava/util/ArrayList;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->getExceptionsHolder()Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->getList()Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->getRootCause()Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->isActive()Z
+HSPLkotlinx/coroutines/JobSupport$Finishing;->isCancelling()Z
+HSPLkotlinx/coroutines/JobSupport$Finishing;->isCompleting()Z
+HSPLkotlinx/coroutines/JobSupport$Finishing;->sealLocked(Ljava/lang/Throwable;)Ljava/util/List;
+HSPLkotlinx/coroutines/JobSupport$Finishing;->setCompleting(Z)V
+HSPLkotlinx/coroutines/JobSupport$Finishing;->setExceptionsHolder(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/JobSupport;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->prepare(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;->prepare(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;-><init>(Z)V
+HSPLkotlinx/coroutines/JobSupport;->access$cancellationExceptionMessage(Lkotlinx/coroutines/JobSupport;)Ljava/lang/String;
+HSPLkotlinx/coroutines/JobSupport;->addLastAtomic(Ljava/lang/Object;Lkotlinx/coroutines/NodeList;Lkotlinx/coroutines/JobNode;)Z
+HSPLkotlinx/coroutines/JobSupport;->addSuppressedExceptions(Ljava/lang/Throwable;Ljava/util/List;)V
+HSPLkotlinx/coroutines/JobSupport;->afterCompletion(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport;->attachChild(Lkotlinx/coroutines/ChildJob;)Lkotlinx/coroutines/ChildHandle;
+HSPLkotlinx/coroutines/JobSupport;->cancel(Ljava/util/concurrent/CancellationException;)V
+HSPLkotlinx/coroutines/JobSupport;->cancelImpl$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/JobSupport;->cancelInternal(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport;->cancelParent(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/JobSupport;->childCancelled(Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/JobSupport;->completeStateFinalization(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/JobSupport;->createCauseException(Ljava/lang/Object;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/JobSupport;->finalizeFinishingState(Lkotlinx/coroutines/JobSupport$Finishing;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->firstChild(Lkotlinx/coroutines/Incomplete;)Lkotlinx/coroutines/ChildHandleNode;
+HSPLkotlinx/coroutines/JobSupport;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlinx/coroutines/JobSupport;->getCancellationException()Ljava/util/concurrent/CancellationException;
+HSPLkotlinx/coroutines/JobSupport;->getChildJobCancellationCause()Ljava/util/concurrent/CancellationException;
+HSPLkotlinx/coroutines/JobSupport;->getFinalRootCause(Lkotlinx/coroutines/JobSupport$Finishing;Ljava/util/List;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/JobSupport;->getKey()Lkotlin/coroutines/CoroutineContext$Key;
+HSPLkotlinx/coroutines/JobSupport;->getOnCancelComplete$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Z
+HSPLkotlinx/coroutines/JobSupport;->getOrPromoteCancellingList(Lkotlinx/coroutines/Incomplete;)Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/JobSupport;->getParentHandle$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Lkotlinx/coroutines/ChildHandle;
+HSPLkotlinx/coroutines/JobSupport;->getState$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->initParentJob(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/JobSupport;->invokeOnCompletion(Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/DisposableHandle;
+HSPLkotlinx/coroutines/JobSupport;->invokeOnCompletion(ZZLkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/DisposableHandle;
+HSPLkotlinx/coroutines/JobSupport;->isActive()Z
+HSPLkotlinx/coroutines/JobSupport;->isCompleted()Z
+HSPLkotlinx/coroutines/JobSupport;->isScopedCoroutine()Z
+HSPLkotlinx/coroutines/JobSupport;->makeCancelling(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->makeCompletingOnce$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->makeNode(Lkotlin/jvm/functions/Function1;Z)Lkotlinx/coroutines/JobNode;
+HSPLkotlinx/coroutines/JobSupport;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/JobSupport;->nextChild(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/ChildHandleNode;
+HSPLkotlinx/coroutines/JobSupport;->notifyCancelling(Lkotlinx/coroutines/NodeList;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport;->notifyCompletion(Lkotlinx/coroutines/NodeList;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport;->onCancelling(Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/JobSupport;->parentCancelled(Lkotlinx/coroutines/ParentJob;)V
+HSPLkotlinx/coroutines/JobSupport;->plus(Lkotlin/coroutines/CoroutineContext;)Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/JobSupport;->promoteSingleToNodeList(Lkotlinx/coroutines/JobNode;)V
+HSPLkotlinx/coroutines/JobSupport;->removeNode$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Lkotlinx/coroutines/JobNode;)V
+HSPLkotlinx/coroutines/JobSupport;->setParentHandle$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Lkotlinx/coroutines/ChildHandle;)V
+HSPLkotlinx/coroutines/JobSupport;->start()Z
+HSPLkotlinx/coroutines/JobSupport;->startInternal(Ljava/lang/Object;)I
+HSPLkotlinx/coroutines/JobSupport;->toCancellationException(Ljava/lang/Throwable;Ljava/lang/String;)Ljava/util/concurrent/CancellationException;
+HSPLkotlinx/coroutines/JobSupport;->tryFinalizeSimpleState(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/JobSupport;->tryMakeCancelling(Lkotlinx/coroutines/Incomplete;Ljava/lang/Throwable;)Z
+HSPLkotlinx/coroutines/JobSupport;->tryMakeCompleting(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupport;->tryMakeCompletingSlowPath(Lkotlinx/coroutines/Incomplete;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupportKt;-><clinit>()V
+HSPLkotlinx/coroutines/JobSupportKt;->access$getCOMPLETING_ALREADY$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/JobSupportKt;->access$getCOMPLETING_RETRY$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/JobSupportKt;->access$getEMPTY_ACTIVE$p()Lkotlinx/coroutines/Empty;
+HSPLkotlinx/coroutines/JobSupportKt;->access$getSEALED$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/JobSupportKt;->boxIncomplete(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/JobSupportKt;->unboxState(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/MainCoroutineDispatcher;-><init>()V
+HSPLkotlinx/coroutines/NodeList;-><init>()V
+HSPLkotlinx/coroutines/NodeList;->getList()Lkotlinx/coroutines/NodeList;
+HSPLkotlinx/coroutines/NodeList;->isActive()Z
+HSPLkotlinx/coroutines/NonDisposableHandle;-><clinit>()V
+HSPLkotlinx/coroutines/NonDisposableHandle;-><init>()V
+HSPLkotlinx/coroutines/NonDisposableHandle;->dispose()V
+HSPLkotlinx/coroutines/StandaloneCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Z)V
+HSPLkotlinx/coroutines/SupervisorJobImpl;-><init>(Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/SupervisorKt;->SupervisorJob$default(Lkotlinx/coroutines/Job;ILjava/lang/Object;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/SupervisorKt;->SupervisorJob(Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/CompletableJob;
+HSPLkotlinx/coroutines/ThreadLocalEventLoop;-><clinit>()V
+HSPLkotlinx/coroutines/ThreadLocalEventLoop;-><init>()V
+HSPLkotlinx/coroutines/ThreadLocalEventLoop;->getEventLoop$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Lkotlinx/coroutines/EventLoop;
+HSPLkotlinx/coroutines/Unconfined;-><clinit>()V
+HSPLkotlinx/coroutines/Unconfined;-><init>()V
+HSPLkotlinx/coroutines/UndispatchedCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/UndispatchedMarker;-><clinit>()V
+HSPLkotlinx/coroutines/UndispatchedMarker;-><init>()V
+HSPLkotlinx/coroutines/UndispatchedMarker;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/UndispatchedMarker;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+HSPLkotlinx/coroutines/UndispatchedMarker;->getKey()Lkotlin/coroutines/CoroutineContext$Key;
+HSPLkotlinx/coroutines/android/AndroidDispatcherFactory;-><init>()V
+HSPLkotlinx/coroutines/android/AndroidDispatcherFactory;->createDispatcher(Ljava/util/List;)Lkotlinx/coroutines/MainCoroutineDispatcher;
+HSPLkotlinx/coroutines/android/HandlerContext;-><init>(Landroid/os/Handler;Ljava/lang/String;)V
+HSPLkotlinx/coroutines/android/HandlerContext;-><init>(Landroid/os/Handler;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/android/HandlerContext;-><init>(Landroid/os/Handler;Ljava/lang/String;Z)V
+HSPLkotlinx/coroutines/android/HandlerContext;->dispatch(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Runnable;)V
+HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/android/HandlerContext;
+HSPLkotlinx/coroutines/android/HandlerContext;->getImmediate()Lkotlinx/coroutines/android/HandlerDispatcher;
+HSPLkotlinx/coroutines/android/HandlerContext;->isDispatchNeeded(Lkotlin/coroutines/CoroutineContext;)Z
+HSPLkotlinx/coroutines/android/HandlerDispatcher;-><init>()V
+HSPLkotlinx/coroutines/android/HandlerDispatcher;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/android/HandlerDispatcherKt;-><clinit>()V
+HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->asHandler(Landroid/os/Looper;Z)Landroid/os/Handler;
+HSPLkotlinx/coroutines/android/HandlerDispatcherKt;->from(Landroid/os/Handler;Ljava/lang/String;)Lkotlinx/coroutines/android/HandlerDispatcher;
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;-><init>(Lkotlinx/coroutines/channels/AbstractChannel;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->hasNext(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->hasNextResult(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->hasNextSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->next()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$Itr;->setResult(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;-><init>(Lkotlinx/coroutines/CancellableContinuation;I)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;->completeResumeReceive(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;->resumeValue(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;->tryResumeReceive(Ljava/lang/Object;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;-><init>(Lkotlinx/coroutines/channels/AbstractChannel$Itr;Lkotlinx/coroutines/CancellableContinuation;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;->completeResumeReceive(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;->resumeOnCancellationFun(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1;
+HSPLkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;->tryResumeReceive(Ljava/lang/Object;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/channels/AbstractChannel$RemoveReceiveOnCancel;-><init>(Lkotlinx/coroutines/channels/AbstractChannel;Lkotlinx/coroutines/channels/Receive;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$enqueueReceiveInternal$$inlined$addLastIfPrevAndIf$1;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/channels/AbstractChannel;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$enqueueReceiveInternal$$inlined$addLastIfPrevAndIf$1;->prepare(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$enqueueReceiveInternal$$inlined$addLastIfPrevAndIf$1;->prepare(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel$receiveCatching$1;-><init>(Lkotlinx/coroutines/channels/AbstractChannel;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel$receiveCatching$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->access$enqueueReceive(Lkotlinx/coroutines/channels/AbstractChannel;Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/AbstractChannel;->access$removeReceiveOnCancel(Lkotlinx/coroutines/channels/AbstractChannel;Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/channels/Receive;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->enqueueReceive(Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/AbstractChannel;->enqueueReceiveInternal(Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/AbstractChannel;->iterator()Lkotlinx/coroutines/channels/ChannelIterator;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->onReceiveDequeued()V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->onReceiveEnqueued()V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->pollInternal()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->receive(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->receiveCatching-JP2dKIU(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->receiveSuspend(ILkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->removeReceiveOnCancel(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/channels/Receive;)V
+HSPLkotlinx/coroutines/channels/AbstractChannel;->takeFirstReceiveOrPeekClosed()Lkotlinx/coroutines/channels/ReceiveOrClosed;
+HSPLkotlinx/coroutines/channels/AbstractChannel;->tryReceive-PtdJZtk()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractChannelKt;-><clinit>()V
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->getClosedForSend()Lkotlinx/coroutines/channels/Closed;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->getQueue()Lkotlinx/coroutines/internal/LockFreeLinkedListHead;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->takeFirstReceiveOrPeekClosed()Lkotlinx/coroutines/channels/ReceiveOrClosed;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->takeFirstSendOrPeekClosed()Lkotlinx/coroutines/channels/Send;
+HSPLkotlinx/coroutines/channels/AbstractSendChannel;->trySend-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ArrayChannel;-><init>(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/ArrayChannel;->enqueueReceiveInternal(Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/ArrayChannel;->isBufferAlwaysEmpty()Z
+HSPLkotlinx/coroutines/channels/ArrayChannel;->isBufferEmpty()Z
+HSPLkotlinx/coroutines/channels/ArrayChannel;->offerInternal(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ArrayChannel;->pollInternal()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ArrayChannel;->updateBufferSize(I)Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/channels/BufferOverflow;->$values()[Lkotlinx/coroutines/channels/BufferOverflow;
+HSPLkotlinx/coroutines/channels/BufferOverflow;-><clinit>()V
+HSPLkotlinx/coroutines/channels/BufferOverflow;-><init>(Ljava/lang/String;I)V
+HSPLkotlinx/coroutines/channels/Channel$Factory;-><clinit>()V
+HSPLkotlinx/coroutines/channels/Channel$Factory;-><init>()V
+HSPLkotlinx/coroutines/channels/Channel$Factory;->getCHANNEL_DEFAULT_CAPACITY$external__kotlinx_coroutines__android_common__kotlinx_coroutines()I
+HSPLkotlinx/coroutines/channels/Channel;-><clinit>()V
+HSPLkotlinx/coroutines/channels/ChannelCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/channels/Channel;ZZ)V
+HSPLkotlinx/coroutines/channels/ChannelCoroutine;->receiveCatching-JP2dKIU(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ChannelCoroutine;->send(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ChannelKt;->Channel$default(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/channels/Channel;
+HSPLkotlinx/coroutines/channels/ChannelKt;->Channel(ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/channels/Channel;
+HSPLkotlinx/coroutines/channels/ChannelResult$Companion;-><init>()V
+HSPLkotlinx/coroutines/channels/ChannelResult$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->failure-PtdJZtk()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ChannelResult$Companion;->success-JP2dKIU(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ChannelResult$Failed;-><init>()V
+HSPLkotlinx/coroutines/channels/ChannelResult;-><clinit>()V
+HSPLkotlinx/coroutines/channels/ChannelResult;-><init>(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/channels/ChannelResult;->access$getFailed$cp()Lkotlinx/coroutines/channels/ChannelResult$Failed;
+HSPLkotlinx/coroutines/channels/ChannelResult;->box-impl(Ljava/lang/Object;)Lkotlinx/coroutines/channels/ChannelResult;
+HSPLkotlinx/coroutines/channels/ChannelResult;->constructor-impl(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ChannelResult;->getOrNull-impl(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ChannelResult;->getOrThrow-impl(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ChannelResult;->isClosed-impl(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/channels/ChannelResult;->unbox-impl()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ConflatedChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->enqueueReceiveInternal(Lkotlinx/coroutines/channels/Receive;)Z
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->isBufferAlwaysEmpty()Z
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->isBufferEmpty()Z
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->offerInternal(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->pollInternal()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/ConflatedChannel;->updateValueLocked(Ljava/lang/Object;)Lkotlinx/coroutines/internal/UndeliveredElementException;
+HSPLkotlinx/coroutines/channels/LinkedListChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/LinkedListChannel;->isBufferAlwaysEmpty()Z
+HSPLkotlinx/coroutines/channels/ProduceKt;->produce$default(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/channels/ReceiveChannel;
+HSPLkotlinx/coroutines/channels/ProduceKt;->produce(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlinx/coroutines/CoroutineStart;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/channels/ReceiveChannel;
+HSPLkotlinx/coroutines/channels/ProducerCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/channels/Channel;)V
+HSPLkotlinx/coroutines/channels/Receive;-><init>()V
+HSPLkotlinx/coroutines/channels/Receive;->getOfferResult()Ljava/lang/Object;
+HSPLkotlinx/coroutines/channels/Receive;->getOfferResult()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/channels/Receive;->resumeOnCancellationFun(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1;
+HSPLkotlinx/coroutines/channels/RendezvousChannel;-><init>(Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/channels/RendezvousChannel;->isBufferAlwaysEmpty()Z
+HSPLkotlinx/coroutines/flow/AbstractFlow$collect$1;-><init>(Lkotlinx/coroutines/flow/AbstractFlow;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/AbstractFlow;-><init>()V
+HSPLkotlinx/coroutines/flow/AbstractFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1;-><init>(Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;-><init>(Lkotlinx/coroutines/flow/DistinctFlowImpl;Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/flow/FlowCollector;)V
+HSPLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/DistinctFlowImpl;-><init>(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)V
+HSPLkotlinx/coroutines/flow/DistinctFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt;->buffer$default(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt;->buffer(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt;->collect(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt;->collectLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt;->dropWhile(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt;->ensureActive(Lkotlinx/coroutines/flow/FlowCollector;)V
+HSPLkotlinx/coroutines/flow/FlowKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt;->mapLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt;->stateIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/flow/StateFlow;
+HSPLkotlinx/coroutines/flow/FlowKt;->take(Lkotlinx/coroutines/flow/Flow;I)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt;->transformLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__BuildersKt;->flow(Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->access$emitAllImpl$FlowKt__ChannelsKt(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->emitAll(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ChannelsKt;->emitAllImpl$FlowKt__ChannelsKt(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/channels/ReceiveChannel;ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->collect(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__CollectKt;->collectLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->buffer$default(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__ContextKt;->buffer(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;-><clinit>()V
+HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;-><init>()V
+HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;-><clinit>()V
+HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;-><init>()V
+HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;-><clinit>()V
+HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->distinctUntilChanged(Lkotlinx/coroutines/flow/Flow;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__DistinctKt;->distinctUntilChangedBy$FlowKt__DistinctKt(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__EmittersKt;->ensureActive(Lkotlinx/coroutines/flow/FlowCollector;)V
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1;-><init>(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)V
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1;-><init>(Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;-><init>(Lkotlin/jvm/internal/Ref$BooleanRef;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/jvm/functions/Function2;)V
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt$take$$inlined$unsafeFlow$1;-><init>(Lkotlinx/coroutines/flow/Flow;I)V
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt;->dropWhile(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__LimitKt;->take(Lkotlinx/coroutines/flow/Flow;I)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;-><init>(Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;-><clinit>()V
+HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->mapLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__MergeKt;->transformLatest(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function3;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2$1;-><init>(Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;-><init>(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/Ref$ObjectRef;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ReduceKt;->first(Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2$WhenMappings;-><clinit>()V
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;-><init>(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invoke(Lkotlinx/coroutines/flow/SharingCommand;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;-><init>(Lkotlinx/coroutines/flow/SharingStarted;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->configureSharing$FlowKt__ShareKt(Lkotlinx/coroutines/flow/Flow;I)Lkotlinx/coroutines/flow/SharingConfig;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->launchSharing$FlowKt__ShareKt(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/CoroutineContext;Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/flow/MutableSharedFlow;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/Job;
+HSPLkotlinx/coroutines/flow/FlowKt__ShareKt;->stateIn(Lkotlinx/coroutines/flow/Flow;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/SharingStarted;Ljava/lang/Object;)Lkotlinx/coroutines/flow/StateFlow;
+HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;-><init>(Lkotlinx/coroutines/flow/StateFlow;Lkotlinx/coroutines/Job;)V
+HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/ReadonlyStateFlow;->getValue()Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SafeFlow;-><init>(Lkotlin/jvm/functions/Function2;)V
+HSPLkotlinx/coroutines/flow/SafeFlow;->collectSafely(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl$collect$1;-><init>(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;-><init>(IILkotlinx/coroutines/channels/BufferOverflow;)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->access$tryPeekLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlinx/coroutines/flow/SharedFlowSlot;)J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->awaitValue(Lkotlinx/coroutines/flow/SharedFlowSlot;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->cleanupTailLocked()V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->collect$suspendImpl(Lkotlinx/coroutines/flow/SharedFlowImpl;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlot()Lkotlinx/coroutines/flow/SharedFlowSlot;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/SharedFlowSlot;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->dropOldestLocked()V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->enqueueLocked(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->findSlotsToResumeLocked([Lkotlin/coroutines/Continuation;)[Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getBufferEndIndex()J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getHead()J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getLastReplayedLocked()Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getPeekedValueLockedAt(J)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getReplaySize()I
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->getTotalSize()I
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->growBuffer([Ljava/lang/Object;II)[Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmit(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmitLocked(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryEmitNoCollectorsLocked(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryPeekLocked(Lkotlinx/coroutines/flow/SharedFlowSlot;)J
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->tryTakeValue(Lkotlinx/coroutines/flow/SharedFlowSlot;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateBufferLocked(JJJJ)V
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateCollectorIndexLocked$external__kotlinx_coroutines__android_common__kotlinx_coroutines(J)[Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/SharedFlowImpl;->updateNewCollectorIndexLocked$external__kotlinx_coroutines__android_common__kotlinx_coroutines()J
+HSPLkotlinx/coroutines/flow/SharedFlowKt;-><clinit>()V
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->MutableSharedFlow$default(IILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/MutableSharedFlow;
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->MutableSharedFlow(IILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/MutableSharedFlow;
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->access$getBufferAt([Ljava/lang/Object;J)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->access$setBufferAt([Ljava/lang/Object;JLjava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->getBufferAt([Ljava/lang/Object;J)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/SharedFlowKt;->setBufferAt([Ljava/lang/Object;JLjava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/SharedFlowSlot;-><init>()V
+HSPLkotlinx/coroutines/flow/SharedFlowSlot;->allocateLocked(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/SharedFlowSlot;->allocateLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;)Z
+HSPLkotlinx/coroutines/flow/SharingCommand;->$values()[Lkotlinx/coroutines/flow/SharingCommand;
+HSPLkotlinx/coroutines/flow/SharingCommand;-><clinit>()V
+HSPLkotlinx/coroutines/flow/SharingCommand;-><init>(Ljava/lang/String;I)V
+HSPLkotlinx/coroutines/flow/SharingCommand;->values()[Lkotlinx/coroutines/flow/SharingCommand;
+HSPLkotlinx/coroutines/flow/SharingConfig;-><init>(Lkotlinx/coroutines/flow/Flow;ILkotlinx/coroutines/channels/BufferOverflow;Lkotlin/coroutines/CoroutineContext;)V
+HSPLkotlinx/coroutines/flow/SharingStarted$Companion;-><clinit>()V
+HSPLkotlinx/coroutines/flow/SharingStarted$Companion;-><init>()V
+HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->WhileSubscribed$default(Lkotlinx/coroutines/flow/SharingStarted$Companion;JJILjava/lang/Object;)Lkotlinx/coroutines/flow/SharingStarted;
+HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->WhileSubscribed(JJ)Lkotlinx/coroutines/flow/SharingStarted;
+HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->getEagerly()Lkotlinx/coroutines/flow/SharingStarted;
+HSPLkotlinx/coroutines/flow/SharingStarted$Companion;->getLazily()Lkotlinx/coroutines/flow/SharingStarted;
+HSPLkotlinx/coroutines/flow/SharingStarted;-><clinit>()V
+HSPLkotlinx/coroutines/flow/StartedEagerly;-><init>()V
+HSPLkotlinx/coroutines/flow/StartedLazily;-><init>()V
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;-><init>(Lkotlinx/coroutines/flow/StartedWhileSubscribed;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;ILkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;-><init>(Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invoke(Lkotlinx/coroutines/flow/SharingCommand;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;-><init>(JJ)V
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->command(Lkotlinx/coroutines/flow/StateFlow;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/StartedWhileSubscribed;->equals(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/StateFlowImpl$collect$1;-><init>(Lkotlinx/coroutines/flow/StateFlowImpl;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/StateFlowImpl$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;-><init>(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlot()Lkotlinx/coroutines/flow/StateFlowSlot;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/StateFlowSlot;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->createSlotArray(I)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->getValue()Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->setValue(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/flow/StateFlowImpl;->updateState(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/StateFlowKt;-><clinit>()V
+HSPLkotlinx/coroutines/flow/StateFlowKt;->MutableStateFlow(Ljava/lang/Object;)Lkotlinx/coroutines/flow/MutableStateFlow;
+HSPLkotlinx/coroutines/flow/StateFlowKt;->access$getNONE$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/flow/StateFlowKt;->access$getPENDING$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/flow/StateFlowSlot;-><init>()V
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->access$get_state$p(Lkotlinx/coroutines/flow/StateFlowSlot;)Lkotlinx/atomicfu/AtomicRef;
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->allocateLocked(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->allocateLocked(Lkotlinx/coroutines/flow/StateFlowImpl;)Z
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->awaitPending(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->makePending()V
+HSPLkotlinx/coroutines/flow/StateFlowSlot;->takePending()Z
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;-><init>()V
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->access$getNCollectors(Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;)I
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->access$getSlots(Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;)[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->allocateSlot()Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getNCollectors()I
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getSlots()[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->getSubscriptionCount()Lkotlinx/coroutines/flow/StateFlow;
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlowKt;-><clinit>()V
+HSPLkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;-><init>()V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;-><init>(Lkotlinx/coroutines/flow/FlowCollector;Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;-><init>(Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow;-><init>(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->collect$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlow;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->fuse(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->getCollectToFun$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Lkotlin/jvm/functions/Function2;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->getProduceCapacity$external__kotlinx_coroutines__android_common__kotlinx_coroutines()I
+HSPLkotlinx/coroutines/flow/internal/ChannelFlow;->produceImpl(Lkotlinx/coroutines/CoroutineScope;)Lkotlinx/coroutines/channels/ReceiveChannel;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;-><init>(Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collect$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlowOperator;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collectTo$suspendImpl(Lkotlinx/coroutines/flow/internal/ChannelFlowOperator;Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowOperator;->collectTo(Lkotlinx/coroutines/channels/ProducerScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;-><init>(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1;-><init>(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;-><init>(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;-><init>(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;-><init>(Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;-><init>(Lkotlin/jvm/functions/Function3;Lkotlinx/coroutines/flow/Flow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->access$getTransform$p(Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;)Lkotlin/jvm/functions/Function3;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->create(Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;)Lkotlinx/coroutines/flow/internal/ChannelFlow;
+HSPLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;->flowCollect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/FusibleFlow$DefaultImpls;->fuse$default(Lkotlinx/coroutines/flow/internal/FusibleFlow;Lkotlin/coroutines/CoroutineContext;ILkotlinx/coroutines/channels/BufferOverflow;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
+HSPLkotlinx/coroutines/flow/internal/NoOpContinuation;-><clinit>()V
+HSPLkotlinx/coroutines/flow/internal/NoOpContinuation;-><init>()V
+HSPLkotlinx/coroutines/flow/internal/NopCollector;-><clinit>()V
+HSPLkotlinx/coroutines/flow/internal/NopCollector;-><init>()V
+HSPLkotlinx/coroutines/flow/internal/NullSurrogateKt;-><clinit>()V
+HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;-><clinit>()V
+HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;-><init>()V
+HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->invoke(ILkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Integer;
+HSPLkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/SafeCollector;-><init>(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/CoroutineContext;)V
+HSPLkotlinx/coroutines/flow/internal/SendingCollector;-><init>(Lkotlinx/coroutines/channels/SendChannel;)V
+HSPLkotlinx/coroutines/flow/internal/SendingCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow;-><init>(I)V
+HSPLkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow;->increment(I)Z
+HSPLkotlinx/coroutines/internal/AtomicKt;-><clinit>()V
+HSPLkotlinx/coroutines/internal/AtomicOp;-><init>()V
+HSPLkotlinx/coroutines/internal/AtomicOp;->decide(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/AtomicOp;->perform(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ContextScope;-><init>(Lkotlin/coroutines/CoroutineContext;)V
+HSPLkotlinx/coroutines/internal/ContextScope;->getCoroutineContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;-><init>(Lkotlinx/coroutines/CoroutineDispatcher;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->awaitReusability()V
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->cancelCompletedResult$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Object;Ljava/lang/Throwable;)V
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->claimReusableCancellableContinuation()Lkotlinx/coroutines/CancellableContinuationImpl;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getContext()Lkotlin/coroutines/CoroutineContext;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getDelegate$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Lkotlin/coroutines/Continuation;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->getReusableCancellableContinuation()Lkotlinx/coroutines/CancellableContinuationImpl;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->isReusable()Z
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->release()V
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->resumeWith(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->takeState$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/DispatchedContinuation;->tryReleaseClaimedContinuation(Lkotlinx/coroutines/CancellableContinuation;)Ljava/lang/Throwable;
+HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;-><clinit>()V
+HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->access$getUNDEFINED$p()Lkotlinx/coroutines/internal/Symbol;
+HSPLkotlinx/coroutines/internal/DispatchedContinuationKt;->resumeCancellableWith(Lkotlin/coroutines/Continuation;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/internal/FastServiceLoader;-><clinit>()V
+HSPLkotlinx/coroutines/internal/FastServiceLoader;-><init>()V
+HSPLkotlinx/coroutines/internal/FastServiceLoader;->loadMainDispatcherFactory$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Ljava/util/List;
+HSPLkotlinx/coroutines/internal/FastServiceLoaderKt;-><clinit>()V
+HSPLkotlinx/coroutines/internal/FastServiceLoaderKt;->getANDROID_DETECTED()Z
+HSPLkotlinx/coroutines/internal/LimitedDispatcher;-><init>(Lkotlinx/coroutines/CoroutineDispatcher;I)V
+HSPLkotlinx/coroutines/internal/LimitedDispatcherKt;->checkParallelism(I)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListHead;-><init>()V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListHead;->isRemoved()Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListKt;-><clinit>()V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListKt;->unwrap(Ljava/lang/Object;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->complete(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;->complete(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;-><init>()V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->access$finishAdd(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->access$get_next$p(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/atomicfu/AtomicRef;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->addNext(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->addOneIfEmpty(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->correctPrev(Lkotlinx/coroutines/internal/OpDescriptor;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->finishAdd(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getNext()Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getNextNode()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->getPrevNode()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->isRemoved()Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->remove()Z
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removeOrNext()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removed()Lkotlinx/coroutines/internal/Removed;
+HSPLkotlinx/coroutines/internal/LockFreeLinkedListNode;->tryCondAddNext(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;)I
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueue;-><init>(Z)V
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;-><init>()V
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;-><clinit>()V
+HSPLkotlinx/coroutines/internal/LockFreeTaskQueueCore;-><init>(IZ)V
+HSPLkotlinx/coroutines/internal/MainDispatcherLoader;-><clinit>()V
+HSPLkotlinx/coroutines/internal/MainDispatcherLoader;-><init>()V
+HSPLkotlinx/coroutines/internal/MainDispatcherLoader;->loadMainDispatcher()Lkotlinx/coroutines/MainCoroutineDispatcher;
+HSPLkotlinx/coroutines/internal/MainDispatchersKt;-><clinit>()V
+HSPLkotlinx/coroutines/internal/MainDispatchersKt;->tryCreateDispatcher(Lkotlinx/coroutines/internal/MainDispatcherFactory;Ljava/util/List;)Lkotlinx/coroutines/MainCoroutineDispatcher;
+HSPLkotlinx/coroutines/internal/OpDescriptor;-><init>()V
+HSPLkotlinx/coroutines/internal/Removed;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+HSPLkotlinx/coroutines/internal/ResizableAtomicArray;-><init>(I)V
+HSPLkotlinx/coroutines/internal/ScopeCoroutine;-><init>(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/internal/ScopeCoroutine;->afterResume(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/ScopeCoroutine;->isScopedCoroutine()Z
+HSPLkotlinx/coroutines/internal/Symbol;-><init>(Ljava/lang/String;)V
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->getAVAILABLE_PROCESSORS()I
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String;
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;III)I
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;JJJ)J
+HSPLkotlinx/coroutines/internal/SystemPropsKt;->systemProp(Ljava/lang/String;Z)Z
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;-><clinit>()V
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->getAVAILABLE_PROCESSORS()I
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;->systemProp(Ljava/lang/String;)Ljava/lang/String;
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp$default(Ljava/lang/String;IIIILjava/lang/Object;)I
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp$default(Ljava/lang/String;JJJILjava/lang/Object;)J
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;III)I
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;JJJ)J
+HSPLkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;->systemProp(Ljava/lang/String;Z)Z
+HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;-><clinit>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;-><init>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ThreadContextKt$countAll$1;->invoke(Ljava/lang/Object;Lkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;-><clinit>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt$findOne$1;-><init>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt$updateState$1;-><clinit>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt$updateState$1;-><init>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt;-><clinit>()V
+HSPLkotlinx/coroutines/internal/ThreadContextKt;->restoreThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/internal/ThreadContextKt;->threadContextElements(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/internal/ThreadContextKt;->updateThreadContext(Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/intrinsics/CancellableKt;->startCoroutineCancellable$default(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+HSPLkotlinx/coroutines/intrinsics/CancellableKt;->startCoroutineCancellable(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;Lkotlin/jvm/functions/Function1;)V
+HSPLkotlinx/coroutines/intrinsics/UndispatchedKt;->startCoroutineUndispatched(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)V
+HSPLkotlinx/coroutines/intrinsics/UndispatchedKt;->startUndispatchedOrReturn(Lkotlinx/coroutines/internal/ScopeCoroutine;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;-><init>()V
+HSPLkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;-><clinit>()V
+HSPLkotlinx/coroutines/scheduling/CoroutineScheduler;-><init>(IIJLjava/lang/String;)V
+HSPLkotlinx/coroutines/scheduling/DefaultIoScheduler;-><clinit>()V
+HSPLkotlinx/coroutines/scheduling/DefaultIoScheduler;-><init>()V
+HSPLkotlinx/coroutines/scheduling/DefaultScheduler;-><clinit>()V
+HSPLkotlinx/coroutines/scheduling/DefaultScheduler;-><init>()V
+HSPLkotlinx/coroutines/scheduling/GlobalQueue;-><init>()V
+HSPLkotlinx/coroutines/scheduling/NanoTimeSource;-><clinit>()V
+HSPLkotlinx/coroutines/scheduling/NanoTimeSource;-><init>()V
+HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;-><init>(IIJLjava/lang/String;)V
+HSPLkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;->createScheduler()Lkotlinx/coroutines/scheduling/CoroutineScheduler;
+HSPLkotlinx/coroutines/scheduling/SchedulerTimeSource;-><init>()V
+HSPLkotlinx/coroutines/scheduling/Task;-><init>()V
+HSPLkotlinx/coroutines/scheduling/Task;-><init>(JLkotlinx/coroutines/scheduling/TaskContext;)V
+HSPLkotlinx/coroutines/scheduling/TaskContextImpl;-><init>(I)V
+HSPLkotlinx/coroutines/scheduling/TaskContextImpl;->afterTask()V
+HSPLkotlinx/coroutines/scheduling/TasksKt;-><clinit>()V
+HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;-><clinit>()V
+HSPLkotlinx/coroutines/scheduling/UnlimitedIoScheduler;-><init>()V
+HSPLkotlinx/coroutines/sync/Empty;-><init>(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/Mutex$DefaultImpls;->lock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/sync/MutexImpl;-><init>(Z)V
+HSPLkotlinx/coroutines/sync/MutexImpl;->lock(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+HSPLkotlinx/coroutines/sync/MutexImpl;->tryLock(Ljava/lang/Object;)Z
+HSPLkotlinx/coroutines/sync/MutexImpl;->unlock(Ljava/lang/Object;)V
+HSPLkotlinx/coroutines/sync/MutexKt;-><clinit>()V
+HSPLkotlinx/coroutines/sync/MutexKt;->Mutex$default(ZILjava/lang/Object;)Lkotlinx/coroutines/sync/Mutex;
+HSPLkotlinx/coroutines/sync/MutexKt;->Mutex(Z)Lkotlinx/coroutines/sync/Mutex;
+HSPLkotlinx/coroutines/sync/MutexKt;->access$getEMPTY_LOCKED$p()Lkotlinx/coroutines/sync/Empty;
+HSPLkotlinx/coroutines/sync/MutexKt;->access$getEMPTY_UNLOCKED$p()Lkotlinx/coroutines/sync/Empty;
+HSPLkotlinx/coroutines/sync/MutexKt;->access$getUNLOCKED$p()Lkotlinx/coroutines/internal/Symbol;
+Landroidx/activity/Cancellable;
+Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;
+Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;
+Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;
+Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;
+Landroidx/activity/ComponentActivity$1;
+Landroidx/activity/ComponentActivity$2$2;
+Landroidx/activity/ComponentActivity$2;
+Landroidx/activity/ComponentActivity$3;
+Landroidx/activity/ComponentActivity$4;
+Landroidx/activity/ComponentActivity$5;
+Landroidx/activity/ComponentActivity$Api19Impl;
+Landroidx/activity/ComponentActivity$Api33Impl;
+Landroidx/activity/ComponentActivity$NonConfigurationInstances;
+Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutor;
+Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl$$ExternalSyntheticLambda0;
+Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;
+Landroidx/activity/ComponentActivity;
+Landroidx/activity/FullyDrawnReporter$$ExternalSyntheticLambda0;
+Landroidx/activity/FullyDrawnReporter;
+Landroidx/activity/FullyDrawnReporterOwner;
+Landroidx/activity/OnBackPressedCallback;
+Landroidx/activity/OnBackPressedDispatcher$$ExternalSyntheticLambda1;
+Landroidx/activity/OnBackPressedDispatcher$$ExternalSyntheticLambda2;
+Landroidx/activity/OnBackPressedDispatcher$$ExternalSyntheticThrowCCEIfNotNull0;
+Landroidx/activity/OnBackPressedDispatcher$Api33Impl$$ExternalSyntheticLambda0;
+Landroidx/activity/OnBackPressedDispatcher$Api33Impl;
+Landroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;
+Landroidx/activity/OnBackPressedDispatcher;
+Landroidx/activity/OnBackPressedDispatcherOwner;
+Landroidx/activity/R$id;
+Landroidx/activity/ViewTreeFullyDrawnReporterOwner;
+Landroidx/activity/ViewTreeOnBackPressedDispatcherOwner;
+Landroidx/activity/compose/ActivityResultLauncherHolder;
+Landroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1$1;
+Landroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1$invoke$$inlined$onDispose$1;
+Landroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1;
+Landroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$key$1;
+Landroidx/activity/compose/ActivityResultRegistryKt;
+Landroidx/activity/compose/ComponentActivityKt;
+Landroidx/activity/compose/LocalActivityResultRegistryOwner$LocalComposition$1;
+Landroidx/activity/compose/LocalActivityResultRegistryOwner;
+Landroidx/activity/compose/ManagedActivityResultLauncher;
+Landroidx/activity/contextaware/ContextAwareHelper;
+Landroidx/activity/contextaware/OnContextAvailableListener;
+Landroidx/activity/result/ActivityResult;
+Landroidx/activity/result/ActivityResultCallback;
+Landroidx/activity/result/ActivityResultLauncher;
+Landroidx/activity/result/ActivityResultRegistry$3;
+Landroidx/activity/result/ActivityResultRegistry$CallbackAndContract;
+Landroidx/activity/result/ActivityResultRegistry;
+Landroidx/activity/result/ActivityResultRegistryOwner;
+Landroidx/activity/result/IntentSenderRequest$Builder;
+Landroidx/activity/result/IntentSenderRequest;
+Landroidx/activity/result/contract/ActivityResultContract$SynchronousResult;
+Landroidx/activity/result/contract/ActivityResultContract;
+Landroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult$Companion;
+Landroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult;
+Landroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda0;
+Landroidx/arch/core/executor/ArchTaskExecutor$$ExternalSyntheticLambda1;
+Landroidx/arch/core/executor/ArchTaskExecutor;
+Landroidx/arch/core/executor/DefaultTaskExecutor$1;
+Landroidx/arch/core/executor/DefaultTaskExecutor$Api28Impl;
+Landroidx/arch/core/executor/DefaultTaskExecutor;
+Landroidx/arch/core/executor/TaskExecutor;
+Landroidx/arch/core/internal/FastSafeIterableMap;
+Landroidx/arch/core/internal/SafeIterableMap$AscendingIterator;
+Landroidx/arch/core/internal/SafeIterableMap$DescendingIterator;
+Landroidx/arch/core/internal/SafeIterableMap$Entry;
+Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;
+Landroidx/arch/core/internal/SafeIterableMap$ListIterator;
+Landroidx/arch/core/internal/SafeIterableMap$SupportRemove;
+Landroidx/arch/core/internal/SafeIterableMap;
+Landroidx/collection/ArraySet$Companion;
+Landroidx/collection/ArraySet$ElementIterator;
+Landroidx/collection/ArraySet;
+Landroidx/collection/IndexBasedArrayIterator;
+Landroidx/collection/LruCache;
+Landroidx/collection/SimpleArrayMap;
+Landroidx/collection/SparseArrayCompat;
+Landroidx/collection/SparseArrayCompatKt;
+Landroidx/collection/internal/ContainerHelpersKt;
+Landroidx/collection/internal/Lock;
+Landroidx/collection/internal/LruHashMap;
+Landroidx/compose/animation/core/Animatable$runAnimation$2$1;
+Landroidx/compose/animation/core/Animatable$runAnimation$2;
+Landroidx/compose/animation/core/Animatable$snapTo$2;
+Landroidx/compose/animation/core/Animatable;
+Landroidx/compose/animation/core/AnimatableKt;
+Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$2;
+Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3$1;
+Landroidx/compose/animation/core/AnimateAsStateKt$animateValueAsState$3;
+Landroidx/compose/animation/core/AnimateAsStateKt;
+Landroidx/compose/animation/core/Animation;
+Landroidx/compose/animation/core/AnimationEndReason;
+Landroidx/compose/animation/core/AnimationKt;
+Landroidx/compose/animation/core/AnimationResult;
+Landroidx/compose/animation/core/AnimationScope;
+Landroidx/compose/animation/core/AnimationSpec;
+Landroidx/compose/animation/core/AnimationSpecKt;
+Landroidx/compose/animation/core/AnimationState;
+Landroidx/compose/animation/core/AnimationStateKt;
+Landroidx/compose/animation/core/AnimationVector1D;
+Landroidx/compose/animation/core/AnimationVector2D;
+Landroidx/compose/animation/core/AnimationVector4D;
+Landroidx/compose/animation/core/AnimationVector;
+Landroidx/compose/animation/core/AnimationVectorsKt;
+Landroidx/compose/animation/core/Animations;
+Landroidx/compose/animation/core/CubicBezierEasing;
+Landroidx/compose/animation/core/DecayAnimation;
+Landroidx/compose/animation/core/DecayAnimationSpec;
+Landroidx/compose/animation/core/Easing;
+Landroidx/compose/animation/core/EasingKt$LinearEasing$1;
+Landroidx/compose/animation/core/EasingKt;
+Landroidx/compose/animation/core/FiniteAnimationSpec;
+Landroidx/compose/animation/core/FloatAnimationSpec;
+Landroidx/compose/animation/core/FloatTweenSpec;
+Landroidx/compose/animation/core/InfiniteAnimationPolicyKt;
+Landroidx/compose/animation/core/MutatePriority;
+Landroidx/compose/animation/core/MutatorMutex$Mutator;
+Landroidx/compose/animation/core/MutatorMutex$mutate$2;
+Landroidx/compose/animation/core/MutatorMutex;
+Landroidx/compose/animation/core/SpringSpec;
+Landroidx/compose/animation/core/SuspendAnimationKt$animate$3;
+Landroidx/compose/animation/core/SuspendAnimationKt$animate$4;
+Landroidx/compose/animation/core/SuspendAnimationKt$animate$5;
+Landroidx/compose/animation/core/SuspendAnimationKt$animate$6$1;
+Landroidx/compose/animation/core/SuspendAnimationKt$animate$6;
+Landroidx/compose/animation/core/SuspendAnimationKt$animate$7;
+Landroidx/compose/animation/core/SuspendAnimationKt$animate$9;
+Landroidx/compose/animation/core/SuspendAnimationKt$animateDecay$4;
+Landroidx/compose/animation/core/SuspendAnimationKt$callWithFrameNanos$2;
+Landroidx/compose/animation/core/SuspendAnimationKt;
+Landroidx/compose/animation/core/TargetBasedAnimation;
+Landroidx/compose/animation/core/TweenSpec;
+Landroidx/compose/animation/core/TwoWayConverter;
+Landroidx/compose/animation/core/TwoWayConverterImpl;
+Landroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$DpOffsetToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt$DpToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$DpToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt$FloatToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$IntOffsetToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$IntSizeToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt$IntToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$IntToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$OffsetToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt$RectToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$RectToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt$SizeToVector$1;
+Landroidx/compose/animation/core/VectorConvertersKt$SizeToVector$2;
+Landroidx/compose/animation/core/VectorConvertersKt;
+Landroidx/compose/animation/core/VectorizedAnimationSpec;
+Landroidx/compose/animation/core/VectorizedDurationBasedAnimationSpec;
+Landroidx/compose/animation/core/VectorizedFiniteAnimationSpec;
+Landroidx/compose/animation/core/VectorizedFloatAnimationSpec$1;
+Landroidx/compose/animation/core/VectorizedFloatAnimationSpec;
+Landroidx/compose/animation/core/VectorizedSpringSpec;
+Landroidx/compose/animation/core/VectorizedTweenSpec;
+Landroidx/compose/animation/core/VisibilityThresholdsKt;
+Landroidx/compose/foundation/Background;
+Landroidx/compose/foundation/BackgroundKt$background-bw27NRU$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/BackgroundKt;
+Landroidx/compose/foundation/BorderKt;
+Landroidx/compose/foundation/BorderStroke;
+Landroidx/compose/foundation/CanvasKt$Canvas$1;
+Landroidx/compose/foundation/CanvasKt;
+Landroidx/compose/foundation/ClickableKt$PressedInteractionSourceDisposableEffect$1$invoke$$inlined$onDispose$1;
+Landroidx/compose/foundation/ClickableKt$PressedInteractionSourceDisposableEffect$1;
+Landroidx/compose/foundation/ClickableKt$PressedInteractionSourceDisposableEffect$2;
+Landroidx/compose/foundation/ClickableKt$clickable$4$1$1$1;
+Landroidx/compose/foundation/ClickableKt$clickable$4$1$1;
+Landroidx/compose/foundation/ClickableKt$clickable$4$delayPressInteraction$1$1;
+Landroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$1;
+Landroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$2;
+Landroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1;
+Landroidx/compose/foundation/ClickableKt$clickable$4;
+Landroidx/compose/foundation/ClickableKt$clickable-O2vRcR0$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$clickSemantics$1$1;
+Landroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$clickSemantics$1$2;
+Landroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$clickSemantics$1;
+Landroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$detectPressAndClickFromKey$1$1;
+Landroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$detectPressAndClickFromKey$1$2$1;
+Landroidx/compose/foundation/ClickableKt$genericClickableWithoutGesture$detectPressAndClickFromKey$1;
+Landroidx/compose/foundation/ClickableKt$handlePressInteraction$2;
+Landroidx/compose/foundation/ClickableKt;
+Landroidx/compose/foundation/Clickable_androidKt;
+Landroidx/compose/foundation/DarkThemeKt;
+Landroidx/compose/foundation/DarkTheme_androidKt;
+Landroidx/compose/foundation/DefaultDebugIndication;
+Landroidx/compose/foundation/FocusableKt$focusGroup$1;
+Landroidx/compose/foundation/FocusableKt$focusable$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/FocusableKt$focusable$2$1$1$invoke$$inlined$onDispose$1;
+Landroidx/compose/foundation/FocusableKt$focusable$2$1$1;
+Landroidx/compose/foundation/FocusableKt$focusable$2$2$1;
+Landroidx/compose/foundation/FocusableKt$focusable$2$2$invoke$$inlined$onDispose$1;
+Landroidx/compose/foundation/FocusableKt$focusable$2$2;
+Landroidx/compose/foundation/FocusableKt$focusable$2$3$1;
+Landroidx/compose/foundation/FocusableKt$focusable$2$3;
+Landroidx/compose/foundation/FocusableKt$focusable$2$4$1;
+Landroidx/compose/foundation/FocusableKt$focusable$2$5$1;
+Landroidx/compose/foundation/FocusableKt$focusable$2$5$2;
+Landroidx/compose/foundation/FocusableKt$focusable$2$5$3;
+Landroidx/compose/foundation/FocusableKt$focusable$2$5;
+Landroidx/compose/foundation/FocusableKt$focusable$2;
+Landroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$2$1;
+Landroidx/compose/foundation/FocusableKt$focusableInNonTouchMode$2;
+Landroidx/compose/foundation/FocusableKt$onPinnableParentAvailable$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/FocusableKt$special$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/FocusableKt;
+Landroidx/compose/foundation/FocusedBoundsModifier;
+Landroidx/compose/foundation/HoverableKt$hoverable$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$1$1$invoke$$inlined$onDispose$1;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$1$1;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$2$1;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$3$1$1;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$3$1$2;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$3$1;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$3;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$invoke$emitEnter$1;
+Landroidx/compose/foundation/HoverableKt$hoverable$2$invoke$emitExit$1;
+Landroidx/compose/foundation/HoverableKt$hoverable$2;
+Landroidx/compose/foundation/HoverableKt;
+Landroidx/compose/foundation/ImageKt;
+Landroidx/compose/foundation/Indication;
+Landroidx/compose/foundation/IndicationInstance;
+Landroidx/compose/foundation/IndicationKt$LocalIndication$1;
+Landroidx/compose/foundation/IndicationKt$indication$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/IndicationKt$indication$2;
+Landroidx/compose/foundation/IndicationKt;
+Landroidx/compose/foundation/IndicationModifier;
+Landroidx/compose/foundation/MutatePriority;
+Landroidx/compose/foundation/MutatorMutex$Mutator;
+Landroidx/compose/foundation/MutatorMutex$mutateWith$2;
+Landroidx/compose/foundation/MutatorMutex;
+Landroidx/compose/foundation/NoIndication;
+Landroidx/compose/foundation/PinnableParentConsumer;
+Landroidx/compose/foundation/gestures/DefaultDraggableState$drag$2;
+Landroidx/compose/foundation/gestures/DefaultDraggableState$dragScope$1;
+Landroidx/compose/foundation/gestures/DefaultDraggableState;
+Landroidx/compose/foundation/gestures/DragEvent$DragCancelled;
+Landroidx/compose/foundation/gestures/DragEvent$DragDelta;
+Landroidx/compose/foundation/gestures/DragEvent$DragStarted;
+Landroidx/compose/foundation/gestures/DragEvent$DragStopped;
+Landroidx/compose/foundation/gestures/DragEvent;
+Landroidx/compose/foundation/gestures/DragGestureDetectorKt;
+Landroidx/compose/foundation/gestures/DragLogic$processDragCancel$1;
+Landroidx/compose/foundation/gestures/DragLogic$processDragStart$1;
+Landroidx/compose/foundation/gestures/DragLogic$processDragStop$1;
+Landroidx/compose/foundation/gestures/DragLogic;
+Landroidx/compose/foundation/gestures/DragScope;
+Landroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1;
+Landroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$postPointerSlop$1;
+Landroidx/compose/foundation/gestures/DraggableKt$awaitDrag$dragTick$1;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$1;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$2;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$3;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$4;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$5;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$6;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$7;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$9$1$1$invoke$$inlined$onDispose$1;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$9$1$1;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$9$2$2;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$9$2;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1$1;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$9$3$1;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$9$3;
+Landroidx/compose/foundation/gestures/DraggableKt$draggable$9;
+Landroidx/compose/foundation/gestures/DraggableKt$rememberDraggableState$1$1;
+Landroidx/compose/foundation/gestures/DraggableKt;
+Landroidx/compose/foundation/gestures/DraggableState;
+Landroidx/compose/foundation/gestures/ForEachGestureKt$awaitAllPointersUp$3;
+Landroidx/compose/foundation/gestures/ForEachGestureKt$awaitEachGesture$2;
+Landroidx/compose/foundation/gestures/ForEachGestureKt;
+Landroidx/compose/foundation/gestures/Orientation;
+Landroidx/compose/foundation/gestures/PointerDirectionConfig;
+Landroidx/compose/foundation/gestures/PressGestureScope;
+Landroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1;
+Landroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1;
+Landroidx/compose/foundation/gestures/PressGestureScopeImpl;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$NoPressGesture$1;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitFirstDown$2;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$awaitSecondDown$2;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$consumeUntilUp$1;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$1;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$3;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$10;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$1;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$2;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$3;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$4;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$5;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$6;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$7;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$8;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$9;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2;
+Landroidx/compose/foundation/gestures/TapGestureDetectorKt;
+Landroidx/compose/foundation/interaction/DragInteraction$Cancel;
+Landroidx/compose/foundation/interaction/DragInteraction$Start;
+Landroidx/compose/foundation/interaction/DragInteraction$Stop;
+Landroidx/compose/foundation/interaction/FocusInteraction$Focus;
+Landroidx/compose/foundation/interaction/FocusInteraction$Unfocus;
+Landroidx/compose/foundation/interaction/HoverInteraction$Enter;
+Landroidx/compose/foundation/interaction/HoverInteraction$Exit;
+Landroidx/compose/foundation/interaction/Interaction;
+Landroidx/compose/foundation/interaction/InteractionSource;
+Landroidx/compose/foundation/interaction/InteractionSourceKt;
+Landroidx/compose/foundation/interaction/MutableInteractionSource;
+Landroidx/compose/foundation/interaction/MutableInteractionSourceImpl;
+Landroidx/compose/foundation/interaction/PressInteraction$Cancel;
+Landroidx/compose/foundation/interaction/PressInteraction$Press;
+Landroidx/compose/foundation/interaction/PressInteraction$Release;
+Landroidx/compose/foundation/layout/Arrangement$Bottom$1;
+Landroidx/compose/foundation/layout/Arrangement$Center$1;
+Landroidx/compose/foundation/layout/Arrangement$End$1;
+Landroidx/compose/foundation/layout/Arrangement$Horizontal;
+Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical;
+Landroidx/compose/foundation/layout/Arrangement$SpaceAround$1;
+Landroidx/compose/foundation/layout/Arrangement$SpaceBetween$1;
+Landroidx/compose/foundation/layout/Arrangement$SpaceEvenly$1;
+Landroidx/compose/foundation/layout/Arrangement$SpacedAligned;
+Landroidx/compose/foundation/layout/Arrangement$Start$1;
+Landroidx/compose/foundation/layout/Arrangement$Top$1;
+Landroidx/compose/foundation/layout/Arrangement$Vertical;
+Landroidx/compose/foundation/layout/Arrangement$spacedBy$1;
+Landroidx/compose/foundation/layout/Arrangement;
+Landroidx/compose/foundation/layout/BoxChildData;
+Landroidx/compose/foundation/layout/BoxKt$Box$3;
+Landroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1$measure$1;
+Landroidx/compose/foundation/layout/BoxKt$EmptyBoxMeasurePolicy$1;
+Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$1;
+Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$2;
+Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1$measure$5;
+Landroidx/compose/foundation/layout/BoxKt$boxMeasurePolicy$1;
+Landroidx/compose/foundation/layout/BoxKt;
+Landroidx/compose/foundation/layout/BoxScopeInstance;
+Landroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1$measurables$1;
+Landroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$1$1;
+Landroidx/compose/foundation/layout/BoxWithConstraintsKt$BoxWithConstraints$2;
+Landroidx/compose/foundation/layout/BoxWithConstraintsKt;
+Landroidx/compose/foundation/layout/BoxWithConstraintsScope;
+Landroidx/compose/foundation/layout/BoxWithConstraintsScopeImpl;
+Landroidx/compose/foundation/layout/ColumnKt$DefaultColumnMeasurePolicy$1;
+Landroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;
+Landroidx/compose/foundation/layout/ColumnKt;
+Landroidx/compose/foundation/layout/ColumnScope;
+Landroidx/compose/foundation/layout/ColumnScopeInstance$align$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/ColumnScopeInstance;
+Landroidx/compose/foundation/layout/CrossAxisAlignment$CenterCrossAxisAlignment;
+Landroidx/compose/foundation/layout/CrossAxisAlignment$Companion;
+Landroidx/compose/foundation/layout/CrossAxisAlignment$EndCrossAxisAlignment;
+Landroidx/compose/foundation/layout/CrossAxisAlignment$HorizontalCrossAxisAlignment;
+Landroidx/compose/foundation/layout/CrossAxisAlignment$StartCrossAxisAlignment;
+Landroidx/compose/foundation/layout/CrossAxisAlignment$VerticalCrossAxisAlignment;
+Landroidx/compose/foundation/layout/CrossAxisAlignment;
+Landroidx/compose/foundation/layout/Direction;
+Landroidx/compose/foundation/layout/FillModifier$measure$1;
+Landroidx/compose/foundation/layout/FillModifier;
+Landroidx/compose/foundation/layout/HorizontalAlignModifier;
+Landroidx/compose/foundation/layout/LayoutOrientation;
+Landroidx/compose/foundation/layout/OffsetKt$offset$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/OffsetKt;
+Landroidx/compose/foundation/layout/OffsetPxModifier$measure$1;
+Landroidx/compose/foundation/layout/OffsetPxModifier;
+Landroidx/compose/foundation/layout/OrientationIndependentConstraints;
+Landroidx/compose/foundation/layout/PaddingKt$padding$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/PaddingKt$padding-3ABfNKs$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/PaddingKt$padding-VpY3zN4$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/PaddingKt$padding-qDBjuR0$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/PaddingKt;
+Landroidx/compose/foundation/layout/PaddingModifier$measure$1;
+Landroidx/compose/foundation/layout/PaddingModifier;
+Landroidx/compose/foundation/layout/PaddingValues;
+Landroidx/compose/foundation/layout/PaddingValuesImpl;
+Landroidx/compose/foundation/layout/PaddingValuesModifier$measure$2;
+Landroidx/compose/foundation/layout/PaddingValuesModifier;
+Landroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1$measure$4;
+Landroidx/compose/foundation/layout/RowColumnImplKt$rowColumnMeasurePolicy$1;
+Landroidx/compose/foundation/layout/RowColumnImplKt;
+Landroidx/compose/foundation/layout/RowColumnParentData;
+Landroidx/compose/foundation/layout/RowKt$DefaultRowMeasurePolicy$1;
+Landroidx/compose/foundation/layout/RowKt$rowMeasurePolicy$1$1;
+Landroidx/compose/foundation/layout/RowKt;
+Landroidx/compose/foundation/layout/RowScope;
+Landroidx/compose/foundation/layout/RowScopeInstance$align$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/RowScopeInstance;
+Landroidx/compose/foundation/layout/SizeKt$createFillHeightModifier$1;
+Landroidx/compose/foundation/layout/SizeKt$createFillSizeModifier$1;
+Landroidx/compose/foundation/layout/SizeKt$createFillWidthModifier$1;
+Landroidx/compose/foundation/layout/SizeKt$createWrapContentHeightModifier$1;
+Landroidx/compose/foundation/layout/SizeKt$createWrapContentHeightModifier$2;
+Landroidx/compose/foundation/layout/SizeKt$createWrapContentSizeModifier$1;
+Landroidx/compose/foundation/layout/SizeKt$createWrapContentSizeModifier$2;
+Landroidx/compose/foundation/layout/SizeKt$createWrapContentWidthModifier$1;
+Landroidx/compose/foundation/layout/SizeKt$createWrapContentWidthModifier$2;
+Landroidx/compose/foundation/layout/SizeKt$defaultMinSize-VpY3zN4$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/SizeKt$height-3ABfNKs$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/SizeKt$heightIn-VpY3zN4$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/SizeKt$size-3ABfNKs$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/SizeKt$size-VpY3zN4$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/SizeKt$sizeIn-qDBjuR0$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/SizeKt$width-3ABfNKs$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/SizeKt$widthIn-VpY3zN4$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/layout/SizeKt;
+Landroidx/compose/foundation/layout/SizeMode;
+Landroidx/compose/foundation/layout/SizeModifier$measure$1;
+Landroidx/compose/foundation/layout/SizeModifier;
+Landroidx/compose/foundation/layout/SpacerKt;
+Landroidx/compose/foundation/layout/SpacerMeasurePolicy$measure$1$1;
+Landroidx/compose/foundation/layout/SpacerMeasurePolicy;
+Landroidx/compose/foundation/layout/UnspecifiedConstraintsModifier$measure$1;
+Landroidx/compose/foundation/layout/UnspecifiedConstraintsModifier;
+Landroidx/compose/foundation/layout/VerticalAlignModifier;
+Landroidx/compose/foundation/layout/WrapContentModifier$measure$1;
+Landroidx/compose/foundation/layout/WrapContentModifier;
+Landroidx/compose/foundation/lazy/layout/PinnableParent;
+Landroidx/compose/foundation/lazy/layout/PinnableParentKt$ModifierLocalPinnableParent$1;
+Landroidx/compose/foundation/lazy/layout/PinnableParentKt;
+Landroidx/compose/foundation/relocation/AndroidBringIntoViewParent;
+Landroidx/compose/foundation/relocation/BringIntoViewChildModifier;
+Landroidx/compose/foundation/relocation/BringIntoViewKt$ModifierLocalBringIntoViewParent$1;
+Landroidx/compose/foundation/relocation/BringIntoViewKt;
+Landroidx/compose/foundation/relocation/BringIntoViewParent;
+Landroidx/compose/foundation/relocation/BringIntoViewRequester;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterImpl$bringIntoView$1;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterImpl;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2$1$invoke$$inlined$onDispose$1;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2$1;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterKt;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterModifier$bringIntoView$2;
+Landroidx/compose/foundation/relocation/BringIntoViewRequesterModifier;
+Landroidx/compose/foundation/relocation/BringIntoViewResponder_androidKt;
+Landroidx/compose/foundation/shape/CornerBasedShape;
+Landroidx/compose/foundation/shape/CornerSize;
+Landroidx/compose/foundation/shape/CornerSizeKt$ZeroCornerSize$1;
+Landroidx/compose/foundation/shape/CornerSizeKt;
+Landroidx/compose/foundation/shape/DpCornerSize;
+Landroidx/compose/foundation/shape/PercentCornerSize;
+Landroidx/compose/foundation/shape/RoundedCornerShape;
+Landroidx/compose/foundation/shape/RoundedCornerShapeKt;
+Landroidx/compose/foundation/text/BasicTextKt$BasicText$1;
+Landroidx/compose/foundation/text/BasicTextKt$BasicText$2;
+Landroidx/compose/foundation/text/BasicTextKt$BasicText-4YKlhWE$$inlined$Layout$1;
+Landroidx/compose/foundation/text/BasicTextKt;
+Landroidx/compose/foundation/text/CoreTextKt;
+Landroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$$inlined$debugInspectorInfo$1;
+Landroidx/compose/foundation/text/HeightInLinesModifierKt$heightInLines$2;
+Landroidx/compose/foundation/text/HeightInLinesModifierKt;
+Landroidx/compose/foundation/text/TextController$coreModifiers$1;
+Landroidx/compose/foundation/text/TextController$createSemanticsModifierFor$1$1;
+Landroidx/compose/foundation/text/TextController$createSemanticsModifierFor$1;
+Landroidx/compose/foundation/text/TextController$drawTextAndSelectionBehind$1;
+Landroidx/compose/foundation/text/TextController$measurePolicy$1$measure$2;
+Landroidx/compose/foundation/text/TextController$measurePolicy$1;
+Landroidx/compose/foundation/text/TextController$update$1;
+Landroidx/compose/foundation/text/TextController$update$2;
+Landroidx/compose/foundation/text/TextController$update$3;
+Landroidx/compose/foundation/text/TextController$update$mouseSelectionObserver$1;
+Landroidx/compose/foundation/text/TextController;
+Landroidx/compose/foundation/text/TextDelegate$Companion;
+Landroidx/compose/foundation/text/TextDelegate;
+Landroidx/compose/foundation/text/TextDelegateKt;
+Landroidx/compose/foundation/text/TextDragObserver;
+Landroidx/compose/foundation/text/TextFieldDelegateKt;
+Landroidx/compose/foundation/text/TextLayoutHelperKt;
+Landroidx/compose/foundation/text/TextPointerIcon_androidKt;
+Landroidx/compose/foundation/text/TextState$onTextLayout$1;
+Landroidx/compose/foundation/text/TextState;
+Landroidx/compose/foundation/text/TouchMode_androidKt;
+Landroidx/compose/foundation/text/selection/MouseSelectionObserver;
+Landroidx/compose/foundation/text/selection/Selectable;
+Landroidx/compose/foundation/text/selection/SelectionRegistrar;
+Landroidx/compose/foundation/text/selection/SelectionRegistrarKt$LocalSelectionRegistrar$1;
+Landroidx/compose/foundation/text/selection/SelectionRegistrarKt;
+Landroidx/compose/foundation/text/selection/TextSelectionColors;
+Landroidx/compose/foundation/text/selection/TextSelectionColorsKt$LocalTextSelectionColors$1;
+Landroidx/compose/foundation/text/selection/TextSelectionColorsKt;
+Landroidx/compose/material/icons/Icons$Filled;
+Landroidx/compose/material/icons/filled/AddKt;
+Landroidx/compose/material/icons/filled/ArrowBackKt;
+Landroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;
+Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;
+Landroidx/compose/material/ripple/CommonRippleIndicationInstance;
+Landroidx/compose/material/ripple/DebugRippleTheme;
+Landroidx/compose/material/ripple/PlatformRipple;
+Landroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;
+Landroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1;
+Landroidx/compose/material/ripple/Ripple;
+Landroidx/compose/material/ripple/RippleAlpha;
+Landroidx/compose/material/ripple/RippleAnimationKt;
+Landroidx/compose/material/ripple/RippleContainer;
+Landroidx/compose/material/ripple/RippleHostMap;
+Landroidx/compose/material/ripple/RippleHostView$$ExternalSyntheticLambda0;
+Landroidx/compose/material/ripple/RippleHostView$Companion;
+Landroidx/compose/material/ripple/RippleHostView;
+Landroidx/compose/material/ripple/RippleIndicationInstance;
+Landroidx/compose/material/ripple/RippleKt;
+Landroidx/compose/material/ripple/RippleTheme;
+Landroidx/compose/material/ripple/RippleThemeKt$LocalRippleTheme$1;
+Landroidx/compose/material/ripple/RippleThemeKt;
+Landroidx/compose/material/ripple/StateLayer$handleInteraction$1;
+Landroidx/compose/material/ripple/StateLayer$handleInteraction$2;
+Landroidx/compose/material/ripple/StateLayer;
+Landroidx/compose/material/ripple/UnprojectedRipple;
+Landroidx/compose/material3/ButtonColors;
+Landroidx/compose/material3/ButtonDefaults;
+Landroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;
+Landroidx/compose/material3/ButtonElevation$animateElevation$1$1;
+Landroidx/compose/material3/ButtonElevation$animateElevation$2;
+Landroidx/compose/material3/ButtonElevation$animateElevation$3;
+Landroidx/compose/material3/ButtonElevation;
+Landroidx/compose/material3/ButtonKt$Button$2$1$1;
+Landroidx/compose/material3/ButtonKt$Button$2$1;
+Landroidx/compose/material3/ButtonKt$Button$2;
+Landroidx/compose/material3/ButtonKt$Button$3;
+Landroidx/compose/material3/ButtonKt$FilledTonalButton$2;
+Landroidx/compose/material3/ButtonKt$TextButton$2;
+Landroidx/compose/material3/ButtonKt;
+Landroidx/compose/material3/CardColors;
+Landroidx/compose/material3/CardDefaults;
+Landroidx/compose/material3/CardElevation$animateElevation$1$1;
+Landroidx/compose/material3/CardElevation$animateElevation$2;
+Landroidx/compose/material3/CardElevation;
+Landroidx/compose/material3/CardKt$Card$1;
+Landroidx/compose/material3/CardKt$Card$2;
+Landroidx/compose/material3/CardKt;
+Landroidx/compose/material3/ChipBorder;
+Landroidx/compose/material3/ChipColors;
+Landroidx/compose/material3/ChipElevation$animateElevation$1$1$1;
+Landroidx/compose/material3/ChipElevation$animateElevation$1$1;
+Landroidx/compose/material3/ChipElevation$animateElevation$2;
+Landroidx/compose/material3/ChipElevation$animateElevation$3;
+Landroidx/compose/material3/ChipElevation;
+Landroidx/compose/material3/ChipKt$Chip$1;
+Landroidx/compose/material3/ChipKt$Chip$2;
+Landroidx/compose/material3/ChipKt$ChipContent$1;
+Landroidx/compose/material3/ChipKt$ChipContent$2;
+Landroidx/compose/material3/ChipKt$SuggestionChip$2;
+Landroidx/compose/material3/ChipKt;
+Landroidx/compose/material3/ColorResourceHelper;
+Landroidx/compose/material3/ColorScheme;
+Landroidx/compose/material3/ColorSchemeKt$LocalColorScheme$1;
+Landroidx/compose/material3/ColorSchemeKt$WhenMappings;
+Landroidx/compose/material3/ColorSchemeKt;
+Landroidx/compose/material3/ContentColorKt$LocalContentColor$1;
+Landroidx/compose/material3/ContentColorKt;
+Landroidx/compose/material3/DividerDefaults;
+Landroidx/compose/material3/DividerKt$Divider$1;
+Landroidx/compose/material3/DividerKt;
+Landroidx/compose/material3/DynamicTonalPaletteKt;
+Landroidx/compose/material3/ElevationDefaults;
+Landroidx/compose/material3/ElevationKt;
+Landroidx/compose/material3/IconKt$Icon$1;
+Landroidx/compose/material3/IconKt$Icon$2;
+Landroidx/compose/material3/IconKt$Icon$3;
+Landroidx/compose/material3/IconKt$Icon$semantics$1$1;
+Landroidx/compose/material3/IconKt;
+Landroidx/compose/material3/MaterialRippleTheme;
+Landroidx/compose/material3/MaterialTheme;
+Landroidx/compose/material3/MaterialThemeKt$MaterialTheme$1;
+Landroidx/compose/material3/MaterialThemeKt$MaterialTheme$2;
+Landroidx/compose/material3/MaterialThemeKt;
+Landroidx/compose/material3/MinimumTouchTargetModifier$measure$1;
+Landroidx/compose/material3/MinimumTouchTargetModifier;
+Landroidx/compose/material3/ShapeDefaults;
+Landroidx/compose/material3/Shapes;
+Landroidx/compose/material3/ShapesKt$LocalShapes$1;
+Landroidx/compose/material3/ShapesKt$WhenMappings;
+Landroidx/compose/material3/ShapesKt;
+Landroidx/compose/material3/SuggestionChipDefaults;
+Landroidx/compose/material3/SurfaceKt$LocalAbsoluteTonalElevation$1;
+Landroidx/compose/material3/SurfaceKt$Surface$1$1;
+Landroidx/compose/material3/SurfaceKt$Surface$1$2;
+Landroidx/compose/material3/SurfaceKt$Surface$1;
+Landroidx/compose/material3/SurfaceKt$Surface$3;
+Landroidx/compose/material3/SurfaceKt;
+Landroidx/compose/material3/TextKt$LocalTextStyle$1;
+Landroidx/compose/material3/TextKt$ProvideTextStyle$1;
+Landroidx/compose/material3/TextKt$Text$1;
+Landroidx/compose/material3/TextKt$Text$2;
+Landroidx/compose/material3/TextKt;
+Landroidx/compose/material3/TonalPalette;
+Landroidx/compose/material3/TouchTargetKt$LocalMinimumTouchTargetEnforcement$1;
+Landroidx/compose/material3/TouchTargetKt$minimumTouchTargetSize$$inlined$debugInspectorInfo$1;
+Landroidx/compose/material3/TouchTargetKt$minimumTouchTargetSize$2;
+Landroidx/compose/material3/TouchTargetKt;
+Landroidx/compose/material3/Typography;
+Landroidx/compose/material3/TypographyKt$LocalTypography$1;
+Landroidx/compose/material3/TypographyKt$WhenMappings;
+Landroidx/compose/material3/TypographyKt;
+Landroidx/compose/material3/tokens/ColorDarkTokens;
+Landroidx/compose/material3/tokens/ColorLightTokens;
+Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+Landroidx/compose/material3/tokens/ElevationTokens;
+Landroidx/compose/material3/tokens/FilledButtonTokens;
+Landroidx/compose/material3/tokens/FilledCardTokens;
+Landroidx/compose/material3/tokens/FilledTonalButtonTokens;
+Landroidx/compose/material3/tokens/IconButtonTokens;
+Landroidx/compose/material3/tokens/PaletteTokens;
+Landroidx/compose/material3/tokens/ShapeKeyTokens;
+Landroidx/compose/material3/tokens/ShapeTokens;
+Landroidx/compose/material3/tokens/SuggestionChipTokens;
+Landroidx/compose/material3/tokens/TextButtonTokens;
+Landroidx/compose/material3/tokens/TypeScaleTokens;
+Landroidx/compose/material3/tokens/TypefaceTokens;
+Landroidx/compose/material3/tokens/TypographyKeyTokens;
+Landroidx/compose/material3/tokens/TypographyTokens;
+Landroidx/compose/runtime/AbstractApplier;
+Landroidx/compose/runtime/ActualAndroid_androidKt$DefaultMonotonicFrameClock$2;
+Landroidx/compose/runtime/ActualAndroid_androidKt;
+Landroidx/compose/runtime/ActualJvm_jvmKt;
+Landroidx/compose/runtime/Anchor;
+Landroidx/compose/runtime/Applier;
+Landroidx/compose/runtime/BroadcastFrameClock$FrameAwaiter;
+Landroidx/compose/runtime/BroadcastFrameClock$withFrameNanos$2$1;
+Landroidx/compose/runtime/BroadcastFrameClock;
+Landroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-1$1;
+Landroidx/compose/runtime/ComposableSingletons$CompositionKt$lambda-2$1;
+Landroidx/compose/runtime/ComposableSingletons$CompositionKt;
+Landroidx/compose/runtime/ComposablesKt;
+Landroidx/compose/runtime/ComposeRuntimeError;
+Landroidx/compose/runtime/Composer$Companion$Empty$1;
+Landroidx/compose/runtime/Composer$Companion;
+Landroidx/compose/runtime/Composer;
+Landroidx/compose/runtime/ComposerImpl$CompositionContextHolder;
+Landroidx/compose/runtime/ComposerImpl$CompositionContextImpl;
+Landroidx/compose/runtime/ComposerImpl$apply$operation$1;
+Landroidx/compose/runtime/ComposerImpl$createNode$2;
+Landroidx/compose/runtime/ComposerImpl$createNode$3;
+Landroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;
+Landroidx/compose/runtime/ComposerImpl$doCompose$2$3;
+Landroidx/compose/runtime/ComposerImpl$doCompose$2$4;
+Landroidx/compose/runtime/ComposerImpl$doCompose$2$5;
+Landroidx/compose/runtime/ComposerImpl$doCompose$lambda$37$$inlined$sortBy$1;
+Landroidx/compose/runtime/ComposerImpl$endRestartGroup$1$1;
+Landroidx/compose/runtime/ComposerImpl$insertMovableContentGuarded$1$1$1;
+Landroidx/compose/runtime/ComposerImpl$insertMovableContentGuarded$1$1$2$1;
+Landroidx/compose/runtime/ComposerImpl$insertMovableContentGuarded$1$1$2$2;
+Landroidx/compose/runtime/ComposerImpl$insertMovableContentGuarded$1$1$3;
+Landroidx/compose/runtime/ComposerImpl$insertMovableContentGuarded$1$1$4;
+Landroidx/compose/runtime/ComposerImpl$insertMovableContentGuarded$1$1$5$1$1$1;
+Landroidx/compose/runtime/ComposerImpl$insertMovableContentGuarded$1$1$5$1$2;
+Landroidx/compose/runtime/ComposerImpl$insertMovableContentGuarded$1$2;
+Landroidx/compose/runtime/ComposerImpl$invokeMovableContentLambda$1;
+Landroidx/compose/runtime/ComposerImpl$realizeDowns$1;
+Landroidx/compose/runtime/ComposerImpl$realizeMovement$1;
+Landroidx/compose/runtime/ComposerImpl$realizeMovement$2;
+Landroidx/compose/runtime/ComposerImpl$realizeOperationLocation$2;
+Landroidx/compose/runtime/ComposerImpl$realizeUps$1;
+Landroidx/compose/runtime/ComposerImpl$recordInsert$1;
+Landroidx/compose/runtime/ComposerImpl$recordInsert$2;
+Landroidx/compose/runtime/ComposerImpl$recordSideEffect$1;
+Landroidx/compose/runtime/ComposerImpl$recordSlotEditing$1;
+Landroidx/compose/runtime/ComposerImpl$start$2;
+Landroidx/compose/runtime/ComposerImpl$startProviders$currentProviders$1;
+Landroidx/compose/runtime/ComposerImpl$startReaderGroup$1;
+Landroidx/compose/runtime/ComposerImpl$updateValue$1;
+Landroidx/compose/runtime/ComposerImpl$updateValue$2;
+Landroidx/compose/runtime/ComposerImpl;
+Landroidx/compose/runtime/ComposerKt$endGroupInstance$1;
+Landroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;
+Landroidx/compose/runtime/ComposerKt$resetSlotsInstance$1;
+Landroidx/compose/runtime/ComposerKt$skipToGroupEndInstance$1;
+Landroidx/compose/runtime/ComposerKt$startRootGroup$1;
+Landroidx/compose/runtime/ComposerKt;
+Landroidx/compose/runtime/Composition;
+Landroidx/compose/runtime/CompositionContext;
+Landroidx/compose/runtime/CompositionContextKt;
+Landroidx/compose/runtime/CompositionImpl$RememberEventDispatcher;
+Landroidx/compose/runtime/CompositionImpl;
+Landroidx/compose/runtime/CompositionKt;
+Landroidx/compose/runtime/CompositionLocal;
+Landroidx/compose/runtime/CompositionLocalKt$CompositionLocalProvider$1;
+Landroidx/compose/runtime/CompositionLocalKt;
+Landroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;
+Landroidx/compose/runtime/ControlledComposition;
+Landroidx/compose/runtime/DefaultChoreographerFrameClock;
+Landroidx/compose/runtime/DerivedSnapshotState;
+Landroidx/compose/runtime/DerivedState;
+Landroidx/compose/runtime/DisposableEffectImpl;
+Landroidx/compose/runtime/DisposableEffectResult;
+Landroidx/compose/runtime/DisposableEffectScope;
+Landroidx/compose/runtime/DynamicProvidableCompositionLocal;
+Landroidx/compose/runtime/EffectsKt;
+Landroidx/compose/runtime/GroupInfo;
+Landroidx/compose/runtime/GroupIterator;
+Landroidx/compose/runtime/IntStack;
+Landroidx/compose/runtime/Invalidation;
+Landroidx/compose/runtime/InvalidationResult;
+Landroidx/compose/runtime/JoinedKey;
+Landroidx/compose/runtime/KeyInfo;
+Landroidx/compose/runtime/Latch$await$2$2;
+Landroidx/compose/runtime/Latch;
+Landroidx/compose/runtime/LaunchedEffectImpl;
+Landroidx/compose/runtime/LazyValueHolder;
+Landroidx/compose/runtime/MonotonicFrameClock$DefaultImpls;
+Landroidx/compose/runtime/MonotonicFrameClock$Key;
+Landroidx/compose/runtime/MonotonicFrameClock;
+Landroidx/compose/runtime/MonotonicFrameClockKt;
+Landroidx/compose/runtime/MovableContent;
+Landroidx/compose/runtime/MovableContentState;
+Landroidx/compose/runtime/MovableContentStateReference;
+Landroidx/compose/runtime/MutableState;
+Landroidx/compose/runtime/NeverEqualPolicy;
+Landroidx/compose/runtime/OpaqueKey;
+Landroidx/compose/runtime/ParcelableSnapshotMutableState$Companion$CREATOR$1;
+Landroidx/compose/runtime/ParcelableSnapshotMutableState$Companion;
+Landroidx/compose/runtime/ParcelableSnapshotMutableState;
+Landroidx/compose/runtime/PausableMonotonicFrameClock$withFrameNanos$1;
+Landroidx/compose/runtime/PausableMonotonicFrameClock;
+Landroidx/compose/runtime/Pending$keyMap$2;
+Landroidx/compose/runtime/Pending;
+Landroidx/compose/runtime/PrioritySet;
+Landroidx/compose/runtime/ProvidableCompositionLocal;
+Landroidx/compose/runtime/ProvidedValue;
+Landroidx/compose/runtime/RecomposeScope;
+Landroidx/compose/runtime/RecomposeScopeImpl$end$1$2;
+Landroidx/compose/runtime/RecomposeScopeImpl;
+Landroidx/compose/runtime/RecomposeScopeImplKt;
+Landroidx/compose/runtime/Recomposer$Companion;
+Landroidx/compose/runtime/Recomposer$RecomposerErrorState;
+Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;
+Landroidx/compose/runtime/Recomposer$State;
+Landroidx/compose/runtime/Recomposer$broadcastFrameClock$1;
+Landroidx/compose/runtime/Recomposer$effectJob$1$1$1$1;
+Landroidx/compose/runtime/Recomposer$effectJob$1$1;
+Landroidx/compose/runtime/Recomposer$join$2;
+Landroidx/compose/runtime/Recomposer$performRecompose$1$1;
+Landroidx/compose/runtime/Recomposer$readObserverOf$1;
+Landroidx/compose/runtime/Recomposer$recompositionRunner$2$2;
+Landroidx/compose/runtime/Recomposer$recompositionRunner$2$unregisterApplyObserver$1;
+Landroidx/compose/runtime/Recomposer$recompositionRunner$2;
+Landroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2$2;
+Landroidx/compose/runtime/Recomposer$runRecomposeAndApplyChanges$2;
+Landroidx/compose/runtime/Recomposer$writeObserverOf$1;
+Landroidx/compose/runtime/Recomposer;
+Landroidx/compose/runtime/RecomposerKt;
+Landroidx/compose/runtime/ReferentialEqualityPolicy;
+Landroidx/compose/runtime/RememberManager;
+Landroidx/compose/runtime/RememberObserver;
+Landroidx/compose/runtime/ScopeUpdateScope;
+Landroidx/compose/runtime/SdkStubsFallbackFrameClock;
+Landroidx/compose/runtime/SkippableUpdater;
+Landroidx/compose/runtime/SlotReader;
+Landroidx/compose/runtime/SlotTable;
+Landroidx/compose/runtime/SlotTableKt;
+Landroidx/compose/runtime/SlotWriter$Companion;
+Landroidx/compose/runtime/SlotWriter$groupSlots$1;
+Landroidx/compose/runtime/SlotWriter;
+Landroidx/compose/runtime/SnapshotMutableStateImpl$StateStateRecord;
+Landroidx/compose/runtime/SnapshotMutableStateImpl;
+Landroidx/compose/runtime/SnapshotMutationPolicy;
+Landroidx/compose/runtime/SnapshotStateKt;
+Landroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;
+Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;
+Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;
+Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;
+Landroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;
+Landroidx/compose/runtime/SnapshotStateKt__SnapshotMutationPolicyKt;
+Landroidx/compose/runtime/SnapshotStateKt__SnapshotStateKt;
+Landroidx/compose/runtime/SnapshotThreadLocal;
+Landroidx/compose/runtime/Stack;
+Landroidx/compose/runtime/State;
+Landroidx/compose/runtime/StaticProvidableCompositionLocal;
+Landroidx/compose/runtime/StaticValueHolder;
+Landroidx/compose/runtime/StructuralEqualityPolicy;
+Landroidx/compose/runtime/Trace;
+Landroidx/compose/runtime/Updater;
+Landroidx/compose/runtime/collection/IdentityArrayIntMap;
+Landroidx/compose/runtime/collection/IdentityArrayMap;
+Landroidx/compose/runtime/collection/IdentityArraySet$iterator$1;
+Landroidx/compose/runtime/collection/IdentityArraySet;
+Landroidx/compose/runtime/collection/IdentityScopeMap;
+Landroidx/compose/runtime/collection/MutableVector$MutableVectorList;
+Landroidx/compose/runtime/collection/MutableVector$SubList;
+Landroidx/compose/runtime/collection/MutableVector$VectorListIterator;
+Landroidx/compose/runtime/collection/MutableVector;
+Landroidx/compose/runtime/collection/MutableVectorKt;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/ExtensionsKt;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableCollection;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableList$SubList;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableList;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/ImmutableSet;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList$Builder;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap$Builder;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentMap;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractListIterator;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList$removeAll$1;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/BufferIterator;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/PersistentVector;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/PersistentVectorBuilder;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector$Companion;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/UtilsKt;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/AbstractMapBuilderEntries;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/MapEntry;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap$Companion;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBaseIterator;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilder;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilderEntries;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilderKeys;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapBuilderValues;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntries;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapEntriesIterator;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapKeys;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMapValues;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$Companion;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode$ModificationResult;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeEntriesIterator;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeKt;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet$Companion;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSetIterator;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/CommonFunctionsKt;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/DeltaCounter;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/EndOfChain;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;
+Landroidx/compose/runtime/external/kotlinx/collections/immutable/internal/MutabilityOwnership;
+Landroidx/compose/runtime/internal/ComposableLambda;
+Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$1;
+Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$2;
+Landroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$3;
+Landroidx/compose/runtime/internal/ComposableLambdaImpl;
+Landroidx/compose/runtime/internal/ComposableLambdaKt;
+Landroidx/compose/runtime/internal/ThreadMap;
+Landroidx/compose/runtime/internal/ThreadMapKt;
+Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1;
+Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1;
+Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1;
+Landroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1;
+Landroidx/compose/runtime/saveable/RememberSaveableKt;
+Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry;
+Landroidx/compose/runtime/saveable/SaveableStateRegistry;
+Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3;
+Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl;
+Landroidx/compose/runtime/saveable/SaveableStateRegistryKt$LocalSaveableStateRegistry$1;
+Landroidx/compose/runtime/saveable/SaveableStateRegistryKt;
+Landroidx/compose/runtime/saveable/Saver;
+Landroidx/compose/runtime/saveable/SaverKt$AutoSaver$1;
+Landroidx/compose/runtime/saveable/SaverKt$AutoSaver$2;
+Landroidx/compose/runtime/saveable/SaverKt$Saver$1;
+Landroidx/compose/runtime/saveable/SaverKt;
+Landroidx/compose/runtime/saveable/SaverScope;
+Landroidx/compose/runtime/snapshots/GlobalSnapshot$1$1$1;
+Landroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedMutableSnapshot$1;
+Landroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;
+Landroidx/compose/runtime/snapshots/GlobalSnapshot;
+Landroidx/compose/runtime/snapshots/ListUtilsKt;
+Landroidx/compose/runtime/snapshots/MutableSnapshot;
+Landroidx/compose/runtime/snapshots/NestedMutableSnapshot;
+Landroidx/compose/runtime/snapshots/NestedReadonlySnapshot;
+Landroidx/compose/runtime/snapshots/ObserverHandle;
+Landroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2;
+Landroidx/compose/runtime/snapshots/Snapshot$Companion$registerGlobalWriteObserver$2;
+Landroidx/compose/runtime/snapshots/Snapshot$Companion;
+Landroidx/compose/runtime/snapshots/Snapshot;
+Landroidx/compose/runtime/snapshots/SnapshotApplyResult$Failure;
+Landroidx/compose/runtime/snapshots/SnapshotApplyResult$Success;
+Landroidx/compose/runtime/snapshots/SnapshotApplyResult;
+Landroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;
+Landroidx/compose/runtime/snapshots/SnapshotIdSet$Companion;
+Landroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;
+Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+Landroidx/compose/runtime/snapshots/SnapshotIdSetKt;
+Landroidx/compose/runtime/snapshots/SnapshotKt$advanceGlobalSnapshot$2;
+Landroidx/compose/runtime/snapshots/SnapshotKt$emptyLambda$1;
+Landroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;
+Landroidx/compose/runtime/snapshots/SnapshotKt$mergedWriteObserver$1;
+Landroidx/compose/runtime/snapshots/SnapshotKt$takeNewSnapshot$1;
+Landroidx/compose/runtime/snapshots/SnapshotKt;
+Landroidx/compose/runtime/snapshots/SnapshotMutableState;
+Landroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;
+Landroidx/compose/runtime/snapshots/SnapshotStateList$addAll$1;
+Landroidx/compose/runtime/snapshots/SnapshotStateList$retainAll$1;
+Landroidx/compose/runtime/snapshots/SnapshotStateList;
+Landroidx/compose/runtime/snapshots/SnapshotStateListKt;
+Landroidx/compose/runtime/snapshots/SnapshotStateMap;
+Landroidx/compose/runtime/snapshots/SnapshotStateMapKt;
+Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateEnterObserver$1;
+Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateExitObserver$1;
+Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;
+Landroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1$2;
+Landroidx/compose/runtime/snapshots/SnapshotStateObserver$applyObserver$1;
+Landroidx/compose/runtime/snapshots/SnapshotStateObserver$observeReads$1$1;
+Landroidx/compose/runtime/snapshots/SnapshotStateObserver$readObserver$1;
+Landroidx/compose/runtime/snapshots/SnapshotStateObserver;
+Landroidx/compose/runtime/snapshots/StateListIterator;
+Landroidx/compose/runtime/snapshots/StateObject;
+Landroidx/compose/runtime/snapshots/StateRecord;
+Landroidx/compose/runtime/snapshots/SubList;
+Landroidx/compose/runtime/snapshots/TransparentObserverMutableSnapshot;
+Landroidx/compose/runtime/snapshots/TransparentObserverSnapshot;
+Landroidx/compose/runtime/tooling/CompositionData;
+Landroidx/compose/runtime/tooling/InspectionTablesKt$LocalInspectionTables$1;
+Landroidx/compose/runtime/tooling/InspectionTablesKt;
+Landroidx/compose/ui/ActualKt;
+Landroidx/compose/ui/Alignment$Companion;
+Landroidx/compose/ui/Alignment$Horizontal;
+Landroidx/compose/ui/Alignment$Vertical;
+Landroidx/compose/ui/Alignment;
+Landroidx/compose/ui/BiasAlignment$Horizontal;
+Landroidx/compose/ui/BiasAlignment$Vertical;
+Landroidx/compose/ui/BiasAlignment;
+Landroidx/compose/ui/CombinedModifier$toString$1;
+Landroidx/compose/ui/CombinedModifier;
+Landroidx/compose/ui/ComposedModifier;
+Landroidx/compose/ui/ComposedModifierKt$WrapFocusEventModifier$1$1$1;
+Landroidx/compose/ui/ComposedModifierKt$WrapFocusEventModifier$1$modifier$1$1;
+Landroidx/compose/ui/ComposedModifierKt$WrapFocusEventModifier$1;
+Landroidx/compose/ui/ComposedModifierKt$WrapFocusRequesterModifier$1;
+Landroidx/compose/ui/ComposedModifierKt$materialize$1;
+Landroidx/compose/ui/ComposedModifierKt$materialize$result$1;
+Landroidx/compose/ui/ComposedModifierKt;
+Landroidx/compose/ui/Modifier$Companion;
+Landroidx/compose/ui/Modifier$Element;
+Landroidx/compose/ui/Modifier$Node;
+Landroidx/compose/ui/Modifier;
+Landroidx/compose/ui/MotionDurationScale$DefaultImpls;
+Landroidx/compose/ui/MotionDurationScale$Key;
+Landroidx/compose/ui/MotionDurationScale;
+Landroidx/compose/ui/R$id;
+Landroidx/compose/ui/R$string;
+Landroidx/compose/ui/TempListUtilsKt;
+Landroidx/compose/ui/autofill/AndroidAutofill;
+Landroidx/compose/ui/autofill/AndroidAutofill_androidKt;
+Landroidx/compose/ui/autofill/Autofill;
+Landroidx/compose/ui/autofill/AutofillCallback;
+Landroidx/compose/ui/autofill/AutofillTree;
+Landroidx/compose/ui/draw/BuildDrawCacheParams;
+Landroidx/compose/ui/draw/ClipKt;
+Landroidx/compose/ui/draw/DrawBackgroundModifier;
+Landroidx/compose/ui/draw/DrawCacheModifier;
+Landroidx/compose/ui/draw/DrawModifier;
+Landroidx/compose/ui/draw/DrawModifierKt$drawBehind$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/draw/DrawModifierKt$drawWithCache$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/draw/DrawModifierKt$drawWithCache$2;
+Landroidx/compose/ui/draw/DrawModifierKt;
+Landroidx/compose/ui/draw/PainterModifier$measure$1;
+Landroidx/compose/ui/draw/PainterModifier;
+Landroidx/compose/ui/draw/PainterModifierKt$paint$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/draw/PainterModifierKt;
+Landroidx/compose/ui/draw/ShadowKt$shadow$2$1;
+Landroidx/compose/ui/draw/ShadowKt$shadow-s4CzXII$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/draw/ShadowKt;
+Landroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$2$1$1;
+Landroidx/compose/ui/focus/FocusChangedModifierKt$onFocusChanged$2;
+Landroidx/compose/ui/focus/FocusChangedModifierKt;
+Landroidx/compose/ui/focus/FocusDirection$Companion;
+Landroidx/compose/ui/focus/FocusDirection;
+Landroidx/compose/ui/focus/FocusEventModifier;
+Landroidx/compose/ui/focus/FocusEventModifierKt$ModifierLocalFocusEvent$1;
+Landroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$2$1$1;
+Landroidx/compose/ui/focus/FocusEventModifierKt$onFocusEvent$2;
+Landroidx/compose/ui/focus/FocusEventModifierKt;
+Landroidx/compose/ui/focus/FocusEventModifierLocal$WhenMappings;
+Landroidx/compose/ui/focus/FocusEventModifierLocal;
+Landroidx/compose/ui/focus/FocusManager;
+Landroidx/compose/ui/focus/FocusManagerImpl$WhenMappings;
+Landroidx/compose/ui/focus/FocusManagerImpl$moveFocus$foundNextItem$1;
+Landroidx/compose/ui/focus/FocusManagerImpl;
+Landroidx/compose/ui/focus/FocusManagerKt$WhenMappings;
+Landroidx/compose/ui/focus/FocusManagerKt;
+Landroidx/compose/ui/focus/FocusModifier$Companion$RefreshFocusProperties$1;
+Landroidx/compose/ui/focus/FocusModifier$Companion;
+Landroidx/compose/ui/focus/FocusModifier$WhenMappings;
+Landroidx/compose/ui/focus/FocusModifier;
+Landroidx/compose/ui/focus/FocusModifierKt$ModifierLocalParentFocusModifier$1;
+Landroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$1;
+Landroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$2;
+Landroidx/compose/ui/focus/FocusModifierKt$ResetFocusModifierLocals$3;
+Landroidx/compose/ui/focus/FocusModifierKt$focusTarget$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/focus/FocusModifierKt$focusTarget$2$1$1;
+Landroidx/compose/ui/focus/FocusModifierKt$focusTarget$2;
+Landroidx/compose/ui/focus/FocusModifierKt;
+Landroidx/compose/ui/focus/FocusOrderModifierKt;
+Landroidx/compose/ui/focus/FocusProperties;
+Landroidx/compose/ui/focus/FocusPropertiesImpl$enter$1;
+Landroidx/compose/ui/focus/FocusPropertiesImpl$exit$1;
+Landroidx/compose/ui/focus/FocusPropertiesImpl;
+Landroidx/compose/ui/focus/FocusPropertiesKt$ModifierLocalFocusProperties$1;
+Landroidx/compose/ui/focus/FocusPropertiesKt$clear$1;
+Landroidx/compose/ui/focus/FocusPropertiesKt$clear$2;
+Landroidx/compose/ui/focus/FocusPropertiesKt$focusProperties$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/focus/FocusPropertiesKt$refreshFocusProperties$1;
+Landroidx/compose/ui/focus/FocusPropertiesKt;
+Landroidx/compose/ui/focus/FocusPropertiesModifier;
+Landroidx/compose/ui/focus/FocusRequester$Companion;
+Landroidx/compose/ui/focus/FocusRequester$requestFocus$2;
+Landroidx/compose/ui/focus/FocusRequester;
+Landroidx/compose/ui/focus/FocusRequesterModifier;
+Landroidx/compose/ui/focus/FocusRequesterModifierKt$ModifierLocalFocusRequester$1;
+Landroidx/compose/ui/focus/FocusRequesterModifierKt$focusRequester$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/focus/FocusRequesterModifierKt$focusRequester$2;
+Landroidx/compose/ui/focus/FocusRequesterModifierKt;
+Landroidx/compose/ui/focus/FocusRequesterModifierLocal;
+Landroidx/compose/ui/focus/FocusState;
+Landroidx/compose/ui/focus/FocusStateImpl$WhenMappings;
+Landroidx/compose/ui/focus/FocusStateImpl;
+Landroidx/compose/ui/focus/FocusTransactionsKt$WhenMappings;
+Landroidx/compose/ui/focus/FocusTransactionsKt$requestFocus$1;
+Landroidx/compose/ui/focus/FocusTransactionsKt;
+Landroidx/compose/ui/focus/FocusTraversalKt;
+Landroidx/compose/ui/focus/TwoDimensionalFocusSearchKt;
+Landroidx/compose/ui/geometry/CornerRadius$Companion;
+Landroidx/compose/ui/geometry/CornerRadius;
+Landroidx/compose/ui/geometry/CornerRadiusKt;
+Landroidx/compose/ui/geometry/GeometryUtilsKt;
+Landroidx/compose/ui/geometry/MutableRect;
+Landroidx/compose/ui/geometry/MutableRectKt;
+Landroidx/compose/ui/geometry/Offset$Companion;
+Landroidx/compose/ui/geometry/Offset;
+Landroidx/compose/ui/geometry/OffsetKt;
+Landroidx/compose/ui/geometry/Rect$Companion;
+Landroidx/compose/ui/geometry/Rect;
+Landroidx/compose/ui/geometry/RectKt;
+Landroidx/compose/ui/geometry/RoundRect$Companion;
+Landroidx/compose/ui/geometry/RoundRect;
+Landroidx/compose/ui/geometry/RoundRectKt;
+Landroidx/compose/ui/geometry/Size$Companion;
+Landroidx/compose/ui/geometry/Size;
+Landroidx/compose/ui/geometry/SizeKt;
+Landroidx/compose/ui/graphics/AndroidBlendMode_androidKt;
+Landroidx/compose/ui/graphics/AndroidCanvas;
+Landroidx/compose/ui/graphics/AndroidCanvas_androidKt;
+Landroidx/compose/ui/graphics/AndroidColorFilter_androidKt;
+Landroidx/compose/ui/graphics/AndroidImageBitmap;
+Landroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;
+Landroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;
+Landroidx/compose/ui/graphics/AndroidPaint;
+Landroidx/compose/ui/graphics/AndroidPaint_androidKt$WhenMappings;
+Landroidx/compose/ui/graphics/AndroidPaint_androidKt;
+Landroidx/compose/ui/graphics/AndroidPath;
+Landroidx/compose/ui/graphics/AndroidPath_androidKt;
+Landroidx/compose/ui/graphics/Api26Bitmap;
+Landroidx/compose/ui/graphics/BlendMode$Companion;
+Landroidx/compose/ui/graphics/BlendMode;
+Landroidx/compose/ui/graphics/BlendModeColorFilterHelper;
+Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier$measure$1;
+Landroidx/compose/ui/graphics/BlockGraphicsLayerModifier;
+Landroidx/compose/ui/graphics/Brush;
+Landroidx/compose/ui/graphics/Canvas;
+Landroidx/compose/ui/graphics/CanvasHolder;
+Landroidx/compose/ui/graphics/CanvasUtils;
+Landroidx/compose/ui/graphics/CanvasZHelper;
+Landroidx/compose/ui/graphics/ClipOp$Companion;
+Landroidx/compose/ui/graphics/ClipOp;
+Landroidx/compose/ui/graphics/Color$Companion;
+Landroidx/compose/ui/graphics/Color;
+Landroidx/compose/ui/graphics/ColorFilter$Companion;
+Landroidx/compose/ui/graphics/ColorFilter;
+Landroidx/compose/ui/graphics/ColorKt;
+Landroidx/compose/ui/graphics/CompositingStrategy$Companion;
+Landroidx/compose/ui/graphics/CompositingStrategy;
+Landroidx/compose/ui/graphics/FilterQuality$Companion;
+Landroidx/compose/ui/graphics/FilterQuality;
+Landroidx/compose/ui/graphics/Float16$Companion;
+Landroidx/compose/ui/graphics/Float16;
+Landroidx/compose/ui/graphics/GraphicsLayerModifierKt$graphicsLayer$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/graphics/GraphicsLayerModifierKt$graphicsLayer-Ap8cVGQ$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/graphics/GraphicsLayerModifierKt;
+Landroidx/compose/ui/graphics/GraphicsLayerScope;
+Landroidx/compose/ui/graphics/GraphicsLayerScopeKt;
+Landroidx/compose/ui/graphics/ImageBitmap;
+Landroidx/compose/ui/graphics/ImageBitmapConfig$Companion;
+Landroidx/compose/ui/graphics/ImageBitmapConfig;
+Landroidx/compose/ui/graphics/Matrix$Companion;
+Landroidx/compose/ui/graphics/Matrix;
+Landroidx/compose/ui/graphics/MatrixKt;
+Landroidx/compose/ui/graphics/Outline$Rectangle;
+Landroidx/compose/ui/graphics/Outline$Rounded;
+Landroidx/compose/ui/graphics/Outline;
+Landroidx/compose/ui/graphics/OutlineKt;
+Landroidx/compose/ui/graphics/Paint;
+Landroidx/compose/ui/graphics/PaintingStyle$Companion;
+Landroidx/compose/ui/graphics/PaintingStyle;
+Landroidx/compose/ui/graphics/Path;
+Landroidx/compose/ui/graphics/PathEffect;
+Landroidx/compose/ui/graphics/PathFillType$Companion;
+Landroidx/compose/ui/graphics/PathFillType;
+Landroidx/compose/ui/graphics/PathOperation$Companion;
+Landroidx/compose/ui/graphics/PathOperation;
+Landroidx/compose/ui/graphics/RectHelper_androidKt;
+Landroidx/compose/ui/graphics/RectangleShapeKt$RectangleShape$1;
+Landroidx/compose/ui/graphics/RectangleShapeKt;
+Landroidx/compose/ui/graphics/RenderEffect;
+Landroidx/compose/ui/graphics/ReusableGraphicsLayerScope;
+Landroidx/compose/ui/graphics/ShaderBrush;
+Landroidx/compose/ui/graphics/Shadow$Companion;
+Landroidx/compose/ui/graphics/Shadow;
+Landroidx/compose/ui/graphics/Shape;
+Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$layerBlock$1;
+Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier$measure$1;
+Landroidx/compose/ui/graphics/SimpleGraphicsLayerModifier;
+Landroidx/compose/ui/graphics/SolidColor;
+Landroidx/compose/ui/graphics/StrokeCap$Companion;
+Landroidx/compose/ui/graphics/StrokeCap;
+Landroidx/compose/ui/graphics/StrokeJoin$Companion;
+Landroidx/compose/ui/graphics/StrokeJoin;
+Landroidx/compose/ui/graphics/TransformOrigin$Companion;
+Landroidx/compose/ui/graphics/TransformOrigin;
+Landroidx/compose/ui/graphics/TransformOriginKt;
+Landroidx/compose/ui/graphics/WrapperVerificationHelperMethods;
+Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Bradford$1;
+Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$Ciecat02$1;
+Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion$VonKries$1;
+Landroidx/compose/ui/graphics/colorspace/Adaptation$Companion;
+Landroidx/compose/ui/graphics/colorspace/Adaptation;
+Landroidx/compose/ui/graphics/colorspace/ColorModel$Companion;
+Landroidx/compose/ui/graphics/colorspace/ColorModel;
+Landroidx/compose/ui/graphics/colorspace/ColorSpace$Companion;
+Landroidx/compose/ui/graphics/colorspace/ColorSpace;
+Landroidx/compose/ui/graphics/colorspace/ColorSpaceKt;
+Landroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$1;
+Landroidx/compose/ui/graphics/colorspace/ColorSpaces$ExtendedSrgb$2;
+Landroidx/compose/ui/graphics/colorspace/ColorSpaces;
+Landroidx/compose/ui/graphics/colorspace/Connector$Companion;
+Landroidx/compose/ui/graphics/colorspace/Connector$RgbConnector;
+Landroidx/compose/ui/graphics/colorspace/Connector;
+Landroidx/compose/ui/graphics/colorspace/Illuminant;
+Landroidx/compose/ui/graphics/colorspace/Lab$Companion;
+Landroidx/compose/ui/graphics/colorspace/Lab;
+Landroidx/compose/ui/graphics/colorspace/Oklab$Companion;
+Landroidx/compose/ui/graphics/colorspace/Oklab;
+Landroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;
+Landroidx/compose/ui/graphics/colorspace/RenderIntent;
+Landroidx/compose/ui/graphics/colorspace/Rgb$1;
+Landroidx/compose/ui/graphics/colorspace/Rgb$2;
+Landroidx/compose/ui/graphics/colorspace/Rgb$3;
+Landroidx/compose/ui/graphics/colorspace/Rgb$4;
+Landroidx/compose/ui/graphics/colorspace/Rgb$5;
+Landroidx/compose/ui/graphics/colorspace/Rgb$6;
+Landroidx/compose/ui/graphics/colorspace/Rgb$Companion$DoubleIdentity$1;
+Landroidx/compose/ui/graphics/colorspace/Rgb$Companion;
+Landroidx/compose/ui/graphics/colorspace/Rgb$eotf$1;
+Landroidx/compose/ui/graphics/colorspace/Rgb$oetf$1;
+Landroidx/compose/ui/graphics/colorspace/Rgb;
+Landroidx/compose/ui/graphics/colorspace/TransferParameters;
+Landroidx/compose/ui/graphics/colorspace/WhitePoint;
+Landroidx/compose/ui/graphics/colorspace/Xyz;
+Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$DrawParams;
+Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope$drawContext$1;
+Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;
+Landroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;
+Landroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt;
+Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;
+Landroidx/compose/ui/graphics/drawscope/DrawContext;
+Landroidx/compose/ui/graphics/drawscope/DrawScope$Companion;
+Landroidx/compose/ui/graphics/drawscope/DrawScope;
+Landroidx/compose/ui/graphics/drawscope/DrawStyle;
+Landroidx/compose/ui/graphics/drawscope/DrawTransform;
+Landroidx/compose/ui/graphics/drawscope/EmptyCanvas;
+Landroidx/compose/ui/graphics/drawscope/Fill;
+Landroidx/compose/ui/graphics/drawscope/Stroke;
+Landroidx/compose/ui/graphics/painter/BitmapPainter;
+Landroidx/compose/ui/graphics/painter/Painter$drawLambda$1;
+Landroidx/compose/ui/graphics/painter/Painter;
+Landroidx/compose/ui/graphics/vector/ImageVector;
+Landroidx/compose/ui/graphics/vector/VectorPainter;
+Landroidx/compose/ui/graphics/vector/VectorPainterKt;
+Landroidx/compose/ui/hapticfeedback/HapticFeedback;
+Landroidx/compose/ui/hapticfeedback/PlatformHapticFeedback;
+Landroidx/compose/ui/input/InputMode$Companion;
+Landroidx/compose/ui/input/InputMode;
+Landroidx/compose/ui/input/InputModeManager;
+Landroidx/compose/ui/input/InputModeManagerImpl;
+Landroidx/compose/ui/input/ScrollContainerInfo;
+Landroidx/compose/ui/input/ScrollContainerInfoKt$ModifierLocalScrollContainerInfo$1;
+Landroidx/compose/ui/input/ScrollContainerInfoKt$consumeScrollContainerInfo$1;
+Landroidx/compose/ui/input/ScrollContainerInfoKt$provideScrollContainerInfo$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/input/ScrollContainerInfoKt$provideScrollContainerInfo$2;
+Landroidx/compose/ui/input/ScrollContainerInfoKt;
+Landroidx/compose/ui/input/focus/FocusAwareInputModifier;
+Landroidx/compose/ui/input/focus/FocusDirectedInputEvent;
+Landroidx/compose/ui/input/key/Key$Companion;
+Landroidx/compose/ui/input/key/Key;
+Landroidx/compose/ui/input/key/KeyEvent;
+Landroidx/compose/ui/input/key/KeyEventType$Companion;
+Landroidx/compose/ui/input/key/KeyEventType;
+Landroidx/compose/ui/input/key/KeyEvent_androidKt;
+Landroidx/compose/ui/input/key/KeyInputModifier;
+Landroidx/compose/ui/input/key/KeyInputModifierKt$ModifierLocalKeyInput$1;
+Landroidx/compose/ui/input/key/KeyInputModifierKt$onKeyEvent$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/input/key/KeyInputModifierKt;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$calculateNestedScrollScope$1;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$dispatchPostFling$1;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$dispatchPreFling$1;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt$nestedScroll$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt$nestedScroll$2;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierKt;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$1;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$onPostFling$1;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$onPreFling$1;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocalKt$ModifierLocalNestedScroll$1;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocalKt;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollSource$Companion;
+Landroidx/compose/ui/input/nestedscroll/NestedScrollSource;
+Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;
+Landroidx/compose/ui/input/pointer/HistoricalChange;
+Landroidx/compose/ui/input/pointer/HitPathTracker;
+Landroidx/compose/ui/input/pointer/InternalPointerEvent;
+Landroidx/compose/ui/input/pointer/MotionEventAdapter;
+Landroidx/compose/ui/input/pointer/MotionEventHelper;
+Landroidx/compose/ui/input/pointer/Node;
+Landroidx/compose/ui/input/pointer/NodeParent;
+Landroidx/compose/ui/input/pointer/PointerButtons;
+Landroidx/compose/ui/input/pointer/PointerEvent;
+Landroidx/compose/ui/input/pointer/PointerEventKt;
+Landroidx/compose/ui/input/pointer/PointerEventPass;
+Landroidx/compose/ui/input/pointer/PointerEventTimeoutCancellationException;
+Landroidx/compose/ui/input/pointer/PointerEventType$Companion;
+Landroidx/compose/ui/input/pointer/PointerEventType;
+Landroidx/compose/ui/input/pointer/PointerEvent_androidKt;
+Landroidx/compose/ui/input/pointer/PointerIcon;
+Landroidx/compose/ui/input/pointer/PointerIconKt;
+Landroidx/compose/ui/input/pointer/PointerIconService;
+Landroidx/compose/ui/input/pointer/PointerId;
+Landroidx/compose/ui/input/pointer/PointerInputChange;
+Landroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;
+Landroidx/compose/ui/input/pointer/PointerInputChangeEventProducer;
+Landroidx/compose/ui/input/pointer/PointerInputEvent;
+Landroidx/compose/ui/input/pointer/PointerInputEventData;
+Landroidx/compose/ui/input/pointer/PointerInputEventProcessor;
+Landroidx/compose/ui/input/pointer/PointerInputEventProcessorKt;
+Landroidx/compose/ui/input/pointer/PointerInputFilter;
+Landroidx/compose/ui/input/pointer/PointerInputModifier;
+Landroidx/compose/ui/input/pointer/PointerInputScope;
+Landroidx/compose/ui/input/pointer/PointerKeyboardModifiers;
+Landroidx/compose/ui/input/pointer/PointerType$Companion;
+Landroidx/compose/ui/input/pointer/PointerType;
+Landroidx/compose/ui/input/pointer/PositionCalculator;
+Landroidx/compose/ui/input/pointer/ProcessResult;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine$withTimeout$1;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine$withTimeout$job$1;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine$withTimeoutOrNull$1;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$WhenMappings;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$awaitPointerEventScope$2$2;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$$inlined$debugInspectorInfo$2;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$$inlined$debugInspectorInfo$3;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$2$2$1;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$2;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$4$2$1;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$4;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$6$2$1;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt$pointerInput$6;
+Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilterKt;
+Landroidx/compose/ui/input/pointer/util/PointAtTime;
+Landroidx/compose/ui/input/pointer/util/PolynomialFit;
+Landroidx/compose/ui/input/pointer/util/VelocityEstimate$Companion;
+Landroidx/compose/ui/input/pointer/util/VelocityEstimate;
+Landroidx/compose/ui/input/pointer/util/VelocityTracker;
+Landroidx/compose/ui/input/pointer/util/VelocityTrackerKt;
+Landroidx/compose/ui/input/rotary/RotaryInputModifierKt$ModifierLocalRotaryScrollParent$1;
+Landroidx/compose/ui/input/rotary/RotaryInputModifierKt$focusAwareCallback$1;
+Landroidx/compose/ui/input/rotary/RotaryInputModifierKt$onRotaryScrollEvent$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/input/rotary/RotaryInputModifierKt;
+Landroidx/compose/ui/input/rotary/RotaryScrollEvent;
+Landroidx/compose/ui/layout/AlignmentLine$Companion;
+Landroidx/compose/ui/layout/AlignmentLine;
+Landroidx/compose/ui/layout/AlignmentLineKt$FirstBaseline$1;
+Landroidx/compose/ui/layout/AlignmentLineKt$LastBaseline$1;
+Landroidx/compose/ui/layout/AlignmentLineKt;
+Landroidx/compose/ui/layout/BeyondBoundsLayout;
+Landroidx/compose/ui/layout/BeyondBoundsLayoutKt$ModifierLocalBeyondBoundsLayout$1;
+Landroidx/compose/ui/layout/BeyondBoundsLayoutKt;
+Landroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt$lambda-1$1;
+Landroidx/compose/ui/layout/ComposableSingletons$SubcomposeLayoutKt;
+Landroidx/compose/ui/layout/ContentScale$Companion$Crop$1;
+Landroidx/compose/ui/layout/ContentScale$Companion$FillBounds$1;
+Landroidx/compose/ui/layout/ContentScale$Companion$FillHeight$1;
+Landroidx/compose/ui/layout/ContentScale$Companion$FillWidth$1;
+Landroidx/compose/ui/layout/ContentScale$Companion$Fit$1;
+Landroidx/compose/ui/layout/ContentScale$Companion$Inside$1;
+Landroidx/compose/ui/layout/ContentScale$Companion;
+Landroidx/compose/ui/layout/ContentScale;
+Landroidx/compose/ui/layout/ContentScaleKt;
+Landroidx/compose/ui/layout/FixedScale;
+Landroidx/compose/ui/layout/HorizontalAlignmentLine;
+Landroidx/compose/ui/layout/IntrinsicMeasurable;
+Landroidx/compose/ui/layout/IntrinsicMeasureScope;
+Landroidx/compose/ui/layout/LayoutCoordinates;
+Landroidx/compose/ui/layout/LayoutCoordinatesKt;
+Landroidx/compose/ui/layout/LayoutInfo;
+Landroidx/compose/ui/layout/LayoutKt$materializerOf$1;
+Landroidx/compose/ui/layout/LayoutKt;
+Landroidx/compose/ui/layout/LayoutModifier;
+Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;
+Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;
+Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1$measure$1;
+Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$createMeasurePolicy$1;
+Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$precompose$1;
+Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState$subcompose$2$1$1;
+Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;
+Landroidx/compose/ui/layout/LookaheadLayoutCoordinates;
+Landroidx/compose/ui/layout/LookaheadLayoutCoordinatesImpl;
+Landroidx/compose/ui/layout/LookaheadScope;
+Landroidx/compose/ui/layout/Measurable;
+Landroidx/compose/ui/layout/MeasurePolicy;
+Landroidx/compose/ui/layout/MeasureResult;
+Landroidx/compose/ui/layout/MeasureScope$layout$1;
+Landroidx/compose/ui/layout/MeasureScope;
+Landroidx/compose/ui/layout/Measured;
+Landroidx/compose/ui/layout/NoOpSubcomposeSlotReusePolicy;
+Landroidx/compose/ui/layout/OnGloballyPositionedModifier;
+Landroidx/compose/ui/layout/OnGloballyPositionedModifierImpl;
+Landroidx/compose/ui/layout/OnGloballyPositionedModifierKt$onGloballyPositioned$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/layout/OnGloballyPositionedModifierKt;
+Landroidx/compose/ui/layout/OnPlacedModifier;
+Landroidx/compose/ui/layout/OnRemeasuredModifier;
+Landroidx/compose/ui/layout/ParentDataModifier;
+Landroidx/compose/ui/layout/Placeable$PlacementScope$Companion;
+Landroidx/compose/ui/layout/Placeable$PlacementScope;
+Landroidx/compose/ui/layout/Placeable;
+Landroidx/compose/ui/layout/PlaceableKt$DefaultLayerBlock$1;
+Landroidx/compose/ui/layout/PlaceableKt;
+Landroidx/compose/ui/layout/Remeasurement;
+Landroidx/compose/ui/layout/RemeasurementModifier;
+Landroidx/compose/ui/layout/RootMeasurePolicy$measure$1;
+Landroidx/compose/ui/layout/RootMeasurePolicy$measure$2;
+Landroidx/compose/ui/layout/RootMeasurePolicy$measure$4;
+Landroidx/compose/ui/layout/RootMeasurePolicy;
+Landroidx/compose/ui/layout/ScaleFactor$Companion;
+Landroidx/compose/ui/layout/ScaleFactor;
+Landroidx/compose/ui/layout/ScaleFactorKt;
+Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$$inlined$ComposeNode$1;
+Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$2;
+Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$4;
+Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$5$1$invoke$$inlined$onDispose$1;
+Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$5$1;
+Landroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$6;
+Landroidx/compose/ui/layout/SubcomposeLayoutKt;
+Landroidx/compose/ui/layout/SubcomposeLayoutState$PrecomposedSlotHandle;
+Landroidx/compose/ui/layout/SubcomposeLayoutState$setCompositionContext$1;
+Landroidx/compose/ui/layout/SubcomposeLayoutState$setMeasurePolicy$1;
+Landroidx/compose/ui/layout/SubcomposeLayoutState$setRoot$1;
+Landroidx/compose/ui/layout/SubcomposeLayoutState;
+Landroidx/compose/ui/layout/SubcomposeMeasureScope;
+Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;
+Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy;
+Landroidx/compose/ui/modifier/BackwardsCompatLocalMap;
+Landroidx/compose/ui/modifier/EmptyMap;
+Landroidx/compose/ui/modifier/ModifierLocal;
+Landroidx/compose/ui/modifier/ModifierLocalConsumer;
+Landroidx/compose/ui/modifier/ModifierLocalConsumerImpl;
+Landroidx/compose/ui/modifier/ModifierLocalConsumerKt$modifierLocalConsumer$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/modifier/ModifierLocalConsumerKt;
+Landroidx/compose/ui/modifier/ModifierLocalKt;
+Landroidx/compose/ui/modifier/ModifierLocalManager$invalidate$1;
+Landroidx/compose/ui/modifier/ModifierLocalManager;
+Landroidx/compose/ui/modifier/ModifierLocalMap;
+Landroidx/compose/ui/modifier/ModifierLocalNode;
+Landroidx/compose/ui/modifier/ModifierLocalNodeKt;
+Landroidx/compose/ui/modifier/ModifierLocalProvider;
+Landroidx/compose/ui/modifier/ModifierLocalReadScope;
+Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+Landroidx/compose/ui/node/AlignmentLines$recalculate$1;
+Landroidx/compose/ui/node/AlignmentLines;
+Landroidx/compose/ui/node/AlignmentLinesOwner;
+Landroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$1;
+Landroidx/compose/ui/node/BackwardsCompatNode$initializeModifier$4;
+Landroidx/compose/ui/node/BackwardsCompatNode$updateDrawCache$1;
+Landroidx/compose/ui/node/BackwardsCompatNode$updateFocusOrderModifierLocalConsumer$1;
+Landroidx/compose/ui/node/BackwardsCompatNode$updateModifierLocalConsumer$1;
+Landroidx/compose/ui/node/BackwardsCompatNode;
+Landroidx/compose/ui/node/BackwardsCompatNodeKt$DetachedModifierLocalReadScope$1;
+Landroidx/compose/ui/node/BackwardsCompatNodeKt$onDrawCacheReadsChanged$1;
+Landroidx/compose/ui/node/BackwardsCompatNodeKt$updateFocusOrderModifierLocalConsumer$1;
+Landroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;
+Landroidx/compose/ui/node/BackwardsCompatNodeKt;
+Landroidx/compose/ui/node/CenteredArray;
+Landroidx/compose/ui/node/ComposeUiNode$Companion$SetDensity$1;
+Landroidx/compose/ui/node/ComposeUiNode$Companion$SetLayoutDirection$1;
+Landroidx/compose/ui/node/ComposeUiNode$Companion$SetMeasurePolicy$1;
+Landroidx/compose/ui/node/ComposeUiNode$Companion$SetModifier$1;
+Landroidx/compose/ui/node/ComposeUiNode$Companion$SetViewConfiguration$1;
+Landroidx/compose/ui/node/ComposeUiNode$Companion$VirtualConstructor$1;
+Landroidx/compose/ui/node/ComposeUiNode$Companion;
+Landroidx/compose/ui/node/ComposeUiNode;
+Landroidx/compose/ui/node/DelegatableNode;
+Landroidx/compose/ui/node/DelegatableNodeKt;
+Landroidx/compose/ui/node/DepthSortedSet$DepthComparator$1;
+Landroidx/compose/ui/node/DepthSortedSet$mapOfOriginalDepth$2;
+Landroidx/compose/ui/node/DepthSortedSet;
+Landroidx/compose/ui/node/DiffCallback;
+Landroidx/compose/ui/node/DistanceAndInLayer;
+Landroidx/compose/ui/node/DrawModifierNode;
+Landroidx/compose/ui/node/DrawModifierNodeKt;
+Landroidx/compose/ui/node/GlobalPositionAwareModifierNode;
+Landroidx/compose/ui/node/HitTestResult$HitTestResultIterator;
+Landroidx/compose/ui/node/HitTestResult$SubList;
+Landroidx/compose/ui/node/HitTestResult;
+Landroidx/compose/ui/node/HitTestResultKt;
+Landroidx/compose/ui/node/InnerNodeCoordinator$Companion;
+Landroidx/compose/ui/node/InnerNodeCoordinator$LookaheadDelegateImpl;
+Landroidx/compose/ui/node/InnerNodeCoordinator$tail$1;
+Landroidx/compose/ui/node/InnerNodeCoordinator;
+Landroidx/compose/ui/node/IntStack;
+Landroidx/compose/ui/node/IntermediateLayoutModifierNode;
+Landroidx/compose/ui/node/IntrinsicsPolicy$Companion;
+Landroidx/compose/ui/node/IntrinsicsPolicy;
+Landroidx/compose/ui/node/LayerPositionalProperties;
+Landroidx/compose/ui/node/LayoutAwareModifierNode;
+Landroidx/compose/ui/node/LayoutModifierNode;
+Landroidx/compose/ui/node/LayoutModifierNodeCoordinator$Companion;
+Landroidx/compose/ui/node/LayoutModifierNodeCoordinator$LookaheadDelegateForIntermediateLayoutModifier;
+Landroidx/compose/ui/node/LayoutModifierNodeCoordinator$LookaheadDelegateForLayoutModifierNode;
+Landroidx/compose/ui/node/LayoutModifierNodeCoordinator;
+Landroidx/compose/ui/node/LayoutModifierNodeCoordinatorKt;
+Landroidx/compose/ui/node/LayoutModifierNodeKt;
+Landroidx/compose/ui/node/LayoutNode$$ExternalSyntheticLambda0;
+Landroidx/compose/ui/node/LayoutNode$Companion$Constructor$1;
+Landroidx/compose/ui/node/LayoutNode$Companion$DummyViewConfiguration$1;
+Landroidx/compose/ui/node/LayoutNode$Companion$ErrorMeasurePolicy$1;
+Landroidx/compose/ui/node/LayoutNode$Companion;
+Landroidx/compose/ui/node/LayoutNode$LayoutState;
+Landroidx/compose/ui/node/LayoutNode$NoIntrinsicsMeasurePolicy;
+Landroidx/compose/ui/node/LayoutNode$UsageByParent;
+Landroidx/compose/ui/node/LayoutNode$WhenMappings;
+Landroidx/compose/ui/node/LayoutNode$_foldedChildren$1;
+Landroidx/compose/ui/node/LayoutNode;
+Landroidx/compose/ui/node/LayoutNodeAlignmentLines;
+Landroidx/compose/ui/node/LayoutNodeDrawScope;
+Landroidx/compose/ui/node/LayoutNodeDrawScopeKt;
+Landroidx/compose/ui/node/LayoutNodeKt;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$LookaheadPassDelegate;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$WhenMappings;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$childMeasurables$1;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$1;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1$2;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$layoutChildren$1$1;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$placeOuterCoordinator$1;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate$remeasure$1;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$performLookaheadMeasure$1;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate$performMeasure$2;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegate;
+Landroidx/compose/ui/node/LayoutNodeLayoutDelegateKt;
+Landroidx/compose/ui/node/LayoutTreeConsistencyChecker;
+Landroidx/compose/ui/node/LookaheadCapablePlaceable;
+Landroidx/compose/ui/node/LookaheadDelegate;
+Landroidx/compose/ui/node/MeasureAndLayoutDelegate$PostponedRequest;
+Landroidx/compose/ui/node/MeasureAndLayoutDelegate$WhenMappings;
+Landroidx/compose/ui/node/MeasureAndLayoutDelegate;
+Landroidx/compose/ui/node/MutableVectorWithMutationTracking;
+Landroidx/compose/ui/node/MyersDiffKt;
+Landroidx/compose/ui/node/NodeChain$Differ;
+Landroidx/compose/ui/node/NodeChain$Logger;
+Landroidx/compose/ui/node/NodeChain;
+Landroidx/compose/ui/node/NodeChainKt$SentinelHead$1;
+Landroidx/compose/ui/node/NodeChainKt$fillVector$1;
+Landroidx/compose/ui/node/NodeChainKt;
+Landroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;
+Landroidx/compose/ui/node/NodeCoordinator$Companion$SemanticsSource$1;
+Landroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayer$1;
+Landroidx/compose/ui/node/NodeCoordinator$Companion$onCommitAffectingLayerParams$1;
+Landroidx/compose/ui/node/NodeCoordinator$Companion;
+Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;
+Landroidx/compose/ui/node/NodeCoordinator$hit$1;
+Landroidx/compose/ui/node/NodeCoordinator$hitNear$1;
+Landroidx/compose/ui/node/NodeCoordinator$invalidateParentLayer$1;
+Landroidx/compose/ui/node/NodeCoordinator$invoke$1;
+Landroidx/compose/ui/node/NodeCoordinator$speculativeHit$1;
+Landroidx/compose/ui/node/NodeCoordinator$updateLayerParameters$1;
+Landroidx/compose/ui/node/NodeCoordinator;
+Landroidx/compose/ui/node/NodeCoordinatorKt;
+Landroidx/compose/ui/node/NodeKind;
+Landroidx/compose/ui/node/NodeKindKt;
+Landroidx/compose/ui/node/OnPositionedDispatcher$Companion$DepthComparator;
+Landroidx/compose/ui/node/OnPositionedDispatcher$Companion;
+Landroidx/compose/ui/node/OnPositionedDispatcher;
+Landroidx/compose/ui/node/OwnedLayer;
+Landroidx/compose/ui/node/Owner$Companion;
+Landroidx/compose/ui/node/Owner$OnLayoutCompletedListener;
+Landroidx/compose/ui/node/Owner;
+Landroidx/compose/ui/node/OwnerScope;
+Landroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;
+Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayout$1;
+Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifier$1;
+Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLayoutModifierInLookahead$1;
+Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadLayout$1;
+Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingLookaheadMeasure$1;
+Landroidx/compose/ui/node/OwnerSnapshotObserver$onCommitAffectingMeasure$1;
+Landroidx/compose/ui/node/OwnerSnapshotObserver;
+Landroidx/compose/ui/node/ParentDataModifierNode;
+Landroidx/compose/ui/node/ParentDataModifierNodeKt;
+Landroidx/compose/ui/node/PointerInputModifierNode;
+Landroidx/compose/ui/node/PointerInputModifierNodeKt;
+Landroidx/compose/ui/node/RootForTest;
+Landroidx/compose/ui/node/SemanticsModifierNode;
+Landroidx/compose/ui/node/SemanticsModifierNodeKt;
+Landroidx/compose/ui/node/Snake;
+Landroidx/compose/ui/node/TreeSet;
+Landroidx/compose/ui/node/UiApplier;
+Landroidx/compose/ui/platform/AbstractComposeView$ensureCompositionCreated$1;
+Landroidx/compose/ui/platform/AbstractComposeView;
+Landroidx/compose/ui/platform/AccessibilityIterators$AbstractTextSegmentIterator;
+Landroidx/compose/ui/platform/AccessibilityIterators$CharacterTextSegmentIterator$Companion;
+Landroidx/compose/ui/platform/AccessibilityIterators$CharacterTextSegmentIterator;
+Landroidx/compose/ui/platform/AccessibilityIterators$LineTextSegmentIterator$Companion;
+Landroidx/compose/ui/platform/AccessibilityIterators$LineTextSegmentIterator;
+Landroidx/compose/ui/platform/AccessibilityIterators$PageTextSegmentIterator$Companion;
+Landroidx/compose/ui/platform/AccessibilityIterators$PageTextSegmentIterator;
+Landroidx/compose/ui/platform/AccessibilityIterators$ParagraphTextSegmentIterator$Companion;
+Landroidx/compose/ui/platform/AccessibilityIterators$ParagraphTextSegmentIterator;
+Landroidx/compose/ui/platform/AccessibilityIterators$TextSegmentIterator;
+Landroidx/compose/ui/platform/AccessibilityIterators$WordTextSegmentIterator$Companion;
+Landroidx/compose/ui/platform/AccessibilityIterators$WordTextSegmentIterator;
+Landroidx/compose/ui/platform/AccessibilityManager;
+Landroidx/compose/ui/platform/AccessibilityNodeInfoVerificationHelperMethods;
+Landroidx/compose/ui/platform/AndroidAccessibilityManager$Companion;
+Landroidx/compose/ui/platform/AndroidAccessibilityManager;
+Landroidx/compose/ui/platform/AndroidClipboardManager;
+Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda0;
+Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda1;
+Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda2;
+Landroidx/compose/ui/platform/AndroidComposeView$$ExternalSyntheticLambda3;
+Landroidx/compose/ui/platform/AndroidComposeView$Companion;
+Landroidx/compose/ui/platform/AndroidComposeView$ViewTreeOwners;
+Landroidx/compose/ui/platform/AndroidComposeView$_inputModeManager$1;
+Landroidx/compose/ui/platform/AndroidComposeView$configurationChangeObserver$1;
+Landroidx/compose/ui/platform/AndroidComposeView$keyInputModifier$1;
+Landroidx/compose/ui/platform/AndroidComposeView$pointerIconService$1;
+Landroidx/compose/ui/platform/AndroidComposeView$resendMotionEventOnLayout$1;
+Landroidx/compose/ui/platform/AndroidComposeView$resendMotionEventRunnable$1;
+Landroidx/compose/ui/platform/AndroidComposeView$rotaryInputModifier$1;
+Landroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1$value$1;
+Landroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1;
+Landroidx/compose/ui/platform/AndroidComposeView$semanticsModifier$1;
+Landroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1$$ExternalSyntheticLambda0;
+Landroidx/compose/ui/platform/AndroidComposeView$snapshotObserver$1;
+Landroidx/compose/ui/platform/AndroidComposeView;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda0;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda1;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$$ExternalSyntheticLambda2;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api24Impl;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Api29Impl;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$Companion;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$PendingTextTraversedEvent;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$SemanticsNodeCopy;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$WhenMappings;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$populateAccessibilityNodeInfoProperties$isUnmergedLeafNode$1;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendScrollEventIfNeeded$1;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendScrollEventIfNeededLambda$1;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendSubtreeChangeAccessibilityEvents$1;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$sendSubtreeChangeAccessibilityEvents$semanticsWrapper$1;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;
+Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat_androidKt;
+Landroidx/compose/ui/platform/AndroidComposeViewForceDarkModeQ;
+Landroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsN;
+Landroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsO;
+Landroidx/compose/ui/platform/AndroidComposeView_androidKt$textInputServiceFactory$1;
+Landroidx/compose/ui/platform/AndroidComposeView_androidKt;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalConfiguration$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalContext$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalImageVectorCache$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalLifecycleOwner$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalSavedStateRegistryOwner$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$LocalView$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$1$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$invoke$$inlined$onDispose$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$4;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$invoke$$inlined$onDispose$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;
+Landroidx/compose/ui/platform/AndroidCompositionLocals_androidKt;
+Landroidx/compose/ui/platform/AndroidFontResourceLoader;
+Landroidx/compose/ui/platform/AndroidTextToolbar$textActionModeCallback$1;
+Landroidx/compose/ui/platform/AndroidTextToolbar;
+Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2$dispatcher$1;
+Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion$Main$2;
+Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion$currentThread$1;
+Landroidx/compose/ui/platform/AndroidUiDispatcher$Companion;
+Landroidx/compose/ui/platform/AndroidUiDispatcher$dispatchCallback$1;
+Landroidx/compose/ui/platform/AndroidUiDispatcher;
+Landroidx/compose/ui/platform/AndroidUiDispatcher_androidKt;
+Landroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$1;
+Landroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$2;
+Landroidx/compose/ui/platform/AndroidUiFrameClock$withFrameNanos$2$callback$1;
+Landroidx/compose/ui/platform/AndroidUiFrameClock;
+Landroidx/compose/ui/platform/AndroidUriHandler;
+Landroidx/compose/ui/platform/AndroidViewConfiguration;
+Landroidx/compose/ui/platform/AndroidViewsHandler;
+Landroidx/compose/ui/platform/CalculateMatrixToWindow;
+Landroidx/compose/ui/platform/CalculateMatrixToWindowApi29;
+Landroidx/compose/ui/platform/ClipboardManager;
+Landroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt$lambda-1$1;
+Landroidx/compose/ui/platform/ComposableSingletons$Wrapper_androidKt;
+Landroidx/compose/ui/platform/ComposeView$Content$1;
+Landroidx/compose/ui/platform/ComposeView;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAccessibilityManager$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofill$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalAutofillTree$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalClipboardManager$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalDensity$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFocusManager$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFontFamilyResolver$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalFontLoader$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalHapticFeedback$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalInputModeManager$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalLayoutDirection$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalPointerIconService$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalTextInputService$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalTextToolbar$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalUriHandler$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalViewConfiguration$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$LocalWindowInfo$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt$ProvideCommonCompositionLocals$1;
+Landroidx/compose/ui/platform/CompositionLocalsKt;
+Landroidx/compose/ui/platform/DeviceRenderNode;
+Landroidx/compose/ui/platform/DisposableSaveableStateRegistry;
+Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;
+Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$registered$1;
+Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$saveableStateRegistry$1;
+Landroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;
+Landroidx/compose/ui/platform/DrawChildContainer;
+Landroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$1;
+Landroidx/compose/ui/platform/GlobalSnapshotManager$ensureStarted$2;
+Landroidx/compose/ui/platform/GlobalSnapshotManager;
+Landroidx/compose/ui/platform/InspectableModifier$End;
+Landroidx/compose/ui/platform/InspectableModifier;
+Landroidx/compose/ui/platform/InspectableValueKt$NoInspectorInfo$1;
+Landroidx/compose/ui/platform/InspectableValueKt;
+Landroidx/compose/ui/platform/InspectorInfo;
+Landroidx/compose/ui/platform/InspectorValueInfo;
+Landroidx/compose/ui/platform/InvertMatrixKt;
+Landroidx/compose/ui/platform/JvmActuals_jvmKt;
+Landroidx/compose/ui/platform/LayerMatrixCache;
+Landroidx/compose/ui/platform/MotionDurationScaleImpl;
+Landroidx/compose/ui/platform/OutlineResolver;
+Landroidx/compose/ui/platform/RenderNodeApi29;
+Landroidx/compose/ui/platform/RenderNodeApi29VerificationHelper;
+Landroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;
+Landroidx/compose/ui/platform/RenderNodeLayer$Companion;
+Landroidx/compose/ui/platform/RenderNodeLayer;
+Landroidx/compose/ui/platform/ScrollObservationScope;
+Landroidx/compose/ui/platform/SemanticsNodeWithAdjustedBounds;
+Landroidx/compose/ui/platform/ShapeContainingUtilKt;
+Landroidx/compose/ui/platform/TextToolbar;
+Landroidx/compose/ui/platform/TextToolbarStatus;
+Landroidx/compose/ui/platform/UriHandler;
+Landroidx/compose/ui/platform/ViewCompositionStrategy$Companion;
+Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$1;
+Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;
+Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$poolingContainerListener$1;
+Landroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool;
+Landroidx/compose/ui/platform/ViewCompositionStrategy;
+Landroidx/compose/ui/platform/ViewConfiguration;
+Landroidx/compose/ui/platform/ViewLayer$Companion$OutlineProvider$1;
+Landroidx/compose/ui/platform/ViewLayer$Companion$getMatrix$1;
+Landroidx/compose/ui/platform/ViewLayer$Companion;
+Landroidx/compose/ui/platform/ViewLayer;
+Landroidx/compose/ui/platform/ViewLayerContainer;
+Landroidx/compose/ui/platform/ViewLayerVerificationHelper28;
+Landroidx/compose/ui/platform/ViewLayerVerificationHelper31;
+Landroidx/compose/ui/platform/ViewRootForTest$Companion;
+Landroidx/compose/ui/platform/ViewRootForTest;
+Landroidx/compose/ui/platform/WeakCache;
+Landroidx/compose/ui/platform/WindowInfo;
+Landroidx/compose/ui/platform/WindowInfoImpl$Companion;
+Landroidx/compose/ui/platform/WindowInfoImpl;
+Landroidx/compose/ui/platform/WindowRecomposerFactory$Companion$LifecycleAware$1;
+Landroidx/compose/ui/platform/WindowRecomposerFactory$Companion;
+Landroidx/compose/ui/platform/WindowRecomposerFactory;
+Landroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;
+Landroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$unsetJob$1;
+Landroidx/compose/ui/platform/WindowRecomposerPolicy;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$WhenMappings;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1$1;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1$1$1;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2$onStateChanged$1;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$2;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$1;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt$getAnimationScaleFlowFor$1$1$contentObserver$1;
+Landroidx/compose/ui/platform/WindowRecomposer_androidKt;
+Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1$1;
+Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1$2;
+Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1$3;
+Landroidx/compose/ui/platform/WrappedComposition$setContent$1$1;
+Landroidx/compose/ui/platform/WrappedComposition$setContent$1;
+Landroidx/compose/ui/platform/WrappedComposition;
+Landroidx/compose/ui/platform/WrapperRenderNodeLayerHelperMethods;
+Landroidx/compose/ui/platform/WrapperVerificationHelperMethods;
+Landroidx/compose/ui/platform/Wrapper_androidKt;
+Landroidx/compose/ui/platform/accessibility/CollectionInfoKt;
+Landroidx/compose/ui/platform/actionmodecallback/TextActionModeCallback;
+Landroidx/compose/ui/res/ImageVectorCache$ImageVectorEntry;
+Landroidx/compose/ui/res/ImageVectorCache$Key;
+Landroidx/compose/ui/res/ImageVectorCache;
+Landroidx/compose/ui/res/PainterResources_androidKt;
+Landroidx/compose/ui/res/Resources_androidKt;
+Landroidx/compose/ui/res/StringResources_androidKt;
+Landroidx/compose/ui/semantics/AccessibilityAction;
+Landroidx/compose/ui/semantics/CollectionInfo;
+Landroidx/compose/ui/semantics/LiveRegionMode$Companion;
+Landroidx/compose/ui/semantics/LiveRegionMode;
+Landroidx/compose/ui/semantics/ProgressBarRangeInfo$Companion;
+Landroidx/compose/ui/semantics/ProgressBarRangeInfo;
+Landroidx/compose/ui/semantics/Role$Companion;
+Landroidx/compose/ui/semantics/Role;
+Landroidx/compose/ui/semantics/ScrollAxisRange;
+Landroidx/compose/ui/semantics/SemanticsActions;
+Landroidx/compose/ui/semantics/SemanticsConfiguration;
+Landroidx/compose/ui/semantics/SemanticsConfigurationKt$getOrNull$1;
+Landroidx/compose/ui/semantics/SemanticsConfigurationKt;
+Landroidx/compose/ui/semantics/SemanticsModifier;
+Landroidx/compose/ui/semantics/SemanticsModifierCore$Companion;
+Landroidx/compose/ui/semantics/SemanticsModifierCore;
+Landroidx/compose/ui/semantics/SemanticsModifierKt$clearAndSetSemantics$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/semantics/SemanticsModifierKt$semantics$$inlined$debugInspectorInfo$1;
+Landroidx/compose/ui/semantics/SemanticsModifierKt;
+Landroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$1;
+Landroidx/compose/ui/semantics/SemanticsNode$emitFakeNodes$fakeNode$2;
+Landroidx/compose/ui/semantics/SemanticsNode$fakeSemanticsNode$fakeNode$1;
+Landroidx/compose/ui/semantics/SemanticsNode$parent$1;
+Landroidx/compose/ui/semantics/SemanticsNode$parent$2;
+Landroidx/compose/ui/semantics/SemanticsNode;
+Landroidx/compose/ui/semantics/SemanticsNodeKt;
+Landroidx/compose/ui/semantics/SemanticsOwner;
+Landroidx/compose/ui/semantics/SemanticsProperties$ContentDescription$1;
+Landroidx/compose/ui/semantics/SemanticsProperties$InvisibleToUser$1;
+Landroidx/compose/ui/semantics/SemanticsProperties$IsDialog$1;
+Landroidx/compose/ui/semantics/SemanticsProperties$IsPopup$1;
+Landroidx/compose/ui/semantics/SemanticsProperties$PaneTitle$1;
+Landroidx/compose/ui/semantics/SemanticsProperties$Role$1;
+Landroidx/compose/ui/semantics/SemanticsProperties$TestTag$1;
+Landroidx/compose/ui/semantics/SemanticsProperties$Text$1;
+Landroidx/compose/ui/semantics/SemanticsProperties;
+Landroidx/compose/ui/semantics/SemanticsPropertiesAndroid;
+Landroidx/compose/ui/semantics/SemanticsPropertiesKt$ActionPropertyKey$1;
+Landroidx/compose/ui/semantics/SemanticsPropertiesKt;
+Landroidx/compose/ui/semantics/SemanticsPropertyKey$1;
+Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;
+Landroidx/compose/ui/semantics/SemanticsSortKt;
+Landroidx/compose/ui/state/ToggleableState;
+Landroidx/compose/ui/text/AndroidParagraph$WhenMappings;
+Landroidx/compose/ui/text/AndroidParagraph$wordBoundary$2;
+Landroidx/compose/ui/text/AndroidParagraph;
+Landroidx/compose/ui/text/AndroidParagraph_androidKt;
+Landroidx/compose/ui/text/AnnotatedString$Range;
+Landroidx/compose/ui/text/AnnotatedString$special$$inlined$sortedBy$1;
+Landroidx/compose/ui/text/AnnotatedString;
+Landroidx/compose/ui/text/AnnotatedStringKt;
+Landroidx/compose/ui/text/MultiParagraph;
+Landroidx/compose/ui/text/MultiParagraphIntrinsics$maxIntrinsicWidth$2;
+Landroidx/compose/ui/text/MultiParagraphIntrinsics$minIntrinsicWidth$2;
+Landroidx/compose/ui/text/MultiParagraphIntrinsics;
+Landroidx/compose/ui/text/MultiParagraphIntrinsicsKt;
+Landroidx/compose/ui/text/MultiParagraphKt;
+Landroidx/compose/ui/text/Paragraph;
+Landroidx/compose/ui/text/ParagraphInfo;
+Landroidx/compose/ui/text/ParagraphIntrinsicInfo;
+Landroidx/compose/ui/text/ParagraphIntrinsics;
+Landroidx/compose/ui/text/ParagraphIntrinsicsKt;
+Landroidx/compose/ui/text/ParagraphKt;
+Landroidx/compose/ui/text/ParagraphStyle;
+Landroidx/compose/ui/text/ParagraphStyleKt;
+Landroidx/compose/ui/text/Placeholder;
+Landroidx/compose/ui/text/PlatformParagraphStyle;
+Landroidx/compose/ui/text/PlatformSpanStyle;
+Landroidx/compose/ui/text/PlatformTextStyle;
+Landroidx/compose/ui/text/SaversKt;
+Landroidx/compose/ui/text/SpanStyle;
+Landroidx/compose/ui/text/SpanStyleKt$resolveSpanStyleDefaults$1;
+Landroidx/compose/ui/text/SpanStyleKt;
+Landroidx/compose/ui/text/TempListUtilsKt;
+Landroidx/compose/ui/text/TextLayoutInput;
+Landroidx/compose/ui/text/TextLayoutResult;
+Landroidx/compose/ui/text/TextPainter;
+Landroidx/compose/ui/text/TextRange$Companion;
+Landroidx/compose/ui/text/TextRange;
+Landroidx/compose/ui/text/TextRangeKt;
+Landroidx/compose/ui/text/TextStyle$Companion;
+Landroidx/compose/ui/text/TextStyle;
+Landroidx/compose/ui/text/TextStyleKt$WhenMappings;
+Landroidx/compose/ui/text/TextStyleKt;
+Landroidx/compose/ui/text/TtsAnnotation;
+Landroidx/compose/ui/text/UrlAnnotation;
+Landroidx/compose/ui/text/android/BoringLayoutConstructor33;
+Landroidx/compose/ui/text/android/BoringLayoutFactory33;
+Landroidx/compose/ui/text/android/BoringLayoutFactory;
+Landroidx/compose/ui/text/android/BoringLayoutFactoryDefault;
+Landroidx/compose/ui/text/android/CharSequenceCharacterIterator;
+Landroidx/compose/ui/text/android/LayoutCompat;
+Landroidx/compose/ui/text/android/LayoutHelper;
+Landroidx/compose/ui/text/android/LayoutIntrinsics$boringMetrics$2;
+Landroidx/compose/ui/text/android/LayoutIntrinsics$maxIntrinsicWidth$2;
+Landroidx/compose/ui/text/android/LayoutIntrinsics$minIntrinsicWidth$2;
+Landroidx/compose/ui/text/android/LayoutIntrinsics;
+Landroidx/compose/ui/text/android/LayoutIntrinsicsKt$$ExternalSyntheticLambda0;
+Landroidx/compose/ui/text/android/LayoutIntrinsicsKt;
+Landroidx/compose/ui/text/android/PaintExtensionsKt;
+Landroidx/compose/ui/text/android/SpannedExtensionsKt;
+Landroidx/compose/ui/text/android/StaticLayoutFactory23;
+Landroidx/compose/ui/text/android/StaticLayoutFactory26;
+Landroidx/compose/ui/text/android/StaticLayoutFactory28;
+Landroidx/compose/ui/text/android/StaticLayoutFactory33;
+Landroidx/compose/ui/text/android/StaticLayoutFactory;
+Landroidx/compose/ui/text/android/StaticLayoutFactoryImpl;
+Landroidx/compose/ui/text/android/StaticLayoutParams;
+Landroidx/compose/ui/text/android/TextAlignmentAdapter;
+Landroidx/compose/ui/text/android/TextAndroidCanvas;
+Landroidx/compose/ui/text/android/TextLayout$Companion;
+Landroidx/compose/ui/text/android/TextLayout$layoutHelper$2;
+Landroidx/compose/ui/text/android/TextLayout;
+Landroidx/compose/ui/text/android/TextLayoutKt;
+Landroidx/compose/ui/text/android/selection/WordBoundary;
+Landroidx/compose/ui/text/android/style/BaselineShiftSpan;
+Landroidx/compose/ui/text/android/style/FontFeatureSpan;
+Landroidx/compose/ui/text/android/style/IndentationFixSpan;
+Landroidx/compose/ui/text/android/style/IndentationFixSpanKt$WhenMappings;
+Landroidx/compose/ui/text/android/style/IndentationFixSpanKt;
+Landroidx/compose/ui/text/android/style/LetterSpacingSpanEm;
+Landroidx/compose/ui/text/android/style/LetterSpacingSpanPx;
+Landroidx/compose/ui/text/android/style/LineHeightSpan;
+Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;
+Landroidx/compose/ui/text/android/style/LineHeightStyleSpanKt;
+Landroidx/compose/ui/text/android/style/PlaceholderSpan;
+Landroidx/compose/ui/text/android/style/ShadowSpan;
+Landroidx/compose/ui/text/android/style/SkewXSpan;
+Landroidx/compose/ui/text/android/style/TextDecorationSpan;
+Landroidx/compose/ui/text/android/style/TypefaceSpan;
+Landroidx/compose/ui/text/caches/ContainerHelpersKt;
+Landroidx/compose/ui/text/caches/LruCache;
+Landroidx/compose/ui/text/caches/SimpleArrayMap;
+Landroidx/compose/ui/text/font/AndroidFontLoader;
+Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor;
+Landroidx/compose/ui/text/font/AndroidFontResolveInterceptor_androidKt;
+Landroidx/compose/ui/text/font/AsyncTypefaceCache$AsyncTypefaceResult;
+Landroidx/compose/ui/text/font/AsyncTypefaceCache;
+Landroidx/compose/ui/text/font/DefaultFontFamily;
+Landroidx/compose/ui/text/font/Font$ResourceLoader;
+Landroidx/compose/ui/text/font/FontFamily$Companion;
+Landroidx/compose/ui/text/font/FontFamily$Resolver;
+Landroidx/compose/ui/text/font/FontFamily;
+Landroidx/compose/ui/text/font/FontFamilyResolverImpl$createDefaultTypeface$1;
+Landroidx/compose/ui/text/font/FontFamilyResolverImpl$resolve$result$1;
+Landroidx/compose/ui/text/font/FontFamilyResolverImpl;
+Landroidx/compose/ui/text/font/FontFamilyResolverKt;
+Landroidx/compose/ui/text/font/FontFamilyResolver_androidKt;
+Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$Companion;
+Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter$special$$inlined$CoroutineExceptionHandler$1;
+Landroidx/compose/ui/text/font/FontListFontFamilyTypefaceAdapter;
+Landroidx/compose/ui/text/font/FontMatcher;
+Landroidx/compose/ui/text/font/FontStyle$Companion;
+Landroidx/compose/ui/text/font/FontStyle;
+Landroidx/compose/ui/text/font/FontSynthesis$Companion;
+Landroidx/compose/ui/text/font/FontSynthesis;
+Landroidx/compose/ui/text/font/FontWeight$Companion;
+Landroidx/compose/ui/text/font/FontWeight;
+Landroidx/compose/ui/text/font/GenericFontFamily;
+Landroidx/compose/ui/text/font/PlatformFontFamilyTypefaceAdapter;
+Landroidx/compose/ui/text/font/PlatformFontLoader;
+Landroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion$Default$1;
+Landroidx/compose/ui/text/font/PlatformResolveInterceptor$Companion;
+Landroidx/compose/ui/text/font/PlatformResolveInterceptor;
+Landroidx/compose/ui/text/font/PlatformTypefaces;
+Landroidx/compose/ui/text/font/PlatformTypefacesApi28;
+Landroidx/compose/ui/text/font/PlatformTypefacesKt;
+Landroidx/compose/ui/text/font/SystemFontFamily;
+Landroidx/compose/ui/text/font/TypefaceRequest;
+Landroidx/compose/ui/text/font/TypefaceRequestCache$runCached$currentTypefaceResult$1;
+Landroidx/compose/ui/text/font/TypefaceRequestCache;
+Landroidx/compose/ui/text/font/TypefaceResult$Immutable;
+Landroidx/compose/ui/text/font/TypefaceResult;
+Landroidx/compose/ui/text/input/ImeAction$Companion;
+Landroidx/compose/ui/text/input/ImeAction;
+Landroidx/compose/ui/text/input/ImeOptions$Companion;
+Landroidx/compose/ui/text/input/ImeOptions;
+Landroidx/compose/ui/text/input/ImmHelper21;
+Landroidx/compose/ui/text/input/ImmHelper30;
+Landroidx/compose/ui/text/input/ImmHelper;
+Landroidx/compose/ui/text/input/InputEventCallback2;
+Landroidx/compose/ui/text/input/InputMethodManager;
+Landroidx/compose/ui/text/input/InputMethodManagerImpl$imm$2;
+Landroidx/compose/ui/text/input/InputMethodManagerImpl;
+Landroidx/compose/ui/text/input/KeyboardCapitalization$Companion;
+Landroidx/compose/ui/text/input/KeyboardCapitalization;
+Landroidx/compose/ui/text/input/KeyboardType$Companion;
+Landroidx/compose/ui/text/input/KeyboardType;
+Landroidx/compose/ui/text/input/PlatformTextInputService;
+Landroidx/compose/ui/text/input/RecordingInputConnection;
+Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$1;
+Landroidx/compose/ui/text/input/TextFieldValue$Companion$Saver$2;
+Landroidx/compose/ui/text/input/TextFieldValue$Companion;
+Landroidx/compose/ui/text/input/TextFieldValue;
+Landroidx/compose/ui/text/input/TextInputService;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid$TextInputCommand;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid$WhenMappings;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid$baseInputConnection$2;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid$createInputConnection$1;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid$onEditCommand$1;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid$onImeActionPerformed$1;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid$textInputCommandEventLoop$1;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid;
+Landroidx/compose/ui/text/input/TextInputServiceAndroid_androidKt;
+Landroidx/compose/ui/text/intl/AndroidLocale;
+Landroidx/compose/ui/text/intl/AndroidLocaleDelegateAPI24;
+Landroidx/compose/ui/text/intl/AndroidPlatformLocale_androidKt;
+Landroidx/compose/ui/text/intl/Locale$Companion;
+Landroidx/compose/ui/text/intl/Locale;
+Landroidx/compose/ui/text/intl/LocaleList$Companion;
+Landroidx/compose/ui/text/intl/LocaleList;
+Landroidx/compose/ui/text/intl/PlatformLocale;
+Landroidx/compose/ui/text/intl/PlatformLocaleDelegate;
+Landroidx/compose/ui/text/intl/PlatformLocaleKt;
+Landroidx/compose/ui/text/platform/AndroidAccessibilitySpannableString_androidKt;
+Landroidx/compose/ui/text/platform/AndroidMultiParagraphDrawKt;
+Landroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt$NoopSpan$1;
+Landroidx/compose/ui/text/platform/AndroidParagraphHelper_androidKt;
+Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics$resolveTypeface$1;
+Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics;
+Landroidx/compose/ui/text/platform/AndroidParagraphIntrinsics_androidKt;
+Landroidx/compose/ui/text/platform/AndroidParagraph_androidKt;
+Landroidx/compose/ui/text/platform/AndroidTextPaint;
+Landroidx/compose/ui/text/platform/DefaultImpl$getFontLoadState$initCallback$1;
+Landroidx/compose/ui/text/platform/DefaultImpl;
+Landroidx/compose/ui/text/platform/EmojiCompatStatus;
+Landroidx/compose/ui/text/platform/EmojiCompatStatusDelegate;
+Landroidx/compose/ui/text/platform/EmojiCompatStatusKt;
+Landroidx/compose/ui/text/platform/ImmutableBool;
+Landroidx/compose/ui/text/platform/Synchronization_jvmKt;
+Landroidx/compose/ui/text/platform/SynchronizedObject;
+Landroidx/compose/ui/text/platform/TypefaceDirtyTracker;
+Landroidx/compose/ui/text/platform/extensions/LocaleListHelperMethods;
+Landroidx/compose/ui/text/platform/extensions/PlaceholderExtensions_androidKt;
+Landroidx/compose/ui/text/platform/extensions/SpanRange;
+Landroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt$setFontAttributes$1;
+Landroidx/compose/ui/text/platform/extensions/SpannableExtensions_androidKt;
+Landroidx/compose/ui/text/platform/extensions/TextPaintExtensions_androidKt;
+Landroidx/compose/ui/text/platform/style/DrawStyleSpan;
+Landroidx/compose/ui/text/platform/style/ShaderBrushSpan;
+Landroidx/compose/ui/text/style/BaselineShift$Companion;
+Landroidx/compose/ui/text/style/BaselineShift;
+Landroidx/compose/ui/text/style/BrushStyle;
+Landroidx/compose/ui/text/style/ColorStyle;
+Landroidx/compose/ui/text/style/Hyphens$Companion;
+Landroidx/compose/ui/text/style/Hyphens;
+Landroidx/compose/ui/text/style/LineBreak$Companion;
+Landroidx/compose/ui/text/style/LineBreak$Strategy$Companion;
+Landroidx/compose/ui/text/style/LineBreak$Strategy;
+Landroidx/compose/ui/text/style/LineBreak$Strictness$Companion;
+Landroidx/compose/ui/text/style/LineBreak$Strictness;
+Landroidx/compose/ui/text/style/LineBreak$WordBreak$Companion;
+Landroidx/compose/ui/text/style/LineBreak$WordBreak;
+Landroidx/compose/ui/text/style/LineBreak;
+Landroidx/compose/ui/text/style/LineHeightStyle$Companion;
+Landroidx/compose/ui/text/style/LineHeightStyle$Trim;
+Landroidx/compose/ui/text/style/LineHeightStyle;
+Landroidx/compose/ui/text/style/ResolvedTextDirection;
+Landroidx/compose/ui/text/style/TextAlign$Companion;
+Landroidx/compose/ui/text/style/TextAlign;
+Landroidx/compose/ui/text/style/TextDecoration$Companion;
+Landroidx/compose/ui/text/style/TextDecoration;
+Landroidx/compose/ui/text/style/TextDirection$Companion;
+Landroidx/compose/ui/text/style/TextDirection;
+Landroidx/compose/ui/text/style/TextDrawStyleKt;
+Landroidx/compose/ui/text/style/TextForegroundStyle$Companion;
+Landroidx/compose/ui/text/style/TextForegroundStyle$Unspecified;
+Landroidx/compose/ui/text/style/TextForegroundStyle$merge$1;
+Landroidx/compose/ui/text/style/TextForegroundStyle$merge$2;
+Landroidx/compose/ui/text/style/TextForegroundStyle;
+Landroidx/compose/ui/text/style/TextGeometricTransform$Companion;
+Landroidx/compose/ui/text/style/TextGeometricTransform;
+Landroidx/compose/ui/text/style/TextIndent$Companion;
+Landroidx/compose/ui/text/style/TextIndent;
+Landroidx/compose/ui/text/style/TextOverflow$Companion;
+Landroidx/compose/ui/text/style/TextOverflow;
+Landroidx/compose/ui/unit/AndroidDensity_androidKt;
+Landroidx/compose/ui/unit/Constraints$Companion;
+Landroidx/compose/ui/unit/Constraints;
+Landroidx/compose/ui/unit/ConstraintsKt;
+Landroidx/compose/ui/unit/Density;
+Landroidx/compose/ui/unit/DensityImpl;
+Landroidx/compose/ui/unit/DensityKt;
+Landroidx/compose/ui/unit/Dp$Companion;
+Landroidx/compose/ui/unit/Dp;
+Landroidx/compose/ui/unit/DpKt;
+Landroidx/compose/ui/unit/DpOffset$Companion;
+Landroidx/compose/ui/unit/DpOffset;
+Landroidx/compose/ui/unit/DpSize$Companion;
+Landroidx/compose/ui/unit/DpSize;
+Landroidx/compose/ui/unit/IntOffset$Companion;
+Landroidx/compose/ui/unit/IntOffset;
+Landroidx/compose/ui/unit/IntOffsetKt;
+Landroidx/compose/ui/unit/IntSize$Companion;
+Landroidx/compose/ui/unit/IntSize;
+Landroidx/compose/ui/unit/IntSizeKt;
+Landroidx/compose/ui/unit/LayoutDirection;
+Landroidx/compose/ui/unit/TextUnit$Companion;
+Landroidx/compose/ui/unit/TextUnit;
+Landroidx/compose/ui/unit/TextUnitKt;
+Landroidx/compose/ui/unit/TextUnitType$Companion;
+Landroidx/compose/ui/unit/TextUnitType;
+Landroidx/compose/ui/unit/Velocity$Companion;
+Landroidx/compose/ui/unit/Velocity;
+Landroidx/compose/ui/unit/VelocityKt;
+Landroidx/compose/ui/util/MathHelpersKt;
+Landroidx/core/R$id;
+Landroidx/core/app/ActivityCompat;
+Landroidx/core/app/ActivityOptionsCompat;
+Landroidx/core/app/ComponentActivity;
+Landroidx/core/app/CoreComponentFactory;
+Landroidx/core/app/MultiWindowModeChangedInfo;
+Landroidx/core/app/PictureInPictureModeChangedInfo;
+Landroidx/core/content/ContextCompat;
+Landroidx/core/content/res/FontResourcesParserCompat$FamilyResourceEntry;
+Landroidx/core/content/res/FontResourcesParserCompat$FontFamilyFilesResourceEntry;
+Landroidx/core/content/res/FontResourcesParserCompat$FontFileResourceEntry;
+Landroidx/core/content/res/FontResourcesParserCompat$ProviderResourceEntry;
+Landroidx/core/content/res/FontResourcesParserCompat;
+Landroidx/core/content/res/ResourcesCompat$FontCallback;
+Landroidx/core/graphics/PaintCompat;
+Landroidx/core/graphics/TypefaceCompat$ResourcesCallbackAdapter;
+Landroidx/core/graphics/TypefaceCompat;
+Landroidx/core/graphics/TypefaceCompatApi29Impl;
+Landroidx/core/graphics/TypefaceCompatBaseImpl;
+Landroidx/core/graphics/TypefaceCompatUtil$Api19Impl;
+Landroidx/core/graphics/TypefaceCompatUtil;
+Landroidx/core/graphics/drawable/DrawableKt;
+Landroidx/core/os/BuildCompat;
+Landroidx/core/os/HandlerCompat$Api28Impl;
+Landroidx/core/os/HandlerCompat;
+Landroidx/core/os/TraceCompat$Api18Impl;
+Landroidx/core/os/TraceCompat;
+Landroidx/core/provider/CallbackWithHandler;
+Landroidx/core/provider/FontProvider$$ExternalSyntheticLambda0;
+Landroidx/core/provider/FontProvider$Api16Impl;
+Landroidx/core/provider/FontProvider;
+Landroidx/core/provider/FontRequest;
+Landroidx/core/provider/FontRequestWorker;
+Landroidx/core/provider/FontsContractCompat$FontFamilyResult;
+Landroidx/core/provider/FontsContractCompat$FontInfo;
+Landroidx/core/provider/FontsContractCompat$FontRequestCallback;
+Landroidx/core/provider/FontsContractCompat;
+Landroidx/core/text/TextUtilsCompat;
+Landroidx/core/util/Consumer;
+Landroidx/core/util/Preconditions;
+Landroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;
+Landroidx/core/view/AccessibilityDelegateCompat$Api16Impl;
+Landroidx/core/view/AccessibilityDelegateCompat;
+Landroidx/core/view/KeyEventDispatcher$Component;
+Landroidx/core/view/KeyEventDispatcher;
+Landroidx/core/view/MenuHostHelper;
+Landroidx/core/view/OnApplyWindowInsetsListener;
+Landroidx/core/view/OnReceiveContentViewBehavior;
+Landroidx/core/view/ViewCompat$$ExternalSyntheticLambda0;
+Landroidx/core/view/ViewCompat$1;
+Landroidx/core/view/ViewCompat$2;
+Landroidx/core/view/ViewCompat$3;
+Landroidx/core/view/ViewCompat$4;
+Landroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager;
+Landroidx/core/view/ViewCompat$AccessibilityViewProperty;
+Landroidx/core/view/ViewCompat$Api16Impl;
+Landroidx/core/view/ViewCompat$Api17Impl;
+Landroidx/core/view/ViewCompat$Api19Impl;
+Landroidx/core/view/ViewCompat$Api20Impl;
+Landroidx/core/view/ViewCompat$Api21Impl;
+Landroidx/core/view/ViewCompat$Api23Impl;
+Landroidx/core/view/ViewCompat$Api29Impl;
+Landroidx/core/view/ViewCompat;
+Landroidx/core/view/ViewConfigurationCompat;
+Landroidx/core/view/ViewKt;
+Landroidx/core/view/WindowInsetsAnimationCompat$Callback;
+Landroidx/core/view/WindowInsetsAnimationCompat;
+Landroidx/core/view/WindowInsetsCompat$Type;
+Landroidx/core/view/WindowInsetsCompat;
+Landroidx/core/view/WindowInsetsControllerCompat;
+Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;
+Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$RangeInfoCompat;
+Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;
+Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat;
+Landroidx/customview/poolingcontainer/PoolingContainer;
+Landroidx/customview/poolingcontainer/PoolingContainerListener;
+Landroidx/customview/poolingcontainer/PoolingContainerListenerHolder;
+Landroidx/customview/poolingcontainer/R$id;
+Landroidx/emoji2/text/ConcurrencyHelpers$$ExternalSyntheticLambda0;
+Landroidx/emoji2/text/ConcurrencyHelpers$Handler28Impl;
+Landroidx/emoji2/text/ConcurrencyHelpers;
+Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigFactory;
+Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper;
+Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API19;
+Landroidx/emoji2/text/DefaultEmojiCompatConfig$DefaultEmojiCompatConfigHelper_API28;
+Landroidx/emoji2/text/DefaultEmojiCompatConfig;
+Landroidx/emoji2/text/DefaultGlyphChecker;
+Landroidx/emoji2/text/EmojiCompat$CompatInternal19$1;
+Landroidx/emoji2/text/EmojiCompat$CompatInternal19;
+Landroidx/emoji2/text/EmojiCompat$CompatInternal;
+Landroidx/emoji2/text/EmojiCompat$Config;
+Landroidx/emoji2/text/EmojiCompat$GlyphChecker;
+Landroidx/emoji2/text/EmojiCompat$InitCallback;
+Landroidx/emoji2/text/EmojiCompat$ListenerDispatcher;
+Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoader;
+Landroidx/emoji2/text/EmojiCompat$MetadataRepoLoaderCallback;
+Landroidx/emoji2/text/EmojiCompat$SpanFactory;
+Landroidx/emoji2/text/EmojiCompat;
+Landroidx/emoji2/text/EmojiCompatInitializer$1;
+Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultConfig;
+Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$$ExternalSyntheticLambda0;
+Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader$1;
+Landroidx/emoji2/text/EmojiCompatInitializer$BackgroundDefaultLoader;
+Landroidx/emoji2/text/EmojiCompatInitializer$LoadEmojiCompatRunnable;
+Landroidx/emoji2/text/EmojiCompatInitializer;
+Landroidx/emoji2/text/EmojiMetadata;
+Landroidx/emoji2/text/EmojiProcessor$CodepointIndexFinder;
+Landroidx/emoji2/text/EmojiProcessor$ProcessorSm;
+Landroidx/emoji2/text/EmojiProcessor;
+Landroidx/emoji2/text/EmojiSpan;
+Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontProviderHelper;
+Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader$$ExternalSyntheticLambda0;
+Landroidx/emoji2/text/FontRequestEmojiCompatConfig$FontRequestMetadataLoader;
+Landroidx/emoji2/text/FontRequestEmojiCompatConfig;
+Landroidx/emoji2/text/MetadataListReader$ByteBufferReader;
+Landroidx/emoji2/text/MetadataListReader$OffsetInfo;
+Landroidx/emoji2/text/MetadataListReader$OpenTypeReader;
+Landroidx/emoji2/text/MetadataListReader;
+Landroidx/emoji2/text/MetadataRepo$Node;
+Landroidx/emoji2/text/MetadataRepo;
+Landroidx/emoji2/text/SpannableBuilder;
+Landroidx/emoji2/text/TypefaceEmojiSpan;
+Landroidx/emoji2/text/UnprecomputeTextOnModificationSpannable;
+Landroidx/emoji2/text/flatbuffer/MetadataItem;
+Landroidx/emoji2/text/flatbuffer/MetadataList;
+Landroidx/emoji2/text/flatbuffer/Table;
+Landroidx/emoji2/text/flatbuffer/Utf8;
+Landroidx/emoji2/text/flatbuffer/Utf8Safe;
+Landroidx/lifecycle/AndroidViewModel;
+Landroidx/lifecycle/ClassesInfoCache;
+Landroidx/lifecycle/CompositeGeneratedAdaptersObserver;
+Landroidx/lifecycle/DefaultLifecycleObserver;
+Landroidx/lifecycle/EmptyActivityLifecycleCallbacks;
+Landroidx/lifecycle/FullLifecycleObserver;
+Landroidx/lifecycle/FullLifecycleObserverAdapter$1;
+Landroidx/lifecycle/FullLifecycleObserverAdapter;
+Landroidx/lifecycle/GeneratedAdapter;
+Landroidx/lifecycle/HasDefaultViewModelProviderFactory;
+Landroidx/lifecycle/LegacySavedStateHandleController$1;
+Landroidx/lifecycle/LegacySavedStateHandleController$OnRecreation;
+Landroidx/lifecycle/LegacySavedStateHandleController;
+Landroidx/lifecycle/Lifecycle$1;
+Landroidx/lifecycle/Lifecycle$Event;
+Landroidx/lifecycle/Lifecycle$State;
+Landroidx/lifecycle/Lifecycle;
+Landroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;
+Landroidx/lifecycle/LifecycleDispatcher;
+Landroidx/lifecycle/LifecycleEventObserver;
+Landroidx/lifecycle/LifecycleObserver;
+Landroidx/lifecycle/LifecycleOwner;
+Landroidx/lifecycle/LifecycleRegistry$ObserverWithState;
+Landroidx/lifecycle/LifecycleRegistry;
+Landroidx/lifecycle/Lifecycling;
+Landroidx/lifecycle/LiveData$1;
+Landroidx/lifecycle/LiveData$LifecycleBoundObserver;
+Landroidx/lifecycle/LiveData$ObserverWrapper;
+Landroidx/lifecycle/LiveData;
+Landroidx/lifecycle/MutableLiveData;
+Landroidx/lifecycle/Observer;
+Landroidx/lifecycle/ProcessLifecycleInitializer;
+Landroidx/lifecycle/ProcessLifecycleOwner$1;
+Landroidx/lifecycle/ProcessLifecycleOwner$2;
+Landroidx/lifecycle/ProcessLifecycleOwner$3$1;
+Landroidx/lifecycle/ProcessLifecycleOwner$3;
+Landroidx/lifecycle/ProcessLifecycleOwner$Api29Impl;
+Landroidx/lifecycle/ProcessLifecycleOwner;
+Landroidx/lifecycle/ReflectiveGenericLifecycleObserver;
+Landroidx/lifecycle/ReportFragment$ActivityInitializationListener;
+Landroidx/lifecycle/ReportFragment$LifecycleCallbacks;
+Landroidx/lifecycle/ReportFragment;
+Landroidx/lifecycle/SavedStateHandle$Companion;
+Landroidx/lifecycle/SavedStateHandle;
+Landroidx/lifecycle/SavedStateHandleAttacher;
+Landroidx/lifecycle/SavedStateHandleController;
+Landroidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1;
+Landroidx/lifecycle/SavedStateHandleSupport$SAVED_STATE_REGISTRY_OWNER_KEY$1;
+Landroidx/lifecycle/SavedStateHandleSupport$VIEW_MODEL_STORE_OWNER_KEY$1;
+Landroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1$1;
+Landroidx/lifecycle/SavedStateHandleSupport;
+Landroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;
+Landroidx/lifecycle/SavedStateHandlesProvider;
+Landroidx/lifecycle/SavedStateHandlesVM;
+Landroidx/lifecycle/SavedStateViewModelFactory;
+Landroidx/lifecycle/SavedStateViewModelFactoryKt;
+Landroidx/lifecycle/SingleGeneratedAdapterObserver;
+Landroidx/lifecycle/ViewModel;
+Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion$ApplicationKeyImpl;
+Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory$Companion;
+Landroidx/lifecycle/ViewModelProvider$AndroidViewModelFactory;
+Landroidx/lifecycle/ViewModelProvider$Factory$Companion;
+Landroidx/lifecycle/ViewModelProvider$Factory;
+Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl;
+Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion;
+Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory;
+Landroidx/lifecycle/ViewModelProvider$OnRequeryFactory;
+Landroidx/lifecycle/ViewModelProvider;
+Landroidx/lifecycle/ViewModelProviderGetKt;
+Landroidx/lifecycle/ViewModelStore;
+Landroidx/lifecycle/ViewModelStoreOwner;
+Landroidx/lifecycle/ViewTreeLifecycleOwner;
+Landroidx/lifecycle/ViewTreeViewModelStoreOwner;
+Landroidx/lifecycle/runtime/R$id;
+Landroidx/lifecycle/viewmodel/CreationExtras$Empty;
+Landroidx/lifecycle/viewmodel/CreationExtras$Key;
+Landroidx/lifecycle/viewmodel/CreationExtras;
+Landroidx/lifecycle/viewmodel/InitializerViewModelFactory;
+Landroidx/lifecycle/viewmodel/InitializerViewModelFactoryBuilder;
+Landroidx/lifecycle/viewmodel/MutableCreationExtras;
+Landroidx/lifecycle/viewmodel/R$id;
+Landroidx/lifecycle/viewmodel/ViewModelInitializer;
+Landroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner$LocalViewModelStoreOwner$1;
+Landroidx/lifecycle/viewmodel/compose/LocalViewModelStoreOwner;
+Landroidx/lifecycle/viewmodel/compose/ViewModelKt;
+Landroidx/profileinstaller/ProfileInstaller;
+Landroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda0;
+Landroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1;
+Landroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda2;
+Landroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl$$ExternalSyntheticLambda0;
+Landroidx/profileinstaller/ProfileInstallerInitializer$Choreographer16Impl;
+Landroidx/profileinstaller/ProfileInstallerInitializer$Handler28Impl;
+Landroidx/profileinstaller/ProfileInstallerInitializer$Result;
+Landroidx/profileinstaller/ProfileInstallerInitializer;
+Landroidx/savedstate/R$id;
+Landroidx/savedstate/Recreator$Companion;
+Landroidx/savedstate/Recreator$SavedStateProvider;
+Landroidx/savedstate/Recreator;
+Landroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;
+Landroidx/savedstate/SavedStateRegistry$AutoRecreated;
+Landroidx/savedstate/SavedStateRegistry$Companion;
+Landroidx/savedstate/SavedStateRegistry$SavedStateProvider;
+Landroidx/savedstate/SavedStateRegistry;
+Landroidx/savedstate/SavedStateRegistryController$Companion;
+Landroidx/savedstate/SavedStateRegistryController;
+Landroidx/savedstate/SavedStateRegistryOwner;
+Landroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$1;
+Landroidx/savedstate/ViewTreeSavedStateRegistryOwner$findViewTreeSavedStateRegistryOwner$2;
+Landroidx/savedstate/ViewTreeSavedStateRegistryOwner;
+Landroidx/startup/AppInitializer;
+Landroidx/startup/InitializationProvider;
+Landroidx/startup/Initializer;
+Landroidx/startup/R$string;
+Landroidx/startup/StartupException;
+Landroidx/tracing/Trace;
+Landroidx/tracing/TraceApi18Impl;
+Landroidx/tracing/TraceApi29Impl;
+Lcom/android/credentialmanager/CreateFlowUtils$Companion$toCreateCredentialUiState$$inlined$compareByDescending$1;
+Lcom/android/credentialmanager/CreateFlowUtils$Companion;
+Lcom/android/credentialmanager/CreateFlowUtils;
+Lcom/android/credentialmanager/CredentialManagerRepo$Companion;
+Lcom/android/credentialmanager/CredentialManagerRepo;
+Lcom/android/credentialmanager/CredentialSelectorActivity$CredentialManagerBottomSheet$3;
+Lcom/android/credentialmanager/CredentialSelectorActivity$CredentialManagerBottomSheet$launcher$1$1;
+Lcom/android/credentialmanager/CredentialSelectorActivity$WhenMappings;
+Lcom/android/credentialmanager/CredentialSelectorActivity$onCancel$1;
+Lcom/android/credentialmanager/CredentialSelectorActivity$onCreate$1$1;
+Lcom/android/credentialmanager/CredentialSelectorActivity$onCreate$1;
+Lcom/android/credentialmanager/CredentialSelectorActivity;
+Lcom/android/credentialmanager/GetFlowUtils$Companion;
+Lcom/android/credentialmanager/GetFlowUtils;
+Lcom/android/credentialmanager/UserConfigRepo$Companion;
+Lcom/android/credentialmanager/UserConfigRepo;
+Lcom/android/credentialmanager/common/DialogResult;
+Lcom/android/credentialmanager/common/DialogType$Companion;
+Lcom/android/credentialmanager/common/DialogType;
+Lcom/android/credentialmanager/common/ProviderActivityResult;
+Lcom/android/credentialmanager/common/ResultState;
+Lcom/android/credentialmanager/common/material/FixedThreshold;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetDefaults;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$1$1$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$1$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$2$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$3$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4$1$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4$2;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4$3;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$4;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$5;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$2;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$1$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$2;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$2$1$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$2$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$2;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$3;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetKt;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion$Saver$1;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion$Saver$2;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetState$Companion;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetState;
+Lcom/android/credentialmanager/common/material/ModalBottomSheetValue;
+Lcom/android/credentialmanager/common/material/ResistanceConfig;
+Lcom/android/credentialmanager/common/material/SwipeableDefaults;
+Lcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1$onPostFling$1;
+Lcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1$onPreFling$1;
+Lcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;
+Lcom/android/credentialmanager/common/material/SwipeableKt$swipeable$1;
+Lcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$3$1;
+Lcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$3;
+Lcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1$1;
+Lcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1;
+Lcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3;
+Lcom/android/credentialmanager/common/material/SwipeableKt$swipeable-pPrIpRY$$inlined$debugInspectorInfo$1;
+Lcom/android/credentialmanager/common/material/SwipeableKt;
+Lcom/android/credentialmanager/common/material/SwipeableState$Companion;
+Lcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2;
+Lcom/android/credentialmanager/common/material/SwipeableState$animateTo$2;
+Lcom/android/credentialmanager/common/material/SwipeableState$draggableState$1;
+Lcom/android/credentialmanager/common/material/SwipeableState$latestNonEmptyAnchorsFlow$1;
+Lcom/android/credentialmanager/common/material/SwipeableState$performFling$2;
+Lcom/android/credentialmanager/common/material/SwipeableState$processNewAnchors$1;
+Lcom/android/credentialmanager/common/material/SwipeableState$snapInternalToOffset$2;
+Lcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1$2;
+Lcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1;
+Lcom/android/credentialmanager/common/material/SwipeableState$thresholds$2;
+Lcom/android/credentialmanager/common/material/SwipeableState;
+Lcom/android/credentialmanager/common/material/ThresholdConfig;
+Lcom/android/credentialmanager/common/ui/ActionButtonKt$ActionButton$1;
+Lcom/android/credentialmanager/common/ui/ActionButtonKt$ActionButton$2;
+Lcom/android/credentialmanager/common/ui/ActionButtonKt;
+Lcom/android/credentialmanager/common/ui/CardsKt$ContainerCard$1;
+Lcom/android/credentialmanager/common/ui/CardsKt;
+Lcom/android/credentialmanager/common/ui/ConfirmButtonKt$ConfirmButton$1;
+Lcom/android/credentialmanager/common/ui/ConfirmButtonKt$ConfirmButton$2;
+Lcom/android/credentialmanager/common/ui/ConfirmButtonKt;
+Lcom/android/credentialmanager/common/ui/EntryKt$Entry$1;
+Lcom/android/credentialmanager/common/ui/EntryKt$TransparentBackgroundEntry$1;
+Lcom/android/credentialmanager/common/ui/EntryKt;
+Lcom/android/credentialmanager/common/ui/TextsKt$TextInternal$1;
+Lcom/android/credentialmanager/common/ui/TextsKt$TextOnSurface$1;
+Lcom/android/credentialmanager/common/ui/TextsKt$TextOnSurfaceVariant$1;
+Lcom/android/credentialmanager/common/ui/TextsKt$TextSecondary$1;
+Lcom/android/credentialmanager/common/ui/TextsKt;
+Lcom/android/credentialmanager/createflow/ActiveEntry;
+Lcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-1$1;
+Lcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-2$1;
+Lcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-3$1;
+Lcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-4$1;
+Lcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-5$1;
+Lcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$ConfirmationCard$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$ConfirmationCard$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$10;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$11;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$12;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$13;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$14;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$15;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$16;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$17;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$18;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$3;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$4;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$5;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$6;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$7;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$8;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$9;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$WhenMappings;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$3;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$1$1$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreationSelectionCard$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$ExternalOnlySelectionCard$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$ExternalOnlySelectionCard$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$3;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsRowIntroCard$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsRowIntroCard$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$3;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$4;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$ProviderSelectionCard$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$ProviderSelectionCard$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$RemoteEntryRow$1$1;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$RemoteEntryRow$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialComponentsKt;
+Lcom/android/credentialmanager/createflow/CreateCredentialUiState;
+Lcom/android/credentialmanager/createflow/CreateCredentialViewModel$dialogResult$2;
+Lcom/android/credentialmanager/createflow/CreateCredentialViewModel;
+Lcom/android/credentialmanager/createflow/CreateOptionInfo;
+Lcom/android/credentialmanager/createflow/CreateScreenState;
+Lcom/android/credentialmanager/createflow/DisabledProviderInfo;
+Lcom/android/credentialmanager/createflow/EnabledProviderInfo;
+Lcom/android/credentialmanager/createflow/EntryInfo;
+Lcom/android/credentialmanager/createflow/ProviderInfo;
+Lcom/android/credentialmanager/createflow/RemoteInfo;
+Lcom/android/credentialmanager/createflow/RequestDisplayInfo;
+Lcom/android/credentialmanager/getflow/EntryInfo;
+Lcom/android/credentialmanager/getflow/GetCredentialComponentsKt;
+Lcom/android/credentialmanager/getflow/GetCredentialUiState;
+Lcom/android/credentialmanager/getflow/GetCredentialViewModel;
+Lcom/android/credentialmanager/getflow/GetScreenState;
+Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;
+Lcom/android/credentialmanager/getflow/RequestDisplayInfo;
+Lcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest$Companion;
+Lcom/android/credentialmanager/jetpack/developer/CreateCredentialRequest;
+Lcom/android/credentialmanager/jetpack/developer/CreateCustomCredentialRequest;
+Lcom/android/credentialmanager/jetpack/developer/CreatePasswordRequest$Companion;
+Lcom/android/credentialmanager/jetpack/developer/CreatePasswordRequest;
+Lcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest$Companion;
+Lcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest;
+Lcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequestPrivileged$Companion;
+Lcom/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequestPrivileged;
+Lcom/android/credentialmanager/jetpack/developer/FrameworkClassParsingException;
+Lcom/android/credentialmanager/jetpack/provider/Action$Companion;
+Lcom/android/credentialmanager/jetpack/provider/Action;
+Lcom/android/credentialmanager/jetpack/provider/CreateEntry$Companion;
+Lcom/android/credentialmanager/jetpack/provider/CreateEntry;
+Lcom/android/credentialmanager/jetpack/provider/CredentialCountInformation$Companion;
+Lcom/android/credentialmanager/jetpack/provider/CredentialCountInformation;
+Lcom/android/credentialmanager/jetpack/provider/CredentialEntry$Companion;
+Lcom/android/credentialmanager/jetpack/provider/CredentialEntry;
+Lcom/android/credentialmanager/ui/theme/AndroidColorScheme;
+Lcom/android/credentialmanager/ui/theme/AndroidColorSchemeKt$LocalAndroidColorScheme$1;
+Lcom/android/credentialmanager/ui/theme/AndroidColorSchemeKt;
+Lcom/android/credentialmanager/ui/theme/ColorKt;
+Lcom/android/credentialmanager/ui/theme/EntryShape;
+Lcom/android/credentialmanager/ui/theme/ShapeKt;
+Lcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$1$1;
+Lcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$1;
+Lcom/android/credentialmanager/ui/theme/ThemeKt$CredentialSelectorTheme$2;
+Lcom/android/credentialmanager/ui/theme/ThemeKt;
+Lcom/android/credentialmanager/ui/theme/TypeKt;
+Lkotlin/ExceptionsKt;
+Lkotlin/ExceptionsKt__ExceptionsKt;
+Lkotlin/Function;
+Lkotlin/InitializedLazyImpl;
+Lkotlin/KotlinNothingValueException;
+Lkotlin/Lazy;
+Lkotlin/LazyKt;
+Lkotlin/LazyKt__LazyJVMKt$WhenMappings;
+Lkotlin/LazyKt__LazyJVMKt;
+Lkotlin/LazyKt__LazyKt;
+Lkotlin/LazyThreadSafetyMode;
+Lkotlin/NoWhenBranchMatchedException;
+Lkotlin/Pair;
+Lkotlin/Result$Companion;
+Lkotlin/Result$Failure;
+Lkotlin/Result;
+Lkotlin/ResultKt;
+Lkotlin/SafePublicationLazyImpl;
+Lkotlin/SynchronizedLazyImpl;
+Lkotlin/TuplesKt;
+Lkotlin/ULong$Companion;
+Lkotlin/ULong;
+Lkotlin/UNINITIALIZED_VALUE;
+Lkotlin/UninitializedPropertyAccessException;
+Lkotlin/Unit;
+Lkotlin/UnsafeLazyImpl;
+Lkotlin/UnsignedKt;
+Lkotlin/collections/AbstractCollection$toString$1;
+Lkotlin/collections/AbstractCollection;
+Lkotlin/collections/AbstractList$Companion;
+Lkotlin/collections/AbstractList$IteratorImpl;
+Lkotlin/collections/AbstractList$ListIteratorImpl;
+Lkotlin/collections/AbstractList;
+Lkotlin/collections/AbstractMap$Companion;
+Lkotlin/collections/AbstractMap$toString$1;
+Lkotlin/collections/AbstractMap;
+Lkotlin/collections/AbstractMutableCollection;
+Lkotlin/collections/AbstractMutableList;
+Lkotlin/collections/AbstractMutableMap;
+Lkotlin/collections/AbstractMutableSet;
+Lkotlin/collections/AbstractSet$Companion;
+Lkotlin/collections/AbstractSet;
+Lkotlin/collections/ArrayAsCollection;
+Lkotlin/collections/ArrayDeque$Companion;
+Lkotlin/collections/ArrayDeque;
+Lkotlin/collections/ArraysKt;
+Lkotlin/collections/ArraysKt__ArraysJVMKt;
+Lkotlin/collections/ArraysKt__ArraysKt;
+Lkotlin/collections/ArraysKt___ArraysJvmKt;
+Lkotlin/collections/ArraysKt___ArraysKt;
+Lkotlin/collections/ArraysUtilJVM;
+Lkotlin/collections/CollectionsKt;
+Lkotlin/collections/CollectionsKt__CollectionsJVMKt;
+Lkotlin/collections/CollectionsKt__CollectionsKt;
+Lkotlin/collections/CollectionsKt__IterablesKt;
+Lkotlin/collections/CollectionsKt__IteratorsJVMKt;
+Lkotlin/collections/CollectionsKt__IteratorsKt;
+Lkotlin/collections/CollectionsKt__MutableCollectionsJVMKt;
+Lkotlin/collections/CollectionsKt__MutableCollectionsKt;
+Lkotlin/collections/CollectionsKt__ReversedViewsKt;
+Lkotlin/collections/CollectionsKt___CollectionsJvmKt;
+Lkotlin/collections/CollectionsKt___CollectionsKt;
+Lkotlin/collections/EmptyIterator;
+Lkotlin/collections/EmptyList;
+Lkotlin/collections/EmptyMap;
+Lkotlin/collections/EmptySet;
+Lkotlin/collections/IntIterator;
+Lkotlin/collections/MapsKt;
+Lkotlin/collections/MapsKt__MapWithDefaultKt;
+Lkotlin/collections/MapsKt__MapsJVMKt;
+Lkotlin/collections/MapsKt__MapsKt;
+Lkotlin/collections/MapsKt___MapsJvmKt;
+Lkotlin/collections/MapsKt___MapsKt;
+Lkotlin/collections/SetsKt__SetsJVMKt;
+Lkotlin/collections/SetsKt__SetsKt;
+Lkotlin/collections/builders/ListBuilder;
+Lkotlin/collections/builders/MapBuilder;
+Lkotlin/comparisons/ComparisonsKt;
+Lkotlin/comparisons/ComparisonsKt__ComparisonsKt;
+Lkotlin/comparisons/ComparisonsKt___ComparisonsJvmKt;
+Lkotlin/comparisons/ComparisonsKt___ComparisonsKt;
+Lkotlin/coroutines/AbstractCoroutineContextElement;
+Lkotlin/coroutines/AbstractCoroutineContextKey;
+Lkotlin/coroutines/CombinedContext$Serialized;
+Lkotlin/coroutines/CombinedContext$toString$1;
+Lkotlin/coroutines/CombinedContext$writeReplace$1;
+Lkotlin/coroutines/CombinedContext;
+Lkotlin/coroutines/Continuation;
+Lkotlin/coroutines/ContinuationInterceptor$DefaultImpls;
+Lkotlin/coroutines/ContinuationInterceptor$Key;
+Lkotlin/coroutines/ContinuationInterceptor;
+Lkotlin/coroutines/ContinuationKt;
+Lkotlin/coroutines/CoroutineContext$DefaultImpls;
+Lkotlin/coroutines/CoroutineContext$Element$DefaultImpls;
+Lkotlin/coroutines/CoroutineContext$Element;
+Lkotlin/coroutines/CoroutineContext$Key;
+Lkotlin/coroutines/CoroutineContext$plus$1;
+Lkotlin/coroutines/CoroutineContext;
+Lkotlin/coroutines/EmptyCoroutineContext;
+Lkotlin/coroutines/SafeContinuation$Companion;
+Lkotlin/coroutines/SafeContinuation;
+Lkotlin/coroutines/intrinsics/CoroutineSingletons;
+Lkotlin/coroutines/intrinsics/IntrinsicsKt;
+Lkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$3;
+Lkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$4;
+Lkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsJvmKt;
+Lkotlin/coroutines/intrinsics/IntrinsicsKt__IntrinsicsKt;
+Lkotlin/coroutines/jvm/internal/BaseContinuationImpl;
+Lkotlin/coroutines/jvm/internal/Boxing;
+Lkotlin/coroutines/jvm/internal/CompletedContinuation;
+Lkotlin/coroutines/jvm/internal/ContinuationImpl;
+Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;
+Lkotlin/coroutines/jvm/internal/DebugMetadataKt;
+Lkotlin/coroutines/jvm/internal/DebugProbesKt;
+Lkotlin/coroutines/jvm/internal/RestrictedContinuationImpl;
+Lkotlin/coroutines/jvm/internal/RestrictedSuspendLambda;
+Lkotlin/coroutines/jvm/internal/SuspendLambda;
+Lkotlin/internal/ProgressionUtilKt;
+Lkotlin/io/CloseableKt;
+Lkotlin/jvm/JvmClassMappingKt;
+Lkotlin/jvm/KotlinReflectionNotSupportedError;
+Lkotlin/jvm/functions/Function0;
+Lkotlin/jvm/functions/Function10;
+Lkotlin/jvm/functions/Function11;
+Lkotlin/jvm/functions/Function12;
+Lkotlin/jvm/functions/Function13;
+Lkotlin/jvm/functions/Function14;
+Lkotlin/jvm/functions/Function15;
+Lkotlin/jvm/functions/Function16;
+Lkotlin/jvm/functions/Function17;
+Lkotlin/jvm/functions/Function18;
+Lkotlin/jvm/functions/Function19;
+Lkotlin/jvm/functions/Function1;
+Lkotlin/jvm/functions/Function20;
+Lkotlin/jvm/functions/Function21;
+Lkotlin/jvm/functions/Function22;
+Lkotlin/jvm/functions/Function2;
+Lkotlin/jvm/functions/Function3;
+Lkotlin/jvm/functions/Function4;
+Lkotlin/jvm/functions/Function5;
+Lkotlin/jvm/functions/Function6;
+Lkotlin/jvm/functions/Function7;
+Lkotlin/jvm/functions/Function8;
+Lkotlin/jvm/functions/Function9;
+Lkotlin/jvm/internal/ArrayIteratorKt;
+Lkotlin/jvm/internal/CallableReference$NoReceiver;
+Lkotlin/jvm/internal/CallableReference;
+Lkotlin/jvm/internal/ClassBasedDeclarationContainer;
+Lkotlin/jvm/internal/ClassReference$Companion;
+Lkotlin/jvm/internal/ClassReference;
+Lkotlin/jvm/internal/CollectionToArray;
+Lkotlin/jvm/internal/DefaultConstructorMarker;
+Lkotlin/jvm/internal/FloatCompanionObject;
+Lkotlin/jvm/internal/FunctionBase;
+Lkotlin/jvm/internal/FunctionReference;
+Lkotlin/jvm/internal/FunctionReferenceImpl;
+Lkotlin/jvm/internal/InlineMarker;
+Lkotlin/jvm/internal/IntCompanionObject;
+Lkotlin/jvm/internal/Intrinsics;
+Lkotlin/jvm/internal/Lambda;
+Lkotlin/jvm/internal/MutablePropertyReference1;
+Lkotlin/jvm/internal/MutablePropertyReference1Impl;
+Lkotlin/jvm/internal/MutablePropertyReference;
+Lkotlin/jvm/internal/PackageReference;
+Lkotlin/jvm/internal/PropertyReference0;
+Lkotlin/jvm/internal/PropertyReference0Impl;
+Lkotlin/jvm/internal/PropertyReference;
+Lkotlin/jvm/internal/Ref$BooleanRef;
+Lkotlin/jvm/internal/Ref$IntRef;
+Lkotlin/jvm/internal/Ref$LongRef;
+Lkotlin/jvm/internal/Ref$ObjectRef;
+Lkotlin/jvm/internal/Reflection;
+Lkotlin/jvm/internal/ReflectionFactory;
+Lkotlin/jvm/internal/SpreadBuilder;
+Lkotlin/jvm/internal/TypeIntrinsics;
+Lkotlin/jvm/internal/markers/KMappedMarker;
+Lkotlin/jvm/internal/markers/KMutableCollection;
+Lkotlin/jvm/internal/markers/KMutableIterable;
+Lkotlin/jvm/internal/markers/KMutableMap$Entry;
+Lkotlin/jvm/internal/markers/KMutableMap;
+Lkotlin/jvm/internal/markers/KMutableSet;
+Lkotlin/math/MathKt;
+Lkotlin/math/MathKt__MathHKt;
+Lkotlin/math/MathKt__MathJVMKt;
+Lkotlin/ranges/ClosedFloatRange;
+Lkotlin/ranges/ClosedFloatingPointRange;
+Lkotlin/ranges/ClosedRange;
+Lkotlin/ranges/IntProgression$Companion;
+Lkotlin/ranges/IntProgression;
+Lkotlin/ranges/IntProgressionIterator;
+Lkotlin/ranges/IntRange$Companion;
+Lkotlin/ranges/IntRange;
+Lkotlin/ranges/RangesKt;
+Lkotlin/ranges/RangesKt__RangesKt;
+Lkotlin/ranges/RangesKt___RangesKt;
+Lkotlin/reflect/KCallable;
+Lkotlin/reflect/KClass;
+Lkotlin/reflect/KDeclarationContainer;
+Lkotlin/reflect/KFunction;
+Lkotlin/reflect/KMutableProperty1;
+Lkotlin/reflect/KProperty0;
+Lkotlin/reflect/KProperty1$Getter;
+Lkotlin/reflect/KProperty1;
+Lkotlin/reflect/KProperty;
+Lkotlin/sequences/ConstrainedOnceSequence;
+Lkotlin/sequences/EmptySequence;
+Lkotlin/sequences/FilteringSequence$iterator$1;
+Lkotlin/sequences/FilteringSequence;
+Lkotlin/sequences/GeneratorSequence$iterator$1;
+Lkotlin/sequences/GeneratorSequence;
+Lkotlin/sequences/Sequence;
+Lkotlin/sequences/SequenceBuilderIterator;
+Lkotlin/sequences/SequenceScope;
+Lkotlin/sequences/SequencesKt;
+Lkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;
+Lkotlin/sequences/SequencesKt__SequenceBuilderKt;
+Lkotlin/sequences/SequencesKt__SequencesJVMKt;
+Lkotlin/sequences/SequencesKt__SequencesKt$asSequence$$inlined$Sequence$1;
+Lkotlin/sequences/SequencesKt__SequencesKt$generateSequence$2;
+Lkotlin/sequences/SequencesKt__SequencesKt;
+Lkotlin/sequences/SequencesKt___SequencesJvmKt;
+Lkotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1;
+Lkotlin/sequences/SequencesKt___SequencesKt;
+Lkotlin/sequences/TransformingSequence$iterator$1;
+Lkotlin/sequences/TransformingSequence;
+Lkotlin/text/CharsKt;
+Lkotlin/text/CharsKt__CharJVMKt;
+Lkotlin/text/CharsKt__CharKt;
+Lkotlin/text/DelimitedRangesSequence;
+Lkotlin/text/StringsKt;
+Lkotlin/text/StringsKt__AppendableKt;
+Lkotlin/text/StringsKt__IndentKt$getIndentFunction$1;
+Lkotlin/text/StringsKt__IndentKt$getIndentFunction$2;
+Lkotlin/text/StringsKt__IndentKt;
+Lkotlin/text/StringsKt__RegexExtensionsJVMKt;
+Lkotlin/text/StringsKt__RegexExtensionsKt;
+Lkotlin/text/StringsKt__StringBuilderJVMKt;
+Lkotlin/text/StringsKt__StringBuilderKt;
+Lkotlin/text/StringsKt__StringNumberConversionsJVMKt;
+Lkotlin/text/StringsKt__StringNumberConversionsKt;
+Lkotlin/text/StringsKt__StringsJVMKt;
+Lkotlin/text/StringsKt__StringsKt$rangesDelimitedBy$2;
+Lkotlin/text/StringsKt__StringsKt$splitToSequence$1;
+Lkotlin/text/StringsKt__StringsKt;
+Lkotlin/text/StringsKt___StringsJvmKt;
+Lkotlin/text/StringsKt___StringsKt;
+Lkotlinx/atomicfu/AtomicArray;
+Lkotlinx/atomicfu/AtomicBoolean$Companion;
+Lkotlinx/atomicfu/AtomicBoolean;
+Lkotlinx/atomicfu/AtomicFU;
+Lkotlinx/atomicfu/AtomicFU_commonKt;
+Lkotlinx/atomicfu/AtomicInt$Companion;
+Lkotlinx/atomicfu/AtomicInt;
+Lkotlinx/atomicfu/AtomicLong$Companion;
+Lkotlinx/atomicfu/AtomicLong;
+Lkotlinx/atomicfu/AtomicRef$Companion;
+Lkotlinx/atomicfu/AtomicRef;
+Lkotlinx/atomicfu/TraceBase$None;
+Lkotlinx/atomicfu/TraceBase;
+Lkotlinx/coroutines/AbstractCoroutine;
+Lkotlinx/coroutines/AbstractTimeSource;
+Lkotlinx/coroutines/AbstractTimeSourceKt;
+Lkotlinx/coroutines/Active;
+Lkotlinx/coroutines/BeforeResumeCancelHandler;
+Lkotlinx/coroutines/BlockingEventLoop;
+Lkotlinx/coroutines/BuildersKt;
+Lkotlinx/coroutines/BuildersKt__BuildersKt;
+Lkotlinx/coroutines/BuildersKt__Builders_commonKt;
+Lkotlinx/coroutines/CancelHandler;
+Lkotlinx/coroutines/CancelHandlerBase;
+Lkotlinx/coroutines/CancellableContinuation$DefaultImpls;
+Lkotlinx/coroutines/CancellableContinuation;
+Lkotlinx/coroutines/CancellableContinuationImpl;
+Lkotlinx/coroutines/CancellableContinuationImplKt;
+Lkotlinx/coroutines/CancellableContinuationKt;
+Lkotlinx/coroutines/CancelledContinuation;
+Lkotlinx/coroutines/ChildContinuation;
+Lkotlinx/coroutines/ChildHandle;
+Lkotlinx/coroutines/ChildHandleNode;
+Lkotlinx/coroutines/ChildJob;
+Lkotlinx/coroutines/CompletableJob;
+Lkotlinx/coroutines/CompletedContinuation;
+Lkotlinx/coroutines/CompletedExceptionally;
+Lkotlinx/coroutines/CompletedWithCancellation;
+Lkotlinx/coroutines/CompletionHandlerBase;
+Lkotlinx/coroutines/CompletionHandlerException;
+Lkotlinx/coroutines/CompletionStateKt;
+Lkotlinx/coroutines/CopyableThrowable;
+Lkotlinx/coroutines/CoroutineContextKt$foldCopies$1;
+Lkotlinx/coroutines/CoroutineContextKt$foldCopies$folded$1;
+Lkotlinx/coroutines/CoroutineContextKt$hasCopyableElements$1;
+Lkotlinx/coroutines/CoroutineContextKt;
+Lkotlinx/coroutines/CoroutineDispatcher$Key$1;
+Lkotlinx/coroutines/CoroutineDispatcher$Key;
+Lkotlinx/coroutines/CoroutineDispatcher;
+Lkotlinx/coroutines/CoroutineExceptionHandler$Key;
+Lkotlinx/coroutines/CoroutineExceptionHandler;
+Lkotlinx/coroutines/CoroutineExceptionHandlerKt;
+Lkotlinx/coroutines/CoroutineId$Key;
+Lkotlinx/coroutines/CoroutineId;
+Lkotlinx/coroutines/CoroutineName$Key;
+Lkotlinx/coroutines/CoroutineName;
+Lkotlinx/coroutines/CoroutineScope;
+Lkotlinx/coroutines/CoroutineScopeKt;
+Lkotlinx/coroutines/CoroutineStart$WhenMappings;
+Lkotlinx/coroutines/CoroutineStart;
+Lkotlinx/coroutines/CoroutinesInternalError;
+Lkotlinx/coroutines/DebugKt;
+Lkotlinx/coroutines/DebugStringsKt;
+Lkotlinx/coroutines/DefaultExecutor;
+Lkotlinx/coroutines/DefaultExecutorKt;
+Lkotlinx/coroutines/Delay;
+Lkotlinx/coroutines/DelayKt;
+Lkotlinx/coroutines/DispatchedCoroutine;
+Lkotlinx/coroutines/DispatchedTask;
+Lkotlinx/coroutines/DispatchedTaskKt;
+Lkotlinx/coroutines/Dispatchers;
+Lkotlinx/coroutines/DisposableHandle;
+Lkotlinx/coroutines/DisposeOnCancel;
+Lkotlinx/coroutines/Empty;
+Lkotlinx/coroutines/EventLoop;
+Lkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask;
+Lkotlinx/coroutines/EventLoopImplBase$DelayedTask;
+Lkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;
+Lkotlinx/coroutines/EventLoopImplBase;
+Lkotlinx/coroutines/EventLoopImplPlatform;
+Lkotlinx/coroutines/EventLoopKt;
+Lkotlinx/coroutines/EventLoop_commonKt;
+Lkotlinx/coroutines/ExceptionsKt;
+Lkotlinx/coroutines/ExecutorCoroutineDispatcher$Key$1;
+Lkotlinx/coroutines/ExecutorCoroutineDispatcher$Key;
+Lkotlinx/coroutines/ExecutorCoroutineDispatcher;
+Lkotlinx/coroutines/GlobalScope;
+Lkotlinx/coroutines/InactiveNodeList;
+Lkotlinx/coroutines/Incomplete;
+Lkotlinx/coroutines/IncompleteStateBox;
+Lkotlinx/coroutines/InvokeOnCancel;
+Lkotlinx/coroutines/InvokeOnCancelling;
+Lkotlinx/coroutines/InvokeOnCompletion;
+Lkotlinx/coroutines/Job$DefaultImpls;
+Lkotlinx/coroutines/Job$Key;
+Lkotlinx/coroutines/Job;
+Lkotlinx/coroutines/JobCancellationException;
+Lkotlinx/coroutines/JobCancellingNode;
+Lkotlinx/coroutines/JobImpl;
+Lkotlinx/coroutines/JobKt;
+Lkotlinx/coroutines/JobKt__JobKt;
+Lkotlinx/coroutines/JobNode;
+Lkotlinx/coroutines/JobSupport$AwaitContinuation;
+Lkotlinx/coroutines/JobSupport$ChildCompletion;
+Lkotlinx/coroutines/JobSupport$Finishing;
+Lkotlinx/coroutines/JobSupport$addLastAtomic$$inlined$addLastIf$1;
+Lkotlinx/coroutines/JobSupport$children$1;
+Lkotlinx/coroutines/JobSupport;
+Lkotlinx/coroutines/JobSupportKt;
+Lkotlinx/coroutines/LazyStandaloneCoroutine;
+Lkotlinx/coroutines/MainCoroutineDispatcher;
+Lkotlinx/coroutines/NodeList;
+Lkotlinx/coroutines/NonDisposableHandle;
+Lkotlinx/coroutines/NotCompleted;
+Lkotlinx/coroutines/ParentJob;
+Lkotlinx/coroutines/RemoveOnCancel;
+Lkotlinx/coroutines/ResumeAwaitOnCompletion;
+Lkotlinx/coroutines/ResumeOnCompletion;
+Lkotlinx/coroutines/StandaloneCoroutine;
+Lkotlinx/coroutines/SupervisorJobImpl;
+Lkotlinx/coroutines/SupervisorKt;
+Lkotlinx/coroutines/ThreadContextElement;
+Lkotlinx/coroutines/ThreadLocalEventLoop;
+Lkotlinx/coroutines/TimeoutCancellationException;
+Lkotlinx/coroutines/Unconfined;
+Lkotlinx/coroutines/UndispatchedCoroutine;
+Lkotlinx/coroutines/UndispatchedMarker;
+Lkotlinx/coroutines/YieldContext$Key;
+Lkotlinx/coroutines/YieldContext;
+Lkotlinx/coroutines/android/AndroidDispatcherFactory;
+Lkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1;
+Lkotlinx/coroutines/android/HandlerContext$scheduleResumeAfterDelay$1;
+Lkotlinx/coroutines/android/HandlerContext;
+Lkotlinx/coroutines/android/HandlerDispatcher;
+Lkotlinx/coroutines/android/HandlerDispatcherKt;
+Lkotlinx/coroutines/channels/AbstractChannel$Itr;
+Lkotlinx/coroutines/channels/AbstractChannel$ReceiveElement;
+Lkotlinx/coroutines/channels/AbstractChannel$ReceiveElementWithUndeliveredHandler;
+Lkotlinx/coroutines/channels/AbstractChannel$ReceiveHasNext;
+Lkotlinx/coroutines/channels/AbstractChannel$RemoveReceiveOnCancel;
+Lkotlinx/coroutines/channels/AbstractChannel$enqueueReceiveInternal$$inlined$addLastIfPrevAndIf$1;
+Lkotlinx/coroutines/channels/AbstractChannel$receiveCatching$1;
+Lkotlinx/coroutines/channels/AbstractChannel;
+Lkotlinx/coroutines/channels/AbstractChannelKt;
+Lkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;
+Lkotlinx/coroutines/channels/AbstractSendChannel$enqueueSend$$inlined$addLastIfPrevAndIf$1;
+Lkotlinx/coroutines/channels/AbstractSendChannel;
+Lkotlinx/coroutines/channels/ArrayChannel$WhenMappings;
+Lkotlinx/coroutines/channels/ArrayChannel;
+Lkotlinx/coroutines/channels/BufferOverflow;
+Lkotlinx/coroutines/channels/Channel$Factory;
+Lkotlinx/coroutines/channels/Channel;
+Lkotlinx/coroutines/channels/ChannelCoroutine;
+Lkotlinx/coroutines/channels/ChannelIterator;
+Lkotlinx/coroutines/channels/ChannelKt;
+Lkotlinx/coroutines/channels/ChannelResult$Closed;
+Lkotlinx/coroutines/channels/ChannelResult$Companion;
+Lkotlinx/coroutines/channels/ChannelResult$Failed;
+Lkotlinx/coroutines/channels/ChannelResult;
+Lkotlinx/coroutines/channels/ChannelsKt;
+Lkotlinx/coroutines/channels/Closed;
+Lkotlinx/coroutines/channels/ConflatedChannel;
+Lkotlinx/coroutines/channels/LinkedListChannel;
+Lkotlinx/coroutines/channels/ProduceKt;
+Lkotlinx/coroutines/channels/ProducerCoroutine;
+Lkotlinx/coroutines/channels/ProducerScope;
+Lkotlinx/coroutines/channels/Receive;
+Lkotlinx/coroutines/channels/ReceiveChannel;
+Lkotlinx/coroutines/channels/ReceiveOrClosed;
+Lkotlinx/coroutines/channels/RendezvousChannel;
+Lkotlinx/coroutines/channels/Send;
+Lkotlinx/coroutines/channels/SendChannel$DefaultImpls;
+Lkotlinx/coroutines/channels/SendChannel;
+Lkotlinx/coroutines/channels/SendElement;
+Lkotlinx/coroutines/channels/SendElementWithUndeliveredHandler;
+Lkotlinx/coroutines/flow/AbstractFlow$collect$1;
+Lkotlinx/coroutines/flow/AbstractFlow;
+Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1;
+Lkotlinx/coroutines/flow/DistinctFlowImpl$collect$2;
+Lkotlinx/coroutines/flow/DistinctFlowImpl;
+Lkotlinx/coroutines/flow/Flow;
+Lkotlinx/coroutines/flow/FlowCollector;
+Lkotlinx/coroutines/flow/FlowKt;
+Lkotlinx/coroutines/flow/FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$2;
+Lkotlinx/coroutines/flow/FlowKt__BuildersKt;
+Lkotlinx/coroutines/flow/FlowKt__ChannelsKt$emitAllImpl$1;
+Lkotlinx/coroutines/flow/FlowKt__ChannelsKt;
+Lkotlinx/coroutines/flow/FlowKt__CollectKt;
+Lkotlinx/coroutines/flow/FlowKt__ContextKt;
+Lkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;
+Lkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultKeySelector$1;
+Lkotlinx/coroutines/flow/FlowKt__DistinctKt;
+Lkotlinx/coroutines/flow/FlowKt__EmittersKt;
+Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$$inlined$unsafeFlow$1;
+Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1;
+Lkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1;
+Lkotlinx/coroutines/flow/FlowKt__LimitKt$emitAbort$1;
+Lkotlinx/coroutines/flow/FlowKt__LimitKt$take$$inlined$unsafeFlow$1$1;
+Lkotlinx/coroutines/flow/FlowKt__LimitKt$take$$inlined$unsafeFlow$1;
+Lkotlinx/coroutines/flow/FlowKt__LimitKt$take$2$1;
+Lkotlinx/coroutines/flow/FlowKt__LimitKt;
+Lkotlinx/coroutines/flow/FlowKt__MergeKt$mapLatest$1;
+Lkotlinx/coroutines/flow/FlowKt__MergeKt;
+Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2$1;
+Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$$inlined$collectWhile$2;
+Lkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3;
+Lkotlinx/coroutines/flow/FlowKt__ReduceKt;
+Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$1;
+Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2$WhenMappings;
+Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1$2;
+Lkotlinx/coroutines/flow/FlowKt__ShareKt$launchSharing$1;
+Lkotlinx/coroutines/flow/FlowKt__ShareKt;
+Lkotlinx/coroutines/flow/MutableSharedFlow;
+Lkotlinx/coroutines/flow/MutableStateFlow;
+Lkotlinx/coroutines/flow/ReadonlyStateFlow;
+Lkotlinx/coroutines/flow/SafeFlow;
+Lkotlinx/coroutines/flow/SharedFlow;
+Lkotlinx/coroutines/flow/SharedFlowImpl$Emitter;
+Lkotlinx/coroutines/flow/SharedFlowImpl$WhenMappings;
+Lkotlinx/coroutines/flow/SharedFlowImpl$collect$1;
+Lkotlinx/coroutines/flow/SharedFlowImpl;
+Lkotlinx/coroutines/flow/SharedFlowKt;
+Lkotlinx/coroutines/flow/SharedFlowSlot;
+Lkotlinx/coroutines/flow/SharingCommand;
+Lkotlinx/coroutines/flow/SharingConfig;
+Lkotlinx/coroutines/flow/SharingStarted$Companion;
+Lkotlinx/coroutines/flow/SharingStarted;
+Lkotlinx/coroutines/flow/StartedEagerly;
+Lkotlinx/coroutines/flow/StartedLazily$command$1;
+Lkotlinx/coroutines/flow/StartedLazily;
+Lkotlinx/coroutines/flow/StartedWhileSubscribed$command$1;
+Lkotlinx/coroutines/flow/StartedWhileSubscribed$command$2;
+Lkotlinx/coroutines/flow/StartedWhileSubscribed;
+Lkotlinx/coroutines/flow/StateFlow;
+Lkotlinx/coroutines/flow/StateFlowImpl$collect$1;
+Lkotlinx/coroutines/flow/StateFlowImpl;
+Lkotlinx/coroutines/flow/StateFlowKt;
+Lkotlinx/coroutines/flow/StateFlowSlot;
+Lkotlinx/coroutines/flow/internal/AbortFlowException;
+Lkotlinx/coroutines/flow/internal/AbstractSharedFlow;
+Lkotlinx/coroutines/flow/internal/AbstractSharedFlowKt;
+Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
+Lkotlinx/coroutines/flow/internal/ChannelFlow$collect$2;
+Lkotlinx/coroutines/flow/internal/ChannelFlow$collectToFun$1;
+Lkotlinx/coroutines/flow/internal/ChannelFlow;
+Lkotlinx/coroutines/flow/internal/ChannelFlowKt;
+Lkotlinx/coroutines/flow/internal/ChannelFlowOperator$collectWithContextUndispatched$2;
+Lkotlinx/coroutines/flow/internal/ChannelFlowOperator;
+Lkotlinx/coroutines/flow/internal/ChannelFlowOperatorImpl;
+Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$2;
+Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1;
+Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1;
+Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3;
+Lkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest;
+Lkotlinx/coroutines/flow/internal/ChildCancelledException;
+Lkotlinx/coroutines/flow/internal/DownstreamExceptionContext;
+Lkotlinx/coroutines/flow/internal/FlowExceptions_commonKt;
+Lkotlinx/coroutines/flow/internal/FusibleFlow$DefaultImpls;
+Lkotlinx/coroutines/flow/internal/FusibleFlow;
+Lkotlinx/coroutines/flow/internal/NoOpContinuation;
+Lkotlinx/coroutines/flow/internal/NopCollector;
+Lkotlinx/coroutines/flow/internal/NullSurrogateKt;
+Lkotlinx/coroutines/flow/internal/SafeCollector$collectContextSize$1;
+Lkotlinx/coroutines/flow/internal/SafeCollector;
+Lkotlinx/coroutines/flow/internal/SafeCollectorKt;
+Lkotlinx/coroutines/flow/internal/SafeCollector_commonKt;
+Lkotlinx/coroutines/flow/internal/SendingCollector;
+Lkotlinx/coroutines/flow/internal/SubscriptionCountStateFlow;
+Lkotlinx/coroutines/internal/ArrayQueue;
+Lkotlinx/coroutines/internal/AtomicKt;
+Lkotlinx/coroutines/internal/AtomicOp;
+Lkotlinx/coroutines/internal/ContextScope;
+Lkotlinx/coroutines/internal/DispatchedContinuation;
+Lkotlinx/coroutines/internal/DispatchedContinuationKt;
+Lkotlinx/coroutines/internal/FastServiceLoader;
+Lkotlinx/coroutines/internal/FastServiceLoaderKt;
+Lkotlinx/coroutines/internal/InlineList;
+Lkotlinx/coroutines/internal/LimitedDispatcher;
+Lkotlinx/coroutines/internal/LimitedDispatcherKt;
+Lkotlinx/coroutines/internal/LockFreeLinkedListHead;
+Lkotlinx/coroutines/internal/LockFreeLinkedListKt;
+Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;
+Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;
+Lkotlinx/coroutines/internal/LockFreeLinkedListNode$toString$1;
+Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+Lkotlinx/coroutines/internal/LockFreeTaskQueue;
+Lkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;
+Lkotlinx/coroutines/internal/LockFreeTaskQueueCore$Placeholder;
+Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;
+Lkotlinx/coroutines/internal/MainDispatcherFactory;
+Lkotlinx/coroutines/internal/MainDispatcherLoader;
+Lkotlinx/coroutines/internal/MainDispatchersKt;
+Lkotlinx/coroutines/internal/MissingMainCoroutineDispatcher;
+Lkotlinx/coroutines/internal/OnUndeliveredElementKt;
+Lkotlinx/coroutines/internal/OpDescriptor;
+Lkotlinx/coroutines/internal/Removed;
+Lkotlinx/coroutines/internal/ResizableAtomicArray;
+Lkotlinx/coroutines/internal/ScopeCoroutine;
+Lkotlinx/coroutines/internal/StackTraceRecoveryKt;
+Lkotlinx/coroutines/internal/Symbol;
+Lkotlinx/coroutines/internal/SystemPropsKt;
+Lkotlinx/coroutines/internal/SystemPropsKt__SystemPropsKt;
+Lkotlinx/coroutines/internal/SystemPropsKt__SystemProps_commonKt;
+Lkotlinx/coroutines/internal/ThreadContextKt$countAll$1;
+Lkotlinx/coroutines/internal/ThreadContextKt$findOne$1;
+Lkotlinx/coroutines/internal/ThreadContextKt$updateState$1;
+Lkotlinx/coroutines/internal/ThreadContextKt;
+Lkotlinx/coroutines/internal/ThreadSafeHeap;
+Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+Lkotlinx/coroutines/internal/ThreadState;
+Lkotlinx/coroutines/internal/UndeliveredElementException;
+Lkotlinx/coroutines/intrinsics/CancellableKt;
+Lkotlinx/coroutines/intrinsics/UndispatchedKt;
+Lkotlinx/coroutines/scheduling/CoroutineScheduler$Companion;
+Lkotlinx/coroutines/scheduling/CoroutineScheduler$WhenMappings;
+Lkotlinx/coroutines/scheduling/CoroutineScheduler$Worker;
+Lkotlinx/coroutines/scheduling/CoroutineScheduler$WorkerState;
+Lkotlinx/coroutines/scheduling/CoroutineScheduler;
+Lkotlinx/coroutines/scheduling/DefaultIoScheduler;
+Lkotlinx/coroutines/scheduling/DefaultScheduler;
+Lkotlinx/coroutines/scheduling/GlobalQueue;
+Lkotlinx/coroutines/scheduling/NanoTimeSource;
+Lkotlinx/coroutines/scheduling/SchedulerCoroutineDispatcher;
+Lkotlinx/coroutines/scheduling/SchedulerTimeSource;
+Lkotlinx/coroutines/scheduling/Task;
+Lkotlinx/coroutines/scheduling/TaskContext;
+Lkotlinx/coroutines/scheduling/TaskContextImpl;
+Lkotlinx/coroutines/scheduling/TaskImpl;
+Lkotlinx/coroutines/scheduling/TasksKt;
+Lkotlinx/coroutines/scheduling/UnlimitedIoScheduler;
+Lkotlinx/coroutines/scheduling/WorkQueue;
+Lkotlinx/coroutines/sync/Empty;
+Lkotlinx/coroutines/sync/Mutex$DefaultImpls;
+Lkotlinx/coroutines/sync/Mutex;
+Lkotlinx/coroutines/sync/MutexImpl$LockCont;
+Lkotlinx/coroutines/sync/MutexImpl$LockWaiter;
+Lkotlinx/coroutines/sync/MutexImpl$LockedQueue;
+Lkotlinx/coroutines/sync/MutexImpl$UnlockOp;
+Lkotlinx/coroutines/sync/MutexImpl$lockSuspend$2$1$1;
+Lkotlinx/coroutines/sync/MutexImpl;
+Lkotlinx/coroutines/sync/MutexKt;
+PLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;->saveState()Landroid/os/Bundle;
+PLandroidx/activity/ComponentActivity$1;->run()V
+PLandroidx/activity/ComponentActivity$2;->onLaunch(ILandroidx/activity/result/contract/ActivityResultContract;Ljava/lang/Object;Landroidx/core/app/ActivityOptionsCompat;)V
+PLandroidx/activity/ComponentActivity$Api19Impl;->cancelPendingInputEvents(Landroid/view/View;)V
+PLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;->run()V
+PLandroidx/activity/ComponentActivity;->$r8$lambda$OnwlVMZzrLePIRy-6IUDTtLLUV0(Landroidx/activity/ComponentActivity;)Landroid/os/Bundle;
+PLandroidx/activity/ComponentActivity;->access$001(Landroidx/activity/ComponentActivity;)V
+PLandroidx/activity/ComponentActivity;->lambda$new$1()Landroid/os/Bundle;
+PLandroidx/activity/ComponentActivity;->onActivityResult(IILandroid/content/Intent;)V
+PLandroidx/activity/ComponentActivity;->onBackPressed()V
+PLandroidx/activity/ComponentActivity;->onNewIntent(Landroid/content/Intent;)V
+PLandroidx/activity/ComponentActivity;->onSaveInstanceState(Landroid/os/Bundle;)V
+PLandroidx/activity/ComponentActivity;->onTrimMemory(I)V
+PLandroidx/activity/ComponentActivity;->startIntentSenderForResult(Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V
+PLandroidx/activity/OnBackPressedDispatcher;->onBackPressed()V
+PLandroidx/activity/compose/ActivityResultLauncherHolder;->launch(Ljava/lang/Object;Landroidx/core/app/ActivityOptionsCompat;)V
+PLandroidx/activity/compose/ActivityResultRegistryKt$rememberLauncherForActivityResult$1$1;->onActivityResult(Ljava/lang/Object;)V
+PLandroidx/activity/compose/ManagedActivityResultLauncher;->launch(Ljava/lang/Object;Landroidx/core/app/ActivityOptionsCompat;)V
+PLandroidx/activity/contextaware/ContextAwareHelper;->clearAvailableContext()V
+PLandroidx/activity/result/ActivityResult$1;-><init>()V
+PLandroidx/activity/result/ActivityResult;-><clinit>()V
+PLandroidx/activity/result/ActivityResult;-><init>(ILandroid/content/Intent;)V
+PLandroidx/activity/result/ActivityResult;->getData()Landroid/content/Intent;
+PLandroidx/activity/result/ActivityResult;->getResultCode()I
+PLandroidx/activity/result/ActivityResultLauncher;->launch(Ljava/lang/Object;)V
+PLandroidx/activity/result/ActivityResultRegistry$3;->launch(Ljava/lang/Object;Landroidx/core/app/ActivityOptionsCompat;)V
+PLandroidx/activity/result/ActivityResultRegistry;->dispatchResult(IILandroid/content/Intent;)Z
+PLandroidx/activity/result/ActivityResultRegistry;->doDispatch(Ljava/lang/String;ILandroid/content/Intent;Landroidx/activity/result/ActivityResultRegistry$CallbackAndContract;)V
+PLandroidx/activity/result/ActivityResultRegistry;->onSaveInstanceState(Landroid/os/Bundle;)V
+PLandroidx/activity/result/IntentSenderRequest$1;-><init>()V
+PLandroidx/activity/result/IntentSenderRequest$Builder;-><init>(Landroid/app/PendingIntent;)V
+PLandroidx/activity/result/IntentSenderRequest$Builder;-><init>(Landroid/content/IntentSender;)V
+PLandroidx/activity/result/IntentSenderRequest$Builder;->build()Landroidx/activity/result/IntentSenderRequest;
+PLandroidx/activity/result/IntentSenderRequest$Builder;->setFillInIntent(Landroid/content/Intent;)Landroidx/activity/result/IntentSenderRequest$Builder;
+PLandroidx/activity/result/IntentSenderRequest;-><clinit>()V
+PLandroidx/activity/result/IntentSenderRequest;-><init>(Landroid/content/IntentSender;Landroid/content/Intent;II)V
+PLandroidx/activity/result/IntentSenderRequest;->getFillInIntent()Landroid/content/Intent;
+PLandroidx/activity/result/IntentSenderRequest;->getFlagsMask()I
+PLandroidx/activity/result/IntentSenderRequest;->getFlagsValues()I
+PLandroidx/activity/result/IntentSenderRequest;->getIntentSender()Landroid/content/IntentSender;
+PLandroidx/activity/result/contract/ActivityResultContract;->getSynchronousResult(Landroid/content/Context;Ljava/lang/Object;)Landroidx/activity/result/contract/ActivityResultContract$SynchronousResult;
+PLandroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult;->createIntent(Landroid/content/Context;Landroidx/activity/result/IntentSenderRequest;)Landroid/content/Intent;
+PLandroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult;->createIntent(Landroid/content/Context;Ljava/lang/Object;)Landroid/content/Intent;
+PLandroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult;->parseResult(ILandroid/content/Intent;)Landroidx/activity/result/ActivityResult;
+PLandroidx/activity/result/contract/ActivityResultContracts$StartIntentSenderForResult;->parseResult(ILandroid/content/Intent;)Ljava/lang/Object;
+PLandroidx/arch/core/internal/SafeIterableMap$DescendingIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
+PLandroidx/arch/core/internal/SafeIterableMap$DescendingIterator;->forward(Landroidx/arch/core/internal/SafeIterableMap$Entry;)Landroidx/arch/core/internal/SafeIterableMap$Entry;
+PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->next()Ljava/lang/Object;
+PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->next()Ljava/util/Map$Entry;
+PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->nextNode()Landroidx/arch/core/internal/SafeIterableMap$Entry;
+PLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V
+PLandroidx/arch/core/internal/SafeIterableMap;->descendingIterator()Ljava/util/Iterator;
+PLandroidx/compose/animation/AndroidFlingSpline$FlingResult;-><clinit>()V
+PLandroidx/compose/animation/AndroidFlingSpline$FlingResult;-><init>(FF)V
+PLandroidx/compose/animation/AndroidFlingSpline$FlingResult;->getDistanceCoefficient()F
+PLandroidx/compose/animation/AndroidFlingSpline$FlingResult;->getVelocityCoefficient()F
+PLandroidx/compose/animation/AndroidFlingSpline;-><clinit>()V
+PLandroidx/compose/animation/AndroidFlingSpline;-><init>()V
+PLandroidx/compose/animation/AndroidFlingSpline;->deceleration(FF)D
+PLandroidx/compose/animation/AndroidFlingSpline;->flingPosition(F)Landroidx/compose/animation/AndroidFlingSpline$FlingResult;
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;-><clinit>()V
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;-><init>()V
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$1;->invoke-8_81llA(J)Landroidx/compose/animation/core/AnimationVector4D;
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1$2;-><init>(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)V
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;-><clinit>()V
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;-><init>()V
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->invoke(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/animation/core/TwoWayConverter;
+PLandroidx/compose/animation/ColorVectorConverterKt$ColorToVector$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/animation/ColorVectorConverterKt;-><clinit>()V
+PLandroidx/compose/animation/ColorVectorConverterKt;->access$getM1$p()[F
+PLandroidx/compose/animation/ColorVectorConverterKt;->access$multiplyColumn(IFFF[F)F
+PLandroidx/compose/animation/ColorVectorConverterKt;->getVectorConverter(Landroidx/compose/ui/graphics/Color$Companion;)Lkotlin/jvm/functions/Function1;
+PLandroidx/compose/animation/ColorVectorConverterKt;->multiplyColumn(IFFF[F)F
+PLandroidx/compose/animation/FlingCalculator$FlingInfo;-><clinit>()V
+PLandroidx/compose/animation/FlingCalculator$FlingInfo;-><init>(FFJ)V
+PLandroidx/compose/animation/FlingCalculator$FlingInfo;->position(J)F
+PLandroidx/compose/animation/FlingCalculator$FlingInfo;->velocity(J)F
+PLandroidx/compose/animation/FlingCalculator;-><init>(FLandroidx/compose/ui/unit/Density;)V
+PLandroidx/compose/animation/FlingCalculator;->computeDeceleration(Landroidx/compose/ui/unit/Density;)F
+PLandroidx/compose/animation/FlingCalculator;->flingDistance(F)F
+PLandroidx/compose/animation/FlingCalculator;->flingDuration(F)J
+PLandroidx/compose/animation/FlingCalculator;->flingInfo(F)Landroidx/compose/animation/FlingCalculator$FlingInfo;
+PLandroidx/compose/animation/FlingCalculator;->getSplineDeceleration(F)D
+PLandroidx/compose/animation/FlingCalculatorKt;-><clinit>()V
+PLandroidx/compose/animation/FlingCalculatorKt;->access$computeDeceleration(FF)F
+PLandroidx/compose/animation/FlingCalculatorKt;->access$getDecelerationRate$p()F
+PLandroidx/compose/animation/FlingCalculatorKt;->computeDeceleration(FF)F
+PLandroidx/compose/animation/SingleValueAnimationKt;-><clinit>()V
+PLandroidx/compose/animation/SingleValueAnimationKt;->animateColorAsState-KTwxG1Y(JLandroidx/compose/animation/core/AnimationSpec;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State;
+PLandroidx/compose/animation/SingleValueAnimationKt;->animateColorAsState-euL9pac(JLandroidx/compose/animation/core/AnimationSpec;Ljava/lang/String;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)Landroidx/compose/runtime/State;
+PLandroidx/compose/animation/SplineBasedDecayKt;->access$computeSplineInfo([F[FI)V
+PLandroidx/compose/animation/SplineBasedDecayKt;->computeSplineInfo([F[FI)V
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;-><clinit>()V
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;-><init>(Landroidx/compose/ui/unit/Density;)V
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->flingDistance(F)F
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->getAbsVelocityThreshold()F
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->getDurationNanos(FF)J
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->getTargetValue(FF)F
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->getValueFromNanos(JFF)F
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec;->getVelocityFromNanos(JFF)F
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;-><clinit>()V
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->getPlatformFlingScrollFriction()F
+PLandroidx/compose/animation/SplineBasedFloatDecayAnimationSpec_androidKt;->rememberSplineBasedDecay(Landroidx/compose/runtime/Composer;I)Landroidx/compose/animation/core/DecayAnimationSpec;
+PLandroidx/compose/animation/core/AnimateAsStateKt;->access$animateValueAsState$lambda$4(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1;
+PLandroidx/compose/animation/core/AnimateAsStateKt;->access$animateValueAsState$lambda$6(Landroidx/compose/runtime/State;)Landroidx/compose/animation/core/AnimationSpec;
+PLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState$lambda$4(Landroidx/compose/runtime/State;)Lkotlin/jvm/functions/Function1;
+PLandroidx/compose/animation/core/AnimateAsStateKt;->animateValueAsState$lambda$6(Landroidx/compose/runtime/State;)Landroidx/compose/animation/core/AnimationSpec;
+PLandroidx/compose/animation/core/AnimationScope;->cancelAnimation()V
+PLandroidx/compose/animation/core/AnimationScope;->getVelocity()Ljava/lang/Object;
+PLandroidx/compose/animation/core/AnimationSpecKt;->access$convert(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/AnimationSpecKt;->convert(Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;)Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/AnimationStateKt;->AnimationState$default(FFJJZILjava/lang/Object;)Landroidx/compose/animation/core/AnimationState;
+PLandroidx/compose/animation/core/AnimationStateKt;->AnimationState(FFJJZ)Landroidx/compose/animation/core/AnimationState;
+PLandroidx/compose/animation/core/AnimationVector4D;-><clinit>()V
+PLandroidx/compose/animation/core/AnimationVector4D;-><init>(FFFF)V
+PLandroidx/compose/animation/core/AnimationVector4D;->getSize$animation_core_release()I
+PLandroidx/compose/animation/core/AnimationVector4D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector4D;
+PLandroidx/compose/animation/core/AnimationVector4D;->newVector$animation_core_release()Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/AnimationVector4D;->set$animation_core_release(IF)V
+PLandroidx/compose/animation/core/AnimationVectorsKt;->AnimationVector(F)Landroidx/compose/animation/core/AnimationVector1D;
+PLandroidx/compose/animation/core/ComplexDouble;-><init>(DD)V
+PLandroidx/compose/animation/core/ComplexDouble;->access$get_imaginary$p(Landroidx/compose/animation/core/ComplexDouble;)D
+PLandroidx/compose/animation/core/ComplexDouble;->access$get_real$p(Landroidx/compose/animation/core/ComplexDouble;)D
+PLandroidx/compose/animation/core/ComplexDouble;->access$set_imaginary$p(Landroidx/compose/animation/core/ComplexDouble;D)V
+PLandroidx/compose/animation/core/ComplexDouble;->access$set_real$p(Landroidx/compose/animation/core/ComplexDouble;D)V
+PLandroidx/compose/animation/core/ComplexDouble;->getReal()D
+PLandroidx/compose/animation/core/ComplexDoubleKt;->complexQuadraticFormula(DDD)Lkotlin/Pair;
+PLandroidx/compose/animation/core/ComplexDoubleKt;->complexSqrt(D)Landroidx/compose/animation/core/ComplexDouble;
+PLandroidx/compose/animation/core/DecayAnimation;-><clinit>()V
+PLandroidx/compose/animation/core/DecayAnimation;-><init>(Landroidx/compose/animation/core/DecayAnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;)V
+PLandroidx/compose/animation/core/DecayAnimation;-><init>(Landroidx/compose/animation/core/VectorizedDecayAnimationSpec;Landroidx/compose/animation/core/TwoWayConverter;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationVector;)V
+PLandroidx/compose/animation/core/DecayAnimation;->getDurationNanos()J
+PLandroidx/compose/animation/core/DecayAnimation;->getTargetValue()Ljava/lang/Object;
+PLandroidx/compose/animation/core/DecayAnimation;->getTypeConverter()Landroidx/compose/animation/core/TwoWayConverter;
+PLandroidx/compose/animation/core/DecayAnimation;->getValueFromNanos(J)Ljava/lang/Object;
+PLandroidx/compose/animation/core/DecayAnimation;->getVelocityVectorFromNanos(J)Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/DecayAnimation;->isInfinite()Z
+PLandroidx/compose/animation/core/DecayAnimationSpecImpl;-><init>(Landroidx/compose/animation/core/FloatDecayAnimationSpec;)V
+PLandroidx/compose/animation/core/DecayAnimationSpecImpl;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedDecayAnimationSpec;
+PLandroidx/compose/animation/core/DecayAnimationSpecKt;->generateDecayAnimationSpec(Landroidx/compose/animation/core/FloatDecayAnimationSpec;)Landroidx/compose/animation/core/DecayAnimationSpec;
+PLandroidx/compose/animation/core/EasingKt;->getFastOutLinearInEasing()Landroidx/compose/animation/core/Easing;
+PLandroidx/compose/animation/core/FloatSpringSpec;-><clinit>()V
+PLandroidx/compose/animation/core/FloatSpringSpec;-><init>(FFF)V
+PLandroidx/compose/animation/core/FloatSpringSpec;-><init>(FFFILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/animation/core/FloatSpringSpec;->getDurationNanos(FFF)J
+PLandroidx/compose/animation/core/FloatSpringSpec;->getEndVelocity(FFF)F
+PLandroidx/compose/animation/core/Motion;->constructor-impl(J)J
+PLandroidx/compose/animation/core/Motion;->getValue-impl(J)F
+PLandroidx/compose/animation/core/Motion;->getVelocity-impl(J)F
+PLandroidx/compose/animation/core/SpringEstimationKt$estimateCriticallyDamped$fn$1;-><init>(DDDD)V
+PLandroidx/compose/animation/core/SpringEstimationKt$estimateCriticallyDamped$fn$1;->invoke(D)Ljava/lang/Double;
+PLandroidx/compose/animation/core/SpringEstimationKt$estimateCriticallyDamped$fn$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/animation/core/SpringEstimationKt$estimateCriticallyDamped$fnPrime$1;-><init>(DDD)V
+PLandroidx/compose/animation/core/SpringEstimationKt$estimateCriticallyDamped$fnPrime$1;->invoke(D)Ljava/lang/Double;
+PLandroidx/compose/animation/core/SpringEstimationKt$estimateCriticallyDamped$fnPrime$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/animation/core/SpringEstimationKt;->estimateAnimationDurationMillis(DDDDD)J
+PLandroidx/compose/animation/core/SpringEstimationKt;->estimateAnimationDurationMillis(FFFFF)J
+PLandroidx/compose/animation/core/SpringEstimationKt;->estimateCriticallyDamped$t2Iterate(DD)D
+PLandroidx/compose/animation/core/SpringEstimationKt;->estimateCriticallyDamped(Lkotlin/Pair;DDD)D
+PLandroidx/compose/animation/core/SpringEstimationKt;->estimateDurationInternal(Lkotlin/Pair;DDDD)J
+PLandroidx/compose/animation/core/SpringSimulation;-><init>(F)V
+PLandroidx/compose/animation/core/SpringSimulation;->getDampingRatio()F
+PLandroidx/compose/animation/core/SpringSimulation;->getStiffness()F
+PLandroidx/compose/animation/core/SpringSimulation;->init()V
+PLandroidx/compose/animation/core/SpringSimulation;->setDampingRatio(F)V
+PLandroidx/compose/animation/core/SpringSimulation;->setFinalPosition(F)V
+PLandroidx/compose/animation/core/SpringSimulation;->setStiffness(F)V
+PLandroidx/compose/animation/core/SpringSimulationKt;-><clinit>()V
+PLandroidx/compose/animation/core/SpringSimulationKt;->Motion(FF)J
+PLandroidx/compose/animation/core/SpringSimulationKt;->getUNSET()F
+PLandroidx/compose/animation/core/SpringSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedAnimationSpec;
+PLandroidx/compose/animation/core/SpringSpec;->vectorize(Landroidx/compose/animation/core/TwoWayConverter;)Landroidx/compose/animation/core/VectorizedSpringSpec;
+PLandroidx/compose/animation/core/SuspendAnimationKt$animate$6$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/animation/core/SuspendAnimationKt$animate$6$1;->invoke()V
+PLandroidx/compose/animation/core/SuspendAnimationKt;->animateDecay$default(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/DecayAnimationSpec;ZLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/animation/core/SuspendAnimationKt;->animateDecay(Landroidx/compose/animation/core/AnimationState;Landroidx/compose/animation/core/DecayAnimationSpec;ZLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/animation/core/VectorConvertersKt$FloatToVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;-><init>(FF)V
+PLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;->get(I)Landroidx/compose/animation/core/FloatAnimationSpec;
+PLandroidx/compose/animation/core/VectorizedAnimationSpecKt$createSpringAnimations$2;->get(I)Landroidx/compose/animation/core/FloatSpringSpec;
+PLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->access$createSpringAnimations(Landroidx/compose/animation/core/AnimationVector;FF)Landroidx/compose/animation/core/Animations;
+PLandroidx/compose/animation/core/VectorizedAnimationSpecKt;->createSpringAnimations(Landroidx/compose/animation/core/AnimationVector;FF)Landroidx/compose/animation/core/Animations;
+PLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J
+PLandroidx/compose/animation/core/VectorizedFloatAnimationSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/VectorizedFloatDecaySpec;-><init>(Landroidx/compose/animation/core/FloatDecayAnimationSpec;)V
+PLandroidx/compose/animation/core/VectorizedFloatDecaySpec;->getAbsVelocityThreshold()F
+PLandroidx/compose/animation/core/VectorizedFloatDecaySpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J
+PLandroidx/compose/animation/core/VectorizedFloatDecaySpec;->getTargetValue(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/VectorizedFloatDecaySpec;->getValueFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/VectorizedFloatDecaySpec;->getVelocityFromNanos(JLandroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/VectorizedSpringSpec;-><clinit>()V
+PLandroidx/compose/animation/core/VectorizedSpringSpec;-><init>(FFLandroidx/compose/animation/core/AnimationVector;)V
+PLandroidx/compose/animation/core/VectorizedSpringSpec;-><init>(FFLandroidx/compose/animation/core/Animations;)V
+PLandroidx/compose/animation/core/VectorizedSpringSpec;->getDurationNanos(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)J
+PLandroidx/compose/animation/core/VectorizedSpringSpec;->getEndVelocity(Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;Landroidx/compose/animation/core/AnimationVector;)Landroidx/compose/animation/core/AnimationVector;
+PLandroidx/compose/animation/core/VectorizedSpringSpec;->isInfinite()Z
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;-><init>(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invoke(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;-><init>(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$effectModifier$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;-><init>(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect$onNewSize$1;->invoke-ozmzZPI(J)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;-><init>(Landroid/content/Context;Landroidx/compose/foundation/OverscrollConfiguration;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$animateToRelease(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getBottomEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getBottomEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getContainerSize$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)J
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getLeftEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getLeftEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getPointerId$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroidx/compose/ui/input/pointer/PointerId;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getRightEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getRightEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getTopEffect$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$getTopEffectNegation$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$invalidateOverscroll(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setContainerSize$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;J)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setPointerId$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Landroidx/compose/ui/input/pointer/PointerId;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->access$setPointerPosition$p(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Landroidx/compose/ui/geometry/Offset;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->animateToRelease()V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->consumePostFling-sF-c-tU(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->consumePostScroll-OMhpSzk(JJI)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->consumePreFling-QWom1Mo(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->consumePreScroll-OzD1aCk(JI)J
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->drawOverscroll(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->getEffectModifier()Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->invalidateOverscroll()V
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->isInProgress()Z
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->releaseOppositeOverscroll-k-4lQ0M(J)Z
+PLandroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;->stopOverscrollAnimation()Z
+PLandroidx/compose/foundation/AndroidOverscrollKt$NoOpOverscrollEffect$1;-><init>()V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;-><init>(Landroidx/compose/ui/layout/Placeable;I)V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;-><clinit>()V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;-><init>()V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$1;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;-><init>(Landroidx/compose/ui/layout/Placeable;I)V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;-><clinit>()V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;-><init>()V
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/AndroidOverscrollKt$StretchOverscrollNonClippingLayer$2;->invoke-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/foundation/AndroidOverscrollKt;-><clinit>()V
+PLandroidx/compose/foundation/AndroidOverscrollKt;->access$getStretchOverscrollNonClippingLayer$p()Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/AndroidOverscrollKt;->rememberOverscrollEffect(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/OverscrollEffect;
+PLandroidx/compose/foundation/Api31Impl;-><clinit>()V
+PLandroidx/compose/foundation/Api31Impl;-><init>()V
+PLandroidx/compose/foundation/Api31Impl;->create(Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/Api31Impl;->getDistance(Landroid/widget/EdgeEffect;)F
+PLandroidx/compose/foundation/CheckScrollableContainerConstraintsKt;->checkScrollableContainerConstraints-K40F9xA(JLandroidx/compose/foundation/gestures/Orientation;)V
+PLandroidx/compose/foundation/ClickableKt$PressedInteractionSourceDisposableEffect$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/ClickableKt$clickable$4$1$1$1;->invoke()Ljava/lang/Boolean;
+PLandroidx/compose/foundation/ClickableKt$clickable$4$1$1$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$1;->invoke-d-4ec7I(Landroidx/compose/foundation/gestures/PressGestureScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt$clickable$4$gesture$1$1$2;->invoke-k-4lQ0M(J)V
+PLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;-><init>(Landroidx/compose/runtime/State;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2$delayJob$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;-><init>(Landroidx/compose/foundation/gestures/PressGestureScope;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt$handlePressInteraction$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ClickableKt;->handlePressInteraction-EPk0efs(Landroidx/compose/foundation/gestures/PressGestureScope;JLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/Clickable_androidKt;-><clinit>()V
+PLandroidx/compose/foundation/Clickable_androidKt;->getTapIndicationDelay()J
+PLandroidx/compose/foundation/ClipScrollableContainerKt$HorizontalScrollableClipModifier$1;-><init>()V
+PLandroidx/compose/foundation/ClipScrollableContainerKt$VerticalScrollableClipModifier$1;-><init>()V
+PLandroidx/compose/foundation/ClipScrollableContainerKt$VerticalScrollableClipModifier$1;->createOutline-Pq9zytI(JLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;)Landroidx/compose/ui/graphics/Outline;
+PLandroidx/compose/foundation/ClipScrollableContainerKt;-><clinit>()V
+PLandroidx/compose/foundation/ClipScrollableContainerKt;->clipScrollableContainer(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/Orientation;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/ClipScrollableContainerKt;->getMaxSupportedElevation()F
+PLandroidx/compose/foundation/DrawOverscrollModifier;-><init>(Landroidx/compose/foundation/AndroidEdgeEffectOverscrollEffect;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/foundation/DrawOverscrollModifier;->draw(Landroidx/compose/ui/graphics/drawscope/ContentDrawScope;)V
+PLandroidx/compose/foundation/DrawOverscrollModifier;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/EdgeEffectCompat;-><clinit>()V
+PLandroidx/compose/foundation/EdgeEffectCompat;-><init>()V
+PLandroidx/compose/foundation/EdgeEffectCompat;->create(Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/widget/EdgeEffect;
+PLandroidx/compose/foundation/EdgeEffectCompat;->getDistanceCompat(Landroid/widget/EdgeEffect;)F
+PLandroidx/compose/foundation/FocusableKt$focusGroup$1;-><clinit>()V
+PLandroidx/compose/foundation/FocusableKt$focusGroup$1;-><init>()V
+PLandroidx/compose/foundation/FocusableKt$focusGroup$1;->invoke(Landroidx/compose/ui/focus/FocusProperties;)V
+PLandroidx/compose/foundation/FocusableKt$focusGroup$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/FocusableKt$focusable$2$1$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/FocusableKt$focusable$2$2$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/FocusableKt;->focusGroup(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;-><clinit>()V
+PLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;-><init>()V
+PLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/FocusedBoundsKt$ModifierLocalFocusedBoundsObserver$1;->invoke()Lkotlin/jvm/functions/Function1;
+PLandroidx/compose/foundation/FocusedBoundsKt$onFocusedBoundsChanged$2;-><init>(Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/foundation/FocusedBoundsKt$onFocusedBoundsChanged$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/FocusedBoundsKt$onFocusedBoundsChanged$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/FocusedBoundsKt;-><clinit>()V
+PLandroidx/compose/foundation/FocusedBoundsKt;->getModifierLocalFocusedBoundsObserver()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+PLandroidx/compose/foundation/FocusedBoundsKt;->onFocusedBoundsChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/FocusedBoundsObserverModifier;-><init>(Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/foundation/FocusedBoundsObserverModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+PLandroidx/compose/foundation/FocusedBoundsObserverModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+PLandroidx/compose/foundation/HoverableKt$hoverable$2$1$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/HoverableKt$hoverable$2;->access$invoke$tryEmitExit(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+PLandroidx/compose/foundation/HoverableKt$hoverable$2;->invoke$lambda$1(Landroidx/compose/runtime/MutableState;)Landroidx/compose/foundation/interaction/HoverInteraction$Enter;
+PLandroidx/compose/foundation/HoverableKt$hoverable$2;->invoke$tryEmitExit(Landroidx/compose/runtime/MutableState;Landroidx/compose/foundation/interaction/MutableInteractionSource;)V
+PLandroidx/compose/foundation/ImageKt$Image$2$measure$1;-><clinit>()V
+PLandroidx/compose/foundation/ImageKt$Image$2$measure$1;-><init>()V
+PLandroidx/compose/foundation/ImageKt$Image$2$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+PLandroidx/compose/foundation/ImageKt$Image$2$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ImageKt$Image$2;-><clinit>()V
+PLandroidx/compose/foundation/ImageKt$Image$2;-><init>()V
+PLandroidx/compose/foundation/ImageKt$Image$2;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/foundation/ImageKt$Image$semantics$1$1;-><init>(Ljava/lang/String;)V
+PLandroidx/compose/foundation/ImageKt$Image$semantics$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+PLandroidx/compose/foundation/ImageKt$Image$semantics$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/ImageKt;->Image-5h-nEew(Landroidx/compose/ui/graphics/ImageBitmap;Ljava/lang/String;Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment;Landroidx/compose/ui/layout/ContentScale;FLandroidx/compose/ui/graphics/ColorFilter;ILandroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/foundation/OverscrollConfiguration;-><init>(JLandroidx/compose/foundation/layout/PaddingValues;)V
+PLandroidx/compose/foundation/OverscrollConfiguration;-><init>(JLandroidx/compose/foundation/layout/PaddingValues;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/OverscrollConfiguration;-><init>(JLandroidx/compose/foundation/layout/PaddingValues;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/OverscrollConfiguration;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/OverscrollConfiguration;->getGlowColor-0d7_KjU()J
+PLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;-><clinit>()V
+PLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;-><init>()V
+PLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->invoke()Landroidx/compose/foundation/OverscrollConfiguration;
+PLandroidx/compose/foundation/OverscrollConfigurationKt$LocalOverscrollConfiguration$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/OverscrollConfigurationKt;-><clinit>()V
+PLandroidx/compose/foundation/OverscrollConfigurationKt;->getLocalOverscrollConfiguration()Landroidx/compose/runtime/ProvidableCompositionLocal;
+PLandroidx/compose/foundation/OverscrollKt;->overscroll(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/OverscrollEffect;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/gestures/AndroidConfig;-><clinit>()V
+PLandroidx/compose/foundation/gestures/AndroidConfig;-><init>()V
+PLandroidx/compose/foundation/gestures/AndroidScrollable_androidKt;->platformScrollConfig(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/ScrollConfig;
+PLandroidx/compose/foundation/gestures/ContentInViewModifier$modifier$1;-><init>(Landroidx/compose/foundation/gestures/ContentInViewModifier;)V
+PLandroidx/compose/foundation/gestures/ContentInViewModifier;-><init>(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/gestures/ScrollableState;Z)V
+PLandroidx/compose/foundation/gestures/ContentInViewModifier;->getModifier()Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/gestures/ContentInViewModifier;->onPlaced(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+PLandroidx/compose/foundation/gestures/ContentInViewModifier;->onRemeasured-ozmzZPI(J)V
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior$performFling$2$1;-><init>(Lkotlin/jvm/internal/Ref$FloatRef;Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/jvm/internal/Ref$FloatRef;Landroidx/compose/foundation/gestures/DefaultFlingBehavior;)V
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior$performFling$2$1;->invoke(Landroidx/compose/animation/core/AnimationScope;)V
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior$performFling$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior$performFling$2;-><init>(FLandroidx/compose/foundation/gestures/DefaultFlingBehavior;Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior$performFling$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior$performFling$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior$performFling$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior$performFling$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior;-><init>(Landroidx/compose/animation/core/DecayAnimationSpec;Landroidx/compose/ui/MotionDurationScale;)V
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior;-><init>(Landroidx/compose/animation/core/DecayAnimationSpec;Landroidx/compose/ui/MotionDurationScale;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior;->access$getFlingDecay$p(Landroidx/compose/foundation/gestures/DefaultFlingBehavior;)Landroidx/compose/animation/core/DecayAnimationSpec;
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior;->getLastAnimationCycleCount()I
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior;->performFling(Landroidx/compose/foundation/gestures/ScrollScope;FLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultFlingBehavior;->setLastAnimationCycleCount(I)V
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;-><init>(Landroidx/compose/foundation/gestures/DefaultScrollableState;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invoke(Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;-><init>(Landroidx/compose/foundation/gestures/DefaultScrollableState;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scroll$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scrollScope$1;-><init>(Landroidx/compose/foundation/gestures/DefaultScrollableState;)V
+PLandroidx/compose/foundation/gestures/DefaultScrollableState$scrollScope$1;->scrollBy(F)F
+PLandroidx/compose/foundation/gestures/DefaultScrollableState;-><init>(Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$getScrollMutex$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/foundation/MutatorMutex;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$getScrollScope$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/foundation/gestures/ScrollScope;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState;->access$isScrollingState$p(Landroidx/compose/foundation/gestures/DefaultScrollableState;)Landroidx/compose/runtime/MutableState;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState;->getOnDelta()Lkotlin/jvm/functions/Function1;
+PLandroidx/compose/foundation/gestures/DefaultScrollableState;->isScrollInProgress()Z
+PLandroidx/compose/foundation/gestures/DefaultScrollableState;->scroll(Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DragEvent$DragDelta;-><clinit>()V
+PLandroidx/compose/foundation/gestures/DragEvent$DragDelta;-><init>(J)V
+PLandroidx/compose/foundation/gestures/DragEvent$DragDelta;-><init>(JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/gestures/DragEvent$DragDelta;->getDelta-F1C5BW0()J
+PLandroidx/compose/foundation/gestures/DragEvent$DragStarted;-><clinit>()V
+PLandroidx/compose/foundation/gestures/DragEvent$DragStarted;-><init>(J)V
+PLandroidx/compose/foundation/gestures/DragEvent$DragStarted;-><init>(JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/gestures/DragEvent$DragStarted;->getStartPoint-F1C5BW0()J
+PLandroidx/compose/foundation/gestures/DragEvent$DragStopped;-><clinit>()V
+PLandroidx/compose/foundation/gestures/DragEvent$DragStopped;-><init>(J)V
+PLandroidx/compose/foundation/gestures/DragEvent$DragStopped;-><init>(JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/gestures/DragEvent$DragStopped;->getVelocity-9UxMQ8M()J
+PLandroidx/compose/foundation/gestures/DragEvent;-><init>()V
+PLandroidx/compose/foundation/gestures/DragEvent;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt$HorizontalPointerDirectionConfig$1;-><init>()V
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt$VerticalPointerDirectionConfig$1;-><init>()V
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt$VerticalPointerDirectionConfig$1;->crossAxisDelta-k-4lQ0M(J)F
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt$VerticalPointerDirectionConfig$1;->mainAxisDelta-k-4lQ0M(J)F
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt$VerticalPointerDirectionConfig$1;->offsetFromChanges-dBAh8RU(FF)J
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt$verticalDrag$1;-><init>(Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt$verticalDrag$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt;-><clinit>()V
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->access$isPointerUp-DmW0f2w(Landroidx/compose/ui/input/pointer/PointerEvent;J)Z
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->isPointerUp-DmW0f2w(Landroidx/compose/ui/input/pointer/PointerEvent;J)Z
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->pointerSlop-E8SPZFQ(Landroidx/compose/ui/platform/ViewConfiguration;I)F
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->toPointerDirectionConfig(Landroidx/compose/foundation/gestures/Orientation;)Landroidx/compose/foundation/gestures/PointerDirectionConfig;
+PLandroidx/compose/foundation/gestures/DragGestureDetectorKt;->verticalDrag-jO51t88(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;JLkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DragLogic$processDragStart$1;-><init>(Landroidx/compose/foundation/gestures/DragLogic;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/DragLogic$processDragStop$1;-><init>(Landroidx/compose/foundation/gestures/DragLogic;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/DragLogic;->processDragStart(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/gestures/DragEvent$DragStarted;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DragLogic;->processDragStop(Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/gestures/DragEvent$DragStopped;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$postPointerSlop$1;-><init>(Landroidx/compose/ui/input/pointer/util/VelocityTracker;Lkotlin/jvm/internal/Ref$LongRef;)V
+PLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$postPointerSlop$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$awaitDownAndSlop$postPointerSlop$1;->invoke-Uv8p0NA(Landroidx/compose/ui/input/pointer/PointerInputChange;J)V
+PLandroidx/compose/foundation/gestures/DraggableKt$awaitDrag$dragTick$1;-><init>(Landroidx/compose/ui/input/pointer/util/VelocityTracker;Lkotlinx/coroutines/channels/SendChannel;Z)V
+PLandroidx/compose/foundation/gestures/DraggableKt$awaitDrag$dragTick$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputChange;)V
+PLandroidx/compose/foundation/gestures/DraggableKt$awaitDrag$dragTick$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$1;->invoke-d-4ec7I(Lkotlinx/coroutines/CoroutineScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$3;->invoke(Landroidx/compose/ui/input/pointer/PointerInputChange;)Ljava/lang/Boolean;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$4;->invoke()Ljava/lang/Boolean;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$4;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$5;->invoke-LuvzFrg(Lkotlinx/coroutines/CoroutineScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$6;-><init>(Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$6;->invoke-d-4ec7I(Lkotlinx/coroutines/CoroutineScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$6;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$1$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$2$2;-><init>(Lkotlin/jvm/internal/Ref$ObjectRef;Lkotlinx/coroutines/channels/Channel;Landroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$2$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$2$2;->invoke(Landroidx/compose/foundation/gestures/DragScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$9$2$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$9;->access$invoke$lambda$3(Landroidx/compose/runtime/State;)Landroidx/compose/foundation/gestures/DragLogic;
+PLandroidx/compose/foundation/gestures/DraggableKt$draggable$9;->invoke$lambda$3(Landroidx/compose/runtime/State;)Landroidx/compose/foundation/gestures/DragLogic;
+PLandroidx/compose/foundation/gestures/DraggableKt;->access$awaitDrag-Su4bsnU(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerInputChange;JLandroidx/compose/ui/input/pointer/util/VelocityTracker;Lkotlinx/coroutines/channels/SendChannel;ZLandroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt;->access$toFloat-3MmeM6k(JLandroidx/compose/foundation/gestures/Orientation;)F
+PLandroidx/compose/foundation/gestures/DraggableKt;->access$toFloat-sF-c-tU(JLandroidx/compose/foundation/gestures/Orientation;)F
+PLandroidx/compose/foundation/gestures/DraggableKt;->awaitDrag-Su4bsnU(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerInputChange;JLandroidx/compose/ui/input/pointer/util/VelocityTracker;Lkotlinx/coroutines/channels/SendChannel;ZLandroidx/compose/foundation/gestures/Orientation;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/DraggableKt;->draggable$default(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/DraggableState;Lkotlin/jvm/functions/Function1;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/gestures/DraggableKt;->toFloat-3MmeM6k(JLandroidx/compose/foundation/gestures/Orientation;)F
+PLandroidx/compose/foundation/gestures/DraggableKt;->toFloat-sF-c-tU(JLandroidx/compose/foundation/gestures/Orientation;)F
+PLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitAllPointersUp$3;-><init>(Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ForEachGestureKt$awaitAllPointersUp$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ForEachGestureKt;->allPointersUp(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;)Z
+PLandroidx/compose/foundation/gestures/ForEachGestureKt;->awaitAllPointersUp(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/PressGestureScopeImpl$reset$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1;-><init>(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/PressGestureScopeImpl$tryAwaitRelease$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->cancel()V
+PLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->release()V
+PLandroidx/compose/foundation/gestures/PressGestureScopeImpl;->tryAwaitRelease(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollDraggableState$drag$2;-><init>(Landroidx/compose/foundation/gestures/ScrollDraggableState;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollDraggableState$drag$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/ScrollDraggableState$drag$2;->invoke(Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollDraggableState$drag$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollDraggableState$drag$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollDraggableState;-><init>(Landroidx/compose/runtime/State;)V
+PLandroidx/compose/foundation/gestures/ScrollDraggableState;->drag(Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollDraggableState;->dragBy(F)V
+PLandroidx/compose/foundation/gestures/ScrollDraggableState;->setLatestScrollScope(Landroidx/compose/foundation/gestures/ScrollScope;)V
+PLandroidx/compose/foundation/gestures/ScrollableDefaults;-><clinit>()V
+PLandroidx/compose/foundation/gestures/ScrollableDefaults;-><init>()V
+PLandroidx/compose/foundation/gestures/ScrollableDefaults;->flingBehavior(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/gestures/FlingBehavior;
+PLandroidx/compose/foundation/gestures/ScrollableDefaults;->overscrollEffect(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/OverscrollEffect;
+PLandroidx/compose/foundation/gestures/ScrollableDefaults;->reverseDirection(Landroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/foundation/gestures/Orientation;Z)Z
+PLandroidx/compose/foundation/gestures/ScrollableKt$DefaultScrollMotionDurationScale$1;-><init>()V
+PLandroidx/compose/foundation/gestures/ScrollableKt$DefaultScrollMotionDurationScale$1;->fold(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$DefaultScrollMotionDurationScale$1;->get(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext$Element;
+PLandroidx/compose/foundation/gestures/ScrollableKt$DefaultScrollMotionDurationScale$1;->getScaleFactor()F
+PLandroidx/compose/foundation/gestures/ScrollableKt$NoOpScrollScope$1;-><init>()V
+PLandroidx/compose/foundation/gestures/ScrollableKt$awaitScrollEvent$1;-><init>(Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollableKt$awaitScrollEvent$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$mouseWheelScroll$1$1;-><init>(Landroidx/compose/foundation/gestures/ScrollConfig;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollableKt$mouseWheelScroll$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/ScrollableKt$mouseWheelScroll$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$mouseWheelScroll$1;-><init>(Landroidx/compose/foundation/gestures/ScrollConfig;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollableKt$mouseWheelScroll$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/ScrollableKt$mouseWheelScroll$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$mouseWheelScroll$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$mouseWheelScroll$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;-><clinit>()V
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;-><init>()V
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->invoke(Landroidx/compose/ui/input/pointer/PointerInputChange;)Ljava/lang/Boolean;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;-><init>(Landroidx/compose/runtime/State;)V
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;->invoke()Ljava/lang/Boolean;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$2$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1$1;-><init>(Landroidx/compose/runtime/State;JLkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1;-><init>(Landroidx/compose/runtime/MutableState;Landroidx/compose/runtime/State;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1;->invoke-LuvzFrg(Lkotlinx/coroutines/CoroutineScope;JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$3$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$scrollContainerInfo$1$1;-><init>(ZLandroidx/compose/foundation/gestures/Orientation;)V
+PLandroidx/compose/foundation/gestures/ScrollableKt$pointerScrollable$scrollContainerInfo$1$1;->canScrollVertically()Z
+PLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;-><init>(Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/gestures/ScrollableState;ZLandroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;Z)V
+PLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/gestures/ScrollableKt$scrollable$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt$scrollableNestedScrollConnection$1;-><init>(Landroidx/compose/runtime/State;Z)V
+PLandroidx/compose/foundation/gestures/ScrollableKt;-><clinit>()V
+PLandroidx/compose/foundation/gestures/ScrollableKt;->access$awaitScrollEvent(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->access$getNoOpScrollScope$p()Landroidx/compose/foundation/gestures/ScrollScope;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->access$pointerScrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->access$scrollableNestedScrollConnection(Landroidx/compose/runtime/State;Z)Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->awaitScrollEvent(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->getDefaultScrollMotionDurationScale()Landroidx/compose/ui/MotionDurationScale;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->mouseWheelScroll(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/ScrollConfig;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->pointerScrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->scrollable(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/Orientation;Landroidx/compose/foundation/OverscrollEffect;ZZLandroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/interaction/MutableInteractionSource;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/gestures/ScrollableKt;->scrollableNestedScrollConnection(Landroidx/compose/runtime/State;Z)Landroidx/compose/ui/input/nestedscroll/NestedScrollConnection;
+PLandroidx/compose/foundation/gestures/ScrollableState;->scroll$default(Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollableStateKt;->ScrollableState(Lkotlin/jvm/functions/Function1;)Landroidx/compose/foundation/gestures/ScrollableState;
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$1;-><init>(Landroidx/compose/foundation/gestures/ScrollingLogic;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1;-><init>(Landroidx/compose/foundation/gestures/ScrollingLogic;Landroidx/compose/foundation/gestures/ScrollScope;)V
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2$outerScopeScroll$1;->invoke-MK-Hz9U(J)J
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2$scope$1;-><init>(Landroidx/compose/foundation/gestures/ScrollingLogic;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2$scope$1;->scrollBy(F)F
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2;-><init>(Landroidx/compose/foundation/gestures/ScrollingLogic;Lkotlin/jvm/internal/Ref$LongRef;JLkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2;->invoke(Landroidx/compose/foundation/gestures/ScrollScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollingLogic$doFlingAnimation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollingLogic$onDragStopped$1;-><init>(Landroidx/compose/foundation/gestures/ScrollingLogic;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/ScrollingLogic$onDragStopped$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollingLogic;-><init>(Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/runtime/State;Landroidx/compose/foundation/gestures/ScrollableState;Landroidx/compose/foundation/gestures/FlingBehavior;Landroidx/compose/foundation/OverscrollEffect;)V
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->dispatchScroll-3eAAhYA(Landroidx/compose/foundation/gestures/ScrollScope;JI)J
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->doFlingAnimation-QWom1Mo(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->getFlingBehavior()Landroidx/compose/foundation/gestures/FlingBehavior;
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->getScrollableState()Landroidx/compose/foundation/gestures/ScrollableState;
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->getShouldDispatchOverscroll()Z
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->onDragStopped-sF-c-tU(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->overscrollPostConsumeDelta-OMhpSzk(JJI)V
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->overscrollPreConsumeDelta-OzD1aCk(JI)J
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->registerNestedFling(Z)V
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->reverseIfNeeded(F)F
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->reverseIfNeeded-MK-Hz9U(J)J
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->shouldScrollImmediately()Z
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->singleAxisOffset-MK-Hz9U(J)J
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->singleAxisVelocity-AH228Gc(J)J
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->toFloat-TH1AsA0(J)F
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->toFloat-k-4lQ0M(J)F
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->toOffset-tuRUvjQ(F)J
+PLandroidx/compose/foundation/gestures/ScrollingLogic;->update-QWom1Mo(JF)J
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;-><init>(Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Landroidx/compose/ui/input/pointer/PointerInputChange;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$3;-><init>(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;-><init>(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapAndPress$2$1$4;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$1;-><init>(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$3;-><init>(Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$3;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$3;->invoke(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$5;-><init>(Landroidx/compose/foundation/gestures/PressGestureScopeImpl;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$5;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$detectTapGestures$2$1$5;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2;-><init>(Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt$waitForUpOrCancellation$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->access$getNoPressGesture$p()Lkotlin/jvm/functions/Function3;
+PLandroidx/compose/foundation/gestures/TapGestureDetectorKt;->waitForUpOrCancellation$default(Landroidx/compose/ui/input/pointer/AwaitPointerEventScope;Landroidx/compose/ui/input/pointer/PointerEventPass;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/interaction/DragInteraction$Start;-><clinit>()V
+PLandroidx/compose/foundation/interaction/DragInteraction$Start;-><init>()V
+PLandroidx/compose/foundation/interaction/DragInteraction$Stop;-><clinit>()V
+PLandroidx/compose/foundation/interaction/DragInteraction$Stop;-><init>(Landroidx/compose/foundation/interaction/DragInteraction$Start;)V
+PLandroidx/compose/foundation/interaction/MutableInteractionSourceImpl;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/interaction/PressInteraction$Cancel;-><clinit>()V
+PLandroidx/compose/foundation/interaction/PressInteraction$Cancel;-><init>(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V
+PLandroidx/compose/foundation/interaction/PressInteraction$Cancel;->getPress()Landroidx/compose/foundation/interaction/PressInteraction$Press;
+PLandroidx/compose/foundation/interaction/PressInteraction$Press;->getPressPosition-F1C5BW0()J
+PLandroidx/compose/foundation/interaction/PressInteraction$Release;-><clinit>()V
+PLandroidx/compose/foundation/interaction/PressInteraction$Release;-><init>(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V
+PLandroidx/compose/foundation/interaction/PressInteraction$Release;->getPress()Landroidx/compose/foundation/interaction/PressInteraction$Press;
+PLandroidx/compose/foundation/layout/AndroidWindowInsets;-><init>(ILjava/lang/String;)V
+PLandroidx/compose/foundation/layout/AndroidWindowInsets;->getInsets$foundation_layout_release()Landroidx/core/graphics/Insets;
+PLandroidx/compose/foundation/layout/AndroidWindowInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I
+PLandroidx/compose/foundation/layout/AndroidWindowInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I
+PLandroidx/compose/foundation/layout/AndroidWindowInsets;->getTop(Landroidx/compose/ui/unit/Density;)I
+PLandroidx/compose/foundation/layout/Arrangement$End$1;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V
+PLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;-><init>(FZLkotlin/jvm/functions/Function2;)V
+PLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;-><init>(FZLkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->arrange(Landroidx/compose/ui/unit/Density;I[ILandroidx/compose/ui/unit/LayoutDirection;[I)V
+PLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->arrange(Landroidx/compose/ui/unit/Density;I[I[I)V
+PLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/layout/Arrangement$SpacedAligned;->getSpacing-D9Ej5fM()F
+PLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;-><clinit>()V
+PLandroidx/compose/foundation/layout/Arrangement$spacedBy$1;-><init>()V
+PLandroidx/compose/foundation/layout/Arrangement;->getEnd()Landroidx/compose/foundation/layout/Arrangement$Horizontal;
+PLandroidx/compose/foundation/layout/Arrangement;->placeRightOrBottom$foundation_layout_release(I[I[IZ)V
+PLandroidx/compose/foundation/layout/Arrangement;->spacedBy-0680j_4(F)Landroidx/compose/foundation/layout/Arrangement$HorizontalOrVertical;
+PLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;-><init>(Landroidx/compose/foundation/layout/Arrangement$Vertical;)V
+PLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;->invoke(I[ILandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/ui/unit/Density;[I)V
+PLandroidx/compose/foundation/layout/ColumnKt$columnMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/layout/ExcludeInsets;-><init>(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V
+PLandroidx/compose/foundation/layout/ExcludeInsets;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/layout/ExcludeInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I
+PLandroidx/compose/foundation/layout/ExcludeInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I
+PLandroidx/compose/foundation/layout/ExcludeInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I
+PLandroidx/compose/foundation/layout/ExcludeInsets;->getTop(Landroidx/compose/ui/unit/Density;)I
+PLandroidx/compose/foundation/layout/FixedIntInsets;-><init>(IIII)V
+PLandroidx/compose/foundation/layout/FixedIntInsets;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/layout/FixedIntInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I
+PLandroidx/compose/foundation/layout/FixedIntInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I
+PLandroidx/compose/foundation/layout/FixedIntInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I
+PLandroidx/compose/foundation/layout/FixedIntInsets;->getTop(Landroidx/compose/ui/unit/Density;)I
+PLandroidx/compose/foundation/layout/InsetsListener;-><init>(Landroidx/compose/foundation/layout/WindowInsetsHolder;)V
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;II)V
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier;-><init>(Landroidx/compose/foundation/layout/WindowInsets;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier;->getUnconsumedInsets()Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier;->setConsumedInsets(Landroidx/compose/foundation/layout/WindowInsets;)V
+PLandroidx/compose/foundation/layout/InsetsPaddingModifier;->setUnconsumedInsets(Landroidx/compose/foundation/layout/WindowInsets;)V
+PLandroidx/compose/foundation/layout/InsetsValues;-><init>(IIII)V
+PLandroidx/compose/foundation/layout/LimitInsets;-><init>(Landroidx/compose/foundation/layout/WindowInsets;I)V
+PLandroidx/compose/foundation/layout/LimitInsets;-><init>(Landroidx/compose/foundation/layout/WindowInsets;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/layout/LimitInsets;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/layout/LimitInsets;->getBottom(Landroidx/compose/ui/unit/Density;)I
+PLandroidx/compose/foundation/layout/LimitInsets;->getLeft(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I
+PLandroidx/compose/foundation/layout/LimitInsets;->getRight(Landroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;)I
+PLandroidx/compose/foundation/layout/LimitInsets;->getTop(Landroidx/compose/ui/unit/Density;)I
+PLandroidx/compose/foundation/layout/PaddingKt;->PaddingValues-0680j_4(F)Landroidx/compose/foundation/layout/PaddingValues;
+PLandroidx/compose/foundation/layout/SizeKt$createWrapContentHeightModifier$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/layout/SizeKt$createWrapContentHeightModifier$1;->invoke-5SAbXVA(JLandroidx/compose/ui/unit/LayoutDirection;)J
+PLandroidx/compose/foundation/layout/SizeKt;->wrapContentHeight$default(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment$Vertical;ZILjava/lang/Object;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/layout/SizeKt;->wrapContentHeight(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/Alignment$Vertical;Z)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/layout/UnionInsets;-><init>(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)V
+PLandroidx/compose/foundation/layout/UnionInsets;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/layout/ValueInsets;-><init>(Landroidx/compose/foundation/layout/InsetsValues;Ljava/lang/String;)V
+PLandroidx/compose/foundation/layout/WindowInsets$Companion;-><clinit>()V
+PLandroidx/compose/foundation/layout/WindowInsets$Companion;-><init>()V
+PLandroidx/compose/foundation/layout/WindowInsets;-><clinit>()V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/foundation/layout/WindowInsetsHolder;Landroid/view/View;)V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;-><init>(Landroidx/compose/foundation/layout/WindowInsetsHolder;Landroid/view/View;)V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion$current$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;-><init>()V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->access$systemInsets(Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion;Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/AndroidWindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->access$valueInsetsIgnoringVisibility(Landroidx/compose/foundation/layout/WindowInsetsHolder$Companion;Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->current(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsetsHolder;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->getOrCreateFor(Landroid/view/View;)Landroidx/compose/foundation/layout/WindowInsetsHolder;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->systemInsets(Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/AndroidWindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder$Companion;->valueInsetsIgnoringVisibility(Landroidx/core/view/WindowInsetsCompat;ILjava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder;-><clinit>()V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder;-><init>(Landroidx/core/view/WindowInsetsCompat;Landroid/view/View;)V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder;-><init>(Landroidx/core/view/WindowInsetsCompat;Landroid/view/View;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder;->access$getViewMap$cp()Ljava/util/WeakHashMap;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder;->decrementAccessors(Landroid/view/View;)V
+PLandroidx/compose/foundation/layout/WindowInsetsHolder;->getConsumes()Z
+PLandroidx/compose/foundation/layout/WindowInsetsHolder;->getSystemBars()Landroidx/compose/foundation/layout/AndroidWindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsHolder;->incrementAccessors(Landroid/view/View;)V
+PLandroidx/compose/foundation/layout/WindowInsetsKt;->WindowInsets(IIII)Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsKt;->exclude(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsKt;->only-bOOhFvg(Landroidx/compose/foundation/layout/WindowInsets;I)Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsKt;->union(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;-><clinit>()V
+PLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;-><init>()V
+PLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsetsPaddingKt$ModifierLocalConsumedWindowInsets$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;-><clinit>()V
+PLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->getModifierLocalConsumedWindowInsets()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+PLandroidx/compose/foundation/layout/WindowInsetsPaddingKt;->windowInsetsPadding(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/layout/WindowInsets;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;-><init>()V
+PLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getAllowLeftInLtr-JoeWqyM$foundation_layout_release()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getAllowRightInLtr-JoeWqyM$foundation_layout_release()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getBottom-JoeWqyM()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getHorizontal-JoeWqyM()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides$Companion;->getTop-JoeWqyM()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides;-><clinit>()V
+PLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getAllowLeftInLtr$cp()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getAllowRightInLtr$cp()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getBottom$cp()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getHorizontal$cp()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides;->access$getTop$cp()I
+PLandroidx/compose/foundation/layout/WindowInsetsSides;->constructor-impl(I)I
+PLandroidx/compose/foundation/layout/WindowInsetsSides;->hasAny-bkgdKaI$foundation_layout_release(II)Z
+PLandroidx/compose/foundation/layout/WindowInsetsSides;->plus-gK_yJZ4(II)I
+PLandroidx/compose/foundation/layout/WindowInsets_androidKt;->ValueInsets(Landroidx/core/graphics/Insets;Ljava/lang/String;)Landroidx/compose/foundation/layout/ValueInsets;
+PLandroidx/compose/foundation/layout/WindowInsets_androidKt;->getSystemBars(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/foundation/layout/WindowInsets_androidKt;->toInsetsValues(Landroidx/core/graphics/Insets;)Landroidx/compose/foundation/layout/InsetsValues;
+PLandroidx/compose/foundation/layout/WrapContentModifier$measure$1;-><init>(Landroidx/compose/foundation/layout/WrapContentModifier;ILandroidx/compose/ui/layout/Placeable;ILandroidx/compose/ui/layout/MeasureScope;)V
+PLandroidx/compose/foundation/layout/WrapContentModifier$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+PLandroidx/compose/foundation/layout/WrapContentModifier$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/layout/WrapContentModifier;->access$getAlignmentCallback$p(Landroidx/compose/foundation/layout/WrapContentModifier;)Lkotlin/jvm/functions/Function2;
+PLandroidx/compose/foundation/layout/WrapContentModifier;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/foundation/lazy/AwaitFirstLayoutModifier$waitForFirstLayout$1;-><init>(Landroidx/compose/foundation/lazy/AwaitFirstLayoutModifier;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/lazy/AwaitFirstLayoutModifier;-><init>()V
+PLandroidx/compose/foundation/lazy/AwaitFirstLayoutModifier;->onGloballyPositioned(Landroidx/compose/ui/layout/LayoutCoordinates;)V
+PLandroidx/compose/foundation/lazy/AwaitFirstLayoutModifier;->waitForFirstLayout(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/DataIndex;-><init>(I)V
+PLandroidx/compose/foundation/lazy/DataIndex;->box-impl(I)Landroidx/compose/foundation/lazy/DataIndex;
+PLandroidx/compose/foundation/lazy/DataIndex;->constructor-impl(I)I
+PLandroidx/compose/foundation/lazy/DataIndex;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/lazy/DataIndex;->equals-impl(ILjava/lang/Object;)Z
+PLandroidx/compose/foundation/lazy/DataIndex;->equals-impl0(II)Z
+PLandroidx/compose/foundation/lazy/DataIndex;->unbox-impl()I
+PLandroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo;-><clinit>()V
+PLandroidx/compose/foundation/lazy/EmptyLazyListLayoutInfo;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyBeyondBoundsModifierKt;->lazyListBeyondBoundsModifier(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;ZLandroidx/compose/foundation/gestures/Orientation;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/lazy/LazyDslKt;->LazyColumn(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/foundation/gestures/FlingBehavior;ZLkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/foundation/lazy/LazyItemScopeImpl;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyItemScopeImpl;->setMaxSize(II)V
+PLandroidx/compose/foundation/lazy/LazyListAnimateScrollScope;-><init>(Landroidx/compose/foundation/lazy/LazyListState;)V
+PLandroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;->hasIntervals()Z
+PLandroidx/compose/foundation/lazy/LazyListBeyondBoundsModifierLocal;-><init>(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;ZLandroidx/compose/ui/unit/LayoutDirection;Landroidx/compose/foundation/gestures/Orientation;)V
+PLandroidx/compose/foundation/lazy/LazyListBeyondBoundsModifierLocal;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+PLandroidx/compose/foundation/lazy/LazyListBeyondBoundsModifierLocal;->getValue()Landroidx/compose/ui/layout/BeyondBoundsLayout;
+PLandroidx/compose/foundation/lazy/LazyListBeyondBoundsModifierLocal;->getValue()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListIntervalContent;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;)V
+PLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getItem()Lkotlin/jvm/functions/Function4;
+PLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getKey()Lkotlin/jvm/functions/Function1;
+PLandroidx/compose/foundation/lazy/LazyListIntervalContent;->getType()Lkotlin/jvm/functions/Function1;
+PLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;-><init>(Lkotlinx/coroutines/CoroutineScope;Z)V
+PLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->onMeasured(IIILjava/util/List;Landroidx/compose/foundation/lazy/LazyMeasuredItemProvider;)V
+PLandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;->reset()V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$1;-><init>(Landroidx/compose/foundation/lazy/LazyItemScopeImpl;)V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$1;->invoke(Landroidx/compose/foundation/lazy/LazyListIntervalContent;ILandroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;-><init>(Landroidx/compose/foundation/lazy/layout/IntervalList;Lkotlin/ranges/IntRange;Ljava/util/List;Landroidx/compose/foundation/lazy/LazyItemScopeImpl;)V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->Item(ILandroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getContentType(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getHeaderIndexes()Ljava/util/List;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getItemCount()I
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getItemScope()Landroidx/compose/foundation/lazy/LazyItemScopeImpl;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getKey(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderImpl;->getKeyToIndexMap()Ljava/util/Map;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$1;-><init>(Landroidx/compose/runtime/State;)V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$1;->Item(ILandroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$1;->getContentType(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$1;->getHeaderIndexes()Ljava/util/List;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$1;->getItemCount()I
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$1;->getItemScope()Landroidx/compose/foundation/lazy/LazyItemScopeImpl;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$1;->getKey(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$1;->getKeyToIndexMap()Ljava/util/Map;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$itemProviderState$1;-><init>(Landroidx/compose/runtime/State;Landroidx/compose/runtime/State;Landroidx/compose/foundation/lazy/LazyItemScopeImpl;)V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$itemProviderState$1;->invoke()Landroidx/compose/foundation/lazy/LazyListItemProviderImpl;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$1$itemProviderState$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$1$1;-><init>(Landroidx/compose/foundation/lazy/LazyListState;)V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$1$1;->invoke()Ljava/lang/Integer;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$1$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$2;-><clinit>()V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$2;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$2;->invoke()Ljava/lang/Integer;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$2;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$3;-><clinit>()V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$3;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$3;->invoke()Ljava/lang/Integer;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt$rememberLazyListItemProvider$nearestItemsRangeState$3;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListItemProviderKt;->rememberLazyListItemProvider(Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/lazy/LazyListItemProvider;
+PLandroidx/compose/foundation/lazy/LazyListKt$ScrollPositionUpdater$1;-><init>(Landroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/LazyListState;I)V
+PLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;JII)V
+PLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;->invoke(IILkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1$measuredItemProvider$1;-><init>(IILandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;ZLandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;ZIILandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;J)V
+PLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;-><init>(ZLandroidx/compose/foundation/layout/PaddingValues;ZLandroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;ILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;)V
+PLandroidx/compose/foundation/lazy/LazyListKt$rememberLazyListMeasurePolicy$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListKt;->LazyList(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/layout/PaddingValues;ZZLandroidx/compose/foundation/gestures/FlingBehavior;ZILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;III)V
+PLandroidx/compose/foundation/lazy/LazyListKt;->ScrollPositionUpdater(Landroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/LazyListKt;->rememberLazyListMeasurePolicy(Landroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;Landroidx/compose/foundation/layout/PaddingValues;ZZILandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;Landroidx/compose/runtime/Composer;III)Lkotlin/jvm/functions/Function2;
+PLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;-><init>(Ljava/util/List;Landroidx/compose/foundation/lazy/LazyListPositionedItem;)V
+PLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+PLandroidx/compose/foundation/lazy/LazyListMeasureKt$measureLazyList$5;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListMeasureKt;-><clinit>()V
+PLandroidx/compose/foundation/lazy/LazyListMeasureKt;->calculateItemsOffsets(Ljava/util/List;Ljava/util/List;Ljava/util/List;IIIIIZLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;ZLandroidx/compose/ui/unit/Density;)Ljava/util/List;
+PLandroidx/compose/foundation/lazy/LazyListMeasureKt;->createItemsAfterList(Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;Ljava/util/List;Landroidx/compose/foundation/lazy/LazyMeasuredItemProvider;II)Ljava/util/List;
+PLandroidx/compose/foundation/lazy/LazyListMeasureKt;->createItemsBeforeList-aZfr-iw(Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;ILandroidx/compose/foundation/lazy/LazyMeasuredItemProvider;II)Ljava/util/List;
+PLandroidx/compose/foundation/lazy/LazyListMeasureKt;->getNotInEmptyRange(I)Z
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;-><init>(Landroidx/compose/foundation/lazy/LazyMeasuredItem;IZFLandroidx/compose/ui/layout/MeasureResult;Ljava/util/List;IIIZLandroidx/compose/foundation/gestures/Orientation;I)V
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getAlignmentLines()Ljava/util/Map;
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getCanScrollForward()Z
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getConsumedScroll()F
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getFirstVisibleItem()Landroidx/compose/foundation/lazy/LazyMeasuredItem;
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getFirstVisibleItemScrollOffset()I
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getHeight()I
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getTotalItemsCount()I
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getVisibleItemsInfo()Ljava/util/List;
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->getWidth()I
+PLandroidx/compose/foundation/lazy/LazyListMeasureResult;->placeChildren()V
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier$Companion$EmptyPinnedItemsHandle$1;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier$Companion;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier;-><clinit>()V
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier;-><init>(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;)V
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier;->getValue()Landroidx/compose/foundation/lazy/layout/PinnableParent;
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier;->getValue()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListPinningModifier;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+PLandroidx/compose/foundation/lazy/LazyListPinningModifierKt;->lazyListPinningModifier(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/LazyListBeyondBoundsInfo;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/lazy/LazyListPlaceableWrapper;-><init>(JLandroidx/compose/ui/layout/Placeable;)V
+PLandroidx/compose/foundation/lazy/LazyListPlaceableWrapper;-><init>(JLandroidx/compose/ui/layout/Placeable;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/LazyListPlaceableWrapper;->getOffset-nOcc-ac()J
+PLandroidx/compose/foundation/lazy/LazyListPlaceableWrapper;->getPlaceable()Landroidx/compose/ui/layout/Placeable;
+PLandroidx/compose/foundation/lazy/LazyListPositionedItem;-><init>(IILjava/lang/Object;IIIZLjava/util/List;Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;JZI)V
+PLandroidx/compose/foundation/lazy/LazyListPositionedItem;-><init>(IILjava/lang/Object;IIIZLjava/util/List;Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;JZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/LazyListPositionedItem;->getAnimationSpec(I)Landroidx/compose/animation/core/FiniteAnimationSpec;
+PLandroidx/compose/foundation/lazy/LazyListPositionedItem;->getHasAnimations()Z
+PLandroidx/compose/foundation/lazy/LazyListPositionedItem;->getIndex()I
+PLandroidx/compose/foundation/lazy/LazyListPositionedItem;->getMainAxisSize(Landroidx/compose/ui/layout/Placeable;)I
+PLandroidx/compose/foundation/lazy/LazyListPositionedItem;->getOffset-Bjo55l4(I)J
+PLandroidx/compose/foundation/lazy/LazyListPositionedItem;->getPlaceablesCount()I
+PLandroidx/compose/foundation/lazy/LazyListScope;->item$default(Landroidx/compose/foundation/lazy/LazyListScope;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;ILjava/lang/Object;)V
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl$item$2;-><init>(Ljava/lang/Object;)V
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl$item$2;->invoke(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl$item$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl$item$3;-><init>(Lkotlin/jvm/functions/Function3;)V
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl$item$3;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;ILandroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl$item$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl;->getHeaderIndexes()Ljava/util/List;
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl;->getIntervals()Landroidx/compose/foundation/lazy/layout/IntervalList;
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl;->item(Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)V
+PLandroidx/compose/foundation/lazy/LazyListScopeImpl;->items(ILkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function4;)V
+PLandroidx/compose/foundation/lazy/LazyListScrollPosition;-><init>(II)V
+PLandroidx/compose/foundation/lazy/LazyListScrollPosition;->getIndex-jQJCoq8()I
+PLandroidx/compose/foundation/lazy/LazyListScrollPosition;->getScrollOffset()I
+PLandroidx/compose/foundation/lazy/LazyListScrollPosition;->setIndex-ZjPyQlc(I)V
+PLandroidx/compose/foundation/lazy/LazyListScrollPosition;->setScrollOffset(I)V
+PLandroidx/compose/foundation/lazy/LazyListScrollPosition;->update-AhXoVpI(II)V
+PLandroidx/compose/foundation/lazy/LazyListScrollPosition;->updateFromMeasureResult(Landroidx/compose/foundation/lazy/LazyListMeasureResult;)V
+PLandroidx/compose/foundation/lazy/LazyListScrollPosition;->updateScrollPositionIfTheFirstItemWasMoved(Landroidx/compose/foundation/lazy/LazyListItemProvider;)V
+PLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1;-><clinit>()V
+PLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/foundation/lazy/LazyListState;)Ljava/util/List;
+PLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$2;-><clinit>()V
+PLandroidx/compose/foundation/lazy/LazyListState$Companion$Saver$2;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListState$Companion;-><init>()V
+PLandroidx/compose/foundation/lazy/LazyListState$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/LazyListState$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver;
+PLandroidx/compose/foundation/lazy/LazyListState$remeasurementModifier$1;-><init>(Landroidx/compose/foundation/lazy/LazyListState;)V
+PLandroidx/compose/foundation/lazy/LazyListState$remeasurementModifier$1;->onRemeasurementAvailable(Landroidx/compose/ui/layout/Remeasurement;)V
+PLandroidx/compose/foundation/lazy/LazyListState$scroll$1;-><init>(Landroidx/compose/foundation/lazy/LazyListState;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/lazy/LazyListState$scroll$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListState$scrollableState$1;-><init>(Landroidx/compose/foundation/lazy/LazyListState;)V
+PLandroidx/compose/foundation/lazy/LazyListState$scrollableState$1;->invoke(F)Ljava/lang/Float;
+PLandroidx/compose/foundation/lazy/LazyListState$scrollableState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListState;-><clinit>()V
+PLandroidx/compose/foundation/lazy/LazyListState;-><init>(II)V
+PLandroidx/compose/foundation/lazy/LazyListState;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver;
+PLandroidx/compose/foundation/lazy/LazyListState;->access$setRemeasurement(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/ui/layout/Remeasurement;)V
+PLandroidx/compose/foundation/lazy/LazyListState;->applyMeasureResult$foundation_release(Landroidx/compose/foundation/lazy/LazyListMeasureResult;)V
+PLandroidx/compose/foundation/lazy/LazyListState;->cancelPrefetchIfVisibleItemsChanged(Landroidx/compose/foundation/lazy/LazyListLayoutInfo;)V
+PLandroidx/compose/foundation/lazy/LazyListState;->getAwaitLayoutModifier$foundation_release()Landroidx/compose/foundation/lazy/AwaitFirstLayoutModifier;
+PLandroidx/compose/foundation/lazy/LazyListState;->getCanScrollBackward()Z
+PLandroidx/compose/foundation/lazy/LazyListState;->getCanScrollForward()Z
+PLandroidx/compose/foundation/lazy/LazyListState;->getFirstVisibleItemIndex()I
+PLandroidx/compose/foundation/lazy/LazyListState;->getFirstVisibleItemScrollOffset()I
+PLandroidx/compose/foundation/lazy/LazyListState;->getInternalInteractionSource$foundation_release()Landroidx/compose/foundation/interaction/MutableInteractionSource;
+PLandroidx/compose/foundation/lazy/LazyListState;->getLayoutInfo()Landroidx/compose/foundation/lazy/LazyListLayoutInfo;
+PLandroidx/compose/foundation/lazy/LazyListState;->getPrefetchState$foundation_release()Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;
+PLandroidx/compose/foundation/lazy/LazyListState;->getPremeasureConstraints-msEJaDk$foundation_release()J
+PLandroidx/compose/foundation/lazy/LazyListState;->getRemeasurement$foundation_release()Landroidx/compose/ui/layout/Remeasurement;
+PLandroidx/compose/foundation/lazy/LazyListState;->getRemeasurementModifier$foundation_release()Landroidx/compose/ui/layout/RemeasurementModifier;
+PLandroidx/compose/foundation/lazy/LazyListState;->getScrollToBeConsumed$foundation_release()F
+PLandroidx/compose/foundation/lazy/LazyListState;->isScrollInProgress()Z
+PLandroidx/compose/foundation/lazy/LazyListState;->notifyPrefetch(F)V
+PLandroidx/compose/foundation/lazy/LazyListState;->onScroll$foundation_release(F)F
+PLandroidx/compose/foundation/lazy/LazyListState;->scroll(Landroidx/compose/foundation/MutatePriority;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListState;->setCanScrollBackward(Z)V
+PLandroidx/compose/foundation/lazy/LazyListState;->setCanScrollForward(Z)V
+PLandroidx/compose/foundation/lazy/LazyListState;->setDensity$foundation_release(Landroidx/compose/ui/unit/Density;)V
+PLandroidx/compose/foundation/lazy/LazyListState;->setPlacementAnimator$foundation_release(Landroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;)V
+PLandroidx/compose/foundation/lazy/LazyListState;->setPremeasureConstraints-BRTryo0$foundation_release(J)V
+PLandroidx/compose/foundation/lazy/LazyListState;->setRemeasurement(Landroidx/compose/ui/layout/Remeasurement;)V
+PLandroidx/compose/foundation/lazy/LazyListState;->updateScrollPositionIfTheFirstItemWasMoved$foundation_release(Landroidx/compose/foundation/lazy/LazyListItemProvider;)V
+PLandroidx/compose/foundation/lazy/LazyListStateKt$rememberLazyListState$1$1;-><init>(II)V
+PLandroidx/compose/foundation/lazy/LazyListStateKt$rememberLazyListState$1$1;->invoke()Landroidx/compose/foundation/lazy/LazyListState;
+PLandroidx/compose/foundation/lazy/LazyListStateKt$rememberLazyListState$1$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyListStateKt;->rememberLazyListState(IILandroidx/compose/runtime/Composer;II)Landroidx/compose/foundation/lazy/LazyListState;
+PLandroidx/compose/foundation/lazy/LazyMeasuredItem;-><init>(ILjava/util/List;ZLandroidx/compose/ui/Alignment$Horizontal;Landroidx/compose/ui/Alignment$Vertical;Landroidx/compose/ui/unit/LayoutDirection;ZIILandroidx/compose/foundation/lazy/LazyListItemPlacementAnimator;IJLjava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/LazyMeasuredItem;->getCrossAxisSize()I
+PLandroidx/compose/foundation/lazy/LazyMeasuredItem;->getIndex()I
+PLandroidx/compose/foundation/lazy/LazyMeasuredItem;->getKey()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/LazyMeasuredItem;->getSizeWithSpacings()I
+PLandroidx/compose/foundation/lazy/LazyMeasuredItem;->position(III)Landroidx/compose/foundation/lazy/LazyListPositionedItem;
+PLandroidx/compose/foundation/lazy/LazyMeasuredItemProvider;-><init>(JZLandroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;Landroidx/compose/foundation/lazy/MeasuredItemFactory;)V
+PLandroidx/compose/foundation/lazy/LazyMeasuredItemProvider;-><init>(JZLandroidx/compose/foundation/lazy/LazyListItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScope;Landroidx/compose/foundation/lazy/MeasuredItemFactory;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/LazyMeasuredItemProvider;->getAndMeasure-ZjPyQlc(I)Landroidx/compose/foundation/lazy/LazyMeasuredItem;
+PLandroidx/compose/foundation/lazy/LazyMeasuredItemProvider;->getChildConstraints-msEJaDk()J
+PLandroidx/compose/foundation/lazy/LazySemanticsKt$rememberLazyListSemanticState$1$1$scrollAxisRange$1;-><init>(Landroidx/compose/foundation/lazy/LazyListState;)V
+PLandroidx/compose/foundation/lazy/LazySemanticsKt$rememberLazyListSemanticState$1$1$scrollAxisRange$2;-><init>(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;)V
+PLandroidx/compose/foundation/lazy/LazySemanticsKt$rememberLazyListSemanticState$1$1;-><init>(ZLandroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Z)V
+PLandroidx/compose/foundation/lazy/LazySemanticsKt$rememberLazyListSemanticState$1$1;->collectionInfo()Landroidx/compose/ui/semantics/CollectionInfo;
+PLandroidx/compose/foundation/lazy/LazySemanticsKt$rememberLazyListSemanticState$1$1;->scrollAxisRange()Landroidx/compose/ui/semantics/ScrollAxisRange;
+PLandroidx/compose/foundation/lazy/LazySemanticsKt;->rememberLazyListSemanticState(Landroidx/compose/foundation/lazy/LazyListState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;ZZLandroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;
+PLandroidx/compose/foundation/lazy/layout/DefaultDelegatingLazyLayoutItemProvider$Item$1;-><init>(Landroidx/compose/foundation/lazy/layout/DefaultDelegatingLazyLayoutItemProvider;II)V
+PLandroidx/compose/foundation/lazy/layout/DefaultDelegatingLazyLayoutItemProvider;-><init>(Landroidx/compose/runtime/State;)V
+PLandroidx/compose/foundation/lazy/layout/DefaultDelegatingLazyLayoutItemProvider;->Item(ILandroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/DefaultDelegatingLazyLayoutItemProvider;->getContentType(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/DefaultDelegatingLazyLayoutItemProvider;->getItemCount()I
+PLandroidx/compose/foundation/lazy/layout/DefaultDelegatingLazyLayoutItemProvider;->getKey(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/DefaultDelegatingLazyLayoutItemProvider;->getKeyToIndexMap()Ljava/util/Map;
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion$CREATOR$1;-><init>()V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion;-><init>()V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyKey$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;-><clinit>()V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;-><init>(I)V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyKey;->hashCode()I
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider$generateKeyToIndexMap$1$1;-><init>(IILjava/util/HashMap;)V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider$generateKeyToIndexMap$1$1;->invoke(Landroidx/compose/foundation/lazy/layout/IntervalList$Interval;)V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider$generateKeyToIndexMap$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider;-><init>(Lkotlin/jvm/functions/Function4;Landroidx/compose/foundation/lazy/layout/IntervalList;Lkotlin/ranges/IntRange;)V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider;->Item(ILandroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider;->generateKeyToIndexMap(Lkotlin/ranges/IntRange;Landroidx/compose/foundation/lazy/layout/IntervalList;)Ljava/util/Map;
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider;->getContentType(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider;->getItemCount()I
+PLandroidx/compose/foundation/lazy/layout/DefaultLazyLayoutItemsProvider;->getKeyToIndexMap()Ljava/util/Map;
+PLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;-><clinit>()V
+PLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;-><init>(IILjava/lang/Object;)V
+PLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getSize()I
+PLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getStartIndex()I
+PLandroidx/compose/foundation/lazy/layout/IntervalList$Interval;->getValue()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/IntervalListKt;->access$binarySearch(Landroidx/compose/runtime/collection/MutableVector;I)I
+PLandroidx/compose/foundation/lazy/layout/IntervalListKt;->binarySearch(Landroidx/compose/runtime/collection/MutableVector;I)I
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;I)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent$createContentLambda$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;ILjava/lang/Object;Ljava/lang/Object;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->access$set_content$p(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;Lkotlin/jvm/functions/Function2;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->createContentLambda()Lkotlin/jvm/functions/Function2;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getContent()Lkotlin/jvm/functions/Function2;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getKey()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getLastKnownIndex()I
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory$CachedItemContent;->getType()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;-><init>(Landroidx/compose/runtime/saveable/SaveableStateHolder;Lkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->access$getSaveableStateHolder$p(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;)Landroidx/compose/runtime/saveable/SaveableStateHolder;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getContentType(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;->getItemProvider()Lkotlin/jvm/functions/Function0;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemProviderKt;->DelegatingLazyLayoutItemProvider(Landroidx/compose/runtime/State;)Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemProviderKt;->LazyLayoutItemProvider(Landroidx/compose/foundation/lazy/layout/IntervalList;Lkotlin/ranges/IntRange;Lkotlin/jvm/functions/Function4;)Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemProviderKt;->findIndexByKey(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Ljava/lang/Object;I)I
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy;->areCompatible(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutItemReusePolicy;->getSlotsToRetain(Landroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1$2$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Lkotlin/jvm/functions/Function2;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1$2$1;->invoke-0kLqBqw(Landroidx/compose/ui/layout/SubcomposeMeasureScope;J)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1$itemContentFactory$1$1;-><init>(Landroidx/compose/runtime/State;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1$itemContentFactory$1$1;->invoke()Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1$itemContentFactory$1$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;ILandroidx/compose/runtime/State;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1;->invoke(Landroidx/compose/runtime/saveable/SaveableStateHolder;Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt$LazyLayout$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutKt;->LazyLayout(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/ui/layout/SubcomposeMeasureScope;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->getLayoutDirection()Landroidx/compose/ui/unit/LayoutDirection;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->layout(IILjava/util/Map;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutMeasureScopeImpl;->roundToPx-0680j_4(F)I
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;-><init>()V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->getPrefetcher$foundation_release()Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$Prefetcher;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->schedulePrefetch-0kLqBqw(IJ)Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$PrefetchHandle;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;->setPrefetcher$foundation_release(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$Prefetcher;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;-><init>()V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->access$calculateFrameIntervalIfNeeded(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;Landroid/view/View;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$Companion;->calculateFrameIntervalIfNeeded(Landroid/view/View;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;-><init>(IJ)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;-><init>(IJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;->cancel()V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;->getCanceled()Z
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;->getConstraints-msEJaDk()J
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;->getIndex()I
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;->getMeasured()Z
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;->getPrecomposeHandle()Landroidx/compose/ui/layout/SubcomposeLayoutState$PrecomposedSlotHandle;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher$PrefetchRequest;->setPrecomposeHandle(Landroidx/compose/ui/layout/SubcomposeLayoutState$PrecomposedSlotHandle;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;-><clinit>()V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroid/view/View;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->access$getFrameIntervalNs$cp()J
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->access$setFrameIntervalNs$cp(J)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->calculateAverageTime(JJ)J
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->doFrame(J)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->enoughTimeLeft(JJJ)Z
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->onForgotten()V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->onRemembered()V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->run()V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher;->schedulePrefetch-0kLqBqw(IJ)Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState$PrefetchHandle;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutPrefetcher_androidKt;->LazyLayoutPrefetcher(Landroidx/compose/foundation/lazy/layout/LazyLayoutPrefetchState;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory;Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;-><init>(Lkotlin/jvm/functions/Function1;ZLandroidx/compose/ui/semantics/ScrollAxisRange;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Landroidx/compose/ui/semantics/CollectionInfo;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$indexForKeyMapping$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollByAction$1;-><init>(ZLkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt$lazyLayoutSemantics$1$scrollToIndexAction$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Lkotlinx/coroutines/CoroutineScope;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;)V
+PLandroidx/compose/foundation/lazy/layout/LazyLayoutSemanticsKt;->lazyLayoutSemantics(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/lazy/layout/LazyLayoutItemProvider;Landroidx/compose/foundation/lazy/layout/LazyLayoutSemanticState;Landroidx/compose/foundation/gestures/Orientation;ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1$1;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1$1;->invoke()Lkotlin/ranges/IntRange;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1$2;-><init>(Landroidx/compose/runtime/MutableState;)V
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1$2;->emit(Lkotlin/ranges/IntRange;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/MutableState;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt$rememberLazyNearestItemsRangeState$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt;->access$calculateNearestItemsRange(III)Lkotlin/ranges/IntRange;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt;->calculateNearestItemsRange(III)Lkotlin/ranges/IntRange;
+PLandroidx/compose/foundation/lazy/layout/LazyNearestItemsRangeKt;->rememberLazyNearestItemsRangeState(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;-><clinit>()V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;-><init>()V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;)Ljava/util/Map;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion$saver$2;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;-><init>()V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$Companion;->saver(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)Landroidx/compose/runtime/saveable/Saver;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder$SaveableStateProvider$2;-><init>(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;I)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;-><clinit>()V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;Ljava/util/Map;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->SaveableStateProvider(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->access$getPreviouslyComposedKeys$p(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;)Ljava/util/Set;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->canBeSaved(Ljava/lang/Object;)Z
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->consumeRestored(Ljava/lang/String;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->getWrappedHolder()Landroidx/compose/runtime/saveable/SaveableStateHolder;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->performSave()Ljava/util/Map;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->registerProvider(Ljava/lang/String;Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/saveable/SaveableStateRegistry$Entry;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;->setWrappedHolder(Landroidx/compose/runtime/saveable/SaveableStateHolder;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;-><init>(Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;Lkotlin/jvm/functions/Function3;I)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;->invoke()Landroidx/compose/foundation/lazy/layout/LazySaveableStateHolder;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt$LazySaveableStateHolderProvider$holder$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/LazySaveableStateHolderKt;->LazySaveableStateHolderProvider(Lkotlin/jvm/functions/Function3;Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/foundation/lazy/layout/Lazy_androidKt;->getDefaultLazyLayoutKey(I)Ljava/lang/Object;
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;-><clinit>()V
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;-><init>()V
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->addInterval(ILjava/lang/Object;)V
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->checkIndexBounds(I)V
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->contains(Landroidx/compose/foundation/lazy/layout/IntervalList$Interval;I)Z
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->forEach(IILkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->get(I)Landroidx/compose/foundation/lazy/layout/IntervalList$Interval;
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->getIntervalForIndex(I)Landroidx/compose/foundation/lazy/layout/IntervalList$Interval;
+PLandroidx/compose/foundation/lazy/layout/MutableIntervalList;->getSize()I
+PLandroidx/compose/foundation/relocation/BringIntoViewRequesterKt$bringIntoViewRequester$2$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderKt$bringIntoViewResponder$2;-><init>(Landroidx/compose/foundation/relocation/BringIntoViewResponder;)V
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderKt$bringIntoViewResponder$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderKt$bringIntoViewResponder$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderKt;->bringIntoViewResponder(Landroidx/compose/ui/Modifier;Landroidx/compose/foundation/relocation/BringIntoViewResponder;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderModifier;-><init>(Landroidx/compose/foundation/relocation/BringIntoViewParent;)V
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderModifier;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderModifier;->getValue()Landroidx/compose/foundation/relocation/BringIntoViewParent;
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderModifier;->getValue()Ljava/lang/Object;
+PLandroidx/compose/foundation/relocation/BringIntoViewResponderModifier;->setResponder(Landroidx/compose/foundation/relocation/BringIntoViewResponder;)V
+PLandroidx/compose/foundation/text/TextController;->onForgotten()V
+PLandroidx/compose/foundation/text/TextState;->getSelectable()Landroidx/compose/foundation/text/selection/Selectable;
+PLandroidx/compose/material/icons/Icons$Filled;-><clinit>()V
+PLandroidx/compose/material/icons/Icons$Filled;-><init>()V
+PLandroidx/compose/material/icons/Icons$Outlined;-><clinit>()V
+PLandroidx/compose/material/icons/Icons$Outlined;-><init>()V
+PLandroidx/compose/material/icons/filled/AddKt;-><clinit>()V
+PLandroidx/compose/material/icons/filled/AddKt;->getAdd(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector;
+PLandroidx/compose/material/icons/filled/ArrowBackKt;-><clinit>()V
+PLandroidx/compose/material/icons/filled/ArrowBackKt;->getArrowBack(Landroidx/compose/material/icons/Icons$Filled;)Landroidx/compose/ui/graphics/vector/ImageVector;
+PLandroidx/compose/material/icons/outlined/NewReleasesKt;-><clinit>()V
+PLandroidx/compose/material/icons/outlined/NewReleasesKt;->getNewReleases(Landroidx/compose/material/icons/Icons$Outlined;)Landroidx/compose/ui/graphics/vector/ImageVector;
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance$onInvalidateRipple$1;->invoke()V
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->access$getInvalidateTick(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Z
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->access$setInvalidateTick(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;Z)V
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->addRipple(Landroidx/compose/foundation/interaction/PressInteraction$Press;Lkotlinx/coroutines/CoroutineScope;)V
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->dispose()V
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->onForgotten()V
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->removeRipple(Landroidx/compose/foundation/interaction/PressInteraction$Press;)V
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->resetHostView()V
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->setInvalidateTick(Z)V
+PLandroidx/compose/material/ripple/AndroidRippleIndicationInstance;->setRippleHostView(Landroidx/compose/material/ripple/RippleHostView;)V
+PLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/material/ripple/Ripple$rememberUpdatedInstance$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/material/ripple/RippleContainer;->disposeRippleIfNeeded(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V
+PLandroidx/compose/material/ripple/RippleContainer;->getRippleHostView(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Landroidx/compose/material/ripple/RippleHostView;
+PLandroidx/compose/material/ripple/RippleHostMap;->get(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)Landroidx/compose/material/ripple/RippleHostView;
+PLandroidx/compose/material/ripple/RippleHostMap;->remove(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;)V
+PLandroidx/compose/material/ripple/RippleHostMap;->set(Landroidx/compose/material/ripple/AndroidRippleIndicationInstance;Landroidx/compose/material/ripple/RippleHostView;)V
+PLandroidx/compose/material/ripple/RippleHostView$$ExternalSyntheticLambda0;-><init>(Landroidx/compose/material/ripple/RippleHostView;)V
+PLandroidx/compose/material/ripple/RippleHostView$$ExternalSyntheticLambda0;->run()V
+PLandroidx/compose/material/ripple/RippleHostView;->$r8$lambda$4nztiuYeQHklB-09QfMAnp7Ay8E(Landroidx/compose/material/ripple/RippleHostView;)V
+PLandroidx/compose/material/ripple/RippleHostView;->addRipple-KOepWvA(Landroidx/compose/foundation/interaction/PressInteraction$Press;ZJIJFLkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/material/ripple/RippleHostView;->createRipple(Z)V
+PLandroidx/compose/material/ripple/RippleHostView;->disposeRipple()V
+PLandroidx/compose/material/ripple/RippleHostView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
+PLandroidx/compose/material/ripple/RippleHostView;->removeRipple()V
+PLandroidx/compose/material/ripple/RippleHostView;->setRippleState$lambda$2(Landroidx/compose/material/ripple/RippleHostView;)V
+PLandroidx/compose/material/ripple/RippleHostView;->setRippleState(Z)V
+PLandroidx/compose/material/ripple/RippleHostView;->updateRippleProperties-biQXAtU(JIJF)V
+PLandroidx/compose/material/ripple/UnprojectedRipple$Companion;-><init>()V
+PLandroidx/compose/material/ripple/UnprojectedRipple$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;-><clinit>()V
+PLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;-><init>()V
+PLandroidx/compose/material/ripple/UnprojectedRipple$MRadiusHelper;->setRadius(Landroid/graphics/drawable/RippleDrawable;I)V
+PLandroidx/compose/material/ripple/UnprojectedRipple;-><clinit>()V
+PLandroidx/compose/material/ripple/UnprojectedRipple;-><init>(Z)V
+PLandroidx/compose/material/ripple/UnprojectedRipple;->calculateRippleColor-5vOe2sY(JF)J
+PLandroidx/compose/material/ripple/UnprojectedRipple;->getDirtyBounds()Landroid/graphics/Rect;
+PLandroidx/compose/material/ripple/UnprojectedRipple;->isProjected()Z
+PLandroidx/compose/material/ripple/UnprojectedRipple;->setColor-DxMtmZc(JF)V
+PLandroidx/compose/material/ripple/UnprojectedRipple;->trySetRadius(I)V
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$1$1;-><init>(Landroidx/compose/material3/TopAppBarScrollBehavior;F)V
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$1$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$1$1;->invoke()V
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$2;-><init>(Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/material3/TopAppBarColors;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;ILandroidx/compose/material3/TopAppBarScrollBehavior;)V
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$3;-><init>(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/material3/TopAppBarColors;Landroidx/compose/material3/TopAppBarScrollBehavior;II)V
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$actionsRow$1;-><init>(Lkotlin/jvm/functions/Function3;I)V
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$actionsRow$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/material3/AppBarKt$SingleRowTopAppBar$actionsRow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/material3/AppBarKt$TopAppBarLayout$1$3$1;-><init>(JLkotlin/jvm/functions/Function2;I)V
+PLandroidx/compose/material3/AppBarKt$TopAppBarLayout$1$3$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/material3/AppBarKt$TopAppBarLayout$1$3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/material3/AppBarKt$TopAppBarLayout$2$measure$1;-><init>(Landroidx/compose/ui/layout/Placeable;ILandroidx/compose/ui/layout/Placeable;Landroidx/compose/foundation/layout/Arrangement$Horizontal;JLandroidx/compose/ui/layout/Placeable;Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/foundation/layout/Arrangement$Vertical;II)V
+PLandroidx/compose/material3/AppBarKt$TopAppBarLayout$2$measure$1;->invoke(Landroidx/compose/ui/layout/Placeable$PlacementScope;)V
+PLandroidx/compose/material3/AppBarKt$TopAppBarLayout$2$measure$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/material3/AppBarKt$TopAppBarLayout$2;-><init>(FLandroidx/compose/foundation/layout/Arrangement$Horizontal;Landroidx/compose/foundation/layout/Arrangement$Vertical;I)V
+PLandroidx/compose/material3/AppBarKt$TopAppBarLayout$2;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Ljava/util/List;J)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/material3/AppBarKt;-><clinit>()V
+PLandroidx/compose/material3/AppBarKt;->SingleRowTopAppBar$lambda$3(Landroidx/compose/runtime/State;)J
+PLandroidx/compose/material3/AppBarKt;->SingleRowTopAppBar(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;ZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/material3/TopAppBarColors;Landroidx/compose/material3/TopAppBarScrollBehavior;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/material3/AppBarKt;->TopAppBar(Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Landroidx/compose/foundation/layout/WindowInsets;Landroidx/compose/material3/TopAppBarColors;Landroidx/compose/material3/TopAppBarScrollBehavior;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/material3/AppBarKt;->TopAppBarLayout-kXwM9vE(Landroidx/compose/ui/Modifier;FJJJLkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;FLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;IZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/material3/AppBarKt;->access$TopAppBarLayout-kXwM9vE(Landroidx/compose/ui/Modifier;FJJJLkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;FLandroidx/compose/foundation/layout/Arrangement$Vertical;Landroidx/compose/foundation/layout/Arrangement$Horizontal;IZLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/material3/AppBarKt;->access$getTopAppBarTitleInset$p()F
+PLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/material3/ButtonElevation$animateElevation$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/material3/ButtonKt$Button$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/material3/ButtonKt$Button$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/material3/ChipElevation$animateElevation$1$1$1;->emit(Landroidx/compose/foundation/interaction/Interaction;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/material3/ChipElevation$animateElevation$1$1$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/material3/ChipKt$Chip$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/material3/ChipKt$Chip$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/material3/ChipKt;->access$Chip-nkUnTEs(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function0;ZLkotlin/jvm/functions/Function2;Landroidx/compose/ui/text/TextStyle;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/graphics/Shape;Landroidx/compose/material3/ChipColors;Landroidx/compose/material3/ChipElevation;Landroidx/compose/foundation/BorderStroke;FLandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/interaction/MutableInteractionSource;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/material3/ColorSchemeKt;->applyTonalElevation-Hht5A8o(Landroidx/compose/material3/ColorScheme;JF)J
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-1$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-1$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-10$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-10$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-11$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-11$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-12$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-12$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-2$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-2$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-2$1;->invoke(Landroidx/compose/foundation/layout/RowScope;Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-3$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-3$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-4$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-4$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-5$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-5$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-6$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-6$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-7$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-7$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-8$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-8$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-9$1;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt$lambda-9$1;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt;-><clinit>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt;-><init>()V
+PLandroidx/compose/material3/ComposableSingletons$AppBarKt;->getLambda-2$material3_release()Lkotlin/jvm/functions/Function3;
+PLandroidx/compose/material3/IconButtonColors;-><init>(JJJJ)V
+PLandroidx/compose/material3/IconButtonColors;-><init>(JJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/material3/IconButtonColors;->containerColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+PLandroidx/compose/material3/IconButtonColors;->contentColor$material3_release(ZLandroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/State;
+PLandroidx/compose/material3/IconButtonDefaults;-><clinit>()V
+PLandroidx/compose/material3/IconButtonDefaults;-><init>()V
+PLandroidx/compose/material3/IconButtonDefaults;->iconButtonColors-ro_MJ88(JJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/IconButtonColors;
+PLandroidx/compose/material3/IconButtonKt$IconButton$3;-><init>(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/IconButtonColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;II)V
+PLandroidx/compose/material3/IconButtonKt;->IconButton(Lkotlin/jvm/functions/Function0;Landroidx/compose/ui/Modifier;ZLandroidx/compose/material3/IconButtonColors;Landroidx/compose/foundation/interaction/MutableInteractionSource;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/material3/IconKt$Icon$1;-><init>(Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Landroidx/compose/ui/Modifier;JII)V
+PLandroidx/compose/material3/IconKt$Icon$3;-><init>(Landroidx/compose/ui/graphics/painter/Painter;Ljava/lang/String;Landroidx/compose/ui/Modifier;JII)V
+PLandroidx/compose/material3/IconKt$Icon$semantics$1$1;-><init>(Ljava/lang/String;)V
+PLandroidx/compose/material3/IconKt$Icon$semantics$1$1;->invoke(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;)V
+PLandroidx/compose/material3/IconKt$Icon$semantics$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/material3/IconKt;->Icon-ww6aTOc(Landroidx/compose/ui/graphics/vector/ImageVector;Ljava/lang/String;Landroidx/compose/ui/Modifier;JLandroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/material3/Shapes;->getLarge()Landroidx/compose/foundation/shape/CornerBasedShape;
+PLandroidx/compose/material3/Shapes;->getSmall()Landroidx/compose/foundation/shape/CornerBasedShape;
+PLandroidx/compose/material3/SuggestionChipDefaults;->getShape(Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/Shape;
+PLandroidx/compose/material3/SystemBarsDefaultInsets_androidKt;->getSystemBarsForVisualComponents(Landroidx/compose/foundation/layout/WindowInsets$Companion;Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/material3/TopAppBarColors;-><init>(JJJJJ)V
+PLandroidx/compose/material3/TopAppBarColors;-><init>(JJJJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/material3/TopAppBarColors;->containerColor-XeAY9LY$material3_release(FLandroidx/compose/runtime/Composer;I)J
+PLandroidx/compose/material3/TopAppBarColors;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/material3/TopAppBarColors;->getActionIconContentColor-0d7_KjU$material3_release()J
+PLandroidx/compose/material3/TopAppBarColors;->getNavigationIconContentColor-0d7_KjU$material3_release()J
+PLandroidx/compose/material3/TopAppBarColors;->getTitleContentColor-0d7_KjU$material3_release()J
+PLandroidx/compose/material3/TopAppBarDefaults;-><clinit>()V
+PLandroidx/compose/material3/TopAppBarDefaults;-><init>()V
+PLandroidx/compose/material3/TopAppBarDefaults;->getWindowInsets(Landroidx/compose/runtime/Composer;I)Landroidx/compose/foundation/layout/WindowInsets;
+PLandroidx/compose/material3/TopAppBarDefaults;->smallTopAppBarColors-zjMxDiM(JJJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/TopAppBarColors;
+PLandroidx/compose/material3/TopAppBarDefaults;->topAppBarColors-zjMxDiM(JJJJJLandroidx/compose/runtime/Composer;II)Landroidx/compose/material3/TopAppBarColors;
+PLandroidx/compose/material3/Typography;->getHeadlineSmall()Landroidx/compose/ui/text/TextStyle;
+PLandroidx/compose/material3/tokens/IconButtonTokens;->getStateLayerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens;
+PLandroidx/compose/material3/tokens/IconButtonTokens;->getStateLayerSize-D9Ej5fM()F
+PLandroidx/compose/material3/tokens/SuggestionChipTokens;->getContainerShape()Landroidx/compose/material3/tokens/ShapeKeyTokens;
+PLandroidx/compose/material3/tokens/SuggestionChipTokens;->getLabelTextColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+PLandroidx/compose/material3/tokens/SuggestionChipTokens;->getLeadingIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+PLandroidx/compose/material3/tokens/TopAppBarSmallTokens;-><clinit>()V
+PLandroidx/compose/material3/tokens/TopAppBarSmallTokens;-><init>()V
+PLandroidx/compose/material3/tokens/TopAppBarSmallTokens;->getContainerHeight-D9Ej5fM()F
+PLandroidx/compose/material3/tokens/TopAppBarSmallTokens;->getHeadlineColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+PLandroidx/compose/material3/tokens/TopAppBarSmallTokens;->getHeadlineFont()Landroidx/compose/material3/tokens/TypographyKeyTokens;
+PLandroidx/compose/material3/tokens/TopAppBarSmallTokens;->getLeadingIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+PLandroidx/compose/material3/tokens/TopAppBarSmallTokens;->getOnScrollContainerElevation-D9Ej5fM()F
+PLandroidx/compose/material3/tokens/TopAppBarSmallTokens;->getTrailingIconColor()Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+PLandroidx/compose/runtime/AbstractApplier;->clear()V
+PLandroidx/compose/runtime/BroadcastFrameClock;->minusKey(Lkotlin/coroutines/CoroutineContext$Key;)Lkotlin/coroutines/CoroutineContext;
+PLandroidx/compose/runtime/ComposableSingletons$CompositionKt;->getLambda-2$runtime_release()Lkotlin/jvm/functions/Function2;
+PLandroidx/compose/runtime/ComposerImpl$CompositionContextHolder;->onForgotten()V
+PLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->dispose()V
+PLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->getComposers()Ljava/util/Set;
+PLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->unregisterComposer$runtime_release(Landroidx/compose/runtime/Composer;)V
+PLandroidx/compose/runtime/ComposerImpl$CompositionContextImpl;->unregisterComposition$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2$1;-><init>(Ljava/lang/Object;II)V
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2$2;-><init>(Ljava/lang/Object;II)V
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;-><init>(Landroidx/compose/runtime/ComposerImpl;I)V
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;->invoke(ILjava/lang/Object;)V
+PLandroidx/compose/runtime/ComposerImpl$deactivateToEndGroup$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerImpl$doCompose$2$3;->invoke(Landroidx/compose/runtime/State;)V
+PLandroidx/compose/runtime/ComposerImpl$doCompose$2$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerImpl$doCompose$2$4;->invoke(Landroidx/compose/runtime/State;)V
+PLandroidx/compose/runtime/ComposerImpl$doCompose$2$4;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;-><init>(II)V
+PLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+PLandroidx/compose/runtime/ComposerImpl$realizeMovement$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerImpl$start$2;-><init>(I)V
+PLandroidx/compose/runtime/ComposerImpl$start$2;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+PLandroidx/compose/runtime/ComposerImpl$start$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerImpl;->access$getChanges$p(Landroidx/compose/runtime/ComposerImpl;)Ljava/util/List;
+PLandroidx/compose/runtime/ComposerImpl;->access$getReader$p(Landroidx/compose/runtime/ComposerImpl;)Landroidx/compose/runtime/SlotReader;
+PLandroidx/compose/runtime/ComposerImpl;->access$setChanges$p(Landroidx/compose/runtime/ComposerImpl;Ljava/util/List;)V
+PLandroidx/compose/runtime/ComposerImpl;->changed(F)Z
+PLandroidx/compose/runtime/ComposerImpl;->changed(I)Z
+PLandroidx/compose/runtime/ComposerImpl;->deactivateToEndGroup(Z)V
+PLandroidx/compose/runtime/ComposerImpl;->dispose$runtime_release()V
+PLandroidx/compose/runtime/ComposerImpl;->getDeferredChanges$runtime_release()Ljava/util/List;
+PLandroidx/compose/runtime/ComposerImpl;->nodeAt(Landroidx/compose/runtime/SlotReader;I)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerImpl;->recordDelete()V
+PLandroidx/compose/runtime/ComposerImpl;->recordRemoveNode(II)V
+PLandroidx/compose/runtime/ComposerImpl;->reportAllMovableContent()V
+PLandroidx/compose/runtime/ComposerImpl;->reportFreeMovableContent$reportGroup(Landroidx/compose/runtime/ComposerImpl;IZI)I
+PLandroidx/compose/runtime/ComposerImpl;->reportFreeMovableContent(I)V
+PLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->invoke(Landroidx/compose/runtime/Applier;Landroidx/compose/runtime/SlotWriter;Landroidx/compose/runtime/RememberManager;)V
+PLandroidx/compose/runtime/ComposerKt$removeCurrentGroupInstance$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/ComposerKt;->access$getRemoveCurrentGroupInstance$p()Lkotlin/jvm/functions/Function3;
+PLandroidx/compose/runtime/ComposerKt;->access$removeRange(Ljava/util/List;II)V
+PLandroidx/compose/runtime/ComposerKt;->distanceFrom(Landroidx/compose/runtime/SlotReader;II)I
+PLandroidx/compose/runtime/ComposerKt;->removeRange(Ljava/util/List;II)V
+PLandroidx/compose/runtime/CompositionContext;->unregisterComposer$runtime_release(Landroidx/compose/runtime/Composer;)V
+PLandroidx/compose/runtime/CompositionImpl;->dispose()V
+PLandroidx/compose/runtime/CompositionImpl;->observesAnyOf(Ljava/util/Set;)Z
+PLandroidx/compose/runtime/CompositionImpl;->setPendingInvalidScopes$runtime_release(Z)V
+PLandroidx/compose/runtime/CompositionScopedCoroutineScopeCanceller;->onForgotten()V
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;-><init>()V
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord$Companion;->getUnset()Ljava/lang/Object;
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;-><clinit>()V
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;-><init>()V
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->access$getUnset$cp()Ljava/lang/Object;
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord;
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->getDependencies()Landroidx/compose/runtime/collection/IdentityArrayMap;
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->getResult()Ljava/lang/Object;
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setDependencies(Landroidx/compose/runtime/collection/IdentityArrayMap;)V
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setResult(Ljava/lang/Object;)V
+PLandroidx/compose/runtime/DerivedSnapshotState$ResultRecord;->setResultHash(I)V
+PLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;-><init>(Landroidx/compose/runtime/DerivedSnapshotState;Landroidx/compose/runtime/collection/IdentityArrayMap;I)V
+PLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/DerivedSnapshotState$currentRecord$result$1$result$1;->invoke(Ljava/lang/Object;)V
+PLandroidx/compose/runtime/DerivedSnapshotState;-><init>(Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/SnapshotMutationPolicy;)V
+PLandroidx/compose/runtime/DerivedSnapshotState;->getCurrentValue()Ljava/lang/Object;
+PLandroidx/compose/runtime/DerivedSnapshotState;->getDependencies()[Ljava/lang/Object;
+PLandroidx/compose/runtime/DerivedSnapshotState;->getFirstStateRecord()Landroidx/compose/runtime/snapshots/StateRecord;
+PLandroidx/compose/runtime/DerivedSnapshotState;->getPolicy()Landroidx/compose/runtime/SnapshotMutationPolicy;
+PLandroidx/compose/runtime/DerivedSnapshotState;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V
+PLandroidx/compose/runtime/GroupInfo;->setNodeCount(I)V
+PLandroidx/compose/runtime/GroupInfo;->setNodeIndex(I)V
+PLandroidx/compose/runtime/GroupInfo;->setSlotIndex(I)V
+PLandroidx/compose/runtime/Pending;->updateNodeCount(II)Z
+PLandroidx/compose/runtime/PrioritySet;->peek()I
+PLandroidx/compose/runtime/RecomposeScopeImpl;->access$setTrackedInstances$p(Landroidx/compose/runtime/RecomposeScopeImpl;Landroidx/compose/runtime/collection/IdentityArrayIntMap;)V
+PLandroidx/compose/runtime/RecomposeScopeImpl;->getComposition()Landroidx/compose/runtime/CompositionImpl;
+PLandroidx/compose/runtime/RecomposeScopeImpl;->release()V
+PLandroidx/compose/runtime/RecomposeScopeImpl;->rereadTrackedInstances()V
+PLandroidx/compose/runtime/RecomposeScopeImpl;->setRereading(Z)V
+PLandroidx/compose/runtime/Recomposer$Companion;->access$removeRunning(Landroidx/compose/runtime/Recomposer$Companion;Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;)V
+PLandroidx/compose/runtime/Recomposer$Companion;->removeRunning(Landroidx/compose/runtime/Recomposer$RecomposerInfoImpl;)V
+PLandroidx/compose/runtime/Recomposer$effectJob$1$1$1$1;-><init>(Landroidx/compose/runtime/Recomposer;Ljava/lang/Throwable;)V
+PLandroidx/compose/runtime/Recomposer$effectJob$1$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/Recomposer$effectJob$1$1$1$1;->invoke(Ljava/lang/Throwable;)V
+PLandroidx/compose/runtime/Recomposer$effectJob$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/Recomposer$effectJob$1$1;->invoke(Ljava/lang/Throwable;)V
+PLandroidx/compose/runtime/Recomposer;->access$getRunnerJob$p(Landroidx/compose/runtime/Recomposer;)Lkotlinx/coroutines/Job;
+PLandroidx/compose/runtime/Recomposer;->access$isClosed$p(Landroidx/compose/runtime/Recomposer;)Z
+PLandroidx/compose/runtime/Recomposer;->access$setCloseCause$p(Landroidx/compose/runtime/Recomposer;Ljava/lang/Throwable;)V
+PLandroidx/compose/runtime/Recomposer;->access$setRunnerJob$p(Landroidx/compose/runtime/Recomposer;Lkotlinx/coroutines/Job;)V
+PLandroidx/compose/runtime/Recomposer;->cancel()V
+PLandroidx/compose/runtime/Recomposer;->unregisterComposition$runtime_release(Landroidx/compose/runtime/ControlledComposition;)V
+PLandroidx/compose/runtime/SlotReader;->containsMark(I)Z
+PLandroidx/compose/runtime/SlotReader;->forEachData$runtime_release(ILkotlin/jvm/functions/Function2;)V
+PLandroidx/compose/runtime/SlotReader;->getCurrentEnd()I
+PLandroidx/compose/runtime/SlotReader;->getGroupSize()I
+PLandroidx/compose/runtime/SlotReader;->hasMark(I)Z
+PLandroidx/compose/runtime/SlotTable;->containsMark()Z
+PLandroidx/compose/runtime/SlotWriter$groupSlots$1;-><init>(IILandroidx/compose/runtime/SlotWriter;)V
+PLandroidx/compose/runtime/SlotWriter;->access$updateContainsMark(Landroidx/compose/runtime/SlotWriter;I)V
+PLandroidx/compose/runtime/SlotWriter;->fixParentAnchorsFor(III)V
+PLandroidx/compose/runtime/SlotWriter;->groupSlots()Ljava/util/Iterator;
+PLandroidx/compose/runtime/SlotWriter;->moveAnchors(III)V
+PLandroidx/compose/runtime/SlotWriter;->moveGroup(I)V
+PLandroidx/compose/runtime/SlotWriter;->slot(II)Ljava/lang/Object;
+PLandroidx/compose/runtime/SlotWriter;->updateDataIndex([III)V
+PLandroidx/compose/runtime/SnapshotStateKt;->derivedStateOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State;
+PLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->access$getCalculationBlockNestedLevel$p()Landroidx/compose/runtime/SnapshotThreadLocal;
+PLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->access$getDerivedStateObservers$p()Landroidx/compose/runtime/SnapshotThreadLocal;
+PLandroidx/compose/runtime/SnapshotStateKt__DerivedStateKt;->derivedStateOf(Lkotlin/jvm/functions/Function0;)Landroidx/compose/runtime/State;
+PLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;-><init>(Ljava/util/Set;)V
+PLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$readObserver$1;->invoke(Ljava/lang/Object;)V
+PLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1$unregisterApplyObserver$1;-><init>(Lkotlinx/coroutines/channels/Channel;)V
+PLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt$snapshotFlow$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/runtime/SnapshotStateKt__SnapshotFlowKt;->access$intersects(Ljava/util/Set;Ljava/util/Set;)Z
+PLandroidx/compose/runtime/Stack;->peek(I)Ljava/lang/Object;
+PLandroidx/compose/runtime/collection/IdentityArrayMap;->clear()V
+PLandroidx/compose/runtime/collection/IdentityArrayMap;->setSize$runtime_release(I)V
+PLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;-><init>(Landroidx/compose/runtime/collection/IdentityArraySet;)V
+PLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;->hasNext()Z
+PLandroidx/compose/runtime/collection/IdentityArraySet$iterator$1;->next()Ljava/lang/Object;
+PLandroidx/compose/runtime/collection/IdentityArraySet;->isEmpty()Z
+PLandroidx/compose/runtime/collection/IdentityArraySet;->iterator()Ljava/util/Iterator;
+PLandroidx/compose/runtime/collection/IdentityScopeMap;->clear()V
+PLandroidx/compose/runtime/collection/IdentityScopeMap;->removeScope(Ljava/lang/Object;)V
+PLandroidx/compose/runtime/collection/MutableVector$MutableVectorList;->iterator()Ljava/util/Iterator;
+PLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;-><init>(Ljava/util/List;I)V
+PLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;->hasNext()Z
+PLandroidx/compose/runtime/collection/MutableVector$VectorListIterator;->next()Ljava/lang/Object;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/AbstractPersistentList;->remove(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->add(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->get(I)Ljava/lang/Object;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->indexOf(Ljava/lang/Object;)I
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableList/SmallPersistentVector;->removeAt(I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;->remove(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/PersistentHashMap;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->remove(ILjava/lang/Object;I)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;->removeEntryAtIndex(II)Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNode;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;->moveToNextNode()V
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;->getHasNext()Z
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;->getHasPrevious()Z
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;->getNext()Ljava/lang/Object;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/Links;->getPrevious()Ljava/lang/Object;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/persistentOrderedSet/PersistentOrderedSet;->remove(Ljava/lang/Object;)Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentSet;
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;-><clinit>()V
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;-><init>()V
+PLandroidx/compose/runtime/external/kotlinx/collections/immutable/internal/ListImplementation;->checkElementIndex$runtime_release(II)V
+PLandroidx/compose/runtime/internal/ComposableLambdaImpl$invoke$2;-><init>(Landroidx/compose/runtime/internal/ComposableLambdaImpl;Ljava/lang/Object;Ljava/lang/Object;I)V
+PLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Landroidx/compose/runtime/Composer;I)Ljava/lang/Object;
+PLandroidx/compose/runtime/internal/ComposableLambdaImpl;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;-><init>(Lkotlin/jvm/functions/Function2;)V
+PLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/saveable/ListSaverKt$listSaver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/saveable/ListSaverKt;->listSaver(Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/saveable/Saver;
+PLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/runtime/saveable/RememberSaveableKt$rememberSaveable$1$valueProvider$1$1$1;->canBeSaved(Ljava/lang/Object;)Z
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;-><clinit>()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;-><init>()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->invoke(Landroidx/compose/runtime/saveable/SaverScope;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$2;-><clinit>()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion$Saver$2;-><init>()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;-><init>()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$Companion;->getSaver()Landroidx/compose/runtime/saveable/Saver;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder$registry$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;-><init>(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;->getRegistry()Landroidx/compose/runtime/saveable/SaveableStateRegistry;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;->saveTo(Ljava/util/Map;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;-><init>(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;Ljava/lang/Object;Landroidx/compose/runtime/saveable/SaveableStateHolderImpl$RegistryHolder;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl$SaveableStateProvider$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;-><clinit>()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;-><init>(Ljava/util/Map;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;-><init>(Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->SaveableStateProvider(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getRegistryHolders$p(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getSavedStates$p(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$getSaver$cp()Landroidx/compose/runtime/saveable/Saver;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->access$saveAll(Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;)Ljava/util/Map;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->getParentSaveableStateRegistry()Landroidx/compose/runtime/saveable/SaveableStateRegistry;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->removeState(Ljava/lang/Object;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->saveAll()Ljava/util/Map;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderImpl;->setParentSaveableStateRegistry(Landroidx/compose/runtime/saveable/SaveableStateRegistry;)V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;-><clinit>()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;-><init>()V
+PLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->invoke()Landroidx/compose/runtime/saveable/SaveableStateHolderImpl;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderKt$rememberSaveableStateHolder$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/runtime/saveable/SaveableStateHolderKt;->rememberSaveableStateHolder(Landroidx/compose/runtime/Composer;I)Landroidx/compose/runtime/saveable/SaveableStateHolder;
+PLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl$registerProvider$3;->unregister()V
+PLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->access$getValueProviders$p(Landroidx/compose/runtime/saveable/SaveableStateRegistryImpl;)Ljava/util/Map;
+PLandroidx/compose/runtime/saveable/SaveableStateRegistryImpl;->performSave()Ljava/util/Map;
+PLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;-><init>(Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;->invoke(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)Landroidx/compose/runtime/snapshots/ReadonlySnapshot;
+PLandroidx/compose/runtime/snapshots/GlobalSnapshot$takeNestedSnapshot$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/snapshots/GlobalSnapshot;->takeNestedSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot;
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->advance$runtime_release()V
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->getApplied$runtime_release()Z
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->getPreviousPinnedSnapshots$runtime_release()[I
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->nestedActivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->notifyObjectsInitialized$runtime_release()V
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPrevious$runtime_release(I)V
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousList$runtime_release(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousPinnedSnapshot$runtime_release(I)V
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->recordPreviousPinnedSnapshots$runtime_release([I)V
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->setApplied$runtime_release(Z)V
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->takeNestedMutableSnapshot(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/MutableSnapshot;
+PLandroidx/compose/runtime/snapshots/MutableSnapshot;->validateNotAppliedOrPinned$runtime_release()V
+PLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;-><init>(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/snapshots/MutableSnapshot;)V
+PLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->apply()Landroidx/compose/runtime/snapshots/SnapshotApplyResult;
+PLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->deactivate()V
+PLandroidx/compose/runtime/snapshots/NestedMutableSnapshot;->dispose()V
+PLandroidx/compose/runtime/snapshots/ReadonlySnapshot;-><init>(ILandroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->dispose()V
+PLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->getReadObserver$runtime_release()Lkotlin/jvm/functions/Function1;
+PLandroidx/compose/runtime/snapshots/ReadonlySnapshot;->nestedDeactivated$runtime_release(Landroidx/compose/runtime/snapshots/Snapshot;)V
+PLandroidx/compose/runtime/snapshots/Snapshot$Companion$registerApplyObserver$2;->dispose()V
+PLandroidx/compose/runtime/snapshots/Snapshot$Companion;->takeSnapshot(Lkotlin/jvm/functions/Function1;)Landroidx/compose/runtime/snapshots/Snapshot;
+PLandroidx/compose/runtime/snapshots/Snapshot;->closeAndReleasePinning$runtime_release()V
+PLandroidx/compose/runtime/snapshots/Snapshot;->closeLocked$runtime_release()V
+PLandroidx/compose/runtime/snapshots/Snapshot;->setId$runtime_release(I)V
+PLandroidx/compose/runtime/snapshots/Snapshot;->setInvalid$runtime_release(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)V
+PLandroidx/compose/runtime/snapshots/Snapshot;->takeoverPinnedSnapshot$runtime_release()I
+PLandroidx/compose/runtime/snapshots/Snapshot;->validateNotDisposed$runtime_release()V
+PLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;-><init>(Landroidx/compose/runtime/snapshots/SnapshotIdSet;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/runtime/snapshots/SnapshotIdSet$iterator$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getBelowBound$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)[I
+PLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getLowerBound$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)I
+PLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getLowerSet$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)J
+PLandroidx/compose/runtime/snapshots/SnapshotIdSet;->access$getUpperSet$p(Landroidx/compose/runtime/snapshots/SnapshotIdSet;)J
+PLandroidx/compose/runtime/snapshots/SnapshotIdSet;->iterator()Ljava/util/Iterator;
+PLandroidx/compose/runtime/snapshots/SnapshotIdSetKt;->binarySearch([II)I
+PLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/snapshots/SnapshotKt$mergedReadObserver$1;->invoke(Ljava/lang/Object;)V
+PLandroidx/compose/runtime/snapshots/SnapshotKt;->addRange(Landroidx/compose/runtime/snapshots/SnapshotIdSet;II)Landroidx/compose/runtime/snapshots/SnapshotIdSet;
+PLandroidx/compose/runtime/snapshots/SnapshotKt;->newWritableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord;
+PLandroidx/compose/runtime/snapshots/SnapshotKt;->writableRecord(Landroidx/compose/runtime/snapshots/StateRecord;Landroidx/compose/runtime/snapshots/StateObject;Landroidx/compose/runtime/snapshots/Snapshot;)Landroidx/compose/runtime/snapshots/StateRecord;
+PLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->assign(Landroidx/compose/runtime/snapshots/StateRecord;)V
+PLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->create()Landroidx/compose/runtime/snapshots/StateRecord;
+PLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->getModification$runtime_release()I
+PLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->setList$runtime_release(Landroidx/compose/runtime/external/kotlinx/collections/immutable/PersistentList;)V
+PLandroidx/compose/runtime/snapshots/SnapshotStateList$StateListStateRecord;->setModification$runtime_release(I)V
+PLandroidx/compose/runtime/snapshots/SnapshotStateList;->add(Ljava/lang/Object;)Z
+PLandroidx/compose/runtime/snapshots/SnapshotStateList;->get(I)Ljava/lang/Object;
+PLandroidx/compose/runtime/snapshots/SnapshotStateList;->getSize()I
+PLandroidx/compose/runtime/snapshots/SnapshotStateList;->prependStateRecord(Landroidx/compose/runtime/snapshots/StateRecord;)V
+PLandroidx/compose/runtime/snapshots/SnapshotStateList;->remove(Ljava/lang/Object;)Z
+PLandroidx/compose/runtime/snapshots/SnapshotStateList;->size()I
+PLandroidx/compose/runtime/snapshots/SnapshotStateListKt;-><clinit>()V
+PLandroidx/compose/runtime/snapshots/SnapshotStateListKt;->access$getSync$p()Ljava/lang/Object;
+PLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap$derivedStateEnterObserver$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->access$setDeriveStateScopeCount$p(Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;I)V
+PLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->clear()V
+PLandroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;->removeScopeIf(Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->clear()V
+PLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->clearIf(Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/runtime/snapshots/SnapshotStateObserver;->stop()V
+PLandroidx/compose/ui/Modifier$Node;->onDetach()V
+PLandroidx/compose/ui/autofill/AutofillCallback;->unregister(Landroidx/compose/ui/autofill/AndroidAutofill;)V
+PLandroidx/compose/ui/draw/ClipKt;->clipToBounds(Landroidx/compose/ui/Modifier;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/ui/draw/PainterModifier;->calculateScaledSize-E7KxVPU(J)J
+PLandroidx/compose/ui/focus/FocusModifier$WhenMappings;-><clinit>()V
+PLandroidx/compose/ui/focus/FocusModifier;->isValid()Z
+PLandroidx/compose/ui/focus/FocusRequesterModifierLocal;->removeFocusModifier(Landroidx/compose/ui/focus/FocusModifier;)V
+PLandroidx/compose/ui/geometry/Offset;->copy-dBAh8RU$default(JFFILjava/lang/Object;)J
+PLandroidx/compose/ui/geometry/Offset;->copy-dBAh8RU(JFF)J
+PLandroidx/compose/ui/geometry/Offset;->equals-impl0(JJ)Z
+PLandroidx/compose/ui/geometry/Offset;->getDistanceSquared-impl(J)F
+PLandroidx/compose/ui/geometry/Offset;->minus-MK-Hz9U(JJ)J
+PLandroidx/compose/ui/geometry/Offset;->plus-MK-Hz9U(JJ)J
+PLandroidx/compose/ui/geometry/Offset;->times-tuRUvjQ(JF)J
+PLandroidx/compose/ui/geometry/Rect;->getHeight()F
+PLandroidx/compose/ui/geometry/Rect;->getWidth()F
+PLandroidx/compose/ui/geometry/Size;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/geometry/Size;->isEmpty-impl(J)Z
+PLandroidx/compose/ui/geometry/SizeKt;->getCenter-uvyYCjk(J)J
+PLandroidx/compose/ui/graphics/AndroidCanvas;->concat-58bKbWc([F)V
+PLandroidx/compose/ui/graphics/AndroidCanvas_androidKt;->ActualCanvas(Landroidx/compose/ui/graphics/ImageBitmap;)Landroidx/compose/ui/graphics/Canvas;
+PLandroidx/compose/ui/graphics/AndroidImageBitmap;->prepareToDraw()V
+PLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->ActualImageBitmap-x__-hDU(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/ImageBitmap;
+PLandroidx/compose/ui/graphics/AndroidImageBitmap_androidKt;->toBitmapConfig-1JJdX4A(I)Landroid/graphics/Bitmap$Config;
+PLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-EL8BTi8(Landroid/graphics/Matrix;[F)V
+PLandroidx/compose/ui/graphics/AndroidMatrixConversions_androidKt;->setFrom-tU-YjHk([FLandroid/graphics/Matrix;)V
+PLandroidx/compose/ui/graphics/AndroidPaint;->setBlendMode-s9anfk8(I)V
+PLandroidx/compose/ui/graphics/AndroidPaint_androidKt;->setNativeBlendMode-GB0RdKg(Landroid/graphics/Paint;I)V
+PLandroidx/compose/ui/graphics/AndroidPath;->addPath-Uv8p0NA(Landroidx/compose/ui/graphics/Path;J)V
+PLandroidx/compose/ui/graphics/AndroidPath;->close()V
+PLandroidx/compose/ui/graphics/AndroidPath;->lineTo(FF)V
+PLandroidx/compose/ui/graphics/AndroidPath;->moveTo(FF)V
+PLandroidx/compose/ui/graphics/AndroidPath;->relativeLineTo(FF)V
+PLandroidx/compose/ui/graphics/AndroidPath;->setFillType-oQ8Xj4U(I)V
+PLandroidx/compose/ui/graphics/Api26Bitmap;-><clinit>()V
+PLandroidx/compose/ui/graphics/Api26Bitmap;-><init>()V
+PLandroidx/compose/ui/graphics/Api26Bitmap;->createBitmap-x__-hDU$ui_graphics_release(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroid/graphics/Bitmap;
+PLandroidx/compose/ui/graphics/Api26Bitmap;->toFrameworkColorSpace$ui_graphics_release(Landroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroid/graphics/ColorSpace;
+PLandroidx/compose/ui/graphics/BlendMode;-><init>(I)V
+PLandroidx/compose/ui/graphics/BlendMode;->box-impl(I)Landroidx/compose/ui/graphics/BlendMode;
+PLandroidx/compose/ui/graphics/Brush$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/Brush$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/Brush;-><clinit>()V
+PLandroidx/compose/ui/graphics/Brush;-><init>()V
+PLandroidx/compose/ui/graphics/Brush;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/CanvasKt;->Canvas(Landroidx/compose/ui/graphics/ImageBitmap;)Landroidx/compose/ui/graphics/Canvas;
+PLandroidx/compose/ui/graphics/ColorKt;->access$getComponents-8_81llA(J)[F
+PLandroidx/compose/ui/graphics/ColorKt;->getComponents-8_81llA(J)[F
+PLandroidx/compose/ui/graphics/ColorKt;->lerp-jxsXWHM(JJF)J
+PLandroidx/compose/ui/graphics/Float16;->toFloat-impl(S)F
+PLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/ImageBitmapConfig$Companion;->getArgb8888-_sVssgQ()I
+PLandroidx/compose/ui/graphics/ImageBitmapConfig;-><clinit>()V
+PLandroidx/compose/ui/graphics/ImageBitmapConfig;->access$getArgb8888$cp()I
+PLandroidx/compose/ui/graphics/ImageBitmapConfig;->constructor-impl(I)I
+PLandroidx/compose/ui/graphics/ImageBitmapConfig;->equals-impl0(II)Z
+PLandroidx/compose/ui/graphics/ImageBitmapKt;->ImageBitmap-x__-hDU$default(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;ILjava/lang/Object;)Landroidx/compose/ui/graphics/ImageBitmap;
+PLandroidx/compose/ui/graphics/ImageBitmapKt;->ImageBitmap-x__-hDU(IIIZLandroidx/compose/ui/graphics/colorspace/ColorSpace;)Landroidx/compose/ui/graphics/ImageBitmap;
+PLandroidx/compose/ui/graphics/Matrix;-><init>([F)V
+PLandroidx/compose/ui/graphics/Matrix;->box-impl([F)Landroidx/compose/ui/graphics/Matrix;
+PLandroidx/compose/ui/graphics/Matrix;->rotateZ-impl([FF)V
+PLandroidx/compose/ui/graphics/Matrix;->scale-impl([FFFF)V
+PLandroidx/compose/ui/graphics/Matrix;->translate-impl$default([FFFFILjava/lang/Object;)V
+PLandroidx/compose/ui/graphics/Matrix;->translate-impl([FFFF)V
+PLandroidx/compose/ui/graphics/Matrix;->unbox-impl()[F
+PLandroidx/compose/ui/graphics/MatrixKt;->isIdentity-58bKbWc([F)Z
+PLandroidx/compose/ui/graphics/Outline$Rectangle;-><init>(Landroidx/compose/ui/geometry/Rect;)V
+PLandroidx/compose/ui/graphics/Outline$Rectangle;->getRect()Landroidx/compose/ui/geometry/Rect;
+PLandroidx/compose/ui/graphics/OutlineKt;->size(Landroidx/compose/ui/geometry/Rect;)J
+PLandroidx/compose/ui/graphics/OutlineKt;->topLeft(Landroidx/compose/ui/geometry/Rect;)J
+PLandroidx/compose/ui/graphics/Path$Companion;-><clinit>()V
+PLandroidx/compose/ui/graphics/Path$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/Path;-><clinit>()V
+PLandroidx/compose/ui/graphics/Path;->addPath-Uv8p0NA$default(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Path;JILjava/lang/Object;)V
+PLandroidx/compose/ui/graphics/PathFillType$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/PathFillType$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/PathFillType$Companion;->getEvenOdd-Rg-k1Os()I
+PLandroidx/compose/ui/graphics/PathFillType$Companion;->getNonZero-Rg-k1Os()I
+PLandroidx/compose/ui/graphics/PathFillType;-><clinit>()V
+PLandroidx/compose/ui/graphics/PathFillType;-><init>(I)V
+PLandroidx/compose/ui/graphics/PathFillType;->access$getEvenOdd$cp()I
+PLandroidx/compose/ui/graphics/PathFillType;->access$getNonZero$cp()I
+PLandroidx/compose/ui/graphics/PathFillType;->box-impl(I)Landroidx/compose/ui/graphics/PathFillType;
+PLandroidx/compose/ui/graphics/PathFillType;->constructor-impl(I)I
+PLandroidx/compose/ui/graphics/PathFillType;->equals-impl0(II)Z
+PLandroidx/compose/ui/graphics/PathFillType;->unbox-impl()I
+PLandroidx/compose/ui/graphics/RectHelper_androidKt;->toAndroidRect(Landroidx/compose/ui/geometry/Rect;)Landroid/graphics/Rect;
+PLandroidx/compose/ui/graphics/SolidColor;-><init>(J)V
+PLandroidx/compose/ui/graphics/SolidColor;-><init>(JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/SolidColor;->applyTo-Pq9zytI(JLandroidx/compose/ui/graphics/Paint;F)V
+PLandroidx/compose/ui/graphics/StrokeCap$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/StrokeCap$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/StrokeCap$Companion;->getButt-KaPHkGw()I
+PLandroidx/compose/ui/graphics/StrokeCap;-><clinit>()V
+PLandroidx/compose/ui/graphics/StrokeCap;-><init>(I)V
+PLandroidx/compose/ui/graphics/StrokeCap;->access$getButt$cp()I
+PLandroidx/compose/ui/graphics/StrokeCap;->box-impl(I)Landroidx/compose/ui/graphics/StrokeCap;
+PLandroidx/compose/ui/graphics/StrokeCap;->constructor-impl(I)I
+PLandroidx/compose/ui/graphics/StrokeCap;->unbox-impl()I
+PLandroidx/compose/ui/graphics/StrokeJoin$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/StrokeJoin$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/StrokeJoin$Companion;->getBevel-LxFBmk8()I
+PLandroidx/compose/ui/graphics/StrokeJoin$Companion;->getMiter-LxFBmk8()I
+PLandroidx/compose/ui/graphics/StrokeJoin;-><clinit>()V
+PLandroidx/compose/ui/graphics/StrokeJoin;-><init>(I)V
+PLandroidx/compose/ui/graphics/StrokeJoin;->access$getBevel$cp()I
+PLandroidx/compose/ui/graphics/StrokeJoin;->access$getMiter$cp()I
+PLandroidx/compose/ui/graphics/StrokeJoin;->box-impl(I)Landroidx/compose/ui/graphics/StrokeJoin;
+PLandroidx/compose/ui/graphics/StrokeJoin;->constructor-impl(I)I
+PLandroidx/compose/ui/graphics/StrokeJoin;->unbox-impl()I
+PLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;-><clinit>()V
+PLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;-><init>()V
+PLandroidx/compose/ui/graphics/WrapperVerificationHelperMethods;->setBlendMode-GB0RdKg(Landroid/graphics/Paint;I)V
+PLandroidx/compose/ui/graphics/colorspace/ColorModel;->equals-impl0(JJ)Z
+PLandroidx/compose/ui/graphics/colorspace/ColorSpace;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getModel-xdoWZVw()J
+PLandroidx/compose/ui/graphics/colorspace/ColorSpace;->getName()Ljava/lang/String;
+PLandroidx/compose/ui/graphics/colorspace/ColorSpace;->isSrgb()Z
+PLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->adapt$default(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/Adaptation;ILjava/lang/Object;)Landroidx/compose/ui/graphics/colorspace/ColorSpace;
+PLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->adapt(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/WhitePoint;Landroidx/compose/ui/graphics/colorspace/Adaptation;)Landroidx/compose/ui/graphics/colorspace/ColorSpace;
+PLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->connect-YBCOT_4$default(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;IILjava/lang/Object;)Landroidx/compose/ui/graphics/colorspace/Connector;
+PLandroidx/compose/ui/graphics/colorspace/ColorSpaceKt;->connect-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)Landroidx/compose/ui/graphics/colorspace/Connector;
+PLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getCieXyz()Landroidx/compose/ui/graphics/colorspace/ColorSpace;
+PLandroidx/compose/ui/graphics/colorspace/ColorSpaces;->getOklab()Landroidx/compose/ui/graphics/colorspace/ColorSpace;
+PLandroidx/compose/ui/graphics/colorspace/Connector$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/colorspace/Connector$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->access$computeTransform-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/Connector$Companion;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)[F
+PLandroidx/compose/ui/graphics/colorspace/Connector$Companion;->computeTransform-YBCOT_4(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)[F
+PLandroidx/compose/ui/graphics/colorspace/Connector;-><clinit>()V
+PLandroidx/compose/ui/graphics/colorspace/Connector;-><init>(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I)V
+PLandroidx/compose/ui/graphics/colorspace/Connector;-><init>(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/colorspace/Connector;-><init>(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I[F)V
+PLandroidx/compose/ui/graphics/colorspace/Connector;-><init>(Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;Landroidx/compose/ui/graphics/colorspace/ColorSpace;I[FLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/colorspace/Connector;->transform([F)[F
+PLandroidx/compose/ui/graphics/colorspace/Oklab;->fromXyz([F)[F
+PLandroidx/compose/ui/graphics/colorspace/Oklab;->getMaxValue(I)F
+PLandroidx/compose/ui/graphics/colorspace/Oklab;->getMinValue(I)F
+PLandroidx/compose/ui/graphics/colorspace/Oklab;->toXyz([F)[F
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->getAbsolute-uksYyKA()I
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent$Companion;->getPerceptual-uksYyKA()I
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent;-><clinit>()V
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent;->access$getAbsolute$cp()I
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent;->access$getPerceptual$cp()I
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent;->constructor-impl(I)I
+PLandroidx/compose/ui/graphics/colorspace/RenderIntent;->equals-impl0(II)Z
+PLandroidx/compose/ui/graphics/colorspace/Rgb$eotf$1;->invoke(D)Ljava/lang/Double;
+PLandroidx/compose/ui/graphics/colorspace/Rgb$eotf$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/colorspace/Rgb$oetf$1;->invoke(D)Ljava/lang/Double;
+PLandroidx/compose/ui/graphics/colorspace/Rgb$oetf$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/colorspace/Rgb;-><init>(Landroidx/compose/ui/graphics/colorspace/Rgb;[FLandroidx/compose/ui/graphics/colorspace/WhitePoint;)V
+PLandroidx/compose/ui/graphics/colorspace/Rgb;->access$getMax$p(Landroidx/compose/ui/graphics/colorspace/Rgb;)F
+PLandroidx/compose/ui/graphics/colorspace/Rgb;->access$getMin$p(Landroidx/compose/ui/graphics/colorspace/Rgb;)F
+PLandroidx/compose/ui/graphics/colorspace/Rgb;->fromXyz([F)[F
+PLandroidx/compose/ui/graphics/colorspace/Rgb;->getTransform$ui_graphics_release()[F
+PLandroidx/compose/ui/graphics/colorspace/Rgb;->getWhitePoint()Landroidx/compose/ui/graphics/colorspace/WhitePoint;
+PLandroidx/compose/ui/graphics/colorspace/Rgb;->toXyz([F)[F
+PLandroidx/compose/ui/graphics/colorspace/Xyz;->clamp(F)F
+PLandroidx/compose/ui/graphics/colorspace/Xyz;->fromXyz([F)[F
+PLandroidx/compose/ui/graphics/colorspace/Xyz;->getMaxValue(I)F
+PLandroidx/compose/ui/graphics/colorspace/Xyz;->getMinValue(I)F
+PLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->configurePaint-swdJneE$default(Landroidx/compose/ui/graphics/drawscope/CanvasDrawScope;Landroidx/compose/ui/graphics/Brush;Landroidx/compose/ui/graphics/drawscope/DrawStyle;FLandroidx/compose/ui/graphics/ColorFilter;IIILjava/lang/Object;)Landroidx/compose/ui/graphics/Paint;
+PLandroidx/compose/ui/graphics/drawscope/CanvasDrawScope;->drawPath-GBMwjPU(Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;I)V
+PLandroidx/compose/ui/graphics/drawscope/CanvasDrawScopeKt$asDrawTransform$1;->transform-58bKbWc([F)V
+PLandroidx/compose/ui/graphics/drawscope/DrawScope;->drawPath-GBMwjPU$default(Landroidx/compose/ui/graphics/drawscope/DrawScope;Landroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/drawscope/DrawStyle;Landroidx/compose/ui/graphics/ColorFilter;IILjava/lang/Object;)V
+PLandroidx/compose/ui/graphics/painter/BitmapPainter;->setFilterQuality-vDHp3xo$ui_graphics_release(I)V
+PLandroidx/compose/ui/graphics/painter/BitmapPainterKt;->BitmapPainter-QZhYCtY$default(Landroidx/compose/ui/graphics/ImageBitmap;JJIILjava/lang/Object;)Landroidx/compose/ui/graphics/painter/BitmapPainter;
+PLandroidx/compose/ui/graphics/painter/BitmapPainterKt;->BitmapPainter-QZhYCtY(Landroidx/compose/ui/graphics/ImageBitmap;JJI)Landroidx/compose/ui/graphics/painter/BitmapPainter;
+PLandroidx/compose/ui/graphics/vector/DrawCache;-><init>()V
+PLandroidx/compose/ui/graphics/vector/DrawCache;->clear(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+PLandroidx/compose/ui/graphics/vector/DrawCache;->drawCachedImage-CJJAR-o(JLandroidx/compose/ui/unit/Density;Landroidx/compose/ui/unit/LayoutDirection;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/ui/graphics/vector/DrawCache;->drawInto(Landroidx/compose/ui/graphics/drawscope/DrawScope;FLandroidx/compose/ui/graphics/ColorFilter;)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;-><init>()V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->getInvalidateListener$ui_release()Lkotlin/jvm/functions/Function0;
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->getNumChildren()I
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->getWillClipPath()Z
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->insertAt(ILandroidx/compose/ui/graphics/vector/VNode;)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->remove(II)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->setInvalidateListener$ui_release(Lkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->setName(Ljava/lang/String;)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->setPivotX(F)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->setPivotY(F)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->setScaleX(F)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->setScaleY(F)V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->updateClipPath()V
+PLandroidx/compose/ui/graphics/vector/GroupComponent;->updateMatrix()V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;-><init>(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;)V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;-><init>(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getChildren()Ljava/util/List;
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getClipPathData()Ljava/util/List;
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getName()Ljava/lang/String;
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getPivotX()F
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getPivotY()F
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getRotate()F
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getScaleX()F
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getScaleY()F
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getTranslationX()F
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;->getTranslationY()F
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;-><init>(Ljava/lang/String;FFFFJIZ)V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;-><init>(Ljava/lang/String;FFFFJIZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;-><init>(Ljava/lang/String;FFFFJIZLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->addPath-oIyEayM$default(Landroidx/compose/ui/graphics/vector/ImageVector$Builder;Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFILjava/lang/Object;)Landroidx/compose/ui/graphics/vector/ImageVector$Builder;
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->addPath-oIyEayM(Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFF)Landroidx/compose/ui/graphics/vector/ImageVector$Builder;
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->asVectorGroup(Landroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;)Landroidx/compose/ui/graphics/vector/VectorGroup;
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->build()Landroidx/compose/ui/graphics/vector/ImageVector;
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->ensureNotConsumed()V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Builder;->getCurrentGroup()Landroidx/compose/ui/graphics/vector/ImageVector$Builder$GroupParams;
+PLandroidx/compose/ui/graphics/vector/ImageVector$Companion;-><init>()V
+PLandroidx/compose/ui/graphics/vector/ImageVector$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/ImageVector;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/ImageVector;-><init>(Ljava/lang/String;FFFFLandroidx/compose/ui/graphics/vector/VectorGroup;JIZ)V
+PLandroidx/compose/ui/graphics/vector/ImageVector;-><init>(Ljava/lang/String;FFFFLandroidx/compose/ui/graphics/vector/VectorGroup;JIZLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/ImageVector;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getAutoMirror()Z
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getDefaultHeight-D9Ej5fM()F
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getDefaultWidth-D9Ej5fM()F
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getName()Ljava/lang/String;
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getRoot()Landroidx/compose/ui/graphics/vector/VectorGroup;
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getTintBlendMode-0nO6VwU()I
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getTintColor-0d7_KjU()J
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getViewportHeight()F
+PLandroidx/compose/ui/graphics/vector/ImageVector;->getViewportWidth()F
+PLandroidx/compose/ui/graphics/vector/ImageVectorKt;->access$peek(Ljava/util/ArrayList;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/ImageVectorKt;->access$push(Ljava/util/ArrayList;Ljava/lang/Object;)Z
+PLandroidx/compose/ui/graphics/vector/ImageVectorKt;->peek(Ljava/util/ArrayList;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/ImageVectorKt;->push(Ljava/util/ArrayList;Ljava/lang/Object;)Z
+PLandroidx/compose/ui/graphics/vector/PathBuilder;-><init>()V
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->addNode(Landroidx/compose/ui/graphics/vector/PathNode;)Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->close()Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->getNodes()Ljava/util/List;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->horizontalLineTo(F)Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->horizontalLineToRelative(F)Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->lineTo(FF)Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->lineToRelative(FF)Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->moveTo(FF)Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->verticalLineTo(F)Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathBuilder;->verticalLineToRelative(F)Landroidx/compose/ui/graphics/vector/PathBuilder;
+PLandroidx/compose/ui/graphics/vector/PathComponent$pathMeasure$2;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/PathComponent$pathMeasure$2;-><init>()V
+PLandroidx/compose/ui/graphics/vector/PathComponent;-><init>()V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setFill(Landroidx/compose/ui/graphics/Brush;)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setFillAlpha(F)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setName(Ljava/lang/String;)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setPathData(Ljava/util/List;)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setPathFillType-oQ8Xj4U(I)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setStroke(Landroidx/compose/ui/graphics/Brush;)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeAlpha(F)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineCap-BeK7IIE(I)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineJoin-Ww9F2mQ(I)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineMiter(F)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setStrokeLineWidth(F)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathEnd(F)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathOffset(F)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->setTrimPathStart(F)V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->updatePath()V
+PLandroidx/compose/ui/graphics/vector/PathComponent;->updateRenderPath()V
+PLandroidx/compose/ui/graphics/vector/PathNode$Close;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/PathNode$Close;-><init>()V
+PLandroidx/compose/ui/graphics/vector/PathNode$HorizontalTo;-><init>(F)V
+PLandroidx/compose/ui/graphics/vector/PathNode$HorizontalTo;->getX()F
+PLandroidx/compose/ui/graphics/vector/PathNode$LineTo;-><init>(FF)V
+PLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->getX()F
+PLandroidx/compose/ui/graphics/vector/PathNode$LineTo;->getY()F
+PLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;-><init>(FF)V
+PLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->getX()F
+PLandroidx/compose/ui/graphics/vector/PathNode$MoveTo;->getY()F
+PLandroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo;-><init>(F)V
+PLandroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo;->getDx()F
+PLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;-><init>(FF)V
+PLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->getDx()F
+PLandroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;->getDy()F
+PLandroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo;-><init>(F)V
+PLandroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo;->getDy()F
+PLandroidx/compose/ui/graphics/vector/PathNode$VerticalTo;-><init>(F)V
+PLandroidx/compose/ui/graphics/vector/PathNode$VerticalTo;->getY()F
+PLandroidx/compose/ui/graphics/vector/PathNode;-><init>(ZZ)V
+PLandroidx/compose/ui/graphics/vector/PathNode;-><init>(ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/PathNode;-><init>(ZZLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/PathParser$PathPoint;-><init>(FF)V
+PLandroidx/compose/ui/graphics/vector/PathParser$PathPoint;-><init>(FFILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/PathParser$PathPoint;->getX()F
+PLandroidx/compose/ui/graphics/vector/PathParser$PathPoint;->getY()F
+PLandroidx/compose/ui/graphics/vector/PathParser$PathPoint;->reset()V
+PLandroidx/compose/ui/graphics/vector/PathParser$PathPoint;->setX(F)V
+PLandroidx/compose/ui/graphics/vector/PathParser$PathPoint;->setY(F)V
+PLandroidx/compose/ui/graphics/vector/PathParser;-><init>()V
+PLandroidx/compose/ui/graphics/vector/PathParser;->addPathNodes(Ljava/util/List;)Landroidx/compose/ui/graphics/vector/PathParser;
+PLandroidx/compose/ui/graphics/vector/PathParser;->clear()V
+PLandroidx/compose/ui/graphics/vector/PathParser;->close(Landroidx/compose/ui/graphics/Path;)V
+PLandroidx/compose/ui/graphics/vector/PathParser;->horizontalTo(Landroidx/compose/ui/graphics/vector/PathNode$HorizontalTo;Landroidx/compose/ui/graphics/Path;)V
+PLandroidx/compose/ui/graphics/vector/PathParser;->lineTo(Landroidx/compose/ui/graphics/vector/PathNode$LineTo;Landroidx/compose/ui/graphics/Path;)V
+PLandroidx/compose/ui/graphics/vector/PathParser;->moveTo(Landroidx/compose/ui/graphics/vector/PathNode$MoveTo;Landroidx/compose/ui/graphics/Path;)V
+PLandroidx/compose/ui/graphics/vector/PathParser;->relativeHorizontalTo(Landroidx/compose/ui/graphics/vector/PathNode$RelativeHorizontalTo;Landroidx/compose/ui/graphics/Path;)V
+PLandroidx/compose/ui/graphics/vector/PathParser;->relativeLineTo(Landroidx/compose/ui/graphics/vector/PathNode$RelativeLineTo;Landroidx/compose/ui/graphics/Path;)V
+PLandroidx/compose/ui/graphics/vector/PathParser;->relativeVerticalTo(Landroidx/compose/ui/graphics/vector/PathNode$RelativeVerticalTo;Landroidx/compose/ui/graphics/Path;)V
+PLandroidx/compose/ui/graphics/vector/PathParser;->toPath(Landroidx/compose/ui/graphics/Path;)Landroidx/compose/ui/graphics/Path;
+PLandroidx/compose/ui/graphics/vector/PathParser;->verticalTo(Landroidx/compose/ui/graphics/vector/PathNode$VerticalTo;Landroidx/compose/ui/graphics/Path;)V
+PLandroidx/compose/ui/graphics/vector/VNode;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VNode;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VNode;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/VNode;->getInvalidateListener$ui_release()Lkotlin/jvm/functions/Function0;
+PLandroidx/compose/ui/graphics/vector/VNode;->invalidate()V
+PLandroidx/compose/ui/graphics/vector/VNode;->setInvalidateListener$ui_release(Lkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/ui/graphics/vector/VectorApplier;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorApplier;-><init>(Landroidx/compose/ui/graphics/vector/VNode;)V
+PLandroidx/compose/ui/graphics/vector/VectorApplier;->asGroup(Landroidx/compose/ui/graphics/vector/VNode;)Landroidx/compose/ui/graphics/vector/GroupComponent;
+PLandroidx/compose/ui/graphics/vector/VectorApplier;->insertBottomUp(ILandroidx/compose/ui/graphics/vector/VNode;)V
+PLandroidx/compose/ui/graphics/vector/VectorApplier;->insertBottomUp(ILjava/lang/Object;)V
+PLandroidx/compose/ui/graphics/vector/VectorApplier;->insertTopDown(ILandroidx/compose/ui/graphics/vector/VNode;)V
+PLandroidx/compose/ui/graphics/vector/VectorApplier;->insertTopDown(ILjava/lang/Object;)V
+PLandroidx/compose/ui/graphics/vector/VectorApplier;->onClear()V
+PLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;-><init>(Landroidx/compose/ui/graphics/vector/VectorComponent;)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;->invoke(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent$drawVectorBlock$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComponent$invalidateCallback$1;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComponent$invalidateCallback$1;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;-><init>(Landroidx/compose/ui/graphics/vector/VectorComponent;)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComponent$root$1$1;->invoke()V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->access$doInvalidate(Landroidx/compose/ui/graphics/vector/VectorComponent;)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->doInvalidate()V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->draw(Landroidx/compose/ui/graphics/drawscope/DrawScope;FLandroidx/compose/ui/graphics/ColorFilter;)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->getRoot()Landroidx/compose/ui/graphics/vector/GroupComponent;
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->getViewportHeight()F
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->getViewportWidth()F
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->setIntrinsicColorFilter$ui_release(Landroidx/compose/ui/graphics/ColorFilter;)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->setInvalidateCallback$ui_release(Lkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->setName(Ljava/lang/String;)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->setViewportHeight(F)V
+PLandroidx/compose/ui/graphics/vector/VectorComponent;->setViewportWidth(F)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->invoke()Landroidx/compose/ui/graphics/vector/PathComponent;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$10;->invoke-CSYIeUk(Landroidx/compose/ui/graphics/vector/PathComponent;I)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$11;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$12;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$13;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$14;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Ljava/lang/String;)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Ljava/util/List;)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$3;->invoke-pweu1eQ(Landroidx/compose/ui/graphics/vector/PathComponent;I)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Landroidx/compose/ui/graphics/Brush;)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;Landroidx/compose/ui/graphics/Brush;)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$6;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$7;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->invoke(Landroidx/compose/ui/graphics/vector/PathComponent;F)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$8;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path$2$9;->invoke-kLtJ_vA(Landroidx/compose/ui/graphics/vector/PathComponent;I)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path-9cdaXJ4$$inlined$ComposeNode$1;-><init>(Lkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt$Path-9cdaXJ4$$inlined$ComposeNode$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorComposeKt;->Path-9cdaXJ4(Ljava/util/List;ILjava/lang/String;Landroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFLandroidx/compose/runtime/Composer;III)V
+PLandroidx/compose/ui/graphics/vector/VectorConfig;->getOrDefault(Landroidx/compose/ui/graphics/vector/VectorProperty;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;-><init>(Landroidx/compose/ui/graphics/vector/VectorGroup;)V
+PLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->hasNext()Z
+PLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->next()Landroidx/compose/ui/graphics/vector/VectorNode;
+PLandroidx/compose/ui/graphics/vector/VectorGroup$iterator$1;->next()Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorGroup;-><init>(Ljava/lang/String;FFFFFFFLjava/util/List;Ljava/util/List;)V
+PLandroidx/compose/ui/graphics/vector/VectorGroup;->access$getChildren$p(Landroidx/compose/ui/graphics/vector/VectorGroup;)Ljava/util/List;
+PLandroidx/compose/ui/graphics/vector/VectorGroup;->iterator()Ljava/util/Iterator;
+PLandroidx/compose/ui/graphics/vector/VectorKt;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultFillType()I
+PLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultStrokeLineCap()I
+PLandroidx/compose/ui/graphics/vector/VectorKt;->getDefaultStrokeLineJoin()I
+PLandroidx/compose/ui/graphics/vector/VectorKt;->getEmptyPath()Ljava/util/List;
+PLandroidx/compose/ui/graphics/vector/VectorNode;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorNode;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorNode;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2$invoke$$inlined$onDispose$1;-><init>(Landroidx/compose/runtime/Composition;)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;-><init>(Landroidx/compose/runtime/Composition;)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;->invoke(Landroidx/compose/runtime/DisposableEffectScope;)Landroidx/compose/runtime/DisposableEffectResult;
+PLandroidx/compose/ui/graphics/vector/VectorPainter$RenderVector$2;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;-><init>(Lkotlin/jvm/functions/Function4;Landroidx/compose/ui/graphics/vector/VectorPainter;)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter$composeVector$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;-><init>(Landroidx/compose/ui/graphics/vector/VectorPainter;)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorPainter$vector$1$1;->invoke()V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->RenderVector$ui_release(Ljava/lang/String;FFLkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->access$getVector$p(Landroidx/compose/ui/graphics/vector/VectorPainter;)Landroidx/compose/ui/graphics/vector/VectorComponent;
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->access$setDirty(Landroidx/compose/ui/graphics/vector/VectorPainter;Z)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->applyColorFilter(Landroidx/compose/ui/graphics/ColorFilter;)Z
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->composeVector(Landroidx/compose/runtime/CompositionContext;Lkotlin/jvm/functions/Function4;)Landroidx/compose/runtime/Composition;
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->getAutoMirror$ui_release()Z
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->getIntrinsicSize-NH-jbRc()J
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->getSize-NH-jbRc$ui_release()J
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->isDirty()Z
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->onDraw(Landroidx/compose/ui/graphics/drawscope/DrawScope;)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->setAutoMirror$ui_release(Z)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->setDirty(Z)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->setIntrinsicColorFilter$ui_release(Landroidx/compose/ui/graphics/ColorFilter;)V
+PLandroidx/compose/ui/graphics/vector/VectorPainter;->setSize-uvyYCjk$ui_release(J)V
+PLandroidx/compose/ui/graphics/vector/VectorPainterKt$RenderVectorGroup$config$1;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;-><init>(Landroidx/compose/ui/graphics/vector/ImageVector;)V
+PLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;->invoke(FFLandroidx/compose/runtime/Composer;I)V
+PLandroidx/compose/ui/graphics/vector/VectorPainterKt$rememberVectorPainter$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/graphics/vector/VectorPainterKt;->RenderVectorGroup(Landroidx/compose/ui/graphics/vector/VectorGroup;Ljava/util/Map;Landroidx/compose/runtime/Composer;II)V
+PLandroidx/compose/ui/graphics/vector/VectorPainterKt;->rememberVectorPainter(Landroidx/compose/ui/graphics/vector/ImageVector;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/graphics/vector/VectorPainter;
+PLandroidx/compose/ui/graphics/vector/VectorPainterKt;->rememberVectorPainter-vIP8VLU(FFFFLjava/lang/String;JIZLkotlin/jvm/functions/Function4;Landroidx/compose/runtime/Composer;II)Landroidx/compose/ui/graphics/vector/VectorPainter;
+PLandroidx/compose/ui/graphics/vector/VectorPath;-><init>(Ljava/lang/String;Ljava/util/List;ILandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFF)V
+PLandroidx/compose/ui/graphics/vector/VectorPath;-><init>(Ljava/lang/String;Ljava/util/List;ILandroidx/compose/ui/graphics/Brush;FLandroidx/compose/ui/graphics/Brush;FFIIFFFFLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getFill()Landroidx/compose/ui/graphics/Brush;
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getFillAlpha()F
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getName()Ljava/lang/String;
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getPathData()Ljava/util/List;
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getPathFillType-Rg-k1Os()I
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getStroke()Landroidx/compose/ui/graphics/Brush;
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeAlpha()F
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineCap-KaPHkGw()I
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineJoin-LxFBmk8()I
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineMiter()F
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getStrokeLineWidth()F
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathEnd()F
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathOffset()F
+PLandroidx/compose/ui/graphics/vector/VectorPath;->getTrimPathStart()F
+PLandroidx/compose/ui/graphics/vector/VectorProperty$Fill;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$Fill;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$FillAlpha;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$FillAlpha;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$PathData;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$PathData;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$Stroke;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$Stroke;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeAlpha;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeAlpha;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeLineWidth;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$StrokeLineWidth;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathEnd;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathEnd;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathOffset;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty$TrimPathStart;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty;-><clinit>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty;-><init>()V
+PLandroidx/compose/ui/graphics/vector/VectorProperty;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/ScrollContainerInfoKt$provideScrollContainerInfo$2;-><init>(Landroidx/compose/ui/input/ScrollContainerInfo;)V
+PLandroidx/compose/ui/input/ScrollContainerInfoKt$provideScrollContainerInfo$2;->invoke(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/ui/input/ScrollContainerInfoKt$provideScrollContainerInfo$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/ScrollContainerInfoKt;->canScroll(Landroidx/compose/ui/input/ScrollContainerInfo;)Z
+PLandroidx/compose/ui/input/ScrollContainerInfoKt;->provideScrollContainerInfo(Landroidx/compose/ui/Modifier;Landroidx/compose/ui/input/ScrollContainerInfo;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/ui/input/ScrollContainerInfoModifierLocal;-><init>(Landroidx/compose/ui/input/ScrollContainerInfo;)V
+PLandroidx/compose/ui/input/ScrollContainerInfoModifierLocal;->canScrollVertically()Z
+PLandroidx/compose/ui/input/ScrollContainerInfoModifierLocal;->getKey()Landroidx/compose/ui/modifier/ProvidableModifierLocal;
+PLandroidx/compose/ui/input/ScrollContainerInfoModifierLocal;->getValue()Landroidx/compose/ui/input/ScrollContainerInfoModifierLocal;
+PLandroidx/compose/ui/input/ScrollContainerInfoModifierLocal;->getValue()Ljava/lang/Object;
+PLandroidx/compose/ui/input/ScrollContainerInfoModifierLocal;->onModifierLocalsUpdated(Landroidx/compose/ui/modifier/ModifierLocalReadScope;)V
+PLandroidx/compose/ui/input/ScrollContainerInfoModifierLocal;->setParent(Landroidx/compose/ui/input/ScrollContainerInfo;)V
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$dispatchPostFling$1;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$dispatchPostFling$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher$dispatchPreFling$1;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->dispatchPostFling-RZ2iAVY(JJLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->dispatchPostScroll-DzOQY0M(JJI)J
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->dispatchPreFling-QWom1Mo(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->dispatchPreScroll-OzD1aCk(JI)J
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->getCoroutineScope()Lkotlinx/coroutines/CoroutineScope;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollDispatcher;->getOriginNestedScrollScope$ui_release()Lkotlinx/coroutines/CoroutineScope;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$1;->invoke()Lkotlinx/coroutines/CoroutineScope;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$onPostFling$1;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$onPostFling$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal$onPreFling$1;-><init>(Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->access$getNestedCoroutineScope(Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;)Lkotlinx/coroutines/CoroutineScope;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->getNestedCoroutineScope()Lkotlinx/coroutines/CoroutineScope;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->getValue()Landroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->getValue()Ljava/lang/Object;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->onPostFling-RZ2iAVY(JJLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->onPostScroll-DzOQY0M(JJI)J
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->onPreFling-QWom1Mo(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollModifierLocal;->onPreScroll-OzD1aCk(JI)J
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource$Companion;-><init>()V
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource$Companion;->getDrag-WNlRxjI()I
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource$Companion;->getFling-WNlRxjI()I
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource;-><clinit>()V
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource;->access$getDrag$cp()I
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource;->access$getFling$cp()I
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource;->constructor-impl(I)I
+PLandroidx/compose/ui/input/nestedscroll/NestedScrollSource;->equals-impl0(II)Z
+PLandroidx/compose/ui/input/pointer/ConsumedData;-><clinit>()V
+PLandroidx/compose/ui/input/pointer/ConsumedData;-><init>(ZZ)V
+PLandroidx/compose/ui/input/pointer/ConsumedData;->getDownChange()Z
+PLandroidx/compose/ui/input/pointer/ConsumedData;->getPositionChange()Z
+PLandroidx/compose/ui/input/pointer/ConsumedData;->setDownChange(Z)V
+PLandroidx/compose/ui/input/pointer/ConsumedData;->setPositionChange(Z)V
+PLandroidx/compose/ui/input/pointer/HistoricalChange;-><init>(JJ)V
+PLandroidx/compose/ui/input/pointer/HistoricalChange;-><init>(JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/HistoricalChange;->getPosition-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/HistoricalChange;->getUptimeMillis()J
+PLandroidx/compose/ui/input/pointer/HitPathTracker;->addHitPath-KNwqfcY(JLjava/util/List;)V
+PLandroidx/compose/ui/input/pointer/HitPathTracker;->dispatchChanges(Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z
+PLandroidx/compose/ui/input/pointer/HitPathTracker;->processCancel()V
+PLandroidx/compose/ui/input/pointer/HitPathTracker;->removeDetachedPointerInputFilters()V
+PLandroidx/compose/ui/input/pointer/InternalPointerEvent;-><init>(Ljava/util/Map;Landroidx/compose/ui/input/pointer/PointerInputEvent;)V
+PLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getChanges()Ljava/util/Map;
+PLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getMotionEvent()Landroid/view/MotionEvent;
+PLandroidx/compose/ui/input/pointer/InternalPointerEvent;->getSuppressMovementConsumption()Z
+PLandroidx/compose/ui/input/pointer/MotionEventAdapter;->addFreshIds(Landroid/view/MotionEvent;)V
+PLandroidx/compose/ui/input/pointer/MotionEventAdapter;->clearOnDeviceChange(Landroid/view/MotionEvent;)V
+PLandroidx/compose/ui/input/pointer/MotionEventAdapter;->endStream(I)V
+PLandroidx/compose/ui/input/pointer/MotionEventAdapter;->getComposePointerId-_I2yYro(I)J
+PLandroidx/compose/ui/input/pointer/MotionEventAdapter;->removeStaleIds(Landroid/view/MotionEvent;)V
+PLandroidx/compose/ui/input/pointer/Node;-><init>(Landroidx/compose/ui/node/PointerInputModifierNode;)V
+PLandroidx/compose/ui/input/pointer/Node;->clearCache()V
+PLandroidx/compose/ui/input/pointer/Node;->dispatchCancel()V
+PLandroidx/compose/ui/input/pointer/Node;->getPointerIds()Landroidx/compose/runtime/collection/MutableVector;
+PLandroidx/compose/ui/input/pointer/Node;->getPointerInputNode()Landroidx/compose/ui/node/PointerInputModifierNode;
+PLandroidx/compose/ui/input/pointer/Node;->hasPositionChanged(Landroidx/compose/ui/input/pointer/PointerEvent;Landroidx/compose/ui/input/pointer/PointerEvent;)Z
+PLandroidx/compose/ui/input/pointer/NodeParent;->buildCache(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z
+PLandroidx/compose/ui/input/pointer/NodeParent;->cleanUpHits(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)V
+PLandroidx/compose/ui/input/pointer/NodeParent;->clear()V
+PLandroidx/compose/ui/input/pointer/NodeParent;->dispatchCancel()V
+PLandroidx/compose/ui/input/pointer/NodeParent;->dispatchFinalEventPass(Landroidx/compose/ui/input/pointer/InternalPointerEvent;)Z
+PLandroidx/compose/ui/input/pointer/NodeParent;->dispatchMainEventPass(Ljava/util/Map;Landroidx/compose/ui/layout/LayoutCoordinates;Landroidx/compose/ui/input/pointer/InternalPointerEvent;Z)Z
+PLandroidx/compose/ui/input/pointer/NodeParent;->getChildren()Landroidx/compose/runtime/collection/MutableVector;
+PLandroidx/compose/ui/input/pointer/NodeParent;->removeDetachedPointerInputFilters()V
+PLandroidx/compose/ui/input/pointer/PointerEvent;->getChanges()Ljava/util/List;
+PLandroidx/compose/ui/input/pointer/PointerEvent;->getType-7fucELk()I
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToDown(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToDownIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToUp(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->changedToUpIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->isOutOfBounds-jwHxaWs(Landroidx/compose/ui/input/pointer/PointerInputChange;JJ)Z
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChange(Landroidx/compose/ui/input/pointer/PointerInputChange;)J
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangeIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)J
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangeInternal(Landroidx/compose/ui/input/pointer/PointerInputChange;Z)J
+PLandroidx/compose/ui/input/pointer/PointerEventKt;->positionChangedIgnoreConsumed(Landroidx/compose/ui/input/pointer/PointerInputChange;)Z
+PLandroidx/compose/ui/input/pointer/PointerEventPass;->values()[Landroidx/compose/ui/input/pointer/PointerEventPass;
+PLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getEnter-7fucELk()I
+PLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getExit-7fucELk()I
+PLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getPress-7fucELk()I
+PLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getRelease-7fucELk()I
+PLandroidx/compose/ui/input/pointer/PointerEventType$Companion;->getScroll-7fucELk()I
+PLandroidx/compose/ui/input/pointer/PointerEventType;->access$getEnter$cp()I
+PLandroidx/compose/ui/input/pointer/PointerEventType;->access$getExit$cp()I
+PLandroidx/compose/ui/input/pointer/PointerEventType;->access$getPress$cp()I
+PLandroidx/compose/ui/input/pointer/PointerEventType;->access$getRelease$cp()I
+PLandroidx/compose/ui/input/pointer/PointerEventType;->access$getScroll$cp()I
+PLandroidx/compose/ui/input/pointer/PointerEventType;->equals-impl0(II)Z
+PLandroidx/compose/ui/input/pointer/PointerId;->box-impl(J)Landroidx/compose/ui/input/pointer/PointerId;
+PLandroidx/compose/ui/input/pointer/PointerId;->constructor-impl(J)J
+PLandroidx/compose/ui/input/pointer/PointerId;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/input/pointer/PointerId;->equals-impl0(JJ)Z
+PLandroidx/compose/ui/input/pointer/PointerId;->hashCode()I
+PLandroidx/compose/ui/input/pointer/PointerId;->hashCode-impl(J)I
+PLandroidx/compose/ui/input/pointer/PointerId;->unbox-impl()J
+PLandroidx/compose/ui/input/pointer/PointerInputChange;-><init>(JJJZFJJZZIJ)V
+PLandroidx/compose/ui/input/pointer/PointerInputChange;-><init>(JJJZFJJZZIJILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/PointerInputChange;-><init>(JJJZFJJZZIJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/PointerInputChange;-><init>(JJJZFJJZZILjava/util/List;J)V
+PLandroidx/compose/ui/input/pointer/PointerInputChange;-><init>(JJJZFJJZZILjava/util/List;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/PointerInputChange;-><init>(JJJZJJZZIJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->consume()V
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getHistorical()Ljava/util/List;
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getId-J3iCeTQ()J
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getPosition-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getPressed()Z
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getPressure()F
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getPreviousPosition-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getPreviousPressed()Z
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getType-T8wyACA()I
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->getUptimeMillis()J
+PLandroidx/compose/ui/input/pointer/PointerInputChange;->isConsumed()Z
+PLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;-><init>(JJZI)V
+PLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;-><init>(JJZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getDown()Z
+PLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getPositionOnScreen-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer$PointerInputData;->getUptime()J
+PLandroidx/compose/ui/input/pointer/PointerInputChangeEventProducer;->clear()V
+PLandroidx/compose/ui/input/pointer/PointerInputEvent;-><init>(JLjava/util/List;Landroid/view/MotionEvent;)V
+PLandroidx/compose/ui/input/pointer/PointerInputEvent;->getMotionEvent()Landroid/view/MotionEvent;
+PLandroidx/compose/ui/input/pointer/PointerInputEvent;->getPointers()Ljava/util/List;
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;-><init>(JJJJZFIZLjava/util/List;J)V
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;-><init>(JJJJZFIZLjava/util/List;JLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getDown()Z
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getHistorical()Ljava/util/List;
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getId-J3iCeTQ()J
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getIssuesEnterExit()Z
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPosition-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPositionOnScreen-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getPressure()F
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getScrollDelta-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getType-T8wyACA()I
+PLandroidx/compose/ui/input/pointer/PointerInputEventData;->getUptime()J
+PLandroidx/compose/ui/input/pointer/PointerInputEventProcessor;->processCancel()V
+PLandroidx/compose/ui/input/pointer/PointerInputEventProcessorKt;->ProcessResult(ZZ)I
+PLandroidx/compose/ui/input/pointer/PointerInputFilter;->getShareWithSiblings()Z
+PLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->equals-impl(ILjava/lang/Object;)Z
+PLandroidx/compose/ui/input/pointer/PointerKeyboardModifiers;->unbox-impl()I
+PLandroidx/compose/ui/input/pointer/PointerType$Companion;-><init>()V
+PLandroidx/compose/ui/input/pointer/PointerType$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/PointerType$Companion;->getMouse-T8wyACA()I
+PLandroidx/compose/ui/input/pointer/PointerType$Companion;->getTouch-T8wyACA()I
+PLandroidx/compose/ui/input/pointer/PointerType;-><clinit>()V
+PLandroidx/compose/ui/input/pointer/PointerType;->access$getMouse$cp()I
+PLandroidx/compose/ui/input/pointer/PointerType;->access$getTouch$cp()I
+PLandroidx/compose/ui/input/pointer/PointerType;->constructor-impl(I)I
+PLandroidx/compose/ui/input/pointer/PointerType;->equals-impl0(II)Z
+PLandroidx/compose/ui/input/pointer/ProcessResult;->constructor-impl(I)I
+PLandroidx/compose/ui/input/pointer/ProcessResult;->getAnyMovementConsumed-impl(I)Z
+PLandroidx/compose/ui/input/pointer/ProcessResult;->getDispatchedToAPointerInputModifier-impl(I)Z
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine$withTimeout$1;-><init>(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine$withTimeout$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine$withTimeout$job$1;-><init>(JLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;Lkotlin/coroutines/Continuation;)V
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine$withTimeout$job$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine$withTimeout$job$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->getCurrentEvent()Landroidx/compose/ui/input/pointer/PointerEvent;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->getExtendedTouchPadding-NH-jbRc()J
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->getSize-YbymL2g()J
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;->withTimeout(JLkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$WhenMappings;-><clinit>()V
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->access$getBoundsSize$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;)J
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->access$getCurrentEvent$p(Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;)Landroidx/compose/ui/input/pointer/PointerEvent;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->getCoroutineScope()Lkotlinx/coroutines/CoroutineScope;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->getExtendedTouchPadding-NH-jbRc()J
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->getInterceptOutOfBoundsChildEvents()Z
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration;
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->onCancel()V
+PLandroidx/compose/ui/input/pointer/SuspendingPointerInputFilter;->toSize-XkaWNTQ(J)J
+PLandroidx/compose/ui/input/pointer/util/Matrix;-><init>(II)V
+PLandroidx/compose/ui/input/pointer/util/Matrix;->get(II)F
+PLandroidx/compose/ui/input/pointer/util/Matrix;->getRow(I)Landroidx/compose/ui/input/pointer/util/Vector;
+PLandroidx/compose/ui/input/pointer/util/Matrix;->set(IIF)V
+PLandroidx/compose/ui/input/pointer/util/PointAtTime;-><init>(JJ)V
+PLandroidx/compose/ui/input/pointer/util/PointAtTime;-><init>(JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/util/PointAtTime;->getPoint-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/util/PointAtTime;->getTime()J
+PLandroidx/compose/ui/input/pointer/util/PolynomialFit;-><init>(Ljava/util/List;F)V
+PLandroidx/compose/ui/input/pointer/util/PolynomialFit;->getCoefficients()Ljava/util/List;
+PLandroidx/compose/ui/input/pointer/util/PolynomialFit;->getConfidence()F
+PLandroidx/compose/ui/input/pointer/util/Vector;-><init>(I)V
+PLandroidx/compose/ui/input/pointer/util/Vector;->get(I)F
+PLandroidx/compose/ui/input/pointer/util/Vector;->norm()F
+PLandroidx/compose/ui/input/pointer/util/Vector;->set(IF)V
+PLandroidx/compose/ui/input/pointer/util/Vector;->times(Landroidx/compose/ui/input/pointer/util/Vector;)F
+PLandroidx/compose/ui/input/pointer/util/VelocityEstimate$Companion;-><init>()V
+PLandroidx/compose/ui/input/pointer/util/VelocityEstimate$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/util/VelocityEstimate;-><clinit>()V
+PLandroidx/compose/ui/input/pointer/util/VelocityEstimate;-><init>(JFJJ)V
+PLandroidx/compose/ui/input/pointer/util/VelocityEstimate;-><init>(JFJJLkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/input/pointer/util/VelocityEstimate;->getPixelsPerSecond-F1C5BW0()J
+PLandroidx/compose/ui/input/pointer/util/VelocityTracker;->addPosition-Uv8p0NA(JJ)V
+PLandroidx/compose/ui/input/pointer/util/VelocityTracker;->calculateVelocity-9UxMQ8M()J
+PLandroidx/compose/ui/input/pointer/util/VelocityTracker;->getCurrentPointerPositionAccumulator-F1C5BW0$ui_release()J
+PLandroidx/compose/ui/input/pointer/util/VelocityTracker;->getVelocityEstimate()Landroidx/compose/ui/input/pointer/util/VelocityEstimate;
+PLandroidx/compose/ui/input/pointer/util/VelocityTracker;->resetTracking()V
+PLandroidx/compose/ui/input/pointer/util/VelocityTracker;->setCurrentPointerPositionAccumulator-k-4lQ0M$ui_release(J)V
+PLandroidx/compose/ui/input/pointer/util/VelocityTrackerKt;->addPointerInputChange(Landroidx/compose/ui/input/pointer/util/VelocityTracker;Landroidx/compose/ui/input/pointer/PointerInputChange;)V
+PLandroidx/compose/ui/input/pointer/util/VelocityTrackerKt;->polyFitLeastSquares(Ljava/util/List;Ljava/util/List;I)Landroidx/compose/ui/input/pointer/util/PolynomialFit;
+PLandroidx/compose/ui/layout/LayoutId;-><init>(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/ui/layout/LayoutId;->getLayoutId()Ljava/lang/Object;
+PLandroidx/compose/ui/layout/LayoutId;->modifyParentData(Landroidx/compose/ui/unit/Density;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/layout/LayoutIdKt;->getLayoutId(Landroidx/compose/ui/layout/Measurable;)Ljava/lang/Object;
+PLandroidx/compose/ui/layout/LayoutIdKt;->layoutId(Landroidx/compose/ui/Modifier;Ljava/lang/Object;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/ui/layout/LayoutModifierImpl;-><init>(Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/ui/layout/LayoutModifierImpl;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/layout/LayoutModifierImpl;->measure-3p2s80s(Landroidx/compose/ui/layout/MeasureScope;Landroidx/compose/ui/layout/Measurable;J)Landroidx/compose/ui/layout/MeasureResult;
+PLandroidx/compose/ui/layout/LayoutModifierKt;->layout(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function3;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getForceRecompose()Z
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->getSlotId()Ljava/lang/Object;
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setActive(Z)V
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$NodeState;->setSlotId(Ljava/lang/Object;)V
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$Scope;->getDensity()F
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$precompose$1;-><init>(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;Ljava/lang/Object;)V
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$precompose$1;->dispose()V
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$precompose$1;->getPlaceablesCount()I
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState$precompose$1;->premeasure-0kLqBqw(IJ)V
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getPrecomposeMap$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Ljava/util/Map;
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->access$getRoot$p(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;)Landroidx/compose/ui/node/LayoutNode;
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->disposeCurrentNodes()V
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->getSlotIdAtIndex(I)Ljava/lang/Object;
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->move$default(Landroidx/compose/ui/layout/LayoutNodeSubcompositionsState;IIIILjava/lang/Object;)V
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->move(III)V
+PLandroidx/compose/ui/layout/LayoutNodeSubcompositionsState;->precompose(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/layout/SubcomposeLayoutState$PrecomposedSlotHandle;
+PLandroidx/compose/ui/layout/OnRemeasuredModifierKt;->onSizeChanged(Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function1;)Landroidx/compose/ui/Modifier;
+PLandroidx/compose/ui/layout/OnSizeChangedModifier;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/ui/layout/OnSizeChangedModifier;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/layout/OnSizeChangedModifier;->onRemeasured-ozmzZPI(J)V
+PLandroidx/compose/ui/layout/Placeable$PlacementScope;->placeWithLayer-aW-9-wM$default(Landroidx/compose/ui/layout/Placeable$PlacementScope;Landroidx/compose/ui/layout/Placeable;JFLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+PLandroidx/compose/ui/layout/Placeable;->getMeasuredHeight()I
+PLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$5$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/ui/layout/SubcomposeLayoutKt$SubcomposeLayout$6;-><init>(Landroidx/compose/ui/layout/SubcomposeLayoutState;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;II)V
+PLandroidx/compose/ui/layout/SubcomposeLayoutState;->disposeCurrentNodes$ui_release()V
+PLandroidx/compose/ui/layout/SubcomposeLayoutState;->precompose(Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Landroidx/compose/ui/layout/SubcomposeLayoutState$PrecomposedSlotHandle;
+PLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->add$ui_release(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->clear()V
+PLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->contains(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/layout/SubcomposeSlotReusePolicy$SlotIdsSet;->iterator()Ljava/util/Iterator;
+PLandroidx/compose/ui/node/AlignmentLines$recalculate$1;-><init>(Landroidx/compose/ui/node/AlignmentLines;)V
+PLandroidx/compose/ui/node/AlignmentLines$recalculate$1;->invoke(Landroidx/compose/ui/node/AlignmentLinesOwner;)V
+PLandroidx/compose/ui/node/AlignmentLines$recalculate$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/node/AlignmentLines;->access$addAlignmentLine(Landroidx/compose/ui/node/AlignmentLines;Landroidx/compose/ui/layout/AlignmentLine;ILandroidx/compose/ui/node/NodeCoordinator;)V
+PLandroidx/compose/ui/node/AlignmentLines;->access$getAlignmentLineMap$p(Landroidx/compose/ui/node/AlignmentLines;)Ljava/util/Map;
+PLandroidx/compose/ui/node/AlignmentLines;->addAlignmentLine(Landroidx/compose/ui/layout/AlignmentLine;ILandroidx/compose/ui/node/NodeCoordinator;)V
+PLandroidx/compose/ui/node/AlignmentLines;->getAlignmentLinesOwner()Landroidx/compose/ui/node/AlignmentLinesOwner;
+PLandroidx/compose/ui/node/AlignmentLines;->getLastCalculation()Ljava/util/Map;
+PLandroidx/compose/ui/node/AlignmentLines;->recalculate()V
+PLandroidx/compose/ui/node/BackwardsCompatNode;->interceptOutOfBoundsChildEvents()Z
+PLandroidx/compose/ui/node/BackwardsCompatNode;->isValid()Z
+PLandroidx/compose/ui/node/BackwardsCompatNode;->onCancelPointerInput()V
+PLandroidx/compose/ui/node/BackwardsCompatNode;->onDetach()V
+PLandroidx/compose/ui/node/BackwardsCompatNode;->sharePointerInputWithSiblings()Z
+PLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->invoke(Landroidx/compose/ui/node/BackwardsCompatNode;)V
+PLandroidx/compose/ui/node/BackwardsCompatNodeKt$updateModifierLocalConsumer$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/node/DistanceAndInLayer;->compareTo-S_HNhKs(JJ)I
+PLandroidx/compose/ui/node/DistanceAndInLayer;->constructor-impl(J)J
+PLandroidx/compose/ui/node/DistanceAndInLayer;->getDistance-impl(J)F
+PLandroidx/compose/ui/node/DistanceAndInLayer;->isInLayer-impl(J)Z
+PLandroidx/compose/ui/node/HitTestResult;->access$getHitDepth$p(Landroidx/compose/ui/node/HitTestResult;)I
+PLandroidx/compose/ui/node/HitTestResult;->access$setHitDepth$p(Landroidx/compose/ui/node/HitTestResult;I)V
+PLandroidx/compose/ui/node/HitTestResult;->clear()V
+PLandroidx/compose/ui/node/HitTestResult;->ensureContainerSize()V
+PLandroidx/compose/ui/node/HitTestResult;->findBestHitDistance-ptXAw2c()J
+PLandroidx/compose/ui/node/HitTestResult;->get(I)Ljava/lang/Object;
+PLandroidx/compose/ui/node/HitTestResult;->getSize()I
+PLandroidx/compose/ui/node/HitTestResult;->hasHit()Z
+PLandroidx/compose/ui/node/HitTestResult;->hit(Ljava/lang/Object;ZLkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/ui/node/HitTestResult;->hitInMinimumTouchTarget(Ljava/lang/Object;FZLkotlin/jvm/functions/Function0;)V
+PLandroidx/compose/ui/node/HitTestResult;->isEmpty()Z
+PLandroidx/compose/ui/node/HitTestResult;->isHitInMinimumTouchTargetBetter(FZ)Z
+PLandroidx/compose/ui/node/HitTestResult;->resizeToHitDepth()V
+PLandroidx/compose/ui/node/HitTestResult;->size()I
+PLandroidx/compose/ui/node/HitTestResultKt;->DistanceAndInLayer(FZ)J
+PLandroidx/compose/ui/node/HitTestResultKt;->access$DistanceAndInLayer(FZ)J
+PLandroidx/compose/ui/node/InnerNodeCoordinator;->calculateAlignmentLine(Landroidx/compose/ui/layout/AlignmentLine;)I
+PLandroidx/compose/ui/node/LayoutModifierNode;->forceRemeasure()V
+PLandroidx/compose/ui/node/LayoutModifierNodeCoordinator;->calculateAlignmentLine(Landroidx/compose/ui/layout/AlignmentLine;)I
+PLandroidx/compose/ui/node/LayoutModifierNodeCoordinatorKt;->access$calculateAlignmentAndPlaceChildAsNeeded(Landroidx/compose/ui/node/LookaheadCapablePlaceable;Landroidx/compose/ui/layout/AlignmentLine;)I
+PLandroidx/compose/ui/node/LayoutModifierNodeCoordinatorKt;->calculateAlignmentAndPlaceChildAsNeeded(Landroidx/compose/ui/node/LookaheadCapablePlaceable;Landroidx/compose/ui/layout/AlignmentLine;)I
+PLandroidx/compose/ui/node/LayoutNode$WhenMappings;-><clinit>()V
+PLandroidx/compose/ui/node/LayoutNode;->forceRemeasure()V
+PLandroidx/compose/ui/node/LayoutNode;->getViewConfiguration()Landroidx/compose/ui/platform/ViewConfiguration;
+PLandroidx/compose/ui/node/LayoutNode;->hitTest-M_7yMNQ$ui_release$default(Landroidx/compose/ui/node/LayoutNode;JLandroidx/compose/ui/node/HitTestResult;ZZILjava/lang/Object;)V
+PLandroidx/compose/ui/node/LayoutNode;->hitTest-M_7yMNQ$ui_release(JLandroidx/compose/ui/node/HitTestResult;ZZ)V
+PLandroidx/compose/ui/node/LayoutNode;->markSubtreeAsNotPlaced()V
+PLandroidx/compose/ui/node/LayoutNode;->move$ui_release(III)V
+PLandroidx/compose/ui/node/LayoutNode;->onChildRemoved(Landroidx/compose/ui/node/LayoutNode;)V
+PLandroidx/compose/ui/node/LayoutNode;->removeAll$ui_release()V
+PLandroidx/compose/ui/node/LayoutNode;->removeAt$ui_release(II)V
+PLandroidx/compose/ui/node/LayoutNode;->rescheduleRemeasureOrRelayout$ui_release(Landroidx/compose/ui/node/LayoutNode;)V
+PLandroidx/compose/ui/node/LayoutNodeAlignmentLines;->calculatePositionInParent-R5De75A(Landroidx/compose/ui/node/NodeCoordinator;J)J
+PLandroidx/compose/ui/node/LayoutNodeAlignmentLines;->getAlignmentLinesMap(Landroidx/compose/ui/node/NodeCoordinator;)Ljava/util/Map;
+PLandroidx/compose/ui/node/LayoutNodeDrawScope;->performDraw(Landroidx/compose/ui/node/DrawModifierNode;Landroidx/compose/ui/graphics/Canvas;)V
+PLandroidx/compose/ui/node/LayoutNodeDrawScope;->roundToPx-0680j_4(F)I
+PLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->calculateAlignmentLines()Ljava/util/Map;
+PLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->get(Landroidx/compose/ui/layout/AlignmentLine;)I
+PLandroidx/compose/ui/node/LayoutNodeLayoutDelegate$MeasurePassDelegate;->isPlaced()Z
+PLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->getCoordinatesAccessedDuringPlacement()Z
+PLandroidx/compose/ui/node/LayoutNodeLayoutDelegate;->resetAlignmentLines()V
+PLandroidx/compose/ui/node/LookaheadCapablePlaceable;->get(Landroidx/compose/ui/layout/AlignmentLine;)I
+PLandroidx/compose/ui/node/LookaheadCapablePlaceable;->setShallowPlacing$ui_release(Z)V
+PLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->doLookaheadRemeasure-sdFAvZA(Landroidx/compose/ui/node/LayoutNode;Landroidx/compose/ui/unit/Constraints;)Z
+PLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->measureAndLayout-0kLqBqw(Landroidx/compose/ui/node/LayoutNode;J)V
+PLandroidx/compose/ui/node/MeasureAndLayoutDelegate;->onNodeDetached(Landroidx/compose/ui/node/LayoutNode;)V
+PLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->clear()V
+PLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->get(I)Ljava/lang/Object;
+PLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->getSize()I
+PLandroidx/compose/ui/node/MutableVectorWithMutationTracking;->removeAt(I)Ljava/lang/Object;
+PLandroidx/compose/ui/node/NodeChain$Differ;->remove(I)V
+PLandroidx/compose/ui/node/NodeChain;->access$disposeAndRemoveNode(Landroidx/compose/ui/node/NodeChain;Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node;
+PLandroidx/compose/ui/node/NodeChain;->disposeAndRemoveNode(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node;
+PLandroidx/compose/ui/node/NodeChain;->removeNode(Landroidx/compose/ui/Modifier$Node;)Landroidx/compose/ui/Modifier$Node;
+PLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->childHitTest-YqVAtuI(Landroidx/compose/ui/node/LayoutNode;JLandroidx/compose/ui/node/HitTestResult;ZZ)V
+PLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->entityType-OLwlOKw()I
+PLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->interceptOutOfBoundsChildEvents(Landroidx/compose/ui/node/DelegatableNode;)Z
+PLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->interceptOutOfBoundsChildEvents(Landroidx/compose/ui/node/PointerInputModifierNode;)Z
+PLandroidx/compose/ui/node/NodeCoordinator$Companion$PointerInputSource$1;->shouldHitTestChildren(Landroidx/compose/ui/node/LayoutNode;)Z
+PLandroidx/compose/ui/node/NodeCoordinator$Companion;->getPointerInputSource()Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;
+PLandroidx/compose/ui/node/NodeCoordinator$hit$1;-><init>(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/node/DelegatableNode;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V
+PLandroidx/compose/ui/node/NodeCoordinator$hit$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/ui/node/NodeCoordinator$hit$1;->invoke()V
+PLandroidx/compose/ui/node/NodeCoordinator$hitNear$1;-><init>(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/node/DelegatableNode;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZF)V
+PLandroidx/compose/ui/node/NodeCoordinator$hitNear$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/ui/node/NodeCoordinator$hitNear$1;->invoke()V
+PLandroidx/compose/ui/node/NodeCoordinator;->access$getPointerInputSource$cp()Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;
+PLandroidx/compose/ui/node/NodeCoordinator;->access$hit-1hIXUjU(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/node/DelegatableNode;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V
+PLandroidx/compose/ui/node/NodeCoordinator;->access$hitNear-JHbHoSQ(Landroidx/compose/ui/node/NodeCoordinator;Landroidx/compose/ui/node/DelegatableNode;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZF)V
+PLandroidx/compose/ui/node/NodeCoordinator;->calculateMinimumTouchTargetPadding-E7KxVPU(J)J
+PLandroidx/compose/ui/node/NodeCoordinator;->distanceInMinimumTouchTarget-tz77jQw(JJ)F
+PLandroidx/compose/ui/node/NodeCoordinator;->getChild()Landroidx/compose/ui/node/LookaheadCapablePlaceable;
+PLandroidx/compose/ui/node/NodeCoordinator;->getHasMeasureResult()Z
+PLandroidx/compose/ui/node/NodeCoordinator;->getMinimumTouchTargetSize-NH-jbRc()J
+PLandroidx/compose/ui/node/NodeCoordinator;->headUnchecked-H91voCI(I)Ljava/lang/Object;
+PLandroidx/compose/ui/node/NodeCoordinator;->hit-1hIXUjU(Landroidx/compose/ui/node/DelegatableNode;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V
+PLandroidx/compose/ui/node/NodeCoordinator;->hitNear-JHbHoSQ(Landroidx/compose/ui/node/DelegatableNode;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZF)V
+PLandroidx/compose/ui/node/NodeCoordinator;->hitTest-YqVAtuI(Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZ)V
+PLandroidx/compose/ui/node/NodeCoordinator;->isPointerInBounds-k-4lQ0M(J)Z
+PLandroidx/compose/ui/node/NodeCoordinator;->isValid()Z
+PLandroidx/compose/ui/node/NodeCoordinator;->offsetFromEdge-MK-Hz9U(J)J
+PLandroidx/compose/ui/node/NodeCoordinator;->replace$ui_release()V
+PLandroidx/compose/ui/node/NodeCoordinator;->shouldSharePointerInputWithSiblings()Z
+PLandroidx/compose/ui/node/NodeCoordinator;->speculativeHit-JHbHoSQ(Landroidx/compose/ui/node/DelegatableNode;Landroidx/compose/ui/node/NodeCoordinator$HitTestSource;JLandroidx/compose/ui/node/HitTestResult;ZZF)V
+PLandroidx/compose/ui/node/NodeCoordinator;->toCoordinator(Landroidx/compose/ui/layout/LayoutCoordinates;)Landroidx/compose/ui/node/NodeCoordinator;
+PLandroidx/compose/ui/node/NodeCoordinator;->toParentPosition-MK-Hz9U(J)J
+PLandroidx/compose/ui/node/NodeCoordinator;->withinLayerBounds-k-4lQ0M(J)Z
+PLandroidx/compose/ui/node/NodeCoordinatorKt;->access$nextUncheckedUntil-hw7D004(Landroidx/compose/ui/node/DelegatableNode;II)Ljava/lang/Object;
+PLandroidx/compose/ui/node/NodeCoordinatorKt;->nextUncheckedUntil-hw7D004(Landroidx/compose/ui/node/DelegatableNode;II)Ljava/lang/Object;
+PLandroidx/compose/ui/node/NodeKindKt;->autoInvalidateRemovedNode(Landroidx/compose/ui/Modifier$Node;)V
+PLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;-><clinit>()V
+PLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;-><init>()V
+PLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->invoke(Ljava/lang/Object;)Ljava/lang/Boolean;
+PLandroidx/compose/ui/node/OwnerSnapshotObserver$clearInvalidObservations$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/node/OwnerSnapshotObserver;->clearInvalidObservations$ui_release()V
+PLandroidx/compose/ui/node/OwnerSnapshotObserver;->stopObserving$ui_release()V
+PLandroidx/compose/ui/node/PointerInputModifierNodeKt;->getLayoutCoordinates(Landroidx/compose/ui/node/PointerInputModifierNode;)Landroidx/compose/ui/layout/LayoutCoordinates;
+PLandroidx/compose/ui/node/UiApplier;->onClear()V
+PLandroidx/compose/ui/node/UiApplier;->remove(II)V
+PLandroidx/compose/ui/platform/AbstractComposeView;->disposeComposition()V
+PLandroidx/compose/ui/platform/AbstractComposeView;->shouldDelayChildPressedState()Z
+PLandroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1$value$1;->canScrollHorizontally()Z
+PLandroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1$value$1;->canScrollVertically()Z
+PLandroidx/compose/ui/platform/AndroidComposeView$scrollContainerInfo$1$value$1;->isInScrollableViewGroup(Landroid/view/View;)Z
+PLandroidx/compose/ui/platform/AndroidComposeView;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
+PLandroidx/compose/ui/platform/AndroidComposeView;->hasChangedDevices(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)Z
+PLandroidx/compose/ui/platform/AndroidComposeView;->isBadMotionEvent(Landroid/view/MotionEvent;)Z
+PLandroidx/compose/ui/platform/AndroidComposeView;->isInBounds(Landroid/view/MotionEvent;)Z
+PLandroidx/compose/ui/platform/AndroidComposeView;->isPositionChanged(Landroid/view/MotionEvent;)Z
+PLandroidx/compose/ui/platform/AndroidComposeView;->measureAndLayout-0kLqBqw(Landroidx/compose/ui/node/LayoutNode;J)V
+PLandroidx/compose/ui/platform/AndroidComposeView;->onDetach(Landroidx/compose/ui/node/LayoutNode;)V
+PLandroidx/compose/ui/platform/AndroidComposeView;->onDetachedFromWindow()V
+PLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowPosition()V
+PLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowPosition(Landroid/view/MotionEvent;)V
+PLandroidx/compose/ui/platform/AndroidComposeView;->recalculateWindowViewTransforms()V
+PLandroidx/compose/ui/platform/AndroidComposeView;->requestClearInvalidObservations()V
+PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$1;->onViewDetachedFromWindow(Landroid/view/View;)V
+PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat$boundsUpdatesEventLoop$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getHandler$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Landroid/os/Handler;
+PLandroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;->access$getSemanticsChangeChecker$p(Landroidx/compose/ui/platform/AndroidComposeViewAccessibilityDelegateCompat;)Ljava/lang/Runnable;
+PLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsN;-><clinit>()V
+PLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsN;-><init>()V
+PLandroidx/compose/ui/platform/AndroidComposeViewVerificationHelperMethodsN;->setPointerIcon(Landroid/view/View;Landroidx/compose/ui/input/pointer/PointerIcon;)V
+PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$2$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$1$invoke$$inlined$onDispose$1;->dispose()V
+PLandroidx/compose/ui/platform/AndroidCompositionLocals_androidKt$obtainImageVectorCache$callbacks$1$1;->onTrimMemory(I)V
+PLandroidx/compose/ui/platform/AndroidViewConfiguration;->getTouchSlop()F
+PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry;->dispose()V
+PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;->invoke()Ljava/lang/Object;
+PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$1;->invoke()V
+PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt$DisposableSaveableStateRegistry$registered$1;->saveState()Landroid/os/Bundle;
+PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->access$toBundle(Ljava/util/Map;)Landroid/os/Bundle;
+PLandroidx/compose/ui/platform/DisposableSaveableStateRegistry_androidKt;->toBundle(Ljava/util/Map;)Landroid/os/Bundle;
+PLandroidx/compose/ui/platform/InvertMatrixKt;->invertTo-JiSxe2E([F[F)Z
+PLandroidx/compose/ui/platform/OutlineResolver;->isInOutline-k-4lQ0M(J)Z
+PLandroidx/compose/ui/platform/OutlineResolver;->updateCacheWithRect(Landroidx/compose/ui/geometry/Rect;)V
+PLandroidx/compose/ui/platform/RenderNodeApi29;->getClipToBounds()Z
+PLandroidx/compose/ui/platform/RenderNodeApi29;->getMatrix(Landroid/graphics/Matrix;)V
+PLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->invoke(Landroidx/compose/ui/platform/DeviceRenderNode;Landroid/graphics/Matrix;)V
+PLandroidx/compose/ui/platform/RenderNodeLayer$Companion$getMatrix$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/platform/RenderNodeLayer;->isInLayer-k-4lQ0M(J)Z
+PLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInOutline(Landroidx/compose/ui/graphics/Outline;FFLandroidx/compose/ui/graphics/Path;Landroidx/compose/ui/graphics/Path;)Z
+PLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isInRectangle(Landroidx/compose/ui/geometry/Rect;FF)Z
+PLandroidx/compose/ui/platform/ShapeContainingUtilKt;->isWithinEllipse-VE1yxkc(FFJFF)Z
+PLandroidx/compose/ui/platform/ViewCompositionStrategy$DisposeOnDetachedFromWindowOrReleasedFromPool$installFor$listener$1;->onViewDetachedFromWindow(Landroid/view/View;)V
+PLandroidx/compose/ui/platform/WindowInfoImpl;->setKeyboardModifiers-5xRPYO0(I)V
+PLandroidx/compose/ui/platform/WindowRecomposerPolicy$createAndInstallWindowRecomposer$1;->onViewDetachedFromWindow(Landroid/view/View;)V
+PLandroidx/compose/ui/platform/WindowRecomposer_androidKt$createLifecycleAwareWindowRecomposer$1;->onViewDetachedFromWindow(Landroid/view/View;)V
+PLandroidx/compose/ui/platform/WrappedComposition;->dispose()V
+PLandroidx/compose/ui/res/ImageVectorCache;->clear()V
+PLandroidx/compose/ui/semantics/CollectionInfo;-><clinit>()V
+PLandroidx/compose/ui/semantics/CollectionInfo;-><init>(II)V
+PLandroidx/compose/ui/semantics/Role$Companion;->getImage-o7Vup1c()I
+PLandroidx/compose/ui/semantics/Role;->access$getImage$cp()I
+PLandroidx/compose/ui/semantics/ScrollAxisRange;-><clinit>()V
+PLandroidx/compose/ui/semantics/ScrollAxisRange;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Z)V
+PLandroidx/compose/ui/semantics/SemanticsActions;->getScrollBy()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+PLandroidx/compose/ui/semantics/SemanticsActions;->getScrollToIndex()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+PLandroidx/compose/ui/semantics/SemanticsProperties;->getIndexForKey()Landroidx/compose/ui/semantics/SemanticsPropertyKey;
+PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->indexForKey(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollBy$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V
+PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollBy(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function2;)V
+PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollToIndex$default(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
+PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->scrollToIndex(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
+PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setCollectionInfo(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/semantics/CollectionInfo;)V
+PLandroidx/compose/ui/semantics/SemanticsPropertiesKt;->setVerticalScrollAxisRange(Landroidx/compose/ui/semantics/SemanticsPropertyReceiver;Landroidx/compose/ui/semantics/ScrollAxisRange;)V
+PLandroidx/compose/ui/text/font/GenericFontFamily;->getName()Ljava/lang/String;
+PLandroidx/compose/ui/text/font/PlatformTypefacesApi28;->createNamed-RetOiIg(Landroidx/compose/ui/text/font/GenericFontFamily;Landroidx/compose/ui/text/font/FontWeight;I)Landroid/graphics/Typeface;
+PLandroidx/compose/ui/text/input/TextInputServiceAndroid$textInputCommandEventLoop$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/compose/ui/unit/Constraints;->equals(Ljava/lang/Object;)Z
+PLandroidx/compose/ui/unit/Constraints;->equals-impl(JLjava/lang/Object;)Z
+PLandroidx/compose/ui/unit/Density;->toSize-XkaWNTQ(J)J
+PLandroidx/compose/ui/unit/DpSize$Companion;->getUnspecified-MYxV2XQ()J
+PLandroidx/compose/ui/unit/DpSize;->access$getUnspecified$cp()J
+PLandroidx/compose/ui/unit/IntOffsetKt;->plus-Nv-tHpc(JJ)J
+PLandroidx/compose/ui/unit/IntSize;->unbox-impl()J
+PLandroidx/compose/ui/unit/Velocity$Companion;-><init>()V
+PLandroidx/compose/ui/unit/Velocity$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLandroidx/compose/ui/unit/Velocity$Companion;->getZero-9UxMQ8M()J
+PLandroidx/compose/ui/unit/Velocity;-><clinit>()V
+PLandroidx/compose/ui/unit/Velocity;-><init>(J)V
+PLandroidx/compose/ui/unit/Velocity;->access$getZero$cp()J
+PLandroidx/compose/ui/unit/Velocity;->box-impl(J)Landroidx/compose/ui/unit/Velocity;
+PLandroidx/compose/ui/unit/Velocity;->constructor-impl(J)J
+PLandroidx/compose/ui/unit/Velocity;->copy-OhffZ5M$default(JFFILjava/lang/Object;)J
+PLandroidx/compose/ui/unit/Velocity;->copy-OhffZ5M(JFF)J
+PLandroidx/compose/ui/unit/Velocity;->equals-impl0(JJ)Z
+PLandroidx/compose/ui/unit/Velocity;->getX-impl(J)F
+PLandroidx/compose/ui/unit/Velocity;->getY-impl(J)F
+PLandroidx/compose/ui/unit/Velocity;->minus-AH228Gc(JJ)J
+PLandroidx/compose/ui/unit/Velocity;->plus-AH228Gc(JJ)J
+PLandroidx/compose/ui/unit/Velocity;->times-adjELrA(JF)J
+PLandroidx/compose/ui/unit/Velocity;->unbox-impl()J
+PLandroidx/compose/ui/unit/VelocityKt;->Velocity(FF)J
+PLandroidx/compose/ui/util/MathHelpersKt;->lerp(FFF)F
+PLandroidx/concurrent/futures/AbstractResolvableFuture$AtomicHelper;-><init>()V
+PLandroidx/concurrent/futures/AbstractResolvableFuture$AtomicHelper;-><init>(Landroidx/concurrent/futures/AbstractResolvableFuture$1;)V
+PLandroidx/concurrent/futures/AbstractResolvableFuture$Listener;-><clinit>()V
+PLandroidx/concurrent/futures/AbstractResolvableFuture$Listener;-><init>(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
+PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;-><init>(Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;)V
+PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casListeners(Landroidx/concurrent/futures/AbstractResolvableFuture;Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;)Z
+PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casValue(Landroidx/concurrent/futures/AbstractResolvableFuture;Ljava/lang/Object;Ljava/lang/Object;)Z
+PLandroidx/concurrent/futures/AbstractResolvableFuture$SafeAtomicHelper;->casWaiters(Landroidx/concurrent/futures/AbstractResolvableFuture;Landroidx/concurrent/futures/AbstractResolvableFuture$Waiter;Landroidx/concurrent/futures/AbstractResolvableFuture$Waiter;)Z
+PLandroidx/concurrent/futures/AbstractResolvableFuture$Waiter;-><clinit>()V
+PLandroidx/concurrent/futures/AbstractResolvableFuture$Waiter;-><init>(Z)V
+PLandroidx/concurrent/futures/AbstractResolvableFuture;-><clinit>()V
+PLandroidx/concurrent/futures/AbstractResolvableFuture;-><init>()V
+PLandroidx/concurrent/futures/AbstractResolvableFuture;->afterDone()V
+PLandroidx/concurrent/futures/AbstractResolvableFuture;->clearListeners(Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;)Landroidx/concurrent/futures/AbstractResolvableFuture$Listener;
+PLandroidx/concurrent/futures/AbstractResolvableFuture;->complete(Landroidx/concurrent/futures/AbstractResolvableFuture;)V
+PLandroidx/concurrent/futures/AbstractResolvableFuture;->releaseWaiters()V
+PLandroidx/concurrent/futures/AbstractResolvableFuture;->set(Ljava/lang/Object;)Z
+PLandroidx/concurrent/futures/ResolvableFuture;-><init>()V
+PLandroidx/concurrent/futures/ResolvableFuture;->create()Landroidx/concurrent/futures/ResolvableFuture;
+PLandroidx/concurrent/futures/ResolvableFuture;->set(Ljava/lang/Object;)Z
+PLandroidx/core/app/ActivityCompat$Api16Impl;->startIntentSenderForResult(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V
+PLandroidx/core/app/ActivityCompat;->startIntentSenderForResult(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;IIILandroid/os/Bundle;)V
+PLandroidx/core/app/ComponentActivity;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
+PLandroidx/core/app/ComponentActivity;->onSaveInstanceState(Landroid/os/Bundle;)V
+PLandroidx/core/app/ComponentActivity;->superDispatchKeyEvent(Landroid/view/KeyEvent;)Z
+PLandroidx/core/content/ContextCompat;-><clinit>()V
+PLandroidx/core/graphics/Insets;-><clinit>()V
+PLandroidx/core/graphics/Insets;-><init>(IIII)V
+PLandroidx/core/view/KeyEventDispatcher;-><clinit>()V
+PLandroidx/core/view/KeyEventDispatcher;->dispatchBeforeHierarchy(Landroid/view/View;Landroid/view/KeyEvent;)Z
+PLandroidx/core/view/KeyEventDispatcher;->dispatchKeyEvent(Landroidx/core/view/KeyEventDispatcher$Component;Landroid/view/View;Landroid/view/Window$Callback;Landroid/view/KeyEvent;)Z
+PLandroidx/core/view/ViewCompat$Api21Impl$1;-><init>(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V
+PLandroidx/core/view/ViewCompat$Api21Impl;->setOnApplyWindowInsetsListener(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V
+PLandroidx/core/view/ViewCompat;->dispatchUnhandledKeyEventBeforeHierarchy(Landroid/view/View;Landroid/view/KeyEvent;)Z
+PLandroidx/core/view/ViewCompat;->setOnApplyWindowInsetsListener(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V
+PLandroidx/core/view/ViewCompat;->setWindowInsetsAnimationCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V
+PLandroidx/core/view/ViewKt$ancestors$1;-><clinit>()V
+PLandroidx/core/view/ViewKt$ancestors$1;-><init>()V
+PLandroidx/core/view/ViewKt$ancestors$1;->invoke(Landroid/view/ViewParent;)Landroid/view/ViewParent;
+PLandroidx/core/view/ViewKt$ancestors$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroidx/core/view/ViewKt;->getAncestors(Landroid/view/View;)Lkotlin/sequences/Sequence;
+PLandroidx/core/view/WindowInsetsAnimationCompat$Callback;-><init>(I)V
+PLandroidx/core/view/WindowInsetsAnimationCompat$Callback;->getDispatchMode()I
+PLandroidx/core/view/WindowInsetsAnimationCompat$Impl30$ProxyCallback;-><init>(Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V
+PLandroidx/core/view/WindowInsetsAnimationCompat$Impl30;->setCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V
+PLandroidx/core/view/WindowInsetsAnimationCompat;->setCallback(Landroid/view/View;Landroidx/core/view/WindowInsetsAnimationCompat$Callback;)V
+PLandroidx/core/view/WindowInsetsCompat$Type;->captionBar()I
+PLandroidx/core/view/WindowInsetsCompat$Type;->displayCutout()I
+PLandroidx/core/view/WindowInsetsCompat$Type;->ime()I
+PLandroidx/core/view/WindowInsetsCompat$Type;->mandatorySystemGestures()I
+PLandroidx/core/view/WindowInsetsCompat$Type;->navigationBars()I
+PLandroidx/core/view/WindowInsetsCompat$Type;->statusBars()I
+PLandroidx/core/view/WindowInsetsCompat$Type;->systemBars()I
+PLandroidx/core/view/WindowInsetsCompat$Type;->systemGestures()I
+PLandroidx/core/view/WindowInsetsCompat$Type;->tappableElement()I
+PLandroidx/customview/poolingcontainer/PoolingContainer;->isPoolingContainer(Landroid/view/View;)Z
+PLandroidx/customview/poolingcontainer/PoolingContainer;->isWithinPoolingContainer(Landroid/view/View;)Z
+PLandroidx/emoji2/text/EmojiMetadata;->isDefaultEmoji()Z
+PLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->isEmojiStyle(I)Z
+PLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->isTextStyle(I)Z
+PLandroidx/emoji2/text/EmojiProcessor$ProcessorSm;->shouldUseEmojiPresentationStyleForSingleCodepoint()Z
+PLandroidx/emoji2/text/MetadataRepo$Node;->getData()Landroidx/emoji2/text/EmojiMetadata;
+PLandroidx/emoji2/text/flatbuffer/MetadataItem;->emojiStyle()Z
+PLandroidx/lifecycle/DefaultLifecycleObserver;->onDestroy(Landroidx/lifecycle/LifecycleOwner;)V
+PLandroidx/lifecycle/DefaultLifecycleObserver;->onPause(Landroidx/lifecycle/LifecycleOwner;)V
+PLandroidx/lifecycle/DefaultLifecycleObserver;->onStop(Landroidx/lifecycle/LifecycleOwner;)V
+PLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityDestroyed(Landroid/app/Activity;)V
+PLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityPaused(Landroid/app/Activity;)V
+PLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V
+PLandroidx/lifecycle/EmptyActivityLifecycleCallbacks;->onActivityStopped(Landroid/app/Activity;)V
+PLandroidx/lifecycle/Lifecycle$Event;->downFrom(Landroidx/lifecycle/Lifecycle$State;)Landroidx/lifecycle/Lifecycle$Event;
+PLandroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;->onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V
+PLandroidx/lifecycle/LifecycleDispatcher$DispatcherActivityCallback;->onActivityStopped(Landroid/app/Activity;)V
+PLandroidx/lifecycle/LifecycleRegistry;->backwardPass(Landroidx/lifecycle/LifecycleOwner;)V
+PLandroidx/lifecycle/LifecycleRegistry;->markState(Landroidx/lifecycle/Lifecycle$State;)V
+PLandroidx/lifecycle/LifecycleRegistry;->setCurrentState(Landroidx/lifecycle/Lifecycle$State;)V
+PLandroidx/lifecycle/LiveData$LifecycleBoundObserver;->detachObserver()V
+PLandroidx/lifecycle/LiveData;->onInactive()V
+PLandroidx/lifecycle/LiveData;->removeObserver(Landroidx/lifecycle/Observer;)V
+PLandroidx/lifecycle/LiveData;->setValue(Ljava/lang/Object;)V
+PLandroidx/lifecycle/MutableLiveData;->setValue(Ljava/lang/Object;)V
+PLandroidx/lifecycle/ProcessLifecycleOwner$1;->run()V
+PLandroidx/lifecycle/ProcessLifecycleOwner$3;->onActivityPaused(Landroid/app/Activity;)V
+PLandroidx/lifecycle/ProcessLifecycleOwner$3;->onActivityStopped(Landroid/app/Activity;)V
+PLandroidx/lifecycle/ProcessLifecycleOwner;->activityPaused()V
+PLandroidx/lifecycle/ProcessLifecycleOwner;->activityStopped()V
+PLandroidx/lifecycle/ProcessLifecycleOwner;->dispatchPauseIfNeeded()V
+PLandroidx/lifecycle/ProcessLifecycleOwner;->dispatchStopIfNeeded()V
+PLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityDestroyed(Landroid/app/Activity;)V
+PLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPaused(Landroid/app/Activity;)V
+PLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPreDestroyed(Landroid/app/Activity;)V
+PLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPrePaused(Landroid/app/Activity;)V
+PLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPreStopped(Landroid/app/Activity;)V
+PLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V
+PLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityStopped(Landroid/app/Activity;)V
+PLandroidx/lifecycle/ReportFragment;->onDestroy()V
+PLandroidx/lifecycle/ReportFragment;->onPause()V
+PLandroidx/lifecycle/ReportFragment;->onStop()V
+PLandroidx/lifecycle/SavedStateHandlesProvider;->saveState()Landroid/os/Bundle;
+PLandroidx/lifecycle/SavedStateHandlesVM;->getHandles()Ljava/util/Map;
+PLandroidx/lifecycle/ViewModel;->clear()V
+PLandroidx/lifecycle/ViewModel;->onCleared()V
+PLandroidx/lifecycle/ViewModelStore;->clear()V
+PLandroidx/profileinstaller/DeviceProfileWriter$$ExternalSyntheticLambda0;-><init>(Landroidx/profileinstaller/DeviceProfileWriter;ILjava/lang/Object;)V
+PLandroidx/profileinstaller/DeviceProfileWriter$$ExternalSyntheticLambda0;->run()V
+PLandroidx/profileinstaller/DeviceProfileWriter;->$r8$lambda$ERhlvXCSfTRq-n5iULYjO-Ntn-w(Landroidx/profileinstaller/DeviceProfileWriter;ILjava/lang/Object;)V
+PLandroidx/profileinstaller/DeviceProfileWriter;-><init>(Landroid/content/res/AssetManager;Ljava/util/concurrent/Executor;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V
+PLandroidx/profileinstaller/DeviceProfileWriter;->desiredVersion()[B
+PLandroidx/profileinstaller/DeviceProfileWriter;->deviceAllowsProfileInstallerAotWrites()Z
+PLandroidx/profileinstaller/DeviceProfileWriter;->lambda$result$0(ILjava/lang/Object;)V
+PLandroidx/profileinstaller/DeviceProfileWriter;->result(ILjava/lang/Object;)V
+PLandroidx/profileinstaller/ProfileInstallReceiver$$ExternalSyntheticLambda0;-><init>()V
+PLandroidx/profileinstaller/ProfileInstallReceiver$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V
+PLandroidx/profileinstaller/ProfileInstaller$1;-><init>()V
+PLandroidx/profileinstaller/ProfileInstaller$1;->onResultReceived(ILjava/lang/Object;)V
+PLandroidx/profileinstaller/ProfileInstaller$2;-><init>()V
+PLandroidx/profileinstaller/ProfileInstaller;-><clinit>()V
+PLandroidx/profileinstaller/ProfileInstaller;->hasAlreadyWrittenProfileForThisInstall(Landroid/content/pm/PackageInfo;Ljava/io/File;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)Z
+PLandroidx/profileinstaller/ProfileInstaller;->transcodeAndWrite(Landroid/content/res/AssetManager;Ljava/lang/String;Landroid/content/pm/PackageInfo;Ljava/io/File;Ljava/lang/String;Ljava/util/concurrent/Executor;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)Z
+PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;)V
+PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;)V
+PLandroidx/profileinstaller/ProfileInstaller;->writeProfile(Landroid/content/Context;Ljava/util/concurrent/Executor;Landroidx/profileinstaller/ProfileInstaller$DiagnosticsCallback;Z)V
+PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda1;->run()V
+PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda2;-><init>(Landroid/content/Context;)V
+PLandroidx/profileinstaller/ProfileInstallerInitializer$$ExternalSyntheticLambda2;->run()V
+PLandroidx/profileinstaller/ProfileInstallerInitializer;->$r8$lambda$nkOIpN4NfyreWbcXjHv0xCvwgTY(Landroid/content/Context;)V
+PLandroidx/profileinstaller/ProfileInstallerInitializer;->$r8$lambda$nvFqT5BztGB-MvszW9GUTUoI9rw(Landroid/content/Context;)V
+PLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$installAfterDelay$1(Landroid/content/Context;)V
+PLandroidx/profileinstaller/ProfileInstallerInitializer;->lambda$writeInBackground$2(Landroid/content/Context;)V
+PLandroidx/profileinstaller/ProfileInstallerInitializer;->writeInBackground(Landroid/content/Context;)V
+PLandroidx/profileinstaller/ProfileVerifier$Api33Impl;->getPackageInfo(Landroid/content/pm/PackageManager;Landroid/content/Context;)Landroid/content/pm/PackageInfo;
+PLandroidx/profileinstaller/ProfileVerifier$Cache;-><init>(IIJJ)V
+PLandroidx/profileinstaller/ProfileVerifier$Cache;->equals(Ljava/lang/Object;)Z
+PLandroidx/profileinstaller/ProfileVerifier$Cache;->readFromFile(Ljava/io/File;)Landroidx/profileinstaller/ProfileVerifier$Cache;
+PLandroidx/profileinstaller/ProfileVerifier$Cache;->writeOnFile(Ljava/io/File;)V
+PLandroidx/profileinstaller/ProfileVerifier$CompilationStatus;-><init>(IZZ)V
+PLandroidx/profileinstaller/ProfileVerifier;-><clinit>()V
+PLandroidx/profileinstaller/ProfileVerifier;->getPackageLastUpdateTime(Landroid/content/Context;)J
+PLandroidx/profileinstaller/ProfileVerifier;->setCompilationStatus(IZZ)Landroidx/profileinstaller/ProfileVerifier$CompilationStatus;
+PLandroidx/profileinstaller/ProfileVerifier;->writeProfileVerification(Landroid/content/Context;Z)Landroidx/profileinstaller/ProfileVerifier$CompilationStatus;
+PLandroidx/savedstate/SavedStateRegistry;->performSave(Landroid/os/Bundle;)V
+PLandroidx/savedstate/SavedStateRegistry;->unregisterSavedStateProvider(Ljava/lang/String;)V
+PLandroidx/savedstate/SavedStateRegistryController;->performSave(Landroid/os/Bundle;)V
+PLcom/android/credentialmanager/CredentialManagerRepo;->getCredentialInitialUiState()Lcom/android/credentialmanager/getflow/GetCredentialUiState;
+PLcom/android/credentialmanager/CredentialManagerRepo;->onCancel()V
+PLcom/android/credentialmanager/CredentialManagerRepo;->onOptionSelected(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Landroid/content/Intent;)V
+PLcom/android/credentialmanager/CredentialSelectorActivity$CredentialManagerBottomSheet$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/CredentialSelectorActivity$CredentialManagerBottomSheet$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/CredentialSelectorActivity$CredentialManagerBottomSheet$launcher$1$1;->invoke(Landroidx/activity/result/ActivityResult;)V
+PLcom/android/credentialmanager/CredentialSelectorActivity$CredentialManagerBottomSheet$launcher$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/CredentialSelectorActivity$onCancel$1;->onChanged(Lcom/android/credentialmanager/common/DialogResult;)V
+PLcom/android/credentialmanager/CredentialSelectorActivity$onCancel$1;->onChanged(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/GetFlowUtils$Companion;-><init>()V
+PLcom/android/credentialmanager/GetFlowUtils$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/credentialmanager/GetFlowUtils$Companion;->getActionEntryList(Ljava/lang/String;Ljava/util/List;Landroid/graphics/drawable/Drawable;)Ljava/util/List;
+PLcom/android/credentialmanager/GetFlowUtils$Companion;->getAuthenticationEntry(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Landroid/credentials/ui/Entry;)Lcom/android/credentialmanager/getflow/AuthenticationEntryInfo;
+PLcom/android/credentialmanager/GetFlowUtils$Companion;->getCredentialOptionInfoList(Ljava/lang/String;Ljava/util/List;Landroid/content/Context;)Ljava/util/List;
+PLcom/android/credentialmanager/GetFlowUtils$Companion;->getRemoteEntry(Ljava/lang/String;Landroid/credentials/ui/Entry;)Lcom/android/credentialmanager/getflow/RemoteEntryInfo;
+PLcom/android/credentialmanager/GetFlowUtils$Companion;->toProviderList(Ljava/util/List;Landroid/content/Context;)Ljava/util/List;
+PLcom/android/credentialmanager/GetFlowUtils$Companion;->toRequestDisplayInfo(Landroid/credentials/ui/RequestInfo;Landroid/content/Context;)Lcom/android/credentialmanager/getflow/RequestDisplayInfo;
+PLcom/android/credentialmanager/GetFlowUtils;-><clinit>()V
+PLcom/android/credentialmanager/UserConfigRepo;->setDefaultProvider(Ljava/lang/String;)V
+PLcom/android/credentialmanager/common/DialogResult;-><clinit>()V
+PLcom/android/credentialmanager/common/DialogResult;-><init>(Lcom/android/credentialmanager/common/ResultState;)V
+PLcom/android/credentialmanager/common/DialogResult;->getResultState()Lcom/android/credentialmanager/common/ResultState;
+PLcom/android/credentialmanager/common/ProviderActivityResult;-><clinit>()V
+PLcom/android/credentialmanager/common/ProviderActivityResult;-><init>(ILandroid/content/Intent;)V
+PLcom/android/credentialmanager/common/ProviderActivityResult;->equals(Ljava/lang/Object;)Z
+PLcom/android/credentialmanager/common/ProviderActivityResult;->getData()Landroid/content/Intent;
+PLcom/android/credentialmanager/common/ProviderActivityResult;->getResultCode()I
+PLcom/android/credentialmanager/common/ResultState;->$values()[Lcom/android/credentialmanager/common/ResultState;
+PLcom/android/credentialmanager/common/ResultState;-><clinit>()V
+PLcom/android/credentialmanager/common/ResultState;-><init>(Ljava/lang/String;I)V
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$1$1$1;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetState;Lkotlin/coroutines/Continuation;)V
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$1$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$1$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$1$1;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$ModalBottomSheetLayout$1$1$1;->invoke()V
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$Scrim$dismissModifier$1$1$1;->invoke-k-4lQ0M(J)V
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$1;->invoke(Lcom/android/credentialmanager/common/material/ModalBottomSheetValue;)Ljava/lang/Boolean;
+PLcom/android/credentialmanager/common/material/ModalBottomSheetKt$rememberModalBottomSheetState$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/ModalBottomSheetState;->hide(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1$onPostFling$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;Lkotlin/coroutines/Continuation;)V
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1$onPostFling$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1$onPreFling$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;Lkotlin/coroutines/Continuation;)V
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;->onPostFling-RZ2iAVY(JJLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;->onPostScroll-DzOQY0M(JJI)J
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;->onPreFling-QWom1Mo(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;->onPreScroll-OzD1aCk(JI)J
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;->toFloat(J)F
+PLcom/android/credentialmanager/common/material/SwipeableKt$PreUpPostDownNestedScrollConnection$1;->toOffset(F)J
+PLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;FLkotlin/coroutines/Continuation;)V
+PLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1;->invoke(Lkotlinx/coroutines/CoroutineScope;FLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableKt$swipeable$3$4$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2$1;-><init>(Landroidx/compose/foundation/gestures/DragScope;Lkotlin/jvm/internal/Ref$FloatRef;)V
+PLcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;FLandroidx/compose/animation/core/AnimationSpec;Lkotlin/coroutines/Continuation;)V
+PLcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2;->invoke(Landroidx/compose/foundation/gestures/DragScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$animateInternalToOffset$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$animateTo$2$emit$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState$animateTo$2;Lkotlin/coroutines/Continuation;)V
+PLcom/android/credentialmanager/common/material/SwipeableState$animateTo$2$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$animateTo$2;-><init>(Ljava/lang/Object;Lcom/android/credentialmanager/common/material/SwipeableState;Landroidx/compose/animation/core/AnimationSpec;)V
+PLcom/android/credentialmanager/common/material/SwipeableState$animateTo$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$animateTo$2;->emit(Ljava/util/Map;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$latestNonEmptyAnchorsFlow$1;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$latestNonEmptyAnchorsFlow$1;->invoke()Ljava/util/Map;
+PLcom/android/credentialmanager/common/material/SwipeableState$performFling$2;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState;F)V
+PLcom/android/credentialmanager/common/material/SwipeableState$performFling$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$performFling$2;->emit(Ljava/util/Map;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$processNewAnchors$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1$2$1;-><init>(Lcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1$2;Lkotlin/coroutines/Continuation;)V
+PLcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1$2$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1$2;-><init>(Lkotlinx/coroutines/flow/FlowCollector;)V
+PLcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1$2;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState$special$$inlined$filter$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState;->access$animateInternalToOffset(Lcom/android/credentialmanager/common/material/SwipeableState;FLandroidx/compose/animation/core/AnimationSpec;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState;->access$getAnimationTarget$p(Lcom/android/credentialmanager/common/material/SwipeableState;)Landroidx/compose/runtime/MutableState;
+PLcom/android/credentialmanager/common/material/SwipeableState;->access$setAnimationRunning(Lcom/android/credentialmanager/common/material/SwipeableState;Z)V
+PLcom/android/credentialmanager/common/material/SwipeableState;->access$setCurrentValue(Lcom/android/credentialmanager/common/material/SwipeableState;Ljava/lang/Object;)V
+PLcom/android/credentialmanager/common/material/SwipeableState;->animateInternalToOffset(FLandroidx/compose/animation/core/AnimationSpec;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState;->animateTo$default(Lcom/android/credentialmanager/common/material/SwipeableState;Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState;->animateTo(Ljava/lang/Object;Landroidx/compose/animation/core/AnimationSpec;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState;->getConfirmStateChange$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lkotlin/jvm/functions/Function1;
+PLcom/android/credentialmanager/common/material/SwipeableState;->getVelocityThreshold$frameworks__base__packages__CredentialManager__android_common__CredentialManager()F
+PLcom/android/credentialmanager/common/material/SwipeableState;->performDrag(F)F
+PLcom/android/credentialmanager/common/material/SwipeableState;->performFling(FLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLcom/android/credentialmanager/common/material/SwipeableState;->setAnimationRunning(Z)V
+PLcom/android/credentialmanager/common/material/SwipeableState;->setCurrentValue(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/common/ui/EntryKt$TransparentBackgroundEntry$1;-><init>(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;II)V
+PLcom/android/credentialmanager/common/ui/EntryKt;->TransparentBackgroundEntry(Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function2;Landroidx/compose/ui/Modifier;Lkotlin/jvm/functions/Function2;Landroidx/compose/runtime/Composer;II)V
+PLcom/android/credentialmanager/createflow/ActiveEntry;->equals(Ljava/lang/Object;)Z
+PLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-2$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-3$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt;->getLambda-2$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lkotlin/jvm/functions/Function2;
+PLcom/android/credentialmanager/createflow/ComposableSingletons$CreateCredentialComponentsKt;->getLambda-3$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lkotlin/jvm/functions/Function2;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$10;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$10;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$10;->invoke()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$11;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$11;->invoke(Lcom/android/credentialmanager/createflow/ActiveEntry;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$11;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$12;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$12;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$12;->invoke()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$13;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$14;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$14;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$14;->invoke()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$15;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$15;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$15;->invoke()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$6;->invoke(Lcom/android/credentialmanager/createflow/EntryInfo;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$6;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$7;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$7;->invoke()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$8;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$8;->invoke()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$1$9;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$CreateCredentialScreen$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$1$1$1;-><clinit>()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$1$1$1;-><init>()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$1$1$1;->invoke(Lcom/android/credentialmanager/createflow/ProviderInfo;)Ljava/lang/CharSequence;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$1;-><init>(Ljava/util/List;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsDisabledProvidersRow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$1;-><init>(Lcom/android/credentialmanager/createflow/EnabledProviderInfo;Lcom/android/credentialmanager/createflow/CreateOptionInfo;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$2;-><init>(Lcom/android/credentialmanager/createflow/EnabledProviderInfo;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsInfoRow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsRowIntroCard$1;-><init>(Lcom/android/credentialmanager/createflow/EnabledProviderInfo;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/functions/Function0;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsRowIntroCard$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsRowIntroCard$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$1;-><init>(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$2;-><init>(ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$1$1$1;-><init>(Lkotlin/jvm/functions/Function1;Lkotlin/Pair;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$1$1$1;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$1$1$1;->invoke()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$1$1;-><init>(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Lkotlin/Pair;Lkotlin/jvm/functions/Function1;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$1$1;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$2;-><init>(Ljava/util/List;Lkotlin/jvm/functions/Function0;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$2;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1;-><init>(ZLjava/util/List;Ljava/util/List;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Lkotlin/jvm/functions/Function1;Ljava/util/List;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1;->invoke(Landroidx/compose/foundation/lazy/LazyListScope;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3;-><init>(ZLjava/util/List;Ljava/util/List;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Lkotlin/jvm/functions/Function1;Ljava/util/List;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1$1$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1;-><init>(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZLjava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function1;Ljava/util/List;Lkotlin/jvm/functions/Function0;ILkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$MoreOptionsSelectionCard$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$1;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt$PrimaryCreateOptionRow$1;->invoke()V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt;->MoreOptionsDisabledProvidersRow(Ljava/util/List;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt;->MoreOptionsInfoRow(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Lcom/android/credentialmanager/createflow/EnabledProviderInfo;Lcom/android/credentialmanager/createflow/CreateOptionInfo;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt;->MoreOptionsRowIntroCard(Lcom/android/credentialmanager/createflow/EnabledProviderInfo;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/createflow/CreateCredentialComponentsKt;->MoreOptionsSelectionCard(Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Ljava/util/List;Ljava/util/List;Ljava/util/List;ZZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;II)V
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->copy$default(Lcom/android/credentialmanager/createflow/CreateCredentialUiState;Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/createflow/CreateScreenState;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Ljava/util/List;ZLcom/android/credentialmanager/createflow/ActiveEntry;Lcom/android/credentialmanager/createflow/EntryInfo;ZZLjava/lang/Boolean;ILjava/lang/Object;)Lcom/android/credentialmanager/createflow/CreateCredentialUiState;
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->copy(Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/createflow/CreateScreenState;Lcom/android/credentialmanager/createflow/RequestDisplayInfo;Ljava/util/List;ZLcom/android/credentialmanager/createflow/ActiveEntry;Lcom/android/credentialmanager/createflow/EntryInfo;ZZLjava/lang/Boolean;)Lcom/android/credentialmanager/createflow/CreateCredentialUiState;
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->equals(Ljava/lang/Object;)Z
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getDisabledProviders()Ljava/util/List;
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getHasDefaultProvider()Z
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getProviderActivityPending()Z
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getSelectedEntry()Lcom/android/credentialmanager/createflow/EntryInfo;
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->getSortedCreateOptionsPairs()Ljava/util/List;
+PLcom/android/credentialmanager/createflow/CreateCredentialUiState;->isFromProviderSelection()Ljava/lang/Boolean;
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->launchProviderUi(Landroidx/activity/compose/ManagedActivityResultLauncher;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onBackCreationSelectionButtonSelected()V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onCancel()V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onChangeDefaultSelected()V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onConfirmEntrySelected()V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onDefaultChanged(Ljava/lang/String;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onDisabledPasswordManagerSelected()V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onEntrySelected(Lcom/android/credentialmanager/createflow/EntryInfo;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onEntrySelectedFromMoreOptionScreen(Lcom/android/credentialmanager/createflow/ActiveEntry;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onMoreOptionsSelectedOnCreationSelection()V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onProviderActivityResult(Lcom/android/credentialmanager/common/ProviderActivityResult;)V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->onUseOnceSelected()V
+PLcom/android/credentialmanager/createflow/CreateCredentialViewModel;->setUiState(Lcom/android/credentialmanager/createflow/CreateCredentialUiState;)V
+PLcom/android/credentialmanager/createflow/CreateOptionInfo;->getPasskeyCount()Ljava/lang/Integer;
+PLcom/android/credentialmanager/createflow/CreateOptionInfo;->getPasswordCount()Ljava/lang/Integer;
+PLcom/android/credentialmanager/createflow/EntryInfo;->getEntryKey()Ljava/lang/String;
+PLcom/android/credentialmanager/createflow/EntryInfo;->getEntrySubkey()Ljava/lang/String;
+PLcom/android/credentialmanager/createflow/EntryInfo;->getFillInIntent()Landroid/content/Intent;
+PLcom/android/credentialmanager/createflow/EntryInfo;->getPendingIntent()Landroid/app/PendingIntent;
+PLcom/android/credentialmanager/createflow/EntryInfo;->getProviderId()Ljava/lang/String;
+PLcom/android/credentialmanager/createflow/RequestDisplayInfo;->equals(Ljava/lang/Object;)Z
+PLcom/android/credentialmanager/getflow/ActionEntryInfo;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ActionEntryInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/content/Intent;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;)V
+PLcom/android/credentialmanager/getflow/ActionEntryInfo;->getIcon()Landroid/graphics/drawable/Drawable;
+PLcom/android/credentialmanager/getflow/ActionEntryInfo;->getSubTitle()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/ActionEntryInfo;->getTitle()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-1$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-1$1;-><init>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-2$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-2$1;-><init>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-2$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-2$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-3$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-3$1;-><init>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-3$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-3$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-4$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-4$1;-><init>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-5$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-5$1;-><init>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-6$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-6$1;-><init>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-7$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt$lambda-7$1;-><init>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt;-><init>()V
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt;->getLambda-1$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lkotlin/jvm/functions/Function2;
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt;->getLambda-2$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lkotlin/jvm/functions/Function2;
+PLcom/android/credentialmanager/getflow/ComposableSingletons$GetCredentialComponentsKt;->getLambda-3$frameworks__base__packages__CredentialManager__android_common__CredentialManager()Lkotlin/jvm/functions/Function2;
+PLcom/android/credentialmanager/getflow/CredentialEntryInfo;-><clinit>()V
+PLcom/android/credentialmanager/getflow/CredentialEntryInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/Long;)V
+PLcom/android/credentialmanager/getflow/CredentialEntryInfo;->getCredentialType()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/CredentialEntryInfo;->getCredentialTypeDisplayName()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/CredentialEntryInfo;->getDisplayName()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/CredentialEntryInfo;->getIcon()Landroid/graphics/drawable/Drawable;
+PLcom/android/credentialmanager/getflow/CredentialEntryInfo;->getLastUsedTimeMillis()Ljava/lang/Long;
+PLcom/android/credentialmanager/getflow/CredentialEntryInfo;->getUserName()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/CredentialEntryInfoComparatorByTypeThenTimestamp;-><init>()V
+PLcom/android/credentialmanager/getflow/CredentialEntryInfoComparatorByTypeThenTimestamp;->compare(Lcom/android/credentialmanager/getflow/CredentialEntryInfo;Lcom/android/credentialmanager/getflow/CredentialEntryInfo;)I
+PLcom/android/credentialmanager/getflow/CredentialEntryInfoComparatorByTypeThenTimestamp;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/credentialmanager/getflow/EntryInfo;-><clinit>()V
+PLcom/android/credentialmanager/getflow/EntryInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/content/Intent;)V
+PLcom/android/credentialmanager/getflow/EntryInfo;->getEntryKey()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/EntryInfo;->getEntrySubkey()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/EntryInfo;->getFillInIntent()Landroid/content/Intent;
+PLcom/android/credentialmanager/getflow/EntryInfo;->getPendingIntent()Landroid/app/PendingIntent;
+PLcom/android/credentialmanager/getflow/EntryInfo;->getProviderId()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionChips$2;-><init>(Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionChips$2;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionChips$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionChips$3;-><init>(Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$1;-><init>(Lkotlin/jvm/functions/Function1;Lcom/android/credentialmanager/getflow/ActionEntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$1;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$1;->invoke()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$2;-><init>(Lcom/android/credentialmanager/getflow/ActionEntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$2;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$3;-><init>(Lcom/android/credentialmanager/getflow/ActionEntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$ActionEntryRow$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$1;-><init>(ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$1;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$4;-><init>(Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$4;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$1;-><init>()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$1;->invoke(Ljava/lang/Object;)Ljava/lang/Void;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$3;-><init>(Lkotlin/jvm/functions/Function1;Ljava/util/List;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$3;->invoke(I)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$4;-><init>(Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$4;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;ILandroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1$invoke$$inlined$items$default$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1;-><init>(Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lkotlin/jvm/functions/Function1;ILjava/util/List;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1;->invoke(Landroidx/compose/foundation/lazy/LazyListScope;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2;-><init>(Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lkotlin/jvm/functions/Function1;ILjava/util/List;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1$1$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1;-><init>(ZLkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lkotlin/jvm/functions/Function1;ILjava/util/List;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$AllSignInOptionCard$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$1;-><init>(Lkotlin/jvm/functions/Function1;Lcom/android/credentialmanager/getflow/CredentialEntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$1;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$1;->invoke()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$2;-><init>(Lcom/android/credentialmanager/getflow/CredentialEntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$3;-><init>(Lcom/android/credentialmanager/getflow/CredentialEntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$3;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$CredentialEntryRow$3;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$1;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$2;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$2;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$2;->invoke()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$3;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$3;->invoke(Lcom/android/credentialmanager/getflow/EntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$4;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1$5;-><init>(Ljava/lang/Object;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1;-><init>(Lcom/android/credentialmanager/getflow/GetCredentialUiState;Lcom/android/credentialmanager/getflow/GetCredentialViewModel;Landroidx/activity/compose/ManagedActivityResultLauncher;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$2;-><init>(Lcom/android/credentialmanager/common/material/ModalBottomSheetState;Lcom/android/credentialmanager/getflow/GetCredentialViewModel;Lkotlin/coroutines/Continuation;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$2;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$2;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$5;-><init>(Lcom/android/credentialmanager/getflow/GetCredentialViewModel;Landroidx/activity/compose/ManagedActivityResultLauncher;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$5;->invoke(Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$GetCredentialScreen$5;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PerUserNameCredentials$1;-><init>(Lcom/android/credentialmanager/getflow/PerUserNameCredentialEntryList;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PerUserNameCredentials$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PerUserNameCredentials$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PerUserNameCredentials$2;-><init>(Lcom/android/credentialmanager/getflow/PerUserNameCredentialEntryList;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$17;-><clinit>()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$17;-><init>()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$17;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$17;->invoke(Ljava/lang/Object;)Ljava/lang/Void;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$19;-><init>(Lkotlin/jvm/functions/Function1;Ljava/util/List;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$19;->invoke(I)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$19;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$1;-><clinit>()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$1;-><init>()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$1;->invoke(Ljava/lang/Object;)Ljava/lang/Void;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$20;-><init>(Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$20;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;ILandroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$20;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$3;-><init>(Lkotlin/jvm/functions/Function1;Ljava/util/List;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$3;->invoke(I)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$3;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$4;-><init>(Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$4;->invoke(Landroidx/compose/foundation/lazy/LazyItemScope;ILandroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$4;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$5;-><clinit>()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$5;-><init>()V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$7;-><init>(Lkotlin/jvm/functions/Function1;Ljava/util/List;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1$invoke$$inlined$items$default$8;-><init>(Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1;-><init>(IILjava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1;->invoke(Landroidx/compose/foundation/lazy/LazyListScope;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1;-><init>(Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function1;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1$1$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1;-><init>(Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/getflow/RequestDisplayInfo;Lkotlin/jvm/functions/Function1;ILkotlin/jvm/functions/Function0;)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1;->invoke(Landroidx/compose/foundation/layout/ColumnScope;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt$PrimarySelectionCard$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt;->ActionChips(Ljava/util/List;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt;->ActionEntryRow(Lcom/android/credentialmanager/getflow/ActionEntryInfo;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt;->AllSignInOptionCard(Ljava/util/List;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;ZLandroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt;->CredentialEntryRow(Lcom/android/credentialmanager/getflow/CredentialEntryInfo;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt;->GetCredentialScreen(Lcom/android/credentialmanager/getflow/GetCredentialViewModel;Landroidx/activity/compose/ManagedActivityResultLauncher;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt;->PerUserNameCredentials(Lcom/android/credentialmanager/getflow/PerUserNameCredentialEntryList;Lkotlin/jvm/functions/Function1;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialComponentsKt;->PrimarySelectionCard(Lcom/android/credentialmanager/getflow/RequestDisplayInfo;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;Landroidx/compose/runtime/Composer;I)V
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;-><clinit>()V
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;-><init>(Ljava/util/List;Lcom/android/credentialmanager/getflow/RequestDisplayInfo;Lcom/android/credentialmanager/getflow/GetScreenState;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lcom/android/credentialmanager/getflow/EntryInfo;ZZZ)V
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;-><init>(Ljava/util/List;Lcom/android/credentialmanager/getflow/RequestDisplayInfo;Lcom/android/credentialmanager/getflow/GetScreenState;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lcom/android/credentialmanager/getflow/EntryInfo;ZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->copy$default(Lcom/android/credentialmanager/getflow/GetCredentialUiState;Ljava/util/List;Lcom/android/credentialmanager/getflow/RequestDisplayInfo;Lcom/android/credentialmanager/getflow/GetScreenState;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lcom/android/credentialmanager/getflow/EntryInfo;ZZZILjava/lang/Object;)Lcom/android/credentialmanager/getflow/GetCredentialUiState;
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->copy(Ljava/util/List;Lcom/android/credentialmanager/getflow/RequestDisplayInfo;Lcom/android/credentialmanager/getflow/GetScreenState;Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;Lcom/android/credentialmanager/getflow/EntryInfo;ZZZ)Lcom/android/credentialmanager/getflow/GetCredentialUiState;
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->equals(Ljava/lang/Object;)Z
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->getCurrentScreenState()Lcom/android/credentialmanager/getflow/GetScreenState;
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->getHidden()Z
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->getProviderActivityPending()Z
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->getProviderDisplayInfo()Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->getProviderInfoList()Ljava/util/List;
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->getRequestDisplayInfo()Lcom/android/credentialmanager/getflow/RequestDisplayInfo;
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->getSelectedEntry()Lcom/android/credentialmanager/getflow/EntryInfo;
+PLcom/android/credentialmanager/getflow/GetCredentialUiState;->isNoAccount()Z
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel$dialogResult$2;-><clinit>()V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel$dialogResult$2;-><init>()V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel$dialogResult$2;->invoke()Landroidx/lifecycle/MutableLiveData;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel$dialogResult$2;->invoke()Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;-><clinit>()V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;-><init>()V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;-><init>(Lcom/android/credentialmanager/CredentialManagerRepo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;-><init>(Lcom/android/credentialmanager/CredentialManagerRepo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->getDialogResult()Landroidx/lifecycle/MutableLiveData;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->getUiState()Lcom/android/credentialmanager/getflow/GetCredentialUiState;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->launchProviderUi(Landroidx/activity/compose/ManagedActivityResultLauncher;)V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->observeDialogResult()Landroidx/lifecycle/LiveData;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->onCancel()V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->onEntrySelected(Lcom/android/credentialmanager/getflow/EntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->onMoreOptionSelected()V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->onProviderActivityResult(Lcom/android/credentialmanager/common/ProviderActivityResult;)V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModel;->setUiState(Lcom/android/credentialmanager/getflow/GetCredentialUiState;)V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt$toProviderDisplayInfo$$inlined$compareByDescending$1;-><init>()V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt$toProviderDisplayInfo$$inlined$compareByDescending$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt$toProviderDisplayInfo$1$1$1;-><init>(Lcom/android/credentialmanager/getflow/CredentialEntryInfo;)V
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt$toProviderDisplayInfo$1$1$1;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt$toProviderDisplayInfo$1$1$1;->apply(Ljava/lang/String;Ljava/util/List;)Ljava/util/List;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt;->access$toGetScreenState(Ljava/util/List;)Lcom/android/credentialmanager/getflow/GetScreenState;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt;->access$toProviderDisplayInfo(Ljava/util/List;)Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt;->toGetScreenState(Ljava/util/List;)Lcom/android/credentialmanager/getflow/GetScreenState;
+PLcom/android/credentialmanager/getflow/GetCredentialViewModelKt;->toProviderDisplayInfo(Ljava/util/List;)Lcom/android/credentialmanager/getflow/ProviderDisplayInfo;
+PLcom/android/credentialmanager/getflow/GetScreenState;->$values()[Lcom/android/credentialmanager/getflow/GetScreenState;
+PLcom/android/credentialmanager/getflow/GetScreenState;-><clinit>()V
+PLcom/android/credentialmanager/getflow/GetScreenState;-><init>(Ljava/lang/String;I)V
+PLcom/android/credentialmanager/getflow/PerUserNameCredentialEntryList;-><clinit>()V
+PLcom/android/credentialmanager/getflow/PerUserNameCredentialEntryList;-><init>(Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/credentialmanager/getflow/PerUserNameCredentialEntryList;->getSortedCredentialEntryList()Ljava/util/List;
+PLcom/android/credentialmanager/getflow/PerUserNameCredentialEntryList;->getUserName()Ljava/lang/String;
+PLcom/android/credentialmanager/getflow/ProviderDisplayInfo;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ProviderDisplayInfo;-><init>(Ljava/util/List;Ljava/util/List;Lcom/android/credentialmanager/getflow/RemoteEntryInfo;)V
+PLcom/android/credentialmanager/getflow/ProviderDisplayInfo;->equals(Ljava/lang/Object;)Z
+PLcom/android/credentialmanager/getflow/ProviderDisplayInfo;->getAuthenticationEntryList()Ljava/util/List;
+PLcom/android/credentialmanager/getflow/ProviderDisplayInfo;->getRemoteEntry()Lcom/android/credentialmanager/getflow/RemoteEntryInfo;
+PLcom/android/credentialmanager/getflow/ProviderDisplayInfo;->getSortedUserNameToCredentialEntryList()Ljava/util/List;
+PLcom/android/credentialmanager/getflow/ProviderInfo;-><clinit>()V
+PLcom/android/credentialmanager/getflow/ProviderInfo;-><init>(Ljava/lang/String;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Ljava/util/List;Lcom/android/credentialmanager/getflow/AuthenticationEntryInfo;Lcom/android/credentialmanager/getflow/RemoteEntryInfo;Ljava/util/List;)V
+PLcom/android/credentialmanager/getflow/ProviderInfo;->getActionEntryList()Ljava/util/List;
+PLcom/android/credentialmanager/getflow/ProviderInfo;->getAuthenticationEntry()Lcom/android/credentialmanager/getflow/AuthenticationEntryInfo;
+PLcom/android/credentialmanager/getflow/ProviderInfo;->getCredentialEntryList()Ljava/util/List;
+PLcom/android/credentialmanager/getflow/ProviderInfo;->getRemoteEntry()Lcom/android/credentialmanager/getflow/RemoteEntryInfo;
+PLcom/android/credentialmanager/getflow/RequestDisplayInfo;-><clinit>()V
+PLcom/android/credentialmanager/getflow/RequestDisplayInfo;-><init>(Ljava/lang/String;)V
+PLcom/android/credentialmanager/getflow/RequestDisplayInfo;->equals(Ljava/lang/Object;)Z
+PLcom/android/credentialmanager/getflow/RequestDisplayInfo;->getAppName()Ljava/lang/String;
+PLcom/android/credentialmanager/jetpack/provider/Action$Companion;-><init>()V
+PLcom/android/credentialmanager/jetpack/provider/Action$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/credentialmanager/jetpack/provider/Action$Companion;->fromSlice(Landroid/app/slice/Slice;)Lcom/android/credentialmanager/jetpack/provider/Action;
+PLcom/android/credentialmanager/jetpack/provider/Action;-><clinit>()V
+PLcom/android/credentialmanager/jetpack/provider/Action;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V
+PLcom/android/credentialmanager/jetpack/provider/Action;->getPendingIntent()Landroid/app/PendingIntent;
+PLcom/android/credentialmanager/jetpack/provider/Action;->getSubTitle()Ljava/lang/CharSequence;
+PLcom/android/credentialmanager/jetpack/provider/Action;->getTitle()Ljava/lang/CharSequence;
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry$Companion;-><init>()V
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry$Companion;-><init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry$Companion;->fromSlice(Landroid/app/slice/Slice;)Lcom/android/credentialmanager/jetpack/provider/CredentialEntry;
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;-><clinit>()V
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;-><init>(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;JLandroid/graphics/drawable/Icon;Z)V
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;->getDisplayName()Ljava/lang/CharSequence;
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;->getIcon()Landroid/graphics/drawable/Icon;
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;->getLastUsedTimeMillis()J
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;->getPendingIntent()Landroid/app/PendingIntent;
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;->getType()Ljava/lang/String;
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;->getTypeDisplayName()Ljava/lang/CharSequence;
+PLcom/android/credentialmanager/jetpack/provider/CredentialEntry;->getUsername()Ljava/lang/CharSequence;
+PLkotlin/collections/AbstractList$Companion;->orderedEquals$kotlin_stdlib(Ljava/util/Collection;Ljava/util/Collection;)Z
+PLkotlin/collections/AbstractList;->equals(Ljava/lang/Object;)Z
+PLkotlin/collections/ArraysKt;->fill$default([IIIIILjava/lang/Object;)V
+PLkotlin/collections/ArraysKt;->fill([IIII)V
+PLkotlin/collections/ArraysKt;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I
+PLkotlin/collections/ArraysKt___ArraysJvmKt;->fill$default([IIIIILjava/lang/Object;)V
+PLkotlin/collections/ArraysKt___ArraysJvmKt;->fill([IIII)V
+PLkotlin/collections/ArraysKt___ArraysKt;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I
+PLkotlin/collections/CollectionsKt;->arrayListOf([Ljava/lang/Object;)Ljava/util/ArrayList;
+PLkotlin/collections/CollectionsKt;->firstOrNull(Ljava/util/List;)Ljava/lang/Object;
+PLkotlin/collections/CollectionsKt;->getOrNull(Ljava/util/List;I)Ljava/lang/Object;
+PLkotlin/collections/CollectionsKt;->joinToString$default(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
+PLkotlin/collections/CollectionsKt;->mutableListOf([Ljava/lang/Object;)Ljava/util/List;
+PLkotlin/collections/CollectionsKt;->optimizeReadOnlyList(Ljava/util/List;)Ljava/util/List;
+PLkotlin/collections/CollectionsKt;->removeFirstOrNull(Ljava/util/List;)Ljava/lang/Object;
+PLkotlin/collections/CollectionsKt;->take(Ljava/lang/Iterable;I)Ljava/util/List;
+PLkotlin/collections/CollectionsKt;->toIntArray(Ljava/util/Collection;)[I
+PLkotlin/collections/CollectionsKt__CollectionsKt;->arrayListOf([Ljava/lang/Object;)Ljava/util/ArrayList;
+PLkotlin/collections/CollectionsKt__CollectionsKt;->mutableListOf([Ljava/lang/Object;)Ljava/util/List;
+PLkotlin/collections/CollectionsKt__CollectionsKt;->optimizeReadOnlyList(Ljava/util/List;)Ljava/util/List;
+PLkotlin/collections/CollectionsKt__MutableCollectionsKt;->removeFirstOrNull(Ljava/util/List;)Ljava/lang/Object;
+PLkotlin/collections/CollectionsKt___CollectionsKt;->firstOrNull(Ljava/util/List;)Ljava/lang/Object;
+PLkotlin/collections/CollectionsKt___CollectionsKt;->getOrNull(Ljava/util/List;I)Ljava/lang/Object;
+PLkotlin/collections/CollectionsKt___CollectionsKt;->joinTo(Ljava/lang/Iterable;Ljava/lang/Appendable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/Appendable;
+PLkotlin/collections/CollectionsKt___CollectionsKt;->joinToString$default(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
+PLkotlin/collections/CollectionsKt___CollectionsKt;->joinToString(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;)Ljava/lang/String;
+PLkotlin/collections/CollectionsKt___CollectionsKt;->take(Ljava/lang/Iterable;I)Ljava/util/List;
+PLkotlin/collections/CollectionsKt___CollectionsKt;->toIntArray(Ljava/util/Collection;)[I
+PLkotlin/collections/EmptyMap;->containsKey(Ljava/lang/Object;)Z
+PLkotlin/collections/EmptyMap;->getSize()I
+PLkotlin/collections/EmptyMap;->size()I
+PLkotlin/collections/MapsKt;->getValue(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlin/collections/MapsKt;->toMutableMap(Ljava/util/Map;)Ljava/util/Map;
+PLkotlin/collections/MapsKt__MapWithDefaultKt;->getOrImplicitDefaultNullable(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlin/collections/MapsKt__MapsKt;->getValue(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlin/collections/MapsKt__MapsKt;->toMutableMap(Ljava/util/Map;)Ljava/util/Map;
+PLkotlin/coroutines/jvm/internal/Boxing;->boxFloat(F)Ljava/lang/Float;
+PLkotlin/coroutines/jvm/internal/Boxing;->boxInt(I)Ljava/lang/Integer;
+PLkotlin/jvm/internal/FunctionReference;->getArity()I
+PLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Float;F)Z
+PLkotlin/jvm/internal/Ref$FloatRef;-><init>()V
+PLkotlin/jvm/internal/Ref$LongRef;-><init>()V
+PLkotlin/jvm/internal/TypeIntrinsics;->asMutableCollection(Ljava/lang/Object;)Ljava/util/Collection;
+PLkotlin/jvm/internal/TypeIntrinsics;->castToCollection(Ljava/lang/Object;)Ljava/util/Collection;
+PLkotlin/math/MathKt;->getSign(I)I
+PLkotlin/math/MathKt__MathJVMKt;->getSign(I)I
+PLkotlin/ranges/IntRange;->equals(Ljava/lang/Object;)Z
+PLkotlin/ranges/IntRange;->isEmpty()Z
+PLkotlin/ranges/RangesKt;->coerceAtLeast(JJ)J
+PLkotlin/ranges/RangesKt;->coerceAtMost(FF)F
+PLkotlin/ranges/RangesKt;->coerceAtMost(JJ)J
+PLkotlin/ranges/RangesKt;->coerceIn(DDD)D
+PLkotlin/ranges/RangesKt;->until(II)Lkotlin/ranges/IntRange;
+PLkotlin/ranges/RangesKt___RangesKt;->coerceAtLeast(JJ)J
+PLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(FF)F
+PLkotlin/ranges/RangesKt___RangesKt;->coerceAtMost(JJ)J
+PLkotlin/ranges/RangesKt___RangesKt;->coerceIn(DDD)D
+PLkotlin/ranges/RangesKt___RangesKt;->until(II)Lkotlin/ranges/IntRange;
+PLkotlin/sequences/SequenceBuilderIterator;-><init>()V
+PLkotlin/sequences/SequenceBuilderIterator;->getContext()Lkotlin/coroutines/CoroutineContext;
+PLkotlin/sequences/SequenceBuilderIterator;->hasNext()Z
+PLkotlin/sequences/SequenceBuilderIterator;->next()Ljava/lang/Object;
+PLkotlin/sequences/SequenceBuilderIterator;->resumeWith(Ljava/lang/Object;)V
+PLkotlin/sequences/SequenceBuilderIterator;->setNextStep(Lkotlin/coroutines/Continuation;)V
+PLkotlin/sequences/SequenceBuilderIterator;->yield(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlin/sequences/SequenceScope;-><init>()V
+PLkotlin/sequences/SequencesKt;->sequence(Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
+PLkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;-><init>(Lkotlin/jvm/functions/Function2;)V
+PLkotlin/sequences/SequencesKt__SequenceBuilderKt$sequence$$inlined$Sequence$1;->iterator()Ljava/util/Iterator;
+PLkotlin/sequences/SequencesKt__SequenceBuilderKt;->iterator(Lkotlin/jvm/functions/Function2;)Ljava/util/Iterator;
+PLkotlin/sequences/SequencesKt__SequenceBuilderKt;->sequence(Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
+PLkotlin/text/StringsKt;->appendElement(Ljava/lang/Appendable;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
+PLkotlin/text/StringsKt__AppendableKt;->appendElement(Ljava/lang/Appendable;Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)V
+PLkotlinx/coroutines/AbstractTimeSourceKt;-><clinit>()V
+PLkotlinx/coroutines/AbstractTimeSourceKt;->getTimeSource()Lkotlinx/coroutines/AbstractTimeSource;
+PLkotlinx/coroutines/CancellableContinuationImpl;->cancelCompletedResult$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Ljava/lang/Object;Ljava/lang/Throwable;)V
+PLkotlinx/coroutines/CancellableContinuationKt;->disposeOnCancellation(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/DisposableHandle;)V
+PLkotlinx/coroutines/CancellableContinuationKt;->removeOnCancellation(Lkotlinx/coroutines/CancellableContinuation;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+PLkotlinx/coroutines/CoroutineScopeKt;->cancel$default(Lkotlinx/coroutines/CoroutineScope;Ljava/util/concurrent/CancellationException;ILjava/lang/Object;)V
+PLkotlinx/coroutines/CoroutineScopeKt;->cancel(Lkotlinx/coroutines/CoroutineScope;Ljava/util/concurrent/CancellationException;)V
+PLkotlinx/coroutines/DefaultExecutor;->acknowledgeShutdownIfNeeded()V
+PLkotlinx/coroutines/DefaultExecutor;->createThreadSync()Ljava/lang/Thread;
+PLkotlinx/coroutines/DefaultExecutor;->getThread()Ljava/lang/Thread;
+PLkotlinx/coroutines/DefaultExecutor;->isShutdownRequested()Z
+PLkotlinx/coroutines/DefaultExecutor;->notifyStartup()Z
+PLkotlinx/coroutines/DefaultExecutor;->run()V
+PLkotlinx/coroutines/DelayKt;->delay(JLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/DelayKt;->getDelay(Lkotlin/coroutines/CoroutineContext;)Lkotlinx/coroutines/Delay;
+PLkotlinx/coroutines/DisposeOnCancel;-><init>(Lkotlinx/coroutines/DisposableHandle;)V
+PLkotlinx/coroutines/DisposeOnCancel;->invoke(Ljava/lang/Throwable;)V
+PLkotlinx/coroutines/EventLoop;->getNextTime()J
+PLkotlinx/coroutines/EventLoop;->isUnconfinedQueueEmpty()Z
+PLkotlinx/coroutines/EventLoopImplBase$DelayedResumeTask;-><init>(Lkotlinx/coroutines/EventLoopImplBase;JLkotlinx/coroutines/CancellableContinuation;)V
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTask;-><init>(J)V
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->dispose()V
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->getHeap()Lkotlinx/coroutines/internal/ThreadSafeHeap;
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->getIndex()I
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->scheduleTask(JLkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;Lkotlinx/coroutines/EventLoopImplBase;)I
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->setHeap(Lkotlinx/coroutines/internal/ThreadSafeHeap;)V
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->setIndex(I)V
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTask;->timeToExecute(J)Z
+PLkotlinx/coroutines/EventLoopImplBase$DelayedTaskQueue;-><init>(J)V
+PLkotlinx/coroutines/EventLoopImplBase;->access$isCompleted(Lkotlinx/coroutines/EventLoopImplBase;)Z
+PLkotlinx/coroutines/EventLoopImplBase;->dequeue()Ljava/lang/Runnable;
+PLkotlinx/coroutines/EventLoopImplBase;->getNextTime()J
+PLkotlinx/coroutines/EventLoopImplBase;->isCompleted()Z
+PLkotlinx/coroutines/EventLoopImplBase;->isEmpty()Z
+PLkotlinx/coroutines/EventLoopImplBase;->processNextEvent()J
+PLkotlinx/coroutines/EventLoopImplBase;->schedule(JLkotlinx/coroutines/EventLoopImplBase$DelayedTask;)V
+PLkotlinx/coroutines/EventLoopImplBase;->scheduleImpl(JLkotlinx/coroutines/EventLoopImplBase$DelayedTask;)I
+PLkotlinx/coroutines/EventLoopImplBase;->scheduleResumeAfterDelay(JLkotlinx/coroutines/CancellableContinuation;)V
+PLkotlinx/coroutines/EventLoopImplBase;->shouldUnpark(Lkotlinx/coroutines/EventLoopImplBase$DelayedTask;)Z
+PLkotlinx/coroutines/EventLoopImplPlatform;->unpark()V
+PLkotlinx/coroutines/EventLoop_commonKt;-><clinit>()V
+PLkotlinx/coroutines/EventLoop_commonKt;->access$getDISPOSED_TASK$p()Lkotlinx/coroutines/internal/Symbol;
+PLkotlinx/coroutines/EventLoop_commonKt;->delayToNanos(J)J
+PLkotlinx/coroutines/ExceptionsKt;->CancellationException(Ljava/lang/String;Ljava/lang/Throwable;)Ljava/util/concurrent/CancellationException;
+PLkotlinx/coroutines/InvokeOnCompletion;->invoke(Ljava/lang/Throwable;)V
+PLkotlinx/coroutines/JobImpl;->getOnCancelComplete$external__kotlinx_coroutines__android_common__kotlinx_coroutines()Z
+PLkotlinx/coroutines/JobKt;->cancelAndJoin(Lkotlinx/coroutines/Job;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/JobKt__JobKt;->cancelAndJoin(Lkotlinx/coroutines/Job;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/JobSupport$ChildCompletion;-><init>(Lkotlinx/coroutines/JobSupport;Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V
+PLkotlinx/coroutines/JobSupport$ChildCompletion;->invoke(Ljava/lang/Throwable;)V
+PLkotlinx/coroutines/JobSupport$Finishing;->isSealed()Z
+PLkotlinx/coroutines/JobSupport$Finishing;->setRootCause(Ljava/lang/Throwable;)V
+PLkotlinx/coroutines/JobSupport;->access$continueCompleting(Lkotlinx/coroutines/JobSupport;Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V
+PLkotlinx/coroutines/JobSupport;->cancellationExceptionMessage()Ljava/lang/String;
+PLkotlinx/coroutines/JobSupport;->continueCompleting(Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)V
+PLkotlinx/coroutines/JobSupport;->join(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/JobSupport;->joinInternal()Z
+PLkotlinx/coroutines/JobSupport;->joinSuspend(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/JobSupport;->onCompletionInternal(Ljava/lang/Object;)V
+PLkotlinx/coroutines/JobSupport;->tryWaitForChild(Lkotlinx/coroutines/JobSupport$Finishing;Lkotlinx/coroutines/ChildHandleNode;Ljava/lang/Object;)Z
+PLkotlinx/coroutines/JobSupportKt;->access$getTOO_LATE_TO_CANCEL$p()Lkotlinx/coroutines/internal/Symbol;
+PLkotlinx/coroutines/RemoveOnCancel;-><init>(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+PLkotlinx/coroutines/ResumeOnCompletion;-><init>(Lkotlin/coroutines/Continuation;)V
+PLkotlinx/coroutines/ResumeOnCompletion;->invoke(Ljava/lang/Throwable;)V
+PLkotlinx/coroutines/ThreadLocalEventLoop;->setEventLoop$external__kotlinx_coroutines__android_common__kotlinx_coroutines(Lkotlinx/coroutines/EventLoop;)V
+PLkotlinx/coroutines/UndispatchedCoroutine;->afterResume(Ljava/lang/Object;)V
+PLkotlinx/coroutines/channels/AbstractChannel$RemoveReceiveOnCancel;->invoke(Ljava/lang/Throwable;)V
+PLkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;-><init>(Ljava/lang/Object;)V
+PLkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;->completeResumeSend()V
+PLkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;->getPollResult()Ljava/lang/Object;
+PLkotlinx/coroutines/channels/AbstractSendChannel$SendBuffered;->tryResumeSend(Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;)Lkotlinx/coroutines/internal/Symbol;
+PLkotlinx/coroutines/channels/AbstractSendChannel;->sendBuffered(Ljava/lang/Object;)Lkotlinx/coroutines/channels/ReceiveOrClosed;
+PLkotlinx/coroutines/channels/LinkedListChannel;->offerInternal(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/channels/Send;-><init>()V
+PLkotlinx/coroutines/flow/AbstractFlow$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/DistinctFlowImpl$collect$2$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Boolean;
+PLkotlinx/coroutines/flow/FlowKt__DistinctKt$defaultAreEquivalent$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$dropWhile$1$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$emitAbort$1;-><init>(Lkotlin/coroutines/Continuation;)V
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$emitAbort$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$take$$inlined$unsafeFlow$1$1;-><init>(Lkotlinx/coroutines/flow/FlowKt__LimitKt$take$$inlined$unsafeFlow$1;Lkotlin/coroutines/Continuation;)V
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$take$$inlined$unsafeFlow$1$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$take$$inlined$unsafeFlow$1;->collect(Lkotlinx/coroutines/flow/FlowCollector;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$take$2$1$emit$1;-><init>(Lkotlinx/coroutines/flow/FlowKt__LimitKt$take$2$1;Lkotlin/coroutines/Continuation;)V
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$take$2$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$take$2$1;-><init>(Lkotlin/jvm/internal/Ref$IntRef;ILkotlinx/coroutines/flow/FlowCollector;)V
+PLkotlinx/coroutines/flow/FlowKt__LimitKt$take$2$1;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__LimitKt;->access$emitAbort$FlowKt__LimitKt(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__LimitKt;->emitAbort$FlowKt__LimitKt(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/FlowKt__ReduceKt$first$3;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/SharedFlowImpl$collect$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/SharedFlowImpl;->emit$suspendImpl(Lkotlinx/coroutines/flow/SharedFlowImpl;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/SharedFlowImpl;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/SharedFlowImpl;->getQueueEndIndex()J
+PLkotlinx/coroutines/flow/SharedFlowSlot;->freeLocked(Ljava/lang/Object;)[Lkotlin/coroutines/Continuation;
+PLkotlinx/coroutines/flow/SharedFlowSlot;->freeLocked(Lkotlinx/coroutines/flow/SharedFlowImpl;)[Lkotlin/coroutines/Continuation;
+PLkotlinx/coroutines/flow/StartedWhileSubscribed;->access$getReplayExpiration$p(Lkotlinx/coroutines/flow/StartedWhileSubscribed;)J
+PLkotlinx/coroutines/flow/StartedWhileSubscribed;->access$getStopTimeout$p(Lkotlinx/coroutines/flow/StartedWhileSubscribed;)J
+PLkotlinx/coroutines/flow/StateFlowSlot;->freeLocked(Ljava/lang/Object;)[Lkotlin/coroutines/Continuation;
+PLkotlinx/coroutines/flow/StateFlowSlot;->freeLocked(Lkotlinx/coroutines/flow/StateFlowImpl;)[Lkotlin/coroutines/Continuation;
+PLkotlinx/coroutines/flow/internal/AbortFlowException;-><init>(Lkotlinx/coroutines/flow/FlowCollector;)V
+PLkotlinx/coroutines/flow/internal/AbortFlowException;->fillInStackTrace()Ljava/lang/Throwable;
+PLkotlinx/coroutines/flow/internal/AbstractSharedFlow;->freeSlot(Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;)V
+PLkotlinx/coroutines/flow/internal/ChannelFlowTransformLatest$flowCollect$3$1$emit$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/internal/ChildCancelledException;-><init>()V
+PLkotlinx/coroutines/flow/internal/ChildCancelledException;->fillInStackTrace()Ljava/lang/Throwable;
+PLkotlinx/coroutines/flow/internal/DownstreamExceptionContext;-><init>(Ljava/lang/Throwable;Lkotlin/coroutines/CoroutineContext;)V
+PLkotlinx/coroutines/flow/internal/FlowExceptions_commonKt;->checkOwnership(Lkotlinx/coroutines/flow/internal/AbortFlowException;Lkotlinx/coroutines/flow/FlowCollector;)V
+PLkotlinx/coroutines/flow/internal/NopCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/internal/SafeCollector;->checkContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/coroutines/CoroutineContext;Ljava/lang/Object;)V
+PLkotlinx/coroutines/flow/internal/SafeCollector;->emit(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/internal/SafeCollector;->emit(Lkotlin/coroutines/Continuation;Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/internal/SafeCollector;->getContext()Lkotlin/coroutines/CoroutineContext;
+PLkotlinx/coroutines/flow/internal/SafeCollector;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/internal/SafeCollector;->releaseIntercepted()V
+PLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;-><clinit>()V
+PLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;-><init>()V
+PLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/internal/SafeCollectorKt$emitFun$1;->invoke(Lkotlinx/coroutines/flow/FlowCollector;Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/internal/SafeCollectorKt;-><clinit>()V
+PLkotlinx/coroutines/flow/internal/SafeCollectorKt;->access$getEmitFun$p()Lkotlin/jvm/functions/Function3;
+PLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;-><init>(Lkotlinx/coroutines/flow/internal/SafeCollector;)V
+PLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;->invoke(ILkotlin/coroutines/CoroutineContext$Element;)Ljava/lang/Integer;
+PLkotlinx/coroutines/flow/internal/SafeCollector_commonKt$checkContext$result$1;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/flow/internal/SafeCollector_commonKt;->checkContext(Lkotlinx/coroutines/flow/internal/SafeCollector;Lkotlin/coroutines/CoroutineContext;)V
+PLkotlinx/coroutines/flow/internal/SafeCollector_commonKt;->transitiveCoroutineParent(Lkotlinx/coroutines/Job;Lkotlinx/coroutines/Job;)Lkotlinx/coroutines/Job;
+PLkotlinx/coroutines/internal/DispatchedContinuation;->postponeCancellation(Ljava/lang/Throwable;)Z
+PLkotlinx/coroutines/internal/LockFreeLinkedListHead;->isEmpty()Z
+PLkotlinx/coroutines/internal/LockFreeLinkedListNode;->addLast(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V
+PLkotlinx/coroutines/internal/LockFreeLinkedListNode;->findPrevNonRemoved(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+PLkotlinx/coroutines/internal/LockFreeLinkedListNode;->removeFirstOrNull()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;
+PLkotlinx/coroutines/internal/ThreadSafeHeap;-><init>()V
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->addImpl(Lkotlinx/coroutines/internal/ThreadSafeHeapNode;)V
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->firstImpl()Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->getSize()I
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->isEmpty()Z
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->peek()Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->realloc()[Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->remove(Lkotlinx/coroutines/internal/ThreadSafeHeapNode;)Z
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->removeAtImpl(I)Lkotlinx/coroutines/internal/ThreadSafeHeapNode;
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->setSize(I)V
+PLkotlinx/coroutines/internal/ThreadSafeHeap;->siftUpFrom(I)V
+PLkotlinx/coroutines/sync/Mutex$DefaultImpls;->unlock$default(Lkotlinx/coroutines/sync/Mutex;Ljava/lang/Object;ILjava/lang/Object;)V
+PLkotlinx/coroutines/sync/MutexImpl$LockCont$tryResumeLockWaiter$1;-><init>(Lkotlinx/coroutines/sync/MutexImpl;Lkotlinx/coroutines/sync/MutexImpl$LockCont;)V
+PLkotlinx/coroutines/sync/MutexImpl$LockCont;-><init>(Lkotlinx/coroutines/sync/MutexImpl;Ljava/lang/Object;Lkotlinx/coroutines/CancellableContinuation;)V
+PLkotlinx/coroutines/sync/MutexImpl$LockCont;->completeResumeLockWaiter()V
+PLkotlinx/coroutines/sync/MutexImpl$LockCont;->tryResumeLockWaiter()Z
+PLkotlinx/coroutines/sync/MutexImpl$LockWaiter;-><init>(Lkotlinx/coroutines/sync/MutexImpl;Ljava/lang/Object;)V
+PLkotlinx/coroutines/sync/MutexImpl$LockWaiter;->take()Z
+PLkotlinx/coroutines/sync/MutexImpl$LockedQueue;-><init>(Ljava/lang/Object;)V
+PLkotlinx/coroutines/sync/MutexImpl$UnlockOp;-><init>(Lkotlinx/coroutines/sync/MutexImpl$LockedQueue;)V
+PLkotlinx/coroutines/sync/MutexImpl$UnlockOp;->complete(Ljava/lang/Object;Ljava/lang/Object;)V
+PLkotlinx/coroutines/sync/MutexImpl$UnlockOp;->complete(Lkotlinx/coroutines/sync/MutexImpl;Ljava/lang/Object;)V
+PLkotlinx/coroutines/sync/MutexImpl$UnlockOp;->prepare(Ljava/lang/Object;)Ljava/lang/Object;
+PLkotlinx/coroutines/sync/MutexImpl$UnlockOp;->prepare(Lkotlinx/coroutines/sync/MutexImpl;)Ljava/lang/Object;
+PLkotlinx/coroutines/sync/MutexImpl;->access$get_state$p(Lkotlinx/coroutines/sync/MutexImpl;)Lkotlinx/atomicfu/AtomicRef;
+PLkotlinx/coroutines/sync/MutexImpl;->lockSuspend(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+PLkotlinx/coroutines/sync/MutexKt;->access$getLOCKED$p()Lkotlinx/coroutines/internal/Symbol;
+[Landroidx/compose/animation/core/AnimationEndReason;
+[Landroidx/compose/animation/core/MutatePriority;
+[Landroidx/compose/foundation/MutatePriority;
+[Landroidx/compose/foundation/gestures/Orientation;
+[Landroidx/compose/foundation/layout/Direction;
+[Landroidx/compose/foundation/layout/LayoutOrientation;
+[Landroidx/compose/foundation/layout/RowColumnParentData;
+[Landroidx/compose/foundation/layout/SizeMode;
+[Landroidx/compose/foundation/relocation/BringIntoViewRequesterModifier;
+[Landroidx/compose/material3/tokens/ColorSchemeKeyTokens;
+[Landroidx/compose/material3/tokens/ShapeKeyTokens;
+[Landroidx/compose/material3/tokens/TypographyKeyTokens;
+[Landroidx/compose/runtime/InvalidationResult;
+[Landroidx/compose/runtime/ParcelableSnapshotMutableState;
+[Landroidx/compose/runtime/ProvidedValue;
+[Landroidx/compose/runtime/Recomposer$State;
+[Landroidx/compose/runtime/collection/IdentityArraySet;
+[Landroidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableMap/TrieNodeBaseIterator;
+[Landroidx/compose/runtime/snapshots/SnapshotStateObserver$ObservedScopeMap;
+[Landroidx/compose/ui/Modifier$Element;
+[Landroidx/compose/ui/Modifier$Node;
+[Landroidx/compose/ui/Modifier;
+[Landroidx/compose/ui/focus/FocusEventModifierLocal;
+[Landroidx/compose/ui/focus/FocusModifier;
+[Landroidx/compose/ui/focus/FocusRequesterModifierLocal;
+[Landroidx/compose/ui/focus/FocusStateImpl;
+[Landroidx/compose/ui/graphics/colorspace/ColorSpace;
+[Landroidx/compose/ui/input/key/KeyInputModifier;
+[Landroidx/compose/ui/input/pointer/Node;
+[Landroidx/compose/ui/input/pointer/PointerEventPass;
+[Landroidx/compose/ui/input/pointer/SuspendingPointerInputFilter$PointerEventHandlerCoroutine;
+[Landroidx/compose/ui/input/pointer/util/PointAtTime;
+[Landroidx/compose/ui/layout/Measurable;
+[Landroidx/compose/ui/layout/Placeable;
+[Landroidx/compose/ui/modifier/ModifierLocal;
+[Landroidx/compose/ui/node/BackwardsCompatNode;
+[Landroidx/compose/ui/node/LayoutNode$LayoutState;
+[Landroidx/compose/ui/node/LayoutNode$UsageByParent;
+[Landroidx/compose/ui/node/LayoutNode;
+[Landroidx/compose/ui/node/MeasureAndLayoutDelegate$PostponedRequest;
+[Landroidx/compose/ui/node/Owner$OnLayoutCompletedListener;
+[Landroidx/compose/ui/platform/TextToolbarStatus;
+[Landroidx/compose/ui/text/android/style/LineHeightStyleSpan;
+[Landroidx/compose/ui/text/android/style/PlaceholderSpan;
+[Landroidx/compose/ui/text/font/FontWeight;
+[Landroidx/compose/ui/text/platform/style/ShaderBrushSpan;
+[Landroidx/compose/ui/unit/LayoutDirection;
+[Landroidx/compose/ui/unit/TextUnitType;
+[Landroidx/core/content/res/FontResourcesParserCompat$FontFileResourceEntry;
+[Landroidx/core/provider/FontsContractCompat$FontInfo;
+[Landroidx/emoji2/text/EmojiCompat$InitCallback;
+[Landroidx/emoji2/text/EmojiSpan;
+[Landroidx/lifecycle/GeneratedAdapter;
+[Landroidx/lifecycle/Lifecycle$Event;
+[Landroidx/lifecycle/Lifecycle$State;
+[Landroidx/lifecycle/viewmodel/ViewModelInitializer;
+[Lcom/android/credentialmanager/common/DialogType;
+[Lcom/android/credentialmanager/common/material/ModalBottomSheetValue;
+[Lcom/android/credentialmanager/createflow/CreateScreenState;
+[Lcom/android/credentialmanager/jetpack/provider/CredentialCountInformation;
+[Lkotlin/LazyThreadSafetyMode;
+[Lkotlin/Pair;
+[Lkotlin/coroutines/Continuation;
+[Lkotlin/coroutines/CoroutineContext;
+[Lkotlin/coroutines/intrinsics/CoroutineSingletons;
+[Lkotlin/jvm/functions/Function0;
+[Lkotlin/reflect/KClass;
+[Lkotlin/reflect/KProperty;
+[Lkotlinx/atomicfu/AtomicRef;
+[Lkotlinx/coroutines/CoroutineStart;
+[Lkotlinx/coroutines/channels/BufferOverflow;
+[Lkotlinx/coroutines/flow/SharedFlowSlot;
+[Lkotlinx/coroutines/flow/SharingCommand;
+[Lkotlinx/coroutines/flow/StateFlowSlot;
+[Lkotlinx/coroutines/flow/internal/AbstractSharedFlowSlot;
diff --git a/packages/CredentialManager/res/values-ar/strings.xml b/packages/CredentialManager/res/values-ar/strings.xml
index e99e357..c0ff69d 100644
--- a/packages/CredentialManager/res/values-ar/strings.xml
+++ b/packages/CredentialManager/res/values-ar/strings.xml
@@ -10,44 +10,32 @@
<string name="string_use_another_device" msgid="8754514926121520445">"استخدام جهاز آخر"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"الحفظ على جهاز آخر"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"توفير المزيد من الأمان باستخدام مفاتيح المرور"</string>
- <!-- no translation found for passkey_creation_intro_body_password (8825872426579958200) -->
- <skip />
- <!-- no translation found for passkey_creation_intro_body_fingerprint (7331338631826254055) -->
- <skip />
- <!-- no translation found for passkey_creation_intro_body_device (1203796455762131631) -->
- <skip />
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"باستخدام مفاتيح المرور، لا حاجة لإنشاء كلمات مرور معقدة أو تذكّرها."</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"مفاتيح المرور هي مفاتيح رقمية مشفّرة يمكنك إنشاؤها باستخدام بصمة الإصبع أو التعرّف على الوجه أو قفل الشاشة."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"يتم حفظها في مدير كلمات مرور، حتى تتمكن من تسجيل الدخول على أجهزة أخرى."</string>
<string name="choose_provider_title" msgid="7245243990139698508">"اختيار مكان <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"إنشاء مفاتيح مرورك"</string>
<string name="save_your_password" msgid="6597736507991704307">"حفظ كلمة المرور"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"حفظ معلومات تسجيل الدخول"</string>
- <!-- no translation found for choose_provider_body (4384188171872005547) -->
- <skip />
- <!-- no translation found for choose_create_option_passkey_title (5220979185879006862) -->
- <skip />
- <!-- no translation found for choose_create_option_password_title (7097275038523578687) -->
- <skip />
- <!-- no translation found for choose_create_option_sign_in_title (4124872317613421249) -->
- <skip />
- <!-- no translation found for choose_create_option_description (5531335144879100664) -->
- <skip />
+ <string name="choose_provider_body" msgid="4384188171872005547">"اختَر مدير كلمة مرور لحفظ معلوماتك وتسجيل الدخول بشكل أسرع في المرة القادمة."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"إنشاء مفتاح مرور لتطبيق \"<xliff:g id="APPNAME">%1$s</xliff:g>\""</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"هل تريد حفظ كلمة المرور لتطبيق \"<xliff:g id="APPNAME">%1$s</xliff:g>\"؟"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"هل تريد حفظ معلومات تسجيل الدخول لتطبيق \"<xliff:g id="APPNAME">%1$s</xliff:g>\"؟"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"يمكنك استخدام <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> لتطبيق \"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>\" على أي جهاز. يتم حفظه في \"<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>\" للحساب \"<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>\"."</string>
<string name="passkey" msgid="632353688396759522">"مفتاح مرور"</string>
<string name="password" msgid="6738570945182936667">"كلمة المرور"</string>
<string name="sign_ins" msgid="4710739369149469208">"عمليات تسجيل الدخول"</string>
- <!-- no translation found for sign_in_info (2627704710674232328) -->
- <skip />
- <!-- no translation found for save_credential_to_title (3172811692275634301) -->
- <skip />
+ <string name="sign_in_info" msgid="2627704710674232328">"معلومات تسجيل الدخول"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"حفظ <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> في"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"هل تريد إنشاء مفتاح مرور في جهاز آخر؟"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"هل تريد استخدام \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\" لكل عمليات تسجيل الدخول؟"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"ستخزِّن خدمة إدارة كلمات المرور هذه كلمات المرور ومفاتيح المرور لمساعدتك في تسجيل الدخول بسهولة."</string>
<string name="set_as_default" msgid="4415328591568654603">"ضبط الخيار كتلقائي"</string>
<string name="use_once" msgid="9027366575315399714">"الاستخدام مرة واحدة"</string>
- <!-- no translation found for more_options_usage_passwords_passkeys (3470113942332934279) -->
- <skip />
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> كلمة مرور • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> مفتاح مرور"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"عدد كلمات المرور: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"عدد مفاتيح المرور: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
- <!-- no translation found for more_options_usage_credentials (1785697001787193984) -->
- <skip />
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"بيانات الاعتماد: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"مفتاح مرور"</string>
<string name="another_device" msgid="5147276802037801217">"جهاز آخر"</string>
<string name="other_password_manager" msgid="565790221427004141">"خدمات مدراء كلمات المرور الأخرى"</string>
@@ -58,8 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"هل تريد استخدام بيانات اعتماد تسجيل الدخول المحفوظة لتطبيق \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"؟"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"اختيار بيانات اعتماد تسجيل دخول محفوظة لـ \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"تسجيل الدخول بطريقة أخرى"</string>
- <!-- no translation found for snackbar_action (37373514216505085) -->
- <skip />
+ <string name="snackbar_action" msgid="37373514216505085">"عرض الخيارات"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"متابعة"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"خيارات تسجيل الدخول"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"معلومات تسجيل دخول \"<xliff:g id="USERNAME">%1$s</xliff:g>\""</string>
diff --git a/packages/CredentialManager/res/values-ja/strings.xml b/packages/CredentialManager/res/values-ja/strings.xml
index f2a91f5..18681fe 100644
--- a/packages/CredentialManager/res/values-ja/strings.xml
+++ b/packages/CredentialManager/res/values-ja/strings.xml
@@ -10,44 +10,32 @@
<string name="string_use_another_device" msgid="8754514926121520445">"別のデバイスを使用"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"他のデバイスに保存"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"パスキーでより安全に"</string>
- <!-- no translation found for passkey_creation_intro_body_password (8825872426579958200) -->
- <skip />
- <!-- no translation found for passkey_creation_intro_body_fingerprint (7331338631826254055) -->
- <skip />
- <!-- no translation found for passkey_creation_intro_body_device (1203796455762131631) -->
- <skip />
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"パスキーがあれば、複雑なパスワードを作成したり覚えたりする必要はありません"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"パスキーは、指紋認証、顔認証、または画面ロックを使って作成される暗号化されたデジタルキーです"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"パスワード マネージャーに保存され、他のデバイスでもログインできます"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> の保存場所の選択"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"パスキーの作成"</string>
<string name="save_your_password" msgid="6597736507991704307">"パスワードを保存"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ログイン情報を保存"</string>
- <!-- no translation found for choose_provider_body (4384188171872005547) -->
- <skip />
- <!-- no translation found for choose_create_option_passkey_title (5220979185879006862) -->
- <skip />
- <!-- no translation found for choose_create_option_password_title (7097275038523578687) -->
- <skip />
- <!-- no translation found for choose_create_option_sign_in_title (4124872317613421249) -->
- <skip />
- <!-- no translation found for choose_create_option_description (5531335144879100664) -->
- <skip />
+ <string name="choose_provider_body" msgid="4384188171872005547">"パスワード マネージャーを選択して情報を保存しておくと、次回からすばやくログインできます。"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> のパスキーを作成しますか?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> のパスワードを保存しますか?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> のログイン情報を保存しますか?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> の<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>はどのデバイスでも使用できます。<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> の <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>に保存されます。"</string>
<string name="passkey" msgid="632353688396759522">"パスキー"</string>
<string name="password" msgid="6738570945182936667">"パスワード"</string>
<string name="sign_ins" msgid="4710739369149469208">"ログイン"</string>
- <!-- no translation found for sign_in_info (2627704710674232328) -->
- <skip />
- <!-- no translation found for save_credential_to_title (3172811692275634301) -->
- <skip />
+ <string name="sign_in_info" msgid="2627704710674232328">"ログイン情報"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>の保存先"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"他のデバイスでパスキーを作成しますか?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ログインのたびに <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> を使用しますか?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"このパスワード マネージャーに、パスワードやパスキーが保存され、簡単にログインできるようになります。"</string>
<string name="set_as_default" msgid="4415328591568654603">"デフォルトに設定"</string>
<string name="use_once" msgid="9027366575315399714">"1 回使用"</string>
- <!-- no translation found for more_options_usage_passwords_passkeys (3470113942332934279) -->
- <skip />
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 件のパスワード • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> 件のパスキー"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 件のパスワード"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> 件のパスキー"</string>
- <!-- no translation found for more_options_usage_credentials (1785697001787193984) -->
- <skip />
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> 件の認証情報"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"パスキー"</string>
<string name="another_device" msgid="5147276802037801217">"別のデバイス"</string>
<string name="other_password_manager" msgid="565790221427004141">"他のパスワード マネージャー"</string>
@@ -58,8 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> の保存したログイン情報を使用しますか?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> の保存したログイン情報の選択"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"別の方法でログイン"</string>
- <!-- no translation found for snackbar_action (37373514216505085) -->
- <skip />
+ <string name="snackbar_action" msgid="37373514216505085">"オプションを表示"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"続行"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ログイン オプション"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> 用"</string>
diff --git a/packages/CredentialManager/res/values/strings.xml b/packages/CredentialManager/res/values/strings.xml
index 91ffc44..81505e1 100644
--- a/packages/CredentialManager/res/values/strings.xml
+++ b/packages/CredentialManager/res/values/strings.xml
@@ -5,63 +5,49 @@
<string name="app_name">Credential Manager</string>
<!-- Strings for the create flow. -->
- <!-- Button label to close the dialog when the user does not want to create the credential. [CHAR LIMIT=40] -->
+ <!-- Button label to close the dialog when the user does not want to create the credential. [CHAR LIMIT=20] -->
<string name="string_cancel">Cancel</string>
- <!-- Button label to confirm choosing the default dialog information and continue. [CHAR LIMIT=40] -->
+ <!-- This is a label for a button that takes user to the next screen. [CHAR LIMIT=20] -->
<string name="string_continue">Continue</string>
- <!-- Button label to create this credential in other available places. [CHAR LIMIT=40] -->
+ <!-- This is a label for a button that links to different places where the user can save their passkeys. [CHAR LIMIT=20] -->
<string name="string_more_options">More options</string>
- <!-- This appears as a text button where users can click to create this passkey in other available places. [CHAR LIMIT=80] -->
- <string name="string_create_in_another_place">Create in another place</string>
- <!-- This appears as a text button where users can click to create this password or other credential types in other available places. [CHAR LIMIT=80] -->
- <string name="string_save_to_another_place">Save to another place</string>
- <!-- This appears as a text button where users can click to use another device to create this credential. [CHAR LIMIT=80] -->
- <string name="string_use_another_device">Use another device</string>
- <!-- This appears as a text button where users can click to save this credential to another device. [CHAR LIMIT=80] -->
- <string name="string_save_to_another_device">Save to another device</string>
- <!-- This appears as the title of the modal bottom sheet introducing what is passkey to users. [CHAR LIMIT=200] -->
+ <!-- This string introduces passkeys to the users for the first time they use this method. Tip: to avoid gendered language patterns, this header could be translated as if the original string were "More safety with passkeys". [CHAR LIMIT=200] -->
<string name="passkey_creation_intro_title">Safer with passkeys</string>
- <!-- This appears as the description body of the modal bottom sheet introducing why passkey beneficial on the passwords side. [CHAR LIMIT=200] -->
+ <!-- These strings highlight passkey benefits. [CHAR LIMIT=200] -->
<string name="passkey_creation_intro_body_password">With passkeys, you don’t need to create or remember complex passwords</string>
- <!-- This appears as the description body of the modal bottom sheet introducing why passkey beneficial on the safety side. [CHAR LIMIT=200] -->
<string name="passkey_creation_intro_body_fingerprint">Passkeys are encrypted digital keys you create using your fingerprint, face, or screen lock</string>
- <!-- This appears as the description body of the modal bottom sheet introducing why passkey beneficial on the using other devices side. [CHAR LIMIT=200] -->
<string name="passkey_creation_intro_body_device">They are saved to a password manager, so you can sign in on other devices</string>
- <!-- This appears as the title of the modal bottom sheet which provides all available providers for users to choose. [CHAR LIMIT=200] -->
- <string name="choose_provider_title">Choose where to <xliff:g id="createTypes" example="create your passkeys">%1$s</xliff:g></string>
- <!-- Create types which are inserted as a placeholder for string choose_provider_title. [CHAR LIMIT=200] -->
- <string name="create_your_passkeys">create your passkeys</string>
- <string name="save_your_password">save your password</string>
- <string name="save_your_sign_in_info">save your sign-in info</string>
+ <!-- This appears as the title of the modal bottom sheet which provides all available providers for users to choose. [CHAR LIMIT=200] -->
+ <string name="choose_provider_title">Choose where to save your <xliff:g id="createTypes" example="passkeys">%1$s</xliff:g></string>
<!-- This appears as the description body of the modal bottom sheet which provides all available providers for users to choose. [CHAR LIMIT=200] -->
- <string name="choose_provider_body">Select a password manager to save your info and sign in faster next time.</string>
+ <string name="choose_provider_body">Select a password manager to save your info and sign in faster next time</string>
<!-- This appears as the title of the modal bottom sheet for users to choose the create option inside a provider when the credential type is passkey. [CHAR LIMIT=200] -->
<string name="choose_create_option_passkey_title">Create passkey for <xliff:g id="appName" example="Tribank">%1$s</xliff:g>?</string>
<!-- This appears as the title of the modal bottom sheet for users to choose the create option inside a provider when the credential type is password. [CHAR LIMIT=200] -->
<string name="choose_create_option_password_title">Save password for <xliff:g id="appName" example="Tribank">%1$s</xliff:g>?</string>
<!-- This appears as the title of the modal bottom sheet for users to choose the create option inside a provider when the credential type is others. [CHAR LIMIT=200] -->
<string name="choose_create_option_sign_in_title">Save sign-in info for <xliff:g id="appName" example="Tribank">%1$s</xliff:g>?</string>
- <!-- This appears as the description body of the modal bottom sheet for users to choose the create option inside a provider. [CHAR LIMIT=200] -->
- <string name="choose_create_option_description">You can use your <xliff:g id="appDomainName" example="Tribank">%1$s</xliff:g> <xliff:g id="credentialTypes" example="passkey">%2$s</xliff:g> on any device. It is saved to <xliff:g id="providerInfoDisplayName" example="Google Password Manager">%3$s</xliff:g> for <xliff:g id="createInfoDisplayName" example="elisa.beckett@gmail.com">%4$s</xliff:g>.</string>
<!-- Types which are inserted as a placeholder as credentialTypes for other strings. [CHAR LIMIT=200] -->
<string name="passkey">passkey</string>
<string name="password">password</string>
+ <string name="passkeys">passkeys</string>
+ <string name="passwords">passwords</string>
<string name="sign_ins">sign-ins</string>
<string name="sign_in_info">sign-in info</string>
- <!-- This appears as the title of the modal bottom sheet for users to choose other available places the created password can be saved to. [CHAR LIMIT=200] -->
+ <!-- This text is followed by a list of one or more options. [CHAR LIMIT=200] -->
<string name="save_credential_to_title">Save <xliff:g id="credentialTypes" example="passkey">%1$s</xliff:g> to</string>
<!-- This appears as the title of the modal bottom sheet for users to choose to create a passkey on another device. [CHAR LIMIT=200] -->
- <string name="create_passkey_in_other_device_title">Create a passkey in another device?</string>
+ <string name="create_passkey_in_other_device_title">Create passkey in another device?</string>
<!-- This appears as the title of the modal bottom sheet for users to confirm whether they should use the selected provider as default or not. [CHAR LIMIT=200] -->
<string name="use_provider_for_all_title">Use <xliff:g id="providerInfoDisplayName" example="Google Password Manager">%1$s</xliff:g> for all your sign-ins?</string>
<!-- TODO: Check the wording here. -->
<!-- This appears as the description body of the modal bottom sheet for users to confirm whether they should use the selected provider as default or not. [CHAR LIMIT=200] -->
- <string name="use_provider_for_all_description">This password manager will store your passwords and passkeys to help you easily sign in.</string>
- <!-- Button label to set the selected provider on the modal bottom sheet as default. [CHAR LIMIT=40] -->
+ <string name="use_provider_for_all_description">This password manager will store your passwords and passkeys to help you easily sign in</string>
+ <!-- This is a label for a button that sets this password manager as the default. [CHAR LIMIT=20] -->
<string name="set_as_default">Set as default</string>
- <!-- Button label to set the selected provider on the modal bottom sheet not as default but just use once. [CHAR LIMIT=40] -->
+ <!-- This is a label for a button that makes this password manager be used just in this specific case. [CHAR LIMIT=20] -->
<string name="use_once">Use once</string>
<!-- Appears as an option row subtitle to show how many passwords and passkeys are saved in this option when there are passwords and passkeys. [CHAR LIMIT=80] -->
<string name="more_options_usage_passwords_passkeys"><xliff:g id="passwordsNumber" example="1">%1$s</xliff:g> passwords • <xliff:g id="passkeysNumber" example="2">%2$s</xliff:g> passkeys</string>
@@ -73,7 +59,7 @@
<string name="more_options_usage_credentials"><xliff:g id="totalCredentialsNumber" example="5">%1$s</xliff:g> credentials</string>
<!-- Appears before a request display name when the credential type is passkey . [CHAR LIMIT=80] -->
<string name="passkey_before_subtitle">Passkey</string>
- <!-- Appears as an option row title that users can choose to use another device for this creation. [CHAR LIMIT=80] -->
+ <!-- This is a label for a button that lets users save their passkey to a different device. [CHAR LIMIT=80] -->
<string name="another_device">Another device</string>
<!-- Appears as an option row title that users can choose to view other disabled providers. [CHAR LIMIT=80] -->
<string name="other_password_manager">Other password managers</string>
@@ -91,15 +77,15 @@
<string name="get_dialog_title_use_sign_in_for">Use your saved sign-in for <xliff:g id="app_name" example="YouTube">%1$s</xliff:g>?</string>
<!-- This appears as the title of the dialog asking for user to make a choice from various previously saved credentials to sign in to the app. [CHAR LIMIT=200] -->
<string name="get_dialog_title_choose_sign_in_for">Choose a saved sign-in for <xliff:g id="app_name" example="YouTube">%1$s</xliff:g></string>
- <!-- Appears as an option row for viewing all the available sign-in options. [CHAR LIMIT=80] -->
+ <!-- This is a label for a button that links the user to different sign-in methods . [CHAR LIMIT=80] -->
<string name="get_dialog_use_saved_passkey_for">Sign in another way</string>
- <!-- Appears as a text button in the snackbar for users to click to view all options. [CHAR LIMIT=80] -->
+ <!-- This is a label for a button that links the user to different sign-in methods. [CHAR LIMIT=80] -->
<string name="snackbar_action">View options</string>
- <!-- Button label to continue with the selected sign-in. [CHAR LIMIT=40] -->
+ <!-- This is a label for a button that takes user to the next screen. [CHAR LIMIT=20] -->
<string name="get_dialog_button_label_continue">Continue</string>
<!-- Separator for sign-in type and username in a sign-in entry. -->
<string name="get_dialog_sign_in_type_username_separator" translatable="false">" - "</string>
- <!-- Modal bottom sheet title for displaying all the available sign-in options. [CHAR LIMIT=80] -->
+ <!-- This text is followed by a list of one or more options. [CHAR LIMIT=80] -->
<string name="get_dialog_title_sign_in_options">Sign-in options</string>
<!-- Column heading for displaying sign-ins for a specific username. [CHAR LIMIT=80] -->
<string name="get_dialog_heading_for_username">For <xliff:g id="username" example="becket@gmail.com">%1$s</xliff:g></string>
@@ -111,6 +97,6 @@
<string name="get_dialog_heading_manage_sign_ins">Manage sign-ins</string>
<!-- Column heading for displaying option to use sign-ins saved on a different device. [CHAR LIMIT=80] -->
<string name="get_dialog_heading_from_another_device">From another device</string>
- <!-- Headline text for an option to use sign-ins saved on a different device. [CHAR LIMIT=120] -->
+ <!-- This is a label for a button that takes the user to other available devices. [CHAR LIMIT=120] -->
<string name="get_dialog_option_headline_use_a_different_device">Use a different device</string>
</resources>
\ No newline at end of file
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt
index 9b8443d..1e5bd7b 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt
@@ -16,14 +16,14 @@
package com.android.credentialmanager
-import android.credentials.Credential.TYPE_PASSWORD_CREDENTIAL
import android.app.PendingIntent
import android.app.slice.Slice
import android.app.slice.SliceSpec
import android.content.Context
import android.content.Intent
-import android.content.pm.Signature
+import android.content.pm.SigningInfo
import android.credentials.CreateCredentialRequest
+import android.credentials.Credential.TYPE_PASSWORD_CREDENTIAL
import android.credentials.GetCredentialOption
import android.credentials.GetCredentialRequest
import android.credentials.ui.Constants
@@ -41,12 +41,11 @@
import android.os.Bundle
import android.os.ResultReceiver
import android.service.credentials.CredentialProviderService
-import android.util.ArraySet
-import com.android.credentialmanager.createflow.RequestDisplayInfo
-import com.android.credentialmanager.createflow.EnabledProviderInfo
import com.android.credentialmanager.createflow.DisabledProviderInfo
+import com.android.credentialmanager.createflow.EnabledProviderInfo
+import com.android.credentialmanager.createflow.RequestDisplayInfo
import com.android.credentialmanager.getflow.GetCredentialUiState
-import com.android.credentialmanager.jetpack.developer.CreatePasswordRequest.Companion.toBundle
+import com.android.credentialmanager.jetpack.developer.CreatePasswordRequest.Companion.toCredentialDataBundle
import com.android.credentialmanager.jetpack.developer.CreatePublicKeyCredentialRequest
import com.android.credentialmanager.jetpack.developer.PublicKeyCredential.Companion.TYPE_PUBLIC_KEY_CREDENTIAL
import com.android.credentialmanager.jetpack.provider.Action
@@ -129,7 +128,7 @@
val providerEnabledList = GetFlowUtils.toProviderList(
// TODO: handle runtime cast error
providerEnabledList as List<GetCredentialProviderData>, context)
- val requestDisplayInfo = GetFlowUtils.toRequestDisplayInfo(requestInfo)
+ val requestDisplayInfo = GetFlowUtils.toRequestDisplayInfo(requestInfo, context)
return GetCredentialUiState(
providerEnabledList,
requestDisplayInfo,
@@ -140,9 +139,6 @@
val providerEnabledList = CreateFlowUtils.toEnabledProviderList(
// Handle runtime cast error
providerEnabledList as List<CreateCredentialProviderData>, context)
- providerEnabledList.forEach{providerInfo -> providerInfo.createOptions =
- providerInfo.createOptions.sortedWith(compareBy { it.lastUsedTimeMillis }).reversed()
- }
return providerEnabledList
}
@@ -180,9 +176,11 @@
.setSaveEntries(
listOf<Entry>(
newCreateEntry("key1", "subkey-1", "elisa.beckett@gmail.com",
- 20, 7, 27, 10000),
+ 20, 7, 27, 10L,
+ "Optional footer description"),
newCreateEntry("key1", "subkey-2", "elisa.work@google.com",
- 20, 7, 27, 11000),
+ 20, 7, 27, 12L,
+ null),
)
)
.setRemoteEntry(
@@ -194,9 +192,11 @@
.setSaveEntries(
listOf<Entry>(
newCreateEntry("key1", "subkey-3", "elisa.beckett@dashlane.com",
- 20, 7, 27, 30000),
+ 20, 7, 27, 11L,
+ null),
newCreateEntry("key1", "subkey-4", "elisa.work@dashlane.com",
- 20, 7, 27, 31000),
+ 20, 7, 27, 14L,
+ null),
)
)
.build(),
@@ -329,8 +329,7 @@
key,
subkey,
CredentialEntry.toSlice(credentialEntry),
- pendingIntent,
- null
+ Intent()
)
}
@@ -342,6 +341,7 @@
passkeyCount: Int,
totalCredentialCount: Int,
lastUsedTimeMillis: Long,
+ footerDescription: String?,
): Entry {
val intent = Intent("com.androidauth.androidvault.CONFIRM_PASSWORD")
.setPackage("com.androidauth.androidvault")
@@ -351,9 +351,9 @@
or PendingIntent.FLAG_ONE_SHOT))
val createPasswordRequest = android.service.credentials.CreateCredentialRequest(
android.service.credentials.CallingAppInfo(
- context.applicationInfo.packageName, ArraySet<Signature>()),
+ context.applicationInfo.packageName, SigningInfo()),
TYPE_PASSWORD_CREDENTIAL,
- toBundle("beckett-bakert@gmail.com", "password123")
+ toCredentialDataBundle("beckett-bakert@gmail.com", "password123")
)
val fillInIntent = Intent().putExtra(
CredentialProviderService.EXTRA_CREATE_CREDENTIAL_REQUEST,
@@ -365,13 +365,12 @@
listOf(
CredentialCountInformation.createPasswordCountInformation(passwordCount),
CredentialCountInformation.createPublicKeyCountInformation(passkeyCount),
- ))
+ ), footerDescription)
return Entry(
key,
subkey,
CreateEntry.toSlice(createEntry),
- pendingIntent,
- fillInIntent,
+ fillInIntent
)
}
@@ -423,7 +422,7 @@
" \"residentKey\": \"required\",\n" +
" \"requireResidentKey\": true\n" +
" }}")
- val credentialData = request.data
+ val credentialData = request.credentialData
return RequestInfo.newCreateRequestInfo(
Binder(),
CreateCredentialRequest(
@@ -433,12 +432,12 @@
/*candidateQueryData=*/ Bundle(),
/*requireSystemProvider=*/ false
),
- "tribank"
+ "com.google.android.youtube"
)
}
private fun testCreatePasswordRequestInfo(): RequestInfo {
- val data = toBundle("beckett-bakert@gmail.com", "password123")
+ val data = toCredentialDataBundle("beckett-bakert@gmail.com", "password123")
return RequestInfo.newCreateRequestInfo(
Binder(),
CreateCredentialRequest(
@@ -448,7 +447,7 @@
/*candidateQueryData=*/ Bundle(),
/*requireSystemProvider=*/ false
),
- "tribank"
+ "com.google.android.youtube"
)
}
@@ -462,7 +461,7 @@
/*candidateQueryData=*/ Bundle(),
/*requireSystemProvider=*/ false
),
- "tribank"
+ "com.google.android.youtube"
)
}
@@ -477,7 +476,7 @@
TYPE_PUBLIC_KEY_CREDENTIAL, Bundle(), Bundle(), /*requireSystemProvider=*/ false)
)
.build(),
- "tribank.us"
+ "com.google.android.youtube"
)
}
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt
index cdff2d4..686415f 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt
@@ -16,7 +16,9 @@
package com.android.credentialmanager
+import android.content.Intent
import android.os.Bundle
+import android.provider.Settings
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.rememberLauncherForActivityResult
@@ -26,7 +28,7 @@
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
-import androidx.lifecycle.Observer
+import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.viewmodel.compose.viewModel
import com.android.credentialmanager.common.DialogType
import com.android.credentialmanager.common.DialogResult
@@ -37,6 +39,7 @@
import com.android.credentialmanager.getflow.GetCredentialScreen
import com.android.credentialmanager.getflow.GetCredentialViewModel
import com.android.credentialmanager.ui.theme.CredentialSelectorTheme
+import kotlinx.coroutines.launch
@ExperimentalMaterialApi
class CredentialSelectorActivity : ComponentActivity() {
@@ -64,10 +67,11 @@
when (dialogType) {
DialogType.CREATE_PASSKEY -> {
val viewModel: CreateCredentialViewModel = viewModel()
- viewModel.observeDialogResult().observe(
- this@CredentialSelectorActivity,
- onCancel
- )
+ lifecycleScope.launch {
+ viewModel.observeDialogResult().collect{ dialogResult ->
+ onCancel(dialogResult)
+ }
+ }
providerActivityResult.value?.let {
viewModel.onProviderActivityResult(it)
providerActivityResult.value = null
@@ -76,10 +80,11 @@
}
DialogType.GET_CREDENTIALS -> {
val viewModel: GetCredentialViewModel = viewModel()
- viewModel.observeDialogResult().observe(
- this@CredentialSelectorActivity,
- onCancel
- )
+ lifecycleScope.launch {
+ viewModel.observeDialogResult().collect{ dialogResult ->
+ onCancel(dialogResult)
+ }
+ }
providerActivityResult.value?.let {
viewModel.onProviderActivityResult(it)
providerActivityResult.value = null
@@ -93,8 +98,12 @@
}
}
- private val onCancel = Observer<DialogResult> {
- if (it.resultState == ResultState.COMPLETE || it.resultState == ResultState.CANCELED) {
+ private fun onCancel(dialogResut: DialogResult) {
+ if (dialogResut.resultState == ResultState
+ .COMPLETE || dialogResut.resultState == ResultState.NORMAL_CANCELED) {
+ this@CredentialSelectorActivity.finish()
+ } else if (dialogResut.resultState == ResultState.LAUNCH_SETTING_CANCELED) {
+ this@CredentialSelectorActivity.startActivity(Intent(Settings.ACTION_SYNC_SETTINGS))
this@CredentialSelectorActivity.finish()
}
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
index 93f566c..9803fc6 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
@@ -25,6 +25,7 @@
import android.credentials.ui.DisabledProviderData
import android.credentials.ui.RequestInfo
import android.graphics.drawable.Drawable
+import android.text.TextUtils
import com.android.credentialmanager.createflow.CreateOptionInfo
import com.android.credentialmanager.createflow.RemoteInfo
import com.android.credentialmanager.createflow.RequestDisplayInfo
@@ -53,12 +54,11 @@
companion object {
fun toProviderList(
- providerDataList: List<GetCredentialProviderData>,
- context: Context,
+ providerDataList: List<GetCredentialProviderData>,
+ context: Context,
): List<ProviderInfo> {
val packageManager = context.packageManager
return providerDataList.map {
- // TODO: get from the actual service info
val componentName = ComponentName.unflattenFromString(it.providerFlattenedComponentName)
var packageName = componentName?.packageName
if (componentName == null) {
@@ -67,45 +67,50 @@
}
val pkgInfo = packageManager
- .getPackageInfo(packageName!!,
- PackageManager.PackageInfoFlags.of(0))
+ .getPackageInfo(packageName!!,
+ PackageManager.PackageInfoFlags.of(0))
val providerDisplayName = pkgInfo.applicationInfo.loadLabel(packageManager).toString()
- // TODO: get the provider icon from the service
- // and decide what to do when failed to load a provider icon
+ // TODO: decide what to do when failed to load a provider icon
val providerIcon = pkgInfo.applicationInfo.loadIcon(packageManager)!!
ProviderInfo(
- id = it.providerFlattenedComponentName,
- // TODO: decide what to do when failed to load a provider icon
- icon = providerIcon,
- displayName = providerDisplayName,
- credentialEntryList = getCredentialOptionInfoList(
- it.providerFlattenedComponentName, it.credentialEntries, context),
- authenticationEntry = getAuthenticationEntry(
- it.providerFlattenedComponentName,
- providerDisplayName,
- providerIcon,
- it.authenticationEntry),
- remoteEntry = getRemoteEntry(it.providerFlattenedComponentName, it.remoteEntry),
- actionEntryList = getActionEntryList(
- it.providerFlattenedComponentName, it.actionChips, providerIcon),
+ id = it.providerFlattenedComponentName,
+ // TODO: decide what to do when failed to load a provider icon
+ icon = providerIcon,
+ displayName = providerDisplayName,
+ credentialEntryList = getCredentialOptionInfoList(
+ it.providerFlattenedComponentName, it.credentialEntries, context),
+ authenticationEntry = getAuthenticationEntry(
+ it.providerFlattenedComponentName,
+ providerDisplayName,
+ providerIcon,
+ it.authenticationEntry),
+ remoteEntry = getRemoteEntry(it.providerFlattenedComponentName, it.remoteEntry),
+ actionEntryList = getActionEntryList(
+ it.providerFlattenedComponentName, it.actionChips, providerIcon),
)
}
}
fun toRequestDisplayInfo(
- requestInfo: RequestInfo,
+ requestInfo: RequestInfo,
+ context: Context,
): com.android.credentialmanager.getflow.RequestDisplayInfo {
- return com.android.credentialmanager.getflow.RequestDisplayInfo(
- appDomainName = requestInfo.appPackageName
+ val packageName = requestInfo.appPackageName
+ val pkgInfo = context.packageManager.getPackageInfo(packageName,
+ PackageManager.PackageInfoFlags.of(0))
+ val appLabel = pkgInfo.applicationInfo.loadSafeLabel(context.packageManager, 0f,
+ TextUtils.SAFE_STRING_FLAG_FIRST_LINE or TextUtils.SAFE_STRING_FLAG_TRIM)
+ return com.android.credentialmanager.getflow.RequestDisplayInfo(
+ appName = appLabel.toString()
)
}
/* From service data structure to UI credential entry list representation. */
private fun getCredentialOptionInfoList(
- providerId: String,
- credentialEntries: List<Entry>,
- context: Context,
+ providerId: String,
+ credentialEntries: List<Entry>,
+ context: Context,
): List<CredentialEntryInfo> {
return credentialEntries.map {
// TODO: handle NPE gracefully
@@ -113,27 +118,27 @@
// Consider directly move the UI object into the class.
return@map CredentialEntryInfo(
- providerId = providerId,
- entryKey = it.key,
- entrySubkey = it.subkey,
- pendingIntent = it.pendingIntent,
- fillInIntent = it.frameworkExtrasIntent,
- credentialType = credentialEntry.type.toString(),
- credentialTypeDisplayName = credentialEntry.typeDisplayName.toString(),
- userName = credentialEntry.username.toString(),
- displayName = credentialEntry.displayName?.toString(),
- // TODO: proper fallback
- icon = credentialEntry.icon?.loadDrawable(context),
- lastUsedTimeMillis = credentialEntry.lastUsedTimeMillis,
+ providerId = providerId,
+ entryKey = it.key,
+ entrySubkey = it.subkey,
+ pendingIntent = credentialEntry.pendingIntent,
+ fillInIntent = it.frameworkExtrasIntent,
+ credentialType = credentialEntry.type.toString(),
+ credentialTypeDisplayName = credentialEntry.typeDisplayName.toString(),
+ userName = credentialEntry.username.toString(),
+ displayName = credentialEntry.displayName?.toString(),
+ // TODO: proper fallback
+ icon = credentialEntry.icon?.loadDrawable(context),
+ lastUsedTimeMillis = credentialEntry.lastUsedTimeMillis,
)
}
}
private fun getAuthenticationEntry(
- providerId: String,
- providerDisplayName: String,
- providerIcon: Drawable,
- authEntry: Entry?,
+ providerId: String,
+ providerDisplayName: String,
+ providerIcon: Drawable,
+ authEntry: Entry?,
): AuthenticationEntryInfo? {
// TODO: should also call fromSlice after getting the official jetpack code.
@@ -141,13 +146,13 @@
return null
}
return AuthenticationEntryInfo(
- providerId = providerId,
- entryKey = authEntry.key,
- entrySubkey = authEntry.subkey,
- pendingIntent = authEntry.pendingIntent,
- fillInIntent = authEntry.frameworkExtrasIntent,
- title = providerDisplayName,
- icon = providerIcon,
+ providerId = providerId,
+ entryKey = authEntry.key,
+ entrySubkey = authEntry.subkey,
+ pendingIntent = authEntry.pendingIntent,
+ fillInIntent = authEntry.frameworkExtrasIntent,
+ title = providerDisplayName,
+ icon = providerIcon,
)
}
@@ -157,33 +162,33 @@
return null
}
return RemoteEntryInfo(
- providerId = providerId,
- entryKey = remoteEntry.key,
- entrySubkey = remoteEntry.subkey,
- pendingIntent = remoteEntry.pendingIntent,
- fillInIntent = remoteEntry.frameworkExtrasIntent,
+ providerId = providerId,
+ entryKey = remoteEntry.key,
+ entrySubkey = remoteEntry.subkey,
+ pendingIntent = remoteEntry.pendingIntent,
+ fillInIntent = remoteEntry.frameworkExtrasIntent,
)
}
private fun getActionEntryList(
- providerId: String,
- actionEntries: List<Entry>,
- providerIcon: Drawable,
+ providerId: String,
+ actionEntries: List<Entry>,
+ providerIcon: Drawable,
): List<ActionEntryInfo> {
return actionEntries.map {
// TODO: handle NPE gracefully
val actionEntryUi = Action.fromSlice(it.slice)!!
return@map ActionEntryInfo(
- providerId = providerId,
- entryKey = it.key,
- entrySubkey = it.subkey,
- pendingIntent = it.pendingIntent,
- fillInIntent = it.frameworkExtrasIntent,
- title = actionEntryUi.title.toString(),
- // TODO: gracefully fail
- icon = providerIcon,
- subTitle = actionEntryUi.subTitle?.toString(),
+ providerId = providerId,
+ entryKey = it.key,
+ entrySubkey = it.subkey,
+ pendingIntent = actionEntryUi.pendingIntent,
+ fillInIntent = it.frameworkExtrasIntent,
+ title = actionEntryUi.title.toString(),
+ // TODO: gracefully fail
+ icon = providerIcon,
+ subTitle = actionEntryUi.subTitle?.toString(),
)
}
}
@@ -194,8 +199,8 @@
companion object {
fun toEnabledProviderList(
- providerDataList: List<CreateCredentialProviderData>,
- context: Context,
+ providerDataList: List<CreateCredentialProviderData>,
+ context: Context,
): List<EnabledProviderInfo> {
// TODO: get from the actual service info
val packageManager = context.packageManager
@@ -209,23 +214,23 @@
}
val pkgInfo = packageManager
- .getPackageInfo(packageName!!,
- PackageManager.PackageInfoFlags.of(0))
+ .getPackageInfo(packageName!!,
+ PackageManager.PackageInfoFlags.of(0))
EnabledProviderInfo(
- // TODO: decide what to do when failed to load a provider icon
- icon = pkgInfo.applicationInfo.loadIcon(packageManager)!!,
- name = it.providerFlattenedComponentName,
- displayName = pkgInfo.applicationInfo.loadLabel(packageManager).toString(),
- createOptions = toCreationOptionInfoList(
- it.providerFlattenedComponentName, it.saveEntries, context),
- remoteEntry = toRemoteInfo(it.providerFlattenedComponentName, it.remoteEntry),
+ // TODO: decide what to do when failed to load a provider icon
+ icon = pkgInfo.applicationInfo.loadIcon(packageManager)!!,
+ name = it.providerFlattenedComponentName,
+ displayName = pkgInfo.applicationInfo.loadLabel(packageManager).toString(),
+ createOptions = toCreationOptionInfoList(
+ it.providerFlattenedComponentName, it.saveEntries, context),
+ remoteEntry = toRemoteInfo(it.providerFlattenedComponentName, it.remoteEntry),
)
}
}
fun toDisabledProviderList(
- providerDataList: List<DisabledProviderData>?,
- context: Context,
+ providerDataList: List<DisabledProviderData>?,
+ context: Context,
): List<DisabledProviderInfo>? {
// TODO: get from the actual service info
val packageManager = context.packageManager
@@ -237,34 +242,39 @@
packageName = it.providerFlattenedComponentName
}
val pkgInfo = packageManager
- .getPackageInfo(packageName,
+ .getPackageInfo(packageName!!,
PackageManager.PackageInfoFlags.of(0))
DisabledProviderInfo(
- icon = pkgInfo.applicationInfo.loadIcon(packageManager)!!,
- name = it.providerFlattenedComponentName,
- displayName = pkgInfo.applicationInfo.loadLabel(packageManager).toString(),
+ icon = pkgInfo.applicationInfo.loadIcon(packageManager)!!,
+ name = it.providerFlattenedComponentName,
+ displayName = pkgInfo.applicationInfo.loadLabel(packageManager).toString(),
)
}
}
fun toRequestDisplayInfo(
- requestInfo: RequestInfo,
- context: Context,
+ requestInfo: RequestInfo,
+ context: Context,
): RequestDisplayInfo {
+ val packageName = requestInfo.appPackageName
+ val pkgInfo = context.packageManager.getPackageInfo(packageName,
+ PackageManager.PackageInfoFlags.of(0))
+ val appLabel = pkgInfo.applicationInfo.loadSafeLabel(context.packageManager, 0f,
+ TextUtils.SAFE_STRING_FLAG_FIRST_LINE or TextUtils.SAFE_STRING_FLAG_TRIM)
val createCredentialRequest = requestInfo.createCredentialRequest
val createCredentialRequestJetpack = createCredentialRequest?.let {
CreateCredentialRequest.createFrom(
- it
+ it.type, it.credentialData, it.candidateQueryData, it.requireSystemProvider()
)
}
when (createCredentialRequestJetpack) {
is CreatePasswordRequest -> {
return RequestDisplayInfo(
- createCredentialRequestJetpack.id,
- createCredentialRequestJetpack.password,
- createCredentialRequestJetpack.type,
- requestInfo.appPackageName,
- context.getDrawable(R.drawable.ic_password)!!
+ createCredentialRequestJetpack.id,
+ createCredentialRequestJetpack.password,
+ createCredentialRequestJetpack.type,
+ appLabel.toString(),
+ context.getDrawable(R.drawable.ic_password)!!
)
}
is CreatePublicKeyCredentialRequest -> {
@@ -278,90 +288,95 @@
displayName = user.getString("displayName")
}
return RequestDisplayInfo(
- name,
- displayName,
- createCredentialRequestJetpack.type,
- requestInfo.appPackageName,
- context.getDrawable(R.drawable.ic_passkey)!!)
+ name,
+ displayName,
+ createCredentialRequestJetpack.type,
+ appLabel.toString(),
+ context.getDrawable(R.drawable.ic_passkey)!!)
}
// TODO: correctly parsing for other sign-ins
else -> {
return RequestDisplayInfo(
- "beckett-bakert@gmail.com",
- "Elisa Beckett",
- "other-sign-ins",
- requestInfo.appPackageName,
- context.getDrawable(R.drawable.ic_other_sign_in)!!)
+ "beckett-bakert@gmail.com",
+ "Elisa Beckett",
+ "other-sign-ins",
+ appLabel.toString(),
+ context.getDrawable(R.drawable.ic_other_sign_in)!!)
}
}
}
fun toCreateCredentialUiState(
- enabledProviders: List<EnabledProviderInfo>,
- disabledProviders: List<DisabledProviderInfo>?,
- defaultProviderId: String?,
- requestDisplayInfo: RequestDisplayInfo,
- isOnPasskeyIntroStateAlready: Boolean,
- isPasskeyFirstUse: Boolean,
+ enabledProviders: List<EnabledProviderInfo>,
+ disabledProviders: List<DisabledProviderInfo>?,
+ defaultProviderId: String?,
+ requestDisplayInfo: RequestDisplayInfo,
+ isOnPasskeyIntroStateAlready: Boolean,
+ isPasskeyFirstUse: Boolean,
): CreateCredentialUiState {
- var createOptionSize = 0
var lastSeenProviderWithNonEmptyCreateOptions: EnabledProviderInfo? = null
var remoteEntry: RemoteInfo? = null
var defaultProvider: EnabledProviderInfo? = null
+ var createOptionsPairs:
+ MutableList<Pair<CreateOptionInfo, EnabledProviderInfo>> = mutableListOf()
enabledProviders.forEach {
- enabledProvider ->
+ enabledProvider ->
if (defaultProviderId != null) {
- if (enabledProvider.name == defaultProviderId) {
+ if (enabledProvider.id == defaultProviderId) {
defaultProvider = enabledProvider
}
}
if (enabledProvider.createOptions.isNotEmpty()) {
- createOptionSize += enabledProvider.createOptions.size
lastSeenProviderWithNonEmptyCreateOptions = enabledProvider
+ enabledProvider.createOptions.forEach {
+ createOptionsPairs.add(Pair(it, enabledProvider))
+ }
}
if (enabledProvider.remoteEntry != null) {
remoteEntry = enabledProvider.remoteEntry!!
}
}
return CreateCredentialUiState(
- enabledProviders = enabledProviders,
- disabledProviders = disabledProviders,
- toCreateScreenState(
- /*createOptionSize=*/createOptionSize,
+ enabledProviders = enabledProviders,
+ disabledProviders = disabledProviders,
+ toCreateScreenState(
+ /*createOptionSize=*/createOptionsPairs.size,
/*isOnPasskeyIntroStateAlready=*/isOnPasskeyIntroStateAlready,
/*requestDisplayInfo=*/requestDisplayInfo,
/*defaultProvider=*/defaultProvider, /*remoteEntry=*/remoteEntry,
/*isPasskeyFirstUse=*/isPasskeyFirstUse),
requestDisplayInfo,
+ createOptionsPairs.sortedWith(compareByDescending{ it.first.lastUsedTimeMillis }),
defaultProvider != null,
toActiveEntry(
/*defaultProvider=*/defaultProvider,
- /*createOptionSize=*/createOptionSize,
- /*lastSeenProviderWithNonEmptyCreateOptions=*/lastSeenProviderWithNonEmptyCreateOptions,
- /*remoteEntry=*/remoteEntry),
+ /*createOptionSize=*/createOptionsPairs.size,
+ /*lastSeenProviderWithNonEmptyCreateOptions=*/
+ lastSeenProviderWithNonEmptyCreateOptions,
+ /*remoteEntry=*/remoteEntry),
)
}
private fun toCreateScreenState(
- createOptionSize: Int,
- isOnPasskeyIntroStateAlready: Boolean,
- requestDisplayInfo: RequestDisplayInfo,
- defaultProvider: EnabledProviderInfo?,
- remoteEntry: RemoteInfo?,
- isPasskeyFirstUse: Boolean,
+ createOptionSize: Int,
+ isOnPasskeyIntroStateAlready: Boolean,
+ requestDisplayInfo: RequestDisplayInfo,
+ defaultProvider: EnabledProviderInfo?,
+ remoteEntry: RemoteInfo?,
+ isPasskeyFirstUse: Boolean,
): CreateScreenState {
return if (
- isPasskeyFirstUse && requestDisplayInfo
- .type == TYPE_PUBLIC_KEY_CREDENTIAL && !isOnPasskeyIntroStateAlready) {
+ isPasskeyFirstUse && requestDisplayInfo
+ .type == TYPE_PUBLIC_KEY_CREDENTIAL && !isOnPasskeyIntroStateAlready) {
CreateScreenState.PASSKEY_INTRO
} else if (
- (defaultProvider == null || defaultProvider.createOptions.isEmpty()
- ) && createOptionSize > 1) {
+ (defaultProvider == null || defaultProvider.createOptions.isEmpty()
+ ) && createOptionSize > 1) {
CreateScreenState.PROVIDER_SELECTION
} else if (
- ((defaultProvider == null || defaultProvider.createOptions.isEmpty()
- ) && createOptionSize == 1) || (
- defaultProvider != null && defaultProvider.createOptions.isNotEmpty())) {
+ ((defaultProvider == null || defaultProvider.createOptions.isEmpty()
+ ) && createOptionSize == 1) || (
+ defaultProvider != null && defaultProvider.createOptions.isNotEmpty())) {
CreateScreenState.CREATION_OPTION_SELECTION
} else if (createOptionSize == 0 && remoteEntry != null) {
CreateScreenState.EXTERNAL_ONLY_SELECTION
@@ -372,65 +387,67 @@
}
private fun toActiveEntry(
- defaultProvider: EnabledProviderInfo?,
- createOptionSize: Int,
- lastSeenProviderWithNonEmptyCreateOptions: EnabledProviderInfo?,
- remoteEntry: RemoteInfo?,
+ defaultProvider: EnabledProviderInfo?,
+ createOptionSize: Int,
+ lastSeenProviderWithNonEmptyCreateOptions: EnabledProviderInfo?,
+ remoteEntry: RemoteInfo?,
): ActiveEntry? {
return if (
- defaultProvider != null && defaultProvider.createOptions.isEmpty() && remoteEntry != null) {
+ defaultProvider != null && defaultProvider.createOptions.isEmpty() &&
+ remoteEntry != null) {
ActiveEntry(defaultProvider, remoteEntry)
} else if (
- defaultProvider != null && defaultProvider.createOptions.isNotEmpty()
+ defaultProvider != null && defaultProvider.createOptions.isNotEmpty()
) {
ActiveEntry(defaultProvider, defaultProvider.createOptions.first())
} else if (createOptionSize == 1) {
ActiveEntry(lastSeenProviderWithNonEmptyCreateOptions!!,
- lastSeenProviderWithNonEmptyCreateOptions.createOptions.first())
+ lastSeenProviderWithNonEmptyCreateOptions.createOptions.first())
} else null
}
private fun toCreationOptionInfoList(
- providerId: String,
- creationEntries: List<Entry>,
- context: Context,
+ providerId: String,
+ creationEntries: List<Entry>,
+ context: Context,
): List<CreateOptionInfo> {
return creationEntries.map {
// TODO: handle NPE gracefully
val createEntry = CreateEntry.fromSlice(it.slice)!!
return@map CreateOptionInfo(
- // TODO: remove fallbacks
- providerId = providerId,
- entryKey = it.key,
- entrySubkey = it.subkey,
- pendingIntent = it.pendingIntent,
- fillInIntent = it.frameworkExtrasIntent,
- userProviderDisplayName = createEntry.accountName.toString(),
- profileIcon = createEntry.icon?.loadDrawable(context),
- passwordCount = CredentialCountInformation.getPasswordCount(
- createEntry.credentialCountInformationList) ?: 0,
- passkeyCount = CredentialCountInformation.getPasskeyCount(
- createEntry.credentialCountInformationList) ?: 0,
- totalCredentialCount = CredentialCountInformation.getTotalCount(
- createEntry.credentialCountInformationList) ?: 0,
- lastUsedTimeMillis = createEntry.lastUsedTimeMillis ?: 0,
+ // TODO: remove fallbacks
+ providerId = providerId,
+ entryKey = it.key,
+ entrySubkey = it.subkey,
+ pendingIntent = createEntry.pendingIntent,
+ fillInIntent = it.frameworkExtrasIntent,
+ userProviderDisplayName = createEntry.accountName.toString(),
+ profileIcon = createEntry.icon?.loadDrawable(context),
+ passwordCount = CredentialCountInformation.getPasswordCount(
+ createEntry.credentialCountInformationList) ?: 0,
+ passkeyCount = CredentialCountInformation.getPasskeyCount(
+ createEntry.credentialCountInformationList) ?: 0,
+ totalCredentialCount = CredentialCountInformation.getTotalCount(
+ createEntry.credentialCountInformationList) ?: 0,
+ lastUsedTimeMillis = createEntry.lastUsedTimeMillis ?: 0,
+ footerDescription = createEntry.footerDescription?.toString()
)
}
}
private fun toRemoteInfo(
- providerId: String,
- remoteEntry: Entry?,
+ providerId: String,
+ remoteEntry: Entry?,
): RemoteInfo? {
// TODO: should also call fromSlice after getting the official jetpack code.
return if (remoteEntry != null) {
RemoteInfo(
- providerId = providerId,
- entryKey = remoteEntry.key,
- entrySubkey = remoteEntry.subkey,
- pendingIntent = remoteEntry.pendingIntent,
- fillInIntent = remoteEntry.frameworkExtrasIntent,
+ providerId = providerId,
+ entryKey = remoteEntry.key,
+ entrySubkey = remoteEntry.subkey,
+ pendingIntent = remoteEntry.pendingIntent,
+ fillInIntent = remoteEntry.frameworkExtrasIntent,
)
} else null
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/common/DialogResult.kt b/packages/CredentialManager/src/com/android/credentialmanager/common/DialogResult.kt
index b751663..743f49b 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/common/DialogResult.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/common/DialogResult.kt
@@ -18,7 +18,8 @@
enum class ResultState {
COMPLETE,
- CANCELED,
+ NORMAL_CANCELED,
+ LAUNCH_SETTING_CANCELED
}
data class DialogResult(
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt
index 3d23613..498f0a1 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt
@@ -76,9 +76,9 @@
requestDisplayInfo = uiState.requestDisplayInfo,
enabledProviderList = uiState.enabledProviders,
disabledProviderList = uiState.disabledProviders,
+ sortedCreateOptionsPairs = uiState.sortedCreateOptionsPairs,
onOptionSelected = viewModel::onEntrySelectedFromFirstUseScreen,
- onDisabledPasswordManagerSelected =
- viewModel::onDisabledPasswordManagerSelected,
+ onDisabledProvidersSelected = viewModel::onDisabledProvidersSelected,
onMoreOptionsSelected = viewModel::onMoreOptionsSelectedOnProviderSelection,
)
CreateScreenState.CREATION_OPTION_SELECTION -> CreationSelectionCard(
@@ -94,6 +94,7 @@
requestDisplayInfo = uiState.requestDisplayInfo,
enabledProviderList = uiState.enabledProviders,
disabledProviderList = uiState.disabledProviders,
+ sortedCreateOptionsPairs = uiState.sortedCreateOptionsPairs,
hasDefaultProvider = uiState.hasDefaultProvider,
isFromProviderSelection = uiState.isFromProviderSelection!!,
onBackProviderSelectionButtonSelected =
@@ -101,8 +102,7 @@
onBackCreationSelectionButtonSelected =
viewModel::onBackCreationSelectionButtonSelected,
onOptionSelected = viewModel::onEntrySelectedFromMoreOptionScreen,
- onDisabledPasswordManagerSelected =
- viewModel::onDisabledPasswordManagerSelected,
+ onDisabledProvidersSelected = viewModel::onDisabledProvidersSelected,
onRemoteEntrySelected = viewModel::onEntrySelected,
)
CreateScreenState.MORE_OPTIONS_ROW_INTRO -> MoreOptionsRowIntroCard(
@@ -246,8 +246,9 @@
requestDisplayInfo: RequestDisplayInfo,
enabledProviderList: List<EnabledProviderInfo>,
disabledProviderList: List<DisabledProviderInfo>?,
+ sortedCreateOptionsPairs: List<Pair<CreateOptionInfo, EnabledProviderInfo>>,
onOptionSelected: (ActiveEntry) -> Unit,
- onDisabledPasswordManagerSelected: () -> Unit,
+ onDisabledProvidersSelected: () -> Unit,
onMoreOptionsSelected: () -> Unit,
) {
ContainerCard() {
@@ -263,11 +264,12 @@
text = stringResource(
R.string.choose_provider_title,
when (requestDisplayInfo.type) {
- TYPE_PUBLIC_KEY_CREDENTIAL -> stringResource(R.string.create_your_passkeys)
- TYPE_PASSWORD_CREDENTIAL -> stringResource(R.string.save_your_password)
- else -> stringResource(R.string.save_your_sign_in_info)
- },
- ),
+ TYPE_PUBLIC_KEY_CREDENTIAL ->
+ stringResource(R.string.passkeys)
+ TYPE_PASSWORD_CREDENTIAL ->
+ stringResource(R.string.passwords)
+ else -> stringResource(R.string.sign_in_info)
+ }),
style = MaterialTheme.typography.titleMedium,
modifier = Modifier.padding(horizontal = 24.dp)
.align(alignment = Alignment.CenterHorizontally),
@@ -295,29 +297,28 @@
LazyColumn(
verticalArrangement = Arrangement.spacedBy(2.dp)
) {
- enabledProviderList.forEach { enabledProviderInfo ->
- enabledProviderInfo.createOptions.forEach { createOptionInfo ->
- item {
- MoreOptionsInfoRow(
- requestDisplayInfo = requestDisplayInfo,
- providerInfo = enabledProviderInfo,
- createOptionInfo = createOptionInfo,
- onOptionSelected = {
- onOptionSelected(
- ActiveEntry(
- enabledProviderInfo,
- createOptionInfo
- )
+ sortedCreateOptionsPairs.forEach { entry ->
+ item {
+ MoreOptionsInfoRow(
+ requestDisplayInfo = requestDisplayInfo,
+ providerInfo = entry.second,
+ createOptionInfo = entry.first,
+ onOptionSelected = {
+ onOptionSelected(
+ ActiveEntry(
+ entry.second,
+ entry.first
)
- })
- }
+ )
+ }
+ )
}
}
item {
MoreOptionsDisabledProvidersRow(
disabledProviders = disabledProviderList,
- onDisabledPasswordManagerSelected =
- onDisabledPasswordManagerSelected,
+ onDisabledProvidersSelected =
+ onDisabledProvidersSelected,
)
}
}
@@ -355,12 +356,13 @@
requestDisplayInfo: RequestDisplayInfo,
enabledProviderList: List<EnabledProviderInfo>,
disabledProviderList: List<DisabledProviderInfo>?,
+ sortedCreateOptionsPairs: List<Pair<CreateOptionInfo, EnabledProviderInfo>>,
hasDefaultProvider: Boolean,
isFromProviderSelection: Boolean,
onBackProviderSelectionButtonSelected: () -> Unit,
onBackCreationSelectionButtonSelected: () -> Unit,
onOptionSelected: (ActiveEntry) -> Unit,
- onDisabledPasswordManagerSelected: () -> Unit,
+ onDisabledProvidersSelected: () -> Unit,
onRemoteEntrySelected: (EntryInfo) -> Unit,
) {
ContainerCard() {
@@ -411,30 +413,30 @@
LazyColumn(
verticalArrangement = Arrangement.spacedBy(2.dp)
) {
+ // Only in the flows with default provider(not first time use) we can show the
+ // createOptions here, or they will be shown on ProviderSelectionCard
if (hasDefaultProvider) {
- enabledProviderList.forEach { enabledProviderInfo ->
- enabledProviderInfo.createOptions.forEach { createOptionInfo ->
- item {
- MoreOptionsInfoRow(
- requestDisplayInfo = requestDisplayInfo,
- providerInfo = enabledProviderInfo,
- createOptionInfo = createOptionInfo,
- onOptionSelected = {
- onOptionSelected(
- ActiveEntry(
- enabledProviderInfo,
- createOptionInfo
- )
+ sortedCreateOptionsPairs.forEach { entry ->
+ item {
+ MoreOptionsInfoRow(
+ requestDisplayInfo = requestDisplayInfo,
+ providerInfo = entry.second,
+ createOptionInfo = entry.first,
+ onOptionSelected = {
+ onOptionSelected(
+ ActiveEntry(
+ entry.second,
+ entry.first
)
- })
- }
+ )
+ })
}
}
item {
MoreOptionsDisabledProvidersRow(
disabledProviders = disabledProviderList,
- onDisabledPasswordManagerSelected =
- onDisabledPasswordManagerSelected,
+ onDisabledProvidersSelected =
+ onDisabledProvidersSelected,
)
}
}
@@ -547,15 +549,15 @@
text = when (requestDisplayInfo.type) {
TYPE_PUBLIC_KEY_CREDENTIAL -> stringResource(
R.string.choose_create_option_passkey_title,
- requestDisplayInfo.appDomainName
+ requestDisplayInfo.appName
)
TYPE_PASSWORD_CREDENTIAL -> stringResource(
R.string.choose_create_option_password_title,
- requestDisplayInfo.appDomainName
+ requestDisplayInfo.appName
)
else -> stringResource(
R.string.choose_create_option_sign_in_title,
- requestDisplayInfo.appDomainName
+ requestDisplayInfo.appName
)
},
style = MaterialTheme.typography.titleMedium,
@@ -603,27 +605,17 @@
onClick = onConfirm
)
}
- Divider(
- thickness = 1.dp,
- color = Color.LightGray,
- modifier = Modifier.padding(start = 24.dp, end = 24.dp, top = 18.dp)
- )
- if (createOptionInfo.userProviderDisplayName != null) {
+ if (createOptionInfo.footerDescription != null) {
+ Divider(
+ thickness = 1.dp,
+ color = Color.LightGray,
+ modifier = Modifier.padding(start = 24.dp, end = 24.dp, top = 18.dp)
+ )
TextSecondary(
- text = stringResource(
- R.string.choose_create_option_description,
- requestDisplayInfo.appDomainName,
- when (requestDisplayInfo.type) {
- TYPE_PUBLIC_KEY_CREDENTIAL -> stringResource(R.string.passkey)
- TYPE_PASSWORD_CREDENTIAL -> stringResource(R.string.password)
- else -> stringResource(R.string.sign_ins)
- },
- providerInfo.displayName,
- createOptionInfo.userProviderDisplayName
- ),
+ text = createOptionInfo.footerDescription,
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier.padding(
- start = 24.dp, top = 8.dp, bottom = 18.dp, end = 24.dp)
+ start = 29.dp, top = 8.dp, bottom = 18.dp, end = 28.dp)
)
}
Divider(
@@ -888,11 +880,11 @@
@Composable
fun MoreOptionsDisabledProvidersRow(
disabledProviders: List<ProviderInfo>?,
- onDisabledPasswordManagerSelected: () -> Unit,
+ onDisabledProvidersSelected: () -> Unit,
) {
if (disabledProviders != null && disabledProviders.isNotEmpty()) {
Entry(
- onClick = onDisabledPasswordManagerSelected,
+ onClick = onDisabledProvidersSelected,
icon = {
Icon(
Icons.Filled.Add,
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialViewModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialViewModel.kt
index 7b9e113..aadbbc6 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialViewModel.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialViewModel.kt
@@ -24,8 +24,6 @@
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.android.credentialmanager.CreateFlowUtils
import com.android.credentialmanager.CredentialManagerRepo
@@ -33,12 +31,16 @@
import com.android.credentialmanager.common.DialogResult
import com.android.credentialmanager.common.ProviderActivityResult
import com.android.credentialmanager.common.ResultState
+import kotlinx.coroutines.channels.BufferOverflow
+import kotlinx.coroutines.flow.MutableSharedFlow
+import kotlinx.coroutines.flow.SharedFlow
data class CreateCredentialUiState(
val enabledProviders: List<EnabledProviderInfo>,
val disabledProviders: List<DisabledProviderInfo>? = null,
val currentScreenState: CreateScreenState,
val requestDisplayInfo: RequestDisplayInfo,
+ val sortedCreateOptionsPairs: List<Pair<CreateOptionInfo, EnabledProviderInfo>>,
// Should not change with the real time update of default provider, only determine whether we're
// showing provider selection page at the beginning
val hasDefaultProvider: Boolean,
@@ -74,11 +76,11 @@
isPasskeyFirstUse))
private set
- val dialogResult: MutableLiveData<DialogResult> by lazy {
- MutableLiveData<DialogResult>()
- }
+ val dialogResult: MutableSharedFlow<DialogResult> =
+ MutableSharedFlow(replay = 0, extraBufferCapacity = 1,
+ onBufferOverflow = BufferOverflow.DROP_OLDEST)
- fun observeDialogResult(): LiveData<DialogResult> {
+ fun observeDialogResult(): SharedFlow<DialogResult> {
return dialogResult
}
@@ -89,9 +91,9 @@
UserConfigRepo.getInstance().setIsPasskeyFirstUse(false)
}
- fun getProviderInfoByName(providerName: String): EnabledProviderInfo {
+ fun getProviderInfoByName(providerId: String): EnabledProviderInfo {
return uiState.enabledProviders.single {
- it.name == providerName
+ it.id == providerId
}
}
@@ -133,24 +135,25 @@
currentScreenState = CreateScreenState.CREATION_OPTION_SELECTION,
activeEntry = activeEntry
)
- val providerId = uiState.activeEntry?.activeProvider?.name
+ val providerId = uiState.activeEntry?.activeProvider?.id
onDefaultChanged(providerId)
}
- fun onDisabledPasswordManagerSelected() {
- // TODO: Complete this function
+ fun onDisabledProvidersSelected() {
+ CredentialManagerRepo.getInstance().onCancel()
+ dialogResult.tryEmit(DialogResult(ResultState.LAUNCH_SETTING_CANCELED))
}
fun onCancel() {
CredentialManagerRepo.getInstance().onCancel()
- dialogResult.value = DialogResult(ResultState.CANCELED)
+ dialogResult.tryEmit(DialogResult(ResultState.NORMAL_CANCELED))
}
fun onChangeDefaultSelected() {
uiState = uiState.copy(
currentScreenState = CreateScreenState.CREATION_OPTION_SELECTION,
)
- val providerId = uiState.activeEntry?.activeProvider?.name
+ val providerId = uiState.activeEntry?.activeProvider?.id
onDefaultChanged(providerId)
}
@@ -189,9 +192,7 @@
entryKey,
entrySubkey
)
- dialogResult.value = DialogResult(
- ResultState.COMPLETE,
- )
+ dialogResult.tryEmit(DialogResult(ResultState.COMPLETE))
}
}
@@ -218,9 +219,7 @@
} else {
Log.w("Account Selector",
"Illegal state: confirm is pressed but activeEntry isn't set.")
- dialogResult.value = DialogResult(
- ResultState.COMPLETE,
- )
+ dialogResult.tryEmit(DialogResult(ResultState.COMPLETE))
}
}
@@ -249,9 +248,7 @@
Log.w("Account Selector",
"Illegal state: received a provider result but found no matching entry.")
}
- dialogResult.value = DialogResult(
- ResultState.COMPLETE,
- )
+ dialogResult.tryEmit(DialogResult(ResultState.COMPLETE))
}
}
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt
index 58db36c..97477a7 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateModel.kt
@@ -22,7 +22,7 @@
open class ProviderInfo(
val icon: Drawable,
- val name: String,
+ val id: String,
val displayName: String,
)
@@ -60,6 +60,7 @@
val passkeyCount: Int?,
val totalCredentialCount: Int?,
val lastUsedTimeMillis: Long?,
+ val footerDescription: String?,
) : EntryInfo(providerId, entryKey, entrySubkey, pendingIntent, fillInIntent)
class RemoteInfo(
@@ -74,7 +75,7 @@
val title: String,
val subtitle: String?,
val type: String,
- val appDomainName: String,
+ val appName: String,
val typeIcon: Drawable,
)
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt
index ac0db5a..03f39e1 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt
@@ -160,7 +160,7 @@
) {
R.string.get_dialog_title_use_sign_in_for
} else R.string.get_dialog_title_choose_sign_in_for,
- requestDisplayInfo.appDomainName
+ requestDisplayInfo.appName
),
)
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialViewModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialViewModel.kt
index 294e468..af59a0a 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialViewModel.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialViewModel.kt
@@ -24,8 +24,6 @@
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.android.credentialmanager.CredentialManagerRepo
import com.android.credentialmanager.common.DialogResult
@@ -33,6 +31,9 @@
import com.android.credentialmanager.common.ResultState
import com.android.credentialmanager.jetpack.developer.PublicKeyCredential
import com.android.internal.util.Preconditions
+import kotlinx.coroutines.channels.BufferOverflow
+import kotlinx.coroutines.flow.MutableSharedFlow
+import kotlinx.coroutines.flow.SharedFlow
data class GetCredentialUiState(
val providerInfoList: List<ProviderInfo>,
@@ -52,11 +53,11 @@
var uiState by mutableStateOf(credManRepo.getCredentialInitialUiState())
private set
- val dialogResult: MutableLiveData<DialogResult> by lazy {
- MutableLiveData<DialogResult>()
- }
+ val dialogResult: MutableSharedFlow<DialogResult> =
+ MutableSharedFlow(replay = 0, extraBufferCapacity = 1,
+ onBufferOverflow = BufferOverflow.DROP_OLDEST)
- fun observeDialogResult(): LiveData<DialogResult> {
+ fun observeDialogResult(): SharedFlow<DialogResult> {
return dialogResult
}
@@ -72,7 +73,7 @@
CredentialManagerRepo.getInstance().onOptionSelected(
entry.providerId, entry.entryKey, entry.entrySubkey,
)
- dialogResult.value = DialogResult(ResultState.COMPLETE)
+ dialogResult.tryEmit(DialogResult(ResultState.COMPLETE))
}
}
@@ -117,7 +118,7 @@
Log.w("Account Selector",
"Illegal state: received a provider result but found no matching entry.")
}
- dialogResult.value = DialogResult(ResultState.COMPLETE)
+ dialogResult.tryEmit(DialogResult(ResultState.COMPLETE))
}
}
@@ -144,7 +145,7 @@
fun onCancel() {
CredentialManagerRepo.getInstance().onCancel()
- dialogResult.value = DialogResult(ResultState.CANCELED)
+ dialogResult.tryEmit(DialogResult(ResultState.NORMAL_CANCELED))
}
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetModel.kt b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetModel.kt
index 60939b5..8ce31bd 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetModel.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetModel.kt
@@ -101,7 +101,7 @@
) : EntryInfo(providerId, entryKey, entrySubkey, pendingIntent, fillInIntent)
data class RequestDisplayInfo(
- val appDomainName: String,
+ val appName: String,
)
/**
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreateCredentialRequest.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreateCredentialRequest.kt
index 008e1b6..eaa2ad4 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreateCredentialRequest.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreateCredentialRequest.kt
@@ -18,6 +18,7 @@
import android.credentials.Credential
import android.os.Bundle
+import com.android.credentialmanager.jetpack.developer.PublicKeyCredential.Companion.BUNDLE_KEY_SUBTYPE
/**
* Base request class for registering a credential.
@@ -28,27 +29,44 @@
* otherwise
*/
open class CreateCredentialRequest(
- val type: String,
- val data: Bundle,
- val requireSystemProvider: Boolean,
+ open val type: String,
+ open val credentialData: Bundle,
+ open val candidateQueryData: Bundle,
+ open val requireSystemProvider: Boolean
) {
companion object {
@JvmStatic
- fun createFrom(from: android.credentials.CreateCredentialRequest): CreateCredentialRequest {
+ fun createFrom(
+ type: String,
+ credentialData: Bundle,
+ candidateQueryData: Bundle,
+ requireSystemProvider: Boolean
+ ): CreateCredentialRequest {
return try {
- when (from.type) {
+ when (type) {
Credential.TYPE_PASSWORD_CREDENTIAL ->
- CreatePasswordRequest.createFrom(from.credentialData)
+ CreatePasswordRequest.createFrom(credentialData)
PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL ->
- CreatePublicKeyCredentialBaseRequest.createFrom(from.credentialData)
- else ->
- CreateCredentialRequest(
- from.type, from.credentialData, from.requireSystemProvider()
- )
+ when (credentialData.getString(BUNDLE_KEY_SUBTYPE)) {
+ CreatePublicKeyCredentialRequest
+ .BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST ->
+ CreatePublicKeyCredentialRequest.createFrom(credentialData)
+ CreatePublicKeyCredentialRequestPrivileged
+ .BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST_PRIV ->
+ CreatePublicKeyCredentialRequestPrivileged
+ .createFrom(credentialData)
+ else -> throw FrameworkClassParsingException()
+ }
+ else -> throw FrameworkClassParsingException()
}
} catch (e: FrameworkClassParsingException) {
- CreateCredentialRequest(
- from.type, from.credentialData, from.requireSystemProvider()
+ // Parsing failed but don't crash the process. Instead just output a request with
+ // the raw framework values.
+ CreateCustomCredentialRequest(
+ type,
+ credentialData,
+ candidateQueryData,
+ requireSystemProvider
)
}
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreateCustomCredentialRequest.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreateCustomCredentialRequest.kt
new file mode 100644
index 0000000..50da9a1
--- /dev/null
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreateCustomCredentialRequest.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.credentialmanager.jetpack.developer
+
+import android.os.Bundle
+
+/**
+ * Base custom create request class for registering a credential.
+ *
+ * An application can construct a subtype custom request and call
+ * [CredentialManager.executeCreateCredential] to launch framework UI flows to collect consent and
+ * any other metadata needed from the user to register a new user credential.
+ *
+ * @property type the credential type determined by the credential-type-specific subclass for custom
+ * use cases
+ * @property credentialData the full credential creation request data in the [Bundle] format for
+ * custom use cases
+ * @property candidateQueryData the partial request data in the [Bundle] format that will be sent to
+ * the provider during the initial candidate query stage, which should not contain sensitive user
+ * credential information
+ * @property requireSystemProvider true if must only be fulfilled by a system provider and false
+ * otherwise
+ * @throws IllegalArgumentException If [type] is empty
+ * @throws NullPointerException If [type] or [credentialData] are null
+ */
+open class CreateCustomCredentialRequest(
+ final override val type: String,
+ final override val credentialData: Bundle,
+ final override val candidateQueryData: Bundle,
+ @get:JvmName("requireSystemProvider")
+ final override val requireSystemProvider: Boolean
+) : CreateCredentialRequest(type, credentialData, candidateQueryData, requireSystemProvider) {
+ init {
+ require(type.isNotEmpty()) { "type should not be empty" }
+ }
+}
\ No newline at end of file
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePasswordRequest.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePasswordRequest.kt
index f0da9f9..bf0aa8a 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePasswordRequest.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePasswordRequest.kt
@@ -32,9 +32,11 @@
val id: String,
val password: String,
) : CreateCredentialRequest(
- Credential.TYPE_PASSWORD_CREDENTIAL,
- toBundle(id, password),
- false,
+ type = Credential.TYPE_PASSWORD_CREDENTIAL,
+ credentialData = toCredentialDataBundle(id, password),
+ // No credential data should be sent during the query phase.
+ candidateQueryData = Bundle(),
+ requireSystemProvider = false,
) {
init {
@@ -46,7 +48,7 @@
const val BUNDLE_KEY_PASSWORD = "androidx.credentials.BUNDLE_KEY_PASSWORD"
@JvmStatic
- internal fun toBundle(id: String, password: String): Bundle {
+ internal fun toCredentialDataBundle(id: String, password: String): Bundle {
val bundle = Bundle()
bundle.putString(BUNDLE_KEY_ID, id)
bundle.putString(BUNDLE_KEY_PASSWORD, password)
@@ -54,7 +56,14 @@
}
@JvmStatic
- fun createFrom(data: Bundle): CreatePasswordRequest {
+ internal fun toCandidateDataBundle(id: String): Bundle {
+ val bundle = Bundle()
+ bundle.putString(BUNDLE_KEY_ID, id)
+ return bundle
+ }
+
+ @JvmStatic
+ internal fun createFrom(data: Bundle): CreatePasswordRequest {
try {
val id = data.getString(BUNDLE_KEY_ID)
val password = data.getString(BUNDLE_KEY_PASSWORD)
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialBaseRequest.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialBaseRequest.kt
deleted file mode 100644
index 37a4f76..0000000
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialBaseRequest.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.credentialmanager.jetpack.developer
-
-import android.os.Bundle
-
-/**
- * Base request class for registering a public key credential.
- *
- * @property requestJson The request in JSON format
- * @throws NullPointerException If [requestJson] is null. This is handled by the Kotlin runtime
- * @throws IllegalArgumentException If [requestJson] is empty
- *
- * @hide
- */
-abstract class CreatePublicKeyCredentialBaseRequest constructor(
- val requestJson: String,
- type: String,
- data: Bundle,
- requireSystemProvider: Boolean,
-) : CreateCredentialRequest(type, data, requireSystemProvider) {
-
- init {
- require(requestJson.isNotEmpty()) { "request json must not be empty" }
- }
-
- companion object {
- const val BUNDLE_KEY_REQUEST_JSON = "androidx.credentials.BUNDLE_KEY_REQUEST_JSON"
- const val BUNDLE_KEY_SUBTYPE = "androidx.credentials.BUNDLE_KEY_SUBTYPE"
-
- @JvmStatic
- fun createFrom(data: Bundle): CreatePublicKeyCredentialBaseRequest {
- return when (data.getString(BUNDLE_KEY_SUBTYPE)) {
- CreatePublicKeyCredentialRequest
- .BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST ->
- CreatePublicKeyCredentialRequest.createFrom(data)
- CreatePublicKeyCredentialRequestPrivileged
- .BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST_PRIVILEGED ->
- CreatePublicKeyCredentialRequestPrivileged.createFrom(data)
- else -> throw FrameworkClassParsingException()
- }
- }
- }
-}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest.kt
index 2eda90b..f3d402a 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequest.kt
@@ -17,50 +17,81 @@
package com.android.credentialmanager.jetpack.developer
import android.os.Bundle
+import com.android.credentialmanager.jetpack.developer.PublicKeyCredential.Companion.BUNDLE_KEY_SUBTYPE
/**
- * A request to register a passkey from the user's public key credential provider.
- *
- * @property requestJson the request in JSON format
- * @property allowHybrid defines whether hybrid credentials are allowed to fulfill this request,
- * true by default
- * @throws NullPointerException If [requestJson] or [allowHybrid] is null. This is handled by the
- * Kotlin runtime
- * @throws IllegalArgumentException If [requestJson] is empty
- *
- * @hide
- */
+* A request to register a passkey from the user's public key credential provider.
+*
+* @property requestJson the privileged request in JSON format in the standard webauthn web json
+* shown [here](https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson).
+* @property preferImmediatelyAvailableCredentials true if you prefer the operation to return
+* immediately when there is no available passkey registration offering instead of falling back to
+* discovering remote options, and false (default) otherwise
+* @throws NullPointerException If [requestJson] is null
+* @throws IllegalArgumentException If [requestJson] is empty
+*/
class CreatePublicKeyCredentialRequest @JvmOverloads constructor(
- requestJson: String,
- @get:JvmName("allowHybrid")
- val allowHybrid: Boolean = true
-) : CreatePublicKeyCredentialBaseRequest(
- requestJson,
- PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL,
- toBundle(requestJson, allowHybrid),
- false,
+ val requestJson: String,
+ @get:JvmName("preferImmediatelyAvailableCredentials")
+ val preferImmediatelyAvailableCredentials: Boolean = false
+) : CreateCredentialRequest(
+ type = PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL,
+ credentialData = toCredentialDataBundle(requestJson, preferImmediatelyAvailableCredentials),
+ // The whole request data should be passed during the query phase.
+ candidateQueryData = toCredentialDataBundle(requestJson, preferImmediatelyAvailableCredentials),
+ requireSystemProvider = false,
) {
+
+ init {
+ require(requestJson.isNotEmpty()) { "requestJson must not be empty" }
+ }
+
+ /** @hide */
companion object {
- const val BUNDLE_KEY_ALLOW_HYBRID = "androidx.credentials.BUNDLE_KEY_ALLOW_HYBRID"
- const val BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST =
- "androidx.credentials.BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST"
+ const val BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS =
+ "androidx.credentials.BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS"
+ internal const val BUNDLE_KEY_REQUEST_JSON = "androidx.credentials.BUNDLE_KEY_REQUEST_JSON"
+ internal const val BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST =
+ "androidx.credentials.BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST"
@JvmStatic
- internal fun toBundle(requestJson: String, allowHybrid: Boolean): Bundle {
+ internal fun toCredentialDataBundle(
+ requestJson: String,
+ preferImmediatelyAvailableCredentials: Boolean
+ ): Bundle {
val bundle = Bundle()
bundle.putString(BUNDLE_KEY_SUBTYPE,
- BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST)
+ BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST)
bundle.putString(BUNDLE_KEY_REQUEST_JSON, requestJson)
- bundle.putBoolean(BUNDLE_KEY_ALLOW_HYBRID, allowHybrid)
+ bundle.putBoolean(BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS,
+ preferImmediatelyAvailableCredentials)
return bundle
}
@JvmStatic
- fun createFrom(data: Bundle): CreatePublicKeyCredentialRequest {
+ internal fun toCandidateDataBundle(
+ requestJson: String,
+ preferImmediatelyAvailableCredentials: Boolean
+ ): Bundle {
+ val bundle = Bundle()
+ bundle.putString(BUNDLE_KEY_SUBTYPE,
+ BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST)
+ bundle.putString(BUNDLE_KEY_REQUEST_JSON, requestJson)
+ bundle.putBoolean(BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS,
+ preferImmediatelyAvailableCredentials)
+ return bundle
+ }
+
+ @Suppress("deprecation") // bundle.get() used for boolean value to prevent default
+ // boolean value from being returned.
+ @JvmStatic
+ internal fun createFrom(data: Bundle): CreatePublicKeyCredentialRequest {
try {
val requestJson = data.getString(BUNDLE_KEY_REQUEST_JSON)
- val allowHybrid = data.get(BUNDLE_KEY_ALLOW_HYBRID)
- return CreatePublicKeyCredentialRequest(requestJson!!, (allowHybrid!!) as Boolean)
+ val preferImmediatelyAvailableCredentials =
+ data.get(BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS)
+ return CreatePublicKeyCredentialRequest(requestJson!!,
+ (preferImmediatelyAvailableCredentials!!) as Boolean)
} catch (e: Exception) {
throw FrameworkClassParsingException()
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequestPrivileged.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequestPrivileged.kt
index 36324f8..85ab2d2 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequestPrivileged.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/CreatePublicKeyCredentialRequestPrivileged.kt
@@ -17,45 +17,62 @@
package com.android.credentialmanager.jetpack.developer
import android.os.Bundle
+import com.android.credentialmanager.jetpack.developer.PublicKeyCredential.Companion.BUNDLE_KEY_SUBTYPE
/**
* A privileged request to register a passkey from the user’s public key credential provider, where
* the caller can modify the rp. Only callers with privileged permission, e.g. user’s default
- * brower, caBLE, can use this.
+ * brower, caBLE, can use this. These permissions will be introduced in an upcoming release.
+ * TODO("Add specific permission info/annotation")
*
- * @property requestJson the privileged request in JSON format
- * @property allowHybrid defines whether hybrid credentials are allowed to fulfill this request,
- * true by default
- * @property rp the expected true RP ID which will override the one in the [requestJson]
- * @property clientDataHash a hash that is used to verify the [rp] Identity
- * @throws NullPointerException If any of [allowHybrid], [requestJson], [rp], or [clientDataHash] is
- * null. This is handled by the Kotlin runtime
- * @throws IllegalArgumentException If any of [requestJson], [rp], or [clientDataHash] is empty
- *
- * @hide
+ * @property requestJson the privileged request in JSON format in the standard webauthn web json
+ * shown [here](https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson).
+ * @property preferImmediatelyAvailableCredentials true if you prefer the operation to return
+ * immediately when there is no available passkey registration offering instead of falling back to
+ * discovering remote options, and false (default) otherwise
+ * @property relyingParty the expected true RP ID which will override the one in the [requestJson],
+ * where rp is defined [here](https://w3c.github.io/webauthn/#rp-id)
+ * @property clientDataHash a hash that is used to verify the [relyingParty] Identity
+ * @throws NullPointerException If any of [requestJson], [relyingParty], or [clientDataHash] is
+ * null
+ * @throws IllegalArgumentException If any of [requestJson], [relyingParty], or [clientDataHash] is
+ * empty
*/
class CreatePublicKeyCredentialRequestPrivileged @JvmOverloads constructor(
- requestJson: String,
- val rp: String,
- val clientDataHash: String,
- @get:JvmName("allowHybrid")
- val allowHybrid: Boolean = true
-) : CreatePublicKeyCredentialBaseRequest(
+ val requestJson: String,
+ val relyingParty: String,
+ val clientDataHash: String,
+ @get:JvmName("preferImmediatelyAvailableCredentials")
+ val preferImmediatelyAvailableCredentials: Boolean = false
+) : CreateCredentialRequest(
+ type = PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL,
+ credentialData = toCredentialDataBundle(
requestJson,
- PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL,
- toBundle(requestJson, rp, clientDataHash, allowHybrid),
- false,
+ relyingParty,
+ clientDataHash,
+ preferImmediatelyAvailableCredentials
+ ),
+ // The whole request data should be passed during the query phase.
+ candidateQueryData = toCredentialDataBundle(
+ requestJson, relyingParty, clientDataHash, preferImmediatelyAvailableCredentials
+ ),
+ requireSystemProvider = false,
) {
init {
- require(rp.isNotEmpty()) { "rp must not be empty" }
+ require(requestJson.isNotEmpty()) { "requestJson must not be empty" }
+ require(relyingParty.isNotEmpty()) { "rp must not be empty" }
require(clientDataHash.isNotEmpty()) { "clientDataHash must not be empty" }
}
/** A builder for [CreatePublicKeyCredentialRequestPrivileged]. */
- class Builder(var requestJson: String, var rp: String, var clientDataHash: String) {
+ class Builder(
+ private var requestJson: String,
+ private var relyingParty: String,
+ private var clientDataHash: String
+ ) {
- private var allowHybrid: Boolean = true
+ private var preferImmediatelyAvailableCredentials: Boolean = false
/**
* Sets the privileged request in JSON format.
@@ -66,23 +83,30 @@
}
/**
- * Sets whether hybrid credentials are allowed to fulfill this request, true by default.
+ * Sets to true if you prefer the operation to return immediately when there is no available
+ * passkey registration offering instead of falling back to discovering remote options, and
+ * false otherwise.
+ *
+ * The default value is false.
*/
- fun setAllowHybrid(allowHybrid: Boolean): Builder {
- this.allowHybrid = allowHybrid
+ @Suppress("MissingGetterMatchingBuilder")
+ fun setPreferImmediatelyAvailableCredentials(
+ preferImmediatelyAvailableCredentials: Boolean
+ ): Builder {
+ this.preferImmediatelyAvailableCredentials = preferImmediatelyAvailableCredentials
return this
}
/**
* Sets the expected true RP ID which will override the one in the [requestJson].
*/
- fun setRp(rp: String): Builder {
- this.rp = rp
+ fun setRelyingParty(relyingParty: String): Builder {
+ this.relyingParty = relyingParty
return this
}
/**
- * Sets a hash that is used to verify the [rp] Identity.
+ * Sets a hash that is used to verify the [relyingParty] Identity.
*/
fun setClientDataHash(clientDataHash: String): Builder {
this.clientDataHash = clientDataHash
@@ -91,49 +115,65 @@
/** Builds a [CreatePublicKeyCredentialRequestPrivileged]. */
fun build(): CreatePublicKeyCredentialRequestPrivileged {
- return CreatePublicKeyCredentialRequestPrivileged(this.requestJson,
- this.rp, this.clientDataHash, this.allowHybrid)
+ return CreatePublicKeyCredentialRequestPrivileged(
+ this.requestJson,
+ this.relyingParty, this.clientDataHash, this.preferImmediatelyAvailableCredentials
+ )
}
}
+ /** @hide */
companion object {
- const val BUNDLE_KEY_RP = "androidx.credentials.BUNDLE_KEY_RP"
- const val BUNDLE_KEY_CLIENT_DATA_HASH =
- "androidx.credentials.BUNDLE_KEY_CLIENT_DATA_HASH"
- const val BUNDLE_KEY_ALLOW_HYBRID = "androidx.credentials.BUNDLE_KEY_ALLOW_HYBRID"
- const val BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST_PRIVILEGED =
- "androidx.credentials.BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST_" +
- "PRIVILEGED"
+ internal const val BUNDLE_KEY_RELYING_PARTY =
+ "androidx.credentials.BUNDLE_KEY_RELYING_PARTY"
+ internal const val BUNDLE_KEY_CLIENT_DATA_HASH =
+ "androidx.credentials.BUNDLE_KEY_CLIENT_DATA_HASH"
+ internal const val BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS =
+ "androidx.credentials.BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS"
+
+ internal const val BUNDLE_KEY_REQUEST_JSON = "androidx.credentials.BUNDLE_KEY_REQUEST_JSON"
+
+ internal const val BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST_PRIV =
+ "androidx.credentials.BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST_" +
+ "PRIVILEGED"
@JvmStatic
- internal fun toBundle(
- requestJson: String,
- rp: String,
- clientDataHash: String,
- allowHybrid: Boolean
+ internal fun toCredentialDataBundle(
+ requestJson: String,
+ relyingParty: String,
+ clientDataHash: String,
+ preferImmediatelyAvailableCredentials: Boolean
): Bundle {
val bundle = Bundle()
- bundle.putString(BUNDLE_KEY_SUBTYPE,
- BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST_PRIVILEGED)
+ bundle.putString(
+ PublicKeyCredential.BUNDLE_KEY_SUBTYPE,
+ BUNDLE_VALUE_SUBTYPE_CREATE_PUBLIC_KEY_CREDENTIAL_REQUEST_PRIV
+ )
bundle.putString(BUNDLE_KEY_REQUEST_JSON, requestJson)
- bundle.putString(BUNDLE_KEY_RP, rp)
+ bundle.putString(BUNDLE_KEY_RELYING_PARTY, relyingParty)
bundle.putString(BUNDLE_KEY_CLIENT_DATA_HASH, clientDataHash)
- bundle.putBoolean(BUNDLE_KEY_ALLOW_HYBRID, allowHybrid)
+ bundle.putBoolean(
+ BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS,
+ preferImmediatelyAvailableCredentials
+ )
return bundle
}
+ @Suppress("deprecation") // bundle.get() used for boolean value to prevent default
+ // boolean value from being returned.
@JvmStatic
- fun createFrom(data: Bundle): CreatePublicKeyCredentialRequestPrivileged {
+ internal fun createFrom(data: Bundle): CreatePublicKeyCredentialRequestPrivileged {
try {
val requestJson = data.getString(BUNDLE_KEY_REQUEST_JSON)
- val rp = data.getString(BUNDLE_KEY_RP)
+ val rp = data.getString(BUNDLE_KEY_RELYING_PARTY)
val clientDataHash = data.getString(BUNDLE_KEY_CLIENT_DATA_HASH)
- val allowHybrid = data.get(BUNDLE_KEY_ALLOW_HYBRID)
+ val preferImmediatelyAvailableCredentials =
+ data.get(BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS)
return CreatePublicKeyCredentialRequestPrivileged(
- requestJson!!,
- rp!!,
- clientDataHash!!,
- (allowHybrid!!) as Boolean,
+ requestJson!!,
+ rp!!,
+ clientDataHash!!,
+ (preferImmediatelyAvailableCredentials!!) as Boolean,
)
} catch (e: Exception) {
throw FrameworkClassParsingException()
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCredentialOption.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCredentialOption.kt
index ef48a77..fc7b7de 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCredentialOption.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCredentialOption.kt
@@ -28,30 +28,40 @@
* otherwise
*/
open class GetCredentialOption(
- val type: String,
- val data: Bundle,
- val requireSystemProvider: Boolean,
+ open val type: String,
+ open val requestData: Bundle,
+ open val candidateQueryData: Bundle,
+ open val requireSystemProvider: Boolean,
) {
companion object {
@JvmStatic
- fun createFrom(from: android.credentials.GetCredentialOption): GetCredentialOption {
+ fun createFrom(
+ type: String,
+ requestData: Bundle,
+ candidateQueryData: Bundle,
+ requireSystemProvider: Boolean
+ ): GetCredentialOption {
return try {
- when (from.type) {
+ when (type) {
Credential.TYPE_PASSWORD_CREDENTIAL ->
- GetPasswordOption.createFrom(from.credentialRetrievalData)
+ GetPasswordOption.createFrom(requestData)
PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL ->
- GetPublicKeyCredentialBaseOption.createFrom(from.credentialRetrievalData)
- else ->
- GetCredentialOption(
- from.type, from.credentialRetrievalData, from.requireSystemProvider()
- )
+ when (requestData.getString(PublicKeyCredential.BUNDLE_KEY_SUBTYPE)) {
+ GetPublicKeyCredentialOption
+ .BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION ->
+ GetPublicKeyCredentialOption.createFrom(requestData)
+ GetPublicKeyCredentialOptionPrivileged
+ .BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION_PRIVILEGED ->
+ GetPublicKeyCredentialOptionPrivileged.createFrom(requestData)
+ else -> throw FrameworkClassParsingException()
+ }
+ else -> throw FrameworkClassParsingException()
}
} catch (e: FrameworkClassParsingException) {
- GetCredentialOption(
- from.type,
- from.credentialRetrievalData,
- from.requireSystemProvider()
- )
+ // Parsing failed but don't crash the process. Instead just output a request with
+ // the raw framework values.
+ GetCustomCredentialOption(
+ type, requestData, candidateQueryData, requireSystemProvider)
}
}
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCredentialRequest.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCredentialRequest.kt
index 7f9256e..18d5089 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCredentialRequest.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCredentialRequest.kt
@@ -24,7 +24,7 @@
* @throws IllegalArgumentException If [getCredentialOptions] is empty
*/
class GetCredentialRequest constructor(
- val getCredentialOptions: List<GetCredentialOption>,
+ val getCredentialOptions: List<GetCredentialOption>,
) {
init {
@@ -61,7 +61,14 @@
@JvmStatic
fun createFrom(from: android.credentials.GetCredentialRequest): GetCredentialRequest {
return GetCredentialRequest(
- from.getCredentialOptions.map {GetCredentialOption.createFrom(it)}
+ from.getCredentialOptions.map {
+ GetCredentialOption.createFrom(
+ it.type,
+ it.credentialRetrievalData,
+ it.candidateQueryData,
+ it.requireSystemProvider()
+ )
+ }
)
}
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCustomCredentialOption.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCustomCredentialOption.kt
new file mode 100644
index 0000000..803885c
--- /dev/null
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetCustomCredentialOption.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.credentialmanager.jetpack.developer
+
+import android.os.Bundle
+
+/**
+ * Allows extending custom versions of GetCredentialOptions for unique use cases.
+ *
+ * @property type the credential type determined by the credential-type-specific subclass
+ * generated for custom use cases
+ * @property requestData the request data in the [Bundle] format, generated for custom use cases
+ * @property candidateQueryData the partial request data in the [Bundle] format that will be sent to
+ * the provider during the initial candidate query stage, which should not contain sensitive user
+ * information
+ * @property requireSystemProvider true if must only be fulfilled by a system provider and false
+ * otherwise
+ * @throws IllegalArgumentException If [type] is empty
+ * @throws NullPointerException If [requestData] or [type] is null
+ */
+open class GetCustomCredentialOption(
+ final override val type: String,
+ final override val requestData: Bundle,
+ final override val candidateQueryData: Bundle,
+ @get:JvmName("requireSystemProvider")
+ final override val requireSystemProvider: Boolean
+) : GetCredentialOption(
+ type,
+ requestData,
+ candidateQueryData,
+ requireSystemProvider
+) {
+ init {
+ require(type.isNotEmpty()) { "type should not be empty" }
+ }
+}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPasswordOption.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPasswordOption.kt
index 2facad1..2b9cfa3 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPasswordOption.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPasswordOption.kt
@@ -23,6 +23,7 @@
class GetPasswordOption : GetCredentialOption(
Credential.TYPE_PASSWORD_CREDENTIAL,
Bundle(),
+ Bundle(),
false,
) {
companion object {
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialBaseOption.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialBaseOption.kt
deleted file mode 100644
index 9b51b30..0000000
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialBaseOption.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.credentialmanager.jetpack.developer
-
-import android.os.Bundle
-
-/**
- * Base request class for getting a registered public key credential.
- *
- * @property requestJson the request in JSON format
- * @throws NullPointerException If [requestJson] is null - auto handled by the
- * Kotlin runtime
- * @throws IllegalArgumentException If [requestJson] is empty
- *
- * @hide
- */
-abstract class GetPublicKeyCredentialBaseOption constructor(
- val requestJson: String,
- type: String,
- data: Bundle,
- requireSystemProvider: Boolean,
-) : GetCredentialOption(type, data, requireSystemProvider) {
-
- init {
- require(requestJson.isNotEmpty()) { "request json must not be empty" }
- }
-
- companion object {
- const val BUNDLE_KEY_REQUEST_JSON = "androidx.credentials.BUNDLE_KEY_REQUEST_JSON"
- const val BUNDLE_KEY_SUBTYPE = "androidx.credentials.BUNDLE_KEY_SUBTYPE"
-
- @JvmStatic
- fun createFrom(data: Bundle): GetPublicKeyCredentialBaseOption {
- return when (data.getString(BUNDLE_KEY_SUBTYPE)) {
- GetPublicKeyCredentialOption
- .BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION ->
- GetPublicKeyCredentialOption.createFrom(data)
- GetPublicKeyCredentialOptionPrivileged
- .BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION_PRIVILEGED ->
- GetPublicKeyCredentialOptionPrivileged.createFrom(data)
- else -> throw FrameworkClassParsingException()
- }
- }
- }
-}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialOption.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialOption.kt
index 6f13c17..2f9b249 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialOption.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialOption.kt
@@ -21,44 +21,62 @@
/**
* A request to get passkeys from the user's public key credential provider.
*
- * @property requestJson the request in JSON format
- * @property allowHybrid defines whether hybrid credentials are allowed to fulfill this request,
- * true by default
- * @throws NullPointerException If [requestJson] or [allowHybrid] is null. It is handled by the
- * Kotlin runtime
+ * @property requestJson the privileged request in JSON format in the standard webauthn web json
+ * shown [here](https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson).
+ * @property preferImmediatelyAvailableCredentials true if you prefer the operation to return
+ * immediately when there is no available credential instead of falling back to discovering remote
+ * credentials, and false (default) otherwise
+ * @throws NullPointerException If [requestJson] is null
* @throws IllegalArgumentException If [requestJson] is empty
- *
- * @hide
*/
class GetPublicKeyCredentialOption @JvmOverloads constructor(
- requestJson: String,
- @get:JvmName("allowHybrid")
- val allowHybrid: Boolean = true,
-) : GetPublicKeyCredentialBaseOption(
- requestJson,
- PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL,
- toBundle(requestJson, allowHybrid),
- false
+ val requestJson: String,
+ @get:JvmName("preferImmediatelyAvailableCredentials")
+ val preferImmediatelyAvailableCredentials: Boolean = false,
+) : GetCredentialOption(
+ type = PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL,
+ requestData = toRequestDataBundle(requestJson, preferImmediatelyAvailableCredentials),
+ candidateQueryData = toRequestDataBundle(requestJson, preferImmediatelyAvailableCredentials),
+ requireSystemProvider = false
) {
+ init {
+ require(requestJson.isNotEmpty()) { "requestJson must not be empty" }
+ }
+
+ /** @hide */
companion object {
- const val BUNDLE_KEY_ALLOW_HYBRID = "androidx.credentials.BUNDLE_KEY_ALLOW_HYBRID"
- const val BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION =
- "androidx.credentials.BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION"
+ internal const val BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS =
+ "androidx.credentials.BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS"
+ internal const val BUNDLE_KEY_REQUEST_JSON = "androidx.credentials.BUNDLE_KEY_REQUEST_JSON"
+ internal const val BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION =
+ "androidx.credentials.BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION"
@JvmStatic
- internal fun toBundle(requestJson: String, allowHybrid: Boolean): Bundle {
+ internal fun toRequestDataBundle(
+ requestJson: String,
+ preferImmediatelyAvailableCredentials: Boolean
+ ): Bundle {
val bundle = Bundle()
+ bundle.putString(
+ PublicKeyCredential.BUNDLE_KEY_SUBTYPE,
+ BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION
+ )
bundle.putString(BUNDLE_KEY_REQUEST_JSON, requestJson)
- bundle.putBoolean(BUNDLE_KEY_ALLOW_HYBRID, allowHybrid)
+ bundle.putBoolean(BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS,
+ preferImmediatelyAvailableCredentials)
return bundle
}
+ @Suppress("deprecation") // bundle.get() used for boolean value to prevent default
+ // boolean value from being returned.
@JvmStatic
- fun createFrom(data: Bundle): GetPublicKeyCredentialOption {
+ internal fun createFrom(data: Bundle): GetPublicKeyCredentialOption {
try {
val requestJson = data.getString(BUNDLE_KEY_REQUEST_JSON)
- val allowHybrid = data.get(BUNDLE_KEY_ALLOW_HYBRID)
- return GetPublicKeyCredentialOption(requestJson!!, (allowHybrid!!) as Boolean)
+ val preferImmediatelyAvailableCredentials =
+ data.get(BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS)
+ return GetPublicKeyCredentialOption(requestJson!!,
+ (preferImmediatelyAvailableCredentials!!) as Boolean)
} catch (e: Exception) {
throw FrameworkClassParsingException()
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialOptionPrivileged.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialOptionPrivileged.kt
index 79c62a1..6f4782a 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialOptionPrivileged.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/GetPublicKeyCredentialOptionPrivileged.kt
@@ -21,41 +21,59 @@
/**
* A privileged request to get passkeys from the user's public key credential provider. The caller
* can modify the RP. Only callers with privileged permission (e.g. user's public browser or caBLE)
- * can use this.
+ * can use this. These permissions will be introduced in an upcoming release.
+ * TODO("Add specific permission info/annotation")
*
- * @property requestJson the privileged request in JSON format
- * @property allowHybrid defines whether hybrid credentials are allowed to fulfill this request,
- * true by default
- * @property rp the expected true RP ID which will override the one in the [requestJson]
- * @property clientDataHash a hash that is used to verify the [rp] Identity
- * @throws NullPointerException If any of [allowHybrid], [requestJson], [rp], or [clientDataHash]
- * is null. This is handled by the Kotlin runtime
- * @throws IllegalArgumentException If any of [requestJson], [rp], or [clientDataHash] is empty
- *
- * @hide
+ * @property requestJson the privileged request in JSON format in the standard webauthn web json
+ * shown [here](https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson).
+ * @property preferImmediatelyAvailableCredentials true if you prefer the operation to return
+ * immediately when there is no available credential instead of falling back to discovering remote
+ * credentials, and false (default) otherwise
+ * @property relyingParty the expected true RP ID which will override the one in the [requestJson],
+ * where relyingParty is defined [here](https://w3c.github.io/webauthn/#rp-id) in more detail
+ * @property clientDataHash a hash that is used to verify the [relyingParty] Identity
+ * @throws NullPointerException If any of [requestJson], [relyingParty], or [clientDataHash]
+ * is null
+ * @throws IllegalArgumentException If any of [requestJson], [relyingParty], or [clientDataHash] is
+ * empty
*/
class GetPublicKeyCredentialOptionPrivileged @JvmOverloads constructor(
- requestJson: String,
- val rp: String,
- val clientDataHash: String,
- @get:JvmName("allowHybrid")
- val allowHybrid: Boolean = true
-) : GetPublicKeyCredentialBaseOption(
+ val requestJson: String,
+ val relyingParty: String,
+ val clientDataHash: String,
+ @get:JvmName("preferImmediatelyAvailableCredentials")
+ val preferImmediatelyAvailableCredentials: Boolean = false
+) : GetCredentialOption(
+ type = PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL,
+ requestData = toBundle(
requestJson,
- PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL,
- toBundle(requestJson, rp, clientDataHash, allowHybrid),
- false,
+ relyingParty,
+ clientDataHash,
+ preferImmediatelyAvailableCredentials
+ ),
+ candidateQueryData = toBundle(
+ requestJson,
+ relyingParty,
+ clientDataHash,
+ preferImmediatelyAvailableCredentials
+ ),
+ requireSystemProvider = false,
) {
init {
- require(rp.isNotEmpty()) { "rp must not be empty" }
+ require(requestJson.isNotEmpty()) { "requestJson must not be empty" }
+ require(relyingParty.isNotEmpty()) { "rp must not be empty" }
require(clientDataHash.isNotEmpty()) { "clientDataHash must not be empty" }
}
/** A builder for [GetPublicKeyCredentialOptionPrivileged]. */
- class Builder(var requestJson: String, var rp: String, var clientDataHash: String) {
+ class Builder(
+ private var requestJson: String,
+ private var relyingParty: String,
+ private var clientDataHash: String
+ ) {
- private var allowHybrid: Boolean = true
+ private var preferImmediatelyAvailableCredentials: Boolean = false
/**
* Sets the privileged request in JSON format.
@@ -66,23 +84,30 @@
}
/**
- * Sets whether hybrid credentials are allowed to fulfill this request, true by default.
+ * Sets to true if you prefer the operation to return immediately when there is no available
+ * credential instead of falling back to discovering remote credentials, and false
+ * otherwise.
+ *
+ * The default value is false.
*/
- fun setAllowHybrid(allowHybrid: Boolean): Builder {
- this.allowHybrid = allowHybrid
+ @Suppress("MissingGetterMatchingBuilder")
+ fun setPreferImmediatelyAvailableCredentials(
+ preferImmediatelyAvailableCredentials: Boolean
+ ): Builder {
+ this.preferImmediatelyAvailableCredentials = preferImmediatelyAvailableCredentials
return this
}
/**
* Sets the expected true RP ID which will override the one in the [requestJson].
*/
- fun setRp(rp: String): Builder {
- this.rp = rp
+ fun setRelyingParty(relyingParty: String): Builder {
+ this.relyingParty = relyingParty
return this
}
/**
- * Sets a hash that is used to verify the [rp] Identity.
+ * Sets a hash that is used to verify the [relyingParty] Identity.
*/
fun setClientDataHash(clientDataHash: String): Builder {
this.clientDataHash = clientDataHash
@@ -91,47 +116,63 @@
/** Builds a [GetPublicKeyCredentialOptionPrivileged]. */
fun build(): GetPublicKeyCredentialOptionPrivileged {
- return GetPublicKeyCredentialOptionPrivileged(this.requestJson,
- this.rp, this.clientDataHash, this.allowHybrid)
+ return GetPublicKeyCredentialOptionPrivileged(
+ this.requestJson,
+ this.relyingParty, this.clientDataHash, this.preferImmediatelyAvailableCredentials
+ )
}
}
+ /** @hide */
companion object {
- const val BUNDLE_KEY_RP = "androidx.credentials.BUNDLE_KEY_RP"
- const val BUNDLE_KEY_CLIENT_DATA_HASH =
- "androidx.credentials.BUNDLE_KEY_CLIENT_DATA_HASH"
- const val BUNDLE_KEY_ALLOW_HYBRID = "androidx.credentials.BUNDLE_KEY_ALLOW_HYBRID"
- const val BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION_PRIVILEGED =
- "androidx.credentials.BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION" +
- "_PRIVILEGED"
+ internal const val BUNDLE_KEY_RELYING_PARTY =
+ "androidx.credentials.BUNDLE_KEY_RELYING_PARTY"
+ internal const val BUNDLE_KEY_CLIENT_DATA_HASH =
+ "androidx.credentials.BUNDLE_KEY_CLIENT_DATA_HASH"
+ internal const val BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS =
+ "androidx.credentials.BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS"
+ internal const val BUNDLE_KEY_REQUEST_JSON = "androidx.credentials.BUNDLE_KEY_REQUEST_JSON"
+ internal const val BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION_PRIVILEGED =
+ "androidx.credentials.BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION" +
+ "_PRIVILEGED"
@JvmStatic
internal fun toBundle(
- requestJson: String,
- rp: String,
- clientDataHash: String,
- allowHybrid: Boolean
+ requestJson: String,
+ relyingParty: String,
+ clientDataHash: String,
+ preferImmediatelyAvailableCredentials: Boolean
): Bundle {
val bundle = Bundle()
+ bundle.putString(
+ PublicKeyCredential.BUNDLE_KEY_SUBTYPE,
+ BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION_PRIVILEGED
+ )
bundle.putString(BUNDLE_KEY_REQUEST_JSON, requestJson)
- bundle.putString(BUNDLE_KEY_RP, rp)
+ bundle.putString(BUNDLE_KEY_RELYING_PARTY, relyingParty)
bundle.putString(BUNDLE_KEY_CLIENT_DATA_HASH, clientDataHash)
- bundle.putBoolean(BUNDLE_KEY_ALLOW_HYBRID, allowHybrid)
+ bundle.putBoolean(
+ BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS,
+ preferImmediatelyAvailableCredentials
+ )
return bundle
}
+ @Suppress("deprecation") // bundle.get() used for boolean value to prevent default
+ // boolean value from being returned.
@JvmStatic
- fun createFrom(data: Bundle): GetPublicKeyCredentialOptionPrivileged {
+ internal fun createFrom(data: Bundle): GetPublicKeyCredentialOptionPrivileged {
try {
val requestJson = data.getString(BUNDLE_KEY_REQUEST_JSON)
- val rp = data.getString(BUNDLE_KEY_RP)
+ val rp = data.getString(BUNDLE_KEY_RELYING_PARTY)
val clientDataHash = data.getString(BUNDLE_KEY_CLIENT_DATA_HASH)
- val allowHybrid = data.get(BUNDLE_KEY_ALLOW_HYBRID)
+ val preferImmediatelyAvailableCredentials =
+ data.get(BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS)
return GetPublicKeyCredentialOptionPrivileged(
- requestJson!!,
- rp!!,
- clientDataHash!!,
- (allowHybrid!!) as Boolean,
+ requestJson!!,
+ rp!!,
+ clientDataHash!!,
+ (preferImmediatelyAvailableCredentials!!) as Boolean,
)
} catch (e: Exception) {
throw FrameworkClassParsingException()
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/PublicKeyCredential.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/PublicKeyCredential.kt
index b45a63b..6a81167 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/PublicKeyCredential.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/developer/PublicKeyCredential.kt
@@ -45,6 +45,8 @@
/** The type value for public key credential related operations. */
const val TYPE_PUBLIC_KEY_CREDENTIAL: String =
"androidx.credentials.TYPE_PUBLIC_KEY_CREDENTIAL"
+ /** The Bundle key value for the public key credential subtype (privileged or regular). */
+ internal const val BUNDLE_KEY_SUBTYPE = "androidx.credentials.BUNDLE_KEY_SUBTYPE"
const val BUNDLE_KEY_AUTHENTICATION_RESPONSE_JSON =
"androidx.credentials.BUNDLE_KEY_AUTHENTICATION_RESPONSE_JSON"
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/provider/CreateEntry.kt b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/provider/CreateEntry.kt
index bed02f8..0ec91d6 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/jetpack/provider/CreateEntry.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/jetpack/provider/CreateEntry.kt
@@ -36,7 +36,8 @@
val pendingIntent: PendingIntent?,
val icon: Icon?,
val lastUsedTimeMillis: Long,
- val credentialCountInformationList: List<CredentialCountInformation>
+ val credentialCountInformationList: List<CredentialCountInformation>,
+ val footerDescription: CharSequence?,
) {
init {
@@ -61,6 +62,7 @@
mutableListOf()
private var icon: Icon? = null
private var lastUsedTimeMillis: Long = 0
+ private var footerDescription: CharSequence? = null
/** Adds a [CredentialCountInformation] denoting a given credential
* type and the count of credentials that the provider has stored for that
@@ -99,6 +101,12 @@
return this
}
+ /** Sets the footer description of this */
+ fun setFooterDescription(footerDescription: CharSequence): Builder {
+ this.footerDescription = footerDescription
+ return this
+ }
+
/**
* Builds an instance of [CreateEntry]
*
@@ -106,7 +114,7 @@
*/
fun build(): CreateEntry {
return CreateEntry(accountName, pendingIntent, icon, lastUsedTimeMillis,
- credentialCountInformationList)
+ credentialCountInformationList, footerDescription)
}
}
@@ -122,6 +130,8 @@
"androidx.credentials.provider.createEntry.SLICE_HINT_LAST_USED_TIME_MILLIS"
internal const val SLICE_HINT_PENDING_INTENT =
"androidx.credentials.provider.createEntry.SLICE_HINT_PENDING_INTENT"
+ internal const val SLICE_HINT_FOOTER_DESCRIPTION =
+ "androidx.credentials.provider.createEntry.SLICE_HINT_FOOTER_DESCRIPTION"
@JvmStatic
fun toSlice(createEntry: CreateEntry): Slice {
@@ -150,6 +160,10 @@
.build(),
/*subType=*/null)
}
+ if (createEntry.footerDescription != null) {
+ sliceBuilder.addText(createEntry.footerDescription, /*subType=*/null,
+ listOf(SLICE_HINT_FOOTER_DESCRIPTION))
+ }
return sliceBuilder.build()
}
@@ -167,6 +181,7 @@
var pendingIntent: PendingIntent? = null
var credentialCountInfo: List<CredentialCountInformation> = listOf()
var lastUsedTimeMillis: Long = 0
+ var footerDescription: CharSequence? = null
slice.items.forEach {
if (it.hasHint(SLICE_HINT_ACCOUNT_NAME)) {
@@ -179,12 +194,14 @@
credentialCountInfo = convertBundleToCredentialCountInfo(it.bundle)
} else if (it.hasHint(SLICE_HINT_LAST_USED_TIME_MILLIS)) {
lastUsedTimeMillis = it.long
+ } else if (it.hasHint(SLICE_HINT_FOOTER_DESCRIPTION)) {
+ footerDescription = it.text
}
}
return try {
CreateEntry(accountName, pendingIntent, icon,
- lastUsedTimeMillis, credentialCountInfo)
+ lastUsedTimeMillis, credentialCountInfo, footerDescription)
} catch (e: Exception) {
Log.i(TAG, "fromSlice failed with: " + e.message)
null
diff --git a/packages/SettingsLib/BannerMessagePreference/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/BannerMessagePreference/res/values-b+sr+Latn/strings.xml
index 68a2d5b..ca16c3d 100644
--- a/packages/SettingsLib/BannerMessagePreference/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/BannerMessagePreference/res/values-b+sr+Latn/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="accessibility_banner_message_dismiss" msgid="5272928723898304168">"Одбаците"</string>
+ <string name="accessibility_banner_message_dismiss" msgid="5272928723898304168">"Odbacite"</string>
</resources>
diff --git a/packages/SettingsLib/FooterPreference/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/FooterPreference/res/values-b+sr+Latn/strings.xml
index 9a73269..993ec9a 100644
--- a/packages/SettingsLib/FooterPreference/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/FooterPreference/res/values-b+sr+Latn/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="settingslib_learn_more_text" msgid="7385478101223578464">"Сазнајте више"</string>
+ <string name="settingslib_learn_more_text" msgid="7385478101223578464">"Saznajte više"</string>
</resources>
diff --git a/packages/SettingsLib/IllustrationPreference/Android.bp b/packages/SettingsLib/IllustrationPreference/Android.bp
index 5904589..e80eb66 100644
--- a/packages/SettingsLib/IllustrationPreference/Android.bp
+++ b/packages/SettingsLib/IllustrationPreference/Android.bp
@@ -20,4 +20,9 @@
sdk_version: "system_current",
min_sdk_version: "28",
+
+ apex_available: [
+ "//apex_available:platform",
+ "com.android.permission",
+ ],
}
diff --git a/packages/SettingsLib/RestrictedLockUtils/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/RestrictedLockUtils/res/values-b+sr+Latn/strings.xml
index 9d006a7..e09afbf 100644
--- a/packages/SettingsLib/RestrictedLockUtils/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/res/values-b+sr+Latn/strings.xml
@@ -17,6 +17,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="enabled_by_admin" msgid="6630472777476410137">"Администратор је омогућио"</string>
- <string name="disabled_by_admin" msgid="4023569940620832713">"Администратор је онемогућио"</string>
+ <string name="enabled_by_admin" msgid="6630472777476410137">"Administrator je omogućio"</string>
+ <string name="disabled_by_admin" msgid="4023569940620832713">"Administrator je onemogućio"</string>
</resources>
diff --git a/packages/SettingsLib/RestrictedLockUtils/src/com/android/settingslib/RestrictedLockUtils.java b/packages/SettingsLib/RestrictedLockUtils/src/com/android/settingslib/RestrictedLockUtils.java
index 80f02b4..96a11ee 100644
--- a/packages/SettingsLib/RestrictedLockUtils/src/com/android/settingslib/RestrictedLockUtils.java
+++ b/packages/SettingsLib/RestrictedLockUtils/src/com/android/settingslib/RestrictedLockUtils.java
@@ -37,7 +37,7 @@
*/
public class RestrictedLockUtils {
/**
- * Get EnforcedAdmin from DevicePolicyManager
+ * Gets EnforcedAdmin from DevicePolicyManager
*/
@RequiresApi(Build.VERSION_CODES.M)
public static EnforcedAdmin getProfileOrDeviceOwner(Context context, UserHandle user) {
@@ -45,7 +45,7 @@
}
/**
- * Get EnforcedAdmin from DevicePolicyManager
+ * Gets EnforcedAdmin from DevicePolicyManager
*/
@RequiresApi(Build.VERSION_CODES.M)
public static EnforcedAdmin getProfileOrDeviceOwner(
@@ -81,7 +81,7 @@
}
/**
- * Send the intent to trigger the {@code android.settings.ShowAdminSupportDetailsDialog}.
+ * Sends the intent to trigger the {@code android.settings.ShowAdminSupportDetailsDialog}.
*/
@RequiresApi(Build.VERSION_CODES.M)
public static void sendShowAdminSupportDetailsIntent(Context context, EnforcedAdmin admin) {
@@ -97,6 +97,9 @@
context.startActivityAsUser(intent, UserHandle.of(targetUserId));
}
+ /**
+ * Gets the intent to trigger the {@code android.settings.ShowAdminSupportDetailsDialog}.
+ */
public static Intent getShowAdminSupportDetailsIntent(Context context, EnforcedAdmin admin) {
final Intent intent = new Intent(Settings.ACTION_SHOW_ADMIN_SUPPORT_DETAILS);
if (admin != null) {
@@ -109,7 +112,27 @@
}
/**
- * Check if current user is profile or not
+ * Shows restricted setting dialog.
+ */
+ @RequiresApi(Build.VERSION_CODES.TIRAMISU)
+ public static void sendShowRestrictedSettingDialogIntent(Context context,
+ String packageName, int uid) {
+ final Intent intent = getShowRestrictedSettingsIntent(packageName, uid);
+ context.startActivity(intent);
+ }
+
+ /**
+ * Gets restricted settings dialog intent.
+ */
+ private static Intent getShowRestrictedSettingsIntent(String packageName, int uid) {
+ final Intent intent = new Intent(Settings.ACTION_SHOW_RESTRICTED_SETTING_DIALOG);
+ intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
+ intent.putExtra(Intent.EXTRA_UID, uid);
+ return intent;
+ }
+
+ /**
+ * Checks if current user is profile or not
*/
@RequiresApi(Build.VERSION_CODES.M)
public static boolean isCurrentUserOrProfile(Context context, int userId) {
@@ -117,6 +140,9 @@
return um.getUserProfiles().contains(UserHandle.of(userId));
}
+ /**
+ * A admin for the restriction enforced.
+ */
public static class EnforcedAdmin {
@Nullable
public ComponentName component = null;
@@ -129,12 +155,17 @@
@Nullable
public UserHandle user = null;
- // We use this to represent the case where a policy is enforced by multiple admins.
- public final static EnforcedAdmin MULTIPLE_ENFORCED_ADMIN = new EnforcedAdmin();
+ /**
+ * We use this to represent the case where a policy is enforced by multiple admins.
+ */
+ public static final EnforcedAdmin MULTIPLE_ENFORCED_ADMIN = new EnforcedAdmin();
+ /**
+ * The restriction enforced by admin with restriction.
+ */
public static EnforcedAdmin createDefaultEnforcedAdminWithRestriction(
String enforcedRestriction) {
- EnforcedAdmin enforcedAdmin = new EnforcedAdmin();
+ final EnforcedAdmin enforcedAdmin = new EnforcedAdmin();
enforcedAdmin.enforcedRestriction = enforcedRestriction;
return enforcedAdmin;
}
@@ -159,8 +190,7 @@
this.user = other.user;
}
- public EnforcedAdmin() {
- }
+ public EnforcedAdmin() {}
/**
* Combines two {@link EnforcedAdmin} into one: if one of them is null, then just return
@@ -189,9 +219,9 @@
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
EnforcedAdmin that = (EnforcedAdmin) o;
- return Objects.equals(user, that.user) &&
- Objects.equals(component, that.component) &&
- Objects.equals(enforcedRestriction, that.enforcedRestriction);
+ return Objects.equals(user, that.user)
+ && Objects.equals(component, that.component)
+ && Objects.equals(enforcedRestriction, that.enforcedRestriction);
}
@Override
@@ -201,11 +231,11 @@
@Override
public String toString() {
- return "EnforcedAdmin{" +
- "component=" + component +
- ", enforcedRestriction='" + enforcedRestriction +
- ", user=" + user +
- '}';
+ return "EnforcedAdmin{"
+ + "component=" + component
+ + ", enforcedRestriction='" + enforcedRestriction
+ + ", user=" + user
+ + '}';
}
}
}
diff --git a/packages/SettingsLib/SearchWidget/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/SearchWidget/res/values-b+sr+Latn/strings.xml
index 81a7baf..112b2ea 100644
--- a/packages/SettingsLib/SearchWidget/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-b+sr+Latn/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="search_menu" msgid="1914043873178389845">"Претражите подешавања"</string>
+ <string name="search_menu" msgid="1914043873178389845">"Pretražite podešavanja"</string>
</resources>
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/ProgressBar.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/ProgressBar.kt
index 5d8502d..0f5e935 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/ProgressBar.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/ProgressBar.kt
@@ -30,9 +30,11 @@
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.CornerRadius
+import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.drawscope.DrawScope
+import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp
/**
@@ -62,13 +64,15 @@
}
private fun DrawScope.drawLinearBar(
- endFraction: Float,
+ progress: Float,
color: Color,
roundedCorner: Boolean
) {
- val width = endFraction * size.width
+ val isLtr = layoutDirection == LayoutDirection.Ltr
+ val width = progress * size.width
drawRoundRect(
color = color,
+ topLeft = if (isLtr) Offset.Zero else Offset((1 - progress) * size.width, 0f),
size = Size(width, size.height),
cornerRadius = if (roundedCorner) CornerRadius(
size.height / 2,
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt
index 6cd6e95..171903f 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt
@@ -17,6 +17,7 @@
package com.android.settingslib.spaprivileged.model.app
import android.app.AppOpsManager.MODE_ALLOWED
+import android.app.AppOpsManager.MODE_ERRORED
import android.app.AppOpsManager.Mode
import android.content.Context
import android.content.pm.ApplicationInfo
@@ -39,7 +40,7 @@
context: Context,
private val app: ApplicationInfo,
private val op: Int,
- private val modeForNotAllowed: Int,
+ private val modeForNotAllowed: Int = MODE_ERRORED,
private val setModeByUid: Boolean = false,
) : IAppOpsController {
private val appOpsManager = context.appOpsManager
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
index 53af25b..338b16d 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
@@ -66,7 +66,7 @@
* If true, it uses getAppOpPermissionPackages() to fetch bits to decide whether the permission
* is requested.
*/
- open val permissionHasAppopFlag: Boolean = true
+ open val permissionHasAppOpFlag: Boolean = true
open val modeForNotAllowed: Int = MODE_ERRORED
@@ -105,7 +105,7 @@
}
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
- if (permissionHasAppopFlag) {
+ if (permissionHasAppOpFlag) {
userIdFlow
.map { userId -> packageManagers.getAppOpPermissionPackages(userId, permission) }
.combine(appListFlow) { packageNames, appList ->
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt
index 53e52d0..fd2ceb7 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt
@@ -19,6 +19,7 @@
import android.app.AppOpsManager
import android.app.AppOpsManager.MODE_ALLOWED
import android.app.AppOpsManager.MODE_ERRORED
+import android.app.AppOpsManager.MODE_IGNORED
import android.content.Context
import android.content.pm.ApplicationInfo
import androidx.test.core.app.ApplicationProvider
@@ -56,7 +57,6 @@
context = context,
app = APP,
op = OP,
- modeForNotAllowed = MODE_ERRORED
)
controller.setAllowed(true)
@@ -71,7 +71,6 @@
context = context,
app = APP,
op = OP,
- modeForNotAllowed = MODE_ERRORED
)
controller.setAllowed(false)
@@ -80,14 +79,28 @@
}
@Test
+ fun setAllowed_setToFalseWithModeForNotAllowed() {
+ val controller =
+ AppOpsController(
+ context = context,
+ app = APP,
+ op = OP,
+ modeForNotAllowed = MODE_IGNORED,
+ )
+
+ controller.setAllowed(false)
+
+ verify(appOpsManager).setMode(OP, APP.uid, APP.packageName, MODE_IGNORED)
+ }
+
+ @Test
fun setAllowed_setToTrueByUid() {
val controller =
AppOpsController(
context = context,
app = APP,
op = OP,
- modeForNotAllowed = MODE_ERRORED,
- setModeByUid = true
+ setModeByUid = true,
)
controller.setAllowed(true)
@@ -102,8 +115,7 @@
context = context,
app = APP,
op = OP,
- modeForNotAllowed = MODE_ERRORED,
- setModeByUid = true
+ setModeByUid = true,
)
controller.setAllowed(false)
@@ -120,7 +132,6 @@
context = context,
app = APP,
op = OP,
- modeForNotAllowed = MODE_ERRORED
)
val mode = controller.getMode()
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
index da765ba..af59a55 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
@@ -314,7 +314,6 @@
override val appOp = AppOpsManager.OP_MANAGE_MEDIA
override val permission = PERMISSION
- override val permissionHasAppopFlag = true
override var broaderPermission: String? = null
override var setModeByUid = false
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 63dbc7c..a2c59ff 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -564,10 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"新しいユーザーを追加しますか?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"追加ユーザーを作成して、このデバイスを他のユーザーと共有できます。各ユーザーは各自のスペースを所有して、アプリや壁紙などのカスタマイズを行うことができます。Wi-Fi など、すべてのユーザーに影響するデバイス設定を変更することもできます。\n\n新しく追加したユーザーは各自でスペースをセットアップする必要があります。\n\nすべてのユーザーがアプリを更新でき、その影響は他のユーザーにも及びます。ユーザー補助機能の設定とサービスは新しいユーザーに適用されないことがあります。"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"新しく追加したユーザーは各自でスペースをセットアップする必要があります。\n\nすべてのユーザーがアプリを更新でき、その影響は他のユーザーにも及びます。"</string>
- <!-- no translation found for user_grant_admin_title (5565796912475193314) -->
- <skip />
- <!-- no translation found for user_grant_admin_message (7925257971286380976) -->
- <skip />
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"このユーザーに管理者権限を付与しますか?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"管理者は、他のユーザーの管理、デバイスの設定の変更、デバイスの出荷時設定へのリセットを行えます。"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ユーザーを今すぐセットアップ"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ユーザーがデバイスを使って各自のスペースをセットアップできるようにします"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"プロファイルを今すぐセットアップしますか?"</string>
@@ -599,10 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"新しいゲスト セッションが開始し、現在のセッションのすべてのアプリとデータが削除されます"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ゲストモードを終了しますか?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"現在のゲスト セッションからすべてのアプリとデータが削除されます"</string>
- <!-- no translation found for grant_admin (4273077214151417783) -->
- <skip />
- <!-- no translation found for not_grant_admin (6985027675930546850) -->
- <skip />
+ <string name="grant_admin" msgid="4273077214151417783">"このユーザーに管理者権限を付与します"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ユーザーに管理者権限を付与しません"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"終了"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ゲストアクティビティの保存"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"現在のセッションのアクティビティの保存や、すべてのアプリとデータの削除を行えます"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index c9b1f33..81c2a00 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -564,7 +564,7 @@
<string name="user_add_user_title" msgid="5457079143694924885">"要新增使用者嗎?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"你可以建立其他使用者,藉此與他人共用這個裝置。每位使用者都有自己的專屬空間,並可使用應用程式、桌布等項目自訂個人空間。此外,使用者也可以調整會影響所有人的裝置設定,例如 Wi‑Fi 設定。\n\n新增的使用者需要自行設定個人空間。\n\n任何使用者都可以為所有其他使用者更新應用程式。無障礙設定和服務可能無法轉移到新的使用者。"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"新增的使用者需要自行設定個人空間。\n\n任何使用者皆可為其他所有使用者更新應用程式。"</string>
- <string name="user_grant_admin_title" msgid="5565796912475193314">"要授予這位使用者管理員權限嗎?"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"要將管理員權限授予此使用者嗎?"</string>
<string name="user_grant_admin_message" msgid="7925257971286380976">"取得管理員權限後,就能管理其他使用者、修改裝置設定,以及將裝置恢復原廠設定。"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"立即設定使用者?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"請確保對方可以使用裝置並設定自己的空間"</string>
@@ -597,8 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"如果重設,系統會開始新的訪客工作階段,並刪除目前工作階段中的所有應用程式和資料"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"要結束訪客模式嗎?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"如果結束,系統會刪除目前訪客工作階段中的所有應用程式和資料"</string>
- <string name="grant_admin" msgid="4273077214151417783">"授予這位使用者管理員權限"</string>
- <string name="not_grant_admin" msgid="6985027675930546850">"不授予這位使用者管理員權限"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"將管理員權限授予這位使用者"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"不要將管理員權限授予使用者"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"結束"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"要儲存訪客活動嗎?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"你可以儲存目前工作階段中的活動,也可以刪除所有應用程式和資料"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
index 5610ac4..78b7810 100644
--- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
+++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java
@@ -27,7 +27,6 @@
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
-import android.content.Intent;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
@@ -37,7 +36,6 @@
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
-import android.provider.Settings;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
@@ -754,26 +752,6 @@
}
/**
- * Show restricted setting dialog.
- */
- @RequiresApi(Build.VERSION_CODES.TIRAMISU)
- public static void sendShowRestrictedSettingDialogIntent(Context context,
- String packageName, int uid) {
- final Intent intent = getShowRestrictedSettingsIntent(packageName, uid);
- context.startActivity(intent);
- }
-
- /**
- * Get restricted settings dialog intent.
- */
- private static Intent getShowRestrictedSettingsIntent(String packageName, int uid) {
- final Intent intent = new Intent(Settings.ACTION_SHOW_RESTRICTED_SETTING_DIALOG);
- intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
- intent.putExtra(Intent.EXTRA_UID, uid);
- return intent;
- }
-
- /**
* Static {@link LockPatternUtils} and {@link DevicePolicyManager} wrapper for testing purposes.
* {@link LockPatternUtils} is an internal API not supported by robolectric.
* {@link DevicePolicyManager} has a {@code getProfileParent} not yet suppored by robolectric.
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index c2c1b55..63bb2fe 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -35,7 +35,6 @@
import android.os.ParcelUuid;
import android.os.SystemClock;
import android.text.TextUtils;
-import android.util.EventLog;
import android.util.Log;
import android.util.LruCache;
import android.util.Pair;
@@ -1028,14 +1027,7 @@
if (BluetoothUuid.containsAnyUuid(uuids, PbapServerProfile.PBAB_CLIENT_UUIDS)) {
// The pairing dialog now warns of phone-book access for paired devices.
// No separate prompt is displayed after pairing.
- if (mDevice.getPhonebookAccessPermission() == BluetoothDevice.ACCESS_UNKNOWN) {
- if (BluetoothUtils.isDeviceClassMatched(mDevice,
- BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE)
- || BluetoothUtils.isDeviceClassMatched(mDevice,
- BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET)) {
- EventLog.writeEvent(0x534e4554, "138529441", -1, "");
- }
- }
+ mDevice.getPhonebookAccessPermission();
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
index 3903404..cd6609e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
@@ -39,7 +39,7 @@
BluetoothMediaDevice(Context context, CachedBluetoothDevice device,
MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) {
- super(context, routerManager, info, packageName);
+ super(context, routerManager, info, packageName, null);
mCachedDevice = device;
mAudioManager = context.getSystemService(AudioManager.class);
initDeviceRecord();
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
index 1b5ce8fe..6fb5555 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
@@ -25,6 +25,7 @@
import android.graphics.drawable.Drawable;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
+import android.media.RouteListingPreference;
import androidx.annotation.VisibleForTesting;
@@ -40,11 +41,16 @@
private static final String TAG = "InfoMediaDevice";
InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
- String packageName) {
- super(context, routerManager, info, packageName);
+ String packageName, RouteListingPreference.Item item) {
+ super(context, routerManager, info, packageName, item);
initDeviceRecord();
}
+ InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
+ String packageName) {
+ this(context, routerManager, info, packageName, null);
+ }
+
@Override
public String getName() {
return mRouteInfo.getName().toString();
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
index c7bfe12..2bdbb16 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
@@ -58,7 +58,9 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
@@ -82,6 +84,8 @@
private MediaDevice mCurrentConnectedDevice;
private LocalBluetoothManager mBluetoothManager;
+ private final Map<String, RouteListingPreference.Item> mPreferenceItemMap =
+ new ConcurrentHashMap<>();
public InfoMediaManager(Context context, String packageName, Notification notification,
LocalBluetoothManager localBluetoothManager) {
@@ -248,7 +252,7 @@
if (info != null) {
for (MediaRoute2Info route : mRouterManager.getSelectableRoutes(info)) {
deviceList.add(new InfoMediaDevice(mContext, mRouterManager,
- route, mPackageName));
+ route, mPackageName, mPreferenceItemMap.get(route.getId())));
}
return deviceList;
}
@@ -275,7 +279,7 @@
if (info != null) {
for (MediaRoute2Info route : mRouterManager.getDeselectableRoutes(info)) {
deviceList.add(new InfoMediaDevice(mContext, mRouterManager,
- route, mPackageName));
+ route, mPackageName, mPreferenceItemMap.get(route.getId())));
Log.d(TAG, route.getName() + " is deselectable for " + mPackageName);
}
return deviceList;
@@ -302,7 +306,7 @@
if (info != null) {
for (MediaRoute2Info route : mRouterManager.getSelectedRoutes(info)) {
deviceList.add(new InfoMediaDevice(mContext, mRouterManager,
- route, mPackageName));
+ route, mPackageName, mPreferenceItemMap.get(route.getId())));
}
return deviceList;
}
@@ -510,7 +514,7 @@
case TYPE_GROUP:
//TODO(b/148765806): use correct device type once api is ready.
mediaDevice = new InfoMediaDevice(mContext, mRouterManager, route,
- mPackageName);
+ mPackageName, mPreferenceItemMap.get(route.getId()));
if (!TextUtils.isEmpty(mPackageName)
&& getRoutingSessionInfo().getSelectedRoutes().contains(route.getId())) {
mediaDevice.setState(STATE_SELECTED);
@@ -601,6 +605,16 @@
public void onSessionUpdated(RoutingSessionInfo sessionInfo) {
refreshDevices();
}
+
+ @Override
+ public void onRouteListingPreferenceUpdated(
+ String packageName,
+ RouteListingPreference routeListingPreference) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ Api34Impl.onRouteListingPreferenceUpdated(packageName, routeListingPreference,
+ mPreferenceItemMap);
+ }
+ }
}
@RequiresApi(34)
@@ -666,5 +680,18 @@
return routeListingPreference != null
&& !routeListingPreference.getUseSystemOrdering();
}
+
+ @DoNotInline
+ static void onRouteListingPreferenceUpdated(
+ String packageName,
+ RouteListingPreference routeListingPreference,
+ Map<String, RouteListingPreference.Item> preferenceItemMap) {
+ preferenceItemMap.clear();
+ if (routeListingPreference != null) {
+ routeListingPreference.getItems().forEach((item) -> {
+ preferenceItemMap.put(item.getRouteId(), item);
+ });
+ }
+ }
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
index 5c97f37..aec1767 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
@@ -92,8 +92,6 @@
@VisibleForTesting
List<MediaDevice> mDisconnectedMediaDevices = new CopyOnWriteArrayList<>();
@VisibleForTesting
- MediaDevice mPhoneDevice;
- @VisibleForTesting
MediaDevice mCurrentConnectedDevice;
@VisibleForTesting
DeviceAttributeChangeCallback mDeviceAttributeChangeCallback =
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
index 3ba51d2..b73e7a3 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
@@ -30,6 +30,7 @@
import static android.media.MediaRoute2Info.TYPE_USB_HEADSET;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;
+import static android.media.RouteListingPreference.Item.FLAG_SUGGESTED_ROUTE;
import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED;
@@ -39,10 +40,14 @@
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.NearbyDevice;
+import android.media.RouteListingPreference;
+import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
+import androidx.annotation.DoNotInline;
import androidx.annotation.IntDef;
+import androidx.annotation.RequiresApi;
import androidx.annotation.VisibleForTesting;
import java.lang.annotation.Retention;
@@ -87,14 +92,16 @@
protected final Context mContext;
protected final MediaRoute2Info mRouteInfo;
protected final MediaRouter2Manager mRouterManager;
+ protected final RouteListingPreference.Item mItem;
protected final String mPackageName;
MediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
- String packageName) {
+ String packageName, RouteListingPreference.Item item) {
mContext = context;
mRouteInfo = info;
mRouterManager = routerManager;
mPackageName = packageName;
+ mItem = item;
setType(info);
}
@@ -180,10 +187,21 @@
/**
* Get unique ID that represent MediaDevice
+ *
* @return unique id of MediaDevice
*/
public abstract String getId();
+ /**
+ * Checks if device is suggested device from application
+ *
+ * @return true if device is suggested device
+ */
+ public boolean isSuggestedDevice() {
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE
+ && Api34Impl.isSuggestedDevice(mItem);
+ }
+
void setConnectedRecord() {
mConnectedRecord++;
ConnectionRecordManager.getInstance().setConnectionRecord(mContext, getId(),
@@ -466,4 +484,12 @@
final MediaDevice otherDevice = (MediaDevice) obj;
return otherDevice.getId().equals(getId());
}
+
+ @RequiresApi(34)
+ private static class Api34Impl {
+ @DoNotInline
+ static boolean isSuggestedDevice(RouteListingPreference.Item item) {
+ return item != null && item.getFlags() == FLAG_SUGGESTED_ROUTE;
+ }
+ }
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
index 921c245..de16d4a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
@@ -51,7 +51,7 @@
PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
String packageName) {
- super(context, routerManager, info, packageName);
+ super(context, routerManager, info, packageName, null);
mDeviceIconUtil = new DeviceIconUtil();
initDeviceRecord();
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
index 9260013..2c8aa26 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
@@ -257,14 +257,17 @@
Build.VERSION_CODES.UPSIDE_DOWN_CAKE);
final List<RouteListingPreference.Item> preferenceItemList = new ArrayList<>();
RouteListingPreference.Item item1 = new RouteListingPreference.Item.Builder(
- TEST_ID_4).build();
+ TEST_ID_4).setFlags(RouteListingPreference.Item.FLAG_SUGGESTED_ROUTE).build();
RouteListingPreference.Item item2 = new RouteListingPreference.Item.Builder(
TEST_ID_3).build();
preferenceItemList.add(item1);
preferenceItemList.add(item2);
+
+ RouteListingPreference routeListingPreference =
+ new RouteListingPreference.Builder().setItems(
+ preferenceItemList).setUseSystemOrdering(false).build();
when(mRouterManager.getRouteListingPreference(TEST_PACKAGE_NAME))
- .thenReturn(new RouteListingPreference.Builder().setItems(
- preferenceItemList).setUseSystemOrdering(false).build());
+ .thenReturn(routeListingPreference);
final List<MediaRoute2Info> selectedRoutes = new ArrayList<>();
final MediaRoute2Info info = mock(MediaRoute2Info.class);
@@ -284,11 +287,13 @@
setTransferableRoutesList();
mInfoMediaManager.mRouterManager = mRouterManager;
-
+ mInfoMediaManager.mMediaRouterCallback.onRouteListingPreferenceUpdated(TEST_PACKAGE_NAME,
+ routeListingPreference);
mInfoMediaManager.mMediaRouterCallback.onRoutesUpdated();
assertThat(mInfoMediaManager.mMediaDevices.get(0).getId()).isEqualTo(TEST_ID);
assertThat(mInfoMediaManager.mMediaDevices.get(1).getId()).isEqualTo(TEST_ID_4);
+ assertThat(mInfoMediaManager.mMediaDevices.get(1).isSuggestedDevice()).isTrue();
assertThat(mInfoMediaManager.mMediaDevices.get(2).getId()).isEqualTo(TEST_ID_3);
assertThat(mInfoMediaManager.mMediaDevices).hasSize(3);
}
@@ -620,6 +625,7 @@
mShadowRouter2Manager.setRoutingSessions(routingSessionInfos);
mShadowRouter2Manager.setDeselectableRoutes(mediaRoute2Infos);
when(mediaRoute2Info.getName()).thenReturn(TEST_NAME);
+ when(mediaRoute2Info.getId()).thenReturn(TEST_ID);
final List<MediaDevice> mediaDevices = mInfoMediaManager.getDeselectableMediaDevice();
@@ -873,21 +879,25 @@
final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class);
when(route2Info.getType()).thenReturn(TYPE_REMOTE_SPEAKER);
+ when(route2Info.getId()).thenReturn(TEST_ID);
mInfoMediaManager.addMediaDevice(route2Info);
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof InfoMediaDevice).isTrue();
when(route2Info.getType()).thenReturn(TYPE_USB_DEVICE);
+ when(route2Info.getId()).thenReturn(TEST_ID);
mInfoMediaManager.mMediaDevices.clear();
mInfoMediaManager.addMediaDevice(route2Info);
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof PhoneMediaDevice).isTrue();
when(route2Info.getType()).thenReturn(TYPE_WIRED_HEADSET);
+ when(route2Info.getId()).thenReturn(TEST_ID);
mInfoMediaManager.mMediaDevices.clear();
mInfoMediaManager.addMediaDevice(route2Info);
assertThat(mInfoMediaManager.mMediaDevices.get(0) instanceof PhoneMediaDevice).isTrue();
when(route2Info.getType()).thenReturn(TYPE_BLUETOOTH_A2DP);
when(route2Info.getAddress()).thenReturn("00:00:00:00:00:00");
+ when(route2Info.getId()).thenReturn(TEST_ID);
when(mLocalBluetoothManager.getCachedDeviceManager())
.thenReturn(cachedBluetoothDeviceManager);
when(cachedBluetoothDeviceManager.findDevice(any(BluetoothDevice.class)))
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
index c8d186f..d87fc54 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
@@ -266,18 +266,15 @@
final MediaDevice device1 = mock(MediaDevice.class);
final MediaDevice device2 = mock(MediaDevice.class);
final MediaDevice device3 = mock(MediaDevice.class);
- mLocalMediaManager.mPhoneDevice = mock(PhoneMediaDevice.class);
devices.add(device1);
devices.add(device2);
mLocalMediaManager.mMediaDevices.add(device3);
- mLocalMediaManager.mMediaDevices.add(mLocalMediaManager.mPhoneDevice);
when(device1.getId()).thenReturn(TEST_DEVICE_ID_1);
when(device2.getId()).thenReturn(TEST_DEVICE_ID_2);
when(device3.getId()).thenReturn(TEST_DEVICE_ID_3);
- when(mLocalMediaManager.mPhoneDevice.getId()).thenReturn("test_phone_id");
- assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
+ assertThat(mLocalMediaManager.mMediaDevices).hasSize(1);
mLocalMediaManager.registerCallback(mCallback);
mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices);
@@ -290,14 +287,12 @@
final List<MediaDevice> devices = new ArrayList<>();
final MediaDevice device1 = mock(MediaDevice.class);
final MediaDevice device2 = mock(MediaDevice.class);
- mLocalMediaManager.mPhoneDevice = mock(PhoneMediaDevice.class);
devices.add(device1);
devices.add(device2);
mLocalMediaManager.mMediaDevices.add(device1);
mLocalMediaManager.mMediaDevices.add(device2);
- mLocalMediaManager.mMediaDevices.add(mLocalMediaManager.mPhoneDevice);
- assertThat(mLocalMediaManager.mMediaDevices).hasSize(3);
+ assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
mLocalMediaManager.registerCallback(mCallback);
mLocalMediaManager.mMediaDeviceCallback
.onDeviceListRemoved(mLocalMediaManager.mMediaDevices);
@@ -312,19 +307,17 @@
final MediaDevice device1 = mock(MediaDevice.class);
final MediaDevice device2 = mock(MediaDevice.class);
final MediaDevice device3 = mock(MediaDevice.class);
- mLocalMediaManager.mPhoneDevice = mock(PhoneMediaDevice.class);
devices.add(device1);
devices.add(device3);
mLocalMediaManager.mMediaDevices.add(device1);
mLocalMediaManager.mMediaDevices.add(device2);
mLocalMediaManager.mMediaDevices.add(device3);
- mLocalMediaManager.mMediaDevices.add(mLocalMediaManager.mPhoneDevice);
- assertThat(mLocalMediaManager.mMediaDevices).hasSize(4);
+ assertThat(mLocalMediaManager.mMediaDevices).hasSize(3);
mLocalMediaManager.registerCallback(mCallback);
mLocalMediaManager.mMediaDeviceCallback.onDeviceListRemoved(devices);
- assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
+ assertThat(mLocalMediaManager.mMediaDevices).hasSize(1);
verify(mCallback).onDeviceListUpdate(any());
}
@@ -452,9 +445,7 @@
public void onDeviceListAdded_haveMutingExpectedDevice_addMutingExpectedDevice() {
final List<MediaDevice> devices = new ArrayList<>();
final MediaDevice device1 = mock(MediaDevice.class);
- mLocalMediaManager.mPhoneDevice = mock(PhoneMediaDevice.class);
devices.add(device1);
- devices.add(mLocalMediaManager.mPhoneDevice);
final List<LocalBluetoothProfile> profiles = new ArrayList<>();
final A2dpProfile a2dpProfile = mock(A2dpProfile.class);
@@ -483,13 +474,12 @@
when(device1.getId()).thenReturn(TEST_DEVICE_ID_1);
when(device1.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE);
- when(mLocalMediaManager.mPhoneDevice.getId()).thenReturn("test_phone_id");
assertThat(mLocalMediaManager.mMediaDevices).hasSize(0);
mLocalMediaManager.registerCallback(mCallback);
mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices);
- assertThat(mLocalMediaManager.mMediaDevices).hasSize(3);
+ assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
verify(mCallback).onDeviceListUpdate(any());
}
@@ -536,17 +526,13 @@
final MediaDevice device1 = mock(MediaDevice.class);
final MediaDevice device2 = mock(MediaDevice.class);
final MediaDevice device3 = mock(MediaDevice.class);
- mLocalMediaManager.mPhoneDevice = mock(PhoneMediaDevice.class);
devices.add(device1);
devices.add(device2);
mLocalMediaManager.mMediaDevices.add(device3);
- mLocalMediaManager.mMediaDevices.add(mLocalMediaManager.mPhoneDevice);
mShadowBluetoothAdapter = null;
- when(mLocalMediaManager.mPhoneDevice.getId()).thenReturn("test_phone_id");
-
- assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
+ assertThat(mLocalMediaManager.mMediaDevices).hasSize(1);
mLocalMediaManager.registerCallback(mCallback);
mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices);
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
index aa6aaaf..ae06193 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
@@ -97,6 +97,7 @@
Settings.Global.Wearable.GESTURE_TOUCH_AND_HOLD_WATCH_FACE_ENABLED,
Settings.Global.Wearable.BATTERY_SAVER_MODE,
Settings.Global.Wearable.WEAR_ACTIVITY_AUTO_RESUME_TIMEOUT_MS,
- Settings.Global.Wearable.WEAR_ACTIVITY_AUTO_RESUME_TIMEOUT_SET_BY_USER
+ Settings.Global.Wearable.WEAR_ACTIVITY_AUTO_RESUME_TIMEOUT_SET_BY_USER,
+ Settings.Global.Wearable.DYNAMIC_COLOR_THEME_ENABLED,
};
}
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
index 2b0d837..a1a9e8c 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
@@ -352,5 +352,6 @@
String.valueOf(Global.Wearable.EARLY_UPDATES_STATUS_SKIPPED),
String.valueOf(Global.Wearable.EARLY_UPDATES_STATUS_ABORTED),
}));
+ VALIDATORS.put(Global.Wearable.DYNAMIC_COLOR_THEME_ENABLED, BOOLEAN_VALIDATOR);
}
}
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index a418c20..d56300e 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -593,11 +593,6 @@
<!-- Permission required for CTS test - PeopleManagerTest -->
<uses-permission android:name="android.permission.READ_PEOPLE_DATA" />
- <!-- Permissions required for CTS test - TrustTestCases -->
- <uses-permission android:name="android.permission.PROVIDE_TRUST_AGENT" />
- <uses-permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" />
- <uses-permission android:name="android.permission.TRUST_LISTENER" />
-
<!-- Permission required for CTS test - CtsTaskFpsCallbackTestCases -->
<uses-permission android:name="android.permission.ACCESS_FPS_COUNTER" />
@@ -798,6 +793,9 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED"/>
+ <!-- Permissions required for CTS test - CtsBroadcastRadioTestCases -->
+ <uses-permission android:name="android.permission.ACCESS_BROADCAST_RADIO" />
+
<application android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight"
android:defaultToDeviceProtectedStorage="true"
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 2c9dad9..4be1d30 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -180,6 +180,9 @@
<!-- Doze mode temp whitelisting for notification dispatching. -->
<uses-permission android:name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" />
+ <!-- Tag user-initiated PendingIntent invocations as "interactive" when appropriate -->
+ <uses-permission android:name="android.permission.COMPONENT_OPTION_INTERACTIVE" />
+
<!-- Listen for keyboard attachment / detachment -->
<uses-permission android:name="android.permission.TABLET_MODE" />
diff --git a/packages/SystemUI/TEST_MAPPING b/packages/SystemUI/TEST_MAPPING
index b22195a..f92625b 100644
--- a/packages/SystemUI/TEST_MAPPING
+++ b/packages/SystemUI/TEST_MAPPING
@@ -32,19 +32,18 @@
}
]
},
-// Disable until can pass: b/259124654
-// {
-// // TODO(b/251476085): Consider merging with SystemUIGoogleScreenshotTests (in U+)
-// "name": "SystemUIGoogleBiometricsScreenshotTests",
-// "options": [
-// {
-// "exclude-annotation": "org.junit.Ignore"
-// },
-// {
-// "exclude-annotation": "androidx.test.filters.FlakyTest"
-// }
-// ]
-// },
+ {
+ // TODO(b/251476085): Consider merging with SystemUIGoogleScreenshotTests (in U+)
+ "name": "SystemUIGoogleBiometricsScreenshotTests",
+ "options": [
+ {
+ "exclude-annotation": "org.junit.Ignore"
+ },
+ {
+ "exclude-annotation": "androidx.test.filters.FlakyTest"
+ }
+ ]
+ },
{
// Permission indicators
"name": "CtsPermission4TestCases",
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
index fe349f2..8f70dcc 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
@@ -37,6 +37,8 @@
import android.view.WindowManager
import android.view.animation.Interpolator
import android.view.animation.PathInterpolator
+import androidx.annotation.BinderThread
+import androidx.annotation.UiThread
import com.android.internal.annotations.VisibleForTesting
import com.android.internal.policy.ScreenDecorationsUtils
import kotlin.math.roundToInt
@@ -226,7 +228,7 @@
// If we expect an animation, post a timeout to cancel it in case the remote animation is
// never started.
if (willAnimate) {
- runner.postTimeout()
+ runner.delegate.postTimeout()
// Hide the keyguard using the launch animation instead of the default unlock animation.
if (hideKeyguardWithAnimation) {
@@ -389,14 +391,51 @@
fun onLaunchAnimationCancelled(newKeyguardOccludedState: Boolean? = null) {}
}
- class Runner(
+ @VisibleForTesting
+ inner class Runner(
+ controller: Controller,
+ callback: Callback,
+ /** The animator to use to animate the window launch. */
+ launchAnimator: LaunchAnimator = DEFAULT_LAUNCH_ANIMATOR,
+ /** Listener for animation lifecycle events. */
+ listener: Listener? = null
+ ) : IRemoteAnimationRunner.Stub() {
+ private val context = controller.launchContainer.context
+ internal val delegate: AnimationDelegate
+
+ init {
+ delegate = AnimationDelegate(controller, callback, launchAnimator, listener)
+ }
+
+ @BinderThread
+ override fun onAnimationStart(
+ transit: Int,
+ apps: Array<out RemoteAnimationTarget>?,
+ wallpapers: Array<out RemoteAnimationTarget>?,
+ nonApps: Array<out RemoteAnimationTarget>?,
+ finishedCallback: IRemoteAnimationFinishedCallback?
+ ) {
+ context.mainExecutor.execute {
+ delegate.onAnimationStart(transit, apps, wallpapers, nonApps, finishedCallback)
+ }
+ }
+
+ @BinderThread
+ override fun onAnimationCancelled(isKeyguardOccluded: Boolean) {
+ context.mainExecutor.execute { delegate.onAnimationCancelled(isKeyguardOccluded) }
+ }
+ }
+
+ class AnimationDelegate
+ @JvmOverloads
+ constructor(
private val controller: Controller,
private val callback: Callback,
/** The animator to use to animate the window launch. */
private val launchAnimator: LaunchAnimator = DEFAULT_LAUNCH_ANIMATOR,
/** Listener for animation lifecycle events. */
private val listener: Listener? = null
- ) : IRemoteAnimationRunner.Stub() {
+ ) : RemoteAnimationDelegate<IRemoteAnimationFinishedCallback> {
private val launchContainer = controller.launchContainer
private val context = launchContainer.context
private val transactionApplierView =
@@ -419,6 +458,7 @@
// posting it.
private var onTimeout = Runnable { onAnimationTimedOut() }
+ @UiThread
internal fun postTimeout() {
launchContainer.postDelayed(onTimeout, LAUNCH_TIMEOUT)
}
@@ -427,19 +467,20 @@
launchContainer.removeCallbacks(onTimeout)
}
+ @UiThread
override fun onAnimationStart(
@WindowManager.TransitionOldType transit: Int,
apps: Array<out RemoteAnimationTarget>?,
wallpapers: Array<out RemoteAnimationTarget>?,
nonApps: Array<out RemoteAnimationTarget>?,
- iCallback: IRemoteAnimationFinishedCallback?
+ callback: IRemoteAnimationFinishedCallback?
) {
removeTimeout()
// The animation was started too late and we already notified the controller that it
// timed out.
if (timedOut) {
- iCallback?.invoke()
+ callback?.invoke()
return
}
@@ -449,7 +490,7 @@
return
}
- context.mainExecutor.execute { startAnimation(apps, nonApps, iCallback) }
+ startAnimation(apps, nonApps, callback)
}
private fun startAnimation(
@@ -687,6 +728,7 @@
controller.onLaunchAnimationCancelled()
}
+ @UiThread
override fun onAnimationCancelled(isKeyguardOccluded: Boolean) {
if (timedOut) {
return
@@ -695,10 +737,9 @@
Log.i(TAG, "Remote animation was cancelled")
cancelled = true
removeTimeout()
- context.mainExecutor.execute {
- animation?.cancel()
- controller.onLaunchAnimationCancelled(newKeyguardOccludedState = isKeyguardOccluded)
- }
+
+ animation?.cancel()
+ controller.onLaunchAnimationCancelled(newKeyguardOccludedState = isKeyguardOccluded)
}
private fun IRemoteAnimationFinishedCallback.invoke() {
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteAnimationDelegate.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteAnimationDelegate.kt
new file mode 100644
index 0000000..337408b
--- /dev/null
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteAnimationDelegate.kt
@@ -0,0 +1,30 @@
+package com.android.systemui.animation
+
+import android.annotation.UiThread
+import android.view.IRemoteAnimationFinishedCallback
+import android.view.RemoteAnimationTarget
+import android.view.WindowManager
+
+/**
+ * A component capable of running remote animations.
+ *
+ * Expands the IRemoteAnimationRunner API by allowing for different types of more specialized
+ * callbacks.
+ */
+interface RemoteAnimationDelegate<in T : IRemoteAnimationFinishedCallback> {
+ /**
+ * Called on the UI thread when the animation targets are received. Sets up and kicks off the
+ * animation.
+ */
+ @UiThread
+ fun onAnimationStart(
+ @WindowManager.TransitionOldType transit: Int,
+ apps: Array<out RemoteAnimationTarget>?,
+ wallpapers: Array<out RemoteAnimationTarget>?,
+ nonApps: Array<out RemoteAnimationTarget>?,
+ callback: T?
+ )
+
+ /** Called on the UI thread when a signal is received to cancel the animation. */
+ @UiThread fun onAnimationCancelled(isKeyguardOccluded: Boolean)
+}
diff --git a/packages/SystemUI/ktfmt_includes.txt b/packages/SystemUI/ktfmt_includes.txt
index 4c271ea..2148cb0 100644
--- a/packages/SystemUI/ktfmt_includes.txt
+++ b/packages/SystemUI/ktfmt_includes.txt
@@ -80,8 +80,8 @@
-packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt
-packages/SystemUI/src/com/android/systemui/biometrics/UdfpsDrawable.kt
-packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpDrawable.kt
--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherView.kt
--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherViewController.kt
+-packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmEmptyView.kt
+-packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmEmptyViewController.kt
-packages/SystemUI/src/com/android/systemui/biometrics/UdfpsHapticsSimulator.kt
-packages/SystemUI/src/com/android/systemui/biometrics/UdfpsOverlayParams.kt
-packages/SystemUI/src/com/android/systemui/biometrics/UdfpsShell.kt
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/GlobalActionsPanelPlugin.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/GlobalActionsPanelPlugin.java
index d0694ab..429458f 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/GlobalActionsPanelPlugin.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/GlobalActionsPanelPlugin.java
@@ -17,6 +17,7 @@
package com.android.systemui.plugins;
import android.annotation.Nullable;
+import android.app.BroadcastOptions;
import android.app.PendingIntent;
import android.graphics.drawable.Drawable;
import android.view.View;
@@ -70,7 +71,9 @@
/** Starts a PendingIntent, dismissing the keyguard if necessary. */
default void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent) {
try {
- pendingIntent.send();
+ BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractive(true);
+ pendingIntent.send(options.toBundle());
} catch (PendingIntent.CanceledException e) {
// no-op
}
diff --git a/packages/SystemUI/proguard.flags b/packages/SystemUI/proguard.flags
index e598afe..a4ee62c 100644
--- a/packages/SystemUI/proguard.flags
+++ b/packages/SystemUI/proguard.flags
@@ -19,6 +19,18 @@
public <init>();
}
+# Needed to ensure callback field references are kept in their respective
+# owning classes when the downstream callback registrars only store weak refs.
+# TODO(b/264686688): Handle these cases with more targeted annotations.
+-keepclassmembers,allowaccessmodification class com.android.systemui.**, com.android.keyguard.** {
+ private com.android.keyguard.KeyguardUpdateMonitorCallback *;
+ private com.android.systemui.privacy.PrivacyItemController$Callback *;
+ private com.android.systemui.settings.UserTracker$Callback *;
+ private com.android.systemui.statusbar.phone.StatusBarWindowCallback *;
+ private com.android.systemui.util.service.Observer$Callback *;
+ private com.android.systemui.util.service.ObservableServiceConnection$Callback *;
+}
+
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
diff --git a/packages/SystemUI/res-keyguard/drawable/super_lock_icon.xml b/packages/SystemUI/res-keyguard/drawable/super_lock_icon.xml
index b3987f1..951d6fe 100644
--- a/packages/SystemUI/res-keyguard/drawable/super_lock_icon.xml
+++ b/packages/SystemUI/res-keyguard/drawable/super_lock_icon.xml
@@ -99,4 +99,9 @@
android:fromId="@id/unlocked"
android:toId="@id/locked_aod"
android:drawable="@drawable/unlocked_to_aod_lock" />
+
+ <transition
+ android:fromId="@id/unlocked"
+ android:toId="@id/locked"
+ android:drawable="@drawable/unlocked_to_locked" />
</animated-selector>
diff --git a/packages/SystemUI/res-keyguard/drawable/unlocked_to_locked.xml b/packages/SystemUI/res-keyguard/drawable/unlocked_to_locked.xml
new file mode 100644
index 0000000..b55abd1
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/drawable/unlocked_to_locked.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">
+ <aapt:attr name="android:drawable">
+ <vector android:height="65dp" android:width="46dp" android:viewportHeight="65" android:viewportWidth="46">
+ <group android:name="_R_G">
+ <group android:name="_R_G_L_2_G_T_1" android:translateX="22.75" android:translateY="22.25" android:scaleX="1.02" android:scaleY="1.02">
+ <group android:name="_R_G_L_2_G" android:translateX="-8.75" android:translateY="-8.75">
+ <path android:name="_R_G_L_2_G_D_0_P_0" android:strokeColor="#FF000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M27.19 14.81 C27.19,14.81 27.19,8.3 27.19,8.3 C27.19,4.92 24.44,2.88 21.19,2.75 C17.74,2.62 15,4.74 15,8.11 C15,8.11 15,15 15,15 " />
+ </group>
+ </group>
+ <group android:name="_R_G_L_1_G_N_4_T_1" android:translateX="22.75" android:translateY="22.25" android:scaleX="1.02" android:scaleY="1.02">
+ <group android:name="_R_G_L_1_G_N_4_T_0" android:translateX="-8.75" android:translateY="-8.75">
+ <group android:name="_R_G_L_1_G" android:translateX="8.995" android:translateY="18.431" android:scaleX="0.98039" android:scaleY="0.98039">
+ <path android:name="_R_G_L_1_G_D_0_P_0" android:strokeColor="#FF000000" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2" android:strokeAlpha="1" android:pathData=" M11.25 -0.64 C11.25,-0.64 11.25,13.64 11.25,13.64 C11.25,15.22 9.97,16.5 8.39,16.5 C8.39,16.5 -8.39,16.5 -8.39,16.5 C-9.97,16.5 -11.25,15.22 -11.25,13.64 C-11.25,13.64 -11.25,-0.64 -11.25,-0.64 C-11.25,-2.22 -9.97,-3.5 -8.39,-3.5 C-8.39,-3.5 8.39,-3.5 8.39,-3.5 C9.97,-3.5 11.25,-2.22 11.25,-0.64c " />
+ </group>
+ </group>
+ </group>
+ <group android:name="_R_G_L_0_G_N_4_T_1" android:translateX="22.75" android:translateY="22.25" android:scaleX="1.02" android:scaleY="1.02">
+ <group android:name="_R_G_L_0_G_N_4_T_0" android:translateX="-8.75" android:translateY="-8.75">
+ <group android:name="_R_G_L_0_G" android:translateX="8.995000000000001" android:translateY="18.345000000000002" android:pivotX="-0.031" android:pivotY="4.406" android:scaleX="0.98039" android:scaleY="0.98039">
+ <path android:name="_R_G_L_0_G_D_0_P_0" android:fillColor="#FF000000" android:fillAlpha="1" android:fillType="nonZero" android:pathData=" M-0.09 8.63 C1.2,8.63 2.25,7.57 2.25,6.28 C2.25,4.99 1.2,3.94 -0.09,3.94 C-1.39,3.94 -2.44,4.99 -2.44,6.28 C-2.44,7.57 -1.39,8.63 -0.09,8.63c " />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="strokeWidth" android:duration="333" android:startOffset="0" android:valueFrom="2" android:valueTo="2" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.2,0 0.833,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_D_0_P_0">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="pathData" android:duration="83" android:startOffset="0" android:valueFrom="M27.19 14.81 C27.19,14.81 27.19,8.3 27.19,8.3 C27.19,4.92 24.44,2.88 21.19,2.75 C17.74,2.62 15,4.74 15,8.11 C15,8.11 15,15 15,15 " android:valueTo="M27.13 10.19 C27.13,10.19 27.13,3.67 27.13,3.67 C27.13,0.3 24.38,-1.75 21.13,-1.87 C17.68,-2.01 14.94,0.11 14.94,3.49 C14.94,3.49 15,15 15,15 " android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.456,0 0.464,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:propertyName="pathData" android:duration="133" android:startOffset="83" android:valueFrom="M27.13 10.19 C27.13,10.19 27.13,3.67 27.13,3.67 C27.13,0.3 24.38,-1.75 21.13,-1.87 C17.68,-2.01 14.94,0.11 14.94,3.49 C14.94,3.49 15,15 15,15 " android:valueTo="M2.5 10.38 C2.5,10.38 2.5,3.99 2.5,3.99 C2.5,0.61 5.3,-2.12 8.75,-2.12 C12.2,-2.12 15,0.61 15,3.99 C15,3.99 15,15 15,15 " android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.606,0 0.035,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:propertyName="pathData" android:duration="117" android:startOffset="217" android:valueFrom="M2.5 10.38 C2.5,10.38 2.5,3.99 2.5,3.99 C2.5,0.61 5.3,-2.12 8.75,-2.12 C12.2,-2.12 15,0.61 15,3.99 C15,3.99 15,15 15,15 " android:valueTo="M2.52 14.65 C2.52,14.65 2.5,8.61 2.5,8.61 C2.5,5.24 5.3,2.5 8.75,2.5 C12.2,2.5 15,5.24 15,8.61 C15,8.61 15.02,14.65 15.02,14.65 " android:valueType="pathType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.511,0 0.409,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_2_G_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="translateY" android:duration="333" android:startOffset="0" android:valueFrom="22.25" android:valueTo="22.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.535,0 0.426,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="333" android:valueFrom="22.25" android:valueTo="24.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.535,0 0.426,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="400" android:valueFrom="24.25" android:valueTo="22.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.641,0 0.499,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="translateY" android:duration="333" android:startOffset="0" android:valueFrom="22.25" android:valueTo="22.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.535,0 0.426,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="333" android:valueFrom="22.25" android:valueTo="24.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.535,0 0.426,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="400" android:valueFrom="24.25" android:valueTo="22.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.641,0 0.499,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_1">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="translateY" android:duration="333" android:startOffset="0" android:valueFrom="22.25" android:valueTo="22.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.535,0 0.426,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:propertyName="translateY" android:duration="67" android:startOffset="333" android:valueFrom="22.25" android:valueTo="24.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.535,0 0.426,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator android:propertyName="translateY" android:duration="100" android:startOffset="400" android:valueFrom="24.25" android:valueTo="22.25" android:valueType="floatType">
+ <aapt:attr name="android:interpolator">
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.641,0 0.499,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group">
+ <aapt:attr name="android:animation">
+ <set android:ordering="together">
+ <objectAnimator android:propertyName="translateX" android:duration="850" android:startOffset="0" android:valueFrom="0" android:valueTo="1" android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+</animated-vector>
diff --git a/packages/SystemUI/res-product/values-af/strings.xml b/packages/SystemUI/res-product/values-af/strings.xml
index 61869d5..18f6d44 100644
--- a/packages/SystemUI/res-product/values-af/strings.xml
+++ b/packages/SystemUI/res-product/values-af/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Herbelyn foon om draadloos te laai"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Die Android TV-toestel sal binnekort afskakel; druk \'n knoppie om dit aan te hou."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Die toestel gaan binnekort afskakel; druk om dit aan te hou."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Geen SIM in tablet nie."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Geen SIM in foon nie."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-kodes stem nie ooreen nie"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Jy het die tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> keer verkeerd probeer ontsluit. Na nóg <xliff:g id="NUMBER_1">%2$d</xliff:g> onsuksesvolle pogings sal hierdie tablet teruggestel word, wat al sy data sal uitvee."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Jy het die foon <xliff:g id="NUMBER_0">%1$d</xliff:g> keer verkeerd probeer ontsluit. Na nóg <xliff:g id="NUMBER_1">%2$d</xliff:g> onsuksesvolle pogings sal hierdie foon teruggestel word, wat al sy data sal uitvee."</string>
diff --git a/packages/SystemUI/res-product/values-am/strings.xml b/packages/SystemUI/res-product/values-am/strings.xml
index 3795e11..ad2d80d 100644
--- a/packages/SystemUI/res-product/values-am/strings.xml
+++ b/packages/SystemUI/res-product/values-am/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ያለገመድ ኃይል ለመሙላት ስልኩን ዳግም ያሰልፉት"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"የAndroid TV መሣሪያው በቅርቡ ይጠፋል፤ እንደበራ ለማቆየት ይጫኑ።"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"መሣሪያው በቅርቡ ይጠፋል፤ እንደበራ ለማቆየት ይጫኑ።"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"በጡባዊ ውስጥ ምንም ሲም የለም።"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"በስልክ ውስጥ ምንም ሲም የለም።"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"የፒን ኮዶቹ አይዛመዱም"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"ጡባዊውን <xliff:g id="NUMBER_0">%1$d</xliff:g> ጊዜ ትክክል ባልሆነ መልኩ ለማስከፈት ሞክረዋል። ከ<xliff:g id="NUMBER_1">%2$d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ ይህ ጡባዊ ዳግም ይጀመራል፣ ይህም ሁሉንም ውሂብ ይሰርዛል።"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"ስልኩን <xliff:g id="NUMBER_0">%1$d</xliff:g> ጊዜ ትክክል ባልሆነ መልኩ ለመክፈት ሞክረዋል። ከ<xliff:g id="NUMBER_1">%2$d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ ይህ ስልክ ዳግም ይጀመራል፣ ይህም ሁሉንም ውሂብ ይሰርዛል።"</string>
diff --git a/packages/SystemUI/res-product/values-ar/strings.xml b/packages/SystemUI/res-product/values-ar/strings.xml
index c407017..7e28dfe 100644
--- a/packages/SystemUI/res-product/values-ar/strings.xml
+++ b/packages/SystemUI/res-product/values-ar/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"إعادة ضبط الهاتف لشحنه لاسلكيًا"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"سيتم إيقاف جهاز Android TV قريبًا، اضغط على أحد الأزرار لمواصلة تشغيله."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"سيتم إيقاف الجهاز قريبًا، اضغط لمواصلة تشغيله."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"لا تتوفر شريحة SIM في الجهاز اللوحي."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"لا تتوفر شريحة SIM في الهاتف."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"لا يتطابق ما أدخلته مع رمز رقم التعريف الشخصي"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"أخطأت في محاولة فتح قفل الجهاز اللوحي <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد <xliff:g id="NUMBER_1">%2$d</xliff:g> محاولة غير ناجحة أخرى، ستتم إعادة ضبط هذا الجهاز، ومن ثم يتم حذف جميع بياناته."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"أخطأت في محاولة فتح قفل الهاتف <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد <xliff:g id="NUMBER_1">%2$d</xliff:g> محاولة غير ناجحة أخرى، ستتم إعادة ضبط هذا الهاتف، ومن ثم يتم حذف جميع بياناته."</string>
diff --git a/packages/SystemUI/res-product/values-as/strings.xml b/packages/SystemUI/res-product/values-as/strings.xml
index 3ab080b..4a9a0d4 100644
--- a/packages/SystemUI/res-product/values-as/strings.xml
+++ b/packages/SystemUI/res-product/values-as/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"তাঁৰৰ অবিহনে চাৰ্জ কৰিবলৈ ফ’নটো পুনৰ সংৰেখিত কৰক"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ডিভাইচটো সোনকালেই অফ হ’ব, এইটো অন কৰি ৰাখিবলৈ এটা বুটাম টিপক।"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"এই ডিভাইচটো সোনকালেই অফ হ’ব; এইটো অন কৰি ৰাখিবলৈ টিপক।"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"টেবলেটত কোনো ছিম নাই।"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ফ’নত কোনো ছিম নাই।"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"পিন ক’ড মিলা নাই"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"আপুনি টেবলেটটো আনলক কৰিবলৈ <xliff:g id="NUMBER_0">%1$d</xliff:g> বাৰ ভুলকৈ প্ৰয়াস কৰিছে। আৰু <xliff:g id="NUMBER_1">%2$d</xliff:g> বাৰ ভুলকৈ প্ৰয়াস কৰাৰ পাছত এই টেবলেটটো ৰিছেট কৰা হ’ব, যিয়ে ইয়াৰ আটাইবোৰ ডেটা মচি পেলাব।"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"আপুনি ফ’নটো আনলক কৰিবলৈ <xliff:g id="NUMBER_0">%1$d</xliff:g> বাৰ ভুলকৈ প্ৰয়াস কৰিছে। আৰু <xliff:g id="NUMBER_1">%2$d</xliff:g> বাৰ ভুলকৈ প্ৰয়াস কৰাৰ পাছত এই ফ’নটো ৰিছেট কৰা হ’ব, যিয়ে ইয়াৰ আটাইবোৰ ডেটা মচি পেলাব।"</string>
diff --git a/packages/SystemUI/res-product/values-az/strings.xml b/packages/SystemUI/res-product/values-az/strings.xml
index 6c02e18..c15bfec 100644
--- a/packages/SystemUI/res-product/values-az/strings.xml
+++ b/packages/SystemUI/res-product/values-az/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Simsiz şarj etmək üçün telefonu doğru yerləşdirin"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV cihazı tezliklə deaktiv olacaq; aktiv saxlamaq üçün düyməyə basın."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Cihaz tezliklə deaktiv olacaq; aktiv saxlamaq üçün basın."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Planşetdə SIM kart yoxdur."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Telefonda SIM kart yoxdur."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN kodlar uyğun gəlmir"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Planşetin kilidini açmaq üçün <xliff:g id="NUMBER_0">%1$d</xliff:g> dəfə yanlış cəhd etmisiniz. Daha <xliff:g id="NUMBER_1">%2$d</xliff:g> uğursuz cəhddən sonra bu planşet sıfırlanacaq və bütün data silinəcək."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Telefonun kilidini açmaq üçün <xliff:g id="NUMBER_0">%1$d</xliff:g> dəfə yanlış cəhd etmisiniz. Daha <xliff:g id="NUMBER_1">%2$d</xliff:g> uğursuz cəhddən sonra bu telefon sıfırlanacaq və bütün data silinəcək."</string>
diff --git a/packages/SystemUI/res-product/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-product/values-b+sr+Latn/strings.xml
index 64b3750..c0e32c2 100644
--- a/packages/SystemUI/res-product/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res-product/values-b+sr+Latn/strings.xml
@@ -19,32 +19,30 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"Поново поставите телефон ради бржег пуњења"</string>
- <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Поново поставите телефон ради бежичног пуњења"</string>
- <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ће се ускоро искључити. Притисните дугме да би остао укључен."</string>
- <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Уређај ће се ускоро искључити. Притисните да би остао укључен."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
- <string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN кодови се не подударају"</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Погрешно сте покушали да откључате таблет <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, овај таблет ће се ресетовати, чиме се бришу сви подаци корисника."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Погрешно сте покушали да откључате телефон <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, овај телефон ће се ресетовати, чиме се бришу сви подаци корисника."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="8710104080409538587">"Погрешно сте покушали да откључате таблет <xliff:g id="NUMBER">%d</xliff:g> пута. Овај таблет ће се ресетовати, чиме се бришу сви подаци."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="6381835450014881813">"Погрешно сте покушали да откључате телефон <xliff:g id="NUMBER">%d</xliff:g> пута. Овај телефон ће се ресетовати, чиме се бришу сви подаци."</string>
- <string name="kg_failed_attempts_almost_at_erase_user" product="tablet" msgid="7325071812832605911">"Погрешно сте покушали да откључате таблет <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, уклонићемо овог корисника, чиме се бришу сви подаци корисника."</string>
- <string name="kg_failed_attempts_almost_at_erase_user" product="default" msgid="8110939900089863103">"Погрешно сте покушали да откључате телефон <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, уклонићемо овог корисника, чиме се бришу сви подаци корисника."</string>
- <string name="kg_failed_attempts_now_erasing_user" product="tablet" msgid="8509811676952707883">"Погрешно сте покушали да откључате таблет <xliff:g id="NUMBER">%d</xliff:g> пута. Уклонићемо овог корисника, чиме се бришу сви подаци корисника."</string>
- <string name="kg_failed_attempts_now_erasing_user" product="default" msgid="3051962486994265014">"Погрешно сте покушали да откључате телефон <xliff:g id="NUMBER">%d</xliff:g> пута. Уклонићемо овог корисника, чиме се бришу сви подаци корисника."</string>
- <string name="kg_failed_attempts_almost_at_erase_profile" product="tablet" msgid="1049523640263353830">"Погрешно сте покушали да откључате таблет <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, уклонићемо пословни профил, чиме се бришу сви подаци са профила."</string>
- <string name="kg_failed_attempts_almost_at_erase_profile" product="default" msgid="3280816298678433681">"Погрешно сте покушали да откључате телефон <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, уклонићемо пословни профил, чиме се бришу сви подаци са профила."</string>
- <string name="kg_failed_attempts_now_erasing_profile" product="tablet" msgid="4417100487251371559">"Погрешно сте покушали да откључате таблет <xliff:g id="NUMBER">%d</xliff:g> пута. Уклонићемо пословни профил, чиме се бришу сви подаци са профила."</string>
- <string name="kg_failed_attempts_now_erasing_profile" product="default" msgid="4682221342671290678">"Погрешно сте покушали да откључате телефон <xliff:g id="NUMBER">%d</xliff:g> пута. Уклонићемо пословни профил, чиме се бришу сви подаци са профила."</string>
- <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="1860049973474855672">"Нетачно сте нацртали шаблон за откључавање <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, затражићемо да откључате таблет помоћу имејл налога.\n\n Пробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> сек."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="44112553371516141">"Нетачно сте нацртали шаблон за откључавање <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, затражићемо да откључате телефон помоћу имејл налога.\n\n Пробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> сек."</string>
- <string name="global_action_lock_message" product="default" msgid="7092460751050168771">"Откључајте телефон за још опција"</string>
- <string name="global_action_lock_message" product="tablet" msgid="1024230056230539493">"Откључајте таблет за још опција"</string>
- <string name="global_action_lock_message" product="device" msgid="3165224897120346096">"Откључајте уређај за још опција"</string>
- <string name="media_transfer_playing_this_device" product="default" msgid="5795784619523545556">"Пушта се на овом телефону"</string>
- <string name="media_transfer_playing_this_device" product="tablet" msgid="222514408550408633">"Пушта се на овом таблету"</string>
+ <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"Ponovo postavite telefon radi bržeg punjenja"</string>
+ <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Ponovo postavite telefon radi bežičnog punjenja"</string>
+ <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV će se uskoro isključiti. Pritisnite dugme da bi ostao uključen."</string>
+ <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Uređaj će se uskoro isključiti. Pritisnite da bi ostao uključen."</string>
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Nema SIM-a u tabletu."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Nema SIM-a u telefonu."</string>
+ <string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN kodovi se ne podudaraju"</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Pogrešno ste pokušali da otključate tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još <xliff:g id="NUMBER_1">%2$d</xliff:g> puta, ovaj tablet će se resetovati, čime se brišu svi podaci korisnika."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Pogrešno ste pokušali da otključate telefon <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još <xliff:g id="NUMBER_1">%2$d</xliff:g> puta, ovaj telefon će se resetovati, čime se brišu svi podaci korisnika."</string>
+ <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="8710104080409538587">"Pogrešno ste pokušali da otključate tablet <xliff:g id="NUMBER">%d</xliff:g> puta. Ovaj tablet će se resetovati, čime se brišu svi podaci."</string>
+ <string name="kg_failed_attempts_now_wiping" product="default" msgid="6381835450014881813">"Pogrešno ste pokušali da otključate telefon <xliff:g id="NUMBER">%d</xliff:g> puta. Ovaj telefon će se resetovati, čime se brišu svi podaci."</string>
+ <string name="kg_failed_attempts_almost_at_erase_user" product="tablet" msgid="7325071812832605911">"Pogrešno ste pokušali da otključate tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još <xliff:g id="NUMBER_1">%2$d</xliff:g> puta, uklonićemo ovog korisnika, čime se brišu svi podaci korisnika."</string>
+ <string name="kg_failed_attempts_almost_at_erase_user" product="default" msgid="8110939900089863103">"Pogrešno ste pokušali da otključate telefon <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još <xliff:g id="NUMBER_1">%2$d</xliff:g> puta, uklonićemo ovog korisnika, čime se brišu svi podaci korisnika."</string>
+ <string name="kg_failed_attempts_now_erasing_user" product="tablet" msgid="8509811676952707883">"Pogrešno ste pokušali da otključate tablet <xliff:g id="NUMBER">%d</xliff:g> puta. Uklonićemo ovog korisnika, čime se brišu svi podaci korisnika."</string>
+ <string name="kg_failed_attempts_now_erasing_user" product="default" msgid="3051962486994265014">"Pogrešno ste pokušali da otključate telefon <xliff:g id="NUMBER">%d</xliff:g> puta. Uklonićemo ovog korisnika, čime se brišu svi podaci korisnika."</string>
+ <string name="kg_failed_attempts_almost_at_erase_profile" product="tablet" msgid="1049523640263353830">"Pogrešno ste pokušali da otključate tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još <xliff:g id="NUMBER_1">%2$d</xliff:g> puta, uklonićemo poslovni profil, čime se brišu svi podaci sa profila."</string>
+ <string name="kg_failed_attempts_almost_at_erase_profile" product="default" msgid="3280816298678433681">"Pogrešno ste pokušali da otključate telefon <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još <xliff:g id="NUMBER_1">%2$d</xliff:g> puta, uklonićemo poslovni profil, čime se brišu svi podaci sa profila."</string>
+ <string name="kg_failed_attempts_now_erasing_profile" product="tablet" msgid="4417100487251371559">"Pogrešno ste pokušali da otključate tablet <xliff:g id="NUMBER">%d</xliff:g> puta. Uklonićemo poslovni profil, čime se brišu svi podaci sa profila."</string>
+ <string name="kg_failed_attempts_now_erasing_profile" product="default" msgid="4682221342671290678">"Pogrešno ste pokušali da otključate telefon <xliff:g id="NUMBER">%d</xliff:g> puta. Uklonićemo poslovni profil, čime se brišu svi podaci sa profila."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="1860049973474855672">"Netačno ste nacrtali šablon za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još <xliff:g id="NUMBER_1">%2$d</xliff:g> puta, zatražićemo da otključate tablet pomoću imejl naloga.\n\n Probajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sek."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="default" msgid="44112553371516141">"Netačno ste nacrtali šablon za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako pogrešno pokušate još <xliff:g id="NUMBER_1">%2$d</xliff:g> puta, zatražićemo da otključate telefon pomoću imejl naloga.\n\n Probajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sek."</string>
+ <string name="global_action_lock_message" product="default" msgid="7092460751050168771">"Otključajte telefon za još opcija"</string>
+ <string name="global_action_lock_message" product="tablet" msgid="1024230056230539493">"Otključajte tablet za još opcija"</string>
+ <string name="global_action_lock_message" product="device" msgid="3165224897120346096">"Otključajte uređaj za još opcija"</string>
+ <string name="media_transfer_playing_this_device" product="default" msgid="5795784619523545556">"Pušta se na ovom telefonu"</string>
+ <string name="media_transfer_playing_this_device" product="tablet" msgid="222514408550408633">"Pušta se na ovom tabletu"</string>
</resources>
diff --git a/packages/SystemUI/res-product/values-be/strings.xml b/packages/SystemUI/res-product/values-be/strings.xml
index 8f1ea47..e5d5aae 100644
--- a/packages/SystemUI/res-product/values-be/strings.xml
+++ b/packages/SystemUI/res-product/values-be/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Папраўце тэлефон на док-станцыі для бесправадной зарадкі"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Прылада Android TV неўзабаве выключыцца. Каб пакінуць яе ўключанай, націсніце кнопку."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Прылада неўзабаве выключыцца. Націсніце, каб пакінуць яе ўключанай."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"У планшэце няма SIM-карты."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"У тэлефоне няма SIM-карты."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-коды не супадаюць"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Вы не змаглі разблакіраваць планшэт столькі разоў: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Пасля яшчэ некалькіх няўдалых спроб (<xliff:g id="NUMBER_1">%2$d</xliff:g>) ён будзе скінуты да заводскіх налад, і гэта прывядзе да выдалення ўсіх даных."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Вы не змаглі разблакіраваць тэлефон столькі разоў: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Пасля яшчэ некалькіх няўдалых спроб (<xliff:g id="NUMBER_1">%2$d</xliff:g>) ён будзе скінуты да заводскіх налад, і гэта прывядзе да выдалення ўсіх даных."</string>
diff --git a/packages/SystemUI/res-product/values-bg/strings.xml b/packages/SystemUI/res-product/values-bg/strings.xml
index d741072..f8ca530 100644
--- a/packages/SystemUI/res-product/values-bg/strings.xml
+++ b/packages/SystemUI/res-product/values-bg/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Подравнете отново телефона за безжично зареждане"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Устройството с Android TV скоро ще се изключи. Натиснете бутон, за да остане включено."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Устройството скоро ще се изключи. Натиснете, за да остане включено."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"В таблета няма SIM карта."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"В телефона няма SIM карта."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"ПИН кодовете не съвпадат"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Опитахте да отключите таблета и сбъркахте <xliff:g id="NUMBER_0">%1$d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешни опита той ще бъде нулиран, при което ще се изтрият всичките му данни."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Опитахте да отключите телефона и сбъркахте <xliff:g id="NUMBER_0">%1$d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешни опита той ще бъде нулиран, при което ще се изтрият всичките му данни."</string>
diff --git a/packages/SystemUI/res-product/values-bn/strings.xml b/packages/SystemUI/res-product/values-bn/strings.xml
index 4ed178c..ca3f903 100644
--- a/packages/SystemUI/res-product/values-bn/strings.xml
+++ b/packages/SystemUI/res-product/values-bn/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ওয়্যারলেস চার্জ করতে ফোনটিকে সঠিকভাবে রাখুন"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ডিভাইস শীঘ্রই বন্ধ হয়ে যাবে, চালু রাখতে বোতাম প্রেস করুন।"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"ডিভাইস শীঘ্রই বন্ধ হয়ে যাবে, চালু রাখতে প্রেস করুন।"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ট্যাবলেটে কোনও সিম নেই।"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ফোনে কোনও সিম নেই।"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"পিন কোডগুলি মিলছে না"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"আপনি <xliff:g id="NUMBER_0">%1$d</xliff:g> বার ভুল পদ্ধতিতে ট্যাবলেট আনলক করার চেষ্টা করেছেন। আরও <xliff:g id="NUMBER_1">%2$d</xliff:g> বার এটি করলে ট্যাবলেটটি রিসেট করা হবে এবং তার ফলে সমস্ত ডেটা মুছে যাবে।"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"আপনি <xliff:g id="NUMBER_0">%1$d</xliff:g> বার ভুল পদ্ধতিতে ফোন আনলক করার চেষ্টা করেছেন। আরও <xliff:g id="NUMBER_1">%2$d</xliff:g> বার এটি করলে ফোনটি রিসেট করা হবে এবং তার ফলে সমস্ত ডেটা মুছে যাবে।"</string>
diff --git a/packages/SystemUI/res-product/values-bs/strings.xml b/packages/SystemUI/res-product/values-bs/strings.xml
index 629f546..50c216e 100644
--- a/packages/SystemUI/res-product/values-bs/strings.xml
+++ b/packages/SystemUI/res-product/values-bs/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Ponovo poravnajte telefon radi bežičnog punjenja"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV uređaj će se uskoro isključiti. Pritisnite neko dugme da ostane uključen."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Uređaj će se uskoro isključiti. Pritisnite da ostane uključen."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"U tabletu nema SIM-a."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"U telefonu nema SIM-a."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-ovi se ne podudaraju"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Pokušali ste neispravno otključati tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. U slučaju još <xliff:g id="NUMBER_1">%2$d</xliff:g> pokušaja bez uspjeha, tablet će se vratiti na zadano i svi podaci će se izbrisati."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Pokušali ste neispravno otključati tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. U slučaju još <xliff:g id="NUMBER_1">%2$d</xliff:g> pokušaja bez uspjeha, telefon će se vratiti na zadano i svi podaci će se izbrisati."</string>
diff --git a/packages/SystemUI/res-product/values-ca/strings.xml b/packages/SystemUI/res-product/values-ca/strings.xml
index d51762e..c2e09cb 100644
--- a/packages/SystemUI/res-product/values-ca/strings.xml
+++ b/packages/SystemUI/res-product/values-ca/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Col·loca bé el telèfon per carregar-lo sense fil"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"El dispositiu Android TV s\'apagarà aviat; prem un botó per mantenir-lo encès."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"El dispositiu s\'apagarà aviat; prem per mantenir-lo encès."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"No hi ha cap SIM a la tauleta."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"No hi ha cap SIM al telèfon."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Els PIN no coincideixen"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Has provat de desbloquejar la tauleta <xliff:g id="NUMBER_0">%1$d</xliff:g> vegades de manera incorrecta. Si falles <xliff:g id="NUMBER_1">%2$d</xliff:g> vegades més, la tauleta es restablirà i se\'n suprimiran totes les dades."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Has provat de desbloquejar el telèfon <xliff:g id="NUMBER_0">%1$d</xliff:g> vegades de manera incorrecta. Si falles <xliff:g id="NUMBER_1">%2$d</xliff:g> vegades més, el telèfon es restablirà i se\'n suprimiran totes les dades."</string>
diff --git a/packages/SystemUI/res-product/values-cs/strings.xml b/packages/SystemUI/res-product/values-cs/strings.xml
index e8fe4cd..81d49b0 100644
--- a/packages/SystemUI/res-product/values-cs/strings.xml
+++ b/packages/SystemUI/res-product/values-cs/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Zarovnejte telefon, aby se nabíjel bezdrátově"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Zařízení Android TV se brzy vypne, stisknutím tlačítka ho ponecháte zapnuté."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Zařízení se brzy vypne, stisknutím ho ponecháte zapnuté."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"V tabletu není SIM karta."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"V telefonu není SIM karta."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Kódy PIN se neshodují"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Již <xliff:g id="NUMBER_0">%1$d</xliff:g>krát jste se pokusili odemknout tablet nesprávným způsobem. Po <xliff:g id="NUMBER_1">%2$d</xliff:g> dalších neúspěšných pokusech bude tablet resetován, čímž se z něj smažou všechna data."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Již <xliff:g id="NUMBER_0">%1$d</xliff:g>krát jste se pokusili odemknout telefon nesprávným způsobem. Po <xliff:g id="NUMBER_1">%2$d</xliff:g> dalších neúspěšných pokusech bude telefon resetován, čímž se z něj smažou všechna data."</string>
diff --git a/packages/SystemUI/res-product/values-da/strings.xml b/packages/SystemUI/res-product/values-da/strings.xml
index 6436861..e029e2c 100644
--- a/packages/SystemUI/res-product/values-da/strings.xml
+++ b/packages/SystemUI/res-product/values-da/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Juster telefonens placering for at oplade den trådløst"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV-enheden slukker snart. Tryk på en knap for at holde den tændt."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Enheden slukker snart. Tryk for at holde den tændt."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Intet SIM-kort i tabletten."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Intet SIM-kort i telefonen."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Pinkoderne stemmer ikke overens"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Du har forsøgt at låse denne tablet op med den forkerte adgangskode <xliff:g id="NUMBER_0">%1$d</xliff:g> gange. Efter endnu <xliff:g id="NUMBER_1">%2$d</xliff:g> mislykkede forsøg nulstilles denne tablet, hvilket sletter alle dens data."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Du har forsøgt at låse telefonen op med den forkerte adgangskode <xliff:g id="NUMBER_0">%1$d</xliff:g> gange. Efter endnu <xliff:g id="NUMBER_1">%2$d</xliff:g> mislykkede forsøg nulstilles denne telefon, hvilket sletter alle dens data."</string>
diff --git a/packages/SystemUI/res-product/values-de/strings.xml b/packages/SystemUI/res-product/values-de/strings.xml
index 7db95d1..81f64ca 100644
--- a/packages/SystemUI/res-product/values-de/strings.xml
+++ b/packages/SystemUI/res-product/values-de/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Smartphone genau platzieren, um es kabellos zu laden"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Das Android TV-Gerät wird gleich ausgeschaltet. Falls es eingeschaltet bleiben soll, drücke eine Taste."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Das Gerät wird gleich ausgeschaltet. Falls es eingeschaltet bleiben soll, drücke beispielsweise eine Taste oder berühre den Bildschirm."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Keine SIM-Karte im Tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Keine SIM-Karte im Smartphone."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-Codes stimmen nicht überein"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Du hast <xliff:g id="NUMBER_0">%1$d</xliff:g>-mal erfolglos versucht, das Tablet zu entsperren. Nach <xliff:g id="NUMBER_1">%2$d</xliff:g> weiteren erfolglosen Versuchen wird dieses Tablet zurückgesetzt. Dadurch werden alle Gerätedaten gelöscht."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Du hast <xliff:g id="NUMBER_0">%1$d</xliff:g>-mal erfolglos versucht, das Smartphone zu entsperren. Nach <xliff:g id="NUMBER_1">%2$d</xliff:g> weiteren erfolglosen Versuchen wird es zurückgesetzt. Dadurch werden alle Gerätedaten gelöscht."</string>
diff --git a/packages/SystemUI/res-product/values-el/strings.xml b/packages/SystemUI/res-product/values-el/strings.xml
index f83d93c..eb4836f 100644
--- a/packages/SystemUI/res-product/values-el/strings.xml
+++ b/packages/SystemUI/res-product/values-el/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Ευθυγραμμίστε ξανά το τηλέφωνο, για να το φορτίσετε ασύρματα"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Η συσκευή Android TV σύντομα θα απενεργοποιηθεί. Πατήστε ένα κουμπί, για να την κρατήσετε ενεργοποιημένη."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Η συσκευή σύντομα θα απενεργοποιηθεί. Πατήστε, για να την κρατήσετε ενεργοποιημένη."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Δεν υπάρχει SIM στο tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Δεν υπάρχει SIM στο τηλέφωνο."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Οι κωδικοί PIN δεν ταυτίζονται"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Δοκιμάσατε να ξεκλειδώσετε το tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> φορές χωρίς επιτυχία. Μετά από <xliff:g id="NUMBER_1">%2$d</xliff:g> ακόμα ανεπιτυχείς προσπάθειες, θα γίνει επαναφορά του tablet και θα διαγραφούν όλα τα δεδομένα του."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Δοκιμάσατε να ξεκλειδώσετε το τηλέφωνο <xliff:g id="NUMBER_0">%1$d</xliff:g> φορές χωρίς επιτυχία. Μετά από <xliff:g id="NUMBER_1">%2$d</xliff:g> ακόμα ανεπιτυχείς προσπάθειες, θα γίνει επαναφορά του τηλεφώνου και θα διαγραφούν όλα τα δεδομένα του."</string>
diff --git a/packages/SystemUI/res-product/values-es-rUS/strings.xml b/packages/SystemUI/res-product/values-es-rUS/strings.xml
index 8d55bcd..b3551d2 100644
--- a/packages/SystemUI/res-product/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res-product/values-es-rUS/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Vuelve a alinear el teléfono para cargarlo inalámbricamente"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Pronto se apagará el dispositivo Android TV. Presiona un botón para mantenerlo encendido."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Pronto se apagará el dispositivo. Presiona para mantenerlo encendido."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"No hay ninguna tarjeta SIM en la tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"No hay ninguna tarjeta SIM en el teléfono."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Los códigos PIN no coinciden"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Intentaste desbloquear la tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> veces de manera incorrecta. Después de <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos más, se restablecerá la tablet, lo que borrará todos los datos."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Intentaste desbloquear el teléfono <xliff:g id="NUMBER_0">%1$d</xliff:g> veces de manera incorrecta. Después de <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos más, se restablecerá el teléfono, lo que borrará todos los datos."</string>
diff --git a/packages/SystemUI/res-product/values-es/strings.xml b/packages/SystemUI/res-product/values-es/strings.xml
index e440995..b973813 100644
--- a/packages/SystemUI/res-product/values-es/strings.xml
+++ b/packages/SystemUI/res-product/values-es/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Coloca bien el teléfono para cargarlo de manera inalámbrica"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"El dispositivo Android TV pronto se apagará; pulsa un botón para evitarlo."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"El dispositivo pronto se apagará si no interactúas con él."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"No hay ninguna SIM en la tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"No hay ninguna SIM en el teléfono."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Los códigos PIN no coinciden"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Has intentado desbloquear el tablet de forma incorrecta <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. Si se producen <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos más, se restablecerá el tablet y se eliminarán todos sus datos."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Has intentado desbloquear el teléfono de forma incorrecta <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. Si se producen <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos más, se restablecerá el teléfono y se eliminarán todos sus datos."</string>
diff --git a/packages/SystemUI/res-product/values-et/strings.xml b/packages/SystemUI/res-product/values-et/strings.xml
index 7165002..6f84f0e 100644
--- a/packages/SystemUI/res-product/values-et/strings.xml
+++ b/packages/SystemUI/res-product/values-et/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Juhtmeta laadimiseks asetage telefon õigesti"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV seade lülitub varsti välja; selle aktiivsena hoidmiseks vajutage nuppu."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Seade lülitub värsti välja; selle aktiivsena hoidmiseks vajutage nuppu."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Tahvelarvutis pole SIM-i."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Telefonis pole SIM-i."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-koodid ei ole vastavuses"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Olete püüdnud <xliff:g id="NUMBER_0">%1$d</xliff:g> korda tahvelarvutit valesti avada. Pärast veel <xliff:g id="NUMBER_1">%2$d</xliff:g> ebaõnnestunud katset tahvelarvuti lähtestatakse ja kõik selle andmed kustutatakse."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Olete püüdnud <xliff:g id="NUMBER_0">%1$d</xliff:g> korda telefoni valesti avada. Pärast veel <xliff:g id="NUMBER_1">%2$d</xliff:g> ebaõnnestunud katset telefon lähtestatakse ja kõik selle andmed kustutatakse."</string>
diff --git a/packages/SystemUI/res-product/values-eu/strings.xml b/packages/SystemUI/res-product/values-eu/strings.xml
index 1d6ff9a..5c1646c 100644
--- a/packages/SystemUI/res-product/values-eu/strings.xml
+++ b/packages/SystemUI/res-product/values-eu/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Jarri ondo telefonoa, haririk gabe karga dadin"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV gailua laster itzaliko da; sakatu botoi bat piztuta mantentzeko."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Gailua laster itzaliko da; sakatu piztuta mantentzeko."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Ez dago SIMik tabletan."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Ez dago SIMik telefonoan."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN kodeak ez datoz bat"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"<xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz saiatu zara tableta desblokeatzen, baina huts egin duzu denetan. Beste <xliff:g id="NUMBER_1">%2$d</xliff:g> aldiz huts egiten baduzu, berrezarri egingo da tableta eta, ondorioz, bertako datu guztiak ezabatuko dira."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"<xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz saiatu zara telefonoa desblokeatzen, baina huts egin duzu denetan. Beste <xliff:g id="NUMBER_1">%2$d</xliff:g> aldiz huts egiten baduzu, berrezarri egingo da telefonoa eta, ondorioz, bertako datu guztiak ezabatuko dira."</string>
diff --git a/packages/SystemUI/res-product/values-fa/strings.xml b/packages/SystemUI/res-product/values-fa/strings.xml
index edd802d8..606227a 100644
--- a/packages/SystemUI/res-product/values-fa/strings.xml
+++ b/packages/SystemUI/res-product/values-fa/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"برای شارژ بیسیم، تلفن را همتراز کنید"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"دستگاه Android TV بهزودی خاموش میشود، برای روشن نگهداشتن آن، دکمهای را فشار دهید."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"دستگاه بهزودی خاموش میشود، برای روشن نگهداشتن آن فشار دهید."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"سیمکارت در رایانه لوحی وجود ندارد."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"سیمکارت در تلفن وجود ندارد."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"کدهای پین منطبق نیستند"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"<xliff:g id="NUMBER_0">%1$d</xliff:g> تلاش ناموفق برای باز کردن قفل رایانه لوحی داشتهاید. پس از <xliff:g id="NUMBER_1">%2$d</xliff:g> تلاش ناموفق دیگر، این رایانه لوحی بازنشانی میشود که با آن همه دادههایش حذف میشود."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"<xliff:g id="NUMBER_0">%1$d</xliff:g> تلاش ناموفق برای باز کردن قفل تلفن داشتهاید. پس از <xliff:g id="NUMBER_1">%2$d</xliff:g> تلاش ناموفق دیگر، تلفن بازنشانی میشود که با آن همه دادههایش حذف میشود."</string>
diff --git a/packages/SystemUI/res-product/values-fi/strings.xml b/packages/SystemUI/res-product/values-fi/strings.xml
index ec24eac..0df7104 100644
--- a/packages/SystemUI/res-product/values-fi/strings.xml
+++ b/packages/SystemUI/res-product/values-fi/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Siirrä puhelinta, jotta se latautuu langattomasti"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ‑laite sammuu pian. Pidä se päällä painamalla painiketta."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Laite sammuu pian. Pidä se päällä painamalla."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Tabletissa ei ole SIM-korttia."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Puhelimessa ei ole SIM-korttia."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-koodit eivät täsmää"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Yritit avata tabletin lukituksen virheellisillä tiedoilla <xliff:g id="NUMBER_0">%1$d</xliff:g> kertaa. Jos <xliff:g id="NUMBER_1">%2$d</xliff:g> seuraavaa yritystä epäonnistuu, tämä puhelin nollataan ja kaikki sen data poistetaan."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Yritit avata puhelimen lukituksen virheellisillä tiedoilla <xliff:g id="NUMBER_0">%1$d</xliff:g> kertaa. Jos <xliff:g id="NUMBER_1">%2$d</xliff:g> seuraavaa yritystä epäonnistuu, tämä puhelin nollataan ja kaikki sen data poistetaan."</string>
diff --git a/packages/SystemUI/res-product/values-fr-rCA/strings.xml b/packages/SystemUI/res-product/values-fr-rCA/strings.xml
index dc8a94b..efbdca2 100644
--- a/packages/SystemUI/res-product/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-product/values-fr-rCA/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Réalignez le téléphone pour le recharger sans fil"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"L\'appareil Android TV va bientôt s\'éteindre. Appuyez sur un bouton pour le laisser allumé."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"L\'appareil va bientôt s\'éteindre. Interagissez avec lui pour le laisser allumé."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Aucune carte SIM ne se trouve dans la tablette."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Aucune carte SIM ne se trouve dans le téléphone."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Les NIP ne correspondent pas."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Vous avez tenté de déverrouiller cette tablette à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. Après <xliff:g id="NUMBER_1">%2$d</xliff:g> tentative(s) infructueuse(s) supplémentaire(s), cette tablette sera réinitialisée, ce qui entraînera la suppression de toutes les données qu\'elle contient."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Vous avez tenté de déverrouiller ce téléphone à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. Après <xliff:g id="NUMBER_1">%2$d</xliff:g> tentative(s) infructueuse(s) supplémentaire(s), le téléphone sera réinitialisé, ce qui entraînera la suppression de toutes les données qu\'il contient."</string>
diff --git a/packages/SystemUI/res-product/values-fr/strings.xml b/packages/SystemUI/res-product/values-fr/strings.xml
index bebd5a9..c255973 100644
--- a/packages/SystemUI/res-product/values-fr/strings.xml
+++ b/packages/SystemUI/res-product/values-fr/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Réalignez le téléphone pour le recharger sans fil"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"L\'appareil Android TV va bientôt passer en mode Veille. Appuyez sur un bouton pour qu\'il reste allumé."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"L\'appareil va bientôt passer en mode Veille. Appuyez dessus pour qu\'il reste allumé."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Aucune SIM dans la tablette."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Aucune SIM dans le téléphone."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Les codes PIN ne correspondent pas"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Vous avez tenté de déverrouiller la tablette à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%2$d</xliff:g> fois, elle sera réinitialisée et toutes les données qu\'elle contient seront supprimées."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Vous avez tenté de déverrouiller le téléphone à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%2$d</xliff:g> fois, il sera réinitialisé et toutes les données qu\'il contient seront supprimées."</string>
diff --git a/packages/SystemUI/res-product/values-gl/strings.xml b/packages/SystemUI/res-product/values-gl/strings.xml
index 62ee6d6..18d5be9 100644
--- a/packages/SystemUI/res-product/values-gl/strings.xml
+++ b/packages/SystemUI/res-product/values-gl/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Aliña de novo o teléfono para cargalo sen fíos"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Pronto se apagará o dispositivo Android TV. Preme un botón para mantelo acendido."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Pronto se apagará o teléfono. Tócao para mantelo acendido."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Non hai ningunha SIM na tableta."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Non hai ningunha SIM no teléfono."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Os códigos PIN non coinciden"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Tentaches desbloquear a tableta <xliff:g id="NUMBER_0">%1$d</xliff:g> veces de forma incorrecta. Se realizas <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos máis, restablecerase a tableta e, por conseguinte, eliminaranse todos os seus datos."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Tentaches desbloquear o teléfono <xliff:g id="NUMBER_0">%1$d</xliff:g> veces de forma incorrecta. Se realizas <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos máis, restablecerase o teléfono e, por conseguinte, eliminaranse todos os seus datos."</string>
diff --git a/packages/SystemUI/res-product/values-gu/strings.xml b/packages/SystemUI/res-product/values-gu/strings.xml
index 3ff472a..4e6f78e 100644
--- a/packages/SystemUI/res-product/values-gu/strings.xml
+++ b/packages/SystemUI/res-product/values-gu/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ફોનને વાયરલેસ રીતે ચાર્જ કરવા માટે ફરીથી ગોઠવો"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ડિવાઇસ ટૂંક સમયમાં બંધ થશે; તેને ચાલુ રાખવા માટે બટન દબાવો."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"ડિવાઇસ ટૂંક સમયમાં બંધ થશે; તેને ચાલુ રાખવા માટે દબાવો."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ટૅબ્લેટમાં કોઈ સિમ કાર્ડ નથી."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ફોનમાં કોઈ સિમ કાર્ડ નથી."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"પિન કોડ મેળ ખાતા નથી"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"તમે ટૅબ્લેટને <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે અનલૉક કરવાનો પ્રયાસ કર્યો છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> અસફળ પ્રયાસો પછી, આ ટૅબ્લેટ રીસેટ કરવામાં આવશે, જે તેનો તમામ ડેટા ડિલીટ કરી દેશે."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"તમે ફોનને <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે અનલૉક કરવાનો પ્રયાસ કર્યો છે. વધુ <xliff:g id="NUMBER_1">%2$d</xliff:g> અસફળ પ્રયાસો પછી, આ ફોન રીસેટ કરવામાં આવશે, જે તેનો તમામ ડેટા ડિલીટ કરી દેશે."</string>
diff --git a/packages/SystemUI/res-product/values-hi/strings.xml b/packages/SystemUI/res-product/values-hi/strings.xml
index a459e66..faa9459 100644
--- a/packages/SystemUI/res-product/values-hi/strings.xml
+++ b/packages/SystemUI/res-product/values-hi/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"वायरलेस चार्जिंग के लिए, फ़ोन को डॉक पर ठीक तरह से रखें"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV डिवाइस जल्द ही बंद हो जाएगा. इसे चालू रखने के लिए किसी बटन को दबाएं."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"डिवाइस जल्द ही बंद हो जाएगा. इसे चालू रखने के लिए किसी बटन को दबाएं."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"टैबलेट में कोई सिम नहीं है."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"फ़ोन में कोई सिम नहीं है."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"पिन कोड मेल नहीं खा रहा"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"आप टैबलेट को अनलॉक करने के लिए <xliff:g id="NUMBER_0">%1$d</xliff:g> बार गलत पासवर्ड डाल चुके हैं. इसलिए, <xliff:g id="NUMBER_1">%2$d</xliff:g> और गलत पासवर्ड डालने के बाद, इस टैबलेट को रीसेट कर दिया जाएगा. ऐसा होने पर, इसका सारा डेटा मिट जाएगा."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"आप फ़ोन को अनलॉक करने के लिए <xliff:g id="NUMBER_0">%1$d</xliff:g> बार गलत पासवर्ड डाल चुके हैं. इसलिए, <xliff:g id="NUMBER_1">%2$d</xliff:g> और गलत पासवर्ड डालने के बाद, इस फ़ोन को रीसेट कर दिया जाएगा. ऐसा होने पर, इसका सारा डेटा मिट जाएगा."</string>
diff --git a/packages/SystemUI/res-product/values-hr/strings.xml b/packages/SystemUI/res-product/values-hr/strings.xml
index b4e24ea..8ebd987 100644
--- a/packages/SystemUI/res-product/values-hr/strings.xml
+++ b/packages/SystemUI/res-product/values-hr/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Ponovo namjestite telefon da bi se punio bežično"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Uređaj Android TV uskoro će se isključiti. Pritisnite gumb da bi ostao uključen."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Uređaj će se uskoro isključiti. Pritisnite da bi ostao uključen."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"U tabletu nema SIM-a."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"U telefonu nema SIM-a."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN kodovi nisu jednaki"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Neuspješno ste pokušali otključati tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> put/a. Nakon još <xliff:g id="NUMBER_1">%2$d</xliff:g> pokušaja tablet će se vratiti na zadano, a time će se izbrisati i svi podaci na njemu."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Neuspješno ste pokušali otključati telefon <xliff:g id="NUMBER_0">%1$d</xliff:g> put/a. Nakon još <xliff:g id="NUMBER_1">%2$d</xliff:g> pokušaja telefon će se vratiti na zadano, a time će se izbrisati i svi podaci na njemu."</string>
diff --git a/packages/SystemUI/res-product/values-hu/strings.xml b/packages/SystemUI/res-product/values-hu/strings.xml
index 7af62dea..821b572 100644
--- a/packages/SystemUI/res-product/values-hu/strings.xml
+++ b/packages/SystemUI/res-product/values-hu/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Igazítsa a helyére a telefont a vezeték nélküli töltéshez"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Az Android TV eszköz hamarosan kikapcsol. Nyomja meg valamelyik gombot, hogy bekapcsolva tarthassa."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Az eszköz hamarosan kikapcsol. Nyomja meg, hogy bekapcsolva tarthassa."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Nincs SIM a táblagépben."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Nincs SIM a telefonban."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"A PIN-kódok nem egyeznek"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"<xliff:g id="NUMBER_0">%1$d</xliff:g> alkalommal próbálkozott sikertelenül a táblagép zárolásának feloldásával. További <xliff:g id="NUMBER_1">%2$d</xliff:g> sikertelen kísérlet után a rendszer visszaállítja a táblagépet, és ezzel az összes adat törlődik róla."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"<xliff:g id="NUMBER_0">%1$d</xliff:g> alkalommal próbálkozott sikertelenül a telefon zárolásának feloldásával. További <xliff:g id="NUMBER_1">%2$d</xliff:g> sikertelen kísérlet után a rendszer visszaállítja a telefont, és ezzel az összes adat törlődik róla."</string>
diff --git a/packages/SystemUI/res-product/values-hy/strings.xml b/packages/SystemUI/res-product/values-hy/strings.xml
index e4546f2..3aae6ac 100644
--- a/packages/SystemUI/res-product/values-hy/strings.xml
+++ b/packages/SystemUI/res-product/values-hy/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Կարգավորեք հեռախոսը` առանց լարի լիցքավորելու համար"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV սարքը շուտով կանջատվի: Սեղմեք որևէ կոճակ՝ միացրած թողնելու համար:"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Սարքը շուտով կանջատվի: Սեղմեք՝ միացրած թողնելու համար:"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Պլանշետում SIM քարտ չկա։"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Հեռախոսում SIM քարտ չկա։"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN կոդերը չեն համընկնում"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Դուք կատարել եք պլանշետն ապակողպելու <xliff:g id="NUMBER_0">%1$d</xliff:g> անհաջող փորձ: Եվս <xliff:g id="NUMBER_1">%2$d</xliff:g> անհաջող փորձից հետո այս պլանշետը կվերակայվի և բոլոր տվյալները կջնջվեն:"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Դուք կատարել եք հեռախոսն ապակողպելու <xliff:g id="NUMBER_0">%1$d</xliff:g> անհաջող փորձ: Եվս <xliff:g id="NUMBER_1">%2$d</xliff:g> անհաջող փորձից հետո այս հեռախոսի կարգավորումները կզրոյացվեն, և բոլոր տվյալները կջնջվեն:"</string>
diff --git a/packages/SystemUI/res-product/values-in/strings.xml b/packages/SystemUI/res-product/values-in/strings.xml
index 78e41d5..3710317 100644
--- a/packages/SystemUI/res-product/values-in/strings.xml
+++ b/packages/SystemUI/res-product/values-in/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Sejajarkan ulang ponsel untuk mengisi daya secara nirkabel"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Perangkat Android TV akan segera dimatikan; tekan tombol untuk terus menyalakannya."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Perangkat akan segera dimatikan, tekan untuk terus menyalakannya."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Tidak ada SIM di tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Tidak ada SIM di ponsel."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Kode PIN tidak cocok"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Anda telah <xliff:g id="NUMBER_0">%1$d</xliff:g> kali berupaya membuka kunci tablet dengan tidak benar. Setelah <xliff:g id="NUMBER_1">%2$d</xliff:g> lagi upaya yang tidak berhasil, tablet ini akan direset, sehingga semua datanya akan dihapus."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Anda telah <xliff:g id="NUMBER_0">%1$d</xliff:g> kali berupaya membuka kunci ponsel dengan tidak benar. Setelah <xliff:g id="NUMBER_1">%2$d</xliff:g> lagi upaya yang tidak berhasil, ponsel ini akan direset, sehingga semua datanya akan dihapus."</string>
diff --git a/packages/SystemUI/res-product/values-is/strings.xml b/packages/SystemUI/res-product/values-is/strings.xml
index bb6c7ba..b7f1c1b 100644
--- a/packages/SystemUI/res-product/values-is/strings.xml
+++ b/packages/SystemUI/res-product/values-is/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Færðu símann til að hlaða þráðlaust"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV tækið slekkur á sér fljótlega. Ýttu á takka til að það slokkni ekki á því."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Tækið slekkur á sér fljótlega. Ýttu á takka til að það slokkni ekki á því."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Það er ekkert SIM-kort í spjaldtölvunni."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Það er ekkert SIM-kort í símanum."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-númerin stemma ekki"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Þú hefur gert <xliff:g id="NUMBER_0">%1$d</xliff:g> árangurslausar tilraunir til að opna spjaldtölvuna. Eftir <xliff:g id="NUMBER_1">%2$d</xliff:g> árangurslausar tilraunir í viðbót verður spjaldtölvan endurstillt, með þeim afleiðingum að öllum gögnum hennar verður eytt."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Þú hefur gert <xliff:g id="NUMBER_0">%1$d</xliff:g> árangurslausar tilraunir til að opna símann. Eftir <xliff:g id="NUMBER_1">%2$d</xliff:g> árangurslausar tilraunir í viðbót verður síminn endurstilltur, með þeim afleiðingum að öllum gögnum hans verður eytt."</string>
diff --git a/packages/SystemUI/res-product/values-it/strings.xml b/packages/SystemUI/res-product/values-it/strings.xml
index b9c78f7..14f3747 100644
--- a/packages/SystemUI/res-product/values-it/strings.xml
+++ b/packages/SystemUI/res-product/values-it/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Riallinea il telefono per caricarlo in modalità wireless"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Presto il dispositivo Android TV si spegnerà. Premi un pulsante per tenerlo acceso."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Presto il dispositivo si spegnerà. Premi per tenerlo acceso."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Nessuna SIM presente nel tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Nessuna SIM presente nel telefono."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"I codici PIN non corrispondono"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Hai tentato di sbloccare il tablet senza riuscirci per <xliff:g id="NUMBER_0">%1$d</xliff:g> volte. Dopo altri <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativi falliti, il tablet verrà ripristinato e verranno quindi eliminati tutti i relativi dati."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Hai tentato di sbloccare il telefono senza riuscirci per <xliff:g id="NUMBER_0">%1$d</xliff:g> volte. Dopo altri <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativi falliti, il telefono verrà ripristinato e verranno quindi eliminati tutti i relativi dati."</string>
diff --git a/packages/SystemUI/res-product/values-iw/strings.xml b/packages/SystemUI/res-product/values-iw/strings.xml
index 0b30cd3..d51f71c 100644
--- a/packages/SystemUI/res-product/values-iw/strings.xml
+++ b/packages/SystemUI/res-product/values-iw/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"צריך ליישר את הטלפון כדי לטעון אותו באופן אלחוטי"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"מכשיר ה-Android TV ייכבה בקרוב. יש ללחוץ על לחצן כלשהו כדי שהוא ימשיך לפעול."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"המכשיר ייכבה בקרוב, יש ללחוץ כדי שהוא ימשיך לפעול."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"אין כרטיס SIM בטאבלט."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"אין כרטיס SIM בטלפון."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"קודי האימות לא תואמים"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"ניסית לבטל את נעילת הטאבלט <xliff:g id="NUMBER_0">%1$d</xliff:g> פעמים. לאחר <xliff:g id="NUMBER_1">%2$d</xliff:g> ניסיונות כושלים נוספים, הטאבלט הזה יאופס וכל הנתונים שבו יימחקו."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"ניסית לבטל את נעילת הטלפון <xliff:g id="NUMBER_0">%1$d</xliff:g> פעמים. לאחר <xliff:g id="NUMBER_1">%2$d</xliff:g> ניסיונות כושלים נוספים, הטלפון הזה יאופס וכל הנתונים שבו יימחקו."</string>
diff --git a/packages/SystemUI/res-product/values-ja/strings.xml b/packages/SystemUI/res-product/values-ja/strings.xml
index a4e0194..44ddf4f 100644
--- a/packages/SystemUI/res-product/values-ja/strings.xml
+++ b/packages/SystemUI/res-product/values-ja/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ワイヤレス充電するにはスマートフォンの位置を調整してください"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV デバイスはまもなく OFF になります。ON 状態を維持するには、ボタンを押してください。"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"このデバイスはまもなく OFF になります。ON 状態を維持するには、ボタンを押してください。"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"タブレットに SIM がありません。"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"スマートフォンに SIM がありません。"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN コードが一致しません"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"タブレットのロック解除に <xliff:g id="NUMBER_0">%1$d</xliff:g> 回失敗しました。あと <xliff:g id="NUMBER_1">%2$d</xliff:g> 回失敗すると、このタブレットはリセットされ、データはすべて消去されます。"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"スマートフォンのロック解除に <xliff:g id="NUMBER_0">%1$d</xliff:g> 回失敗しました。あと <xliff:g id="NUMBER_1">%2$d</xliff:g> 回失敗すると、このスマートフォンはリセットされ、データはすべて消去されます。"</string>
diff --git a/packages/SystemUI/res-product/values-ka/strings.xml b/packages/SystemUI/res-product/values-ka/strings.xml
index b804a57..60b7b0c 100644
--- a/packages/SystemUI/res-product/values-ka/strings.xml
+++ b/packages/SystemUI/res-product/values-ka/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ხელახლა შეუერთეთ ტელეფონი უსადენოდ დასამუხტად"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV მოწყობილობა მალე გამოირთვება, დააჭირეთ ღილაკს, რომ ჩართული დარჩეს."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"მოწყობილობა მალე გამოირთვება, დააჭირეთ, რომ ჩართული დარჩეს."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ტაბლეტში SIM არ არის."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ტელეფონში SIM არ არის."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-კოდები არ ემთხვევა"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"თქვენ არასწორად ცადეთ ტაბლეტის განბლოკვა <xliff:g id="NUMBER_0">%1$d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%2$d</xliff:g> წარუმატებელი მცდელობის შემდეგ, ეს ტაბლეტი გადაყენდება, რაც მისი მონაცემების მთლიანად წაშლას გამოიწვევს."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"თქვენ არასწორად ცადეთ ტელეფონის განბლოკვა <xliff:g id="NUMBER_0">%1$d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%2$d</xliff:g> წარუმატებელი მცდელობის შემდეგ, ეს ტელეფონი გადაყენდება, რაც მისი მონაცემების მთლიანად წაშლას გამოიწვევს."</string>
diff --git a/packages/SystemUI/res-product/values-kk/strings.xml b/packages/SystemUI/res-product/values-kk/strings.xml
index bdd44a1..428cfa3 100644
--- a/packages/SystemUI/res-product/values-kk/strings.xml
+++ b/packages/SystemUI/res-product/values-kk/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Сымсыз зарядтау үшін телефонды қайта туралаңыз."</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV құрылғысы жақын арада өшеді. Оны қосулы ұстау үшін басыңыз."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Құрылғы жақын арада өшеді. Оны қосулы ұстау үшін басыңыз."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Планшетте SIM картасы жоқ."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Телефонда SIM картасы жоқ."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN коды сәйкес келмейді"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Планшет құлпын ашуға <xliff:g id="NUMBER_0">%1$d</xliff:g> рет сәтсіз әрекет жасалды. <xliff:g id="NUMBER_1">%2$d</xliff:g> әрекет қалды. Одан кейін осы планшет бастапқы күйіне қайтарылып, оның бүкіл деректері жойылады."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Телефон құлпын ашуға <xliff:g id="NUMBER_0">%1$d</xliff:g> рет сәтсіз әрекет жасалды. <xliff:g id="NUMBER_1">%2$d</xliff:g> әрекет қалды. Одан кейін осы телефон бастапқы күйіне қайтарылып, оның бүкіл деректері жойылады."</string>
diff --git a/packages/SystemUI/res-product/values-km/strings.xml b/packages/SystemUI/res-product/values-km/strings.xml
index e2293b2..9dd1b1a 100644
--- a/packages/SystemUI/res-product/values-km/strings.xml
+++ b/packages/SystemUI/res-product/values-km/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ដាក់ទូរសព្ទឱ្យត្រូវកន្លែង ដើម្បីសាកថ្មដោយឥតប្រើខ្សែ"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"ឧបករណ៍ Android TV នឹងបិទក្នុងពេលឆាប់ៗនេះ សូមចុចប៊ូតុងដើម្បីបន្តបើកឧបករណ៍។"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"ឧបករណ៍នឹងបិទក្នុងពេលឆាប់ៗនេះ សូមចុចដើម្បីបន្តបើកឧបករណ៍។"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"គ្មានស៊ីមក្នុងថេប្លេតទេ។"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"គ្មានស៊ីមក្នុងទូរសព្ទទេ។"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"កូដ PIN មិនត្រូវគ្នាទេ"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"អ្នកបានព្យាយាមដោះសោថេប្លេតនេះមិនត្រឹមត្រូវចំនួន <xliff:g id="NUMBER_0">%1$d</xliff:g> ដងហើយ។ បន្ទាប់ពីមានការព្យាយាមដោះសោចំនួន <xliff:g id="NUMBER_1">%2$d</xliff:g> ដងទៀតមិនទទួលបានជោគជ័យ ថេប្លេតនេះនឹងត្រូវបានកំណត់ឡើងវិញ ហើយវានឹងលុបទិន្នន័យទាំងអស់របស់ថេប្លេតនេះ។"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"អ្នកបានព្យាយាមដោះសោទូរសព្ទនេះមិនត្រឹមត្រូវចំនួន <xliff:g id="NUMBER_0">%1$d</xliff:g> ដងហើយ។ បន្ទាប់ពីមានការព្យាយាមដោះសោចំនួន <xliff:g id="NUMBER_1">%2$d</xliff:g> ដងទៀតមិនទទួលបានជោគជ័យ ទូរសព្ទនេះនឹងត្រូវបានកំណត់ឡើងវិញ ហើយវានឹងលុបទិន្នន័យទាំងអស់របស់ទូរសព្ទនេះ។"</string>
diff --git a/packages/SystemUI/res-product/values-kn/strings.xml b/packages/SystemUI/res-product/values-kn/strings.xml
index e466c3e..b6551ba 100644
--- a/packages/SystemUI/res-product/values-kn/strings.xml
+++ b/packages/SystemUI/res-product/values-kn/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ವೈರ್ಲೆಸ್ ಆಗಿ ಚಾರ್ಜ್ ಮಾಡಲು, ನಿಮ್ಮ ಫೋನ್ ಸ್ಥಾನವನ್ನು ಮರುಹೊಂದಿಸಿ"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ಸಾಧನವು ಶೀಘ್ರವೇ ಆಫ್ ಆಗುತ್ತದೆ; ಇದನ್ನು ಆನ್ನಲ್ಲಿಡಲು ಬಟನ್ ಅನ್ನು ಒತ್ತಿರಿ."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"ಸಾಧನವು ಶೀಘ್ರವೇ ಆಫ್ ಆಗುತ್ತದೆ; ಇದನ್ನು ಆನ್ನಲ್ಲಿಡಲು ಒತ್ತಿರಿ."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ಟ್ಯಾಬ್ಲೆಟ್ನಲ್ಲಿ SIM ಇಲ್ಲ."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ಫೋನ್ನಲ್ಲಿ SIM ಇಲ್ಲ."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"ಪಿನ್ ಕೋಡ್ಗಳು ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತಿಲ್ಲ"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲು ನೀವು <xliff:g id="NUMBER_0">%1$d</xliff:g> ಬಾರಿ ತಪ್ಪಾಗಿ ಪ್ರಯತ್ನಿಸಿದ್ದೀರಿ. <xliff:g id="NUMBER_1">%2$d</xliff:g> ಕ್ಕೂ ಹೆಚ್ಚಿನ ವಿಫಲ ಪ್ರಯತ್ನಗಳ ನಂತರ, ಈ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲಾಗುತ್ತದೆ, ಇದು ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"ಫೋನ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲು ನೀವು <xliff:g id="NUMBER_0">%1$d</xliff:g> ಬಾರಿ ತಪ್ಪಾಗಿ ಪ್ರಯತ್ನಿಸಿದ್ದೀರಿ. <xliff:g id="NUMBER_1">%2$d</xliff:g> ಕ್ಕೂ ಹೆಚ್ಚಿನ ವಿಫಲ ಪ್ರಯತ್ನಗಳ ನಂತರ, ಈ ಫೋನ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲಾಗುತ್ತದೆ, ಇದು ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ."</string>
diff --git a/packages/SystemUI/res-product/values-ko/strings.xml b/packages/SystemUI/res-product/values-ko/strings.xml
index 948b674..cca0ace 100644
--- a/packages/SystemUI/res-product/values-ko/strings.xml
+++ b/packages/SystemUI/res-product/values-ko/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"무선으로 충전하려면 스마트폰을 다시 배치하세요."</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV가 곧 꺼집니다. 계속 켜 두려면 버튼을 누르세요."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"기기가 곧 꺼집니다. 계속 켜 두려면 누르세요."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"태블릿에 SIM이 없습니다."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"휴대전화에 SIM이 없습니다."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN 코드가 일치하지 않음"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"태블릿 잠금 해제에 <xliff:g id="NUMBER_0">%1$d</xliff:g>번 실패했습니다. <xliff:g id="NUMBER_1">%2$d</xliff:g>번 더 실패하면 태블릿이 초기화되며 모든 데이터가 삭제됩니다."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"휴대전화 잠금 해제에 <xliff:g id="NUMBER_0">%1$d</xliff:g>번 실패했습니다. <xliff:g id="NUMBER_1">%2$d</xliff:g>번 더 실패하면 휴대전화가 초기화되며 모든 데이터가 삭제됩니다."</string>
diff --git a/packages/SystemUI/res-product/values-ky/strings.xml b/packages/SystemUI/res-product/values-ky/strings.xml
index debac16..a0d77f9 100644
--- a/packages/SystemUI/res-product/values-ky/strings.xml
+++ b/packages/SystemUI/res-product/values-ky/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Телефонду зымсыз кубаттоо үчүн туура коюңуз"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV түзмөгү жакында өчүрүлөт, аны күйүк боюнча калтыруу үчүн баскычты басыңыз."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Түзмөк жакында өчүрүлөт, күйүк боюнча калтыруу үчүн басып коюңуз."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Планшетте SIM карта жок."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Телефондо SIM карта жок."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-коддор дал келген жок"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Планшеттин кулпусун <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес ачууга аракет жасадыңыз. Дагы <xliff:g id="NUMBER_1">%2$d</xliff:g> жолу ийгиликсиз аракет кылсаңыз, бул планшет баштапкы абалга келтирилип, андагы бардык нерселер өчүрүлөт."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Телефондун кулпусун <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес ачууга аракет жасадыңыз. Дагы <xliff:g id="NUMBER_1">%2$d</xliff:g> жолу ийгиликсиз аракет кылсаңыз, бул телефон баштапкы абалга келтирилип, андагы бардык нерселер өчүрүлөт."</string>
diff --git a/packages/SystemUI/res-product/values-lo/strings.xml b/packages/SystemUI/res-product/values-lo/strings.xml
index fe9956d..dee445b 100644
--- a/packages/SystemUI/res-product/values-lo/strings.xml
+++ b/packages/SystemUI/res-product/values-lo/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ຈັດວາງໂທລະສັບໃໝ່ເພື່ອສາກແບບໄຮ້ສາຍ"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"ອຸປະກອນ Android TV ຈະປິດໃນອີກບໍ່ດົນ, ກົດປຸ່ມໃດໜຶ່ງເພື່ອເປີດມັນໄວ້ຕໍ່."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"ອຸປະກອນຈະປິດໃນອີກບໍ່ດົນ, ກົດເພື່ອເປີດມັນໄວ້ຕໍ່."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ບໍ່ມີຊິມໃນແທັບເລັດ."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ບໍ່ມີຊິມໃນໂທລະສັບ."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"ລະຫັດ PIN ບໍ່ກົງກັນ"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"ທ່ານພະຍາຍາມປົດລັອກແທັບເລັດຜິດ <xliff:g id="NUMBER_0">%1$d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກລອງບໍ່ສຳເລັດອີກ <xliff:g id="NUMBER_1">%2$d</xliff:g> ເທື່ອ, ແທັບເລັດນີ້ຈະຖືກຣີເຊັດ, ເຊິ່ງຈະລຶບຂໍ້ມູນທັງໝົດຂອງມັນອອກນຳ."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"ທ່ານພະຍາຍາມປົດລັອກໂທລະສັບຜິດ <xliff:g id="NUMBER_0">%1$d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກລອງບໍ່ສຳເລັດອີກ <xliff:g id="NUMBER_1">%2$d</xliff:g> ເທື່ອ, ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຈະຖືກຣີເຊັດ, ເຊິ່ງຈະລຶບຂໍ້ມູນທັງໝົດຂອງມັນອອກນຳ."</string>
diff --git a/packages/SystemUI/res-product/values-lt/strings.xml b/packages/SystemUI/res-product/values-lt/strings.xml
index 8e2f1fd..3f36427 100644
--- a/packages/SystemUI/res-product/values-lt/strings.xml
+++ b/packages/SystemUI/res-product/values-lt/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Sulygiuokite telefoną iš naujo, kad gal. įkrauti be laidų"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"„Android TV“ įrenginys netrukus išsijungs. Paspauskite mygtuką, kad jis liktų įjungtas."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Įrenginys netrukus išsijungs. Paspauskite, kad jis liktų įjungtas."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Planšetiniame kompiuteryje nėra SIM kortelės."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Telefone nėra SIM kortelės."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN kodai nesutampa"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"<xliff:g id="NUMBER_0">%1$d</xliff:g> kart. nesėkmingai bandėte atrakinti planšetinį kompiuterį. Po dar <xliff:g id="NUMBER_1">%2$d</xliff:g> nesėkm. band. šis planšetinis kompiuteris bus nustatytas iš naujo ir visi jo duomenys bus ištrinti."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"<xliff:g id="NUMBER_0">%1$d</xliff:g> kart. nesėkmingai bandėte atrakinti telefoną. Po dar <xliff:g id="NUMBER_1">%2$d</xliff:g> nesėkm. band. šis telefonas bus nustatytas iš naujo ir visi jo duomenys bus ištrinti."</string>
diff --git a/packages/SystemUI/res-product/values-lv/strings.xml b/packages/SystemUI/res-product/values-lv/strings.xml
index acb07ffc..e079324 100644
--- a/packages/SystemUI/res-product/values-lv/strings.xml
+++ b/packages/SystemUI/res-product/values-lv/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Pārvietojiet tālruni citā vietā, lai veiktu bezvadu uzlādi."</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ierīce drīz izslēgsies. Nospiediet pogu, lai ierīce paliktu ieslēgta."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Ierīce drīz izslēgsies. Nospiediet pogu, lai ierīce paliktu ieslēgta."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Planšetdatorā nav SIM kartes."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Tālrunī nav SIM kartes."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN kodi neatbilst."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Jūs <xliff:g id="NUMBER_0">%1$d</xliff:g> reizi(-es) nesekmīgi mēģinājāt atbloķēt planšetdatoru. Pēc vēl <xliff:g id="NUMBER_1">%2$d</xliff:g> nesekmīga(-iem) mēģinājuma(-iem) šis planšetdators tiks atiestatīts, kā arī visi planšetdatora dati tiks dzēsti."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Jūs <xliff:g id="NUMBER_0">%1$d</xliff:g> reizi(-es) nesekmīgi mēģinājāt atbloķēt tālruni. Pēc vēl <xliff:g id="NUMBER_1">%2$d</xliff:g> nesekmīga(-iem) mēģinājuma(-iem) šis tālrunis tiks atiestatīts, kā arī visi tālruņa dati tiks dzēsti."</string>
diff --git a/packages/SystemUI/res-product/values-mk/strings.xml b/packages/SystemUI/res-product/values-mk/strings.xml
index 6d82621..c8be656 100644
--- a/packages/SystemUI/res-product/values-mk/strings.xml
+++ b/packages/SystemUI/res-product/values-mk/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Повторно порамнете го телефонот за да се полни безжично"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Уредот Android TV наскоро ќе се исклучи. Притиснете копче за да остане вклучен."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Уредот наскоро ќе се исклучи. Притиснете за да остане вклучен."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Нема SIM-картичка во таблетот."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Нема SIM-картичка во телефонот."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-кодовите не се совпаѓаат"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Погрешно се обидовте да го отклучите таблетот <xliff:g id="NUMBER_0">%1$d</xliff:g> пати. По уште <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешни обиди, таблетов ќе се ресетира, со што ќе се избришат сите негови податоци."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Погрешно се обидовте да го отклучите телефонот <xliff:g id="NUMBER_0">%1$d</xliff:g> пати. По уште <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешни обиди, телефонот ќе се ресетира, со што ќе се избришат сите негови податоци."</string>
diff --git a/packages/SystemUI/res-product/values-ml/strings.xml b/packages/SystemUI/res-product/values-ml/strings.xml
index a0ad612..756e165 100644
--- a/packages/SystemUI/res-product/values-ml/strings.xml
+++ b/packages/SystemUI/res-product/values-ml/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"വയർലെസായി ചാർജ് ചെയ്യാൻ ഫോണിന്റെ സ്ഥാനം പുനഃക്രമീകരിക്കുക"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ഉടൻ ഓഫാകും, ഓണാക്കി നിർത്താൻ ഒരു ബട്ടൺ അമർത്തുക."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"ഉപകരണം ഉടൻ ഓഫാകും; ഓണാക്കി നിർത്താൻ അമർത്തുക."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ടാബ്ലെറ്റിൽ സിം ഇല്ല."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ഫോണിൽ സിം ഇല്ല."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"പിൻ കോഡുകൾ പൊരുത്തപ്പെടുന്നില്ല"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"നിങ്ങൾ <xliff:g id="NUMBER_0">%1$d</xliff:g> തവണ തെറ്റായ രീതിയിൽ ടാബ്ലെറ്റ് അൺലോക്ക് ചെയ്യാൻ ശ്രമിച്ചു. <xliff:g id="NUMBER_1">%2$d</xliff:g> ശ്രമങ്ങൾ കൂടി പരാജയപ്പെട്ടാൽ, ഈ ടാബ്ലെറ്റ് റീസെറ്റ് ചെയ്യപ്പെടുകയും, അതുവഴി അതിലെ എല്ലാ ഡാറ്റയും ഇല്ലാതാകുകയും ചെയ്യും."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"നിങ്ങൾ <xliff:g id="NUMBER_0">%1$d</xliff:g> തവണ തെറ്റായ രീതിയിൽ ഫോൺ അൺലോക്ക് ചെയ്യാൻ ശ്രമിച്ചു. <xliff:g id="NUMBER_1">%2$d</xliff:g> ശ്രമങ്ങൾ കൂടി പരാജയപ്പെട്ടാൽ ഈ ഫോൺ റീസെറ്റ് ചെയ്യപ്പെടുകയും, അതുവഴി അതിലെ എല്ലാ ഡാറ്റയും ഇല്ലാതാകുകയും ചെയ്യും."</string>
diff --git a/packages/SystemUI/res-product/values-mn/strings.xml b/packages/SystemUI/res-product/values-mn/strings.xml
index e8c7353..984337b 100644
--- a/packages/SystemUI/res-product/values-mn/strings.xml
+++ b/packages/SystemUI/res-product/values-mn/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Утасгүйгээр цэнэглэхийн тулд утсыг дахин байрлуулна уу"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV төхөөрөмж удахгүй унтрах тул асаалттай хэвээр байлгахын тулд товчлуурыг дарна уу."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Төхөөрөмж удахгүй унтрах тул асаалттай хэвээр байлгахын тулд дарна уу."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Таблетад SIM байхгүй байна."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Утсанд SIM байхгүй байна."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"ПИН код тохирохгүй байна"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Та таблетын түгжээг тайлах оролдлогыг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу хийсэн байна. Дахин <xliff:g id="NUMBER_1">%2$d</xliff:g> удаа буруу хийсний дараа энэ таблетыг шинэчлэх бөгөөд ингэснээр бүх өгөгдлийг нь устгах болно."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Та утасны түгжээг тайлах оролдлогыг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу хийсэн байна. Дахин <xliff:g id="NUMBER_1">%2$d</xliff:g> удаа буруу хийсний дараа энэ утсыг шинэчлэх бөгөөд ингэснээр бүх өгөгдлийг нь устгах болно."</string>
diff --git a/packages/SystemUI/res-product/values-mr/strings.xml b/packages/SystemUI/res-product/values-mr/strings.xml
index 82b8c58..d8191a8 100644
--- a/packages/SystemUI/res-product/values-mr/strings.xml
+++ b/packages/SystemUI/res-product/values-mr/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"वायरलेस पद्धतीने चार्ज करण्यासाठी फोन पुन्हा अलाइन करा"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV डिव्हाइस लवकरच बंद होणार आहे; सुरू ठेवण्यासाठी बटण दाबा."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"डिव्हाइस लवकरच बंद होणार आहे; ते सुरू ठेवण्यासाठी दाबा."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"टॅबलेटमध्ये सिम नाही."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"फोनमध्ये सिम नाही."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"पिन कोड जुळत नाहीत"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"तुम्ही टॅबलेट अनलॉक करण्याचा <xliff:g id="NUMBER_0">%1$d</xliff:g> वेळा चुकीच्या पद्धतीने प्रयत्न केला आहे. आणखी <xliff:g id="NUMBER_1">%2$d</xliff:g> अयशस्वी प्रयत्नांनंतर, हे टॅबलेट रीसेट केला जाईल, त्यामुळे त्याचा सर्व डेटा हटवला जाईल."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"तुम्ही फोन अनलॉक करण्याचा <xliff:g id="NUMBER_0">%1$d</xliff:g> वेळा चुकीच्या पद्धतीने प्रयत्न केला आहे. आणखी <xliff:g id="NUMBER_1">%2$d</xliff:g> अयशस्वी प्रयत्नांनंतर, हा फोन रीसेट केला जाईल, त्यामुळे त्याचा सर्व डेटा हटवला जाईल."</string>
diff --git a/packages/SystemUI/res-product/values-ms/strings.xml b/packages/SystemUI/res-product/values-ms/strings.xml
index 9e2be17..08aa4a8 100644
--- a/packages/SystemUI/res-product/values-ms/strings.xml
+++ b/packages/SystemUI/res-product/values-ms/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Jajarkan semula telefon untuk mengecas secara wayarles"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Peranti Android TV akan mati tidak lama lagi; tekan butang untuk memastikan peranti terus hidup."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Peranti akan mati tidak lama lagi; tekan untuk memastikan peranti terus hidup."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Tiada SIM dalam tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Tiada SIM dalam telefon."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Kod PIN tidak sepadan"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Anda telah salah membuka kunci tablet sebanyak <xliff:g id="NUMBER_0">%1$d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%2$d</xliff:g> lagi percubaan yang gagal, tablet ini akan ditetapkan semula sekali gus memadamkan semua data."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Anda telah salah membuka kunci telefon sebanyak <xliff:g id="NUMBER_0">%1$d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%2$d</xliff:g> lagi percubaan yang gagal, telefon ini akan ditetapkan semula sekali gus memadamkan semua data."</string>
diff --git a/packages/SystemUI/res-product/values-my/strings.xml b/packages/SystemUI/res-product/values-my/strings.xml
index 2fa6dfa8..6ca5e7f 100644
--- a/packages/SystemUI/res-product/values-my/strings.xml
+++ b/packages/SystemUI/res-product/values-my/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ကြိုးမဲ့အားသွင်းရန် ဖုန်းကို ပြန်၍ချိန်ပါ"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV စက်သည် မကြာမီ ပိတ်သွားပါမည်၊ ဆက်ဖွင့်ထားရန် ခလုတ်တစ်ခုကို နှိပ်ပါ။"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"စက်သည် မကြာမီ ပိတ်သွားပါမည်၊ ဆက်ဖွင့်ထားရန် နှိပ်ပါ။"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"တက်ဘလက်တွင် ဆင်းမ်မရှိပါ။"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ဖုန်းတွင် ဆင်းမ်မရှိပါ။"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"ပင်နံပါတ် ကိုက်ညီမှု မရှိပါ"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"တက်ဘလက်ကို <xliff:g id="NUMBER_0">%1$d</xliff:g> ကြိမ် မှားယွင်းစွာ လော့ခ်ဖွင့်ရန် ကြိုးစားခဲ့ပါသည်။ <xliff:g id="NUMBER_1">%2$d</xliff:g> ကြိမ် ထပ်မံမှားယွင်းခဲ့လျှင် ဤတက်ဘလက်ကို ပြင်ဆင်သတ်မှတ်လိုက်မည် ဖြစ်ပြီး ၎င်းအတွင်းရှိ ဒေတာအားလုံးကိုလည်း ဖျက်လိုက်ပါမည်။"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"ဖုန်းကို <xliff:g id="NUMBER_0">%1$d</xliff:g> ကြိမ် မှားယွင်းစွာ လော့ခ်ဖွင့်ရန် ကြိုးစားခဲ့ပါသည်။ <xliff:g id="NUMBER_1">%2$d</xliff:g> ကြိမ် ထပ်မံမှားယွင်းခဲ့လျှင် ဤဖုန်းကို ပြင်ဆင်သတ်မှတ်လိုက်မည် ဖြစ်ပြီး ၎င်းအတွင်းရှိ ဒေတာအားလုံးကိုလည်း ဖျက်လိုက်ပါမည်။"</string>
diff --git a/packages/SystemUI/res-product/values-nb/strings.xml b/packages/SystemUI/res-product/values-nb/strings.xml
index 566a4a3..93f528e 100644
--- a/packages/SystemUI/res-product/values-nb/strings.xml
+++ b/packages/SystemUI/res-product/values-nb/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Juster telefonen for å lade trådløst"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV-enheten slås snart av. Trykk på en knapp for å holde den på."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Enheten slås snart av. Trykk for å holde den på."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Det er ingen SIM-kort i nettbrettet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Det er ingen SIM-kort i telefonen."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-kodene stemmer ikke overens"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Du har gjort feil i forsøket på å låse opp nettbrettet <xliff:g id="NUMBER_0">%1$d</xliff:g> ganger. Nettbrettet tilbakestilles etter <xliff:g id="NUMBER_1">%2$d</xliff:g> nye mislykkede forsøk, noe som sletter alle dataene på nettbrettet."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Du har gjort feil i forsøket på å låse opp telefonen <xliff:g id="NUMBER_0">%1$d</xliff:g> ganger. Telefonen tilbakestilles etter <xliff:g id="NUMBER_1">%2$d</xliff:g> nye mislykkede forsøk, noe som sletter alle dataene på telefonen."</string>
diff --git a/packages/SystemUI/res-product/values-ne/strings.xml b/packages/SystemUI/res-product/values-ne/strings.xml
index 7e3b831..ffcbbf9 100644
--- a/packages/SystemUI/res-product/values-ne/strings.xml
+++ b/packages/SystemUI/res-product/values-ne/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"तारविनै चार्ज गर्न फोनलाई फेरि मिलाउनुहोस्"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android टिभी यन्त्र चाँडै निष्क्रिय हुने छ; सक्रिय राख्न कुनै बटन थिच्नुहोस्।"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"यो डिभाइस चाँडै निष्क्रिय हुने छ; सक्रिय राख्न थिच्नुहोस्।"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ट्याब्लेटमा SIM कार्ड हालिएको छैन।"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"फोनमा SIM कार्ड हालिएको छैन।"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN कोडहरू मिलेनन्"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"तपाईंले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले ट्याब्लेट अनलक गर्ने प्रयास गर्नुभएको छ। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> पटक असफल प्रयास गरेपछि, यो ट्याब्लेट यसमा भएका सबै डेटा मेटिने गरी रिसेट गरिने छ।"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"तपाईंले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले फोन अनलक गर्ने प्रयास गर्नुभएको छ। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> पटक असफल प्रयास गरेपछि, यो फोन यसमा भएका सबै डेटा मेटिने गरी रिसेट गरिने छ।"</string>
diff --git a/packages/SystemUI/res-product/values-nl/strings.xml b/packages/SystemUI/res-product/values-nl/strings.xml
index 56f2367..c7a46b0 100644
--- a/packages/SystemUI/res-product/values-nl/strings.xml
+++ b/packages/SystemUI/res-product/values-nl/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Lijn de telefoon opnieuw uit om draadloos op te laden"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Het Android TV-apparaat wordt binnenkort uitgezet. Druk op een knop om het aan te laten."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Het apparaat wordt binnenkort uitgezet. Druk om het aan te laten."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Geen simkaart in tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Geen simkaart in telefoon."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Pincodes komen niet overeen"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Je hebt <xliff:g id="NUMBER_0">%1$d</xliff:g> mislukte pogingen ondernomen om de tablet te ontgrendelen. Na nog eens <xliff:g id="NUMBER_1">%2$d</xliff:g> mislukte pogingen wordt deze tablet gereset, waardoor alle gegevens worden verwijderd."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Je hebt <xliff:g id="NUMBER_0">%1$d</xliff:g> mislukte pogingen ondernomen om de telefoon te ontgrendelen. Na nog eens <xliff:g id="NUMBER_1">%2$d</xliff:g> mislukte pogingen wordt deze telefoon gereset, waardoor alle gegevens worden verwijderd."</string>
diff --git a/packages/SystemUI/res-product/values-or/strings.xml b/packages/SystemUI/res-product/values-or/strings.xml
index 99c8812..8e3f2ed 100644
--- a/packages/SystemUI/res-product/values-or/strings.xml
+++ b/packages/SystemUI/res-product/values-or/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ୱାୟାର୍ଲେସ୍ ଭାବେ ଚାର୍ଜ କରିବାକୁ ଫୋନ୍କୁ ଠିକ୍ ଭାବରେ ରଖନ୍ତୁ"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ଡିଭାଇସ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯିବ; ଏହା ଚାଲୁ ରଖିବା ପାଇଁ ଏକ ବଟନ୍ ଦବାନ୍ତୁ।"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"ଡିଭାଇସ୍ଟି ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯିବ; ଏହାକୁ ଚାଲୁ ରଖିବା ପାଇଁ ଦବାନ୍ତୁ।"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ଟାବଲେଟରେ କୌଣସି SIM ନାହିଁ।"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ଫୋନରେ କୌଣସି SIM ନାହିଁ।"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN କୋଡ୍ଗୁଡ଼ିକ ମେଳ ଖାଉନାହିଁ"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"ଆପଣ ଟାବ୍ଲେଟ୍କୁ ଅନ୍ଲକ୍ କରିବାକୁ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ୍ ପ୍ରୟାସ ପରେ, ଏହି ଟାବ୍ଲେଟ୍କୁ ରିସେଟ୍ କରିଦିଆଯିବ, ଯାହାଦ୍ୱାରା ଏହାର ସମସ୍ତ ଡାଟା ଡିଲିଟ୍ ହେବ।"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"ଆପଣ ଫୋନ୍କୁ ଅନ୍ଲକ୍ କରିବାକୁ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ପ୍ରୟାସ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ୍ ପ୍ରୟାସ ପରେ, ଏହି ଫୋନ୍କୁ ରିସେଟ୍ କରିଦିଆଯିବ, ଯାହାଦ୍ୱାରା ଏହାର ସମସ୍ତ ଡାଟା ଡିଲିଟ୍ ହେବ।"</string>
diff --git a/packages/SystemUI/res-product/values-pa/strings.xml b/packages/SystemUI/res-product/values-pa/strings.xml
index 4676c20..bc1c60f 100644
--- a/packages/SystemUI/res-product/values-pa/strings.xml
+++ b/packages/SystemUI/res-product/values-pa/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"ਫ਼ੋਨ ਨੂੰ ਬਿਨਾਂ ਤਾਰ ਤੋਂ ਚਾਰਜ ਕਰਨ ਲਈ ਡੌਕ \'ਤੇ ਸਹੀ ਕਰਕੇ ਰੱਖੋ"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ਡੀਵਾਈਸ ਜਲਦ ਹੀ ਬੰਦ ਹੋ ਜਾਵੇਗਾ; ਇਸਨੂੰ ਚਾਲੂ ਰੱਖਣ ਲਈ ਕੋਈ ਬਟਨ ਦਬਾਓ।"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"ਡੀਵਾਈਸ ਜਲਦ ਹੀ ਬੰਦ ਹੋ ਜਾਵੇਗਾ; ਇਸਨੂੰ ਚਾਲੂ ਰੱਖਣ ਲਈ ਦਬਾਓ।"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ਟੈਬਲੈੱਟ ਵਿੱਚ ਕੋਈ ਸਿਮ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ਫ਼ੋਨ ਵਿੱਚ ਕੋਈ ਸਿਮ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"ਪਿੰਨ ਕੋਡ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"ਤੁਸੀਂ <xliff:g id="NUMBER_0">%1$d</xliff:g> ਵਾਰ ਗਲਤ ਢੰਗ ਨਾਲ ਟੈਬਲੈੱਟ ਨੂੰ ਅਣਲਾਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ। <xliff:g id="NUMBER_1">%2$d</xliff:g> ਹੋਰ ਅਸਫਲ ਕੋਸ਼ਿਸ਼ਾਂ ਤੋਂ ਬਾਅਦ, ਇਹ ਟੈਬਲੈੱਟ ਰੀਸੈੱਟ ਕੀਤਾ ਜਾਵੇਗਾ, ਜਿਸ ਨਾਲ ਇਸਦਾ ਸਾਰਾ ਡਾਟਾ ਮਿਟ ਜਾਵੇਗਾ।"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"ਤੁਸੀਂ <xliff:g id="NUMBER_0">%1$d</xliff:g> ਵਾਰ ਗਲਤ ਢੰਗ ਨਾਲ ਫ਼ੋਨ ਨੂੰ ਅਣਲਾਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ। <xliff:g id="NUMBER_1">%2$d</xliff:g> ਹੋਰ ਅਸਫਲ ਕੋਸ਼ਿਸ਼ਾਂ ਤੋਂ ਬਾਅਦ, ਇਹ ਫ਼ੋਨ ਰੀਸੈੱਟ ਕੀਤਾ ਜਾਵੇਗਾ, ਜਿਸ ਨਾਲ ਇਸਦਾ ਸਾਰਾ ਡਾਟਾ ਮਿਟ ਜਾਵੇਗਾ।"</string>
diff --git a/packages/SystemUI/res-product/values-pl/strings.xml b/packages/SystemUI/res-product/values-pl/strings.xml
index d2a5fb3..a8596a6 100644
--- a/packages/SystemUI/res-product/values-pl/strings.xml
+++ b/packages/SystemUI/res-product/values-pl/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Popraw ustawienie telefonu, by naładować go bezprzewodowo"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Urządzenie z Androidem TV za chwilę się wyłączy. Naciśnij przycisk, by pozostało włączone."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Urządzenie za chwilę się wyłączy. Naciśnij, by pozostało włączone."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Brak karty SIM w tablecie."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Brak karty SIM w telefonie."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Kody PIN nie pasują"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Po raz <xliff:g id="NUMBER_0">%1$d</xliff:g> próbowano nieprawidłowo odblokować tablet. Po kolejnych <xliff:g id="NUMBER_1">%2$d</xliff:g> nieudanych próbach tablet zostanie zresetowany, co spowoduje skasowanie wszystkich jego danych."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Po raz <xliff:g id="NUMBER_0">%1$d</xliff:g> próbowano nieprawidłowo odblokować telefon. Po kolejnych <xliff:g id="NUMBER_1">%2$d</xliff:g> nieudanych próbach telefon zostanie zresetowany, co spowoduje skasowanie wszystkich jego danych."</string>
diff --git a/packages/SystemUI/res-product/values-pt-rBR/strings.xml b/packages/SystemUI/res-product/values-pt-rBR/strings.xml
index 24d0364..c91d377 100644
--- a/packages/SystemUI/res-product/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res-product/values-pt-rBR/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Realinhe o smartphone para carregar sem usar fios"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"O dispositivo Android TV entrará no modo de espera em breve. Pressione um botão para mantê-lo ativado."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"O dispositivo entrará no modo de espera em breve. Pressione para mantê-lo ativado."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Nenhum chip no tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Nenhum chip no smartphone."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Os códigos PIN não coincidem"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Você tentou desbloquear o tablet incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas incorretas, este tablet será redefinido, o que excluirá todos os dados dele."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Você tentou desbloquear o smartphone incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas incorretas, este smartphone será redefinido, o que excluirá todos os dados dele."</string>
diff --git a/packages/SystemUI/res-product/values-pt-rPT/strings.xml b/packages/SystemUI/res-product/values-pt-rPT/strings.xml
index 820ec66..d941c80 100644
--- a/packages/SystemUI/res-product/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res-product/values-pt-rPT/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Realinhe o telemóvel para carregar sem fios."</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"O dispositivo Android TV irá desligar-se brevemente. Prima um botão para o manter ligado."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"O dispositivo irá desligar-se brevemente. Prima para o manter ligado."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Nenhum SIM no tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Nenhum SIM no telemóvel."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Os códigos PIN não coincidem."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Tentou desbloquear incorretamente o tablet <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Após mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas sem êxito, este tablet será reposto, o que eliminará todos os dados do mesmo."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Tentou desbloquear incorretamente o telemóvel <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Após mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas sem êxito, este telemóvel será reposto, o que eliminará todos os dados do mesmo."</string>
diff --git a/packages/SystemUI/res-product/values-pt/strings.xml b/packages/SystemUI/res-product/values-pt/strings.xml
index 24d0364..c91d377 100644
--- a/packages/SystemUI/res-product/values-pt/strings.xml
+++ b/packages/SystemUI/res-product/values-pt/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Realinhe o smartphone para carregar sem usar fios"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"O dispositivo Android TV entrará no modo de espera em breve. Pressione um botão para mantê-lo ativado."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"O dispositivo entrará no modo de espera em breve. Pressione para mantê-lo ativado."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Nenhum chip no tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Nenhum chip no smartphone."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Os códigos PIN não coincidem"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Você tentou desbloquear o tablet incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas incorretas, este tablet será redefinido, o que excluirá todos os dados dele."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Você tentou desbloquear o smartphone incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas incorretas, este smartphone será redefinido, o que excluirá todos os dados dele."</string>
diff --git a/packages/SystemUI/res-product/values-ro/strings.xml b/packages/SystemUI/res-product/values-ro/strings.xml
index 2fffb38..722ef90 100644
--- a/packages/SystemUI/res-product/values-ro/strings.xml
+++ b/packages/SystemUI/res-product/values-ro/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Repoziționează telefonul pentru încărcarea wireless"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Dispozitivul Android TV se va opri în curând. Apasă un buton pentru a-l menține pornit."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Dispozitivul se va opri în curând. Apasă pentru a-l menține pornit."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Nu există card SIM în tabletă."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Nu există card SIM în telefon."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Codurile PIN nu coincid"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Ai făcut <xliff:g id="NUMBER_0">%1$d</xliff:g> încercări incorecte de deblocare a tabletei. După încă <xliff:g id="NUMBER_1">%2$d</xliff:g> încercări nereușite, tableta va fi resetată, iar toate datele vor fi șterse."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Ai făcut <xliff:g id="NUMBER_0">%1$d</xliff:g> încercări incorecte de deblocare a telefonului. După încă <xliff:g id="NUMBER_1">%2$d</xliff:g> încercări nereușite, acest telefon va fi resetat, iar toate datele acestuia vor fi șterse."</string>
diff --git a/packages/SystemUI/res-product/values-ru/strings.xml b/packages/SystemUI/res-product/values-ru/strings.xml
index e8ada24..6266caa 100644
--- a/packages/SystemUI/res-product/values-ru/strings.xml
+++ b/packages/SystemUI/res-product/values-ru/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Чтобы телефон заряжался, поставьте его на док-станцию"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Устройство Android TV скоро выключится. Чтобы этого не произошло, нажмите любую кнопку."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Устройство скоро выключится. Чтобы этого не произошло, нажмите любую кнопку или коснитесь экрана."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"В планшете отсутствует SIM-карта."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"В телефоне отсутствует SIM-карта."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-коды не совпадают"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Вы несколько раз (<xliff:g id="NUMBER_0">%1$d</xliff:g>) не смогли разблокировать планшет. Осталось попыток: <xliff:g id="NUMBER_1">%2$d</xliff:g>. В случае неудачи произойдет сброс настроек и все данные на устройстве будут удалены."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Вы несколько раз (<xliff:g id="NUMBER_0">%1$d</xliff:g>) не смогли разблокировать телефон. Осталось попыток: <xliff:g id="NUMBER_1">%2$d</xliff:g>. В случае неудачи произойдет сброс настроек и все данные на устройстве будут удалены."</string>
diff --git a/packages/SystemUI/res-product/values-si/strings.xml b/packages/SystemUI/res-product/values-si/strings.xml
index c112ca3..36cae4f 100644
--- a/packages/SystemUI/res-product/values-si/strings.xml
+++ b/packages/SystemUI/res-product/values-si/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"නොරැහැන්ව ආරෝපණය කිරීමට දුරකථනය යළි සකසන්න"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV උපාංගය ඉක්මනින් ක්රියා විරහිත වනු ඇත; එය දිගටම ක්රියාත්මක කර තැබීමට බොත්තමක් ඔබන්න."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"උපාංගය ඉක්මනින් ක්රියා විරහිත වනු ඇත; එය දිගටම ක්රියාත්මක කර තැබීමට ඔබන්න."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ටැබ්ලටයේ SIM නැත."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"දුරකථනයේ SIM නැත."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN කේත නොගැළපේ."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"ඔබ ටැබ්ලට් පරිගණකය අගුළු හැරීමට <xliff:g id="NUMBER_0">%1$d</xliff:g> වරක් වැරදියට උත්සාහ කර ඇත. තවත් අසාර්ථක උත්සාහයන් <xliff:g id="NUMBER_1">%2$d</xliff:g>කින් පසුව, මෙම ටැබ්ලට් පරිගණකය යළි සකසනු ඇති අතර, එය එහි සියලු දත්ත මකනු ඇත."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"ඔබ දුරකථනය අගුළු හැරීමට <xliff:g id="NUMBER_0">%1$d</xliff:g> වරක් වැරදියට උත්සාහ කර ඇත. තවත් අසාර්ථක උත්සාහයන් <xliff:g id="NUMBER_1">%2$d</xliff:g>කින් පසුව, මෙම දුරකථනය යළි සකසනු ඇති අතර, එය එහි සියලු දත්ත මකනු ඇත."</string>
diff --git a/packages/SystemUI/res-product/values-sk/strings.xml b/packages/SystemUI/res-product/values-sk/strings.xml
index d0713a6..d07afbd 100644
--- a/packages/SystemUI/res-product/values-sk/strings.xml
+++ b/packages/SystemUI/res-product/values-sk/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Znova vložte telefón, aby sa bezdrôtovo nabil"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Zariadenie Android TV sa čoskoro vypne. Ak ho chcete ponechať zapnuté, stlačte ľubovoľné tlačidlo."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Zariadenie sa čoskoro vypne. Ak ho chcete ponechať zapnuté, stlačte ľubovoľné tlačidlo."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"V tablete nie je SIM karta."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"V telefóne nie je SIM karta."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Kódy PIN sa nezhodujú"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Tablet ste sa pokúsili <xliff:g id="NUMBER_0">%1$d</xliff:g>‑krát nesprávne odomknúť. Po <xliff:g id="NUMBER_1">%2$d</xliff:g> ďalších neúspešných pokusoch bude tento tablet obnovený a všetky údaje, ktoré sú v ňom uložené, budú odstránené."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Telefón ste sa pokúsili <xliff:g id="NUMBER_0">%1$d</xliff:g>‑krát nesprávne odomknúť. Po <xliff:g id="NUMBER_1">%2$d</xliff:g> ďalších neúspešných pokusoch bude tento telefón obnovený a všetky údaje, ktoré sú v ňom uložené, budú odstránené."</string>
diff --git a/packages/SystemUI/res-product/values-sl/strings.xml b/packages/SystemUI/res-product/values-sl/strings.xml
index 64fc395..fc9886c 100644
--- a/packages/SystemUI/res-product/values-sl/strings.xml
+++ b/packages/SystemUI/res-product/values-sl/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Za brezžično polnjenje poravnajte telefon z nosilcem"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Naprava Android TV se bo kmalu izklopila. Če tega ne želite, pritisnite poljuben gumb."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Naprava se bo kmalu izklopila. Če tega ne želite, pritisnite."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"V tabličnem računalniku ni kartice SIM."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"V telefonu ni kartice SIM."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Kodi PIN se ne ujemata"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Tablični računalnik ste neuspešno poskusili odkleniti <xliff:g id="NUMBER_0">%1$d</xliff:g>-krat. Če ga neuspešno poskusite odkleniti še <xliff:g id="NUMBER_1">%2$d</xliff:g>-krat, bo ponastavljen in vsi podatki v njem bodo izbrisani."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Telefon ste neuspešno poskusili odkleniti <xliff:g id="NUMBER_0">%1$d</xliff:g>-krat. Če ga neuspešno poskusite odkleniti še <xliff:g id="NUMBER_1">%2$d</xliff:g>-krat, bo ponastavljen in vsi podatki v njem bodo izbrisani."</string>
diff --git a/packages/SystemUI/res-product/values-sq/strings.xml b/packages/SystemUI/res-product/values-sq/strings.xml
index d3e7b73..774099b 100644
--- a/packages/SystemUI/res-product/values-sq/strings.xml
+++ b/packages/SystemUI/res-product/values-sq/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Drejtvendose përsëri telefonin për ta karikuar me valë"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Pajisja Android TV së shpejti do të fiket. Shtyp një buton për ta mbajtur të ndezur."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Pajisja së shpejti do të fiket. Shtype për ta mbajtur të ndezur."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Nuk ka kartë SIM në tablet."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Nuk ka kartë SIM në telefon."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Kodet PIN nuk përputhen"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Ke tentuar <xliff:g id="NUMBER_0">%1$d</xliff:g> herë gabimisht për ta shkyçur tabletin. Pas <xliff:g id="NUMBER_1">%2$d</xliff:g> përpjekjeve të tjera të pasuksesshme, tableti do të rivendoset, gjë që do të rivendosë të gjitha të dhënat e tij."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Ke tentuar <xliff:g id="NUMBER_0">%1$d</xliff:g> herë gabimisht për ta shkyçur telefonin. Pas <xliff:g id="NUMBER_1">%2$d</xliff:g> përpjekjeve të tjera të pasuksesshme, telefoni do të rivendoset, gjë që do të fshijë të gjitha të dhënat e tij."</string>
diff --git a/packages/SystemUI/res-product/values-sr/strings.xml b/packages/SystemUI/res-product/values-sr/strings.xml
index 64b3750..0c9bb75 100644
--- a/packages/SystemUI/res-product/values-sr/strings.xml
+++ b/packages/SystemUI/res-product/values-sr/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Поново поставите телефон ради бежичног пуњења"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV ће се ускоро искључити. Притисните дугме да би остао укључен."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Уређај ће се ускоро искључити. Притисните да би остао укључен."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Нема SIM-а у таблету."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Нема SIM-а у телефону."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN кодови се не подударају"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Погрешно сте покушали да откључате таблет <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, овај таблет ће се ресетовати, чиме се бришу сви подаци корисника."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Погрешно сте покушали да откључате телефон <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. Ако погрешно покушате још <xliff:g id="NUMBER_1">%2$d</xliff:g> пута, овај телефон ће се ресетовати, чиме се бришу сви подаци корисника."</string>
diff --git a/packages/SystemUI/res-product/values-sv/strings.xml b/packages/SystemUI/res-product/values-sv/strings.xml
index 8a3c2a3..7d83808 100644
--- a/packages/SystemUI/res-product/values-sv/strings.xml
+++ b/packages/SystemUI/res-product/values-sv/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Räta upp telefonen för att ladda trådlöst"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV-enheten stängs snart av. Tryck på en knapp för att behålla den på."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Enheten stängs snart av. Tryck för att behålla den på."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Inget SIM-kort i surfplattan."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Inget SIM-kort i telefonen."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Pinkoderna stämmer inte överens"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Du har försökt låsa upp surfplattan på ett felaktigt sätt <xliff:g id="NUMBER_0">%1$d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%2$d</xliff:g> försök återställs surfplattan och all data raderas."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Du har försökt låsa upp telefonen på ett felaktigt sätt <xliff:g id="NUMBER_0">%1$d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%2$d</xliff:g> försök återställs telefonen och all data raderas."</string>
diff --git a/packages/SystemUI/res-product/values-sw/strings.xml b/packages/SystemUI/res-product/values-sw/strings.xml
index 81e6b5d..2def779 100644
--- a/packages/SystemUI/res-product/values-sw/strings.xml
+++ b/packages/SystemUI/res-product/values-sw/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Pangilia tena simu ili ichaji bila kutumia waya"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Kifaa cha Android TV kitazima hivi karibuni; bonyeza kitufe ili kisizime."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Kifaa kitazima hivi karibuni; bonyeza ili kisizime."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Hakuna SIM kwenye kompyuta kibao."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Hakuna SIM kwenye simu."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Misimbo ya PIN haifanani"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Umejaribu kufungua kompyuta kibao mara <xliff:g id="NUMBER_0">%1$d</xliff:g> bila mafanikio. Ukikosea mara nyingine <xliff:g id="NUMBER_1">%2$d</xliff:g>, kompyuta hii kibao itarejeshwa katika hali iliyotoka nayo kiwandani, hatua itakayofuta data yake yote."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Umejaribu kufungua simu mara <xliff:g id="NUMBER_0">%1$d</xliff:g> bila mafanikio. Ukikosea mara nyingine <xliff:g id="NUMBER_1">%2$d</xliff:g>, simu hii itarejeshwa katika hali iliyotoka nayo kiwandani, hatua itakayofuta data yake yote."</string>
diff --git a/packages/SystemUI/res-product/values-ta/strings.xml b/packages/SystemUI/res-product/values-ta/strings.xml
index 51bf02d..3e31913 100644
--- a/packages/SystemUI/res-product/values-ta/strings.xml
+++ b/packages/SystemUI/res-product/values-ta/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"மொபைலை வயர்லெஸ்ஸாகச் சார்ஜ் செய்ய அதை சரியாக வைக்கவும்"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV விரைவில் ஆஃப் ஆகும். இதைத் தொடர்ந்து ஆனில் வைக்க ஒரு பட்டனைத் தட்டவும்."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"இந்தச் சாதனம் விரைவில் ஆஃப் ஆகும். இதைத் தொடர்ந்து ஆனில் வைக்கத் தட்டவும்."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"டேப்லெட்டில் சிம் இல்லை."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"மொபைலில் சிம் இல்லை."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"பின் குறியீடுகள் பொருந்தவில்லை"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"டேப்லெட்டை அன்லாக் செய்ய, <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக முயன்றுவிட்டீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக முயன்றால், இந்த டேப்லெட் மீட்டமைக்கப்படும். இதனால் அதிலுள்ள அனைத்துத் தரவும் நீக்கப்படும்."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"மொபைலை அன்லாக் செய்ய <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக முயன்றுவிட்டீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக முயன்றால், இந்த மொபைல் மீட்டமைக்கப்படும். இதனால் அதிலுள்ள அனைத்துத் தரவும் நீக்கப்படும்."</string>
diff --git a/packages/SystemUI/res-product/values-te/strings.xml b/packages/SystemUI/res-product/values-te/strings.xml
index 00a30e7..0e1ccdd 100644
--- a/packages/SystemUI/res-product/values-te/strings.xml
+++ b/packages/SystemUI/res-product/values-te/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"వైర్లెస్లో ఛార్జ్ కావడానికి ఫోన్ను సరిగ్గా అమర్చండి"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV పరికరం త్వరలో ఆఫ్ అయిపోతుంది; దీన్ని ఆన్లో ఉంచడానికి బటన్ను నొక్కండి."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"పరికరం త్వరలో ఆఫ్ అయిపోతుంది; దీన్ని ఆన్లో ఉంచడానికి నొక్కండి."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"టాబ్లెట్లో SIM లేదు."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"ఫోన్లో SIM లేదు."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"పిన్ కోడ్లు సరిపోలలేదు"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"మీరు టాబ్లెట్ను అన్లాక్ చేయడానికి <xliff:g id="NUMBER_0">%1$d</xliff:g> సార్లు తప్పు ప్రయత్నాలు చేశారు. మరో <xliff:g id="NUMBER_1">%2$d</xliff:g> ప్రయత్నాలలో విఫలమైతే, ఈ టాబ్లెట్ రీసెట్ చేయబడుతుంది, దీని వలన ఇందులోని మొత్తం డేటా తొలగించబడుతుంది."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"మీరు ఫోన్ను అన్లాక్ చేయడానికి <xliff:g id="NUMBER_0">%1$d</xliff:g> సార్లు తప్పుగా ప్రయత్నించారు. మరో <xliff:g id="NUMBER_1">%2$d</xliff:g> ప్రయత్నాలలో విఫలమైతే, ఈ ఫోన్ రీసెట్ చేయబడుతుంది, దీని వలన ఇందులోని మొత్తం డేటా తొలగించబడుతుంది."</string>
diff --git a/packages/SystemUI/res-product/values-tr/strings.xml b/packages/SystemUI/res-product/values-tr/strings.xml
index 603475e..0512acb 100644
--- a/packages/SystemUI/res-product/values-tr/strings.xml
+++ b/packages/SystemUI/res-product/values-tr/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Telefonu kablosuz olarak şarj etmek için yerini ayarlayın"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV cihazı kısa süre içinde kapanacak. Açık tutmak için bir düğmeye basın."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Cihaz kısa süre içinde kapanacak. Açık tutmak için düğmeye basın."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Tablette SIM yok."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Telefonda SIM yok."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN kodları eşleşmiyor"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Tabletin kilidini <xliff:g id="NUMBER_0">%1$d</xliff:g> kez hatalı bir şekilde açmayı denediniz. <xliff:g id="NUMBER_1">%2$d</xliff:g> başarısız deneme daha yaparsanız bu tablet sıfırlanacak ve tüm verileri silinecektir."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Telefonun kilidini <xliff:g id="NUMBER_0">%1$d</xliff:g> kez hatalı bir şekilde açmayı denediniz. <xliff:g id="NUMBER_1">%2$d</xliff:g> başarısız deneme daha yaparsanız bu telefon sıfırlanacak ve tüm verileri silinecektir."</string>
diff --git a/packages/SystemUI/res-product/values-uk/strings.xml b/packages/SystemUI/res-product/values-uk/strings.xml
index 4514a58..d5399ad 100644
--- a/packages/SystemUI/res-product/values-uk/strings.xml
+++ b/packages/SystemUI/res-product/values-uk/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Поправте телефон, щоб активувати бездротове заряджання"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Незабаром пристрій Android TV буде вимкнено. Натисніть кнопку, щоб цього не сталося."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Незабаром пристрій буде вимкнено. Натисніть, щоб цього не сталося."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"У планшеті немає SIM-карти."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"У телефоні немає SIM-карти."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN-коди не збігаються"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Кількість невдалих спроб розблокувати планшет: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Залишилося спроб: <xliff:g id="NUMBER_1">%2$d</xliff:g>. У разі невдачі буде скинуто налаштування планшета й видалено всі його дані."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Кількість невдалих спроб розблокувати телефон: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Залишилося спроб: <xliff:g id="NUMBER_1">%2$d</xliff:g>. У разі невдачі буде скинуто налаштування телефона й видалено всі його дані."</string>
diff --git a/packages/SystemUI/res-product/values-ur/strings.xml b/packages/SystemUI/res-product/values-ur/strings.xml
index c124133..ac243de 100644
--- a/packages/SystemUI/res-product/values-ur/strings.xml
+++ b/packages/SystemUI/res-product/values-ur/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"وائرلیس چارج کرنے کے ليے فون کو دوبارہ موافق بنائيں"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV آلہ جلد ہی بند ہوجائے گا؛ اسے آن رکھنے کے ليے بٹن دبائیں۔"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"آلہ جلد ہی بند ہوجائے گا اسے آن رکھنے کے ليے دبائیں۔"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"ٹیبلیٹ میں کوئی SIM نہیں ہے۔"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"فون میں کوئی SIM نہيں ہے۔"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN کوڈز مماثل نہیں ہیں"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"آپ نے ٹیبلیٹ کو غیر مقفل کرنے کیلئے <xliff:g id="NUMBER_0">%1$d</xliff:g> بار غلط طریقے سے کوشش کی ہے۔ <xliff:g id="NUMBER_1">%2$d</xliff:g> مزید ناکام کوششوں کے بعد، اس ٹیبلیٹ کو ری سیٹ کر دیا جائے گا، جس سے اس کا سبھی ڈیٹا حذف ہو جائے گا۔"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"آپ نے فون کو غیر مقفل کرنے کیلئے <xliff:g id="NUMBER_0">%1$d</xliff:g> بار غلط طریقے سے کوشش کی ہے۔ <xliff:g id="NUMBER_1">%2$d</xliff:g> مزید ناکام کوششوں کے بعد، اس فون کو ری سیٹ کر دیا جائے گا، جس سے اس کا سبھی ڈیٹا حذف ہو جائے گا۔"</string>
diff --git a/packages/SystemUI/res-product/values-uz/strings.xml b/packages/SystemUI/res-product/values-uz/strings.xml
index cd9db77..48473f4 100644
--- a/packages/SystemUI/res-product/values-uz/strings.xml
+++ b/packages/SystemUI/res-product/values-uz/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Telefon quvvat olishi uchun uni dok-stansiyaga joylang"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV qurilmasi oʻchish arafasida, yoniq qolishi uchun istalgan tugmani bosing."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Qurilma oʻchish arafasida, yoniq qolishi uchun istalgan tugmani bosing"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Planshetda SIM karta topilmadi."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Telefonda SIM karta topilmadi."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN kod mos kelmadi"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Siz planshetni qulfdan chiqarish uchun <xliff:g id="NUMBER_0">%1$d</xliff:g> marta xato urinish qildingiz. Agar yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinish qilsangiz, ushbu planshetda zavod sozlamalari qayta tiklanadi va undagi barcha maʼlumotlar ham oʻchib ketadi."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Siz telefonni qulfdan chiqarish uchun <xliff:g id="NUMBER_0">%1$d</xliff:g> marta xato urinish qildingiz. Agar yana <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinish qilsangiz, ushbu telefonda zavod sozlamalari qayta tiklanadi va undagi barcha maʼlumotlar ham oʻchib ketadi."</string>
diff --git a/packages/SystemUI/res-product/values-vi/strings.xml b/packages/SystemUI/res-product/values-vi/strings.xml
index db74c73..1a8fabd 100644
--- a/packages/SystemUI/res-product/values-vi/strings.xml
+++ b/packages/SystemUI/res-product/values-vi/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Điều chỉnh lại vị trí điện thoại để sạc không dây"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Thiết bị Android TV sắp tắt. Hãy nhấn vào một nút để duy trì trạng thái bật."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Thiết bị sắp tắt. Hãy nhấn vào một nút để duy trì trạng thái bật."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Không có SIM nào trong máy tính bảng."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Không có SIM nào trong điện thoại."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Mã PIN không khớp"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Bạn đã mở khóa máy tính bảng sai <xliff:g id="NUMBER_0">%1$d</xliff:g> lần. Sau <xliff:g id="NUMBER_1">%2$d</xliff:g> lần mở khóa không thành công nữa, máy tính bảng này sẽ được đặt lại, tức là tất cả dữ liệu của máy tính bảng sẽ bị xóa."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Bạn đã mở khóa điện thoại sai <xliff:g id="NUMBER_0">%1$d</xliff:g> lần. Sau <xliff:g id="NUMBER_1">%2$d</xliff:g> lần mở khóa không thành công nữa, điện thoại này sẽ được đặt lại, tức là tất cả dữ liệu của điện thoại sẽ bị xóa."</string>
diff --git a/packages/SystemUI/res-product/values-zh-rCN/strings.xml b/packages/SystemUI/res-product/values-zh-rCN/strings.xml
index 60512c0..1f88251 100644
--- a/packages/SystemUI/res-product/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res-product/values-zh-rCN/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"请调整手机位置以便进行无线充电"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV 设备即将关闭;按一下相应的按钮即可让设备保持开启状态。"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"设备即将关闭;按一下即可让设备保持开启状态。"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"平板电脑中没有 SIM 卡。"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"手机中没有 SIM 卡。"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN 码不匹配"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"您尝试解锁平板电脑后失败的次数已达 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。如果再尝试 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次后仍不成功,平板电脑将会被重置,而这将删除其中的所有数据。"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"您尝试解锁手机后失败的次数已达 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。如果再尝试 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次后仍不成功,手机将会被重置,而这将删除其中的所有数据。"</string>
diff --git a/packages/SystemUI/res-product/values-zh-rHK/strings.xml b/packages/SystemUI/res-product/values-zh-rHK/strings.xml
index b3fb7c2..00f3f35 100644
--- a/packages/SystemUI/res-product/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res-product/values-zh-rHK/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"請重新調整手機位置以使用無線充電"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV 裝置即將關閉,按下按鈕即可保持開啟。"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"裝置即將關閉,輕按即可保持開啟。"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"平板電腦中沒有 SIM 卡。"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"手機中沒有 SIM 卡。"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN 碼不符"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"您嘗試解鎖平板電腦已失敗 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。如果之後再嘗試 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次仍未成功,系統將重設此平板電腦,而所有平板電腦資料亦會一併刪除。"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"您嘗試解鎖手機已失敗 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。如果之後再嘗試 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次仍未成功,系統將重設此手機,而所有手機資料亦會一併刪除。"</string>
diff --git a/packages/SystemUI/res-product/values-zh-rTW/strings.xml b/packages/SystemUI/res-product/values-zh-rTW/strings.xml
index 61b735f..a91e744 100644
--- a/packages/SystemUI/res-product/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res-product/values-zh-rTW/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"請調整手機位置,即可無線充電"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Android TV 裝置即將關閉。如要讓裝置保持開啟狀態,請按下任一按鈕。"</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"裝置即將關閉。如要讓裝置保持開啟狀態,請輕觸螢幕或按下任一按鈕。"</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"平板電腦中沒有 SIM 卡。"</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"手機中沒有 SIM 卡。"</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"PIN 碼不符"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"你嘗試解鎖平板電腦已失敗 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次,目前還剩 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次機會。如果失敗次數超過限制,系統會將這部平板電腦恢復原廠設定,其中的所有資料也會一併遭到刪除。"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"你嘗試解鎖手機已失敗 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次,目前還剩 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次機會。如果失敗次數超過限制,系統會將這支手機恢復原廠設定,其中的所有資料也會一併遭到刪除。"</string>
diff --git a/packages/SystemUI/res-product/values-zu/strings.xml b/packages/SystemUI/res-product/values-zu/strings.xml
index 3d077ca..8a00490b3 100644
--- a/packages/SystemUI/res-product/values-zu/strings.xml
+++ b/packages/SystemUI/res-product/values-zu/strings.xml
@@ -23,10 +23,8 @@
<string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"Ukwenza ifoni ishaje ngokungaxhunyiwe"</string>
<string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"Idivayisi ye-Android TV maduze izovalwa, cindezela inkinobho ukuze uyigcine ivuliwe."</string>
<string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"Idivayisi maduze izovalwa, cindezela ukuze uyigcine ivuliwe."</string>
- <!-- no translation found for keyguard_missing_sim_message (408124574073032188) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_message (2605468359948247208) -->
- <skip />
+ <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"Ayikho i-SIM kuthebhulethi."</string>
+ <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"Ayikho i-SIM efonini."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="6278551068943958651">"Iphinikhodi ayifani"</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="302165994845009232">"Uzame ngokungalungile ukuvula ithebulethi izikhathi ezingu-<xliff:g id="NUMBER_0">%1$d</xliff:g>. Ngemuva kwemizamo engaphezulu kwengu-<xliff:g id="NUMBER_1">%2$d</xliff:g> engaphumelelanga, le thebulethi izosethwa kabusha, okuzosusa yonke idatha yayo."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="2594813176164266847">"Uzame ngokungalungile ukuvula ifoni izikhathi ezingu-<xliff:g id="NUMBER_0">%1$d</xliff:g>. Ngemuva kwemizamo engaphezulu kwengu-<xliff:g id="NUMBER_1">%2$d</xliff:g> engaphumelelanga, le foni izosethwa kabusha, okuzosusa yonke idatha yayo."</string>
diff --git a/packages/SystemUI/res/layout/udfps_fpm_other_view.xml b/packages/SystemUI/res/layout/udfps_fpm_empty_view.xml
similarity index 75%
rename from packages/SystemUI/res/layout/udfps_fpm_other_view.xml
rename to packages/SystemUI/res/layout/udfps_fpm_empty_view.xml
index 6ecbb47..de43a5e 100644
--- a/packages/SystemUI/res/layout/udfps_fpm_other_view.xml
+++ b/packages/SystemUI/res/layout/udfps_fpm_empty_view.xml
@@ -14,15 +14,9 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-<com.android.systemui.biometrics.UdfpsFpmOtherView
+<com.android.systemui.biometrics.UdfpsFpmEmptyView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/udfps_animation_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
-
- <!-- Fingerprint -->
- <ImageView
- android:id="@+id/udfps_fpm_other_fp_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-</com.android.systemui.biometrics.UdfpsFpmOtherView>
+</com.android.systemui.biometrics.UdfpsFpmEmptyView>
diff --git a/packages/SystemUI/res/layout/window_magnification_settings_view.xml b/packages/SystemUI/res/layout/window_magnification_settings_view.xml
index 6d8847c..a3c0554 100644
--- a/packages/SystemUI/res/layout/window_magnification_settings_view.xml
+++ b/packages/SystemUI/res/layout/window_magnification_settings_view.xml
@@ -37,6 +37,7 @@
<Button
android:id="@+id/magnifier_edit_button"
+ android:background="@drawable/accessibility_magnification_setting_view_btn_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/accessibility_magnifier_edit"
@@ -57,21 +58,36 @@
android:layout_height="56dp"
android:scaleType="center"
android:layout_weight="1"
- android:layout_marginStart="12dp"/>
+ android:layout_marginStart="12dp"
+ android:background="@drawable/accessibility_magnification_setting_view_btn_bg"
+ android:padding="@dimen/magnification_switch_button_padding"
+ android:src="@drawable/ic_magnification_menu_small"
+ android:tint="@color/accessibility_magnifier_icon_color"
+ android:tintMode="src_atop" />
<ImageButton
android:id="@+id/magnifier_medium_button"
android:layout_width="0dp"
android:layout_height="56dp"
android:scaleType="center"
- android:layout_weight="1"/>
+ android:layout_weight="1"
+ android:background="@drawable/accessibility_magnification_setting_view_btn_bg"
+ android:padding="@dimen/magnification_switch_button_padding"
+ android:src="@drawable/ic_magnification_menu_medium"
+ android:tint="@color/accessibility_magnifier_icon_color"
+ android:tintMode="src_atop" />
<ImageButton
android:id="@+id/magnifier_large_button"
android:layout_width="0dp"
android:layout_height="56dp"
android:scaleType="center"
- android:layout_weight="1"/>
+ android:layout_weight="1"
+ android:background="@drawable/accessibility_magnification_setting_view_btn_bg"
+ android:padding="@dimen/magnification_switch_button_padding"
+ android:src="@drawable/ic_magnification_menu_large"
+ android:tint="@color/accessibility_magnifier_icon_color"
+ android:tintMode="src_atop" />
<ImageButton
android:id="@+id/magnifier_full_button"
@@ -79,7 +95,12 @@
android:layout_height="56dp"
android:scaleType="center"
android:layout_weight="1"
- android:layout_marginEnd="12dp"/>
+ android:layout_marginEnd="12dp"
+ android:background="@drawable/accessibility_magnification_setting_view_btn_bg"
+ android:padding="@dimen/magnification_switch_button_padding"
+ android:src="@drawable/ic_open_in_new_fullscreen"
+ android:tint="@color/accessibility_magnifier_icon_color"
+ android:tintMode="src_atop" />
</LinearLayout>
<LinearLayout
@@ -141,6 +162,7 @@
<Button
android:id="@+id/magnifier_close_button"
+ android:background="@drawable/accessibility_magnification_setting_view_btn_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/accessibility_magnification_close"
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 0bc4b2a..2fd6329 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tik om toeganklikheidkenmerke oop te maak Pasmaak of vervang knoppie in Instellings.\n\n"<annotation id="link">"Bekyk instellings"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Skuif knoppie na kant om dit tydelik te versteek"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Ontdoen"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label}-kortpad is verwyder}other{# kortpaaie is verwyder}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Beweeg na links bo"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Beweeg na regs bo"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Beweeg na links onder"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Beweeg nader aan <xliff:g id="DEVICENAME">%1$s</xliff:g> om hier te speel"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Speel tans op <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Iets is fout. Probeer weer."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Onaktief, gaan program na"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nie gekry nie"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrole is nie beskikbaar nie"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index bec68c6..d18bbac 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"የተደራሽነት ባህሪያትን ለመክፈት መታ ያድርጉ። ይህንን አዝራር በቅንብሮች ውስጥ ያብጁ ወይም ይተኩ።\n\n"<annotation id="link">"ቅንብሮችን አሳይ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ለጊዜው ለመደበቅ አዝራሩን ወደ ጠርዝ ያንቀሳቅሱ"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"ቀልብስ"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} አቋራጭ ተወግዷል}one{# አቋራጭ ተወግዷል}other{# አቋራጮች ተወግደዋል}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ወደ ላይኛው ግራ አንቀሳቅስ"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ወደ ላይኛው ቀኝ አንቀሳቅስ"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"የግርጌውን ግራ አንቀሳቅስ"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"እዚህ ለመጫወት ወደ <xliff:g id="DEVICENAME">%1$s</xliff:g> ቀረብ ይበሉ"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"በ<xliff:g id="DEVICENAME">%1$s</xliff:g> ላይ በማጫወት ላይ"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"የሆነ ችግር ተፈጥሯል። እንደገና ይሞክሩ።"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"ንቁ ያልኾነ፣ መተግበሪያን ይፈትሹ"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"አልተገኘም"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"መቆጣጠሪያ አይገኝም"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index d43a270..fb267a5 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"انقر لفتح ميزات تسهيل الاستخدام. يمكنك تخصيص هذا الزر أو استبداله من الإعدادات.\n\n"<annotation id="link">"عرض الإعدادات"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"يمكنك نقل الزر إلى الحافة لإخفائه مؤقتًا."</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"تراجع"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{تمت إزالة اختصار واحد ({label}).}zero{تمت إزالة # اختصار.}two{تمت إزالة اختصارَين.}few{تمت إزالة # اختصارات.}many{تمت إزالة # اختصارًا.}other{تمت إزالة # اختصار.}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"نقل إلى أعلى يمين الشاشة"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"نقل إلى أعلى يسار الشاشة"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"نقل إلى أسفل يمين الشاشة"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"يُرجى الاقتراب من <xliff:g id="DEVICENAME">%1$s</xliff:g> لتشغيل الوسائط هنا."</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"جارٍ تشغيل الوسائط على <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"حدث خطأ. يُرجى إعادة المحاولة."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"غير نشط، تحقّق من التطبيق."</string>
<string name="controls_error_removed" msgid="6675638069846014366">"لم يتم العثور عليه."</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"عنصر التحكّم غير متوفّر"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• تثبيت تطبيق كاميرا"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• إعداد التطبيق"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• توفُّر جهاز واحد على الأقل"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"انقر مع الاستمرار على الاختصار."</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"إلغاء"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"قلب الجهاز الآن"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"عليك فتح الهاتف لالتقاط صورة ذاتية بشكل أفضل."</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 26a57ae..694b0d9 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"সাধ্য সুবিধাসমূহ খুলিবলৈ টিপক। ছেটিঙত এই বুটামটো কাষ্টমাইজ অথবা সলনি কৰক।\n\n"<annotation id="link">"ছেটিং চাওক"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"বুটামটোক সাময়িকভাৱে লুকুৱাবলৈ ইয়াক একেবাৰে কাষলৈ লৈ যাওক"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"আনডু কৰক"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label}ৰ শ্বৰ্টকাট আঁতৰোৱা হ’ল}one{# টা শ্বৰ্টকাট আঁতৰোৱা হ’ল}other{# টা শ্বৰ্টকাট আঁতৰোৱা হ’ল}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"শীৰ্ষৰ বাওঁফালে নিয়ক"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"শীৰ্ষৰ সোঁফালে নিয়ক"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"তলৰ বাওঁফালে নিয়ক"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ইয়াত খেলিবলৈ <xliff:g id="DEVICENAME">%1$s</xliff:g>ৰ আৰু ওচৰলৈ যাওক"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g>ত প্লে কৰি থকা হৈছে"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"কিবা ভুল হ’ল। পুনৰ চেষ্টা কৰক।"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"সক্ৰিয় নহয়, এপ্টো পৰীক্ষা কৰক"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"বিচাৰি পোৱা নগ’ল"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"নিয়ন্ত্ৰণটো উপলব্ধ নহয়"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 447b51b..8462c98 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Əlçatımlılıq funksiyalarını açmaq üçün toxunun. Ayarlarda bu düyməni fərdiləşdirin və ya dəyişdirin.\n\n"<annotation id="link">"Ayarlara baxın"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Düyməni müvəqqəti gizlətmək üçün kənara çəkin"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Geri qaytarın"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} qısayol silindi}other{# qısayol silindi}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Yuxarıya sola köçürün"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Yuxarıya sağa köçürün"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Aşağıya sola köçürün"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Burada oxutmaq üçün <xliff:g id="DEVICENAME">%1$s</xliff:g> cihazına yaxınlaşın"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> cihazında oxudulur"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Xəta oldu. Yenə cəhd edin."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Aktiv deyil, tətbiqi yoxlayın"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Tapılmadı"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Nəzarət əlçatan deyil"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn-land/strings.xml b/packages/SystemUI/res/values-b+sr+Latn-land/strings.xml
index 992fe1c..b956edb 100644
--- a/packages/SystemUI/res/values-b+sr+Latn-land/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn-land/strings.xml
@@ -19,5 +19,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="toast_rotation_locked" msgid="4914046305911646988">"Екран је сада закључан у вертикалном положају."</string>
+ <string name="toast_rotation_locked" msgid="4914046305911646988">"Ekran je sada zaključan u vertikalnom položaju."</string>
</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn-ldrtl/strings.xml b/packages/SystemUI/res/values-b+sr+Latn-ldrtl/strings.xml
index f4106f1..8e5ecf9 100644
--- a/packages/SystemUI/res/values-b+sr+Latn-ldrtl/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn-ldrtl/strings.xml
@@ -19,5 +19,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"Превуците улево да бисте брзо променили апликације"</string>
+ <string name="recents_quick_scrub_onboarding" msgid="2452671841151577157">"Prevucite ulevo da biste brzo promenili aplikacije"</string>
</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 908de37..8be7609 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Dodirnite za funkcije pristupačnosti. Prilagodite ili zamenite ovo dugme u Podešavanjima.\n\n"<annotation id="link">"Podešavanja"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Pomerite dugme do ivice da biste ga privremeno sakrili"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Opozovi"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} prečica je uklonjena}one{# prečica je uklonjena}few{# prečice su uklonjene}other{# prečica je uklonjeno}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Premesti gore levo"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Premesti gore desno"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Premesti dole levo"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Približite se uređaju <xliff:g id="DEVICENAME">%1$s</xliff:g> da biste na njemu puštali"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Pušta se na uređaju <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Došlo je do greške. Probajte ponovo."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Neaktivno. Vidite aplikaciju"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nije pronađeno"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrola nije dostupna"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings_tv.xml b/packages/SystemUI/res/values-b+sr+Latn/strings_tv.xml
index 85c38ca..f72890bd 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings_tv.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings_tv.xml
@@ -19,17 +19,17 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="notification_vpn_connected" msgid="3891023882833274730">"VPN је повезан"</string>
- <string name="notification_vpn_disconnected" msgid="7150747626448044843">"Веза са VPN-ом је прекинута"</string>
- <string name="notification_disclosure_vpn_text" msgid="3873532735584866236">"Преко: <xliff:g id="VPN_APP">%1$s</xliff:g>"</string>
- <string name="tv_notification_panel_title" msgid="5311050946506276154">"Обавештења"</string>
- <string name="tv_notification_panel_no_notifications" msgid="9115191912267270678">"Нема обавештења"</string>
- <string name="mic_recording_announcement" msgid="7587123608060316575">"Микрофон снима"</string>
- <string name="camera_recording_announcement" msgid="7240177719403759112">"Камера снима"</string>
- <string name="mic_and_camera_recording_announcement" msgid="8599231390508812667">"Камера и микрофон снимају"</string>
- <string name="mic_stopped_recording_announcement" msgid="7301537004900721242">"Снимање микрофоном је заустављено"</string>
- <string name="camera_stopped_recording_announcement" msgid="8540496432367032801">"Снимање камером је заустављено"</string>
- <string name="mic_camera_stopped_recording_announcement" msgid="8708524579599977412">"Снимање камером и микрофоном је заустављено"</string>
- <string name="screen_recording_announcement" msgid="2996750593472241520">"Снимање екрана је започето"</string>
- <string name="screen_stopped_recording_announcement" msgid="979749439036681416">"Снимање екрана је заустављено"</string>
+ <string name="notification_vpn_connected" msgid="3891023882833274730">"VPN je povezan"</string>
+ <string name="notification_vpn_disconnected" msgid="7150747626448044843">"Veza sa VPN-om je prekinuta"</string>
+ <string name="notification_disclosure_vpn_text" msgid="3873532735584866236">"Preko: <xliff:g id="VPN_APP">%1$s</xliff:g>"</string>
+ <string name="tv_notification_panel_title" msgid="5311050946506276154">"Obaveštenja"</string>
+ <string name="tv_notification_panel_no_notifications" msgid="9115191912267270678">"Nema obaveštenja"</string>
+ <string name="mic_recording_announcement" msgid="7587123608060316575">"Mikrofon snima"</string>
+ <string name="camera_recording_announcement" msgid="7240177719403759112">"Kamera snima"</string>
+ <string name="mic_and_camera_recording_announcement" msgid="8599231390508812667">"Kamera i mikrofon snimaju"</string>
+ <string name="mic_stopped_recording_announcement" msgid="7301537004900721242">"Snimanje mikrofonom je zaustavljeno"</string>
+ <string name="camera_stopped_recording_announcement" msgid="8540496432367032801">"Snimanje kamerom je zaustavljeno"</string>
+ <string name="mic_camera_stopped_recording_announcement" msgid="8708524579599977412">"Snimanje kamerom i mikrofonom je zaustavljeno"</string>
+ <string name="screen_recording_announcement" msgid="2996750593472241520">"Snimanje ekrana je započeto"</string>
+ <string name="screen_stopped_recording_announcement" msgid="979749439036681416">"Snimanje ekrana je zaustavljeno"</string>
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 90140a2..1707fc8 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Націсніце, каб адкрыць спецыяльныя магчымасці. Рэгулюйце ці замяняйце кнопку ў Наладах.\n\n"<annotation id="link">"Прагляд налад"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Каб часова схаваць кнопку, перамясціце яе на край"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Адрабіць"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Выдалена спалучэнне клавіш: {label}}one{Выдалена # спалучэнне клавіш}few{Выдалена # спалучэнні клавіш}many{Выдалена # спалучэнняў клавіш}other{Выдалена # спалучэння клавіш}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Перамясціць лявей і вышэй"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Перамясціць правей і вышэй"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Перамясціць лявей і ніжэй"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Падыдзіце бліжэй да прылады \"<xliff:g id="DEVICENAME">%1$s</xliff:g>\", каб прайграць на гэтай"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Прайграецца на прыладзе \"<xliff:g id="DEVICENAME">%1$s</xliff:g>\""</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Нешта пайшло не так. Паўтарыце спробу."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Неактыўна, праверце праграму"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Не знойдзена"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Кіраванне недаступнае"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Усталявана праграма \"Камера\"."</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• Праграма наладжана."</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Даступная хаця б адна прылада."</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Дакраніцеся і ўтрымлівайце ярлык"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Скасаваць"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Пераключыць"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Каб атрымаць лепшае сэлфі, раскрыйце тэлефон"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 43a4f80..e39273b 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Докоснете, за да отворите функциите за достъпност. Персон./заменете бутона от настройките.\n\n"<annotation id="link">"Преглед на настройките"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Преместете бутона до края, за да го скриете временно"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Отмяна"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Прекият път за „{label}“ бе премахнат}other{# преки пътя бяха премахнати}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Преместване горе вляво"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Преместване горе вдясно"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Преместване долу вляво"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Приближете се до <xliff:g id="DEVICENAME">%1$s</xliff:g> за възпроизвеждане на това устройство"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Възпроизвежда се на <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Нещо се обърка. Опитайте отново."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Неактивно, проверете прилож."</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Не е намерено"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Контролата не е налице"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 92c0209..0159629 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"অ্যাক্সেসিবিলিটি ফিচার খুলতে ট্যাপ করুন। কাস্টমাইজ করুন বা সেটিংসে এই বোতামটি সরিয়ে দিন।\n\n"<annotation id="link">"সেটিংস দেখুন"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"এটি অস্থায়ীভাবে লুকাতে বোতামটি কোণে সরান"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"আগের অবস্থায় ফিরুন"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} শর্টকাট সরানো হয়েছে}one{#টি শর্টকাট সরানো হয়েছে}other{#টি শর্টকাট সরানো হয়েছে}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"উপরে বাঁদিকে সরান"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"উপরে ডানদিকে সরান"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"নিচে বাঁদিকে সরান"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"এখান থেকে চালাতে <xliff:g id="DEVICENAME">%1$s</xliff:g>-এর কাছে নিয়ে যান"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g>-এ ভিডিও চালানো হচ্ছে"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"কোনও সমস্যা হয়েছে। আবার চেষ্টা করুন।"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"বন্ধ আছে, অ্যাপ চেক করুন"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"খুঁজে পাওয়া যায়নি"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"কন্ট্রোল উপলভ্য নেই"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 73aba66..fd1bcae 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -388,7 +388,7 @@
<string name="media_projection_permission_dialog_warning_entire_screen" msgid="3989078820637452717">"Kada dijelite, snimate ili emitirate, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ima pristup svemu što se vidi na ekranu ili što se reproducira na uređaju. Zato budite oprezni s lozinkama, detaljima o plaćanju, porukama i drugim osjetljivim informacijama."</string>
<string name="media_projection_permission_dialog_warning_single_app" msgid="1659532781536753059">"Kada aplikaciju dijelite, snimate ili emitirate, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ima pristup svemu što se prikazuje ili reproducira u toj aplikaciji. Zato budite oprezni s lozinkama, detaljima o plaćanju, porukama i drugim osjetljivim informacijama."</string>
<string name="media_projection_permission_dialog_continue" msgid="1827799658916736006">"Nastavi"</string>
- <string name="media_projection_permission_app_selector_title" msgid="894251621057480704">"Dijelite ili snimite aplikaciju"</string>
+ <string name="media_projection_permission_app_selector_title" msgid="894251621057480704">"Dijelite ili snimajte aplikaciju"</string>
<string name="media_projection_permission_dialog_system_service_title" msgid="6827129613741303726">"Dozvoliti aplikaciji da dijeli ili snima?"</string>
<string name="media_projection_permission_dialog_system_service_warning_entire_screen" msgid="8801616203805837575">"Kada dijelite, snimate ili emitirate, aplikacija ima pristup svemu što je vidljivo na ekranu ili što se reproducira na uređaju. Zato budite oprezni s lozinkama, detaljima o plaćanju, porukama i drugim osjetljivim informacijama."</string>
<string name="media_projection_permission_dialog_system_service_warning_single_app" msgid="543310680568419338">"Kada dijelite, snimate ili emitirate aplikaciju, ona ima pristup svemu što se prikazuje ili reproducira u toj aplikaciji. Zato budite oprezni s lozinkama, detaljima o plaćanju, porukama i drugim osjetljivim informacijama."</string>
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Dodirnite da otvorite funkcije pristupačnosti. Prilagodite ili zamijenite dugme u Postavkama.\n\n"<annotation id="link">"Postavke"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Premjestite dugme do ivice da ga privremeno sakrijete"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Opozovi"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Prečica {label} je uklonjena}one{# prečica je uklonjena}few{# prečice su uklonjene}other{# prečica je uklonjeno}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Pomjeranje gore lijevo"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Pomjeranje gore desno"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Pomjeranje dolje lijevo"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Približite se uređaju <xliff:g id="DEVICENAME">%1$s</xliff:g> da na njemu reproducirate"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Reproducira se na uređaju <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Nešto nije uredu. Pokušajte ponovo."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Neaktivno, vidite aplikaciju"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nije pronađeno"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrola nije dostupna"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 10a092f..0d13667 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Toca per obrir funcions d\'accessibilitat. Personalitza o substitueix el botó a Configuració.\n\n"<annotation id="link">"Mostra"</annotation>"."</string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Mou el botó a l\'extrem per amagar-lo temporalment"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Desfés"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{S\'ha suprimit la drecera {label}}many{# shortcuts removed}other{S\'han suprimit # dreceres}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mou a dalt a l\'esquerra"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mou a dalt a la dreta"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Mou a baix a l\'esquerra"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Acosta\'t a <xliff:g id="DEVICENAME">%1$s</xliff:g> per reproduir el contingut aquí"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"S\'està reproduint a <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"S\'ha produït un error. Torna-ho a provar."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inactiu; comprova l\'aplicació"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"No s\'ha trobat"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"El control no està disponible"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index f579e94..11efa36 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Klepnutím otevřete funkce přístupnosti. Tlačítko lze upravit nebo nahradit v Nastavení.\n\n"<annotation id="link">"Nastavení"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Přesunutím tlačítka k okraji ho dočasně skryjete"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Vrátit zpět"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Zkratka {label} byla odstraněna}few{Byly odstraněny # zkratky}many{Bylo odstraněno # zkratky}other{Bylo odstraněno # zkratek}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Přesunout vlevo nahoru"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Přesunout vpravo nahoru"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Přesunout vlevo dolů"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Pokud zde chcete přehrávat média, přibližte se k zařízení <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Přehrávání v zařízení <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Došlo k chybě. Zkuste to znovu."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Neaktivní, zkontrolujte aplikaci"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nenalezeno"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Ovládání není k dispozici"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 536f196..2fbd18e 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tryk for at åbne hjælpefunktioner. Tilpas eller erstat denne knap i Indstillinger.\n\n"<annotation id="link">"Se indstillingerne"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Flyt knappen til kanten for at skjule den midlertidigt"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Fortryd"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} genvej blev fjernet}one{# genvej blev fjernet}other{# genveje blev fjernet}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Flyt op til venstre"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Flyt op til højre"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Flyt ned til venstre"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Ryk tættere på <xliff:g id="DEVICENAME">%1$s</xliff:g> for at afspille her"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Afspilles på <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Noget gik galt. Prøv igen."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv. Tjek appen"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Ikke fundet"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Styringselement ikke tilgængeligt"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index c77452f..1c344f6 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tippe, um die Bedienungshilfen aufzurufen. Du kannst diese Schaltfläche in den Einstellungen anpassen oder ersetzen.\n\n"<annotation id="link">"Zu den Einstellungen"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Durch Ziehen an den Rand wird die Schaltfläche zeitweise ausgeblendet"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Rückgängig machen"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} Verknüpfung entfernt}other{# Verknüpfungen entfernt}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Nach oben links verschieben"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Nach rechts oben verschieben"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Nach unten links verschieben"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Platziere für die Wiedergabe dein Gerät näher an „<xliff:g id="DEVICENAME">%1$s</xliff:g>“"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Wird auf „<xliff:g id="DEVICENAME">%1$s</xliff:g>“ abgespielt"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Es gab ein Problem. Versuch es noch einmal."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv – sieh in der App nach"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nicht gefunden"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Steuerelement nicht verfügbar"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 5c8729b..9447fd2 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Πατήστε για άνοιγμα των λειτουργιών προσβασιμότητας. Προσαρμόστε ή αντικαταστήστε το κουμπί στις Ρυθμίσεις.\n\n"<annotation id="link">"Προβολή ρυθμίσεων"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Μετακινήστε το κουμπί στο άκρο για προσωρινή απόκρυψη"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Αναίρεση"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Η συντόμευση {label} καταργήθηκε}other{Καταργήθηκαν # συντομεύσεις}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Μετακίνηση επάνω αριστερά"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Μετακίνηση επάνω δεξιά"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Μετακίνηση κάτω αριστερά"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Μετακινηθείτε πιο κοντά στη συσκευή <xliff:g id="DEVICENAME">%1$s</xliff:g> για αναπαραγωγή εδώ"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Αναπαραγωγή στη συσκευή <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Παρουσιάστηκε κάποιο πρόβλημα. Δοκιμάστε ξανά."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Ανενεργό, έλεγχος εφαρμογής"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Δεν βρέθηκε."</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Μη διαθέσιμο στοιχείο ελέγχου"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 24d3b23..982008c 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -816,7 +816,8 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tap to open accessibility features. Customise or replace this button in Settings.\n\n"<annotation id="link">"View settings"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Move button to the edge to hide it temporarily"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Undo"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} shortcut removed}other{# shortcuts removed}}"</string>
+ <string name="accessibility_floating_button_undo_message_label_text" msgid="9017658016426242640">"<xliff:g id="FEATURE_NAME">%s</xliff:g> shortcut removed"</string>
+ <string name="accessibility_floating_button_undo_message_number_text" msgid="4909270290725226075">"{count,plural, =1{# shortcut removed}other{# shortcuts removed}}"</string>
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Move top left"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Move top right"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Move bottom left"</string>
@@ -884,6 +885,7 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Move closer to <xliff:g id="DEVICENAME">%1$s</xliff:g> to play here"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Playing on <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Something went wrong. Try again."</string>
+ <string name="media_transfer_loading" msgid="5544017127027152422">"Loading"</string>
<string name="controls_error_timeout" msgid="794197289772728958">"Inactive, check app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Not found"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Control is unavailable"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index dff6ac4..fbcff48 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -816,7 +816,8 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tap to open accessibility features. Customize or replace this button in Settings.\n\n"<annotation id="link">"View settings"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Move button to the edge to hide it temporarily"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Undo"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} shortcut removed}other{# shortcuts removed}}"</string>
+ <string name="accessibility_floating_button_undo_message_label_text" msgid="9017658016426242640">"<xliff:g id="FEATURE_NAME">%s</xliff:g> shortcut removed"</string>
+ <string name="accessibility_floating_button_undo_message_number_text" msgid="4909270290725226075">"{count,plural, =1{# shortcut removed}other{# shortcuts removed}}"</string>
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Move top left"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Move top right"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Move bottom left"</string>
@@ -884,6 +885,7 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Move closer to <xliff:g id="DEVICENAME">%1$s</xliff:g> to play here"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Playing on <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Something went wrong. Try again."</string>
+ <string name="media_transfer_loading" msgid="5544017127027152422">"Loading"</string>
<string name="controls_error_timeout" msgid="794197289772728958">"Inactive, check app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Not found"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Control is unavailable"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 24d3b23..982008c 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -816,7 +816,8 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tap to open accessibility features. Customise or replace this button in Settings.\n\n"<annotation id="link">"View settings"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Move button to the edge to hide it temporarily"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Undo"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} shortcut removed}other{# shortcuts removed}}"</string>
+ <string name="accessibility_floating_button_undo_message_label_text" msgid="9017658016426242640">"<xliff:g id="FEATURE_NAME">%s</xliff:g> shortcut removed"</string>
+ <string name="accessibility_floating_button_undo_message_number_text" msgid="4909270290725226075">"{count,plural, =1{# shortcut removed}other{# shortcuts removed}}"</string>
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Move top left"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Move top right"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Move bottom left"</string>
@@ -884,6 +885,7 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Move closer to <xliff:g id="DEVICENAME">%1$s</xliff:g> to play here"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Playing on <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Something went wrong. Try again."</string>
+ <string name="media_transfer_loading" msgid="5544017127027152422">"Loading"</string>
<string name="controls_error_timeout" msgid="794197289772728958">"Inactive, check app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Not found"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Control is unavailable"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 24d3b23..982008c 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -816,7 +816,8 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tap to open accessibility features. Customise or replace this button in Settings.\n\n"<annotation id="link">"View settings"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Move button to the edge to hide it temporarily"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Undo"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} shortcut removed}other{# shortcuts removed}}"</string>
+ <string name="accessibility_floating_button_undo_message_label_text" msgid="9017658016426242640">"<xliff:g id="FEATURE_NAME">%s</xliff:g> shortcut removed"</string>
+ <string name="accessibility_floating_button_undo_message_number_text" msgid="4909270290725226075">"{count,plural, =1{# shortcut removed}other{# shortcuts removed}}"</string>
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Move top left"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Move top right"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Move bottom left"</string>
@@ -884,6 +885,7 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Move closer to <xliff:g id="DEVICENAME">%1$s</xliff:g> to play here"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Playing on <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Something went wrong. Try again."</string>
+ <string name="media_transfer_loading" msgid="5544017127027152422">"Loading"</string>
<string name="controls_error_timeout" msgid="794197289772728958">"Inactive, check app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Not found"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Control is unavailable"</string>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 60f4204..8304f30 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -816,7 +816,8 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tap to open accessibility features. Customize or replace this button in Settings.\n\n"<annotation id="link">"View settings"</annotation>""</string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Move button to the edge to hide it temporarily"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Undo"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} shortcut removed}other{# shortcuts removed}}"</string>
+ <string name="accessibility_floating_button_undo_message_label_text" msgid="9017658016426242640">"<xliff:g id="FEATURE_NAME">%s</xliff:g> shortcut removed"</string>
+ <string name="accessibility_floating_button_undo_message_number_text" msgid="4909270290725226075">"{count,plural, =1{# shortcut removed}other{# shortcuts removed}}"</string>
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Move top left"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Move top right"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Move bottom left"</string>
@@ -884,6 +885,7 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Move closer to <xliff:g id="DEVICENAME">%1$s</xliff:g> to play here"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Playing on <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Something went wrong. Try again."</string>
+ <string name="media_transfer_loading" msgid="5544017127027152422">"Loading"</string>
<string name="controls_error_timeout" msgid="794197289772728958">"Inactive, check app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Not found"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Control is unavailable"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 6c3ae96..6c9f047 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -659,7 +659,7 @@
<string name="right_keycode" msgid="2480715509844798438">"Clave de código derecho"</string>
<string name="left_icon" msgid="5036278531966897006">"Ícono izquierdo"</string>
<string name="right_icon" msgid="1103955040645237425">"Ícono derecho"</string>
- <string name="drag_to_add_tiles" msgid="8933270127508303672">"Mantén presionado y arrastra para agregar mosaicos"</string>
+ <string name="drag_to_add_tiles" msgid="8933270127508303672">"Mantén presionado y arrastra para agregar tarjetas"</string>
<string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantén presionado y arrastra para reorganizar los mosaicos"</string>
<string name="drag_to_remove_tiles" msgid="4682194717573850385">"Arrastra aquí para quitar"</string>
<string name="drag_to_remove_disabled" msgid="933046987838658850">"Necesitas al menos <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> tarjetas"</string>
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Presiona para abrir las funciones de accesibilidad. Personaliza o cambia botón en Config.\n\n"<annotation id="link">"Ver config"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Mueve el botón hacia el borde para ocultarlo temporalmente"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Deshacer"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Se quitó el acceso directo de {label}}many{Se quitaron # de accesos directos}other{Se quitaron # accesos directos}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mover arriba a la izquierda"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mover arriba a la derecha"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Mover abajo a la izquierda"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Acércate a <xliff:g id="DEVICENAME">%1$s</xliff:g> para reproducir aquí"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Reproduciendo en <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Se produjo un error. Vuelve a intentarlo."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inactivo. Verifica la app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"No se encontró"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"El control no está disponible"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index c13d477..44c94be 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Toca para abrir funciones de accesibilidad. Personaliza o sustituye este botón en Ajustes.\n\n"<annotation id="link">"Ver ajustes"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Mueve el botón hacia el borde para ocultarlo temporalmente"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Deshacer"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Acceso directo de {label} quitado}many{# accesos directos quitados}other{# accesos directos quitados}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mover arriba a la izquierda"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mover arriba a la derecha"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Mover abajo a la izquierda"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Acércate a <xliff:g id="DEVICENAME">%1$s</xliff:g> para jugar aquí"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Reproduciendo en <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Se ha producido un error. Inténtalo de nuevo."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inactivo, comprobar aplicación"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"No se ha encontrado"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Control no disponible"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 9f1eee31..0a71eee 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Puudutage juurdepääsufunktsioonide avamiseks. Kohandage nuppu või asendage see seadetes.\n\n"<annotation id="link">"Kuva seaded"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Teisaldage nupp serva, et see ajutiselt peita"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Võta tagasi"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Otsetee {label} on eemaldatud}other{# otseteed on eemaldatud}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Teisalda üles vasakule"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Teisalda üles paremale"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Teisalda alla vasakule"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Siin esitamiseks liigutage seadmele <xliff:g id="DEVICENAME">%1$s</xliff:g> lähemale"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Esitatakse seadmes <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Midagi läks valesti. Proovige uuesti."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Passiivne, vaadake rakendust"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Ei leitud"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Juhtelement pole saadaval"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index fd356a7..860d0e3 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Erabilerraztasun-eginbideak irekitzeko, sakatu hau. Ezarpenetan pertsonalizatu edo ordez dezakezu botoia.\n\n"<annotation id="link">"Ikusi ezarpenak"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Eraman botoia ertzera aldi baterako ezkutatzeko"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Desegin"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} eginbidearen lasterbidea kendu da}other{# eginbideren lasterbideak kendu dira}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Eraman goialdera, ezkerretara"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Eraman goialdera, eskuinetara"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Eraman behealdera, ezkerretara"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Gerturatu <xliff:g id="DEVICENAME">%1$s</xliff:g> gailura bertan erreproduzitzen ari dena hemen erreproduzitzeko"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> gailuan erreproduzitzen"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Arazoren bat izan da. Saiatu berriro."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inaktibo; egiaztatu aplikazioa"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Ez da aurkitu"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Ez dago erabilgarri kontrolatzeko aukera"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index fa11472..19a8f05 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"برای باز کردن ویژگیهای دسترسپذیری ضربه بزنید. در تنظیمات این دکمه را سفارشی یا جایگزین کنید\n\n"<annotation id="link">"تنظیمات"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"برای پنهان کردن موقتی دکمه، آن را به لبه ببرید"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"واگرد"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} میانبر برداشته شد}one{# میانبر برداشته شد}other{# میانبر برداشته شد}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"انتقال به بالا سمت راست"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"انتقال به بالا سمت چپ"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"انتقال به پایین سمت راست"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"برای پخش در اینجا، به <xliff:g id="DEVICENAME">%1$s</xliff:g> نزدیکتر شوید"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"درحال پخش در <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"مشکلی پیش آمد. دوباره امتحان کنید."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"غیرفعال، برنامه را بررسی کنید"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"پیدا نشد"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"کنترل دردسترس نیست"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 087fd0a..5b90e57 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -735,7 +735,7 @@
<string name="instant_apps_title" msgid="8942706782103036910">"<xliff:g id="APP">%1$s</xliff:g> on käynnissä"</string>
<string name="instant_apps_message" msgid="6112428971833011754">"Sovellus avattiin ilman asennusta."</string>
<string name="instant_apps_message_with_help" msgid="1816952263531203932">"Sovellus avattiin ilman asennusta. Katso lisätietoja napauttamalla."</string>
- <string name="app_info" msgid="5153758994129963243">"Sovelluksen tiedot"</string>
+ <string name="app_info" msgid="5153758994129963243">"Sovellustiedot"</string>
<string name="go_to_web" msgid="636673528981366511">"Siirry selaimeen"</string>
<string name="mobile_data" msgid="4564407557775397216">"Mobiilidata"</string>
<string name="mobile_data_text_format" msgid="6806501540022589786">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Avaa esteettömyysominaisuudet napauttamalla. Yksilöi tai vaihda painike asetuksista.\n\n"<annotation id="link">"Avaa asetukset"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Piilota painike tilapäisesti siirtämällä se reunaan"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Kumoa"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} pikanäppäin poistettu}other{# pikanäppäintä poistettu}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Siirrä vasempaan yläreunaan"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Siirrä oikeaan yläreunaan"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Siirrä vasempaan alareunaan"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Siirrä <xliff:g id="DEVICENAME">%1$s</xliff:g> lähemmäs toistaaksesi täällä"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Toistetaan: <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Jotain meni pieleen. Yritä uudelleen."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Epäaktiivinen, tarkista sovellus"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Ei löydy"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Ohjain ei ole käytettävissä"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 5950c66..f4d7816 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Touchez pour ouvrir fonction. d\'access. Personnalisez ou remplacez bouton dans Param.\n\n"<annotation id="link">"Afficher param."</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Déplacez le bouton vers le bord pour le masquer temporairement"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Annuler"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} Raccourci }one{# retiré}many{# retirés Raccourcis }other{# retirés}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Déplacer dans coin sup. gauche"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Déplacer dans coin sup. droit"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Déplacer dans coin inf. gauche"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Rapprochez-vous de <xliff:g id="DEVICENAME">%1$s</xliff:g> pour lire le contenu"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Lecture sur <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Un problème est survenu. Réessayez."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Délai expiré, vérifiez l\'appli"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Introuvable"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"La commande n\'est pas accessible"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index caaa230..d61bd4c 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Appuyez pour ouvrir fonctionnalités d\'accessibilité. Personnalisez ou remplacez bouton dans paramètres.\n\n"<annotation id="link">"Voir paramètres"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Déplacer le bouton vers le bord pour le masquer temporairement"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Annuler"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} raccourci supprimé}one{# raccourci supprimé}many{# raccourcis supprimés}other{# raccourcis supprimés}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Déplacer en haut à gauche"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Déplacer en haut à droite"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Déplacer en bas à gauche"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Rapprochez l\'appareil pour transférer la diffusion à votre <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Lecture sur <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Un problème est survenu. Réessayez."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Délai expiré, vérifier l\'appli"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Introuvable"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Commande indisponible"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 42bde8c..dbb0387 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Toca para abrir as funcións de accesibilidade. Cambia este botón en Configuración.\n\n"<annotation id="link">"Ver configuración"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Para ocultar temporalmente o botón, móveo ata o bordo"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Desfacer"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Quitouse o atallo de {label}}other{Quitáronse # atallos}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mover á parte super. esquerda"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mover á parte superior dereita"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Mover á parte infer. esquerda"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Achégate ao dispositivo (<xliff:g id="DEVICENAME">%1$s</xliff:g>) para reproducir o contido neste"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Reproducindo contido noutro dispositivo (<xliff:g id="DEVICENAME">%1$s</xliff:g>)"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Produciuse un erro. Téntao de novo."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inactivo. Comproba a app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Non se atopou"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"O control non está dispoñible"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index da53492..5701595 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ઍક્સેસિબિલિટી સુવિધાઓ ખોલવા માટે ટૅપ કરો. સેટિંગમાં આ બટનને કસ્ટમાઇઝ કરો અથવા બદલો.\n\n"<annotation id="link">"સેટિંગ જુઓ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"તેને હંગામી રૂપે ખસેડવા માટે બટનને કિનારી પર ખસેડો"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"છેલ્લો ફેરફાર રદ કરો"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} શૉર્ટકટ કાઢી નાખ્યો}one{# શૉર્ટકટ કાઢી નાખ્યો}other{# શૉર્ટકટ કાઢી નાખ્યા}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ઉપર ડાબે ખસેડો"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ઉપર જમણે ખસેડો"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"નીચે ડાબે ખસેડો"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"આમાં ચલાવવા માટે ડિવાઇસને <xliff:g id="DEVICENAME">%1$s</xliff:g>ની નજીક ખસેડો"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> પર ચલાવવામાં આવી રહ્યું છે"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"કંઈક ખોટું થયું. ફરી પ્રયાસ કરો."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"નિષ્ક્રિય, ઍપને ચેક કરો"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"મળ્યું નથી"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"નિયંત્રણ ઉપલબ્ધ નથી"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index e35d15c..dfa1192 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"सुलभता सुविधाएं खोलने के लिए टैप करें. सेटिंग में, इस बटन को बदलें या अपने हिसाब से सेट करें.\n\n"<annotation id="link">"सेटिंग देखें"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"बटन को कुछ समय छिपाने के लिए, उसे किनारे पर ले जाएं"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"पहले जैसा करें"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} का शॉर्टकट हटाया गया}one{# का शॉर्टकट हटाया गया}other{# के शॉर्टकट हटाए गए}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"सबसे ऊपर बाईं ओर ले जाएं"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"सबसे ऊपर दाईं ओर ले जाएं"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"सबसे नीचे बाईं ओर ले जाएं"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"अपने डिवाइस पर मीडिया फ़ाइल ट्रांसफ़र करने के लिए, उसे <xliff:g id="DEVICENAME">%1$s</xliff:g> के पास ले जाएं"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> पर मीडिया चल रहा है"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"कोई गड़बड़ी हुई. फिर से कोशिश करें."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"काम नहीं कर रहा, ऐप जांचें"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"कंट्रोल नहीं है"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"कंट्रोल मौजूद नहीं है"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index da3ae0c..36908e5 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Dodirnite za otvaranje značajki pristupačnosti. Prilagodite ili zamijenite taj gumb u postavkama.\n\n"<annotation id="link">"Pregledajte postavke"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Pomaknite gumb do ruba da biste ga privremeno sakrili"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Poništi"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Prečac je uklonjen{label}}one{Uklonjen je # prečac}few{Uklonjena su # prečaca}other{Uklonjeno je # prečaca}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Premjesti u gornji lijevi kut"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Premjesti u gornji desni kut"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Premjesti u donji lijevi kut"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Približite se uređaju <xliff:g id="DEVICENAME">%1$s</xliff:g> da biste na njemu reproducirali"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Reproducira se na uređaju <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Nešto nije u redu. Pokušajte ponovo."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Neaktivno, provjerite aplik."</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nije pronađeno"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrola nije dostupna"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 8e49141..aeb7ec4 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Koppintson a kisegítő lehetőségek megnyitásához. A gombot a Beállításokban módosíthatja.\n\n"<annotation id="link">"Beállítások"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"A gombot a szélre áthelyezve ideiglenesen elrejtheti"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Visszavonás"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} gyorsparancs eltávolítva}other{# gyorsparancs eltávolítva}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Áthelyezés fel és balra"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Áthelyezés fel és jobbra"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Áthelyezés le és balra"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Menjen közelebb a(z) <xliff:g id="DEVICENAME">%1$s</xliff:g> eszközhöz, hogy itt játszhassa le a tartalmat"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Lejátszás folyamatban a(z) <xliff:g id="DEVICENAME">%1$s</xliff:g> eszközön"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Hiba történt. Próbálkozzon újra."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inaktív, ellenőrizze az appot"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nem található"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Nem hozzáférhető vezérlő"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index d964158..4910867 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Հատուկ գործառույթները բացելու համար հպեք։ Անհատականացրեք այս կոճակը կարգավորումներում։\n\n"<annotation id="link">"Կարգավորումներ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Կոճակը ժամանակավորապես թաքցնելու համար այն տեղափոխեք էկրանի եզր"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Հետարկել"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Հեռացված դյուրանցում՝ {label}}one{# դյուրանցում հեռացվեց}other{# դյուրանցում հեռացվեց}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Տեղափոխել վերև՝ ձախ"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Տեղափոխել վերև՝ աջ"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Տեղափոխել ներքև՝ ձախ"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Ավելի մոտեցեք «<xliff:g id="DEVICENAME">%1$s</xliff:g>» սարքին՝ նվագարկումը սկսելու համար"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Նվագարկվում է «<xliff:g id="DEVICENAME">%1$s</xliff:g>» սարքում"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Սխալ առաջացավ։ Նորից փորձեք։"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Ակտիվ չէ, ստուգեք հավելվածը"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Չի գտնվել"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Կառավարման տարրը հասանելի չէ"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 515c3a3..cf76529 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Ketuk untuk membuka fitur aksesibilitas. Sesuaikan atau ganti tombol ini di Setelan.\n\n"<annotation id="link">"Lihat setelan"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Pindahkan tombol ke tepi agar tersembunyi untuk sementara"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Urungkan"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Pintasan {label} dihapus}other{# pintasan dihapus}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Pindahkan ke kiri atas"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Pindahkan ke kanan atas"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Pindahkan ke kiri bawah"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Dekatkan ke <xliff:g id="DEVICENAME">%1$s</xliff:g> untuk memutar di sini"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Diputar di <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Terjadi error. Coba lagi."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Nonaktif, periksa aplikasi"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Tidak ditemukan"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrol tidak tersedia"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index ba63349..8585ca7 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Ýttu til að opna aðgengiseiginleika. Sérsníddu eða skiptu hnappinum út í stillingum.\n\n"<annotation id="link">"Skoða stillingar"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Færðu hnappinn að brúninni til að fela hann tímabundið"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Afturkalla"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label}: flýtileið fjarlægð}one{# flýtileið fjarlægð}other{# flýtileiðir fjarlægðar}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Færa efst til vinstri"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Færa efst til hægri"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Færa neðst til vinstri"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Færðu tækið nær <xliff:g id="DEVICENAME">%1$s</xliff:g> til að spila hér"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Í spilun í <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Eitthvað fór úrskeiðis. Reyndu aftur."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Óvirkt, athugaðu forrit"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Fannst ekki"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Stýring er ekki tiltæk"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 7ad9241..d2d022f 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tocca per aprire funzioni di accessibilità. Personalizza o sostituisci il pulsante in Impostazioni.\n\n"<annotation id="link">"Vedi impostazioni"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Sposta il pulsante fino al bordo per nasconderlo temporaneamente"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Elimina"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Scorciatoia {label} rimossa}many{# scorciatoie rimosse}other{# scorciatoie rimosse}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Sposta in alto a sinistra"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Sposta in alto a destra"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Sposta in basso a sinistra"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Avvicinati a <xliff:g id="DEVICENAME">%1$s</xliff:g> per riprodurre i contenuti qui"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"In riproduzione su <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Si è verificato un errore. Riprova."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inattivo, controlla l\'app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Controllo non trovato"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Il controllo non è disponibile"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 6aef9c4..f53f702 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"מקישים כדי לפתוח את תכונות הנגישות. אפשר להחליף את הלחצן או להתאים אותו אישית בהגדרות.\n\n"<annotation id="link">"הצגת ההגדרות"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"כדי להסתיר זמנית את הלחצן, יש להזיז אותו לקצה"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"ביטול"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{קיצור הדרך אל {label} הוסר}one{# קיצורי דרך הוסרו}two{# קיצורי דרך הוסרו}other{# קיצורי דרך הוסרו}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"העברה לפינה השמאלית העליונה"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"העברה לפינה הימנית העליונה"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"העברה לפינה השמאלית התחתונה"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"צריך להתקרב אל <xliff:g id="DEVICENAME">%1$s</xliff:g> כדי להפעיל כאן"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"פועלת ב-<xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"משהו השתבש. יש לנסות שוב."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"לא פעיל, יש לבדוק את האפליקציה"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"לא נמצא"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"הפקד לא זמין"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 3fc3469..4715126 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"タップしてユーザー補助機能を開きます。ボタンのカスタマイズや入れ替えを [設定] で行えます。\n\n"<annotation id="link">"設定を表示"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ボタンを一時的に非表示にするには、端に移動させてください"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"元に戻す"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} 個のショートカットを削除}other{# 個のショートカットを削除}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"左上に移動"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"右上に移動"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"左下に移動"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ここで再生するには<xliff:g id="DEVICENAME">%1$s</xliff:g>に近づいてください"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g>で再生しています"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"エラーが発生しました。もう一度お試しください。"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"無効: アプリをご確認ください"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"見つかりませんでした"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"コントロールを使用できません"</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index af8aea4..a031af4 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"შეეხეთ მარტივი წვდომის ფუნქციების გასახსნელად. მოარგეთ ან შეცვალეთ ეს ღილაკი პარამეტრებში.\n\n"<annotation id="link">"პარამეტრების ნახვა"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"გადაიტანეთ ღილაკი კიდეში, რათა დროებით დამალოთ ის"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"მოქმედების გაუქმება"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} მალსახმობი ამოშლილია}other{# მალსახმობი ამოშლილია}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ზევით და მარცხნივ გადატანა"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ზევით და მარჯვნივ გადატანა"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ქვევით და მარცხნივ გადატანა"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"მიუახლოვდით <xliff:g id="DEVICENAME">%1$s</xliff:g>-ს მისი მეშვეობით დასაკრავად"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"მიმდინარეობს დაკვრა <xliff:g id="DEVICENAME">%1$s</xliff:g>-ზე"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"რაღაც შეცდომა მოხდა. ცადეთ ხელახლა."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"არააქტიურია, გადაამოწმეთ აპი"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"ვერ მოიძებნა"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"კონტროლი მიუწვდომელია"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index ffe073a..aa1f9e3 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Арнайы мүмкіндікті ашу үшін түртіңіз. Түймені параметрден реттеңіз не ауыстырыңыз.\n\n"<annotation id="link">"Параметрді көру"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Түймені уақытша жасыру үшін оны шетке қарай жылжытыңыз."</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Қайтару"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} таңбаша өшірілді.}other{# таңбаша өшірілді.}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Жоғарғы сол жаққа жылжыту"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Жоғарғы оң жаққа жылжыту"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Төменгі сол жаққа жылжыту"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Осы жерде ойнау үшін <xliff:g id="DEVICENAME">%1$s</xliff:g> құрылғысына жақындаңыз"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> құрылғысында ойнатылуда."</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Бірдеңе дұрыс болмады. Қайталап көріңіз."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Өшірулі. Қолданба тексеріңіз."</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Табылмады"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Басқару виджеті қолжетімсіз"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 3f027e2..ce7f702 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ចុចដើម្បីបើកមុខងារភាពងាយស្រួល។ ប្ដូរ ឬប្ដូរប៊ូតុងនេះតាមបំណងនៅក្នុងការកំណត់។\n\n"<annotation id="link">"មើលការកំណត់"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ផ្លាស់ទីប៊ូតុងទៅគែម ដើម្បីលាក់វាជាបណ្ដោះអាសន្ន"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"ត្រឡប់វិញ"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{បានដកផ្លូវកាត់ \"{label}\" ចេញ}other{បានដកផ្លូវកាត់ # ចេញ}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ផ្លាស់ទីទៅខាងលើផ្នែកខាងឆ្វេង"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ផ្លាស់ទីទៅខាងលើផ្នែកខាងស្ដាំ"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ផ្លាស់ទីទៅខាងក្រោមផ្នែកខាងឆ្វេង"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"រំកិលឱ្យកាន់តែជិត <xliff:g id="DEVICENAME">%1$s</xliff:g> ដើម្បីចាក់នៅទីនេះ"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"កំពុងចាក់នៅលើ <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"មានអ្វីមួយខុសប្រក្រតី។ សូមព្យាយាមម្ដងទៀត។"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"អសកម្ម ពិនិត្យមើលកម្មវិធី"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"រកមិនឃើញទេ"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"មិនអាចគ្រប់គ្រងបានទេ"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index d5014e3..34f8e9a 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆರೆಯಲು ಟ್ಯಾಪ್ ಮಾಡಿ. ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಈ ಬಟನ್ ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ ಅಥವಾ ಬದಲಾಯಿಸಿ.\n\n"<annotation id="link">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ಅದನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ಮರೆಮಾಡಲು ಅಂಚಿಗೆ ಬಟನ್ ಸರಿಸಿ"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"ರದ್ದುಗೊಳಿಸಿ"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ}one{# ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ}other{# ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ಎಡ ಮೇಲ್ಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ಬಲ ಮೇಲ್ಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ಸ್ಕ್ರೀನ್ನ ಎಡ ಕೆಳಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ಇಲ್ಲಿ ಪ್ಲೇ ಮಾಡಲು <xliff:g id="DEVICENAME">%1$s</xliff:g> ಸಮೀಪಕ್ಕೆ ಹೋಗಿ"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> ನಲ್ಲಿ ಪ್ಲೇ ಆಗುತ್ತಿದೆ"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"ಏನೋ ತಪ್ಪಾಗಿದೆ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"ನಿಷ್ಕ್ರಿಯ, ಆ್ಯಪ್ ಪರಿಶೀಲಿಸಿ"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"ಕಂಡುಬಂದಿಲ್ಲ"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"ನಿಯಂತ್ರಣ ಲಭ್ಯವಿಲ್ಲ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index caaa1c4..eb899a7 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"접근성 기능을 열려면 탭하세요. 설정에서 이 버튼을 맞춤설정하거나 교체할 수 있습니다.\n\n"<annotation id="link">"설정 보기"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"버튼을 가장자리로 옮겨서 일시적으로 숨기세요."</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"실행취소"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} 바로가기 삭제됨}other{바로가기 #개 삭제됨}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"왼쪽 상단으로 이동"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"오른쪽 상단으로 이동"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"왼쪽 하단으로 이동"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"현재 기기에서 재생하려면 <xliff:g id="DEVICENAME">%1$s</xliff:g>에 더 가까이 이동합니다."</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g>에서 재생 중"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"문제가 발생했습니다. 다시 시도해 주세요."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"비활성. 앱을 확인하세요."</string>
<string name="controls_error_removed" msgid="6675638069846014366">"찾을 수 없음"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"컨트롤을 사용할 수 없음"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 87f153c..08ef2a6 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Атайын мүмкүнчүлүктөрдү ачуу үчүн басыңыз. Бул баскычты Жөндөөлөрдөн өзгөртүңүз.\n\n"<annotation id="link">"Жөндөөлөрдү көрүү"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Баскычты убактылуу жашыра туруу үчүн экрандын четине жылдырыңыз"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Кайтаруу"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} ыкчам баскыч өчүрүлдү}other{# ыкчам баскыч өчүрүлдү}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Жогорку сол жакка жылдыруу"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Жогорку оң жакка жылдыруу"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Төмөнкү сол жакка жылдыруу"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Бул жерде ойнотуу үчүн <xliff:g id="DEVICENAME">%1$s</xliff:g> түзмөгүнө жакындатыңыз"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> аркылуу ойнотулууда"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Бир жерден ката кетти. Кайра аракет кылыңыз."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Жигерсиз. Колдонмону текшериңиз"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Табылган жок"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Башкара албайсыз"</string>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 408ed86..787a139 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ແຕະເພື່ອເປີດຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ. ປັບແຕ່ງ ຫຼື ປ່ຽນປຸ່ມນີ້ໃນການຕັ້ງຄ່າ.\n\n"<annotation id="link">"ເບິ່ງການຕັ້ງຄ່າ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ຍ້າຍປຸ່ມໄປໃສ່ຂອບເພື່ອເຊື່ອງມັນຊົ່ວຄາວ"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"ຍົກເລີກ"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{ລຶບທາງລັດ {label} ອອກແລ້ວ}other{ລຶບທາງລັດ # ອອກແລ້ວ}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ຍ້າຍຊ້າຍເທິງ"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ຍ້າຍຂວາເທິງ"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ຍ້າຍຊ້າຍລຸ່ມ"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ກະລຸນາຍ້າຍເຂົ້າໃກ້ <xliff:g id="DEVICENAME">%1$s</xliff:g> ເພື່ອຫຼິ້ນຢູ່ບ່ອນນີ້"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"ກຳລັງຫຼິ້ນຢູ່ <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"ມີບາງຢ່າງຜິດພາດເກີດຂຶ້ນ. ກະລຸນາລອງໃໝ່."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"ບໍ່ເຮັດວຽກ, ກະລຸນາກວດສອບແອັບ"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"ບໍ່ພົບ"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"ບໍ່ສາມາດໃຊ້ການຄວບຄຸມໄດ້"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index ecef615e..a1d4b18 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Palietę atidarykite pritaikymo neįgaliesiems funkcijas. Tinkinkite arba pakeiskite šį mygtuką nustatymuose.\n\n"<annotation id="link">"Žr. nustatymus"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Perkelkite mygtuką prie krašto, kad laikinai jį paslėptumėte"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Anuliuoti"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Pašalintas spartusis klavišas „{label}“}one{Pašalintas # spartusis klavišas}few{Pašalinti # spartieji klavišai}many{Pašalinta # sparčiojo klavišo}other{Pašalinta # sparčiųjų klavišų}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Perkelti į viršų kairėje"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Perkelti į viršų dešinėje"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Perkelti į apačią kairėje"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Perkelkite arčiau „<xliff:g id="DEVICENAME">%1$s</xliff:g>“, kad būtų galima leisti čia"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Leidžiama įrenginyje „<xliff:g id="DEVICENAME">%1$s</xliff:g>“"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Kažkas ne taip. Bandykite dar kartą."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Neaktyvu, patikrinkite progr."</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nerasta"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Valdiklis nepasiekiamas"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 1786f01..c1acb3f 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Atveriet pieejamības funkcijas. Pielāgojiet vai aizstājiet šo pogu iestatījumos.\n\n"<annotation id="link">"Skatīt iestatījumus"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Lai īslaicīgi paslēptu pogu, pārvietojiet to uz malu"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Atsaukt"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Noņemta saīsne “{label}”}zero{Noņemtas # saīsnes}one{Noņemta # saīsne}other{Noņemtas # saīsnes}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Pārvietot augšpusē pa kreisi"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Pārvietot augšpusē pa labi"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Pārvietot apakšpusē pa kreisi"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Pārvietojieties tuvāk ierīcei “<xliff:g id="DEVICENAME">%1$s</xliff:g>”, lai atskaņotu šeit"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Notiek atskaņošana ierīcē <xliff:g id="DEVICENAME">%1$s</xliff:g>."</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Radās kļūda. Mēģiniet vēlreiz."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Neaktīva, pārbaudiet lietotni"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Netika atrasta"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Vadīkla nav pieejama"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Ir instalēta kameras lietotne."</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• Lietotne ir iestatīta."</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Ir pieejama vismaz viena ierīce."</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Pieskarieties saīsnei un turiet."</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Atcelt"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Apvērst tūlīt"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Labākas pašbildes uzņemšana, atlokot tālruni"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 0b3646e..133cb6e 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Допрете за функциите за пристапност. Приспособете или заменете го копчево во „Поставки“.\n\n"<annotation id="link">"Прикажи поставки"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Преместете го копчето до работ за да го сокриете привремено"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Врати"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Кратенката {label} е отстранета}one{Отстранети се # кратенка}other{Отстранети се # кратенки}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Премести горе лево"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Премести горе десно"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Премести долу лево"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Приближете се до <xliff:g id="DEVICENAME">%1$s</xliff:g> за да пуштите тука"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Пуштено на <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Нешто не е во ред. Обидете се повторно."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Неактивна, провери апликација"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Не е најдено"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Контролата не е достапна"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 4ec9923..de13c2b 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ഉപയോഗസഹായി ഫീച്ചർ തുറക്കാൻ ടാപ്പ് ചെയ്യൂ. ക്രമീകരണത്തിൽ ഈ ബട്ടൺ ഇഷ്ടാനുസൃതമാക്കാം, മാറ്റാം.\n\n"<annotation id="link">"ക്രമീകരണം കാണൂ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"തൽക്കാലം മറയ്ക്കുന്നതിന് ബട്ടൺ അരുകിലേക്ക് നീക്കുക"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"പഴയപടിയാക്കുക"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} കുറുക്കുവഴി നീക്കം ചെയ്തു}other{# കുറുക്കുവഴികൾ നീക്കം ചെയ്തു}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"മുകളിൽ ഇടതുഭാഗത്തേക്ക് നീക്കുക"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"മുകളിൽ വലതുഭാഗത്തേക്ക് നീക്കുക"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ചുവടെ ഇടതുഭാഗത്തേക്ക് നീക്കുക"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ഇവിടെ പ്ലേ ചെയ്യാൻ <xliff:g id="DEVICENAME">%1$s</xliff:g> എന്നതിന് അടുത്തേക്ക് നീക്കുക"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> എന്നതിൽ പ്ലേ ചെയ്യുന്നു"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"എന്തോ കുഴപ്പമുണ്ടായി. വീണ്ടും ശ്രമിക്കുക."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"നിഷ്ക്രിയം, ആപ്പ് പരിശോധിക്കൂ"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"കണ്ടെത്തിയില്ല"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"നിയന്ത്രണം ലഭ്യമല്ല"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index a02fb4d..7c26813 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Хандалтын онцлогуудыг нээхийн тулд товшино уу. Энэ товчлуурыг Тохиргоо хэсэгт өөрчилж эсвэл солиорой.\n\n"<annotation id="link">"Тохиргоог харах"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Үүнийг түр нуухын тулд товчлуурыг зах руу зөөнө үү"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Болих"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} товчлолыг хассан}other{# товчлолыг хассан}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Зүүн дээш зөөх"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Баруун дээш зөөх"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Зүүн доош зөөх"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Энд тоглуулахын тулд <xliff:g id="DEVICENAME">%1$s</xliff:g>-д ойртоно уу"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> дээр тоглуулж байна"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Алдаа гарлаа. Дахин оролдоно уу."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Идэвхгүй байна, аппыг шалгана уу"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Олдсонгүй"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Хяналт боломжгүй байна"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index fcc4a3d..269a677 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"अॅक्सेसिबिलिटी वैशिष्ट्ये उघडण्यासाठी, टॅप करा. सेटिंग्जमध्ये हे बटण कस्टमाइझ करा किंवा बदला.\n\n"<annotation id="link">"सेटिंग्ज पहा"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"बटण तात्पुरते लपवण्यासाठी ते कोपर्यामध्ये हलवा"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"पहिल्यासारखे करा"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} शॉर्टकट काढून टाकला आहे}other{# शॉर्टकट काढून टाकले आहेत}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"वर डावीकडे हलवा"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"वर उजवीकडे हलवा"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"तळाशी डावीकडे हलवा"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"येथे प्ले करण्यासाठी <xliff:g id="DEVICENAME">%1$s</xliff:g> च्या जवळ जा"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> वर प्ले केला जात आहे"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"काहीतरी चूक झाली. पुन्हा प्रयत्न करा."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"निष्क्रिय, ॲप तपासा"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"आढळले नाही"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"नियंत्रण उपलब्ध नाही"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• कॅमेरा अॅप इंस्टॉल करणे"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• अॅप सेट करणे"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• किमान एक डिव्हाइस उपलब्ध करणे"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"स्पर्श करा आणि धरून ठेवा शॉर्टकट"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"रद्द करा"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"आता फ्लिप करा"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"आणखी चांगल्या सेल्फीसाठी फोनबद्दल अधिक जाणून घ्या"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 23f4795..3ded5d5 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Ketik untuk membuka ciri kebolehaksesan. Sesuaikan/gantikan butang ini dalam Tetapan.\n\n"<annotation id="link">"Lihat tetapan"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Gerakkan butang ke tepi untuk disembunyikan buat sementara waktu"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Buat asal"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} pintasan dialih keluar}other{# pintasan dialih keluar}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Alihkan ke atas sebelah kiri"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Alihkan ke atas sebelah kanan"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Alihkan ke bawah sebelah kiri"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Dekatkan dengan <xliff:g id="DEVICENAME">%1$s</xliff:g> untuk bermain di sini"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Dimainkan pada <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Kesilapan telah berlaku. Cuba lagi."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Tidak aktif, semak apl"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Tidak ditemukan"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kawalan tidak tersedia"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 7e49dc4..9e375340 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုများ ဖွင့်ရန် တို့ပါ။ ဆက်တင်များတွင် ဤခလုတ်ကို စိတ်ကြိုက်ပြင်ပါ (သို့) လဲပါ။\n\n"<annotation id="link">"ဆက်တင်များ ကြည့်ရန်"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ခလုတ်ကို ယာယီဝှက်ရန် အစွန်းသို့ရွှေ့ပါ"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"နောက်ပြန်ရန်"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{ {label} ဖြတ်လမ်းလင့်ခ် ဖယ်ရှားပြီးပြီ}other{ဖြတ်လမ်းလင့်ခ် # ခု ဖယ်ရှားပြီးပြီ}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ဘယ်ဘက်ထိပ်သို့ ရွှေ့ရန်"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ညာဘက်ထိပ်သို့ ရွှေ့ရန်"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ဘယ်ဘက်အောက်ခြေသို့ ရွှေ့ရန်"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ဤနေရာတွင်ဖွင့်ရန် <xliff:g id="DEVICENAME">%1$s</xliff:g> အနီးသို့တိုးပါ"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> တွင် ဖွင့်နေသည်"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"တစ်ခုခုမှားသွားသည်။ ထပ်စမ်းကြည့်ပါ။"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"ရပ်နေသည်၊ အက်ပ်ကို စစ်ဆေးပါ"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"မတွေ့ပါ"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"ထိန်းချုပ်မှု မရနိုင်ပါ"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index be43301..ba1aa91 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Trykk for å åpne tilgj.funksjoner. Tilpass eller bytt knappen i Innstillinger.\n\n"<annotation id="link">"Se innstillingene"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Flytt knappen til kanten for å skjule den midlertidig"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Angre"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label}-snarveien er fjernet}other{# snarveier er fjernet}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Flytt til øverst til venstre"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Flytt til øverst til høyre"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Flytt til nederst til venstre"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Flytt deg nærmere <xliff:g id="DEVICENAME">%1$s</xliff:g> for å spille av her"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Spilles av på <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Noe gikk galt. Prøv på nytt."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv. Sjekk appen"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Ikke funnet"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrollen er utilgjengelig"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 6a7c15d..c0221f6 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -383,10 +383,10 @@
<string name="media_projection_dialog_service_title" msgid="2888507074107884040">"रेकर्ड गर्न वा cast गर्न थाल्ने हो?"</string>
<string name="media_projection_dialog_title" msgid="3316063622495360646">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> मार्फत रेकर्ड गर्न वा cast गर्न थाल्ने हो?"</string>
<string name="media_projection_permission_dialog_title" msgid="7130975432309482596">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> लाई सेयर गर्न वा रेकर्ड गर्न दिने हो?"</string>
- <string name="media_projection_permission_dialog_option_entire_screen" msgid="392086473225692983">"पूर्ण स्क्रिन"</string>
+ <string name="media_projection_permission_dialog_option_entire_screen" msgid="392086473225692983">"सबै स्क्रिन"</string>
<string name="media_projection_permission_dialog_option_single_app" msgid="1591110238124910521">"एकल एप"</string>
- <string name="media_projection_permission_dialog_warning_entire_screen" msgid="3989078820637452717">"तपाईंले सेयर गर्दा, रेकर्ड गर्दा वा कास्ट गर्दा<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ले तपाईंको स्क्रिनमा देखिने वा डिभाइसमा प्ले गरिएका सबै कुरा खिच्न सक्छ। त्यसैले सेयर, रेकर्ड वा कास्ट गर्दा पासवर्ड, भुक्तानीको विवरण, म्यासेज वा अन्य संवेदनशील जानकारी सुरक्षित राख्नुहोला।"</string>
- <string name="media_projection_permission_dialog_warning_single_app" msgid="1659532781536753059">"तपाईंले सेयर गर्दा, रेकर्ड गर्दा वा कास्ट गर्दा<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ले तपाईंको स्क्रिनमा देखिने वा डिभाइसमा प्ले गरिएका सबै कुरा खिच्न सक्छ। त्यसैले पासवर्ड, भुक्तानीको विवरण, म्यासेज वा अन्य संवेदनशील जानकारी सुरक्षित राख्नुहोला।"</string>
+ <string name="media_projection_permission_dialog_warning_entire_screen" msgid="3989078820637452717">"तपाईंले सेयर गर्दा, रेकर्ड गर्दा वा कास्ट गर्दा <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ले तपाईंको स्क्रिनमा देखिने वा डिभाइसमा प्ले गरिएका सबै कुरा खिच्न सक्छ। त्यसैले सेयर, रेकर्ड वा कास्ट गर्दा पासवर्ड, भुक्तानीको विवरण, म्यासेज वा अन्य संवेदनशील जानकारी सुरक्षित राख्नुहोला।"</string>
+ <string name="media_projection_permission_dialog_warning_single_app" msgid="1659532781536753059">"तपाईंले सेयर गर्दा, रेकर्ड गर्दा वा कास्ट गर्दा <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ले तपाईंको स्क्रिनमा देखिने वा डिभाइसमा प्ले गरिएका सबै कुरा खिच्न सक्छ। त्यसैले पासवर्ड, भुक्तानीको विवरण, म्यासेज वा अन्य संवेदनशील जानकारी सुरक्षित राख्नुहोला।"</string>
<string name="media_projection_permission_dialog_continue" msgid="1827799658916736006">"जारी राख्नुहोस्"</string>
<string name="media_projection_permission_app_selector_title" msgid="894251621057480704">"सेयर वा रेकर्ड गर्नका लागि एप चयन गर्नुहोस्"</string>
<string name="media_projection_permission_dialog_system_service_title" msgid="6827129613741303726">"यो एपलाई सेयर गर्न वा रेकर्ड गर्न दिने हो?"</string>
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"सर्वसुलभता कायम गर्ने सुविधा खोल्न ट्याप गर्नुहोस्। सेटिङमा गई यो बटन कस्टमाइज गर्नुहोस् वा बदल्नुहोस्।\n\n"<annotation id="link">"सेटिङ हेर्नुहोस्"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"यो बटन केही बेर नदेखिने पार्न किनारातिर सार्नुहोस्"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"अन्डू गर्नुहोस्"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} सर्टकट हटाइयो}other{# सर्टकटहरू हटाइए}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"सिरानको बायाँतिर सार्नुहोस्"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"सिरानको दायाँतिर सार्नुहोस्"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"पुछारको बायाँतिर सार्नुहोस्"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"तपाईं यहाँ प्ले गर्न चाहनुहुन्छ भने आफ्नो डिभाइसलाई <xliff:g id="DEVICENAME">%1$s</xliff:g> नजिकै लैजानुहोस्"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> मा प्ले गरिँदै छ"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"केही चिज गडबड भयो। फेरि प्रयास गर्नुहोस्।"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"निष्क्रिय छ, एप जाँच गर्नु…"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"फेला परेन"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"नियन्त्रण उपलब्ध छैन"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 69a9d5e..d8ce030 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tik voor toegankelijkheidsfuncties. Wijzig of vervang deze knop via Instellingen.\n\n"<annotation id="link">"Naar Instellingen"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Knop naar de rand verplaatsen om deze tijdelijk te verbergen"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Ongedaan maken"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Snelkoppeling voor {label} verwijderd}other{# snelkoppelingen verwijderd}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Naar linksboven verplaatsen"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Naar rechtsboven verplaatsen"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Naar linksonder verplaatsen"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Ga dichter bij <xliff:g id="DEVICENAME">%1$s</xliff:g> staan om hier af te spelen"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Afspelen op <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Er is iets misgegaan. Probeer het opnieuw."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inactief, check de app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Niet gevonden"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Beheeroptie niet beschikbaar"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index bc5f739a..48771b3 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ଆକ୍ସେସିବିଲିଟୀ ଫିଚର ଖୋଲିବାକୁ ଟାପ କରନ୍ତୁ। ସେଟିଂସରେ ଏହି ବଟନକୁ କଷ୍ଟମାଇଜ କର କିମ୍ବା ବଦଳାଅ।\n\n"<annotation id="link">"ସେଟିଂସ ଦେଖନ୍ତୁ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ବଟନକୁ ଅସ୍ଥାୟୀ ଭାବେ ଲୁଚାଇବା ପାଇଁ ଏହାକୁ ଗୋଟିଏ ଧାରକୁ ମୁଭ୍ କରନ୍ତୁ"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"ପୂର୍ବବତ୍ କରନ୍ତୁ"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} ସର୍ଟକଟକୁ କାଢ଼ି ଦିଆଯାଇଛି}other{# ସର୍ଟକଟକୁ କାଢ଼ି ଦିଆଯାଇଛି}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ଶୀର୍ଷ ବାମକୁ ମୁଭ୍ କରନ୍ତୁ"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ଶୀର୍ଷ ଡାହାଣକୁ ମୁଭ୍ କରନ୍ତୁ"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ନିମ୍ନ ବାମକୁ ମୁଭ୍ କରନ୍ତୁ"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ଏଠାରେ ଚଲାଇବା ପାଇଁ <xliff:g id="DEVICENAME">%1$s</xliff:g>ର ପାଖକୁ ମୁଭ କରନ୍ତୁ"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g>ରେ ଚାଲୁଛି"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"କିଛି ତ୍ରୁଟି ହୋଇଛି। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"ନିଷ୍କ୍ରିୟ ଅଛି, ଆପ ଯାଞ୍ଚ କରନ୍ତୁ"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"ମିଳିଲା ନାହିଁ"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"ନିୟନ୍ତ୍ରଣ ଉପଲବ୍ଧ ନାହିଁ"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• ଏକ କେମେରା ଆପ ଇନଷ୍ଟଲ କରିବା"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• ଆପ ସେଟ ଅପ କରାଯାଇଛି"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ଅତିକମରେ ଗୋଟିଏ ଡିଭାଇସ ଉପଲବ୍ଧ ଅଛି"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ସର୍ଟକଟକୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ବାତିଲ କରନ୍ତୁ"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ବର୍ତ୍ତମାନ ଫ୍ଲିପ କରନ୍ତୁ"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"ଏକ ଉନ୍ନତ ସେଲ୍ଫି ପାଇଁ ଫୋନକୁ ଅନଫୋଲ୍ଡ କରନ୍ତୁ"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 33ca8f1..8161613 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਖੋਲ੍ਹਣ ਲਈ ਟੈਪ ਕਰੋ। ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਹ ਬਟਨ ਵਿਉਂਤਬੱਧ ਕਰੋ ਜਾਂ ਬਦਲੋ।\n\n"<annotation id="link">"ਸੈਟਿੰਗਾਂ ਦੇਖੋ"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ਬਟਨ ਨੂੰ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਲੁਕਾਉਣ ਲਈ ਕਿਨਾਰੇ \'ਤੇ ਲਿਜਾਓ"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"ਅਣਕੀਤਾ ਕਰੋ"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ}one{# ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ}other{# ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਹਟਾਇਆ ਗਿਆ}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ਉੱਪਰ ਵੱਲ ਖੱਬੇ ਲਿਜਾਓ"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ਉੱਪਰ ਵੱਲ ਸੱਜੇ ਲਿਜਾਓ"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ਹੇਠਾਂ ਵੱਲ ਖੱਬੇ ਲਿਜਾਓ"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ਇੱਥੇ ਚਲਾਉਣ ਲਈ <xliff:g id="DEVICENAME">%1$s</xliff:g> ਦੇ ਨੇੜੇ ਜਾਓ"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> \'ਤੇ ਚਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"ਅਕਿਰਿਆਸ਼ੀਲ, ਐਪ ਦੀ ਜਾਂਚ ਕਰੋ"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"ਨਹੀਂ ਮਿਲਿਆ"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"ਕੰਟਰੋਲ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 54fc9c5..09a0e24 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Kliknij, aby otworzyć ułatwienia dostępu. Dostosuj lub zmień ten przycisk w Ustawieniach.\n\n"<annotation id="link">"Wyświetl ustawienia"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Przesuń przycisk do krawędzi, aby ukryć go tymczasowo"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Cofnij"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} skrót został usunięty}few{# skróty zostały usunięte}many{# skrótów zostało usuniętych}other{# skrótu został usunięte}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Przenieś w lewy górny róg"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Przenieś w prawy górny róg"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Przenieś w lewy dolny róg"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Zbliż do urządzenia <xliff:g id="DEVICENAME">%1$s</xliff:g>, aby na nim odtwarzać"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Odtwarzam na ekranie <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Coś poszło nie tak. Spróbuj ponownie."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Nieaktywny, sprawdź aplikację"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nie znaleziono"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Element jest niedostępny"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 07d9771..cf0839f 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Toque para abrir os recursos de acessibilidade. Personalize ou substitua o botão nas Configurações.\n\n"<annotation id="link">"Ver configurações"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Mova o botão para a borda para ocultá-lo temporariamente"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Desfazer"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Atalho de {label} removido}one{# atalho removido}many{# de atalhos removidos}other{# atalhos removidos}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mover para o canto superior esquerdo"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mover para o canto superior direito"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Mover para o canto inferior esquerdo"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Aproxime-se do dispositivo <xliff:g id="DEVICENAME">%1$s</xliff:g> para abrir a mídia aqui"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Mídia aberta no dispositivo <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Algo deu errado. Tente novamente."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inativo, verifique o app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Não encontrado"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"O controle está indisponível"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 1faab6e..ece5eb6 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Toque para abrir funcionalidades de acessibilidade. Personal. ou substitua botão em Defin.\n\n"<annotation id="link">"Ver defin."</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Mova o botão para a extremidade para o ocultar temporariamente"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Anular"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} atalho removido}many{# atalhos removidos}other{# atalhos removidos}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mover p/ parte sup. esquerda"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mover parte superior direita"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Mover p/ parte infer. esquerda"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Aproxime-se do dispositivo <xliff:g id="DEVICENAME">%1$s</xliff:g> para reproduzir aqui"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"A reproduzir no dispositivo <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Algo correu mal. Tente novamente."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inativa. Consulte a app."</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Não encontrado."</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"O controlo está indisponível"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 07d9771..cf0839f 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Toque para abrir os recursos de acessibilidade. Personalize ou substitua o botão nas Configurações.\n\n"<annotation id="link">"Ver configurações"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Mova o botão para a borda para ocultá-lo temporariamente"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Desfazer"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Atalho de {label} removido}one{# atalho removido}many{# de atalhos removidos}other{# atalhos removidos}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mover para o canto superior esquerdo"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mover para o canto superior direito"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Mover para o canto inferior esquerdo"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Aproxime-se do dispositivo <xliff:g id="DEVICENAME">%1$s</xliff:g> para abrir a mídia aqui"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Mídia aberta no dispositivo <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Algo deu errado. Tente novamente."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inativo, verifique o app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Não encontrado"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"O controle está indisponível"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 7383ac8..b4bb0c4 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Atinge ca să deschizi funcțiile de accesibilitate. Personalizează sau înlocuiește butonul în setări.\n\n"<annotation id="link">"Vezi setările"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Mută butonul spre margine pentru a-l ascunde temporar"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Anulează"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Comanda rapidă {label} eliminată}few{# comenzi rapide eliminate}other{# de comenzi rapide eliminate}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mută în stânga sus"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mută în dreapta sus"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Mută în stânga jos"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Apropie-te de <xliff:g id="DEVICENAME">%1$s</xliff:g> ca să redai acolo"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Se redă pe <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"A apărut o eroare. Încearcă din nou."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inactiv, verifică aplicația"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nu s-a găsit"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Comanda este indisponibilă"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index a5a60f9..9dc0389 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Нажмите, чтобы открыть спец. возможности. Настройте или замените эту кнопку в настройках.\n\n"<annotation id="link">"Настройки"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Чтобы временно скрыть кнопку, переместите ее к краю экрана"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Отменить"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Сочетание клавиш \"{label}\" удалено.}one{# сочетание клавиш удалено.}few{# сочетания клавиш удалено.}many{# сочетаний клавиш удалено.}other{# сочетания клавиш удалено.}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Перенести в левый верхний угол"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Перенести в правый верхний угол"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Перенести в левый нижний угол"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Для воспроизведения на этом устройстве подойдите ближе к другому (<xliff:g id="DEVICENAME">%1$s</xliff:g>)."</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Воспроизводится на устройстве \"<xliff:g id="DEVICENAME">%1$s</xliff:g>\"."</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Произошла ошибка. Повторите попытку."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Нет ответа. Проверьте приложение."</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Не найдено."</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Управление недоступно"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 2a5716e..635b059 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ප්රවේශ්යතා විශේෂාංග විවෘත කිරීමට තට්ටු කරන්න. සැකසීම් තුළ මෙම බොත්තම අභිරුචිකරණය හෝ ප්රතිස්ථාපනය කරන්න.\n\n"<annotation id="link">"සැකසීම් බලන්න"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"එය තාවකාලිකව සැඟවීමට බොත්තම දාරයට ගෙන යන්න"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"අස් කරන්න"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} කෙටිමඟ ඉවත් කළා}one{කෙටිමං # ක් ඉවත් කළා}other{කෙටිමං # ක් ඉවත් කළා}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ඉහළ වමට ගෙන යන්න"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ඉහළ දකුණට ගෙන යන්න"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"පහළ වමට ගෙන යන්න"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"මෙහි ක්රීඩා කිරීමට <xliff:g id="DEVICENAME">%1$s</xliff:g> වෙත වඩා සමීප වන්න"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> හි වාදනය කරමින්"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"යම් දෙයක් වැරදිණි. නැවත උත්සාහ කරන්න."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"අක්රියයි, යෙදුම පරීක්ෂා කරන්න"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"හමු නොවිණි"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"පාලනය ලබා ගත නොහැකිය"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• කැමරා යෙදුමක් ස්ථාපන කරන්න"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• යෙදුම සකසා ඇත"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• අවම වශයෙන් එක උපාංගයක් ලැබේ"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ස්පර්ශ කර අල්ලා සිටීමේ කෙටිමඟ"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"අවලංගු කරන්න"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"දැන් පෙරළන්න"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"වඩා හොඳ සෙල්ෆියක් සඳහා දුරකථනය දිගහරින්න"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index ce7f3fa..2c59f49 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Funkcie dostupnosti otvoríte klepnutím. Tlačidlo prispôsobte alebo nahraďte v Nastav.\n\n"<annotation id="link">"Zobraz. nast."</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Ak chcete tlačidlo dočasne skryť, presuňte ho k okraju"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Späť"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Bola odstránená skratka {label}}few{Boli odstránené # skratky}many{# shortcuts removed}other{Bolo odstránených # skratiek}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Presunúť doľava nahor"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Presunúť doprava nahor"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Presunúť doľava nadol"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Ak chcete prehrávať v zariadení <xliff:g id="DEVICENAME">%1$s</xliff:g>, priblížte sa k nemu"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Prehráva sa v zariadení <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Niečo sa pokazilo. Skúste to znova."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Neaktívne, preverte aplikáciu"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nenájdené"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Ovládač nie je k dispozícii"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Nainštalujte si aplikáciu kamery"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• Aplikácia je nastavená"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• K dispozícii je minimálne jedno zariadenie"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Pridržte skratku"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Zrušiť"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Prevráťte"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Ak chcete lepšie selfie, rozložte telefón"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 9b1d050..3830dcf 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -386,7 +386,7 @@
<string name="media_projection_permission_dialog_option_entire_screen" msgid="392086473225692983">"Celoten zaslon"</string>
<string name="media_projection_permission_dialog_option_single_app" msgid="1591110238124910521">"Posamezna aplikacija"</string>
<string name="media_projection_permission_dialog_warning_entire_screen" msgid="3989078820637452717">"Pri deljenju, snemanju ali predvajanju ima aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> dostop do vsega, kar je prikazano na zaslonu ali se predvaja v napravi. Zato bodite previdni z gesli, podatki za plačilo, sporočili ali drugimi občutljivimi podatki."</string>
- <string name="media_projection_permission_dialog_warning_single_app" msgid="1659532781536753059">"Pri deljenju, snemanju ali predvajanju aplikacije ima aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> dostop do vsega, kar je prikazano ali predvajano v tej aplikaciji, zato bodite previdni z gesli, podatki za plačilo, sporočili ali drugimi občutljivimi podatki."</string>
+ <string name="media_projection_permission_dialog_warning_single_app" msgid="1659532781536753059">"Pri deljenju, snemanju ali predvajanju aplikacije ima <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> dostop do vsega, kar je prikazano ali predvajano v tej aplikaciji, zato bodite previdni z gesli, podatki za plačilo, sporočili ali drugimi občutljivimi podatki."</string>
<string name="media_projection_permission_dialog_continue" msgid="1827799658916736006">"Naprej"</string>
<string name="media_projection_permission_app_selector_title" msgid="894251621057480704">"Deljenje ali snemanje aplikacije"</string>
<string name="media_projection_permission_dialog_system_service_title" msgid="6827129613741303726">"Ali tej aplikaciji dovolite deljenje ali snemanje?"</string>
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Dotaknite se za funkcije za ljudi s posebnimi potrebami. Ta gumb lahko prilagodite ali zamenjate v nastavitvah.\n\n"<annotation id="link">"Ogled nastavitev"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Če želite gumb začasno skriti, ga premaknite ob rob."</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Razveljavi"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Odstranjena bližnjica: {label}.}one{Odstranjena je # bližnjica.}two{Odstranjeni sta # bližnjici.}few{Odstranjene so # bližnjice.}other{Odstranjenih je # bližnjic.}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Premakni zgoraj levo"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Premakni zgoraj desno"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Premakni spodaj levo"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Približajte napravi <xliff:g id="DEVICENAME">%1$s</xliff:g> za predvajanje v tej napravi"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Predvajanje v napravi <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Prišlo je do napake. Poskusite znova."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Neaktivno, poglejte aplikacijo"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Ni mogoče najti"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrolnik ni na voljo"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 0d89430..219704d 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Trokit dhe hap veçoritë e qasshmërisë. Modifiko ose ndërro butonin te \"Cilësimet\".\n\n"<annotation id="link">"Shih cilësimet"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Zhvendose butonin në skaj për ta fshehur përkohësisht"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Zhbëj"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Shkurtorja \"{label}\" u hoq}other{# shkurtore u hoqën}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Zhvendos lart majtas"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Zhvendos lart djathtas"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Zhvendos poshtë majtas"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Afrohu te <xliff:g id="DEVICENAME">%1$s</xliff:g> për ta luajtur këtu"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Po luhet në <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Ndodhi një gabim. Provo përsëri."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Joaktive, kontrollo aplikacionin"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Nuk u gjet"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrolli është i padisponueshëm"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Të instalosh një aplikacion të kamerës"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• Aplikacioni është konfiguruar"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Ofrohet të paktën një pajisje"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Prek dhe mbaj shtypur shkurtoren"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Anulo"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"U kthye tani"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Shpalos telefonin për një selfi më të mirë"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 4ca702d..de9aa2f 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Додирните за функције приступачности. Прилагодите или замените ово дугме у Подешавањима.\n\n"<annotation id="link">"Подешавања"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Померите дугме до ивице да бисте га привремено сакрили"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Опозови"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} пречица је уклоњена}one{# пречица је уклоњена}few{# пречице су уклоњене}other{# пречица је уклоњено}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Премести горе лево"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Премести горе десно"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Премести доле лево"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Приближите се уређају <xliff:g id="DEVICENAME">%1$s</xliff:g> да бисте на њему пуштали"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Пушта се на уређају <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Дошло је до грешке. Пробајте поново."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Неактивно. Видите апликацију"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Није пронађено"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Контрола није доступна"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index cfbc674..485acc0 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Tryck för att öppna tillgänglighetsfunktioner. Anpassa/ersätt knappen i Inställningar.\n\n"<annotation id="link">"Inställningar"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Flytta knappen till kanten för att dölja den tillfälligt"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Ångra"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Genväg till {label} har tagits bort}other{# genvägar har tagits bort}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Flytta högst upp till vänster"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Flytta högst upp till höger"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Flytta längst ned till vänster"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Flytta dig närmare <xliff:g id="DEVICENAME">%1$s</xliff:g> om du vill spela här"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Spelas upp på <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Något gick fel. Försök igen."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv, kolla appen"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Hittades inte"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Styrning är inte tillgänglig"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• installera en kameraapp"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• appen har konfigurerats"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• minst en enhet är tillgänglig"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Tryck länge på genvägen"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Avbryt"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Vänd nu"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Vik upp telefonen för att ta en bättre selfie"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 6bf1b0a..16691ba 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Gusa ili ufungue vipengele vya ufikivu. Weka mapendeleo au ubadilishe kitufe katika Mipangilio.\n\n"<annotation id="link">"Angalia mipangilio"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Sogeza kitufe kwenye ukingo ili ukifiche kwa muda"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Tendua"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Njia ya mkato ya {label} imeondolewa}other{Njia # za mkato zimeondolewa}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Sogeza juu kushoto"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Sogeza juu kulia"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Sogeza chini kushoto"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Sogeza karibu na <xliff:g id="DEVICENAME">%1$s</xliff:g> ili kucheza hapa"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Inacheza kwenye <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Hitilafu fulani imetokea. Jaribu tena."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Haitumiki, angalia programu"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Hakipatikani"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kidhibiti hakipatikani"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Sakinisha programu ya kamera"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• Programu hii imewekewa mipangilio"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Angalau kifaa kimoja kinapatikana"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Gusa na ushikilie njia ya mkato"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Ghairi"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Geuza kifaa sasa"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Kunjua simu ili upige selfi iliyo bora"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 53e0586..d2774ef 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"அணுகல்தன்மை அம்சத்தை திறக்க தட்டவும். அமைப்பில் பட்டனை பிரத்தியேகமாக்கலாம்/மாற்றலாம்.\n\n"<annotation id="link">"அமைப்பில் காண்க"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"பட்டனைத் தற்காலிகமாக மறைக்க ஓரத்திற்கு நகர்த்தும்"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"செயல்தவிர்"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} ஷார்ட்கட் அகற்றப்பட்டது}other{# ஷார்ட்கட்கள் அகற்றப்பட்டன}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"மேலே இடதுபுறத்திற்கு நகர்த்து"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"மேலே வலதுபுறத்திற்கு நகர்த்து"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"கீழே இடதுபுறத்திற்கு நகர்த்து"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"இங்கு பிளே செய்ய உங்கள் சாதனத்தை <xliff:g id="DEVICENAME">%1$s</xliff:g> சாதனத்திற்கு அருகில் நகர்த்துங்கள்"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> சாதனத்தில் பிளே ஆகிறது"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"ஏதோ தவறாகிவிட்டது. மீண்டும் முயலவும்."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"செயலில் இல்லை , சரிபார்க்கவும்"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"இல்லை"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"கட்டுப்பாடு இல்லை"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index d4c2817..0dcf01c 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"యాక్సెసిబిలిటీ ఫీచర్లను తెరవడానికి ట్యాప్ చేయండి. సెట్టింగ్లలో ఈ బటన్ను అనుకూలంగా మార్చండి లేదా రీప్లేస్ చేయండి.\n\n"<annotation id="link">"వీక్షణ సెట్టింగ్లు"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"తాత్కాలికంగా దానిని దాచడానికి బటన్ను చివరకు తరలించండి"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"చర్య రద్దు చేయండి"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} షార్ట్కట్ తీసివేయబడింది}other{# షార్ట్కట్లు తీసివేయబడ్డాయి}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ఎగువ ఎడమ వైపునకు తరలించు"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ఎగువ కుడి వైపునకు తరలించు"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"దిగువ ఎడమ వైపునకు తరలించు"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ఇక్కడ ప్లే చేయడానికి <xliff:g id="DEVICENAME">%1$s</xliff:g>కి దగ్గరగా వెళ్లండి"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g>లో ప్లే అవుతోంది"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"ఏదో తప్పు జరిగింది. మళ్లీ ట్రై చేయండి."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"ఇన్యాక్టివ్, యాప్ చెక్ చేయండి"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"కనుగొనబడలేదు"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"కంట్రోల్ అందుబాటులో లేదు"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 40d4808..e59aae2 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"แตะเพื่อเปิดฟีเจอร์การช่วยเหลือพิเศษ ปรับแต่งหรือแทนที่ปุ่มนี้ในการตั้งค่า\n\n"<annotation id="link">"ดูการตั้งค่า"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"ย้ายปุ่มไปที่ขอบเพื่อซ่อนชั่วคราว"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"เลิกทำ"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{นำทางลัด {label} ออกแล้ว}other{นำทางลัด # รายการออกแล้ว}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"ย้ายไปด้านซ้ายบน"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"ย้ายไปด้านขวาบน"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"ย้ายไปด้านซ้ายล่าง"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"ขยับไปใกล้ <xliff:g id="DEVICENAME">%1$s</xliff:g> มากขึ้นเพื่อเล่นที่นี่"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"กำลังเล่นใน <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"เกิดข้อผิดพลาด โปรดลองอีกครั้ง"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"ไม่มีการใช้งาน โปรดตรวจสอบแอป"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"ไม่พบ"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"ใช้การควบคุมไม่ได้"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 051fc1e..3e59611 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"I-tap, buksan mga feature ng accessibility. I-customize o palitan button sa Mga Setting.\n\n"<annotation id="link">"Tingnan ang mga setting"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Ilipat ang button sa gilid para pansamantala itong itago"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"I-undo"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} shortcut ang naalis}one{# shortcut ang naalis}other{# na shortcut ang naalis}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Ilipat sa kaliwa sa itaas"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Ilipat sa kanan sa itaas"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Ilipat sa kaliwa sa ibaba"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Lumapit sa <xliff:g id="DEVICENAME">%1$s</xliff:g> para mag-play rito"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Nagpe-play sa <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Nagkaproblema. Subukan ulit."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Hindi aktibo, tingnan ang app"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Hindi nahanap"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Hindi available ang kontrol"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 1533ae0..a7b78e8 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Erişilebilirlik özelliklerini açmak için dokunun. Bu düğmeyi Ayarlar\'dan özelleştirin veya değiştirin.\n\n"<annotation id="link">"Ayarları göster"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Düğmeyi geçici olarak gizlemek için kenara taşıyın"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Geri al"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} kısayolu silindi}other{# kısayol silindi}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Sol üste taşı"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Sağ üste taşı"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Sol alta taşı"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Burada oynatmak için <xliff:g id="DEVICENAME">%1$s</xliff:g> cihazına yaklaşın"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> cihazında oynatılıyor"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Bir sorun oldu. Tekrar deneyin."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Devre dışı, uygulamaya bakın"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Bulunamadı"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrol kullanılamıyor"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Kamera uygulaması yüklenmelidir"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• Uygulama kurulmuş olmalıdır"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• En az bir cihaz mevcut olmalıdır"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Kısayola dokunup basılı tutun"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"İptal"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Şimdi çevirin"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Daha iyi selfie çekmek için telefonu açın"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 70c9cc1..d2f3001 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Кнопка спеціальних можливостей. Змініть або замініть її в Налаштуваннях.\n\n"<annotation id="link">"Переглянути налаштування"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Щоб тимчасово сховати кнопку, перемістіть її на край екрана"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Відмінити"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Комбінацію для швидкого запуску функції \"{label}\" вилучено}one{# комбінацію для швидкого запуску вилучено}few{# комбінації для швидкого запуску вилучено}many{# комбінацій для швидкого запуску вилучено}other{# комбінації для швидкого запуску вилучено}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Перемістити ліворуч угору"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Перемістити праворуч угору"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Перемістити ліворуч униз"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Наблизьтеся до пристрою <xliff:g id="DEVICENAME">%1$s</xliff:g>, щоб відтворити медіафайли на ньому"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Відтворюється на пристрої <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Сталася помилка. Повторіть спробу."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Неактивно, перейдіть у додаток"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Не знайдено"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Елемент керування недоступний"</string>
@@ -1039,8 +1044,7 @@
<string name="keyguard_affordance_enablement_dialog_qr_scanner_instruction" msgid="5355839079232119791">"• Встановлено додаток для камери"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_1" msgid="8438311171750568633">"• Додаток налаштовано"</string>
<string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Принаймні один пристрій доступний"</string>
- <!-- no translation found for keyguard_affordance_press_too_short (8145437175134998864) -->
- <skip />
+ <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Натисніть і утримуйте ярлик"</string>
<string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Скасувати"</string>
<string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Перевернути"</string>
<string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Розгорніть телефон, щоб зробити краще селфі"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index b36a132..9db36c3 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"ایکسیسبیلٹی خصوصیات کھولنے کے لیے تھپتھپائیں۔ ترتیبات میں اس بٹن کو حسب ضرورت بنائیں یا تبدیل کریں۔\n\n"<annotation id="link">"ترتیبات ملاحظہ کریں"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"عارضی طور پر بٹن کو چھپانے کے لئے اسے کنارے پر لے جائیں"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"کالعدم کریں"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} شارٹ کٹ ہٹا دیا گیا}other{# شارٹ کٹس ہٹا دیے گئے}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"اوپر بائیں جانب لے جائیں"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"اوپر دائیں جانب لے جائيں"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"نیچے بائیں جانب لے جائیں"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"یہاں چلانے کے ليے <xliff:g id="DEVICENAME">%1$s</xliff:g> کے قریب جائیں"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> پر چل رہا ہے"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"کچھ غلط ہوگیا۔ پھر کوشش کریں۔"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"غیر فعال، ایپ چیک کریں"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"نہیں ملا"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"کنٹرول دستیاب نہیں ہے"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index df4f407..6ab3d6c 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Maxsus imkoniyatlarni ochish uchun bosing Sozlamalardan moslay yoki almashtira olasiz.\n\n"<annotation id="link">"Sozlamalar"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Vaqtinchalik berkitish uchun tugmani qirra tomon suring"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Bekor qilish"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{{label} tezkor tugmasi olib tashlandi}other{# ta tezkor tugma olib tashlandi}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Yuqori chapga surish"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Yuqori oʻngga surish"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Quyi chapga surish"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Bu yerda ijro qilish uchun <xliff:g id="DEVICENAME">%1$s</xliff:g>qurilmasiga yaqinlashtiring"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"<xliff:g id="DEVICENAME">%1$s</xliff:g> qurilmasida ijro qilinmoqda"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Xatolik yuz berdi. Qayta urining."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Nofaol. Ilovani tekshiring"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Topilmadi"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Boshqarish imkonsiz"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 313e528..69056d5 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Nhấn để mở bộ tính năng hỗ trợ tiếp cận. Tuỳ chỉnh/thay thế nút này trong phần Cài đặt.\n\n"<annotation id="link">"Xem chế độ cài đặt"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Di chuyển nút sang cạnh để ẩn nút tạm thời"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Huỷ"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Đã xoá lối tắt {label}}other{Đã xoá # lối tắt}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Chuyển lên trên cùng bên trái"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Chuyển lên trên cùng bên phải"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Chuyển tới dưới cùng bên trái"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Di chuyển đến gần <xliff:g id="DEVICENAME">%1$s</xliff:g> hơn để phát tại đây"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Đang phát trên <xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Đã xảy ra lỗi. Hãy thử lại."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Không hoạt động, hãy kiểm tra ứng dụng"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Không tìm thấy"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Không có chức năng điều khiển"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 1f143b0..48df522 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"点按即可打开无障碍功能。您可在“设置”中自定义或更换此按钮。\n\n"<annotation id="link">"查看设置"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"将按钮移到边缘,即可暂时将其隐藏"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"撤消"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{已移除{label}的快捷方式}other{已移除 # 个快捷方式}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"移至左上角"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"移至右上角"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"移至左下角"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"若要在此设备上播放,请靠近“<xliff:g id="DEVICENAME">%1$s</xliff:g>”"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"正在“<xliff:g id="DEVICENAME">%1$s</xliff:g>”上播放"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"出了点问题,请重试。"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"无效,请检查应用"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"未找到"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"控件不可用"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index f5b2f62..a0a3fed 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"㩒一下就可以開無障礙功能。喺「設定」度自訂或者取代呢個按鈕。\n\n"<annotation id="link">"查看設定"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"將按鈕移到邊緣即可暫時隱藏"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"復原"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{已移除 {label} 個捷徑}other{已移除 # 個捷徑}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"移去左上方"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"移去右上方"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"移到左下方"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"如要在此裝置上播放,請靠近「<xliff:g id="DEVICENAME">%1$s</xliff:g>」"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"正在「<xliff:g id="DEVICENAME">%1$s</xliff:g>」上播放"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"發生錯誤,請再試一次。"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"已停用,請檢查應用程式"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"找不到"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"無法使用控制功能"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index fd3bc42..fd35f51 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"輕觸即可開啟無障礙功能。你可以前往「設定」自訂或更換這個按鈕。\n\n"<annotation id="link">"查看設定"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"將按鈕移到邊緣處即可暫時隱藏"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"復原"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{已移除 {label} 個快速鍵}other{已移除 # 個快速鍵}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"移到左上方"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"移到右上方"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"移到左下方"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"如要在這部裝置上播放,請移到更靠近「<xliff:g id="DEVICENAME">%1$s</xliff:g>」的位置"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"正在「<xliff:g id="DEVICENAME">%1$s</xliff:g>」上播放"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"發生錯誤,請再試一次。"</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"無效,請查看應用程式"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"找不到控制項"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"無法使用控制項"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 25beb72..3a57ace 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -816,7 +816,10 @@
<string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"Thepha ukuze uvule izakhi zokufinyelela. Enza ngendlela oyifisayo noma shintsha le nkinobho Kumasethingi.\n\n"<annotation id="link">"Buka amasethingi"</annotation></string>
<string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Hambisa inkinobho onqenqemeni ukuze uyifihle okwesikhashana"</string>
<string name="accessibility_floating_button_undo" msgid="511112888715708241">"Hlehlisa"</string>
- <string name="accessibility_floating_button_undo_message_text" msgid="3044079592757099698">"{count,plural, =1{Isinqamuleli se-{label} sisusiwe}one{Izinqamuleli ezingu-# zikhishiwe}other{Izinqamuleli ezingu-# zikhishiwe}}"</string>
+ <!-- no translation found for accessibility_floating_button_undo_message_label_text (9017658016426242640) -->
+ <skip />
+ <!-- no translation found for accessibility_floating_button_undo_message_number_text (4909270290725226075) -->
+ <skip />
<string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Hamba phezulu kwesokunxele"</string>
<string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Hamba phezulu ngakwesokudla"</string>
<string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Hamba phansi ngakwesokunxele"</string>
@@ -884,6 +887,8 @@
<string name="media_move_closer_to_end_cast" msgid="6495907340926563656">"Sondela eduze ne-<xliff:g id="DEVICENAME">%1$s</xliff:g> ukuze udlale lapha"</string>
<string name="media_transfer_playing_different_device" msgid="7186806382609785610">"Idlala ku-<xliff:g id="DEVICENAME">%1$s</xliff:g>"</string>
<string name="media_transfer_failed" msgid="7955354964610603723">"Kukhona okungahambanga kahle. Zama futhi."</string>
+ <!-- no translation found for media_transfer_loading (5544017127027152422) -->
+ <skip />
<string name="controls_error_timeout" msgid="794197289772728958">"Akusebenzi, hlola uhlelo lokusebenza"</string>
<string name="controls_error_removed" msgid="6675638069846014366">"Ayitholakali"</string>
<string name="controls_error_removed_title" msgid="1207794911208047818">"Ukulawula akutholakali"</string>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 7073f6a..7f45e5e 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -440,6 +440,11 @@
This name is in the ComponentName flattened format (package/class) -->
<string name="config_screenshotEditor" translatable="false"></string>
+ <!-- ComponentName for the file browsing app that the system would expect to be used in work
+ profile. The icon for this app will be shown to the user when informing them that a
+ screenshot has been saved to work profile. If blank, a default icon will be shown. -->
+ <string name="config_sceenshotWorkProfileFilesApp" translatable="false"></string>
+
<!-- Remote copy default activity. Must handle REMOTE_COPY_ACTION intents.
This name is in the ComponentName flattened format (package/class) -->
<string name="config_remoteCopyPackage" translatable="false"></string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 3b17bce..ae7ab9e 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1293,6 +1293,12 @@
<!-- OCCLUDED -> LOCKSCREEN transition: Amount to shift lockscreen content on entering -->
<dimen name="occluded_to_lockscreen_transition_lockscreen_translation_y">40dp</dimen>
+ <!-- LOCKSCREEN -> DREAMING transition: Amount to shift lockscreen content on entering -->
+ <dimen name="lockscreen_to_dreaming_transition_lockscreen_translation_y">-40dp</dimen>
+
+ <!-- LOCKSCREEN -> OCCLUDED transition: Amount to shift lockscreen content on entering -->
+ <dimen name="lockscreen_to_occluded_transition_lockscreen_translation_y">-40dp</dimen>
+
<!-- The amount of vertical offset for the keyguard during the full shade transition. -->
<dimen name="lockscreen_shade_keyguard_transition_vertical_offset">0dp</dimen>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 45147ca..61a6e9d5 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -240,7 +240,9 @@
<!-- Content description for the right boundary of the screenshot being cropped, with the current position as a percentage. [CHAR LIMIT=NONE] -->
<string name="screenshot_right_boundary_pct">Right boundary <xliff:g id="percent" example="50">%1$d</xliff:g> percent</string>
<!-- Notification displayed when a screenshot is saved in a work profile. [CHAR LIMIT=NONE] -->
- <string name="screenshot_work_profile_notification" translatable="false">Work screenshots are saved in the work <xliff:g id="app" example="Files">%1$s</xliff:g> app</string>
+ <string name="screenshot_work_profile_notification">Work screenshots are saved in the <xliff:g id="app" example="Work Files">%1$s</xliff:g> app</string>
+ <!-- Default name referring to the app on the device that lets the user browse stored files. [CHAR LIMIT=NONE] -->
+ <string name="screenshot_default_files_app_name">Files</string>
<!-- Notification title displayed for screen recording [CHAR LIMIT=50]-->
<string name="screenrecord_name">Screen Recorder</string>
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java
index aec3063..b53b868 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java
@@ -20,6 +20,7 @@
import android.util.Slog;
import com.android.keyguard.KeyguardClockSwitch.ClockSize;
+import com.android.keyguard.logging.KeyguardLogger;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.ClockAnimations;
@@ -62,14 +63,16 @@
ConfigurationController configurationController,
DozeParameters dozeParameters,
FeatureFlags featureFlags,
- ScreenOffAnimationController screenOffAnimationController) {
+ ScreenOffAnimationController screenOffAnimationController,
+ KeyguardLogger logger) {
super(keyguardStatusView);
mKeyguardSliceViewController = keyguardSliceViewController;
mKeyguardClockSwitchController = keyguardClockSwitchController;
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mConfigurationController = configurationController;
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, keyguardStateController,
- dozeParameters, screenOffAnimationController, /* animateYPos= */ true);
+ dozeParameters, screenOffAnimationController, /* animateYPos= */ true,
+ logger.getBuffer());
mKeyguardVisibilityHelper.setOcclusionTransitionFlagEnabled(
featureFlags.isEnabled(Flags.UNOCCLUSION_TRANSITION));
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 271fc7b..4e10bff 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -140,6 +140,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.biometrics.AuthController;
+import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
@@ -169,6 +170,7 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Optional;
import java.util.Set;
import java.util.TimeZone;
import java.util.concurrent.Executor;
@@ -329,13 +331,11 @@
private final ArrayList<WeakReference<KeyguardUpdateMonitorCallback>>
mCallbacks = Lists.newArrayList();
private ContentObserver mDeviceProvisionedObserver;
- private ContentObserver mSfpsRequireScreenOnToAuthPrefObserver;
private final ContentObserver mTimeFormatChangeObserver;
private boolean mSwitchingUser;
private boolean mDeviceInteractive;
- private boolean mSfpsRequireScreenOnToAuthPrefEnabled;
private final SubscriptionManager mSubscriptionManager;
private final TelephonyListenerManager mTelephonyListenerManager;
private final TrustManager mTrustManager;
@@ -368,6 +368,7 @@
private boolean mLogoutEnabled;
private boolean mIsFaceEnrolled;
private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+ private FingerprintInteractiveToAuthProvider mFingerprintInteractiveToAuthProvider;
/**
* Short delay before restarting fingerprint authentication after a successful try. This should
@@ -2039,7 +2040,8 @@
@Nullable FaceManager faceManager,
@Nullable FingerprintManager fingerprintManager,
@Nullable BiometricManager biometricManager,
- FaceWakeUpTriggersConfig faceWakeUpTriggersConfig) {
+ FaceWakeUpTriggersConfig faceWakeUpTriggersConfig,
+ Optional<FingerprintInteractiveToAuthProvider> interactiveToAuthProvider) {
mContext = context;
mSubscriptionManager = subscriptionManager;
mUserTracker = userTracker;
@@ -2303,30 +2305,7 @@
Settings.System.getUriFor(Settings.System.TIME_12_24),
false, mTimeFormatChangeObserver, UserHandle.USER_ALL);
- updateSfpsRequireScreenOnToAuthPref();
- mSfpsRequireScreenOnToAuthPrefObserver = new ContentObserver(mHandler) {
- @Override
- public void onChange(boolean selfChange) {
- updateSfpsRequireScreenOnToAuthPref();
- }
- };
-
- mContext.getContentResolver().registerContentObserver(
- mSecureSettings.getUriFor(
- Settings.Secure.SFPS_REQUIRE_SCREEN_ON_TO_AUTH_ENABLED),
- false,
- mSfpsRequireScreenOnToAuthPrefObserver,
- getCurrentUser());
- }
-
- protected void updateSfpsRequireScreenOnToAuthPref() {
- final int defaultSfpsRequireScreenOnToAuthValue =
- mContext.getResources().getBoolean(
- com.android.internal.R.bool.config_requireScreenOnToAuthEnabled) ? 1 : 0;
- mSfpsRequireScreenOnToAuthPrefEnabled = mSecureSettings.getIntForUser(
- Settings.Secure.SFPS_REQUIRE_SCREEN_ON_TO_AUTH_ENABLED,
- defaultSfpsRequireScreenOnToAuthValue,
- getCurrentUser()) != 0;
+ mFingerprintInteractiveToAuthProvider = interactiveToAuthProvider.orElse(null);
}
private void initializeSimState() {
@@ -2721,8 +2700,11 @@
boolean shouldListenSideFpsState = true;
if (isSideFps) {
+ final boolean interactiveToAuthEnabled =
+ mFingerprintInteractiveToAuthProvider != null &&
+ mFingerprintInteractiveToAuthProvider.isEnabled(getCurrentUser());
shouldListenSideFpsState =
- mSfpsRequireScreenOnToAuthPrefEnabled ? isDeviceInteractive() : true;
+ interactiveToAuthEnabled ? isDeviceInteractive() : true;
}
boolean shouldListen = shouldListenKeyguardState && shouldListenUserState
@@ -3837,11 +3819,6 @@
mContext.getContentResolver().unregisterContentObserver(mTimeFormatChangeObserver);
}
- if (mSfpsRequireScreenOnToAuthPrefObserver != null) {
- mContext.getContentResolver().unregisterContentObserver(
- mSfpsRequireScreenOnToAuthPrefObserver);
- }
-
try {
ActivityManager.getService().unregisterUserSwitchObserver(mUserSwitchObserver);
} catch (RemoteException e) {
@@ -3919,8 +3896,12 @@
pw.println(" sfpsEnrolled=" + isSfpsEnrolled());
pw.println(" shouldListenForSfps=" + shouldListenForFingerprint(false));
if (isSfpsEnrolled()) {
- pw.println(" mSfpsRequireScreenOnToAuthPrefEnabled="
- + mSfpsRequireScreenOnToAuthPrefEnabled);
+ final boolean interactiveToAuthEnabled =
+ mFingerprintInteractiveToAuthProvider != null &&
+ mFingerprintInteractiveToAuthProvider
+ .isEnabled(getCurrentUser());
+ pw.println(" interactiveToAuthEnabled="
+ + interactiveToAuthEnabled);
}
}
new DumpsysTableLogger(
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java b/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java
index bde0692..7e48193 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java
@@ -22,6 +22,8 @@
import android.view.ViewPropertyAnimator;
import com.android.systemui.animation.Interpolators;
+import com.android.systemui.plugins.log.LogBuffer;
+import com.android.systemui.plugins.log.LogLevel;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.AnimatableProperty;
import com.android.systemui.statusbar.notification.PropertyAnimator;
@@ -31,11 +33,14 @@
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
+import com.google.errorprone.annotations.CompileTimeConstant;
+
/**
* Helper class for updating visibility of keyguard views based on keyguard and status bar state.
* This logic is shared by both the keyguard status view and the keyguard user switcher.
*/
public class KeyguardVisibilityHelper {
+ private static final String TAG = "KeyguardVisibilityHelper";
private View mView;
private final KeyguardStateController mKeyguardStateController;
@@ -46,17 +51,26 @@
private boolean mLastOccludedState = false;
private boolean mIsUnoccludeTransitionFlagEnabled = false;
private final AnimationProperties mAnimationProperties = new AnimationProperties();
+ private final LogBuffer mLogBuffer;
public KeyguardVisibilityHelper(View view,
KeyguardStateController keyguardStateController,
DozeParameters dozeParameters,
ScreenOffAnimationController screenOffAnimationController,
- boolean animateYPos) {
+ boolean animateYPos,
+ LogBuffer logBuffer) {
mView = view;
mKeyguardStateController = keyguardStateController;
mDozeParameters = dozeParameters;
mScreenOffAnimationController = screenOffAnimationController;
mAnimateYPos = animateYPos;
+ mLogBuffer = logBuffer;
+ }
+
+ private void log(@CompileTimeConstant String message) {
+ if (mLogBuffer != null) {
+ mLogBuffer.log(TAG, LogLevel.DEBUG, message);
+ }
}
public boolean isVisibilityAnimating() {
@@ -94,6 +108,9 @@
.setStartDelay(mKeyguardStateController.getKeyguardFadingAwayDelay())
.setDuration(mKeyguardStateController.getShortenedFadingAwayDuration())
.start();
+ log("goingToFullShade && keyguardFadingAway");
+ } else {
+ log("goingToFullShade && !keyguardFadingAway");
}
} else if (oldStatusBarState == StatusBarState.SHADE_LOCKED && statusBarState == KEYGUARD) {
mView.setVisibility(View.VISIBLE);
@@ -105,6 +122,7 @@
.setDuration(320)
.setInterpolator(Interpolators.ALPHA_IN)
.withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable);
+ log("keyguardFadingAway transition w/ Y Aniamtion");
} else if (statusBarState == KEYGUARD) {
if (keyguardFadingAway) {
mKeyguardViewVisibilityAnimating = true;
@@ -125,9 +143,13 @@
true /* animate */);
animator.setDuration(duration)
.setStartDelay(delay);
+ log("keyguardFadingAway transition w/ Y Aniamtion");
+ } else {
+ log("keyguardFadingAway transition w/o Y Animation");
}
animator.start();
} else if (mScreenOffAnimationController.shouldAnimateInKeyguard()) {
+ log("ScreenOff transition");
mKeyguardViewVisibilityAnimating = true;
// Ask the screen off animation controller to animate the keyguard visibility for us
@@ -136,6 +158,7 @@
mView, mAnimateKeyguardStatusViewVisibleEndRunnable);
} else if (!mIsUnoccludeTransitionFlagEnabled && mLastOccludedState && !isOccluded) {
// An activity was displayed over the lock screen, and has now gone away
+ log("Unoccluded transition");
mView.setVisibility(View.VISIBLE);
mView.setAlpha(0f);
@@ -146,12 +169,14 @@
.withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable)
.start();
} else {
+ log("Direct set Visibility to VISIBLE");
mView.setVisibility(View.VISIBLE);
if (!mIsUnoccludeTransitionFlagEnabled) {
mView.setAlpha(1f);
}
}
} else {
+ log("Direct set Visibility to GONE");
mView.setVisibility(View.GONE);
mView.setAlpha(1f);
}
@@ -162,14 +187,18 @@
private final Runnable mAnimateKeyguardStatusViewInvisibleEndRunnable = () -> {
mKeyguardViewVisibilityAnimating = false;
mView.setVisibility(View.INVISIBLE);
+ log("Callback Set Visibility to INVISIBLE");
};
private final Runnable mAnimateKeyguardStatusViewGoneEndRunnable = () -> {
mKeyguardViewVisibilityAnimating = false;
mView.setVisibility(View.GONE);
+ log("CallbackSet Visibility to GONE");
};
private final Runnable mAnimateKeyguardStatusViewVisibleEndRunnable = () -> {
mKeyguardViewVisibilityAnimating = false;
+ mView.setVisibility(View.VISIBLE);
+ log("Callback Set Visibility to VISIBLE");
};
}
diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
index cf246b6..1bf63e59 100644
--- a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
@@ -503,6 +503,17 @@
}
@Override
+ public void onBiometricsCleared() {
+ final boolean wasUserUnlockedWithBiometric = mUserUnlockedWithBiometric;
+ mUserUnlockedWithBiometric =
+ mKeyguardUpdateMonitor.getUserUnlockedWithBiometric(
+ KeyguardUpdateMonitor.getCurrentUser());
+ if (wasUserUnlockedWithBiometric != mUserUnlockedWithBiometric) {
+ updateVisibility();
+ }
+ }
+
+ @Override
public void onBiometricRunningStateChanged(boolean running,
BiometricSourceType biometricSourceType) {
final boolean wasRunningFps = mRunningFPS;
diff --git a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt
index b84fb08..b106fec 100644
--- a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt
+++ b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt
@@ -34,7 +34,7 @@
* temporary logs or logs for smaller classes when creating whole new [LogBuffer] wrapper might be
* an overkill.
*/
-class KeyguardLogger @Inject constructor(@KeyguardLog private val buffer: LogBuffer) :
+class KeyguardLogger @Inject constructor(@KeyguardLog val buffer: LogBuffer) :
ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) {
fun logException(ex: Exception, @CompileTimeConstant logMsg: String) {
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
index ec15d1a..a3dbaad 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
@@ -440,6 +440,7 @@
final int configDiff = newConfig.diff(mConfiguration);
mConfiguration.setTo(newConfig);
onConfigurationChanged(configDiff);
+ mWindowMagnificationSettings.onConfigurationChanged(configDiff);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
index 069c0f6..9f857a8 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java
@@ -27,8 +27,6 @@
import android.content.pm.ActivityInfo;
import android.graphics.Insets;
import android.graphics.PixelFormat;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.UserHandle;
@@ -105,14 +103,14 @@
/** Denotes the Magnification size type. */
public @interface MagnificationSize {
int NONE = 0;
- int SMALL = 1;
+ int SMALL = 1;
int MEDIUM = 2;
int LARGE = 3;
}
@VisibleForTesting
WindowMagnificationSettings(Context context, WindowMagnificationSettingsCallback callback,
- SfVsyncFrameCallbackProvider sfVsyncFrameProvider) {
+ SfVsyncFrameCallbackProvider sfVsyncFrameProvider) {
mContext = context;
mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class);
mWindowManager = mContext.getSystemService(WindowManager.class);
@@ -123,66 +121,10 @@
Settings.Secure.ACCESSIBILITY_ALLOW_DIAGONAL_SCROLLING, 0,
UserHandle.USER_CURRENT) == 1;
- float scale = Settings.Secure.getFloatForUser(mContext.getContentResolver(),
- Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, 0,
- UserHandle.USER_CURRENT);
-
- mSettingView = (LinearLayout) View.inflate(context,
- R.layout.window_magnification_settings_view, null);
-
- mSettingView.setClickable(true);
- mSettingView.setFocusable(true);
- mSettingView.setOnTouchListener(this::onTouch);
-
- mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view);
- mSmallButton = mSettingView.findViewById(R.id.magnifier_small_button);
- mMediumButton = mSettingView.findViewById(R.id.magnifier_medium_button);
- mLargeButton = mSettingView.findViewById(R.id.magnifier_large_button);
- mCloseButton = mSettingView.findViewById(R.id.magnifier_close_button);
- mEditButton = mSettingView.findViewById(R.id.magnifier_edit_button);
- mChangeModeButton = mSettingView.findViewById(R.id.magnifier_full_button);
-
- mZoomSeekbar = mSettingView.findViewById(R.id.magnifier_zoom_seekbar);
- mZoomSeekbar.setOnSeekBarChangeListener(new ZoomSeekbarChangeListener());
- setSeekbarProgress(scale);
- mAllowDiagonalScrollingSwitch =
- (Switch) mSettingView.findViewById(R.id.magnifier_horizontal_lock_switch);
- mAllowDiagonalScrollingSwitch.setChecked(mAllowDiagonalScrolling);
- mAllowDiagonalScrollingSwitch.setOnCheckedChangeListener((view, checked) -> {
- toggleDiagonalScrolling();
- });
+ inflateView();
mParams = createLayoutParams(context);
- applyResourcesValues();
-
- mSmallButton.setAccessibilityDelegate(mButtonDelegate);
- mSmallButton.setOnClickListener(mButtonClickListener);
-
- mMediumButton.setAccessibilityDelegate(mButtonDelegate);
- mMediumButton.setOnClickListener(mButtonClickListener);
-
- mLargeButton.setAccessibilityDelegate(mButtonDelegate);
- mLargeButton.setOnClickListener(mButtonClickListener);
-
- mCloseButton.setAccessibilityDelegate(mButtonDelegate);
- mCloseButton.setOnClickListener(mButtonClickListener);
-
- mChangeModeButton.setAccessibilityDelegate(mButtonDelegate);
- mChangeModeButton.setOnClickListener(mButtonClickListener);
-
- mEditButton.setAccessibilityDelegate(mButtonDelegate);
- mEditButton.setOnClickListener(mButtonClickListener);
-
mWindowInsetChangeRunnable = this::onWindowInsetChanged;
- mSettingView.setOnApplyWindowInsetsListener((v, insets) -> {
- // Adds a pending post check to avoiding redundant calculation because this callback
- // is sent frequently when the switch icon window dragged by the users.
- if (!mSettingView.getHandler().hasCallbacks(mWindowInsetChangeRunnable)) {
- mSettingView.getHandler().post(mWindowInsetChangeRunnable);
- }
- return v.onApplyWindowInsets(insets);
- });
-
mGestureDetector = new MagnificationGestureDetector(context,
context.getMainThreadHandler(), this);
}
@@ -230,43 +172,6 @@
}
}
- private void applyResourcesValues() {
- final int padding = mContext.getResources().getDimensionPixelSize(
- R.dimen.magnification_switch_button_padding);
-
- PorterDuffColorFilter filter = new PorterDuffColorFilter(mContext.getColor(
- R.color.accessibility_magnifier_icon_color), PorterDuff.Mode.SRC_ATOP);
-
- mSmallButton.setImageResource(R.drawable.ic_magnification_menu_small);
- mSmallButton.setColorFilter(filter);
- mSmallButton.setBackgroundResource(
- R.drawable.accessibility_magnification_setting_view_btn_bg);
- mSmallButton.setPadding(padding, padding, padding, padding);
-
- mMediumButton.setImageResource(R.drawable.ic_magnification_menu_medium);
- mMediumButton.setColorFilter(filter);
- mMediumButton.setBackgroundResource(
- R.drawable.accessibility_magnification_setting_view_btn_bg);
- mMediumButton.setPadding(padding, padding, padding, padding);
-
- mLargeButton.setImageResource(R.drawable.ic_magnification_menu_large);
- mLargeButton.setColorFilter(filter);
- mLargeButton.setBackgroundResource(
- R.drawable.accessibility_magnification_setting_view_btn_bg);
- mLargeButton.setPadding(padding, padding, padding, padding);
-
- mChangeModeButton.setImageResource(R.drawable.ic_open_in_new_fullscreen);
- mChangeModeButton.setColorFilter(filter);
- mChangeModeButton.setBackgroundResource(
- R.drawable.accessibility_magnification_setting_view_btn_bg);
- mChangeModeButton.setPadding(padding, padding, padding, padding);
-
- mCloseButton.setBackgroundResource(
- R.drawable.accessibility_magnification_setting_view_btn_bg);
- mEditButton.setBackgroundResource(
- R.drawable.accessibility_magnification_setting_view_btn_bg);
- }
-
private final AccessibilityDelegate mButtonDelegate = new AccessibilityDelegate() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
@@ -394,6 +299,10 @@
}
public void hideSettingPanel() {
+ hideSettingPanel(true);
+ }
+
+ public void hideSettingPanel(boolean resetPosition) {
if (!mIsVisible) {
return;
}
@@ -401,8 +310,10 @@
// Reset button status.
mWindowManager.removeView(mSettingView);
mIsVisible = false;
- mParams.x = 0;
- mParams.y = 0;
+ if (resetPosition) {
+ mParams.x = 0;
+ mParams.y = 0;
+ }
mContext.unregisterReceiver(mScreenOffReceiver);
}
@@ -458,9 +369,72 @@
mZoomSeekbar.setProgress(index);
}
+ void inflateView() {
+ mSettingView = (LinearLayout) View.inflate(mContext,
+ R.layout.window_magnification_settings_view, null);
+
+ mSettingView.setClickable(true);
+ mSettingView.setFocusable(true);
+ mSettingView.setOnTouchListener(this::onTouch);
+
+ mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view);
+ mSmallButton = mSettingView.findViewById(R.id.magnifier_small_button);
+ mMediumButton = mSettingView.findViewById(R.id.magnifier_medium_button);
+ mLargeButton = mSettingView.findViewById(R.id.magnifier_large_button);
+ mCloseButton = mSettingView.findViewById(R.id.magnifier_close_button);
+ mEditButton = mSettingView.findViewById(R.id.magnifier_edit_button);
+ mChangeModeButton = mSettingView.findViewById(R.id.magnifier_full_button);
+
+ mZoomSeekbar = mSettingView.findViewById(R.id.magnifier_zoom_seekbar);
+ mZoomSeekbar.setOnSeekBarChangeListener(new ZoomSeekbarChangeListener());
+
+ float scale = Settings.Secure.getFloatForUser(mContext.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, 0,
+ UserHandle.USER_CURRENT);
+ setSeekbarProgress(scale);
+ mAllowDiagonalScrollingSwitch =
+ (Switch) mSettingView.findViewById(R.id.magnifier_horizontal_lock_switch);
+ mAllowDiagonalScrollingSwitch.setChecked(mAllowDiagonalScrolling);
+ mAllowDiagonalScrollingSwitch.setOnCheckedChangeListener((view, checked) -> {
+ toggleDiagonalScrolling();
+ });
+
+ mSmallButton.setAccessibilityDelegate(mButtonDelegate);
+ mSmallButton.setOnClickListener(mButtonClickListener);
+
+ mMediumButton.setAccessibilityDelegate(mButtonDelegate);
+ mMediumButton.setOnClickListener(mButtonClickListener);
+
+ mLargeButton.setAccessibilityDelegate(mButtonDelegate);
+ mLargeButton.setOnClickListener(mButtonClickListener);
+
+ mCloseButton.setAccessibilityDelegate(mButtonDelegate);
+ mCloseButton.setOnClickListener(mButtonClickListener);
+
+ mChangeModeButton.setAccessibilityDelegate(mButtonDelegate);
+ mChangeModeButton.setOnClickListener(mButtonClickListener);
+
+ mEditButton.setAccessibilityDelegate(mButtonDelegate);
+ mEditButton.setOnClickListener(mButtonClickListener);
+
+ mSettingView.setOnApplyWindowInsetsListener((v, insets) -> {
+ // Adds a pending post check to avoiding redundant calculation because this callback
+ // is sent frequently when the switch icon window dragged by the users.
+ if (!mSettingView.getHandler().hasCallbacks(mWindowInsetChangeRunnable)) {
+ mSettingView.getHandler().post(mWindowInsetChangeRunnable);
+ }
+ return v.onApplyWindowInsets(insets);
+ });
+ }
+
void onConfigurationChanged(int configDiff) {
if ((configDiff & ActivityInfo.CONFIG_UI_MODE) != 0) {
- applyResourcesValues();
+ boolean showSettingPanelAfterThemeChange = mIsVisible;
+ hideSettingPanel(/* resetPosition= */ false);
+ inflateView();
+ if (showSettingPanelAfterThemeChange) {
+ showSettingPanel(/* resetPosition= */ false);
+ }
return;
}
if ((configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0) {
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/FingerprintInteractiveToAuthProvider.java b/packages/SystemUI/src/com/android/systemui/biometrics/FingerprintInteractiveToAuthProvider.java
new file mode 100644
index 0000000..902bb18
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/FingerprintInteractiveToAuthProvider.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.biometrics;
+
+/** Provides the status of the interactive to auth feature. */
+public interface FingerprintInteractiveToAuthProvider {
+ /**
+ *
+ * @param userId the user Id.
+ * @return true if the InteractiveToAuthFeature is enabled, false if disabled.
+ */
+ boolean isEnabled(int userId);
+}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
index 5990e9e..cfbde15 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
@@ -62,6 +62,7 @@
import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.logging.InstanceId;
import com.android.internal.util.LatencyTracker;
import com.android.keyguard.FaceAuthApiRequestReason;
import com.android.keyguard.KeyguardUpdateMonitor;
@@ -547,7 +548,9 @@
}
final int biometricTouchReportedTouchType = toBiometricTouchReportedTouchType(event);
- final int sessionId = mSessionTracker.getSessionId(getBiometricSessionType()).getId();
+ final InstanceId sessionIdProvider = mSessionTracker.getSessionId(
+ getBiometricSessionType());
+ final int sessionId = (sessionIdProvider != null) ? sessionIdProvider.getId() : -1;
final int touchConfigId = BOUNDING_BOX_TOUCH_CONFIG_ID;
SysUiStatsLog.write(SysUiStatsLog.BIOMETRIC_TOUCH_REPORTED, biometricTouchReportedTouchType,
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt
index a3c4985..1b6c8c6 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt
@@ -33,6 +33,7 @@
import android.os.Build
import android.os.RemoteException
import android.provider.Settings
+import android.util.FeatureFlagUtils
import android.util.Log
import android.util.RotationUtils
import android.view.LayoutInflater
@@ -232,18 +233,30 @@
return when (filteredRequestReason) {
REASON_ENROLL_FIND_SENSOR,
REASON_ENROLL_ENROLLING -> {
- UdfpsEnrollViewController(
- view.addUdfpsView(R.layout.udfps_enroll_view) {
- updateSensorLocation(sensorBounds)
- },
- enrollHelper ?: throw IllegalStateException("no enrollment helper"),
- statusBarStateController,
- shadeExpansionStateManager,
- dialogManager,
- dumpManager,
- featureFlags,
- overlayParams.scaleFactor
- )
+ if (FeatureFlagUtils.isEnabled(context,
+ FeatureFlagUtils.SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS)) {
+ // Enroll udfps UI is handled by settings, so use empty view here
+ UdfpsFpmEmptyViewController(
+ view.addUdfpsView(R.layout.udfps_fpm_empty_view),
+ statusBarStateController,
+ shadeExpansionStateManager,
+ dialogManager,
+ dumpManager
+ )
+ } else {
+ UdfpsEnrollViewController(
+ view.addUdfpsView(R.layout.udfps_enroll_view) {
+ updateSensorLocation(sensorBounds)
+ },
+ enrollHelper ?: throw IllegalStateException("no enrollment helper"),
+ statusBarStateController,
+ shadeExpansionStateManager,
+ dialogManager,
+ dumpManager,
+ featureFlags,
+ overlayParams.scaleFactor
+ )
+ }
}
REASON_AUTH_KEYGUARD -> {
UdfpsKeyguardViewController(
@@ -277,8 +290,8 @@
}
REASON_AUTH_OTHER,
REASON_AUTH_SETTINGS -> {
- UdfpsFpmOtherViewController(
- view.addUdfpsView(R.layout.udfps_fpm_other_view),
+ UdfpsFpmEmptyViewController(
+ view.addUdfpsView(R.layout.udfps_fpm_empty_view),
statusBarStateController,
shadeExpansionStateManager,
dialogManager,
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherView.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmEmptyView.kt
similarity index 72%
rename from packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherView.kt
rename to packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmEmptyView.kt
index 4d6da8f..e8f041e 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherView.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmEmptyView.kt
@@ -17,24 +17,19 @@
import android.content.Context
import android.util.AttributeSet
-import android.widget.ImageView
-import com.android.systemui.R
/**
- * View corresponding with udfps_fpm_other_view.xml
+ * View corresponding with udfps_fpm_empty_view.xml
+ *
+ * Currently doesn't draw anything.
*/
-class UdfpsFpmOtherView(
+class UdfpsFpmEmptyView(
context: Context,
attrs: AttributeSet?
) : UdfpsAnimationView(context, attrs) {
+ // Drawable isn't ever added to the view, so we don't currently show anything
private val fingerprintDrawable: UdfpsFpDrawable = UdfpsFpDrawable(context)
- private lateinit var fingerprintView: ImageView
-
- override fun onFinishInflate() {
- fingerprintView = findViewById(R.id.udfps_fpm_other_fp_view)!!
- fingerprintView.setImageDrawable(fingerprintDrawable)
- }
override fun getDrawable(): UdfpsDrawable = fingerprintDrawable
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherViewController.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmEmptyViewController.kt
similarity index 82%
rename from packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherViewController.kt
rename to packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmEmptyViewController.kt
index 7c23278..d122d64 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmEmptyViewController.kt
@@ -21,18 +21,17 @@
import com.android.systemui.statusbar.phone.SystemUIDialogManager
/**
- * Class that coordinates non-HBM animations for non keyguard, enrollment or biometric prompt
- * states.
+ * Class that coordinates non-HBM animations for non keyguard, or biometric prompt states.
*
- * Currently only shows the fp drawable.
+ * Currently doesn't draw anything.
*/
-class UdfpsFpmOtherViewController(
- view: UdfpsFpmOtherView,
+class UdfpsFpmEmptyViewController(
+ view: UdfpsFpmEmptyView,
statusBarStateController: StatusBarStateController,
shadeExpansionStateManager: ShadeExpansionStateManager,
systemUIDialogManager: SystemUIDialogManager,
dumpManager: DumpManager
-) : UdfpsAnimationViewController<UdfpsFpmOtherView>(
+) : UdfpsAnimationViewController<UdfpsFpmEmptyView>(
view,
statusBarStateController,
shadeExpansionStateManager,
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt
index edd1c68..3d9eee4 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt
@@ -156,6 +156,8 @@
// Remove the task explicitly, since onRelease() callback will be executed after
// startActivity() below is called.
broadcastSender.closeSystemDialogs()
+ // not sent as interactive, lest the higher-importance activity launch
+ // be impacted
pendingIntent.send()
false
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index 2465286..e38c89e 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -31,6 +31,7 @@
import com.android.systemui.appops.dagger.AppOpsModule;
import com.android.systemui.assist.AssistModule;
import com.android.systemui.biometrics.AlternateUdfpsTouchProvider;
+import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider;
import com.android.systemui.biometrics.UdfpsDisplayModeProvider;
import com.android.systemui.biometrics.dagger.BiometricsModule;
import com.android.systemui.biometrics.dagger.UdfpsModule;
@@ -221,6 +222,9 @@
@BindsOptionalOf
abstract AlternateUdfpsTouchProvider optionalUdfpsTouchProvider();
+ @BindsOptionalOf
+ abstract FingerprintInteractiveToAuthProvider optionalFingerprintInteractiveToAuthProvider();
+
@SysUISingleton
@Binds
abstract SystemClock bindSystemClock(SystemClockImpl systemClock);
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
index 36807ff..e4e8d59 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
@@ -165,7 +165,7 @@
// TODO(b/255618149): Tracking Bug
@JvmField
val CUSTOMIZABLE_LOCK_SCREEN_QUICK_AFFORDANCES =
- unreleasedFlag(216, "customizable_lock_screen_quick_affordances", teamfood = false)
+ unreleasedFlag(216, "customizable_lock_screen_quick_affordances", teamfood = true)
/** Shows chipbar UI whenever the device is unlocked by ActiveUnlock (watch). */
// TODO(b/256513609): Tracking Bug
@@ -204,6 +204,11 @@
@JvmField
val UNOCCLUSION_TRANSITION = unreleasedFlag(223, "unocclusion_transition", teamfood = false)
+ // flag for controlling auto pin confirmation and material u shapes in bouncer
+ @JvmField
+ val AUTO_PIN_CONFIRMATION =
+ unreleasedFlag(224, "auto_pin_confirmation", "auto_pin_confirmation")
+
// 300 - power menu
// TODO(b/254512600): Tracking Bug
@JvmField val POWER_MENU_LITE = releasedFlag(300, "power_menu_lite")
@@ -215,6 +220,10 @@
releasedFlag(401, "smartspace_shared_element_transition_enabled")
val SMARTSPACE = resourceBooleanFlag(402, R.bool.flag_smartspace, "smartspace")
+ // TODO(b/258517050): Clean up after the feature is launched.
+ @JvmField
+ val SMARTSPACE_DATE_WEATHER_DECOUPLED = unreleasedFlag(403, "smartspace_date_weather_decoupled")
+
// 500 - quick settings
// TODO(b/254512321): Tracking Bug
@@ -427,9 +436,6 @@
unreleasedFlag(1206, "persist.wm.debug.predictive_back_bouncer_anim", teamfood = true)
// 1300 - screenshots
- // TODO(b/254512719): Tracking Bug
- @JvmField val SCREENSHOT_REQUEST_PROCESSOR = releasedFlag(1300, "screenshot_request_processor")
-
// TODO(b/254513155): Tracking Bug
@JvmField
val SCREENSHOT_WORK_PROFILE_POLICY =
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index d85ab8e..6b121b8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -34,6 +34,7 @@
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE;
import static com.android.systemui.DejankUtils.whitelistIpcs;
import static com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel.LOCKSCREEN_ANIMATION_DURATION_MS;
+import static com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel.DREAMING_ANIMATION_DURATION_MS;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@@ -122,6 +123,8 @@
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.dump.DumpManager;
+import com.android.systemui.flags.FeatureFlags;
+import com.android.systemui.flags.Flags;
import com.android.systemui.keyguard.dagger.KeyguardModule;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -507,6 +510,8 @@
private CentralSurfaces mCentralSurfaces;
+ private boolean mUnocclusionTransitionFlagEnabled = false;
+
private final DeviceConfig.OnPropertiesChangedListener mOnPropertiesChangedListener =
new DeviceConfig.OnPropertiesChangedListener() {
@Override
@@ -959,8 +964,9 @@
public void onAnimationStart(int transit, RemoteAnimationTarget[] apps,
RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
IRemoteAnimationFinishedCallback finishedCallback) throws RemoteException {
- setOccluded(true /* isOccluded */, true /* animate */);
-
+ if (!mUnocclusionTransitionFlagEnabled) {
+ setOccluded(true /* isOccluded */, true /* animate */);
+ }
if (apps == null || apps.length == 0 || apps[0] == null) {
if (DEBUG) {
Log.d(TAG, "No apps provided to the OccludeByDream runner; "
@@ -1002,9 +1008,20 @@
applier.scheduleApply(paramsBuilder.build());
});
mOccludeByDreamAnimator.addListener(new AnimatorListenerAdapter() {
+ private boolean mIsCancelled = false;
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ mIsCancelled = true;
+ }
+
@Override
public void onAnimationEnd(Animator animation) {
try {
+ if (!mIsCancelled && mUnocclusionTransitionFlagEnabled) {
+ // We're already on the main thread, don't queue this call
+ handleSetOccluded(true /* isOccluded */,
+ false /* animate */);
+ }
finishedCallback.onAnimationFinished();
mOccludeByDreamAnimator = null;
} catch (RemoteException e) {
@@ -1177,6 +1194,7 @@
ScreenOnCoordinator screenOnCoordinator,
InteractionJankMonitor interactionJankMonitor,
DreamOverlayStateController dreamOverlayStateController,
+ FeatureFlags featureFlags,
Lazy<ShadeController> shadeControllerLazy,
Lazy<NotificationShadeWindowController> notificationShadeWindowControllerLazy,
Lazy<ActivityLaunchAnimator> activityLaunchAnimator,
@@ -1231,9 +1249,9 @@
R.dimen.physical_power_button_center_screen_location_y);
mWindowCornerRadius = ScreenDecorationsUtils.getWindowCornerRadius(context);
- mDreamOpenAnimationDuration = context.getResources().getInteger(
- com.android.internal.R.integer.config_dreamOpenAnimationDuration);
+ mDreamOpenAnimationDuration = (int) DREAMING_ANIMATION_DURATION_MS;
mDreamCloseAnimationDuration = (int) LOCKSCREEN_ANIMATION_DURATION_MS;
+ mUnocclusionTransitionFlagEnabled = featureFlags.isEnabled(Flags.UNOCCLUSION_TRANSITION);
}
public void userActivity() {
@@ -1459,16 +1477,16 @@
public void maybeHandlePendingLock() {
if (mPendingLock) {
- // The screen off animation is playing, so if we lock now, the foreground app will
- // vanish and the keyguard will jump-cut in. Delay it, until either:
+ // The screen off animation is playing or is about to be, so if we lock now, the
+ // foreground app will vanish and the keyguard will jump-cut in. Delay it, until either:
// - The screen off animation ends. We will call maybeHandlePendingLock from
// the end action in UnlockedScreenOffAnimationController#animateInKeyguard.
// - The screen off animation is cancelled by the device waking back up. We will call
// maybeHandlePendingLock from KeyguardViewMediator#onStartedWakingUp.
- if (mScreenOffAnimationController.isKeyguardShowDelayed()) {
+ if (mScreenOffAnimationController.shouldDelayKeyguardShow()) {
if (DEBUG) {
Log.d(TAG, "#maybeHandlePendingLock: not handling because the screen off "
- + "animation's isKeyguardShowDelayed() returned true. This should be "
+ + "animation's shouldDelayKeyguardShow() returned true. This should be "
+ "handled soon by #onStartedWakingUp, or by the end actions of the "
+ "screen off animation.");
}
@@ -1793,7 +1811,6 @@
Trace.beginSection("KeyguardViewMediator#setOccluded");
if (DEBUG) Log.d(TAG, "setOccluded " + isOccluded);
- mInteractionJankMonitor.cancel(CUJ_LOCKSCREEN_TRANSITION_FROM_AOD);
mHandler.removeMessages(SET_OCCLUDED);
Message msg = mHandler.obtainMessage(SET_OCCLUDED, isOccluded ? 1 : 0, animate ? 1 : 0);
mHandler.sendMessage(msg);
@@ -1826,6 +1843,8 @@
private void handleSetOccluded(boolean isOccluded, boolean animate) {
Trace.beginSection("KeyguardViewMediator#handleSetOccluded");
Log.d(TAG, "handleSetOccluded(" + isOccluded + ")");
+ mInteractionJankMonitor.cancel(CUJ_LOCKSCREEN_TRANSITION_FROM_AOD);
+
synchronized (KeyguardViewMediator.this) {
if (mHiding && isOccluded) {
// We're in the process of going away but WindowManager wants to show a
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
index 47ef0fa..98d3570 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
@@ -39,6 +39,7 @@
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.dump.DumpManager;
+import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.keyguard.KeyguardViewMediator;
@@ -112,6 +113,7 @@
ScreenOnCoordinator screenOnCoordinator,
InteractionJankMonitor interactionJankMonitor,
DreamOverlayStateController dreamOverlayStateController,
+ FeatureFlags featureFlags,
Lazy<ShadeController> shadeController,
Lazy<NotificationShadeWindowController> notificationShadeWindowController,
Lazy<ActivityLaunchAnimator> activityLaunchAnimator,
@@ -142,6 +144,7 @@
screenOnCoordinator,
interactionJankMonitor,
dreamOverlayStateController,
+ featureFlags,
shadeController,
notificationShadeWindowController,
activityLaunchAnimator,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
index 343c2dc..d14b66a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepository.kt
@@ -135,11 +135,14 @@
Log.i(TAG, "Duplicate call to start the transition, rejecting: $info")
return null
}
- if (lastStep.transitionState != TransitionState.FINISHED) {
- Log.i(TAG, "Transition still active: $lastStep, canceling")
- }
+ val startingValue =
+ if (lastStep.transitionState != TransitionState.FINISHED) {
+ Log.i(TAG, "Transition still active: $lastStep, canceling")
+ lastStep.value
+ } else {
+ 0f
+ }
- val startingValue = 1f - lastStep.value
lastAnimator?.cancel()
lastAnimator = info.animator
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
index 326acc9..20c6531 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
@@ -30,6 +30,8 @@
import com.android.systemui.util.kotlin.sample
import java.util.UUID
import javax.inject.Inject
+import kotlin.time.Duration
+import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.combine
@@ -51,6 +53,7 @@
override fun start() {
listenForLockscreenToGone()
listenForLockscreenToOccluded()
+ listenForLockscreenToCamera()
listenForLockscreenToAod()
listenForLockscreenToBouncer()
listenForLockscreenToDreaming()
@@ -69,7 +72,7 @@
name,
KeyguardState.LOCKSCREEN,
KeyguardState.DREAMING,
- getAnimator(),
+ getAnimator(TO_DREAMING_DURATION),
)
)
}
@@ -184,17 +187,42 @@
),
::toTriple
)
- .collect { triple ->
- val (isOccluded, keyguardState, isDreaming) = triple
- // Occlusion signals come from the framework, and should interrupt any
- // existing transition
- if (isOccluded && !isDreaming) {
+ .collect { (isOccluded, keyguardState, isDreaming) ->
+ if (isOccluded && !isDreaming && keyguardState == KeyguardState.LOCKSCREEN) {
keyguardTransitionRepository.startTransition(
TransitionInfo(
name,
keyguardState,
KeyguardState.OCCLUDED,
- getAnimator(),
+ getAnimator(TO_OCCLUDED_DURATION),
+ )
+ )
+ }
+ }
+ }
+ }
+
+ /** This signal may come in before the occlusion signal, and can provide a custom transition */
+ private fun listenForLockscreenToCamera() {
+ scope.launch {
+ keyguardInteractor.onCameraLaunchDetected
+ .sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
+ .collect { (_, lastStartedStep) ->
+ // DREAMING/AOD/OFF may trigger on the first power button push, so include this
+ // state in order to cancel and correct the transition
+ if (
+ lastStartedStep.to == KeyguardState.LOCKSCREEN ||
+ lastStartedStep.to == KeyguardState.DREAMING ||
+ lastStartedStep.to == KeyguardState.DOZING ||
+ lastStartedStep.to == KeyguardState.AOD ||
+ lastStartedStep.to == KeyguardState.OFF
+ ) {
+ keyguardTransitionRepository.startTransition(
+ TransitionInfo(
+ name,
+ KeyguardState.LOCKSCREEN,
+ KeyguardState.OCCLUDED,
+ getAnimator(TO_OCCLUDED_DURATION),
)
)
}
@@ -223,14 +251,16 @@
}
}
- private fun getAnimator(): ValueAnimator {
+ private fun getAnimator(duration: Duration = DEFAULT_DURATION): ValueAnimator {
return ValueAnimator().apply {
setInterpolator(Interpolators.LINEAR)
- setDuration(TRANSITION_DURATION_MS)
+ setDuration(duration.inWholeMilliseconds)
}
}
companion object {
- private const val TRANSITION_DURATION_MS = 500L
+ private val DEFAULT_DURATION = 500.milliseconds
+ val TO_DREAMING_DURATION = 933.milliseconds
+ val TO_OCCLUDED_DURATION = 450.milliseconds
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
index 402c179..ac2d230 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
@@ -17,17 +17,24 @@
package com.android.systemui.keyguard.domain.interactor
+import android.app.StatusBarManager
import android.graphics.Point
+import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging
+import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.data.repository.KeyguardRepository
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
+import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel
import com.android.systemui.keyguard.shared.model.DozeStateModel
import com.android.systemui.keyguard.shared.model.DozeStateModel.Companion.isDozeOff
import com.android.systemui.keyguard.shared.model.DozeTransitionModel
import com.android.systemui.keyguard.shared.model.StatusBarState
import com.android.systemui.keyguard.shared.model.WakefulnessModel
+import com.android.systemui.statusbar.CommandQueue
+import com.android.systemui.statusbar.CommandQueue.Callbacks
import com.android.systemui.util.kotlin.sample
import javax.inject.Inject
+import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
@@ -41,6 +48,7 @@
@Inject
constructor(
private val repository: KeyguardRepository,
+ private val commandQueue: CommandQueue,
) {
/**
* The amount of doze the system is in, where `1.0` is fully dozing and `0.0` is not dozing at
@@ -58,6 +66,23 @@
val isDreaming: Flow<Boolean> = repository.isDreaming
/** Whether the system is dreaming with an overlay active */
val isDreamingWithOverlay: Flow<Boolean> = repository.isDreamingWithOverlay
+ /** Event for when the camera gesture is detected */
+ val onCameraLaunchDetected: Flow<CameraLaunchSourceModel> = conflatedCallbackFlow {
+ val callback =
+ object : CommandQueue.Callbacks {
+ override fun onCameraLaunchGestureDetected(source: Int) {
+ trySendWithFailureLogging(
+ cameraLaunchSourceIntToModel(source),
+ TAG,
+ "updated onCameraLaunchGestureDetected"
+ )
+ }
+ }
+
+ commandQueue.addCallback(callback)
+
+ awaitClose { commandQueue.removeCallback(callback) }
+ }
/**
* Dozing and dreaming have overlapping events. If the doze state remains in FINISH, it means
@@ -103,4 +128,21 @@
fun isKeyguardShowing(): Boolean {
return repository.isKeyguardShowing()
}
+
+ private fun cameraLaunchSourceIntToModel(value: Int): CameraLaunchSourceModel {
+ return when (value) {
+ StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE -> CameraLaunchSourceModel.WIGGLE
+ StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ->
+ CameraLaunchSourceModel.POWER_DOUBLE_TAP
+ StatusBarManager.CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER ->
+ CameraLaunchSourceModel.LIFT_TRIGGER
+ StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE ->
+ CameraLaunchSourceModel.QUICK_AFFORDANCE
+ else -> throw IllegalArgumentException("Invalid CameraLaunchSourceModel value: $value")
+ }
+ }
+
+ companion object {
+ private const val TAG = "KeyguardInteractor"
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
index 04024be..9cdbcda 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
@@ -42,24 +42,32 @@
constructor(
repository: KeyguardTransitionRepository,
) {
+ /** (any)->AOD transition information */
+ val anyStateToAodTransition: Flow<TransitionStep> =
+ repository.transitions.filter { step -> step.to == KeyguardState.AOD }
+
/** AOD->LOCKSCREEN transition information. */
val aodToLockscreenTransition: Flow<TransitionStep> = repository.transition(AOD, LOCKSCREEN)
- /** LOCKSCREEN->AOD transition information. */
- val lockscreenToAodTransition: Flow<TransitionStep> = repository.transition(LOCKSCREEN, AOD)
-
/** DREAMING->LOCKSCREEN transition information. */
val dreamingToLockscreenTransition: Flow<TransitionStep> =
repository.transition(DREAMING, LOCKSCREEN)
+ /** LOCKSCREEN->AOD transition information. */
+ val lockscreenToAodTransition: Flow<TransitionStep> = repository.transition(LOCKSCREEN, AOD)
+
+ /** LOCKSCREEN->DREAMING transition information. */
+ val lockscreenToDreamingTransition: Flow<TransitionStep> =
+ repository.transition(LOCKSCREEN, DREAMING)
+
+ /** LOCKSCREEN->OCCLUDED transition information. */
+ val lockscreenToOccludedTransition: Flow<TransitionStep> =
+ repository.transition(LOCKSCREEN, OCCLUDED)
+
/** OCCLUDED->LOCKSCREEN transition information. */
val occludedToLockscreenTransition: Flow<TransitionStep> =
repository.transition(OCCLUDED, LOCKSCREEN)
- /** (any)->AOD transition information */
- val anyStateToAodTransition: Flow<TransitionStep> =
- repository.transitions.filter { step -> step.to == KeyguardState.AOD }
-
/**
* AOD<->LOCKSCREEN transition information, mapped to dozeAmount range of AOD (1f) <->
* Lockscreen (0f).
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/CameraLaunchSourceModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/CameraLaunchSourceModel.kt
new file mode 100644
index 0000000..19baf77
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/CameraLaunchSourceModel.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.systemui.keyguard.shared.model
+
+/** Camera launch sources */
+enum class CameraLaunchSourceModel {
+ /** Device is wiggled */
+ WIGGLE,
+ /** Power button has been double tapped */
+ POWER_DOUBLE_TAP,
+ /** Device has been lifted */
+ LIFT_TRIGGER,
+ /** Quick affordance button has been pressed */
+ QUICK_AFFORDANCE,
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModel.kt
new file mode 100644
index 0000000..d48f87d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModel.kt
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.animation.Interpolators.EMPHASIZED_ACCELERATE
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor.Companion.TO_DREAMING_DURATION
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.AnimationParams
+import com.android.systemui.keyguard.shared.model.TransitionState
+import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.merge
+
+/**
+ * Breaks down LOCKSCREEN->DREAMING transition into discrete steps for corresponding views to
+ * consume.
+ */
+@SysUISingleton
+class LockscreenToDreamingTransitionViewModel
+@Inject
+constructor(
+ private val interactor: KeyguardTransitionInteractor,
+) {
+
+ /** Lockscreen views y-translation */
+ fun lockscreenTranslationY(translatePx: Int): Flow<Float> {
+ return merge(
+ flowForAnimation(LOCKSCREEN_TRANSLATION_Y).map { value ->
+ (EMPHASIZED_ACCELERATE.getInterpolation(value) * translatePx)
+ },
+ // On end, reset the translation to 0
+ interactor.lockscreenToDreamingTransition
+ .filter { step -> step.transitionState == TransitionState.FINISHED }
+ .map { 0f }
+ )
+ }
+
+ /** Lockscreen views alpha */
+ val lockscreenAlpha: Flow<Float> = flowForAnimation(LOCKSCREEN_ALPHA).map { 1f - it }
+
+ private fun flowForAnimation(params: AnimationParams): Flow<Float> {
+ return interactor.transitionStepAnimation(
+ interactor.lockscreenToDreamingTransition,
+ params,
+ totalDuration = TO_DREAMING_DURATION
+ )
+ }
+
+ companion object {
+ @JvmField val DREAMING_ANIMATION_DURATION_MS = TO_DREAMING_DURATION.inWholeMilliseconds
+
+ val LOCKSCREEN_TRANSLATION_Y = AnimationParams(duration = 500.milliseconds)
+ val LOCKSCREEN_ALPHA = AnimationParams(duration = 250.milliseconds)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModel.kt
new file mode 100644
index 0000000..22d292e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModel.kt
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.animation.Interpolators.EMPHASIZED_ACCELERATE
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor.Companion.TO_OCCLUDED_DURATION
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.AnimationParams
+import com.android.systemui.keyguard.shared.model.TransitionState
+import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.merge
+
+/**
+ * Breaks down LOCKSCREEN->OCCLUDED transition into discrete steps for corresponding views to
+ * consume.
+ */
+@SysUISingleton
+class LockscreenToOccludedTransitionViewModel
+@Inject
+constructor(
+ private val interactor: KeyguardTransitionInteractor,
+) {
+
+ /** Lockscreen views y-translation */
+ fun lockscreenTranslationY(translatePx: Int): Flow<Float> {
+ return merge(
+ flowForAnimation(LOCKSCREEN_TRANSLATION_Y).map { value ->
+ (EMPHASIZED_ACCELERATE.getInterpolation(value) * translatePx)
+ },
+ // On end, reset the translation to 0
+ interactor.lockscreenToOccludedTransition
+ .filter { step -> step.transitionState == TransitionState.FINISHED }
+ .map { 0f }
+ )
+ }
+
+ /** Lockscreen views alpha */
+ val lockscreenAlpha: Flow<Float> = flowForAnimation(LOCKSCREEN_ALPHA).map { 1f - it }
+
+ private fun flowForAnimation(params: AnimationParams): Flow<Float> {
+ return interactor.transitionStepAnimation(
+ interactor.lockscreenToOccludedTransition,
+ params,
+ totalDuration = TO_OCCLUDED_DURATION
+ )
+ }
+
+ companion object {
+ val LOCKSCREEN_TRANSLATION_Y = AnimationParams(duration = TO_OCCLUDED_DURATION)
+ val LOCKSCREEN_ALPHA = AnimationParams(duration = 250.milliseconds)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/pipeline/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/pipeline/MediaDataManager.kt
index 2dd339d..1cc8a13 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/pipeline/MediaDataManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/pipeline/MediaDataManager.kt
@@ -16,6 +16,7 @@
package com.android.systemui.media.controls.pipeline
+import android.app.BroadcastOptions
import android.app.Notification
import android.app.Notification.EXTRA_SUBSTITUTE_APP_NAME
import android.app.PendingIntent
@@ -1165,7 +1166,9 @@
private fun sendPendingIntent(intent: PendingIntent): Boolean {
return try {
- intent.send()
+ val options = BroadcastOptions.makeBasic()
+ options.setInteractive(true)
+ intent.send(options.toBundle())
true
} catch (e: PendingIntent.CanceledException) {
Log.d(TAG, "Intent canceled", e)
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt
index 1fdbc99..d5558b2 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt
@@ -184,6 +184,7 @@
private val configListener =
object : ConfigurationController.ConfigurationListener {
+ var lastOrientation = -1
override fun onDensityOrFontScaleChanged() {
// System font changes should only happen when UMO is offscreen or a flicker may
@@ -200,7 +201,13 @@
override fun onConfigChanged(newConfig: Configuration?) {
if (newConfig == null) return
isRtl = newConfig.layoutDirection == View.LAYOUT_DIRECTION_RTL
- updatePlayers(recreateMedia = true)
+ val newOrientation = newConfig.orientation
+ if (lastOrientation != newOrientation) {
+ // The players actually depend on the orientation possibly, so we have to
+ // recreate them (at least on large screen devices)
+ lastOrientation = newOrientation
+ updatePlayers(recreateMedia = true)
+ }
}
override fun onUiModeChanged() {
@@ -717,6 +724,9 @@
private fun updatePlayers(recreateMedia: Boolean) {
pageIndicator.tintList =
ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator))
+ val previousVisibleKey =
+ MediaPlayerData.visiblePlayerKeys()
+ .elementAtOrNull(mediaCarouselScrollHandler.visibleMediaIndex)
MediaPlayerData.mediaData().forEach { (key, data, isSsMediaRec) ->
if (isSsMediaRec) {
@@ -741,6 +751,9 @@
isSsReactivated = isSsReactivated
)
}
+ if (recreateMedia) {
+ reorderAllPlayers(previousVisibleKey)
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
index 15c3443..ee0147f 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
@@ -23,6 +23,7 @@
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
+import android.app.BroadcastOptions;
import android.app.PendingIntent;
import android.app.WallpaperColors;
import android.app.smartspace.SmartspaceAction;
@@ -113,6 +114,8 @@
import com.android.systemui.util.animation.TransitionLayout;
import com.android.systemui.util.time.SystemClock;
+import dagger.Lazy;
+
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
@@ -120,7 +123,6 @@
import javax.inject.Inject;
-import dagger.Lazy;
import kotlin.Unit;
/**
@@ -625,7 +627,9 @@
device.getIntent().getIntent(), true);
} else {
try {
- device.getIntent().send();
+ BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractive(true);
+ device.getIntent().send(options.toBundle());
} catch (PendingIntent.CanceledException e) {
Log.e(TAG, "Device pending intent was canceled");
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
index d393680..385e720 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
@@ -15,6 +15,9 @@
*/
package com.android.systemui.qs.external;
+import static android.service.quicksettings.TileService.START_ACTIVITY_NEEDS_PENDING_INTENT;
+
+import android.app.compat.CompatChanges;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -41,15 +44,15 @@
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.Main;
+import dagger.assisted.Assisted;
+import dagger.assisted.AssistedFactory;
+import dagger.assisted.AssistedInject;
+
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
-import dagger.assisted.Assisted;
-import dagger.assisted.AssistedFactory;
-import dagger.assisted.AssistedInject;
-
/**
* Manages the lifecycle of a TileService.
* <p>
@@ -124,7 +127,9 @@
/** Injectable factory for TileLifecycleManager. */
@AssistedFactory
public interface Factory {
- /** */
+ /**
+ *
+ */
TileLifecycleManager create(Intent intent, UserHandle userHandle);
}
@@ -161,7 +166,7 @@
* Determines whether the associated TileService is a Boolean Tile.
*
* @return true if {@link TileService#META_DATA_TOGGLEABLE_TILE} is set to {@code true} for this
- * tile
+ * tile
* @see TileService#META_DATA_TOGGLEABLE_TILE
*/
public boolean isToggleableTile() {
@@ -207,12 +212,7 @@
if (DEBUG) Log.d(TAG, "Binding service " + mIntent + " " + mUser);
mBindTryCount++;
try {
- mIsBound = mContext.bindServiceAsUser(mIntent, this,
- Context.BIND_AUTO_CREATE
- | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE
- | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS
- | Context.BIND_WAIVE_PRIORITY,
- mUser);
+ mIsBound = bindServices();
if (!mIsBound) {
mContext.unbindService(this);
}
@@ -237,6 +237,24 @@
}
}
+ private boolean bindServices() {
+ String packageName = mIntent.getComponent().getPackageName();
+ if (CompatChanges.isChangeEnabled(START_ACTIVITY_NEEDS_PENDING_INTENT, packageName,
+ mUser)) {
+ return mContext.bindServiceAsUser(mIntent, this,
+ Context.BIND_AUTO_CREATE
+ | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE
+ | Context.BIND_WAIVE_PRIORITY,
+ mUser);
+ }
+ return mContext.bindServiceAsUser(mIntent, this,
+ Context.BIND_AUTO_CREATE
+ | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS
+ | Context.BIND_WAIVE_PRIORITY,
+ mUser);
+ }
+
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
if (DEBUG) Log.d(TAG, "onServiceConnected " + name);
@@ -418,8 +436,11 @@
mPackageManagerAdapter.getPackageInfoAsUser(packageName, 0, mUser.getIdentifier());
return true;
} catch (PackageManager.NameNotFoundException e) {
- if (DEBUG) Log.d(TAG, "Package not available: " + packageName, e);
- else Log.d(TAG, "Package not available: " + packageName);
+ if (DEBUG) {
+ Log.d(TAG, "Package not available: " + packageName, e);
+ } else {
+ Log.d(TAG, "Package not available: " + packageName);
+ }
}
return false;
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java
index b8684ee..431b28f 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java
@@ -16,12 +16,14 @@
package com.android.systemui.screenrecord;
+import android.app.BroadcastOptions;
import android.app.Dialog;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.UserHandle;
import android.util.Log;
@@ -57,6 +59,7 @@
private boolean mIsStarting;
private boolean mIsRecording;
private PendingIntent mStopIntent;
+ private final Bundle mInteractiveBroadcastOption;
private CountDownTimer mCountDownTimer = null;
private final Executor mMainExecutor;
private final BroadcastDispatcher mBroadcastDispatcher;
@@ -106,6 +109,10 @@
mBroadcastDispatcher = broadcastDispatcher;
mUserContextProvider = userContextProvider;
mUserTracker = userTracker;
+
+ BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractive(true);
+ mInteractiveBroadcastOption = options.toBundle();
}
/** Create a dialog to show screen recording options to the user. */
@@ -148,7 +155,7 @@
cb.onCountdownEnd();
}
try {
- startIntent.send();
+ startIntent.send(mInteractiveBroadcastOption);
mUserTracker.addCallback(mUserChangedCallback, mMainExecutor);
IntentFilter stateFilter = new IntentFilter(INTENT_UPDATE_STATE);
@@ -202,7 +209,7 @@
public void stopRecording() {
try {
if (mStopIntent != null) {
- mStopIntent.send();
+ mStopIntent.send(mInteractiveBroadcastOption);
} else {
Log.e(TAG, "Stop intent was null");
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java b/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java
index c4ea67e..860bfe37 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java
@@ -18,6 +18,7 @@
import static java.util.Objects.requireNonNull;
+import android.app.BroadcastOptions;
import android.app.PendingIntent;
import android.content.Context;
import android.graphics.drawable.Icon;
@@ -96,7 +97,9 @@
public void setPendingIntent(PendingIntent intent, Runnable finisher) {
setOnClickListener(v -> {
try {
- intent.send();
+ BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractive(true);
+ intent.send(options.toBundle());
finisher.run();
} catch (PendingIntent.CanceledException e) {
Log.e(TAG, "Intent cancelled", e);
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
index b4934cf..bf5fbd2 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
@@ -20,8 +20,7 @@
import static com.android.systemui.screenshot.LogConfig.DEBUG_CALLBACK;
import static com.android.systemui.screenshot.LogConfig.DEBUG_STORAGE;
import static com.android.systemui.screenshot.LogConfig.logTag;
-import static com.android.systemui.screenshot.ScreenshotNotificationSmartActionsProvider.ScreenshotSmartActionType.QUICK_SHARE_ACTION;
-import static com.android.systemui.screenshot.ScreenshotNotificationSmartActionsProvider.ScreenshotSmartActionType.REGULAR_SMART_ACTIONS;
+import static com.android.systemui.screenshot.ScreenshotNotificationSmartActionsProvider.ScreenshotSmartActionType;
import android.app.ActivityTaskManager;
import android.app.Notification;
@@ -155,7 +154,8 @@
CompletableFuture<List<Notification.Action>> smartActionsFuture =
mScreenshotSmartActions.getSmartActionsFuture(
- mScreenshotId, uri, image, mSmartActionsProvider, REGULAR_SMART_ACTIONS,
+ mScreenshotId, uri, image, mSmartActionsProvider,
+ ScreenshotSmartActionType.REGULAR_SMART_ACTIONS,
smartActionsEnabled, user);
List<Notification.Action> smartActions = new ArrayList<>();
if (smartActionsEnabled) {
@@ -166,7 +166,8 @@
smartActions.addAll(buildSmartActions(
mScreenshotSmartActions.getSmartActions(
mScreenshotId, smartActionsFuture, timeoutMs,
- mSmartActionsProvider, REGULAR_SMART_ACTIONS),
+ mSmartActionsProvider,
+ ScreenshotSmartActionType.REGULAR_SMART_ACTIONS),
mContext));
}
@@ -476,7 +477,7 @@
CompletableFuture<List<Notification.Action>> quickShareActionsFuture =
mScreenshotSmartActions.getSmartActionsFuture(
mScreenshotId, null, image, mSmartActionsProvider,
- QUICK_SHARE_ACTION,
+ ScreenshotSmartActionType.QUICK_SHARE_ACTION,
true /* smartActionsEnabled */, user);
int timeoutMs = DeviceConfig.getInt(
DeviceConfig.NAMESPACE_SYSTEMUI,
@@ -485,7 +486,8 @@
List<Notification.Action> quickShareActions =
mScreenshotSmartActions.getSmartActions(
mScreenshotId, quickShareActionsFuture, timeoutMs,
- mSmartActionsProvider, QUICK_SHARE_ACTION);
+ mSmartActionsProvider,
+ ScreenshotSmartActionType.QUICK_SHARE_ACTION);
if (!quickShareActions.isEmpty()) {
mQuickShareData.quickShareAction = quickShareActions.get(0);
mParams.mQuickShareActionsReadyListener.onActionsReady(mQuickShareData);
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
index 5716a1d72..91ebf79 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
@@ -280,6 +280,7 @@
private final TimeoutHandler mScreenshotHandler;
private final ActionIntentExecutor mActionExecutor;
private final UserManager mUserManager;
+ private final WorkProfileMessageController mWorkProfileMessageController;
private final OnBackInvokedCallback mOnBackInvokedCallback = () -> {
if (DEBUG_INPUT) {
@@ -326,7 +327,8 @@
BroadcastSender broadcastSender,
ScreenshotNotificationSmartActionsProvider screenshotNotificationSmartActionsProvider,
ActionIntentExecutor actionExecutor,
- UserManager userManager
+ UserManager userManager,
+ WorkProfileMessageController workProfileMessageController
) {
mScreenshotSmartActions = screenshotSmartActions;
mNotificationsController = screenshotNotificationsController;
@@ -358,6 +360,7 @@
mFlags = flags;
mActionExecutor = actionExecutor;
mUserManager = userManager;
+ mWorkProfileMessageController = workProfileMessageController;
mAccessibilityManager = AccessibilityManager.getInstance(mContext);
@@ -683,7 +686,6 @@
return true;
}
});
-
if (mFlags.isEnabled(SCREENSHOT_WORK_PROFILE_POLICY)) {
mScreenshotView.badgeScreenshot(
mContext.getPackageManager().getUserBadgeForDensity(owner, 0));
@@ -784,9 +786,9 @@
mLongScreenshotHolder.setLongScreenshot(longScreenshot);
mLongScreenshotHolder.setTransitionDestinationCallback(
(transitionDestination, onTransitionEnd) -> {
- mScreenshotView.startLongScreenshotTransition(
- transitionDestination, onTransitionEnd,
- longScreenshot);
+ mScreenshotView.startLongScreenshotTransition(
+ transitionDestination, onTransitionEnd,
+ longScreenshot);
// TODO: Do this via ActionIntentExecutor instead.
mContext.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}
@@ -1037,10 +1039,8 @@
private void doPostAnimation(ScreenshotController.SavedImageData imageData) {
mScreenshotView.setChipIntents(imageData);
- if (mFlags.isEnabled(SCREENSHOT_WORK_PROFILE_POLICY)
- && mUserManager.isManagedProfile(imageData.owner.getIdentifier())) {
- // TODO: Read app from configuration
- mScreenshotView.showWorkProfileMessage("Files");
+ if (mFlags.isEnabled(SCREENSHOT_WORK_PROFILE_POLICY)) {
+ mWorkProfileMessageController.onScreenshotTaken(imageData.owner, mScreenshotView);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java
index e8ceb52..be40813 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java
@@ -33,7 +33,9 @@
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
+import android.annotation.Nullable;
import android.app.ActivityManager;
+import android.app.BroadcastOptions;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
@@ -53,6 +55,7 @@
import android.graphics.drawable.Icon;
import android.graphics.drawable.InsetDrawable;
import android.graphics.drawable.LayerDrawable;
+import android.os.Bundle;
import android.os.Looper;
import android.os.RemoteException;
import android.util.AttributeSet;
@@ -100,7 +103,8 @@
* Handles the visual elements and animations for the screenshot flow.
*/
public class ScreenshotView extends FrameLayout implements
- ViewTreeObserver.OnComputeInternalInsetsListener {
+ ViewTreeObserver.OnComputeInternalInsetsListener,
+ WorkProfileMessageController.WorkProfileMessageDisplay {
interface ScreenshotViewCallback {
void onUserInteraction();
@@ -169,6 +173,7 @@
private long mDefaultTimeoutOfTimeoutHandler;
private ActionIntentExecutor mActionExecutor;
private FeatureFlags mFlags;
+ private final Bundle mInteractiveBroadcastOption;
private enum PendingInteraction {
PREVIEW,
@@ -195,6 +200,10 @@
mResources = mContext.getResources();
mInteractionJankMonitor = getInteractionJankMonitorInstance();
+ BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractive(true);
+ mInteractiveBroadcastOption = options.toBundle();
+
mFixedSize = mResources.getDimensionPixelSize(R.dimen.overlay_x_scale);
// standard material ease
@@ -351,13 +360,23 @@
* been taken and which app can be used to view it.
*
* @param appName The name of the app to use to view screenshots
+ * @param appIcon Optional icon for the relevant files app
+ * @param onDismiss Runnable to be run when the user dismisses this message
*/
- void showWorkProfileMessage(String appName) {
+ @Override
+ public void showWorkProfileMessage(CharSequence appName, @Nullable Drawable appIcon,
+ Runnable onDismiss) {
+ if (appIcon != null) {
+ // Replace the default icon if one is provided.
+ ImageView imageView = mMessageContainer.findViewById(R.id.screenshot_message_icon);
+ imageView.setImageDrawable(appIcon);
+ }
mMessageContent.setText(
mContext.getString(R.string.screenshot_work_profile_notification, appName));
mMessageContainer.setVisibility(VISIBLE);
mMessageContainer.findViewById(R.id.message_dismiss_button).setOnClickListener((v) -> {
mMessageContainer.setVisibility(View.GONE);
+ onDismiss.run();
});
}
@@ -1105,7 +1124,7 @@
private void startSharedTransition(ActionTransition transition) {
try {
mPendingSharedTransition = true;
- transition.action.actionIntent.send();
+ transition.action.actionIntent.send(mInteractiveBroadcastOption);
// fade out non-preview UI
createScreenshotFadeDismissAnimation().start();
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
index 2176825..35e9f3e 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
@@ -21,7 +21,6 @@
import static com.android.internal.util.ScreenshotHelper.SCREENSHOT_MSG_PROCESS_COMPLETE;
import static com.android.internal.util.ScreenshotHelper.SCREENSHOT_MSG_URI;
-import static com.android.systemui.flags.Flags.SCREENSHOT_REQUEST_PROCESSOR;
import static com.android.systemui.flags.Flags.SCREENSHOT_WORK_PROFILE_POLICY;
import static com.android.systemui.screenshot.LogConfig.DEBUG_CALLBACK;
import static com.android.systemui.screenshot.LogConfig.DEBUG_DISMISS;
@@ -122,7 +121,6 @@
mContext = context;
mBgExecutor = bgExecutor;
mFeatureFlags = featureFlags;
- mFeatureFlags.addListener(SCREENSHOT_REQUEST_PROCESSOR, FlagEvent::requestNoRestart);
mFeatureFlags.addListener(SCREENSHOT_WORK_PROFILE_POLICY, FlagEvent::requestNoRestart);
mProcessor = processor;
}
@@ -224,14 +222,8 @@
return;
}
- if (mFeatureFlags.isEnabled(SCREENSHOT_REQUEST_PROCESSOR)) {
- Log.d(TAG, "handleMessage: Using request processor");
- mProcessor.processAsync(request,
- (r) -> dispatchToController(r, onSaved, callback));
- return;
- }
-
- dispatchToController(request, onSaved, callback);
+ mProcessor.processAsync(request,
+ (r) -> dispatchToController(r, onSaved, callback));
}
private void dispatchToController(ScreenshotHelper.ScreenshotRequest request,
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/WorkProfileMessageController.kt b/packages/SystemUI/src/com/android/systemui/screenshot/WorkProfileMessageController.kt
new file mode 100644
index 0000000..5d7e56f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/WorkProfileMessageController.kt
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.screenshot
+
+import android.content.ComponentName
+import android.content.Context
+import android.content.pm.PackageManager
+import android.graphics.drawable.Drawable
+import android.os.UserHandle
+import android.os.UserManager
+import android.util.Log
+import com.android.systemui.R
+import javax.inject.Inject
+
+/**
+ * Handles all the non-UI portions of the work profile first run:
+ * - Track whether the user has already dismissed it.
+ * - Load the proper icon and app name.
+ */
+class WorkProfileMessageController
+@Inject
+constructor(
+ private val context: Context,
+ private val userManager: UserManager,
+ private val packageManager: PackageManager,
+) {
+
+ /**
+ * Determine if a message should be shown to the user, send message details to messageDisplay if
+ * appropriate.
+ */
+ fun onScreenshotTaken(userHandle: UserHandle, messageDisplay: WorkProfileMessageDisplay) {
+ if (userManager.isManagedProfile(userHandle.identifier) && !messageAlreadyDismissed()) {
+ var badgedIcon: Drawable? = null
+ var label: CharSequence? = null
+ val fileManager = fileManagerComponentName()
+ try {
+ val info =
+ packageManager.getActivityInfo(
+ fileManager,
+ PackageManager.ComponentInfoFlags.of(0)
+ )
+ val icon = packageManager.getActivityIcon(fileManager)
+ badgedIcon = packageManager.getUserBadgedIcon(icon, userHandle)
+ label = info.loadLabel(packageManager)
+ } catch (e: PackageManager.NameNotFoundException) {
+ Log.w(TAG, "Component $fileManager not found")
+ }
+
+ // If label wasn't loaded, use a default
+ val badgedLabel =
+ packageManager.getUserBadgedLabel(label ?: defaultFileAppName(), userHandle)
+
+ messageDisplay.showWorkProfileMessage(badgedLabel, badgedIcon) { onMessageDismissed() }
+ }
+ }
+
+ private fun messageAlreadyDismissed(): Boolean {
+ return sharedPreference().getBoolean(PREFERENCE_KEY, false)
+ }
+
+ private fun onMessageDismissed() {
+ val editor = sharedPreference().edit()
+ editor.putBoolean(PREFERENCE_KEY, true)
+ editor.apply()
+ }
+
+ private fun sharedPreference() =
+ context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE)
+
+ private fun fileManagerComponentName() =
+ ComponentName.unflattenFromString(
+ context.getString(R.string.config_sceenshotWorkProfileFilesApp)
+ )
+
+ private fun defaultFileAppName() = context.getString(R.string.screenshot_default_files_app_name)
+
+ /** UI that can show work profile messages (ScreenshotView in practice) */
+ interface WorkProfileMessageDisplay {
+ /**
+ * Show the given message and icon, calling onDismiss if the user explicitly dismisses the
+ * message.
+ */
+ fun showWorkProfileMessage(text: CharSequence, icon: Drawable?, onDismiss: Runnable)
+ }
+
+ companion object {
+ const val TAG = "WorkProfileMessageCtrl"
+ const val SHARED_PREFERENCES_NAME = "com.android.systemui.screenshot"
+ const val PREFERENCE_KEY = "work_profile_first_run"
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index d711d15..b48fd98 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -145,6 +145,8 @@
import com.android.systemui.keyguard.shared.model.TransitionStep;
import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel;
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBottomAreaViewModel;
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel;
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToOccludedTransitionViewModel;
import com.android.systemui.keyguard.ui.viewmodel.OccludedToLockscreenTransitionViewModel;
import com.android.systemui.media.controls.pipeline.MediaDataManager;
import com.android.systemui.media.controls.ui.KeyguardMediaController;
@@ -689,12 +691,16 @@
private boolean mExpandLatencyTracking;
private DreamingToLockscreenTransitionViewModel mDreamingToLockscreenTransitionViewModel;
private OccludedToLockscreenTransitionViewModel mOccludedToLockscreenTransitionViewModel;
+ private LockscreenToDreamingTransitionViewModel mLockscreenToDreamingTransitionViewModel;
+ private LockscreenToOccludedTransitionViewModel mLockscreenToOccludedTransitionViewModel;
private KeyguardTransitionInteractor mKeyguardTransitionInteractor;
private CoroutineDispatcher mMainDispatcher;
- private boolean mIsToLockscreenTransitionRunning = false;
+ private boolean mIsOcclusionTransitionRunning = false;
private int mDreamingToLockscreenTransitionTranslationY;
private int mOccludedToLockscreenTransitionTranslationY;
+ private int mLockscreenToDreamingTransitionTranslationY;
+ private int mLockscreenToOccludedTransitionTranslationY;
private boolean mUnocclusionTransitionFlagEnabled = false;
private final Runnable mFlingCollapseRunnable = () -> fling(0, false /* expand */,
@@ -713,13 +719,25 @@
private final Consumer<TransitionStep> mDreamingToLockscreenTransition =
(TransitionStep step) -> {
- mIsToLockscreenTransitionRunning =
+ mIsOcclusionTransitionRunning =
step.getTransitionState() == TransitionState.RUNNING;
};
private final Consumer<TransitionStep> mOccludedToLockscreenTransition =
(TransitionStep step) -> {
- mIsToLockscreenTransitionRunning =
+ mIsOcclusionTransitionRunning =
+ step.getTransitionState() == TransitionState.RUNNING;
+ };
+
+ private final Consumer<TransitionStep> mLockscreenToDreamingTransition =
+ (TransitionStep step) -> {
+ mIsOcclusionTransitionRunning =
+ step.getTransitionState() == TransitionState.RUNNING;
+ };
+
+ private final Consumer<TransitionStep> mLockscreenToOccludedTransition =
+ (TransitionStep step) -> {
+ mIsOcclusionTransitionRunning =
step.getTransitionState() == TransitionState.RUNNING;
};
@@ -794,6 +812,8 @@
AlternateBouncerInteractor alternateBouncerInteractor,
DreamingToLockscreenTransitionViewModel dreamingToLockscreenTransitionViewModel,
OccludedToLockscreenTransitionViewModel occludedToLockscreenTransitionViewModel,
+ LockscreenToDreamingTransitionViewModel lockscreenToDreamingTransitionViewModel,
+ LockscreenToOccludedTransitionViewModel lockscreenToOccludedTransitionViewModel,
@Main CoroutineDispatcher mainDispatcher,
KeyguardTransitionInteractor keyguardTransitionInteractor,
DumpManager dumpManager) {
@@ -813,6 +833,8 @@
mGutsManager = gutsManager;
mDreamingToLockscreenTransitionViewModel = dreamingToLockscreenTransitionViewModel;
mOccludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel;
+ mLockscreenToDreamingTransitionViewModel = lockscreenToDreamingTransitionViewModel;
+ mLockscreenToOccludedTransitionViewModel = lockscreenToOccludedTransitionViewModel;
mKeyguardTransitionInteractor = keyguardTransitionInteractor;
mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
@@ -1121,22 +1143,44 @@
collectFlow(mView, mKeyguardTransitionInteractor.getDreamingToLockscreenTransition(),
mDreamingToLockscreenTransition, mMainDispatcher);
collectFlow(mView, mDreamingToLockscreenTransitionViewModel.getLockscreenAlpha(),
- toLockscreenTransitionAlpha(mNotificationStackScrollLayoutController),
+ setTransitionAlpha(mNotificationStackScrollLayoutController),
mMainDispatcher);
collectFlow(mView, mDreamingToLockscreenTransitionViewModel.lockscreenTranslationY(
mDreamingToLockscreenTransitionTranslationY),
- toLockscreenTransitionY(mNotificationStackScrollLayoutController),
+ setTransitionY(mNotificationStackScrollLayoutController),
mMainDispatcher);
// Occluded->Lockscreen
collectFlow(mView, mKeyguardTransitionInteractor.getOccludedToLockscreenTransition(),
mOccludedToLockscreenTransition, mMainDispatcher);
collectFlow(mView, mOccludedToLockscreenTransitionViewModel.getLockscreenAlpha(),
- toLockscreenTransitionAlpha(mNotificationStackScrollLayoutController),
+ setTransitionAlpha(mNotificationStackScrollLayoutController),
mMainDispatcher);
collectFlow(mView, mOccludedToLockscreenTransitionViewModel.lockscreenTranslationY(
mOccludedToLockscreenTransitionTranslationY),
- toLockscreenTransitionY(mNotificationStackScrollLayoutController),
+ setTransitionY(mNotificationStackScrollLayoutController),
+ mMainDispatcher);
+
+ // Lockscreen->Dreaming
+ collectFlow(mView, mKeyguardTransitionInteractor.getLockscreenToDreamingTransition(),
+ mLockscreenToDreamingTransition, mMainDispatcher);
+ collectFlow(mView, mLockscreenToDreamingTransitionViewModel.getLockscreenAlpha(),
+ setTransitionAlpha(mNotificationStackScrollLayoutController),
+ mMainDispatcher);
+ collectFlow(mView, mLockscreenToDreamingTransitionViewModel.lockscreenTranslationY(
+ mLockscreenToDreamingTransitionTranslationY),
+ setTransitionY(mNotificationStackScrollLayoutController),
+ mMainDispatcher);
+
+ // Lockscreen->Occluded
+ collectFlow(mView, mKeyguardTransitionInteractor.getLockscreenToOccludedTransition(),
+ mLockscreenToOccludedTransition, mMainDispatcher);
+ collectFlow(mView, mLockscreenToOccludedTransitionViewModel.getLockscreenAlpha(),
+ setTransitionAlpha(mNotificationStackScrollLayoutController),
+ mMainDispatcher);
+ collectFlow(mView, mLockscreenToOccludedTransitionViewModel.lockscreenTranslationY(
+ mLockscreenToOccludedTransitionTranslationY),
+ setTransitionY(mNotificationStackScrollLayoutController),
mMainDispatcher);
}
}
@@ -1177,6 +1221,10 @@
R.dimen.dreaming_to_lockscreen_transition_lockscreen_translation_y);
mOccludedToLockscreenTransitionTranslationY = mResources.getDimensionPixelSize(
R.dimen.occluded_to_lockscreen_transition_lockscreen_translation_y);
+ mLockscreenToDreamingTransitionTranslationY = mResources.getDimensionPixelSize(
+ R.dimen.lockscreen_to_dreaming_transition_lockscreen_translation_y);
+ mLockscreenToOccludedTransitionTranslationY = mResources.getDimensionPixelSize(
+ R.dimen.lockscreen_to_occluded_transition_lockscreen_translation_y);
}
private void updateViewControllers(KeyguardStatusView keyguardStatusView,
@@ -1840,7 +1888,7 @@
}
private void updateClock() {
- if (mIsToLockscreenTransitionRunning) {
+ if (mIsOcclusionTransitionRunning) {
return;
}
float alpha = mClockPositionResult.clockAlpha * mKeyguardOnlyContentAlpha;
@@ -2731,7 +2779,7 @@
} else if (statusBarState == KEYGUARD
|| statusBarState == StatusBarState.SHADE_LOCKED) {
mKeyguardBottomArea.setVisibility(View.VISIBLE);
- if (!mIsToLockscreenTransitionRunning) {
+ if (!mIsOcclusionTransitionRunning) {
mKeyguardBottomArea.setAlpha(1f);
}
} else {
@@ -3600,7 +3648,7 @@
}
private void updateNotificationTranslucency() {
- if (mIsToLockscreenTransitionRunning) {
+ if (mIsOcclusionTransitionRunning) {
return;
}
float alpha = 1f;
@@ -3658,7 +3706,7 @@
}
private void updateKeyguardBottomAreaAlpha() {
- if (mIsToLockscreenTransitionRunning) {
+ if (mIsOcclusionTransitionRunning) {
return;
}
// There are two possible panel expansion behaviors:
@@ -5890,7 +5938,7 @@
mCurrentPanelState = state;
}
- private Consumer<Float> toLockscreenTransitionAlpha(
+ private Consumer<Float> setTransitionAlpha(
NotificationStackScrollLayoutController stackScroller) {
return (Float alpha) -> {
mKeyguardStatusViewController.setAlpha(alpha);
@@ -5908,7 +5956,7 @@
};
}
- private Consumer<Float> toLockscreenTransitionY(
+ private Consumer<Float> setTransitionY(
NotificationStackScrollLayoutController stackScroller) {
return (Float translationY) -> {
mKeyguardStatusViewController.setTranslationY(translationY, /* excludeMedia= */false);
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
index 6acf417..ca03127 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java
@@ -638,10 +638,6 @@
}
@Override
- public void reportActivityRelaunched() {
- }
-
- @Override
public WindowInsetsController getInsetsController() {
return null;
}
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
index 64b6e61..7ed6e3e 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
@@ -16,6 +16,8 @@
package com.android.systemui.shade;
+import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow;
+
import android.app.StatusBarManager;
import android.media.AudioManager;
import android.media.session.MediaSessionLegacyHelper;
@@ -40,6 +42,9 @@
import com.android.systemui.flags.Flags;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor;
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
+import com.android.systemui.keyguard.shared.model.TransitionState;
+import com.android.systemui.keyguard.shared.model.TransitionStep;
import com.android.systemui.keyguard.ui.binder.KeyguardBouncerViewBinder;
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBouncerViewModel;
import com.android.systemui.statusbar.DragDownHelper;
@@ -58,6 +63,7 @@
import com.android.systemui.statusbar.window.StatusBarWindowStateController;
import java.io.PrintWriter;
+import java.util.function.Consumer;
import javax.inject.Inject;
@@ -98,6 +104,13 @@
private final ShadeExpansionStateManager mShadeExpansionStateManager;
private boolean mIsTrackingBarGesture = false;
+ private boolean mIsOcclusionTransitionRunning = false;
+
+ private final Consumer<TransitionStep> mLockscreenToDreamingTransition =
+ (TransitionStep step) -> {
+ mIsOcclusionTransitionRunning =
+ step.getTransitionState() == TransitionState.RUNNING;
+ };
@Inject
public NotificationShadeWindowViewController(
@@ -122,7 +135,8 @@
FeatureFlags featureFlags,
KeyguardBouncerViewModel keyguardBouncerViewModel,
KeyguardBouncerComponent.Factory keyguardBouncerComponentFactory,
- AlternateBouncerInteractor alternateBouncerInteractor
+ AlternateBouncerInteractor alternateBouncerInteractor,
+ KeyguardTransitionInteractor keyguardTransitionInteractor
) {
mLockscreenShadeTransitionController = transitionController;
mFalsingCollector = falsingCollector;
@@ -152,6 +166,11 @@
keyguardBouncerViewModel,
keyguardBouncerComponentFactory);
}
+
+ if (featureFlags.isEnabled(Flags.UNOCCLUSION_TRANSITION)) {
+ collectFlow(mView, keyguardTransitionInteractor.getLockscreenToDreamingTransition(),
+ mLockscreenToDreamingTransition);
+ }
}
/**
@@ -219,6 +238,10 @@
return true;
}
+ if (mIsOcclusionTransitionRunning) {
+ return false;
+ }
+
mFalsingCollector.onTouchEvent(ev);
mPulsingWakeupGestureHandler.onTouchEvent(ev);
mStatusBarKeyguardViewManager.onTouch(ev);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
index 905cc3f..f565f3d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
@@ -509,9 +509,14 @@
* If secure with redaction: Show bouncer, go to unlocked shade.
* If secure without redaction or no security: Go to [StatusBarState.SHADE_LOCKED].
*
+ * Split shade is special case and [needsQSAnimation] will be always overridden to true.
+ * That's because handheld shade will automatically follow notifications animation, but that's
+ * not the case for split shade.
+ *
* @param expandView The view to expand after going to the shade
* @param needsQSAnimation if this needs the quick settings to slide in from the top or if
- * that's already handled separately
+ * that's already handled separately. This argument will be ignored on
+ * split shade as there QS animation can't be handled separately.
*/
@JvmOverloads
fun goToLockedShade(expandedView: View?, needsQSAnimation: Boolean = true) {
@@ -519,7 +524,7 @@
logger.logTryGoToLockedShade(isKeyguard)
if (isKeyguard) {
val animationHandler: ((Long) -> Unit)?
- if (needsQSAnimation) {
+ if (needsQSAnimation || useSplitShade) {
// Let's use the default animation
animationHandler = null
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ImageTransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ImageTransformState.java
index 76025ab7..0446165 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ImageTransformState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ImageTransformState.java
@@ -53,7 +53,9 @@
return true;
}
if (otherState instanceof ImageTransformState) {
- return mIcon != null && mIcon.sameAs(((ImageTransformState) otherState).getIcon());
+ final Icon otherIcon = ((ImageTransformState) otherState).mIcon;
+ return mIcon == otherIcon || (mIcon != null && otherIcon != null && mIcon.sameAs(
+ otherIcon));
}
return false;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
index cf2f7742..8dcfec7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
@@ -122,6 +122,7 @@
options.setLaunchDisplayId(displayId);
options.setCallerDisplayId(displayId);
options.setPendingIntentBackgroundActivityLaunchAllowed(true);
+ options.setInteractive(true);
return options.toBundle();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
index fa701e7..f7f8f4c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialog.java
@@ -185,7 +185,8 @@
// for foldables that often go from large <=> small screen when folding/unfolding.
ViewRootImpl.addConfigCallback(this);
mDialogManager.setShowing(this, true);
- mSysUiState.setFlag(QuickStepContract.SYSUI_STATE_DIALOG_SHOWING, true);
+ mSysUiState.setFlag(QuickStepContract.SYSUI_STATE_DIALOG_SHOWING, true)
+ .commitUpdate(mContext.getDisplayId());
}
@Override
@@ -198,7 +199,8 @@
ViewRootImpl.removeConfigCallback(this);
mDialogManager.setShowing(this, false);
- mSysUiState.setFlag(QuickStepContract.SYSUI_STATE_DIALOG_SHOWING, false);
+ mSysUiState.setFlag(QuickStepContract.SYSUI_STATE_DIALOG_SHOWING, false)
+ .commitUpdate(mContext.getDisplayId());
}
public void setShowForAllUsers(boolean show) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java
index f63d652..c8ee647 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java
@@ -160,7 +160,7 @@
mStatusBarStateController = statusBarStateController;
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView,
keyguardStateController, dozeParameters,
- screenOffAnimationController, /* animateYPos= */ false);
+ screenOffAnimationController, /* animateYPos= */ false, /* logBuffer= */ null);
mUserSwitchDialogController = userSwitchDialogController;
mUiEventLogger = uiEventLogger;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java
index c150654..e9f0dcb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java
@@ -173,7 +173,7 @@
mUserSwitcherController, this);
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView,
keyguardStateController, dozeParameters,
- screenOffAnimationController, /* animateYPos= */ false);
+ screenOffAnimationController, /* animateYPos= */ false, /* logBuffer= */ null);
mBackground = new KeyguardUserSwitcherScrim(context);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/notifications/TvNotificationAdapter.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/notifications/TvNotificationAdapter.java
index 3b1a4db..3362097 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/notifications/TvNotificationAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/notifications/TvNotificationAdapter.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.tv.notifications;
+import android.app.BroadcastOptions;
import android.app.Notification;
import android.app.PendingIntent;
import android.service.notification.StatusBarNotification;
@@ -100,7 +101,9 @@
public void onClick(View v) {
try {
if (mPendingIntent != null) {
- mPendingIntent.send();
+ BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractive(true);
+ mPendingIntent.send(options.toBundle());
}
} catch (PendingIntent.CanceledException e) {
Log.d(TAG, "Pending intent canceled for : " + mPendingIntent);
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index 7d23399..0f9ae39 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -1522,6 +1522,7 @@
.setDuration(mDialogHideAnimationDurationMs)
.setInterpolator(new SystemUIInterpolators.LogAccelerateInterpolator())
.withEndAction(() -> mHandler.postDelayed(() -> {
+ mController.notifyVisible(false);
mDialog.dismiss();
tryToRemoveCaptionsTooltip();
mIsAnimatingDismiss = false;
@@ -1535,7 +1536,6 @@
animator.setListener(getJankListener(getDialogView(), TYPE_DISMISS,
mDialogHideAnimationDurationMs)).start();
checkODICaptionsTooltip(true);
- mController.notifyVisible(false);
synchronized (mSafetyWarningLock) {
if (mSafetyWarning != null) {
if (D.BUG) Log.d(TAG, "SafetyWarning dismissed");
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletView.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletView.java
index 1243c47..dfc6392 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletView.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletView.java
@@ -20,6 +20,7 @@
import static com.android.systemui.wallet.ui.WalletCardCarousel.CARD_ANIM_ALPHA_DURATION;
import android.annotation.Nullable;
+import android.app.BroadcastOptions;
import android.app.PendingIntent;
import android.content.Context;
import android.content.res.Configuration;
@@ -303,7 +304,10 @@
? mDeviceLockedActionOnClickListener
: v -> {
try {
- walletCard.getPendingIntent().send();
+
+ BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setInteractive(true);
+ walletCard.getPendingIntent().send(options.toBundle());
} catch (PendingIntent.CanceledException e) {
Log.w(TAG, "Error sending pending intent for wallet card.");
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
index e8f8e25..b4baa44 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
@@ -15,6 +15,7 @@
*/
package com.android.keyguard
+import com.android.systemui.statusbar.CommandQueue
import android.content.BroadcastReceiver
import android.testing.AndroidTestingRunner
import android.view.View
@@ -81,6 +82,7 @@
@Mock private lateinit var largeClockEvents: ClockFaceEvents
@Mock private lateinit var parentView: View
@Mock private lateinit var transitionRepository: KeyguardTransitionRepository
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var repository: FakeKeyguardRepository
@Mock private lateinit var logBuffer: LogBuffer
private lateinit var underTest: ClockEventController
@@ -99,7 +101,7 @@
repository = FakeKeyguardRepository()
underTest = ClockEventController(
- KeyguardInteractor(repository = repository),
+ KeyguardInteractor(repository = repository, commandQueue = commandQueue),
KeyguardTransitionInteractor(repository = transitionRepository),
broadcastDispatcher,
batteryController,
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewControllerTest.java
index be4bbdf..dfad15d 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewControllerTest.java
@@ -24,6 +24,7 @@
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
+import com.android.keyguard.logging.KeyguardLogger;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.plugins.ClockAnimations;
@@ -65,6 +66,8 @@
ScreenOffAnimationController mScreenOffAnimationController;
@Captor
private ArgumentCaptor<KeyguardUpdateMonitorCallback> mKeyguardUpdateMonitorCallbackCaptor;
+ @Mock
+ KeyguardLogger mKeyguardLogger;
private KeyguardStatusViewController mController;
@@ -81,7 +84,8 @@
mConfigurationController,
mDozeParameters,
mFeatureFlags,
- mScreenOffAnimationController);
+ mScreenOffAnimationController,
+ mKeyguardLogger);
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
index 539dc55..ac22de9 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
@@ -117,6 +117,7 @@
import com.android.keyguard.logging.KeyguardUpdateMonitorLogger;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.biometrics.AuthController;
+import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.log.SessionTracker;
@@ -143,6 +144,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -234,6 +236,8 @@
@Mock
private GlobalSettings mGlobalSettings;
private FaceWakeUpTriggersConfig mFaceWakeUpTriggersConfig;
+ @Mock
+ private FingerprintInteractiveToAuthProvider mInteractiveToAuthProvider;
private final int mCurrentUserId = 100;
@@ -1259,8 +1263,7 @@
when(mAuthController.isSfpsEnrolled(anyInt())).thenReturn(true);
// WHEN require screen on to auth is disabled, and keyguard is not awake
- when(mSecureSettings.getIntForUser(anyString(), anyInt(), anyInt())).thenReturn(0);
- mKeyguardUpdateMonitor.updateSfpsRequireScreenOnToAuthPref();
+ when(mInteractiveToAuthProvider.isEnabled(anyInt())).thenReturn(false);
mContext.getOrCreateTestableResources().addOverride(
com.android.internal.R.bool.config_requireScreenOnToAuthEnabled, true);
@@ -1280,8 +1283,7 @@
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isTrue();
// WHEN require screen on to auth is enabled, and keyguard is not awake
- when(mSecureSettings.getIntForUser(anyString(), anyInt(), anyInt())).thenReturn(1);
- mKeyguardUpdateMonitor.updateSfpsRequireScreenOnToAuthPref();
+ when(mInteractiveToAuthProvider.isEnabled(anyInt())).thenReturn(false);
// THEN we shouldn't listen for sfps when screen off, because require screen on is enabled
assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(false)).isFalse();
@@ -2406,7 +2408,7 @@
mPowerManager, mTrustManager, mSubscriptionManager, mUserManager,
mDreamManager, mDevicePolicyManager, mSensorPrivacyManager, mTelephonyManager,
mPackageManager, mFaceManager, mFingerprintManager, mBiometricManager,
- mFaceWakeUpTriggersConfig);
+ mFaceWakeUpTriggersConfig, Optional.of(mInteractiveToAuthProvider));
setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker);
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerBaseTest.java
index ae8f419..05bd1e4 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerBaseTest.java
@@ -49,6 +49,7 @@
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.VibratorHelper;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -68,6 +69,7 @@
public class LockIconViewControllerBaseTest extends SysuiTestCase {
protected static final String UNLOCKED_LABEL = "unlocked";
+ protected static final String LOCKED_LABEL = "locked";
protected static final int PADDING = 10;
protected MockitoSession mStaticMockSession;
@@ -90,6 +92,7 @@
protected @Mock AuthRippleController mAuthRippleController;
protected @Mock FeatureFlags mFeatureFlags;
protected @Mock KeyguardTransitionRepository mTransitionRepository;
+ protected @Mock CommandQueue mCommandQueue;
protected FakeExecutor mDelayableExecutor = new FakeExecutor(new FakeSystemClock());
protected LockIconViewController mUnderTest;
@@ -130,6 +133,7 @@
Rect windowBounds = new Rect(0, 0, 800, 1200);
when(mWindowManager.getCurrentWindowMetrics().getBounds()).thenReturn(windowBounds);
when(mResources.getString(R.string.accessibility_unlock_button)).thenReturn(UNLOCKED_LABEL);
+ when(mResources.getString(R.string.accessibility_lock_icon)).thenReturn(LOCKED_LABEL);
when(mResources.getDrawable(anyInt(), any())).thenReturn(mIconDrawable);
when(mResources.getDimensionPixelSize(R.dimen.lock_icon_padding)).thenReturn(PADDING);
when(mAuthController.getScaleFactor()).thenReturn(1f);
@@ -155,7 +159,7 @@
mAuthRippleController,
mResources,
new KeyguardTransitionInteractor(mTransitionRepository),
- new KeyguardInteractor(new FakeKeyguardRepository()),
+ new KeyguardInteractor(new FakeKeyguardRepository(), mCommandQueue),
mFeatureFlags
);
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java
index f4c2284..472d207 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java
@@ -264,6 +264,26 @@
// THEN the view is updated to NO translation (no burn-in offsets anymore)
verify(mLockIconView).setTranslationY(0);
verify(mLockIconView).setTranslationX(0);
+ }
+ @Test
+ public void lockIconShows_afterBiometricsCleared() {
+ // GIVEN lock icon controller is initialized and view is attached
+ init(/* useMigrationFlag= */false);
+ captureKeyguardUpdateMonitorCallback();
+
+ // GIVEN user has unlocked with a biometric auth (ie: face auth)
+ // and biometric running state changes
+ when(mKeyguardUpdateMonitor.getUserUnlockedWithBiometric(anyInt())).thenReturn(true);
+ mKeyguardUpdateMonitorCallback.onBiometricRunningStateChanged(false,
+ BiometricSourceType.FACE);
+ reset(mLockIconView);
+
+ // WHEN biometrics are cleared
+ when(mKeyguardUpdateMonitor.getUserUnlockedWithBiometric(anyInt())).thenReturn(false);
+ mKeyguardUpdateMonitorCallback.onBiometricsCleared();
+
+ // THEN the lock icon is shown
+ verify(mLockIconView).setContentDescription(LOCKED_LABEL);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt
index c6fa983..7c9d22f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt
@@ -124,8 +124,8 @@
.thenReturn(mock(UdfpsBpView::class.java))
whenever(inflater.inflate(R.layout.udfps_keyguard_view, null))
.thenReturn(mock(UdfpsKeyguardView::class.java))
- whenever(inflater.inflate(R.layout.udfps_fpm_other_view, null))
- .thenReturn(mock(UdfpsFpmOtherView::class.java))
+ whenever(inflater.inflate(R.layout.udfps_fpm_empty_view, null))
+ .thenReturn(mock(UdfpsFpmEmptyView::class.java))
whenever(udfpsEnrollView.context).thenReturn(context)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java
index 83a6db0..d7b7a7d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java
@@ -190,7 +190,7 @@
@Mock
private UdfpsBpView mBpView;
@Mock
- private UdfpsFpmOtherView mFpmOtherView;
+ private UdfpsFpmEmptyView mFpmEmptyView;
@Mock
private UdfpsKeyguardView mKeyguardView;
private final UdfpsAnimationViewController mUdfpsKeyguardViewController =
@@ -240,8 +240,8 @@
.thenReturn(mKeyguardView); // for showOverlay REASON_AUTH_FPM_KEYGUARD
when(mLayoutInflater.inflate(R.layout.udfps_bp_view, null))
.thenReturn(mBpView);
- when(mLayoutInflater.inflate(R.layout.udfps_fpm_other_view, null))
- .thenReturn(mFpmOtherView);
+ when(mLayoutInflater.inflate(R.layout.udfps_fpm_empty_view, null))
+ .thenReturn(mFpmEmptyView);
when(mEnrollView.getContext()).thenReturn(mContext);
when(mKeyguardUpdateMonitor.isFingerprintDetectionRunning()).thenReturn(true);
when(mSessionTracker.getSessionId(anyInt())).thenReturn(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt
index 4659766..0a03b2c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt
@@ -51,6 +51,7 @@
import com.android.systemui.settings.UserTracker
import com.android.systemui.shared.customization.data.content.CustomizationProviderContract as Contract
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.FakeSharedPreferences
import com.android.systemui.util.mockito.any
@@ -86,9 +87,9 @@
@Mock private lateinit var backgroundHandler: Handler
@Mock private lateinit var previewSurfacePackage: SurfaceControlViewHost.SurfacePackage
@Mock private lateinit var launchAnimator: DialogLaunchAnimator
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var underTest: CustomizationProvider
-
private lateinit var testScope: TestScope
@Before
@@ -160,6 +161,7 @@
keyguardInteractor =
KeyguardInteractor(
repository = FakeKeyguardRepository(),
+ commandQueue = commandQueue,
),
registry = mock(),
lockPatternUtils = lockPatternUtils,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
index 5196f49..59e4655 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
@@ -66,6 +66,7 @@
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.dump.DumpManager;
+import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shade.NotificationShadeWindowControllerImpl;
@@ -134,6 +135,7 @@
private @Mock SysuiColorExtractor mColorExtractor;
private @Mock AuthController mAuthController;
private @Mock ShadeExpansionStateManager mShadeExpansionStateManager;
+ private @Mock FeatureFlags mFeatureFlags;
private @Mock ShadeWindowLogger mShadeWindowLogger;
private DeviceConfigProxy mDeviceConfig = new DeviceConfigProxyFake();
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
@@ -444,6 +446,45 @@
TestableLooper.get(this).processAllMessages();
}
+ @Test
+ @TestableLooper.RunWithLooper(setAsMainLooper = true)
+ public void testKeyguardDelayedOnGoingToSleep_ifScreenOffAnimationWillPlayButIsntPlayingYet() {
+ mViewMediator.onSystemReady();
+ TestableLooper.get(this).processAllMessages();
+
+ mViewMediator.setShowingLocked(false);
+ TestableLooper.get(this).processAllMessages();
+
+ mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER);
+ TestableLooper.get(this).processAllMessages();
+
+ when(mScreenOffAnimationController.shouldDelayKeyguardShow()).thenReturn(true);
+ when(mScreenOffAnimationController.isKeyguardShowDelayed()).thenReturn(false);
+ mViewMediator.onFinishedGoingToSleep(OFF_BECAUSE_OF_USER, false);
+ TestableLooper.get(this).processAllMessages();
+
+ assertFalse(mViewMediator.isShowingAndNotOccluded());
+ }
+
+ @Test
+ @TestableLooper.RunWithLooper(setAsMainLooper = true)
+ public void testKeyguardNotDelayedOnGoingToSleep_ifScreenOffAnimationWillNotPlay() {
+ mViewMediator.onSystemReady();
+ TestableLooper.get(this).processAllMessages();
+
+ mViewMediator.setShowingLocked(false);
+ TestableLooper.get(this).processAllMessages();
+
+ mViewMediator.onStartedGoingToSleep(OFF_BECAUSE_OF_USER);
+ TestableLooper.get(this).processAllMessages();
+
+ when(mScreenOffAnimationController.shouldDelayKeyguardShow()).thenReturn(false);
+ mViewMediator.onFinishedGoingToSleep(OFF_BECAUSE_OF_USER, false);
+ TestableLooper.get(this).processAllMessages();
+
+ assertTrue(mViewMediator.isShowingAndNotOccluded());
+ }
+
private void createAndStartViewMediator() {
mViewMediator = new KeyguardViewMediator(
mContext,
@@ -471,6 +512,7 @@
mScreenOnCoordinator,
mInteractionJankMonitor,
mDreamOverlayStateController,
+ mFeatureFlags,
() -> mShadeController,
() -> mNotificationShadeWindowController,
() -> mActivityLaunchAnimator,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt
index 5d2f0eb..f8f2a56 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardTransitionRepositoryTest.kt
@@ -104,7 +104,7 @@
val firstTransitionSteps = listWithStep(step = BigDecimal(.1), stop = BigDecimal(.1))
assertSteps(steps.subList(0, 4), firstTransitionSteps, AOD, LOCKSCREEN)
- val secondTransitionSteps = listWithStep(step = BigDecimal(.1), start = BigDecimal(.9))
+ val secondTransitionSteps = listWithStep(step = BigDecimal(.1), start = BigDecimal(.1))
assertSteps(steps.subList(4, steps.size), secondTransitionSteps, LOCKSCREEN, AOD)
job.cancel()
@@ -201,7 +201,10 @@
)
)
fractions.forEachIndexed { index, fraction ->
- assertThat(steps[index + 1])
+ val step = steps[index + 1]
+ val truncatedValue =
+ BigDecimal(step.value.toDouble()).setScale(2, RoundingMode.HALF_UP).toFloat()
+ assertThat(step.copy(value = truncatedValue))
.isEqualTo(
TransitionStep(
from,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
new file mode 100644
index 0000000..68d13d3
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package com.android.systemui.keyguard.domain.interactor
+
+import android.app.StatusBarManager
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
+import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel
+import com.android.systemui.statusbar.CommandQueue
+import com.android.systemui.statusbar.CommandQueue.Callbacks
+import com.android.systemui.util.mockito.argumentCaptor
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.flow.onCompletion
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.mockito.Mock
+import org.mockito.Mockito.verify
+import org.mockito.MockitoAnnotations
+
+@SmallTest
+@RunWith(JUnit4::class)
+class KeyguardInteractorTest : SysuiTestCase() {
+ @Mock private lateinit var commandQueue: CommandQueue
+
+ private lateinit var underTest: KeyguardInteractor
+ private lateinit var repository: FakeKeyguardRepository
+
+ @Before
+ fun setUp() {
+ MockitoAnnotations.initMocks(this)
+
+ repository = FakeKeyguardRepository()
+ underTest = KeyguardInteractor(repository, commandQueue)
+ }
+
+ @Test
+ fun onCameraLaunchDetected() = runTest {
+ val flow = underTest.onCameraLaunchDetected
+ var cameraLaunchSource = collectLastValue(flow)
+ runCurrent()
+
+ val captor = argumentCaptor<CommandQueue.Callbacks>()
+ verify(commandQueue).addCallback(captor.capture())
+
+ captor.value.onCameraLaunchGestureDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE)
+ assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.WIGGLE)
+
+ captor.value.onCameraLaunchGestureDetected(
+ StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP
+ )
+ assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.POWER_DOUBLE_TAP)
+
+ captor.value.onCameraLaunchGestureDetected(
+ StatusBarManager.CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER
+ )
+ assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.LIFT_TRIGGER)
+
+ captor.value.onCameraLaunchGestureDetected(
+ StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE
+ )
+ assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.QUICK_AFFORDANCE)
+
+ flow.onCompletion { verify(commandQueue).removeCallback(captor.value) }
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt
index 14b7c31..43287b0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt
@@ -44,6 +44,7 @@
import com.android.systemui.settings.FakeUserTracker
import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.FakeSharedPreferences
import com.android.systemui.util.mockito.any
@@ -216,6 +217,7 @@
@Mock private lateinit var animationController: ActivityLaunchAnimator.Controller
@Mock private lateinit var expandable: Expandable
@Mock private lateinit var launchAnimator: DialogLaunchAnimator
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var underTest: KeyguardQuickAffordanceInteractor
@@ -286,7 +288,11 @@
)
underTest =
KeyguardQuickAffordanceInteractor(
- keyguardInteractor = KeyguardInteractor(repository = FakeKeyguardRepository()),
+ keyguardInteractor =
+ KeyguardInteractor(
+ repository = FakeKeyguardRepository(),
+ commandQueue = commandQueue
+ ),
registry =
FakeKeyguardQuickAffordanceRegistry(
mapOf(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt
index 972919a..b75a15d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt
@@ -46,6 +46,7 @@
import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.FakeSharedPreferences
import com.android.systemui.util.mockito.mock
@@ -75,6 +76,7 @@
@Mock private lateinit var userTracker: UserTracker
@Mock private lateinit var activityStarter: ActivityStarter
@Mock private lateinit var launchAnimator: DialogLaunchAnimator
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var underTest: KeyguardQuickAffordanceInteractor
@@ -152,7 +154,8 @@
underTest =
KeyguardQuickAffordanceInteractor(
- keyguardInteractor = KeyguardInteractor(repository = repository),
+ keyguardInteractor =
+ KeyguardInteractor(repository = repository, commandQueue = commandQueue),
registry =
FakeKeyguardQuickAffordanceRegistry(
mapOf(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
index d2b7838..754adfd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt
@@ -33,6 +33,7 @@
import com.android.systemui.keyguard.util.KeyguardTransitionRunner
import com.android.systemui.shade.data.repository.FakeShadeRepository
import com.android.systemui.shade.data.repository.ShadeRepository
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.util.mockito.withArgCaptor
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.cancelChildren
@@ -66,6 +67,7 @@
// Used to verify transition requests for test output
@Mock private lateinit var mockTransitionRepository: KeyguardTransitionRepository
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var fromLockscreenTransitionInteractor: FromLockscreenTransitionInteractor
private lateinit var fromDreamingTransitionInteractor: FromDreamingTransitionInteractor
@@ -85,7 +87,7 @@
fromLockscreenTransitionInteractor =
FromLockscreenTransitionInteractor(
scope = testScope,
- keyguardInteractor = KeyguardInteractor(keyguardRepository),
+ keyguardInteractor = KeyguardInteractor(keyguardRepository, commandQueue),
shadeRepository = shadeRepository,
keyguardTransitionRepository = mockTransitionRepository,
keyguardTransitionInteractor = KeyguardTransitionInteractor(transitionRepository),
@@ -95,7 +97,7 @@
fromDreamingTransitionInteractor =
FromDreamingTransitionInteractor(
scope = testScope,
- keyguardInteractor = KeyguardInteractor(keyguardRepository),
+ keyguardInteractor = KeyguardInteractor(keyguardRepository, commandQueue),
keyguardTransitionRepository = mockTransitionRepository,
keyguardTransitionInteractor = KeyguardTransitionInteractor(transitionRepository),
)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBottomAreaViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBottomAreaViewModelTest.kt
index a2c2f71..022afdd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBottomAreaViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBottomAreaViewModelTest.kt
@@ -47,6 +47,7 @@
import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.FakeSharedPreferences
import com.android.systemui.util.mockito.any
@@ -84,6 +85,7 @@
@Mock private lateinit var userTracker: UserTracker
@Mock private lateinit var activityStarter: ActivityStarter
@Mock private lateinit var launchAnimator: DialogLaunchAnimator
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var underTest: KeyguardBottomAreaViewModel
@@ -124,7 +126,8 @@
)
repository = FakeKeyguardRepository()
- val keyguardInteractor = KeyguardInteractor(repository = repository)
+ val keyguardInteractor =
+ KeyguardInteractor(repository = repository, commandQueue = commandQueue)
whenever(userTracker.userHandle).thenReturn(mock())
whenever(lockPatternUtils.getStrongAuthForUser(anyInt()))
.thenReturn(LockPatternUtils.StrongAuthTracker.STRONG_AUTH_NOT_REQUIRED)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt
new file mode 100644
index 0000000..7390591
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.Interpolators.EMPHASIZED_ACCELERATE
+import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor.Companion.TO_DREAMING_DURATION
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.AnimationParams
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionState
+import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel.Companion.LOCKSCREEN_ALPHA
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel.Companion.LOCKSCREEN_TRANSLATION_Y
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@SmallTest
+@RunWith(JUnit4::class)
+class LockscreenToDreamingTransitionViewModelTest : SysuiTestCase() {
+ private lateinit var underTest: LockscreenToDreamingTransitionViewModel
+ private lateinit var repository: FakeKeyguardTransitionRepository
+
+ @Before
+ fun setUp() {
+ repository = FakeKeyguardTransitionRepository()
+ val interactor = KeyguardTransitionInteractor(repository)
+ underTest = LockscreenToDreamingTransitionViewModel(interactor)
+ }
+
+ @Test
+ fun lockscreenFadeOut() =
+ runTest(UnconfinedTestDispatcher()) {
+ val values = mutableListOf<Float>()
+
+ val job = underTest.lockscreenAlpha.onEach { values.add(it) }.launchIn(this)
+
+ // Should start running here...
+ repository.sendTransitionStep(step(0f))
+ repository.sendTransitionStep(step(0.1f))
+ repository.sendTransitionStep(step(0.2f))
+ // ...up to here
+ repository.sendTransitionStep(step(0.3f))
+ repository.sendTransitionStep(step(1f))
+
+ // Only three values should be present, since the dream overlay runs for a small
+ // fraction
+ // of the overall animation time
+ assertThat(values.size).isEqualTo(3)
+ assertThat(values[0]).isEqualTo(1f - animValue(0f, LOCKSCREEN_ALPHA))
+ assertThat(values[1]).isEqualTo(1f - animValue(0.1f, LOCKSCREEN_ALPHA))
+ assertThat(values[2]).isEqualTo(1f - animValue(0.2f, LOCKSCREEN_ALPHA))
+
+ job.cancel()
+ }
+
+ @Test
+ fun lockscreenTranslationY() =
+ runTest(UnconfinedTestDispatcher()) {
+ val values = mutableListOf<Float>()
+
+ val pixels = 100
+ val job =
+ underTest.lockscreenTranslationY(pixels).onEach { values.add(it) }.launchIn(this)
+
+ // Should start running here...
+ repository.sendTransitionStep(step(0f))
+ repository.sendTransitionStep(step(0.3f))
+ repository.sendTransitionStep(step(0.5f))
+ // ...up to here
+ repository.sendTransitionStep(step(1f))
+
+ assertThat(values.size).isEqualTo(3)
+ assertThat(values[0])
+ .isEqualTo(
+ EMPHASIZED_ACCELERATE.getInterpolation(
+ animValue(0f, LOCKSCREEN_TRANSLATION_Y)
+ ) * pixels
+ )
+ assertThat(values[1])
+ .isEqualTo(
+ EMPHASIZED_ACCELERATE.getInterpolation(
+ animValue(0.3f, LOCKSCREEN_TRANSLATION_Y)
+ ) * pixels
+ )
+ assertThat(values[2])
+ .isEqualTo(
+ EMPHASIZED_ACCELERATE.getInterpolation(
+ animValue(0.5f, LOCKSCREEN_TRANSLATION_Y)
+ ) * pixels
+ )
+ job.cancel()
+ }
+
+ private fun animValue(stepValue: Float, params: AnimationParams): Float {
+ val totalDuration = TO_DREAMING_DURATION
+ val startValue = (params.startTime / totalDuration).toFloat()
+
+ val multiplier = (totalDuration / params.duration).toFloat()
+ return (stepValue - startValue) * multiplier
+ }
+
+ private fun step(value: Float): TransitionStep {
+ return TransitionStep(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.DREAMING,
+ value = value,
+ transitionState = TransitionState.RUNNING,
+ ownerName = "LockscreenToDreamingTransitionViewModelTest"
+ )
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt
new file mode 100644
index 0000000..759345f
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.Interpolators.EMPHASIZED_ACCELERATE
+import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor.Companion.TO_OCCLUDED_DURATION
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
+import com.android.systemui.keyguard.shared.model.AnimationParams
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionState
+import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToOccludedTransitionViewModel.Companion.LOCKSCREEN_ALPHA
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToOccludedTransitionViewModel.Companion.LOCKSCREEN_TRANSLATION_Y
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+@SmallTest
+@RunWith(JUnit4::class)
+class LockscreenToOccludedTransitionViewModelTest : SysuiTestCase() {
+ private lateinit var underTest: LockscreenToOccludedTransitionViewModel
+ private lateinit var repository: FakeKeyguardTransitionRepository
+
+ @Before
+ fun setUp() {
+ repository = FakeKeyguardTransitionRepository()
+ val interactor = KeyguardTransitionInteractor(repository)
+ underTest = LockscreenToOccludedTransitionViewModel(interactor)
+ }
+
+ @Test
+ fun lockscreenFadeOut() =
+ runTest(UnconfinedTestDispatcher()) {
+ val values = mutableListOf<Float>()
+
+ val job = underTest.lockscreenAlpha.onEach { values.add(it) }.launchIn(this)
+
+ // Should start running here...
+ repository.sendTransitionStep(step(0f))
+ repository.sendTransitionStep(step(0.1f))
+ repository.sendTransitionStep(step(0.4f))
+ // ...up to here
+ repository.sendTransitionStep(step(0.7f))
+ repository.sendTransitionStep(step(1f))
+
+ // Only 3 values should be present, since the dream overlay runs for a small fraction
+ // of the overall animation time
+ assertThat(values.size).isEqualTo(3)
+ assertThat(values[0]).isEqualTo(1f - animValue(0f, LOCKSCREEN_ALPHA))
+ assertThat(values[1]).isEqualTo(1f - animValue(0.1f, LOCKSCREEN_ALPHA))
+ assertThat(values[2]).isEqualTo(1f - animValue(0.4f, LOCKSCREEN_ALPHA))
+
+ job.cancel()
+ }
+
+ @Test
+ fun lockscreenTranslationY() =
+ runTest(UnconfinedTestDispatcher()) {
+ val values = mutableListOf<Float>()
+
+ val pixels = 100
+ val job =
+ underTest.lockscreenTranslationY(pixels).onEach { values.add(it) }.launchIn(this)
+
+ // Should start running here...
+ repository.sendTransitionStep(step(0f))
+ repository.sendTransitionStep(step(0.3f))
+ repository.sendTransitionStep(step(0.5f))
+ repository.sendTransitionStep(step(1f))
+ // ...up to here
+
+ assertThat(values.size).isEqualTo(4)
+ assertThat(values[0])
+ .isEqualTo(
+ EMPHASIZED_ACCELERATE.getInterpolation(
+ animValue(0f, LOCKSCREEN_TRANSLATION_Y)
+ ) * pixels
+ )
+ assertThat(values[1])
+ .isEqualTo(
+ EMPHASIZED_ACCELERATE.getInterpolation(
+ animValue(0.3f, LOCKSCREEN_TRANSLATION_Y)
+ ) * pixels
+ )
+ assertThat(values[2])
+ .isEqualTo(
+ EMPHASIZED_ACCELERATE.getInterpolation(
+ animValue(0.5f, LOCKSCREEN_TRANSLATION_Y)
+ ) * pixels
+ )
+ assertThat(values[3])
+ .isEqualTo(
+ EMPHASIZED_ACCELERATE.getInterpolation(
+ animValue(1f, LOCKSCREEN_TRANSLATION_Y)
+ ) * pixels
+ )
+ job.cancel()
+ }
+
+ private fun animValue(stepValue: Float, params: AnimationParams): Float {
+ val totalDuration = TO_OCCLUDED_DURATION
+ val startValue = (params.startTime / totalDuration).toFloat()
+
+ val multiplier = (totalDuration / params.duration).toFloat()
+ return (stepValue - startValue) * multiplier
+ }
+
+ private fun step(value: Float): TransitionStep {
+ return TransitionStep(
+ from = KeyguardState.LOCKSCREEN,
+ to = KeyguardState.OCCLUDED,
+ value = value,
+ transitionState = TransitionState.RUNNING,
+ ownerName = "LockscreenToOccludedTransitionViewModelTest"
+ )
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt
index 6ca34e0..039dd4d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt
@@ -17,6 +17,7 @@
package com.android.systemui.media.controls.ui
import android.app.PendingIntent
+import android.content.res.Configuration
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import androidx.test.filters.SmallTest
@@ -86,6 +87,9 @@
@Mock lateinit var mediaViewController: MediaViewController
@Mock lateinit var smartspaceMediaData: SmartspaceMediaData
@Captor lateinit var listener: ArgumentCaptor<MediaDataManager.Listener>
+ @Captor
+ lateinit var configListener: ArgumentCaptor<ConfigurationController.ConfigurationListener>
+ @Captor lateinit var newConfig: ArgumentCaptor<Configuration>
@Captor lateinit var visualStabilityCallback: ArgumentCaptor<OnReorderingAllowedListener>
private val clock = FakeSystemClock()
@@ -111,6 +115,7 @@
logger,
debugLogger
)
+ verify(configurationController).addCallback(capture(configListener))
verify(mediaDataManager).addListener(capture(listener))
verify(visualStabilityProvider)
.addPersistentReorderingAllowedListener(capture(visualStabilityCallback))
@@ -662,4 +667,39 @@
mediaCarouselController.updatePageIndicatorAlpha()
assertEquals(mediaCarouselController.pageIndicator.alpha, 1.0F, delta)
}
+
+ @Ignore("b/253229241")
+ @Test
+ fun testOnConfigChanged_playersAreAddedBack() {
+ listener.value.onMediaDataLoaded(
+ "playing local",
+ null,
+ DATA.copy(
+ active = true,
+ isPlaying = true,
+ playbackLocation = MediaData.PLAYBACK_LOCAL,
+ resumption = false
+ )
+ )
+ listener.value.onMediaDataLoaded(
+ "paused local",
+ null,
+ DATA.copy(
+ active = true,
+ isPlaying = false,
+ playbackLocation = MediaData.PLAYBACK_LOCAL,
+ resumption = false
+ )
+ )
+
+ val playersSize = MediaPlayerData.players().size
+
+ configListener.value.onConfigChanged(capture(newConfig))
+
+ assertEquals(playersSize, MediaPlayerData.players().size)
+ assertEquals(
+ MediaPlayerData.getMediaPlayerIndex("playing local"),
+ mediaCarouselController.mediaCarouselScrollHandler.visibleMediaIndex
+ )
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
index 04b50d8..2e6b0cf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
@@ -15,11 +15,17 @@
*/
package com.android.systemui.qs.external;
+import static android.service.quicksettings.TileService.START_ACTIVITY_NEEDS_PENDING_INTENT;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyString;
@@ -29,6 +35,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.compat.CompatChanges;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
@@ -59,6 +66,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
+import org.mockito.MockitoSession;
@SmallTest
@RunWith(AndroidJUnit4.class)
@@ -77,11 +85,16 @@
private Handler mHandler;
private TileLifecycleManager mStateManager;
private TestContextWrapper mWrappedContext;
+ private MockitoSession mMockitoSession;
@Before
public void setUp() throws Exception {
setPackageEnabled(true);
mTileServiceComponentName = new ComponentName(mContext, "FakeTileService.class");
+ mMockitoSession = mockitoSession()
+ .initMocks(this)
+ .mockStatic(CompatChanges.class)
+ .startMocking();
// Stub.asInterface will just return itself.
when(mMockTileService.queryLocalInterface(anyString())).thenReturn(mMockTileService);
@@ -106,7 +119,13 @@
@After
public void tearDown() throws Exception {
- mThread.quit();
+ if (mMockitoSession != null) {
+ mMockitoSession.finishMocking();
+ }
+ if (mThread != null) {
+ mThread.quit();
+ }
+
mStateManager.handleDestroy();
}
@@ -290,6 +309,50 @@
verify(falseContext).unbindService(captor.getValue());
}
+ @Test
+ public void testVersionUDoesNotBindsAllowBackgroundActivity() {
+ mockChangeEnabled(START_ACTIVITY_NEEDS_PENDING_INTENT, true);
+ Context falseContext = mock(Context.class);
+ TileLifecycleManager manager = new TileLifecycleManager(mHandler, falseContext,
+ mock(IQSService.class),
+ mMockPackageManagerAdapter,
+ mMockBroadcastDispatcher,
+ mTileServiceIntent,
+ mUser);
+
+ manager.setBindService(true);
+ int flags = Context.BIND_AUTO_CREATE
+ | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE
+ | Context.BIND_WAIVE_PRIORITY;
+
+ verify(falseContext).bindServiceAsUser(any(), any(), eq(flags), any());
+ }
+
+ @Test
+ public void testVersionLessThanUBindsAllowBackgroundActivity() {
+ mockChangeEnabled(START_ACTIVITY_NEEDS_PENDING_INTENT, false);
+ Context falseContext = mock(Context.class);
+ TileLifecycleManager manager = new TileLifecycleManager(mHandler, falseContext,
+ mock(IQSService.class),
+ mMockPackageManagerAdapter,
+ mMockBroadcastDispatcher,
+ mTileServiceIntent,
+ mUser);
+
+ manager.setBindService(true);
+ int flags = Context.BIND_AUTO_CREATE
+ | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE
+ | Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS
+ | Context.BIND_WAIVE_PRIORITY;
+
+ verify(falseContext).bindServiceAsUser(any(), any(), eq(flags), any());
+ }
+
+ private void mockChangeEnabled(long changeId, boolean enabled) {
+ doReturn(enabled).when(() -> CompatChanges.isChangeEnabled(eq(changeId), anyString(),
+ any(UserHandle.class)));
+ }
+
private static class TestContextWrapper extends ContextWrapper {
private IntentFilter mLastIntentFilter;
private int mLastFlag;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingControllerTest.java
index 69f3e987..8127ccc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingControllerTest.java
@@ -107,7 +107,7 @@
mController.startCountdown(0, 0, startIntent, null);
verify(mCallback).onCountdownEnd();
- verify(startIntent).send();
+ verify(startIntent).send(any());
}
// Test that when recording is stopped, the stop intent is sent and listeners are notified.
@@ -125,7 +125,7 @@
assertFalse(mController.isStarting());
assertFalse(mController.isRecording());
- verify(stopIntent).send();
+ verify(stopIntent).send(any());
verify(mCallback).onRecordingEnd();
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt
index fa1fedb..99c79b0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/TakeScreenshotServiceTest.kt
@@ -39,7 +39,6 @@
import com.android.internal.util.ScreenshotHelper.ScreenshotRequest
import com.android.systemui.SysuiTestCase
import com.android.systemui.flags.FakeFeatureFlags
-import com.android.systemui.flags.Flags.SCREENSHOT_REQUEST_PROCESSOR
import com.android.systemui.flags.Flags.SCREENSHOT_WORK_PROFILE_POLICY
import com.android.systemui.screenshot.ScreenshotEvent.SCREENSHOT_REQUESTED_KEY_CHORD
import com.android.systemui.screenshot.ScreenshotEvent.SCREENSHOT_REQUESTED_OVERVIEW
@@ -101,7 +100,6 @@
}.`when`(requestProcessor).processAsync(/* request= */ any(), /* callback= */ any())
// Flipped in selected test cases
- flags.set(SCREENSHOT_REQUEST_PROCESSOR, false)
flags.set(SCREENSHOT_WORK_PROFILE_POLICY, false)
service.attach(
@@ -149,31 +147,6 @@
}
@Test
- fun takeScreenshot_requestProcessorEnabled() {
- flags.set(SCREENSHOT_REQUEST_PROCESSOR, true)
-
- val request = ScreenshotRequest(
- TAKE_SCREENSHOT_FULLSCREEN,
- SCREENSHOT_KEY_CHORD,
- topComponent)
-
- service.handleRequest(request, { /* onSaved */ }, callback)
-
- verify(controller, times(1)).takeScreenshotFullscreen(
- eq(topComponent),
- /* onSavedListener = */ any(),
- /* requestCallback = */ any())
-
- assertEquals("Expected one UiEvent", eventLogger.numLogs(), 1)
- val logEvent = eventLogger.get(0)
-
- assertEquals("Expected SCREENSHOT_REQUESTED UiEvent",
- logEvent.eventId, SCREENSHOT_REQUESTED_KEY_CHORD.id)
- assertEquals("Expected supplied package name",
- topComponent.packageName, eventLogger.get(0).packageName)
- }
-
- @Test
fun takeScreenshotProvidedImage() {
val bounds = Rect(50, 50, 150, 150)
val bitmap = makeHardwareBitmap(100, 100)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/WorkProfileMessageControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/WorkProfileMessageControllerTest.java
new file mode 100644
index 0000000..bd04b3c
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/WorkProfileMessageControllerTest.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.screenshot;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.testing.AndroidTestingRunner;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.util.FakeSharedPreferences;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatchers;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+public class WorkProfileMessageControllerTest {
+ private static final String DEFAULT_LABEL = "default label";
+ private static final String BADGED_DEFAULT_LABEL = "badged default label";
+ private static final String APP_LABEL = "app label";
+ private static final String BADGED_APP_LABEL = "badged app label";
+ private static final UserHandle NON_WORK_USER = UserHandle.of(0);
+ private static final UserHandle WORK_USER = UserHandle.of(10);
+
+ @Mock
+ private UserManager mUserManager;
+ @Mock
+ private PackageManager mPackageManager;
+ @Mock
+ private Context mContext;
+ @Mock
+ private WorkProfileMessageController.WorkProfileMessageDisplay mMessageDisplay;
+ @Mock
+ private Drawable mActivityIcon;
+ @Mock
+ private Drawable mBadgedActivityIcon;
+ @Mock
+ private ActivityInfo mActivityInfo;
+ @Captor
+ private ArgumentCaptor<Runnable> mRunnableArgumentCaptor;
+
+ private FakeSharedPreferences mSharedPreferences = new FakeSharedPreferences();
+
+ private WorkProfileMessageController mMessageController;
+
+ @Before
+ public void setup() throws PackageManager.NameNotFoundException {
+ MockitoAnnotations.initMocks(this);
+
+ when(mUserManager.isManagedProfile(eq(WORK_USER.getIdentifier()))).thenReturn(true);
+ when(mContext.getSharedPreferences(
+ eq(WorkProfileMessageController.SHARED_PREFERENCES_NAME),
+ eq(Context.MODE_PRIVATE))).thenReturn(mSharedPreferences);
+ when(mContext.getString(ArgumentMatchers.anyInt())).thenReturn(DEFAULT_LABEL);
+ when(mPackageManager.getUserBadgedLabel(eq(DEFAULT_LABEL), any()))
+ .thenReturn(BADGED_DEFAULT_LABEL);
+ when(mPackageManager.getUserBadgedLabel(eq(APP_LABEL), any()))
+ .thenReturn(BADGED_APP_LABEL);
+ when(mPackageManager.getActivityIcon(any(ComponentName.class)))
+ .thenReturn(mActivityIcon);
+ when(mPackageManager.getUserBadgedIcon(
+ any(), any())).thenReturn(mBadgedActivityIcon);
+ when(mPackageManager.getActivityInfo(any(),
+ any(PackageManager.ComponentInfoFlags.class))).thenReturn(mActivityInfo);
+ when(mActivityInfo.loadLabel(eq(mPackageManager))).thenReturn(APP_LABEL);
+
+ mSharedPreferences.edit().putBoolean(
+ WorkProfileMessageController.PREFERENCE_KEY, false).apply();
+
+ mMessageController = new WorkProfileMessageController(mContext, mUserManager,
+ mPackageManager);
+ }
+
+ @Test
+ public void testOnScreenshotTaken_notManaged() {
+ mMessageController.onScreenshotTaken(NON_WORK_USER, mMessageDisplay);
+
+ verify(mMessageDisplay, never())
+ .showWorkProfileMessage(any(), nullable(Drawable.class), any());
+ }
+
+ @Test
+ public void testOnScreenshotTaken_alreadyDismissed() {
+ mSharedPreferences.edit().putBoolean(
+ WorkProfileMessageController.PREFERENCE_KEY, true).apply();
+
+ mMessageController.onScreenshotTaken(WORK_USER, mMessageDisplay);
+
+ verify(mMessageDisplay, never())
+ .showWorkProfileMessage(any(), nullable(Drawable.class), any());
+ }
+
+ @Test
+ public void testOnScreenshotTaken_packageNotFound()
+ throws PackageManager.NameNotFoundException {
+ when(mPackageManager.getActivityInfo(any(),
+ any(PackageManager.ComponentInfoFlags.class))).thenThrow(
+ new PackageManager.NameNotFoundException());
+
+ mMessageController.onScreenshotTaken(WORK_USER, mMessageDisplay);
+
+ verify(mMessageDisplay).showWorkProfileMessage(
+ eq(BADGED_DEFAULT_LABEL), eq(null), any());
+ }
+
+ @Test
+ public void testOnScreenshotTaken() {
+ mMessageController.onScreenshotTaken(WORK_USER, mMessageDisplay);
+
+ verify(mMessageDisplay).showWorkProfileMessage(
+ eq(BADGED_APP_LABEL), eq(mBadgedActivityIcon), mRunnableArgumentCaptor.capture());
+
+ // Dismiss hasn't been tapped, preference untouched.
+ assertFalse(
+ mSharedPreferences.getBoolean(WorkProfileMessageController.PREFERENCE_KEY, false));
+
+ mRunnableArgumentCaptor.getValue().run();
+
+ // After dismiss has been tapped, the setting should be updated.
+ assertTrue(
+ mSharedPreferences.getBoolean(WorkProfileMessageController.PREFERENCE_KEY, false));
+ }
+}
+
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
index 53ab19c..a1e9a27 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
@@ -108,6 +108,8 @@
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel;
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBottomAreaViewModel;
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel;
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToOccludedTransitionViewModel;
import com.android.systemui.keyguard.ui.viewmodel.OccludedToLockscreenTransitionViewModel;
import com.android.systemui.media.controls.pipeline.MediaDataManager;
import com.android.systemui.media.controls.ui.KeyguardMediaController;
@@ -295,6 +297,9 @@
@Mock private AlternateBouncerInteractor mAlternateBouncerInteractor;
@Mock private DreamingToLockscreenTransitionViewModel mDreamingToLockscreenTransitionViewModel;
@Mock private OccludedToLockscreenTransitionViewModel mOccludedToLockscreenTransitionViewModel;
+ @Mock private LockscreenToDreamingTransitionViewModel mLockscreenToDreamingTransitionViewModel;
+ @Mock private LockscreenToOccludedTransitionViewModel mLockscreenToOccludedTransitionViewModel;
+
@Mock private KeyguardTransitionInteractor mKeyguardTransitionInteractor;
@Mock private CoroutineDispatcher mMainDispatcher;
@Mock private MotionEvent mDownMotionEvent;
@@ -516,6 +521,8 @@
mAlternateBouncerInteractor,
mDreamingToLockscreenTransitionViewModel,
mOccludedToLockscreenTransitionViewModel,
+ mLockscreenToDreamingTransitionViewModel,
+ mLockscreenToOccludedTransitionViewModel,
mMainDispatcher,
mKeyguardTransitionInteractor,
mDumpManager);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
index 3137aa5..4c76825 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
@@ -31,6 +31,7 @@
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.keyguard.KeyguardUnlockAnimationController
import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBouncerViewModel
import com.android.systemui.shade.NotificationShadeWindowView.InteractionEventHandler
import com.android.systemui.statusbar.LockscreenShadeTransitionController
@@ -104,6 +105,7 @@
@Mock lateinit var keyguardBouncerContainer: ViewGroup
@Mock lateinit var keyguardBouncerComponent: KeyguardBouncerComponent
@Mock lateinit var keyguardHostViewController: KeyguardHostViewController
+ @Mock lateinit var keyguardTransitionInteractor: KeyguardTransitionInteractor
private lateinit var interactionEventHandlerCaptor: ArgumentCaptor<InteractionEventHandler>
private lateinit var interactionEventHandler: InteractionEventHandler
@@ -136,7 +138,8 @@
featureFlags,
keyguardBouncerViewModel,
keyguardBouncerComponentFactory,
- alternateBouncerInteractor
+ alternateBouncerInteractor,
+ keyguardTransitionInteractor,
)
underTest.setupExpandedStatusBar()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.java
index 544b00e..d435624 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.java
@@ -41,6 +41,7 @@
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor;
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.ui.viewmodel.KeyguardBouncerViewModel;
import com.android.systemui.statusbar.DragDownHelper;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
@@ -95,6 +96,7 @@
@Mock private KeyguardBouncerComponent.Factory mKeyguardBouncerComponentFactory;
@Mock private NotificationInsetsController mNotificationInsetsController;
@Mock private AlternateBouncerInteractor mAlternateBouncerInteractor;
+ @Mock private KeyguardTransitionInteractor mKeyguardTransitionInteractor;
@Captor private ArgumentCaptor<NotificationShadeWindowView.InteractionEventHandler>
mInteractionEventHandlerCaptor;
@@ -135,7 +137,8 @@
mFeatureFlags,
mKeyguardBouncerViewModel,
mKeyguardBouncerComponentFactory,
- mAlternateBouncerInteractor
+ mAlternateBouncerInteractor,
+ mKeyguardTransitionInteractor
);
mController.setupExpandedStatusBar();
mController.setDragDownHelper(mDragDownHelper);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
index 3d11ced..702f278 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
@@ -244,6 +244,14 @@
}
@Test
+ fun testGoToLockedShadeAlwaysCreatesQSAnimationInSplitShade() {
+ enableSplitShade()
+ transitionController.goToLockedShade(null, needsQSAnimation = true)
+ verify(notificationPanelController).animateToFullShade(anyLong())
+ assertNotNull(transitionController.dragDownAnimator)
+ }
+
+ @Test
fun testDragDownAmountDoesntCallOutInLockedDownShade() {
whenever(nsslController.isInLockedDownShade).thenReturn(true)
transitionController.dragDownAmount = 10f
diff --git a/packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt
index 89402de..30c4f97 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/unfold/FoldAodAnimationControllerTest.kt
@@ -29,6 +29,7 @@
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.shade.NotificationPanelViewController
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.LightRevealScrim
import com.android.systemui.statusbar.phone.CentralSurfaces
import com.android.systemui.unfold.util.FoldableDeviceStates
@@ -73,6 +74,8 @@
@Mock lateinit var viewTreeObserver: ViewTreeObserver
+ @Mock private lateinit var commandQueue: CommandQueue
+
@Captor private lateinit var foldStateListenerCaptor: ArgumentCaptor<FoldStateListener>
private lateinit var deviceStates: FoldableDeviceStates
@@ -102,7 +105,8 @@
}
keyguardRepository = FakeKeyguardRepository()
- val keyguardInteractor = KeyguardInteractor(repository = keyguardRepository)
+ val keyguardInteractor =
+ KeyguardInteractor(repository = keyguardRepository, commandQueue = commandQueue)
// Needs to be run on the main thread
runBlocking(IMMEDIATE) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorTest.kt
index 1a2ee18..7380ca4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/UserInteractorTest.kt
@@ -43,6 +43,7 @@
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.qs.user.UserSwitchDialogController
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.telephony.data.repository.FakeTelephonyRepository
import com.android.systemui.telephony.domain.interactor.TelephonyInteractor
@@ -95,6 +96,7 @@
@Mock private lateinit var dialogShower: UserSwitchDialogController.DialogShower
@Mock private lateinit var resumeSessionReceiver: GuestResumeSessionReceiver
@Mock private lateinit var resetOrExitSessionReceiver: GuestResetOrExitSessionReceiver
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var underTest: UserInteractor
@@ -138,6 +140,7 @@
keyguardInteractor =
KeyguardInteractor(
repository = keyguardRepository,
+ commandQueue = commandQueue,
),
manager = manager,
applicationScope = testScope.backgroundScope,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt
index 5d4c1cc..46f38ed 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/StatusBarUserChipViewModelTest.kt
@@ -34,6 +34,7 @@
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.plugins.ActivityStarter
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.telephony.data.repository.FakeTelephonyRepository
import com.android.systemui.telephony.domain.interactor.TelephonyInteractor
@@ -75,6 +76,7 @@
@Mock private lateinit var uiEventLogger: UiEventLogger
@Mock private lateinit var resumeSessionReceiver: GuestResumeSessionReceiver
@Mock private lateinit var resetOrExitSessionReceiver: GuestResetOrExitSessionReceiver
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var underTest: StatusBarUserChipViewModel
@@ -241,6 +243,7 @@
keyguardInteractor =
KeyguardInteractor(
repository = keyguardRepository,
+ commandQueue = commandQueue,
),
featureFlags =
FakeFeatureFlags().apply { set(Flags.FULL_SCREEN_USER_SWITCHER, false) },
diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt
index 0efede1..1d57d0b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/user/ui/viewmodel/UserSwitcherViewModelTest.kt
@@ -34,6 +34,7 @@
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.power.data.repository.FakePowerRepository
import com.android.systemui.power.domain.interactor.PowerInteractor
+import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.telephony.data.repository.FakeTelephonyRepository
import com.android.systemui.telephony.domain.interactor.TelephonyInteractor
@@ -76,6 +77,7 @@
@Mock private lateinit var uiEventLogger: UiEventLogger
@Mock private lateinit var resumeSessionReceiver: GuestResumeSessionReceiver
@Mock private lateinit var resetOrExitSessionReceiver: GuestResetOrExitSessionReceiver
+ @Mock private lateinit var commandQueue: CommandQueue
private lateinit var underTest: UserSwitcherViewModel
@@ -142,6 +144,7 @@
keyguardInteractor =
KeyguardInteractor(
repository = keyguardRepository,
+ commandQueue = commandQueue,
),
featureFlags =
FakeFeatureFlags().apply {
@@ -170,273 +173,295 @@
}
@Test
- fun users() = testScope.runTest {
- val userInfos =
- listOf(
- UserInfo(
- /* id= */ 0,
- /* name= */ "zero",
- /* iconPath= */ "",
- /* flags= */ UserInfo.FLAG_PRIMARY or UserInfo.FLAG_ADMIN or UserInfo.FLAG_FULL,
- UserManager.USER_TYPE_FULL_SYSTEM,
- ),
- UserInfo(
- /* id= */ 1,
- /* name= */ "one",
- /* iconPath= */ "",
- /* flags= */ UserInfo.FLAG_FULL,
- UserManager.USER_TYPE_FULL_SYSTEM,
- ),
- UserInfo(
- /* id= */ 2,
- /* name= */ "two",
- /* iconPath= */ "",
- /* flags= */ UserInfo.FLAG_FULL,
- UserManager.USER_TYPE_FULL_SYSTEM,
- ),
- )
- userRepository.setUserInfos(userInfos)
- userRepository.setSelectedUserInfo(userInfos[0])
-
- val userViewModels = mutableListOf<List<UserViewModel>>()
- val job = launch(testDispatcher) { underTest.users.toList(userViewModels) }
-
- assertThat(userViewModels.last()).hasSize(3)
- assertUserViewModel(
- viewModel = userViewModels.last()[0],
- viewKey = 0,
- name = Text.Loaded("zero"),
- isSelectionMarkerVisible = true,
- )
- assertUserViewModel(
- viewModel = userViewModels.last()[1],
- viewKey = 1,
- name = Text.Loaded("one"),
- isSelectionMarkerVisible = false,
- )
- assertUserViewModel(
- viewModel = userViewModels.last()[2],
- viewKey = 2,
- name = Text.Loaded("two"),
- isSelectionMarkerVisible = false,
- )
- job.cancel()
- }
-
- @Test
- fun `maximumUserColumns - few users`() = testScope.runTest {
- setUsers(count = 2)
- val values = mutableListOf<Int>()
- val job = launch(testDispatcher) { underTest.maximumUserColumns.toList(values) }
-
- assertThat(values.last()).isEqualTo(4)
-
- job.cancel()
- }
-
- @Test
- fun `maximumUserColumns - many users`() = testScope.runTest {
- setUsers(count = 5)
- val values = mutableListOf<Int>()
- val job = launch(testDispatcher) { underTest.maximumUserColumns.toList(values) }
-
- assertThat(values.last()).isEqualTo(3)
- job.cancel()
- }
-
- @Test
- fun `isOpenMenuButtonVisible - has actions - true`() = testScope.runTest {
- setUsers(2)
-
- val isVisible = mutableListOf<Boolean>()
- val job = launch(testDispatcher) { underTest.isOpenMenuButtonVisible.toList(isVisible) }
-
- assertThat(isVisible.last()).isTrue()
- job.cancel()
- }
-
- @Test
- fun `isOpenMenuButtonVisible - no actions - false`() = testScope.runTest {
- val userInfos = setUsers(2)
- userRepository.setSelectedUserInfo(userInfos[1])
- keyguardRepository.setKeyguardShowing(true)
- whenever(manager.canAddMoreUsers(any())).thenReturn(false)
-
- val isVisible = mutableListOf<Boolean>()
- val job = launch(testDispatcher) { underTest.isOpenMenuButtonVisible.toList(isVisible) }
-
- assertThat(isVisible.last()).isFalse()
- job.cancel()
- }
-
- @Test
- fun menu() = testScope.runTest {
- val isMenuVisible = mutableListOf<Boolean>()
- val job = launch(testDispatcher) { underTest.isMenuVisible.toList(isMenuVisible) }
- assertThat(isMenuVisible.last()).isFalse()
-
- underTest.onOpenMenuButtonClicked()
- assertThat(isMenuVisible.last()).isTrue()
-
- underTest.onMenuClosed()
- assertThat(isMenuVisible.last()).isFalse()
-
- job.cancel()
- }
-
- @Test
- fun `menu actions`() = testScope.runTest {
- setUsers(2)
- val actions = mutableListOf<List<UserActionViewModel>>()
- val job = launch(testDispatcher) { underTest.menu.toList(actions) }
-
- assertThat(actions.last().map { it.viewKey })
- .isEqualTo(
+ fun users() =
+ testScope.runTest {
+ val userInfos =
listOf(
- UserActionModel.ENTER_GUEST_MODE.ordinal.toLong(),
- UserActionModel.ADD_USER.ordinal.toLong(),
- UserActionModel.ADD_SUPERVISED_USER.ordinal.toLong(),
- UserActionModel.NAVIGATE_TO_USER_MANAGEMENT.ordinal.toLong(),
+ UserInfo(
+ /* id= */ 0,
+ /* name= */ "zero",
+ /* iconPath= */ "",
+ /* flags= */ UserInfo.FLAG_PRIMARY or
+ UserInfo.FLAG_ADMIN or
+ UserInfo.FLAG_FULL,
+ UserManager.USER_TYPE_FULL_SYSTEM,
+ ),
+ UserInfo(
+ /* id= */ 1,
+ /* name= */ "one",
+ /* iconPath= */ "",
+ /* flags= */ UserInfo.FLAG_FULL,
+ UserManager.USER_TYPE_FULL_SYSTEM,
+ ),
+ UserInfo(
+ /* id= */ 2,
+ /* name= */ "two",
+ /* iconPath= */ "",
+ /* flags= */ UserInfo.FLAG_FULL,
+ UserManager.USER_TYPE_FULL_SYSTEM,
+ ),
)
- )
+ userRepository.setUserInfos(userInfos)
+ userRepository.setSelectedUserInfo(userInfos[0])
- job.cancel()
- }
+ val userViewModels = mutableListOf<List<UserViewModel>>()
+ val job = launch(testDispatcher) { underTest.users.toList(userViewModels) }
- @Test
- fun `isFinishRequested - finishes when user is switched`() = testScope.runTest {
- val userInfos = setUsers(count = 2)
- val isFinishRequested = mutableListOf<Boolean>()
- val job = launch(testDispatcher) { underTest.isFinishRequested.toList(isFinishRequested) }
- assertThat(isFinishRequested.last()).isFalse()
-
- userRepository.setSelectedUserInfo(userInfos[1])
-
- assertThat(isFinishRequested.last()).isTrue()
-
- job.cancel()
- }
-
- @Test
- fun `isFinishRequested - finishes when the screen turns off`() = testScope.runTest {
- setUsers(count = 2)
- powerRepository.setInteractive(true)
- val isFinishRequested = mutableListOf<Boolean>()
- val job = launch(testDispatcher) { underTest.isFinishRequested.toList(isFinishRequested) }
- assertThat(isFinishRequested.last()).isFalse()
-
- powerRepository.setInteractive(false)
-
- assertThat(isFinishRequested.last()).isTrue()
-
- job.cancel()
- }
-
- @Test
- fun `isFinishRequested - finishes when cancel button is clicked`() = testScope.runTest {
- setUsers(count = 2)
- powerRepository.setInteractive(true)
- val isFinishRequested = mutableListOf<Boolean>()
- val job = launch(testDispatcher) { underTest.isFinishRequested.toList(isFinishRequested) }
- assertThat(isFinishRequested.last()).isFalse()
-
- underTest.onCancelButtonClicked()
-
- assertThat(isFinishRequested.last()).isTrue()
-
- underTest.onFinished()
-
- assertThat(isFinishRequested.last()).isFalse()
-
- job.cancel()
- }
-
- @Test
- fun `guest selected -- name is exit guest`() = testScope.runTest {
- val userInfos =
- listOf(
- UserInfo(
- /* id= */ 0,
- /* name= */ "zero",
- /* iconPath= */ "",
- /* flags= */ UserInfo.FLAG_PRIMARY or UserInfo.FLAG_ADMIN or UserInfo.FLAG_FULL,
- UserManager.USER_TYPE_FULL_SYSTEM,
- ),
- UserInfo(
- /* id= */ 1,
- /* name= */ "one",
- /* iconPath= */ "",
- /* flags= */ UserInfo.FLAG_FULL,
- UserManager.USER_TYPE_FULL_GUEST,
- ),
- )
-
- userRepository.setUserInfos(userInfos)
- userRepository.setSelectedUserInfo(userInfos[1])
-
- val userViewModels = mutableListOf<List<UserViewModel>>()
- val job = launch(testDispatcher) { underTest.users.toList(userViewModels) }
-
- assertThat(userViewModels.last()).hasSize(2)
- assertUserViewModel(
- viewModel = userViewModels.last()[0],
- viewKey = 0,
- name = Text.Loaded("zero"),
- isSelectionMarkerVisible = false,
- )
- assertUserViewModel(
- viewModel = userViewModels.last()[1],
- viewKey = 1,
- name = Text.Resource(
- com.android.settingslib.R.string.guest_exit_quick_settings_button
- ),
- isSelectionMarkerVisible = true,
- )
- job.cancel()
- }
-
- @Test
- fun `guest not selected -- name is guest`() = testScope.runTest {
- val userInfos =
- listOf(
- UserInfo(
- /* id= */ 0,
- /* name= */ "zero",
- /* iconPath= */ "",
- /* flags= */ UserInfo.FLAG_PRIMARY or UserInfo.FLAG_ADMIN or UserInfo.FLAG_FULL,
- UserManager.USER_TYPE_FULL_SYSTEM,
- ),
- UserInfo(
- /* id= */ 1,
- /* name= */ "one",
- /* iconPath= */ "",
- /* flags= */ UserInfo.FLAG_FULL,
- UserManager.USER_TYPE_FULL_GUEST,
- ),
- )
-
- userRepository.setUserInfos(userInfos)
- userRepository.setSelectedUserInfo(userInfos[0])
- runCurrent()
-
- val userViewModels = mutableListOf<List<UserViewModel>>()
- val job = launch(testDispatcher) { underTest.users.toList(userViewModels) }
-
- assertThat(userViewModels.last()).hasSize(2)
- assertUserViewModel(
+ assertThat(userViewModels.last()).hasSize(3)
+ assertUserViewModel(
viewModel = userViewModels.last()[0],
viewKey = 0,
name = Text.Loaded("zero"),
isSelectionMarkerVisible = true,
- )
- assertUserViewModel(
+ )
+ assertUserViewModel(
viewModel = userViewModels.last()[1],
viewKey = 1,
name = Text.Loaded("one"),
isSelectionMarkerVisible = false,
- )
- job.cancel()
- }
+ )
+ assertUserViewModel(
+ viewModel = userViewModels.last()[2],
+ viewKey = 2,
+ name = Text.Loaded("two"),
+ isSelectionMarkerVisible = false,
+ )
+ job.cancel()
+ }
+
+ @Test
+ fun `maximumUserColumns - few users`() =
+ testScope.runTest {
+ setUsers(count = 2)
+ val values = mutableListOf<Int>()
+ val job = launch(testDispatcher) { underTest.maximumUserColumns.toList(values) }
+
+ assertThat(values.last()).isEqualTo(4)
+
+ job.cancel()
+ }
+
+ @Test
+ fun `maximumUserColumns - many users`() =
+ testScope.runTest {
+ setUsers(count = 5)
+ val values = mutableListOf<Int>()
+ val job = launch(testDispatcher) { underTest.maximumUserColumns.toList(values) }
+
+ assertThat(values.last()).isEqualTo(3)
+ job.cancel()
+ }
+
+ @Test
+ fun `isOpenMenuButtonVisible - has actions - true`() =
+ testScope.runTest {
+ setUsers(2)
+
+ val isVisible = mutableListOf<Boolean>()
+ val job = launch(testDispatcher) { underTest.isOpenMenuButtonVisible.toList(isVisible) }
+
+ assertThat(isVisible.last()).isTrue()
+ job.cancel()
+ }
+
+ @Test
+ fun `isOpenMenuButtonVisible - no actions - false`() =
+ testScope.runTest {
+ val userInfos = setUsers(2)
+ userRepository.setSelectedUserInfo(userInfos[1])
+ keyguardRepository.setKeyguardShowing(true)
+ whenever(manager.canAddMoreUsers(any())).thenReturn(false)
+
+ val isVisible = mutableListOf<Boolean>()
+ val job = launch(testDispatcher) { underTest.isOpenMenuButtonVisible.toList(isVisible) }
+
+ assertThat(isVisible.last()).isFalse()
+ job.cancel()
+ }
+
+ @Test
+ fun menu() =
+ testScope.runTest {
+ val isMenuVisible = mutableListOf<Boolean>()
+ val job = launch(testDispatcher) { underTest.isMenuVisible.toList(isMenuVisible) }
+ assertThat(isMenuVisible.last()).isFalse()
+
+ underTest.onOpenMenuButtonClicked()
+ assertThat(isMenuVisible.last()).isTrue()
+
+ underTest.onMenuClosed()
+ assertThat(isMenuVisible.last()).isFalse()
+
+ job.cancel()
+ }
+
+ @Test
+ fun `menu actions`() =
+ testScope.runTest {
+ setUsers(2)
+ val actions = mutableListOf<List<UserActionViewModel>>()
+ val job = launch(testDispatcher) { underTest.menu.toList(actions) }
+
+ assertThat(actions.last().map { it.viewKey })
+ .isEqualTo(
+ listOf(
+ UserActionModel.ENTER_GUEST_MODE.ordinal.toLong(),
+ UserActionModel.ADD_USER.ordinal.toLong(),
+ UserActionModel.ADD_SUPERVISED_USER.ordinal.toLong(),
+ UserActionModel.NAVIGATE_TO_USER_MANAGEMENT.ordinal.toLong(),
+ )
+ )
+
+ job.cancel()
+ }
+
+ @Test
+ fun `isFinishRequested - finishes when user is switched`() =
+ testScope.runTest {
+ val userInfos = setUsers(count = 2)
+ val isFinishRequested = mutableListOf<Boolean>()
+ val job =
+ launch(testDispatcher) { underTest.isFinishRequested.toList(isFinishRequested) }
+ assertThat(isFinishRequested.last()).isFalse()
+
+ userRepository.setSelectedUserInfo(userInfos[1])
+
+ assertThat(isFinishRequested.last()).isTrue()
+
+ job.cancel()
+ }
+
+ @Test
+ fun `isFinishRequested - finishes when the screen turns off`() =
+ testScope.runTest {
+ setUsers(count = 2)
+ powerRepository.setInteractive(true)
+ val isFinishRequested = mutableListOf<Boolean>()
+ val job =
+ launch(testDispatcher) { underTest.isFinishRequested.toList(isFinishRequested) }
+ assertThat(isFinishRequested.last()).isFalse()
+
+ powerRepository.setInteractive(false)
+
+ assertThat(isFinishRequested.last()).isTrue()
+
+ job.cancel()
+ }
+
+ @Test
+ fun `isFinishRequested - finishes when cancel button is clicked`() =
+ testScope.runTest {
+ setUsers(count = 2)
+ powerRepository.setInteractive(true)
+ val isFinishRequested = mutableListOf<Boolean>()
+ val job =
+ launch(testDispatcher) { underTest.isFinishRequested.toList(isFinishRequested) }
+ assertThat(isFinishRequested.last()).isFalse()
+
+ underTest.onCancelButtonClicked()
+
+ assertThat(isFinishRequested.last()).isTrue()
+
+ underTest.onFinished()
+
+ assertThat(isFinishRequested.last()).isFalse()
+
+ job.cancel()
+ }
+
+ @Test
+ fun `guest selected -- name is exit guest`() =
+ testScope.runTest {
+ val userInfos =
+ listOf(
+ UserInfo(
+ /* id= */ 0,
+ /* name= */ "zero",
+ /* iconPath= */ "",
+ /* flags= */ UserInfo.FLAG_PRIMARY or
+ UserInfo.FLAG_ADMIN or
+ UserInfo.FLAG_FULL,
+ UserManager.USER_TYPE_FULL_SYSTEM,
+ ),
+ UserInfo(
+ /* id= */ 1,
+ /* name= */ "one",
+ /* iconPath= */ "",
+ /* flags= */ UserInfo.FLAG_FULL,
+ UserManager.USER_TYPE_FULL_GUEST,
+ ),
+ )
+
+ userRepository.setUserInfos(userInfos)
+ userRepository.setSelectedUserInfo(userInfos[1])
+
+ val userViewModels = mutableListOf<List<UserViewModel>>()
+ val job = launch(testDispatcher) { underTest.users.toList(userViewModels) }
+
+ assertThat(userViewModels.last()).hasSize(2)
+ assertUserViewModel(
+ viewModel = userViewModels.last()[0],
+ viewKey = 0,
+ name = Text.Loaded("zero"),
+ isSelectionMarkerVisible = false,
+ )
+ assertUserViewModel(
+ viewModel = userViewModels.last()[1],
+ viewKey = 1,
+ name =
+ Text.Resource(
+ com.android.settingslib.R.string.guest_exit_quick_settings_button
+ ),
+ isSelectionMarkerVisible = true,
+ )
+ job.cancel()
+ }
+
+ @Test
+ fun `guest not selected -- name is guest`() =
+ testScope.runTest {
+ val userInfos =
+ listOf(
+ UserInfo(
+ /* id= */ 0,
+ /* name= */ "zero",
+ /* iconPath= */ "",
+ /* flags= */ UserInfo.FLAG_PRIMARY or
+ UserInfo.FLAG_ADMIN or
+ UserInfo.FLAG_FULL,
+ UserManager.USER_TYPE_FULL_SYSTEM,
+ ),
+ UserInfo(
+ /* id= */ 1,
+ /* name= */ "one",
+ /* iconPath= */ "",
+ /* flags= */ UserInfo.FLAG_FULL,
+ UserManager.USER_TYPE_FULL_GUEST,
+ ),
+ )
+
+ userRepository.setUserInfos(userInfos)
+ userRepository.setSelectedUserInfo(userInfos[0])
+ runCurrent()
+
+ val userViewModels = mutableListOf<List<UserViewModel>>()
+ val job = launch(testDispatcher) { underTest.users.toList(userViewModels) }
+
+ assertThat(userViewModels.last()).hasSize(2)
+ assertUserViewModel(
+ viewModel = userViewModels.last()[0],
+ viewKey = 0,
+ name = Text.Loaded("zero"),
+ isSelectionMarkerVisible = true,
+ )
+ assertUserViewModel(
+ viewModel = userViewModels.last()[1],
+ viewKey = 1,
+ name = Text.Loaded("one"),
+ isSelectionMarkerVisible = false,
+ )
+ job.cancel()
+ }
private suspend fun setUsers(count: Int): List<UserInfo> {
val userInfos =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
index c3c6975..d419095 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogImplTest.java
@@ -16,6 +16,7 @@
package com.android.systemui.volume;
+import static com.android.systemui.volume.Events.DISMISS_REASON_UNKNOWN;
import static com.android.systemui.volume.VolumeDialogControllerImpl.STREAMS;
import static junit.framework.Assert.assertEquals;
@@ -342,6 +343,15 @@
assertEquals(mDialog.mVolumeRingerMuteIconDrawableId, R.drawable.ic_volume_ringer_mute);
}
+ @Test
+ public void testDialogDismissAnimation_notifyVisibleIsNotCalledBeforeAnimation() {
+ mDialog.dismissH(DISMISS_REASON_UNKNOWN);
+ // notifyVisible(false) should not be called immediately but only after the dismiss
+ // animation has ended.
+ verify(mVolumeDialogController, times(0)).notifyVisible(false);
+ mDialog.getDialogView().animate().cancel();
+ }
+
/*
@Test
public void testContentDescriptions() {
diff --git a/packages/services/CameraExtensionsProxy/src/com/android/cameraextensions/CameraExtensionsProxyService.java b/packages/services/CameraExtensionsProxy/src/com/android/cameraextensions/CameraExtensionsProxyService.java
index f4a62f9..ee806a6 100644
--- a/packages/services/CameraExtensionsProxy/src/com/android/cameraextensions/CameraExtensionsProxyService.java
+++ b/packages/services/CameraExtensionsProxy/src/com/android/cameraextensions/CameraExtensionsProxyService.java
@@ -141,7 +141,7 @@
private static final boolean EXTENSIONS_PRESENT = checkForExtensions();
private static final String EXTENSIONS_VERSION = EXTENSIONS_PRESENT ?
(new ExtensionVersionImpl()).checkApiVersion(LATEST_VERSION) : null;
- private static final boolean LATENCY_API_SUPPORTED = checkForLatencyAPI();
+ private static final boolean ESTIMATED_LATENCY_API_SUPPORTED = checkForLatencyAPI();
private static final boolean LATENCY_IMPROVEMENTS_SUPPORTED = EXTENSIONS_PRESENT &&
(EXTENSIONS_VERSION.startsWith(LATENCY_VERSION_PREFIX));
private static final boolean ADVANCED_API_SUPPORTED = checkForAdvancedAPI();
@@ -1647,7 +1647,7 @@
@Override
public LatencyRange getEstimatedCaptureLatencyRange(
android.hardware.camera2.extension.Size outputSize) {
- if (LATENCY_API_SUPPORTED) {
+ if (ESTIMATED_LATENCY_API_SUPPORTED) {
Size sz = new Size(outputSize.width, outputSize.height);
Range<Long> latencyRange = mImageExtender.getEstimatedCaptureLatencyRange(sz);
if (latencyRange != null) {
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 1183d6b..010189a 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -33,6 +33,7 @@
import static android.view.accessibility.AccessibilityManager.CONTRAST_NOT_SET;
import static android.view.accessibility.AccessibilityManager.ShortcutType;
+import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
import static com.android.internal.accessibility.common.ShortcutConstants.CHOOSER_PACKAGE_NAME;
@@ -131,7 +132,8 @@
import com.android.internal.R;
import com.android.internal.accessibility.AccessibilityShortcutController;
-import com.android.internal.accessibility.AccessibilityShortcutController.ToggleableFrameworkFeatureInfo;
+import com.android.internal.accessibility.AccessibilityShortcutController.FrameworkFeatureInfo;
+import com.android.internal.accessibility.AccessibilityShortcutController.LaunchableFrameworkFeatureInfo;
import com.android.internal.accessibility.dialog.AccessibilityButtonChooserActivity;
import com.android.internal.accessibility.dialog.AccessibilityShortcutChooserActivity;
import com.android.internal.annotations.GuardedBy;
@@ -369,6 +371,11 @@
}
@Override
+ public void performSystemAction(int actionId) {
+ mService.getSystemActionPerformer().performSystemAction(actionId);
+ }
+
+ @Override
public boolean isTouchExplorationEnabled(@UserIdInt int userId) {
synchronized (mService.mLock) {
return mService.getUserStateLocked(userId).isTouchExplorationEnabledLocked();
@@ -1805,6 +1812,18 @@
}
}
+ private void launchAccessibilitySubSettings(int displayId, ComponentName name) {
+ final Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_DETAILS_SETTINGS);
+ final Bundle bundle = ActivityOptions.makeBasic().setLaunchDisplayId(displayId).toBundle();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra(Intent.EXTRA_COMPONENT_NAME, name.flattenToString());
+ try {
+ mContext.startActivityAsUser(intent, bundle, UserHandle.of(mCurrentUserId));
+ } catch (ActivityNotFoundException ignore) {
+ // ignore the exception
+ }
+ }
+
private void notifyAccessibilityButtonVisibilityChangedLocked(boolean available) {
final AccessibilityUserState state = getCurrentUserStateLocked();
mIsAccessibilityButtonShown = available;
@@ -2508,7 +2527,8 @@
final Display display = displays.get(i);
if (display != null) {
if (observingWindows) {
- mA11yWindowManager.startTrackingWindows(display.getDisplayId());
+ mA11yWindowManager.startTrackingWindows(display.getDisplayId(),
+ mProxyManager.isProxyed(display.getDisplayId()));
} else {
mA11yWindowManager.stopTrackingWindows(display.getDisplayId());
}
@@ -3240,7 +3260,7 @@
return;
}
// In case user assigned an accessibility framework feature to the given shortcut.
- if (performAccessibilityFrameworkFeature(targetComponentName, shortcutType)) {
+ if (performAccessibilityFrameworkFeature(displayId, targetComponentName, shortcutType)) {
return;
}
// In case user assigned an accessibility shortcut target to the given shortcut.
@@ -3255,17 +3275,24 @@
}
}
- private boolean performAccessibilityFrameworkFeature(ComponentName assignedTarget,
- @ShortcutType int shortcutType) {
- final Map<ComponentName, ToggleableFrameworkFeatureInfo> frameworkFeatureMap =
+ private boolean performAccessibilityFrameworkFeature(int displayId,
+ ComponentName assignedTarget, @ShortcutType int shortcutType) {
+ final Map<ComponentName, FrameworkFeatureInfo> frameworkFeatureMap =
AccessibilityShortcutController.getFrameworkShortcutFeaturesMap();
if (!frameworkFeatureMap.containsKey(assignedTarget)) {
return false;
}
- // Toggle the requested framework feature
- final ToggleableFrameworkFeatureInfo featureInfo = frameworkFeatureMap.get(assignedTarget);
+ final FrameworkFeatureInfo featureInfo = frameworkFeatureMap.get(assignedTarget);
final SettingStringHelper setting = new SettingStringHelper(mContext.getContentResolver(),
featureInfo.getSettingKey(), mCurrentUserId);
+
+ if (featureInfo instanceof LaunchableFrameworkFeatureInfo) {
+ logAccessibilityShortcutActivated(mContext, assignedTarget, shortcutType,
+ /* serviceEnabled= */ true);
+ launchAccessibilityFrameworkFeature(displayId, assignedTarget);
+ return true;
+ }
+
// Assuming that the default state will be to have the feature off
if (!TextUtils.equals(featureInfo.getSettingOnValue(), setting.read())) {
logAccessibilityShortcutActivated(mContext, assignedTarget, shortcutType,
@@ -3369,6 +3396,12 @@
}
}
+ private void launchAccessibilityFrameworkFeature(int displayId, ComponentName assignedTarget) {
+ if (assignedTarget.equals(ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME)) {
+ launchAccessibilitySubSettings(displayId, ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME);
+ }
+ }
+
@Override
public List<String> getAccessibilityShortcutTargets(@ShortcutType int shortcutType) {
if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) {
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
index 8af5e11..c050449e0 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
@@ -988,12 +988,15 @@
*
* @param displayId The logical display id.
*/
- public void startTrackingWindows(int displayId) {
+ public void startTrackingWindows(int displayId, boolean proxyed) {
synchronized (mLock) {
DisplayWindowsObserver observer = mDisplayWindowsObservers.get(displayId);
if (observer == null) {
observer = new DisplayWindowsObserver(displayId);
}
+ if (proxyed && !observer.mIsProxy) {
+ observer.mIsProxy = true;
+ }
if (observer.isTrackingWindowsLocked()) {
return;
}
@@ -1019,20 +1022,6 @@
}
/**
- * Starts tracking a display as belonging to a proxy. Creates the window observer if necessary.
- * @param displayId
- */
- public void startTrackingDisplayProxy(int displayId) {
- startTrackingWindows(displayId);
- synchronized (mLock) {
- DisplayWindowsObserver observer = mDisplayWindowsObservers.get(displayId);
- if (observer != null) {
- observer.mIsProxy = true;
- }
- }
- }
-
- /**
* Stops tracking a display as belonging to a proxy.
* @param displayId
*/
diff --git a/services/accessibility/java/com/android/server/accessibility/ProxyManager.java b/services/accessibility/java/com/android/server/accessibility/ProxyManager.java
index fcbdc4e..fed0932 100644
--- a/services/accessibility/java/com/android/server/accessibility/ProxyManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/ProxyManager.java
@@ -103,7 +103,6 @@
};
client.asBinder().linkToDeath(deathRecipient, 0);
- mA11yWindowManager.startTrackingDisplayProxy(displayId);
// Notify apps that the service state has changed.
// A11yManager#A11yServicesStateChangeListener
synchronized (mLock) {
diff --git a/services/api/current.txt b/services/api/current.txt
index b173726..aab6a6c 100644
--- a/services/api/current.txt
+++ b/services/api/current.txt
@@ -146,6 +146,7 @@
method public boolean isRequestLegacyExternalStorage();
method public boolean isRequiredForAllUsers();
method public boolean isResetEnabledSettingsOnAppDataCleared();
+ method public boolean isResourceOverlay();
method public boolean isRestoreAnyVersion();
method public boolean isSignedWithPlatformKey();
method public boolean isSupportsExtraLargeScreens();
@@ -180,12 +181,14 @@
method @Nullable public String getSecondaryCpuAbi();
method @NonNull public com.android.server.pm.pkg.PackageUserState getStateForUser(@NonNull android.os.UserHandle);
method @NonNull public java.util.List<com.android.server.pm.pkg.SharedLibrary> getUsesLibraries();
+ method public boolean isApex();
method public boolean isPrivileged();
method public boolean isSystem();
method public boolean isUpdatedSystemApp();
}
public interface PackageUserState {
+ method public long getFirstInstallTimeMillis();
method public boolean isInstalled();
}
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 8baae53a..bce8812 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -588,12 +588,6 @@
}
}
- if (onClickIntent != null) {
- views.setOnClickPendingIntent(android.R.id.background,
- PendingIntent.getActivity(mContext, 0, onClickIntent,
- PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
- }
-
Icon icon = appInfo.icon != 0
? Icon.createWithResource(appInfo.packageName, appInfo.icon)
: Icon.createWithResource(mContext, android.R.drawable.sym_def_app_icon);
@@ -605,6 +599,12 @@
for (int j = 0; j < widgetCount; j++) {
Widget widget = provider.widgets.get(j);
if (targetWidget != null && targetWidget != widget) continue;
+ if (onClickIntent != null) {
+ views.setOnClickPendingIntent(android.R.id.background,
+ PendingIntent.getActivity(mContext, widget.appWidgetId, onClickIntent,
+ PendingIntent.FLAG_UPDATE_CURRENT
+ | PendingIntent.FLAG_IMMUTABLE));
+ }
if (widget.replaceWithMaskedViewsLocked(views)) {
scheduleNotifyUpdateAppWidgetLocked(widget, widget.getEffectiveViewsLocked());
}
diff --git a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java
index 41b62e6..1e96324 100644
--- a/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java
+++ b/services/companion/java/com/android/server/companion/presence/CompanionDevicePresenceMonitor.java
@@ -281,6 +281,7 @@
mConnectedBtDevices.remove(id);
mNearbyBleDevices.remove(id);
mReportedSelfManagedDevices.remove(id);
+ mSimulated.remove(id);
// Do NOT call mCallback.onDeviceDisappeared()!
// CompanionDeviceManagerService will know that the association is removed, and will do
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 4d53b48..17b6f5d 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -158,8 +158,8 @@
"android.hardware.health-translate-java",
"android.hardware.light-V1-java",
"android.hardware.tv.cec-V1.1-java",
- "android.hardware.tv.cec-V1-java",
- "android.hardware.tv.hdmi-V1-java",
+ "android.hardware.tv.hdmi.cec-V1-java",
+ "android.hardware.tv.hdmi.connection-V1-java",
"android.hardware.weaver-V1.0-java",
"android.hardware.weaver-V2-java",
"android.hardware.biometrics.face-V1.0-java",
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index 5f5327d..f101e73 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -375,10 +375,15 @@
int deviceOwnerUserId, String deviceOwner, SparseArray<String> profileOwners);
/**
- * Marks packages as protected for a given user or all users in case of USER_ALL.
+ * Marks packages as protected for a given user or all users in case of USER_ALL. Setting
+ * {@code packageNames} to {@code null} means unset all existing protected packages for the
+ * given user.
+ *
+ * <p> Note that setting it if set for a specific user, it takes precedence over the packages
+ * set globally using USER_ALL.
*/
public abstract void setOwnerProtectedPackages(
- @UserIdInt int userId, @NonNull List<String> packageNames);
+ @UserIdInt int userId, @Nullable List<String> packageNames);
/**
* Returns {@code true} if a given package can't be wiped. Otherwise, returns {@code false}.
diff --git a/services/core/java/com/android/server/AccessibilityManagerInternal.java b/services/core/java/com/android/server/AccessibilityManagerInternal.java
index faa45ca..e26e9f6 100644
--- a/services/core/java/com/android/server/AccessibilityManagerInternal.java
+++ b/services/core/java/com/android/server/AccessibilityManagerInternal.java
@@ -50,6 +50,9 @@
IRemoteAccessibilityInputConnection remoteAccessibilityInputConnection,
EditorInfo editorInfo, boolean restarting);
+ /** Trigger a system action with the provided {@code actionId}. */
+ public abstract void performSystemAction(int actionId);
+
/**
* Queries whether touch-exploration mode is enabled or not for the specified user.
*
@@ -86,6 +89,10 @@
public boolean isTouchExplorationEnabled(int userId) {
return false;
}
+
+ @Override
+ public void performSystemAction(int actionId) {
+ }
};
/**
diff --git a/services/core/java/com/android/server/BinaryTransparencyService.java b/services/core/java/com/android/server/BinaryTransparencyService.java
index ff6fd4b..819c948 100644
--- a/services/core/java/com/android/server/BinaryTransparencyService.java
+++ b/services/core/java/com/android/server/BinaryTransparencyService.java
@@ -35,6 +35,7 @@
import android.content.pm.ModuleInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManagerInternal;
import android.content.pm.ParceledListSlice;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.Signature;
@@ -76,6 +77,7 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
/**
@@ -127,6 +129,7 @@
private String mVbmetaDigest;
// the system time (in ms) the last measurement was taken
private long mMeasurementsLastRecordedMs;
+ private PackageManagerInternal mPackageManagerInternal;
/**
* Guards whether or not measurements of MBA to be performed. When this change is enabled,
@@ -862,6 +865,7 @@
boolean printLibraries = false;
boolean useSha256 = false;
boolean printHeaders = true;
+ boolean preloadsOnly = false;
String opt;
while ((opt = getNextOption()) != null) {
switch (opt) {
@@ -879,6 +883,9 @@
case "--no-headers":
printHeaders = false;
break;
+ case "--preloads-only":
+ preloadsOnly = true;
+ break;
default:
pw.println("ERROR: Unknown option: " + opt);
return 1;
@@ -886,7 +893,47 @@
}
if (!verbose && printHeaders) {
- printHeadersHelper("MBA", useSha256, pw);
+ if (preloadsOnly) {
+ printHeadersHelper("Preload", useSha256, pw);
+ } else {
+ printHeadersHelper("MBA", useSha256, pw);
+ }
+ }
+
+ PackageManager pm = mContext.getPackageManager();
+ for (PackageInfo packageInfo : pm.getInstalledPackages(
+ PackageManager.PackageInfoFlags.of(PackageManager.MATCH_FACTORY_ONLY
+ | PackageManager.GET_SIGNING_CERTIFICATES))) {
+ if (packageInfo.signingInfo == null) {
+ PackageInfo origPackageInfo = packageInfo;
+ try {
+ pm.getPackageInfo(packageInfo.packageName,
+ PackageManager.PackageInfoFlags.of(PackageManager.MATCH_ALL
+ | PackageManager.GET_SIGNING_CERTIFICATES));
+ } catch (PackageManager.NameNotFoundException e) {
+ Slog.e(TAG, "Failed to obtain an updated PackageInfo of "
+ + origPackageInfo.packageName);
+ packageInfo = origPackageInfo;
+ }
+ }
+
+ if (verbose && printHeaders) {
+ printHeadersHelper("Preload", useSha256, pw);
+ }
+ pw.print(packageInfo.packageName + ",");
+ pw.print(packageInfo.getLongVersionCode() + ",");
+ printPackageMeasurements(packageInfo, useSha256, pw);
+
+ if (verbose) {
+ printAppDetails(packageInfo, printLibraries, pw);
+ printPackageInstallationInfo(packageInfo, useSha256, pw);
+ printPackageSignerDetails(packageInfo.signingInfo, pw);
+ pw.println("");
+ }
+ }
+
+ if (preloadsOnly) {
+ return 0;
}
for (PackageInfo packageInfo : getNewlyInstalledMbas()) {
if (verbose && printHeaders) {
@@ -906,25 +953,6 @@
return 0;
}
- // TODO(b/259347186): add option handling full file-based SHA256 digest
- private int printAllPreloads() {
- final PrintWriter pw = getOutPrintWriter();
-
- PackageManager pm = mContext.getPackageManager();
- if (pm == null) {
- Slog.e(TAG, "Failed to obtain PackageManager.");
- return -1;
- }
- List<PackageInfo> factoryApps = pm.getInstalledPackages(
- PackageManager.PackageInfoFlags.of(PackageManager.MATCH_FACTORY_ONLY));
-
- pw.println("Preload Info [Format: package_name]");
- for (PackageInfo packageInfo : factoryApps) {
- pw.println(packageInfo.packageName);
- }
- return 0;
- }
-
@Override
public int onCommand(String cmd) {
if (cmd == null) {
@@ -949,8 +977,6 @@
return printAllModules();
case "mba_info":
return printAllMbas();
- case "preload_info":
- return printAllPreloads();
default:
pw.println(String.format("ERROR: Unknown info type '%s'",
infoType));
@@ -978,7 +1004,7 @@
+ "APEX hashes. WARNING: This can be a very slow and CPU-intensive "
+ "computation.");
pw.println(" -v: lists more verbose information about each APEX.");
- pw.println(" --no-headers: does not print the header if specified");
+ pw.println(" --no-headers: does not print the header if specified.");
pw.println("");
pw.println(" get module_info [-o] [-v] [--no-headers]");
pw.println(" Print information about installed modules on device.");
@@ -986,9 +1012,9 @@
+ "module hashes. WARNING: This can be a very slow and "
+ "CPU-intensive computation.");
pw.println(" -v: lists more verbose information about each module.");
- pw.println(" --no-headers: does not print the header if specified");
+ pw.println(" --no-headers: does not print the header if specified.");
pw.println("");
- pw.println(" get mba_info [-o] [-v] [-l] [--no-headers]");
+ pw.println(" get mba_info [-o] [-v] [-l] [--no-headers] [--preloads-only]");
pw.println(" Print information about installed mobile bundle apps "
+ "(MBAs on device).");
pw.println(" -o: also uses the old digest scheme (SHA256) to compute "
@@ -997,7 +1023,9 @@
pw.println(" -v: lists more verbose information about each app.");
pw.println(" -l: lists shared library info. (This option only works "
+ "when -v option is also specified)");
- pw.println(" --no-headers: does not print the header if specified");
+ pw.println(" --no-headers: does not print the header if specified.");
+ pw.println(" --preloads-only: lists only preloaded apps. This options can "
+ + "also be combined with others.");
pw.println("");
}
@@ -1016,6 +1044,7 @@
mServiceImpl = new BinaryTransparencyServiceImpl();
mVbmetaDigest = VBMETA_DIGEST_UNINITIALIZED;
mMeasurementsLastRecordedMs = 0;
+ mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
}
/**
@@ -1030,6 +1059,38 @@
} catch (Throwable t) {
Slog.e(TAG, "Failed to start BinaryTransparencyService.", t);
}
+
+ // register a package observer to detect updates to preloads
+ mPackageManagerInternal.getPackageList(new PackageManagerInternal.PackageListObserver() {
+ @Override
+ public void onPackageAdded(String packageName, int uid) {
+
+ }
+
+ @Override
+ public void onPackageChanged(String packageName, int uid) {
+ // check if the updated package is a preloaded app.
+ PackageManager pm = mContext.getPackageManager();
+ try {
+ pm.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(
+ PackageManager.MATCH_FACTORY_ONLY));
+ } catch (PackageManager.NameNotFoundException e) {
+ // this means that this package is not a preloaded app
+ return;
+ }
+
+ Slog.d(TAG, "Preload " + packageName + " was updated. Scheduling measurement...");
+ UpdateMeasurementsJobService.scheduleBinaryMeasurements(mContext,
+ BinaryTransparencyService.this);
+ }
+
+ @Override
+ public void onPackageRemoved(String packageName, int uid) {
+
+ }
+ });
+
+ // TODO(b/264428429): Register observer for updates to APEXs.
}
/**
@@ -1059,6 +1120,8 @@
* JobService to measure all covered binaries and record result to Westworld.
*/
public static class UpdateMeasurementsJobService extends JobService {
+ private static AtomicBoolean sScheduled = new AtomicBoolean();
+ private static long sTimeLastRanMs = 0;
private static final int DO_BINARY_MEASUREMENTS_JOB_ID =
UpdateMeasurementsJobService.class.hashCode();
@@ -1085,6 +1148,8 @@
Slog.e(TAG, "Taking binary measurements was interrupted.", e);
return;
}
+ sTimeLastRanMs = System.currentTimeMillis();
+ sScheduled.set(false);
jobFinished(params, false);
}).start();
@@ -1105,16 +1170,33 @@
return;
}
+ if (sScheduled.get()) {
+ Slog.d(TAG, "A measurement job has already been scheduled.");
+ return;
+ }
+
+ long minWaitingPeriodMs = 0;
+ if (sTimeLastRanMs != 0) {
+ minWaitingPeriodMs = RECORD_MEASUREMENTS_COOLDOWN_MS
+ - (System.currentTimeMillis() - sTimeLastRanMs);
+ // bound the range of minWaitingPeriodMs in the case where > 24h has elapsed
+ minWaitingPeriodMs = Math.max(0,
+ Math.min(minWaitingPeriodMs, RECORD_MEASUREMENTS_COOLDOWN_MS));
+ Slog.d(TAG, "Scheduling the next measurement to be done at least "
+ + minWaitingPeriodMs + "ms from now.");
+ }
+
final JobInfo jobInfo = new JobInfo.Builder(DO_BINARY_MEASUREMENTS_JOB_ID,
new ComponentName(context, UpdateMeasurementsJobService.class))
.setRequiresDeviceIdle(true)
.setRequiresCharging(true)
- .setPeriodic(RECORD_MEASUREMENTS_COOLDOWN_MS)
+ .setMinimumLatency(minWaitingPeriodMs)
.build();
if (jobScheduler.schedule(jobInfo) != JobScheduler.RESULT_SUCCESS) {
Slog.e(TAG, "Failed to schedule job to measure binaries.");
return;
}
+ sScheduled.set(true);
Slog.d(TAG, TextUtils.formatSimple(
"Job %d to measure binaries was scheduled successfully.",
DO_BINARY_MEASUREMENTS_JOB_ID));
diff --git a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
index 15dfd72..a994b1d 100644
--- a/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
+++ b/services/core/java/com/android/server/am/BroadcastQueueModernImpl.java
@@ -731,6 +731,11 @@
return;
}
+ if (maybeSkipReceiver(queue, null, r, index)) {
+ mRunningColdStart = null;
+ return;
+ }
+
final ApplicationInfo info = ((ResolveInfo) receiver).activityInfo.applicationInfo;
final ComponentName component = ((ResolveInfo) receiver).activityInfo.getComponentName();
@@ -790,41 +795,53 @@
* skipped (and therefore no more work is required).
*/
private boolean maybeSkipReceiver(@NonNull BroadcastProcessQueue queue,
- @NonNull BroadcastReceiverBatch batch, @NonNull BroadcastRecord r, int index) {
+ @Nullable BroadcastReceiverBatch batch, @NonNull BroadcastRecord r, int index) {
+ final String reason = shouldSkipReceiver(queue, r, index);
+ if (reason != null) {
+ if (batch == null) {
+ enqueueFinishReceiver(queue, r, index, BroadcastRecord.DELIVERY_SKIPPED, reason);
+ } else {
+ batch.finish(r, index, BroadcastRecord.DELIVERY_SKIPPED, reason);
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Consults {@link BroadcastSkipPolicy} and the receiver process state to decide whether or
+ * not the broadcast to a receiver can be skipped.
+ */
+ private String shouldSkipReceiver(@NonNull BroadcastProcessQueue queue,
+ @NonNull BroadcastRecord r, int index) {
final int oldDeliveryState = getDeliveryState(r, index);
final ProcessRecord app = queue.app;
final Object receiver = r.receivers.get(index);
// If someone already finished this broadcast, finish immediately
if (isDeliveryStateTerminal(oldDeliveryState)) {
- batch.finish(r, index, oldDeliveryState, "already terminal state");
- return true;
+ return "already terminal state";
}
// Consider additional cases where we'd want to finish immediately
- if (app.isInFullBackup()) {
- batch.finish(r, index, BroadcastRecord.DELIVERY_SKIPPED, "isInFullBackup");
- return true;
+ if (app != null && app.isInFullBackup()) {
+ return "isInFullBackup";
}
if (mSkipPolicy.shouldSkip(r, receiver)) {
- batch.finish(r, index, BroadcastRecord.DELIVERY_SKIPPED, "mSkipPolicy");
- return true;
+ return "mSkipPolicy";
}
final Intent receiverIntent = r.getReceiverIntent(receiver);
if (receiverIntent == null) {
- batch.finish(r, index, BroadcastRecord.DELIVERY_SKIPPED, "getReceiverIntent");
- return true;
+ return "getReceiverIntent";
}
// Ignore registered receivers from a previous PID
if ((receiver instanceof BroadcastFilter)
&& ((BroadcastFilter) receiver).receiverList.pid != app.getPid()) {
- batch.finish(r, index, BroadcastRecord.DELIVERY_SKIPPED,
- "BroadcastFilter for mismatched PID");
- return true;
+ return "BroadcastFilter for mismatched PID";
}
// The receiver was not handled in this method.
- return false;
+ return null;
}
/**
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index 4c10d58b..f54e2b0 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -1860,7 +1860,10 @@
mLastCompactionStats.remove(pid);
mLastCompactionStats.put(pid, memStats);
mCompactionStatsHistory.add(memStats);
- memStats.sendStat();
+ if (!forceCompaction) {
+ // Avoid polluting field metrics with forced compactions.
+ memStats.sendStat();
+ }
break;
default:
// We likely missed adding this category, it needs to be added
diff --git a/services/core/java/com/android/server/am/OWNERS b/services/core/java/com/android/server/am/OWNERS
index da209f0..5cdcd42 100644
--- a/services/core/java/com/android/server/am/OWNERS
+++ b/services/core/java/com/android/server/am/OWNERS
@@ -41,3 +41,5 @@
# Multiuser
per-file User* = file:/MULTIUSER_OWNERS
+# Broadcasts
+per-file Broadcast* = file:/BROADCASTS_OWNERS
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 80f1321..3a40fc7 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -1723,7 +1723,7 @@
}
app.setMountMode(mountExternal);
checkSlow(startUptime, "startProcess: building args");
- if (mService.mAtmInternal.isFactoryTestProcess(app.getWindowProcessController())) {
+ if (app.getWindowProcessController().isFactoryTestProcess()) {
uid = 0;
}
int runtimeFlags = 0;
diff --git a/services/core/java/com/android/server/app/GameManagerService.java b/services/core/java/com/android/server/app/GameManagerService.java
index 46d3ff1..d195103 100644
--- a/services/core/java/com/android/server/app/GameManagerService.java
+++ b/services/core/java/com/android/server/app/GameManagerService.java
@@ -1388,10 +1388,26 @@
configOverride = new GamePackageConfiguration(packageName);
settings.setConfigOverride(packageName, configOverride);
}
-
}
GamePackageConfiguration.GameModeConfiguration internalConfig =
configOverride.getOrAddDefaultGameModeConfiguration(GameManager.GAME_MODE_CUSTOM);
+ final float scalingValueFrom = internalConfig.getScaling();
+ final int fpsValueFrom = internalConfig.getFps();
+ internalConfig.updateFromPublicGameModeConfig(gameModeConfig);
+
+ sendUserMessage(userId, WRITE_SETTINGS, EVENT_UPDATE_CUSTOM_GAME_MODE_CONFIG,
+ WRITE_DELAY_MILLIS);
+ sendUserMessage(userId, WRITE_GAME_MODE_INTERVENTION_LIST_FILE,
+ EVENT_UPDATE_CUSTOM_GAME_MODE_CONFIG, WRITE_DELAY_MILLIS /*delayMillis*/);
+
+ final int gameMode = getGameMode(packageName, userId);
+ if (gameMode == GameManager.GAME_MODE_CUSTOM) {
+ updateInterventions(packageName, gameMode, userId);
+ }
+ Slog.i(TAG, "Updated custom game mode config for package: " + packageName
+ + " with FPS=" + internalConfig.getFps() + ";Scaling="
+ + internalConfig.getScaling() + " under user " + userId);
+
int gameUid = -1;
try {
gameUid = mPackageManager.getPackageUidAsUser(packageName, userId);
@@ -1400,18 +1416,8 @@
}
FrameworkStatsLog.write(FrameworkStatsLog.GAME_MODE_CONFIGURATION_CHANGED, gameUid,
Binder.getCallingUid(), gameModeToStatsdGameMode(GameManager.GAME_MODE_CUSTOM),
- internalConfig.getScaling(), gameModeConfig.getScalingFactor(),
- internalConfig.getFps(), gameModeConfig.getFpsOverride());
- internalConfig.updateFromPublicGameModeConfig(gameModeConfig);
-
- Slog.i(TAG, "Updated custom game mode config for package: " + packageName
- + " with FPS=" + internalConfig.getFps() + ";Scaling="
- + internalConfig.getScaling() + " under user " + userId);
-
- sendUserMessage(userId, WRITE_SETTINGS, EVENT_UPDATE_CUSTOM_GAME_MODE_CONFIG,
- WRITE_DELAY_MILLIS);
- sendUserMessage(userId, WRITE_GAME_MODE_INTERVENTION_LIST_FILE,
- EVENT_UPDATE_CUSTOM_GAME_MODE_CONFIG, WRITE_DELAY_MILLIS /*delayMillis*/);
+ scalingValueFrom, gameModeConfig.getScalingFactor(),
+ fpsValueFrom, gameModeConfig.getFpsOverride());
}
/**
@@ -1762,7 +1768,9 @@
/**
* Returns the string listing all the interventions currently set to a game.
*/
+ @RequiresPermission(Manifest.permission.QUERY_ALL_PACKAGES)
public String getInterventionList(String packageName, int userId) {
+ checkPermission(Manifest.permission.QUERY_ALL_PACKAGES);
final GamePackageConfiguration packageConfig = getConfig(packageName, userId);
final StringBuilder listStrSb = new StringBuilder();
if (packageConfig == null) {
diff --git a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
index 99d6228..9fc0038 100644
--- a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
+++ b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
@@ -82,7 +82,9 @@
/*package*/ static final int VOLUME_SHAPER_SYSTEM_DUCK_ID = 1;
/*package*/ static final int VOLUME_SHAPER_SYSTEM_FADEOUT_ID = 2;
/*package*/ static final int VOLUME_SHAPER_SYSTEM_MUTE_AWAIT_CONNECTION_ID = 3;
+ /*package*/ static final int VOLUME_SHAPER_SYSTEM_STRONG_DUCK_ID = 4;
+ // ducking settings for a "normal duck" at -14dB
private static final VolumeShaper.Configuration DUCK_VSHAPE =
new VolumeShaper.Configuration.Builder()
.setId(VOLUME_SHAPER_SYSTEM_DUCK_ID)
@@ -96,6 +98,22 @@
.build();
private static final VolumeShaper.Configuration DUCK_ID =
new VolumeShaper.Configuration(VOLUME_SHAPER_SYSTEM_DUCK_ID);
+
+ // ducking settings for a "strong duck" at -35dB (attenuation factor of 0.017783)
+ private static final VolumeShaper.Configuration STRONG_DUCK_VSHAPE =
+ new VolumeShaper.Configuration.Builder()
+ .setId(VOLUME_SHAPER_SYSTEM_STRONG_DUCK_ID)
+ .setCurve(new float[] { 0.f, 1.f } /* times */,
+ new float[] { 1.f, 0.017783f } /* volumes */)
+ .setOptionFlags(VolumeShaper.Configuration.OPTION_FLAG_CLOCK_TIME)
+ .setDuration(MediaFocusControl.getFocusRampTimeMs(
+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK,
+ new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION)
+ .build()))
+ .build();
+ private static final VolumeShaper.Configuration STRONG_DUCK_ID =
+ new VolumeShaper.Configuration(VOLUME_SHAPER_SYSTEM_STRONG_DUCK_ID);
+
private static final VolumeShaper.Operation PLAY_CREATE_IF_NEEDED =
new VolumeShaper.Operation.Builder(VolumeShaper.Operation.PLAY)
.createIfNeeded()
@@ -784,11 +802,23 @@
// add the players eligible for ducking to the list, and duck them
// (if apcsToDuck is empty, this will at least mark this uid as ducked, so when
// players of the same uid start, they will be ducked by DuckingManager.checkDuck())
- mDuckingManager.duckUid(loser.getClientUid(), apcsToDuck);
+ mDuckingManager.duckUid(loser.getClientUid(), apcsToDuck, reqCausesStrongDuck(winner));
}
return true;
}
+ private boolean reqCausesStrongDuck(FocusRequester requester) {
+ if (requester.getGainRequest() != AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) {
+ return false;
+ }
+ final int reqUsage = requester.getAudioAttributes().getUsage();
+ if ((reqUsage == AudioAttributes.USAGE_ASSISTANT)
+ || (reqUsage == AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE)) {
+ return true;
+ }
+ return false;
+ }
+
@Override
public void restoreVShapedPlayers(@NonNull FocusRequester winner) {
if (DEBUG) { Log.v(TAG, "unduckPlayers: uids winner=" + winner.getClientUid()); }
@@ -1064,10 +1094,11 @@
private static final class DuckingManager {
private final HashMap<Integer, DuckedApp> mDuckers = new HashMap<Integer, DuckedApp>();
- synchronized void duckUid(int uid, ArrayList<AudioPlaybackConfiguration> apcsToDuck) {
+ synchronized void duckUid(int uid, ArrayList<AudioPlaybackConfiguration> apcsToDuck,
+ boolean requestCausesStrongDuck) {
if (DEBUG) { Log.v(TAG, "DuckingManager: duckUid() uid:"+ uid); }
if (!mDuckers.containsKey(uid)) {
- mDuckers.put(uid, new DuckedApp(uid));
+ mDuckers.put(uid, new DuckedApp(uid, requestCausesStrongDuck));
}
final DuckedApp da = mDuckers.get(uid);
for (AudioPlaybackConfiguration apc : apcsToDuck) {
@@ -1114,10 +1145,13 @@
private static final class DuckedApp {
private final int mUid;
+ /** determines whether ducking is done with DUCK_VSHAPE or STRONG_DUCK_VSHAPE */
+ private final boolean mUseStrongDuck;
private final ArrayList<Integer> mDuckedPlayers = new ArrayList<Integer>();
- DuckedApp(int uid) {
+ DuckedApp(int uid, boolean useStrongDuck) {
mUid = uid;
+ mUseStrongDuck = useStrongDuck;
}
void dump(PrintWriter pw) {
@@ -1138,9 +1172,10 @@
return;
}
try {
- sEventLogger.enqueue((new DuckEvent(apc, skipRamp)).printLog(TAG));
+ sEventLogger.enqueue((new DuckEvent(apc, skipRamp, mUseStrongDuck))
+ .printLog(TAG));
apc.getPlayerProxy().applyVolumeShaper(
- DUCK_VSHAPE,
+ mUseStrongDuck ? STRONG_DUCK_VSHAPE : DUCK_VSHAPE,
skipRamp ? PLAY_SKIP_RAMP : PLAY_CREATE_IF_NEEDED);
mDuckedPlayers.add(piid);
} catch (Exception e) {
@@ -1156,7 +1191,7 @@
sEventLogger.enqueue((new EventLogger.StringEvent("unducking piid:"
+ piid)).printLog(TAG));
apc.getPlayerProxy().applyVolumeShaper(
- DUCK_ID,
+ mUseStrongDuck ? STRONG_DUCK_ID : DUCK_ID,
VolumeShaper.Operation.REVERSE);
} catch (Exception e) {
Log.e(TAG, "Error unducking player piid:" + piid + " uid:" + mUid, e);
@@ -1309,13 +1344,17 @@
}
static final class DuckEvent extends VolumeShaperEvent {
+ final boolean mUseStrongDuck;
+
@Override
String getVSAction() {
- return "ducking";
+ return mUseStrongDuck ? "ducking (strong)" : "ducking";
}
- DuckEvent(@NonNull AudioPlaybackConfiguration apc, boolean skipRamp) {
+ DuckEvent(@NonNull AudioPlaybackConfiguration apc, boolean skipRamp, boolean useStrongDuck)
+ {
super(apc, skipRamp);
+ mUseStrongDuck = useStrongDuck;
}
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
index 9669950..a90679e 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
@@ -16,15 +16,11 @@
package com.android.server.biometrics.sensors.fingerprint.aidl;
-import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_START;
-import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_VENDOR;
-
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.TaskStackListener;
import android.content.Context;
import android.hardware.biometrics.BiometricAuthenticator;
-import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricFingerprintConstants;
import android.hardware.biometrics.BiometricFingerprintConstants.FingerprintAcquired;
import android.hardware.biometrics.BiometricManager.Authenticators;
@@ -94,7 +90,6 @@
private long mSideFpsLastAcquireStartTime;
private Runnable mAuthSuccessRunnable;
private final Clock mClock;
- private boolean mDidFinishSfps;
FingerprintAuthenticationClient(
@NonNull Context context,
@@ -204,9 +199,8 @@
@Override
protected void handleLifecycleAfterAuth(boolean authenticated) {
- if (authenticated && !mDidFinishSfps) {
+ if (authenticated) {
mCallback.onClientFinished(this, true /* success */);
- mDidFinishSfps = true;
}
}
@@ -216,13 +210,11 @@
return false;
}
- public void handleAuthenticate(
+ @Override
+ public void onAuthenticated(
BiometricAuthenticator.Identifier identifier,
boolean authenticated,
ArrayList<Byte> token) {
- if (authenticated && mSensorProps.isAnySidefpsType()) {
- Slog.i(TAG, "(sideFPS): No power press detected, sending auth");
- }
super.onAuthenticated(identifier, authenticated, token);
if (authenticated) {
mState = STATE_STOPPED;
@@ -233,74 +225,13 @@
}
@Override
- public void onAuthenticated(
- BiometricAuthenticator.Identifier identifier,
- boolean authenticated,
- ArrayList<Byte> token) {
-
- mHandler.post(
- () -> {
- long delay = 0;
- if (authenticated && mSensorProps.isAnySidefpsType()) {
- delay = isKeyguard() ? mWaitForAuthKeyguard : mWaitForAuthBp;
-
- if (mSideFpsLastAcquireStartTime != -1) {
- delay = Math.max(0,
- delay - (mClock.millis() - mSideFpsLastAcquireStartTime));
- }
-
- Slog.i(TAG, "(sideFPS) Auth succeeded, sideFps "
- + "waiting for power until: " + delay + "ms");
- }
-
- if (mHandler.hasMessages(MESSAGE_FINGER_UP)) {
- Slog.i(TAG, "Finger up detected, sending auth");
- delay = 0;
- }
-
- mAuthSuccessRunnable =
- () -> handleAuthenticate(identifier, authenticated, token);
- mHandler.postDelayed(
- mAuthSuccessRunnable,
- MESSAGE_AUTH_SUCCESS,
- delay);
- });
- }
-
- @Override
public void onAcquired(@FingerprintAcquired int acquiredInfo, int vendorCode) {
// For UDFPS, notify SysUI with acquiredInfo, so that the illumination can be turned off
// for most ACQUIRED messages. See BiometricFingerprintConstants#FingerprintAcquired
mSensorOverlays.ifUdfps(controller -> controller.onAcquired(getSensorId(), acquiredInfo));
super.onAcquired(acquiredInfo, vendorCode);
- if (mSensorProps.isAnySidefpsType()) {
- if (acquiredInfo == FINGERPRINT_ACQUIRED_START) {
- mSideFpsLastAcquireStartTime = mClock.millis();
- }
- final boolean shouldLookForVendor =
- mSkipWaitForPowerAcquireMessage == FINGERPRINT_ACQUIRED_VENDOR;
- final boolean acquireMessageMatch = acquiredInfo == mSkipWaitForPowerAcquireMessage;
- final boolean vendorMessageMatch = vendorCode == mSkipWaitForPowerVendorAcquireMessage;
- final boolean ignorePowerPress =
- acquireMessageMatch && (!shouldLookForVendor || vendorMessageMatch);
-
- if (ignorePowerPress) {
- Slog.d(TAG, "(sideFPS) onFingerUp");
- mHandler.post(() -> {
- if (mHandler.hasMessages(MESSAGE_AUTH_SUCCESS)) {
- Slog.d(TAG, "(sideFPS) skipping wait for power");
- mHandler.removeMessages(MESSAGE_AUTH_SUCCESS);
- mHandler.post(mAuthSuccessRunnable);
- } else {
- mHandler.postDelayed(() -> {
- }, MESSAGE_FINGER_UP, mFingerUpIgnoresPower);
- }
- });
- }
- }
PerformanceTracker pt = PerformanceTracker.getInstanceForSensorId(getSensorId());
pt.incrementAcquireForUser(getTargetUserId(), isCryptoOperation());
-
}
@Override
@@ -495,22 +426,5 @@
}
@Override
- public void onPowerPressed() {
- if (mSensorProps.isAnySidefpsType()) {
- Slog.i(TAG, "(sideFPS): onPowerPressed");
- mHandler.post(() -> {
- if (mDidFinishSfps) {
- return;
- }
- Slog.i(TAG, "(sideFPS): finishing auth");
- // Ignore auths after a power has been detected
- mHandler.removeMessages(MESSAGE_AUTH_SUCCESS);
- // Do not call onError() as that will send an additional callback to coex.
- mDidFinishSfps = true;
- onErrorInternal(BiometricConstants.BIOMETRIC_ERROR_POWER_PRESSED, 0, true);
- stopHalOperation();
- mSensorOverlays.hide(getSensorId());
- });
- }
- }
+ public void onPowerPressed() { }
}
diff --git a/services/core/java/com/android/server/display/DeviceStateToLayoutMap.java b/services/core/java/com/android/server/display/DeviceStateToLayoutMap.java
index fc6403d..188672a 100644
--- a/services/core/java/com/android/server/display/DeviceStateToLayoutMap.java
+++ b/services/core/java/com/android/server/display/DeviceStateToLayoutMap.java
@@ -94,6 +94,10 @@
return layout;
}
+ int size() {
+ return mLayoutMap.size();
+ }
+
/**
* Reads display-layout-configuration files to get the layouts to use for this device.
*/
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 110eb1e..d44e1dc 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -108,6 +108,7 @@
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.text.TextUtils;
+import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.EventLog;
import android.util.IntArray;
@@ -259,6 +260,13 @@
final SparseArray<Pair<IVirtualDevice, DisplayWindowPolicyController>>
mDisplayWindowPolicyControllers = new SparseArray<>();
+ /**
+ * Map of every internal primary display device {@link HighBrightnessModeMetadata}s indexed by
+ * {@link DisplayDevice#mUniqueId}.
+ */
+ public final ArrayMap<String, HighBrightnessModeMetadata> mHighBrightnessModeMetadataMap =
+ new ArrayMap<>();
+
// List of all currently registered display adapters.
private final ArrayList<DisplayAdapter> mDisplayAdapters = new ArrayList<DisplayAdapter>();
@@ -1634,7 +1642,16 @@
DisplayPowerControllerInterface dpc = mDisplayPowerControllers.get(displayId);
if (dpc != null) {
- dpc.onDisplayChanged();
+ final DisplayDevice device = display.getPrimaryDisplayDeviceLocked();
+ if (device == null) {
+ Slog.wtf(TAG, "Display Device is null in DisplayManagerService for display: "
+ + display.getDisplayIdLocked());
+ return;
+ }
+
+ final String uniqueId = device.getUniqueId();
+ HighBrightnessModeMetadata hbmMetadata = mHighBrightnessModeMetadataMap.get(uniqueId);
+ dpc.onDisplayChanged(hbmMetadata);
}
}
@@ -1692,7 +1709,15 @@
final int displayId = display.getDisplayIdLocked();
final DisplayPowerControllerInterface dpc = mDisplayPowerControllers.get(displayId);
if (dpc != null) {
- dpc.onDisplayChanged();
+ final DisplayDevice device = display.getPrimaryDisplayDeviceLocked();
+ if (device == null) {
+ Slog.wtf(TAG, "Display Device is null in DisplayManagerService for display: "
+ + display.getDisplayIdLocked());
+ return;
+ }
+ final String uniqueId = device.getUniqueId();
+ HighBrightnessModeMetadata hbmMetadata = mHighBrightnessModeMetadataMap.get(uniqueId);
+ dpc.onDisplayChanged(hbmMetadata);
}
}
@@ -2645,6 +2670,31 @@
mLogicalDisplayMapper.forEachLocked(this::addDisplayPowerControllerLocked);
}
+ private HighBrightnessModeMetadata getHighBrightnessModeMetadata(LogicalDisplay display) {
+ final DisplayDevice device = display.getPrimaryDisplayDeviceLocked();
+ if (device == null) {
+ Slog.wtf(TAG, "Display Device is null in DisplayPowerController for display: "
+ + display.getDisplayIdLocked());
+ return null;
+ }
+
+ // HBM brightness mode is only applicable to internal physical displays.
+ if (display.getDisplayInfoLocked().type != Display.TYPE_INTERNAL) {
+ return null;
+ }
+
+ final String uniqueId = device.getUniqueId();
+
+ if (mHighBrightnessModeMetadataMap.containsKey(uniqueId)) {
+ return mHighBrightnessModeMetadataMap.get(uniqueId);
+ }
+
+ // HBM Time info not present. Create a new one for this physical display.
+ HighBrightnessModeMetadata hbmInfo = new HighBrightnessModeMetadata();
+ mHighBrightnessModeMetadataMap.put(uniqueId, hbmInfo);
+ return hbmInfo;
+ }
+
@RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
private void addDisplayPowerControllerLocked(LogicalDisplay display) {
if (mPowerHandler == null) {
@@ -2660,17 +2710,23 @@
display, mSyncRoot);
final DisplayPowerControllerInterface displayPowerController;
+ // If display is internal and has a HighBrightnessModeMetadata mapping, use that.
+ // Or create a new one and use that.
+ // We also need to pass a mapping of the HighBrightnessModeTimeInfoMap to
+ // displayPowerController, so the hbm info can be correctly associated
+ // with the corresponding displaydevice.
+ HighBrightnessModeMetadata hbmMetadata = getHighBrightnessModeMetadata(display);
if (DeviceConfig.getBoolean("display_manager",
"use_newly_structured_display_power_controller", true)) {
displayPowerController = new DisplayPowerController2(
mContext, /* injector= */ null, mDisplayPowerCallbacks, mPowerHandler,
mSensorManager, mDisplayBlanker, display, mBrightnessTracker, brightnessSetting,
- () -> handleBrightnessChange(display));
+ () -> handleBrightnessChange(display), hbmMetadata);
} else {
displayPowerController = new DisplayPowerController(
mContext, /* injector= */ null, mDisplayPowerCallbacks, mPowerHandler,
mSensorManager, mDisplayBlanker, display, mBrightnessTracker, brightnessSetting,
- () -> handleBrightnessChange(display));
+ () -> handleBrightnessChange(display), hbmMetadata);
}
mDisplayPowerControllers.append(display.getDisplayIdLocked(), displayPowerController);
}
diff --git a/services/core/java/com/android/server/display/DisplayModeDirector.java b/services/core/java/com/android/server/display/DisplayModeDirector.java
index f8d6c5f..c960416 100644
--- a/services/core/java/com/android/server/display/DisplayModeDirector.java
+++ b/services/core/java/com/android/server/display/DisplayModeDirector.java
@@ -3081,10 +3081,10 @@
@Override
public boolean supportsFrameRateOverride() {
- return SurfaceFlingerProperties.enable_frame_rate_override().orElse(false)
+ return SurfaceFlingerProperties.enable_frame_rate_override().orElse(true)
&& !SurfaceFlingerProperties.frame_rate_override_for_native_rates()
- .orElse(true)
- && SurfaceFlingerProperties.frame_rate_override_global().orElse(false);
+ .orElse(false)
+ && SurfaceFlingerProperties.frame_rate_override_global().orElse(true);
}
private DisplayManager getDisplayManager() {
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 602059a..142ec68 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -388,6 +388,7 @@
private float[] mNitsRange;
private final HighBrightnessModeController mHbmController;
+ private final HighBrightnessModeMetadata mHighBrightnessModeMetadata;
private final BrightnessThrottler mBrightnessThrottler;
@@ -505,13 +506,14 @@
DisplayPowerCallbacks callbacks, Handler handler,
SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay,
BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting,
- Runnable onBrightnessChangeRunnable) {
+ Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata) {
mInjector = injector != null ? injector : new Injector();
mClock = mInjector.getClock();
mLogicalDisplay = logicalDisplay;
mDisplayId = mLogicalDisplay.getDisplayIdLocked();
mTag = "DisplayPowerController[" + mDisplayId + "]";
+ mHighBrightnessModeMetadata = hbmMetadata;
mSuspendBlockerIdUnfinishedBusiness = getSuspendBlockerUnfinishedBusinessId(mDisplayId);
mSuspendBlockerIdOnStateChanged = getSuspendBlockerOnStateChangedId(mDisplayId);
mSuspendBlockerIdProxPositive = getSuspendBlockerProxPositiveId(mDisplayId);
@@ -790,7 +792,7 @@
* Make sure DisplayManagerService.mSyncRoot is held when this is called
*/
@Override
- public void onDisplayChanged() {
+ public void onDisplayChanged(HighBrightnessModeMetadata hbmMetadata) {
final DisplayDevice device = mLogicalDisplay.getPrimaryDisplayDeviceLocked();
if (device == null) {
Slog.wtf(mTag, "Display Device is null in DisplayPowerController for display: "
@@ -812,9 +814,9 @@
mUniqueDisplayId = uniqueId;
mDisplayStatsId = mUniqueDisplayId.hashCode();
mDisplayDeviceConfig = config;
- loadFromDisplayDeviceConfig(token, info);
+ loadFromDisplayDeviceConfig(token, info, hbmMetadata);
- // Since the underlying display-device changed, we really don't know the
+ /// Since the underlying display-device changed, we really don't know the
// last command that was sent to change it's state. Lets assume it is unknown so
// that we trigger a change immediately.
mPowerState.resetScreenState();
@@ -864,7 +866,8 @@
}
}
- private void loadFromDisplayDeviceConfig(IBinder token, DisplayDeviceInfo info) {
+ private void loadFromDisplayDeviceConfig(IBinder token, DisplayDeviceInfo info,
+ HighBrightnessModeMetadata hbmMetadata) {
// All properties that depend on the associated DisplayDevice and the DDC must be
// updated here.
loadBrightnessRampRates();
@@ -877,6 +880,7 @@
mBrightnessRampIncreaseMaxTimeMillis,
mBrightnessRampDecreaseMaxTimeMillis);
}
+ mHbmController.setHighBrightnessModeMetadata(hbmMetadata);
mHbmController.resetHbmData(info.width, info.height, token, info.uniqueId,
mDisplayDeviceConfig.getHighBrightnessModeData(),
new HighBrightnessModeController.HdrBrightnessDeviceConfig() {
@@ -1961,7 +1965,7 @@
if (mAutomaticBrightnessController != null) {
mAutomaticBrightnessController.update();
}
- }, mContext);
+ }, mHighBrightnessModeMetadata, mContext);
}
private BrightnessThrottler createBrightnessThrottlerLocked() {
diff --git a/services/core/java/com/android/server/display/DisplayPowerController2.java b/services/core/java/com/android/server/display/DisplayPowerController2.java
index bb8132f3..96342f3 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController2.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController2.java
@@ -328,6 +328,7 @@
private float[] mNitsRange;
private final HighBrightnessModeController mHbmController;
+ private final HighBrightnessModeMetadata mHighBrightnessModeMetadata;
private final BrightnessThrottler mBrightnessThrottler;
@@ -432,7 +433,7 @@
DisplayPowerCallbacks callbacks, Handler handler,
SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay,
BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting,
- Runnable onBrightnessChangeRunnable) {
+ Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata) {
mInjector = injector != null ? injector : new Injector();
mClock = mInjector.getClock();
@@ -448,6 +449,7 @@
mDisplayPowerProximityStateController = mInjector.getDisplayPowerProximityStateController(
mWakelockController, mDisplayDeviceConfig, mHandler.getLooper(),
() -> updatePowerState(), mDisplayId, mSensorManager);
+ mHighBrightnessModeMetadata = hbmMetadata;
mDisplayStateController = new DisplayStateController(mDisplayPowerProximityStateController);
mTag = "DisplayPowerController2[" + mDisplayId + "]";
@@ -707,7 +709,7 @@
* Make sure DisplayManagerService.mSyncRoot lock is held when this is called
*/
@Override
- public void onDisplayChanged() {
+ public void onDisplayChanged(HighBrightnessModeMetadata hbmMetadata) {
final DisplayDevice device = mLogicalDisplay.getPrimaryDisplayDeviceLocked();
if (device == null) {
Slog.wtf(mTag, "Display Device is null in DisplayPowerController2 for display: "
@@ -721,6 +723,7 @@
final DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked();
final boolean isEnabled = mLogicalDisplay.isEnabledLocked();
final boolean isInTransition = mLogicalDisplay.isInTransitionLocked();
+
mHandler.post(() -> {
boolean changed = false;
if (mDisplayDevice != device) {
@@ -729,7 +732,7 @@
mUniqueDisplayId = uniqueId;
mDisplayStatsId = mUniqueDisplayId.hashCode();
mDisplayDeviceConfig = config;
- loadFromDisplayDeviceConfig(token, info);
+ loadFromDisplayDeviceConfig(token, info, hbmMetadata);
mDisplayPowerProximityStateController.notifyDisplayDeviceChanged(config);
// Since the underlying display-device changed, we really don't know the
@@ -778,7 +781,8 @@
}
}
- private void loadFromDisplayDeviceConfig(IBinder token, DisplayDeviceInfo info) {
+ private void loadFromDisplayDeviceConfig(IBinder token, DisplayDeviceInfo info,
+ HighBrightnessModeMetadata hbmMetadata) {
// All properties that depend on the associated DisplayDevice and the DDC must be
// updated here.
loadBrightnessRampRates();
@@ -790,6 +794,7 @@
mBrightnessRampIncreaseMaxTimeMillis,
mBrightnessRampDecreaseMaxTimeMillis);
}
+ mHbmController.setHighBrightnessModeMetadata(hbmMetadata);
mHbmController.resetHbmData(info.width, info.height, token, info.uniqueId,
mDisplayDeviceConfig.getHighBrightnessModeData(),
new HighBrightnessModeController.HdrBrightnessDeviceConfig() {
@@ -1192,7 +1197,9 @@
&& Display.isDozeState(state);
final boolean autoBrightnessEnabled = mUseAutoBrightness
&& (state == Display.STATE_ON || autoBrightnessEnabledInDoze)
- && Float.isNaN(brightnessState)
+ && (Float.isNaN(brightnessState)
+ || mBrightnessReasonTemp.getReason() == BrightnessReason.REASON_TEMPORARY
+ || mBrightnessReasonTemp.getReason() == BrightnessReason.REASON_BOOST)
&& mAutomaticBrightnessController != null;
final boolean autoBrightnessDisabledDueToDisplayOff = mUseAutoBrightness
&& !(state == Display.STATE_ON || autoBrightnessEnabledInDoze);
@@ -1740,7 +1747,7 @@
if (mAutomaticBrightnessController != null) {
mAutomaticBrightnessController.update();
}
- }, mContext);
+ }, mHighBrightnessModeMetadata, mContext);
}
private BrightnessThrottler createBrightnessThrottlerLocked() {
diff --git a/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java b/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
index e750ee2..7b019846 100644
--- a/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
+++ b/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
@@ -31,10 +31,14 @@
public interface DisplayPowerControllerInterface {
/**
- * Notified when the display is changed. We use this to apply any changes that might be needed
+ * Notified when the display is changed.
+ * We use this to apply any changes that might be needed
* when displays get swapped on foldable devices.
+ * We also pass the High brightness mode metadata like
+ * remaining time and hbm events for the corresponding
+ * physical display, to update the values correctly.
*/
- void onDisplayChanged();
+ void onDisplayChanged(HighBrightnessModeMetadata hbmInfo);
/**
* Unregisters all listeners and interrupts all running threads; halting future work.
diff --git a/services/core/java/com/android/server/display/DisplayPowerState.java b/services/core/java/com/android/server/display/DisplayPowerState.java
index f650b11..2c257a1 100644
--- a/services/core/java/com/android/server/display/DisplayPowerState.java
+++ b/services/core/java/com/android/server/display/DisplayPowerState.java
@@ -506,6 +506,8 @@
boolean valid = state != Display.STATE_UNKNOWN && !Float.isNaN(brightnessState);
boolean changed = stateChanged || backlightChanged;
if (!valid || !changed) {
+ mStateChangeInProgress = false;
+ mBacklightChangeInProgress = false;
try {
mLock.wait();
} catch (InterruptedException ex) {
diff --git a/services/core/java/com/android/server/display/HbmEvent.java b/services/core/java/com/android/server/display/HbmEvent.java
new file mode 100644
index 0000000..5675e2f
--- /dev/null
+++ b/services/core/java/com/android/server/display/HbmEvent.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.display;
+
+
+/**
+ * Represents an event in which High Brightness Mode was enabled.
+ */
+class HbmEvent {
+ private long mStartTimeMillis;
+ private long mEndTimeMillis;
+
+ HbmEvent(long startTimeMillis, long endTimeMillis) {
+ this.mStartTimeMillis = startTimeMillis;
+ this.mEndTimeMillis = endTimeMillis;
+ }
+
+ public long getStartTimeMillis() {
+ return mStartTimeMillis;
+ }
+
+ public long getEndTimeMillis() {
+ return mEndTimeMillis;
+ }
+
+ @Override
+ public String toString() {
+ return "HbmEvent: {startTimeMillis:" + mStartTimeMillis + ", endTimeMillis: "
+ + mEndTimeMillis + "}, total: "
+ + ((mEndTimeMillis - mStartTimeMillis) / 1000) + "]";
+ }
+}
diff --git a/services/core/java/com/android/server/display/HighBrightnessModeController.java b/services/core/java/com/android/server/display/HighBrightnessModeController.java
index f98c7df..2c843a4 100644
--- a/services/core/java/com/android/server/display/HighBrightnessModeController.java
+++ b/services/core/java/com/android/server/display/HighBrightnessModeController.java
@@ -105,30 +105,23 @@
private int mHbmStatsState = FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_OFF;
/**
- * If HBM is currently running, this is the start time for the current HBM session.
+ * If HBM is currently running, this is the start time and set of all events,
+ * for the current HBM session.
*/
- private long mRunningStartTimeMillis = -1;
-
- /**
- * Queue of previous HBM-events ordered from most recent to least recent.
- * Meant to store only the events that fall into the most recent
- * {@link HighBrightnessModeData#timeWindowMillis mHbmData.timeWindowMillis}.
- */
- private final ArrayDeque<HbmEvent> mEvents = new ArrayDeque<>();
-
+ private HighBrightnessModeMetadata mHighBrightnessModeMetadata = null;
HighBrightnessModeController(Handler handler, int width, int height, IBinder displayToken,
String displayUniqueId, float brightnessMin, float brightnessMax,
HighBrightnessModeData hbmData, HdrBrightnessDeviceConfig hdrBrightnessCfg,
- Runnable hbmChangeCallback, Context context) {
+ Runnable hbmChangeCallback, HighBrightnessModeMetadata hbmMetadata, Context context) {
this(new Injector(), handler, width, height, displayToken, displayUniqueId, brightnessMin,
- brightnessMax, hbmData, hdrBrightnessCfg, hbmChangeCallback, context);
+ brightnessMax, hbmData, hdrBrightnessCfg, hbmChangeCallback, hbmMetadata, context);
}
@VisibleForTesting
HighBrightnessModeController(Injector injector, Handler handler, int width, int height,
IBinder displayToken, String displayUniqueId, float brightnessMin, float brightnessMax,
HighBrightnessModeData hbmData, HdrBrightnessDeviceConfig hdrBrightnessCfg,
- Runnable hbmChangeCallback, Context context) {
+ Runnable hbmChangeCallback, HighBrightnessModeMetadata hbmMetadata, Context context) {
mInjector = injector;
mContext = context;
mClock = injector.getClock();
@@ -137,6 +130,7 @@
mBrightnessMin = brightnessMin;
mBrightnessMax = brightnessMax;
mHbmChangeCallback = hbmChangeCallback;
+ mHighBrightnessModeMetadata = hbmMetadata;
mSkinThermalStatusObserver = new SkinThermalStatusObserver(mInjector, mHandler);
mSettingsObserver = new SettingsObserver(mHandler);
mRecalcRunnable = this::recalculateTimeAllowance;
@@ -222,19 +216,22 @@
// If we are starting or ending a high brightness mode session, store the current
// session in mRunningStartTimeMillis, or the old one in mEvents.
- final boolean wasHbmDrainingAvailableTime = mRunningStartTimeMillis != -1;
+ final long runningStartTime = mHighBrightnessModeMetadata.getRunningStartTimeMillis();
+ final boolean wasHbmDrainingAvailableTime = runningStartTime != -1;
final boolean shouldHbmDrainAvailableTime = mBrightness > mHbmData.transitionPoint
&& !mIsHdrLayerPresent;
if (wasHbmDrainingAvailableTime != shouldHbmDrainAvailableTime) {
final long currentTime = mClock.uptimeMillis();
if (shouldHbmDrainAvailableTime) {
- mRunningStartTimeMillis = currentTime;
+ mHighBrightnessModeMetadata.setRunningStartTimeMillis(currentTime);
} else {
- mEvents.addFirst(new HbmEvent(mRunningStartTimeMillis, currentTime));
- mRunningStartTimeMillis = -1;
+ final HbmEvent hbmEvent = new HbmEvent(runningStartTime, currentTime);
+ mHighBrightnessModeMetadata.addHbmEvent(hbmEvent);
+ mHighBrightnessModeMetadata.setRunningStartTimeMillis(-1);
if (DEBUG) {
- Slog.d(TAG, "New HBM event: " + mEvents.peekFirst());
+ Slog.d(TAG, "New HBM event: "
+ + mHighBrightnessModeMetadata.getHbmEventQueue().peekFirst());
}
}
}
@@ -260,6 +257,10 @@
mSettingsObserver.stopObserving();
}
+ void setHighBrightnessModeMetadata(HighBrightnessModeMetadata hbmInfo) {
+ mHighBrightnessModeMetadata = hbmInfo;
+ }
+
void resetHbmData(int width, int height, IBinder displayToken, String displayUniqueId,
HighBrightnessModeData hbmData, HdrBrightnessDeviceConfig hdrBrightnessCfg) {
mWidth = width;
@@ -316,20 +317,22 @@
pw.println(" mBrightnessMax=" + mBrightnessMax);
pw.println(" remainingTime=" + calculateRemainingTime(mClock.uptimeMillis()));
pw.println(" mIsTimeAvailable= " + mIsTimeAvailable);
- pw.println(" mRunningStartTimeMillis=" + TimeUtils.formatUptime(mRunningStartTimeMillis));
+ pw.println(" mRunningStartTimeMillis="
+ + TimeUtils.formatUptime(mHighBrightnessModeMetadata.getRunningStartTimeMillis()));
pw.println(" mIsThermalStatusWithinLimit=" + mIsThermalStatusWithinLimit);
pw.println(" mIsBlockedByLowPowerMode=" + mIsBlockedByLowPowerMode);
pw.println(" width*height=" + mWidth + "*" + mHeight);
pw.println(" mEvents=");
final long currentTime = mClock.uptimeMillis();
long lastStartTime = currentTime;
- if (mRunningStartTimeMillis != -1) {
- lastStartTime = dumpHbmEvent(pw, new HbmEvent(mRunningStartTimeMillis, currentTime));
+ long runningStartTimeMillis = mHighBrightnessModeMetadata.getRunningStartTimeMillis();
+ if (runningStartTimeMillis != -1) {
+ lastStartTime = dumpHbmEvent(pw, new HbmEvent(runningStartTimeMillis, currentTime));
}
- for (HbmEvent event : mEvents) {
- if (lastStartTime > event.endTimeMillis) {
+ for (HbmEvent event : mHighBrightnessModeMetadata.getHbmEventQueue()) {
+ if (lastStartTime > event.getEndTimeMillis()) {
pw.println(" event: [normal brightness]: "
- + TimeUtils.formatDuration(lastStartTime - event.endTimeMillis));
+ + TimeUtils.formatDuration(lastStartTime - event.getEndTimeMillis()));
}
lastStartTime = dumpHbmEvent(pw, event);
}
@@ -338,12 +341,12 @@
}
private long dumpHbmEvent(PrintWriter pw, HbmEvent event) {
- final long duration = event.endTimeMillis - event.startTimeMillis;
+ final long duration = event.getEndTimeMillis() - event.getStartTimeMillis();
pw.println(" event: ["
- + TimeUtils.formatUptime(event.startTimeMillis) + ", "
- + TimeUtils.formatUptime(event.endTimeMillis) + "] ("
+ + TimeUtils.formatUptime(event.getStartTimeMillis()) + ", "
+ + TimeUtils.formatUptime(event.getEndTimeMillis()) + "] ("
+ TimeUtils.formatDuration(duration) + ")");
- return event.startTimeMillis;
+ return event.getStartTimeMillis();
}
private boolean isCurrentlyAllowed() {
@@ -372,13 +375,15 @@
// First, lets see how much time we've taken for any currently running
// session of HBM.
- if (mRunningStartTimeMillis > 0) {
- if (mRunningStartTimeMillis > currentTime) {
+ long runningStartTimeMillis = mHighBrightnessModeMetadata.getRunningStartTimeMillis();
+ if (runningStartTimeMillis > 0) {
+ if (runningStartTimeMillis > currentTime) {
Slog.e(TAG, "Start time set to the future. curr: " + currentTime
- + ", start: " + mRunningStartTimeMillis);
- mRunningStartTimeMillis = currentTime;
+ + ", start: " + runningStartTimeMillis);
+ mHighBrightnessModeMetadata.setRunningStartTimeMillis(currentTime);
+ runningStartTimeMillis = currentTime;
}
- timeAlreadyUsed = currentTime - mRunningStartTimeMillis;
+ timeAlreadyUsed = currentTime - runningStartTimeMillis;
}
if (DEBUG) {
@@ -387,18 +392,19 @@
// Next, lets iterate through the history of previous sessions and add those times.
final long windowstartTimeMillis = currentTime - mHbmData.timeWindowMillis;
- Iterator<HbmEvent> it = mEvents.iterator();
+ Iterator<HbmEvent> it = mHighBrightnessModeMetadata.getHbmEventQueue().iterator();
while (it.hasNext()) {
final HbmEvent event = it.next();
// If this event ended before the current Timing window, discard forever and ever.
- if (event.endTimeMillis < windowstartTimeMillis) {
+ if (event.getEndTimeMillis() < windowstartTimeMillis) {
it.remove();
continue;
}
- final long startTimeMillis = Math.max(event.startTimeMillis, windowstartTimeMillis);
- timeAlreadyUsed += event.endTimeMillis - startTimeMillis;
+ final long startTimeMillis = Math.max(event.getStartTimeMillis(),
+ windowstartTimeMillis);
+ timeAlreadyUsed += event.getEndTimeMillis() - startTimeMillis;
}
if (DEBUG) {
@@ -425,17 +431,18 @@
// Calculate the time at which we want to recalculate mIsTimeAvailable in case a lux or
// brightness change doesn't happen before then.
long nextTimeout = -1;
+ final ArrayDeque<HbmEvent> hbmEvents = mHighBrightnessModeMetadata.getHbmEventQueue();
if (mBrightness > mHbmData.transitionPoint) {
// if we're in high-lux now, timeout when we run out of allowed time.
nextTimeout = currentTime + remainingTime;
- } else if (!mIsTimeAvailable && mEvents.size() > 0) {
+ } else if (!mIsTimeAvailable && hbmEvents.size() > 0) {
// If we are not allowed...timeout when the oldest event moved outside of the timing
// window by at least minTime. Basically, we're calculating the soonest time we can
// get {@code timeMinMillis} back to us.
final long windowstartTimeMillis = currentTime - mHbmData.timeWindowMillis;
- final HbmEvent lastEvent = mEvents.peekLast();
+ final HbmEvent lastEvent = hbmEvents.peekLast();
final long startTimePlusMinMillis =
- Math.max(windowstartTimeMillis, lastEvent.startTimeMillis)
+ Math.max(windowstartTimeMillis, lastEvent.getStartTimeMillis())
+ mHbmData.timeMinMillis;
final long timeWhenMinIsGainedBack =
currentTime + (startTimePlusMinMillis - windowstartTimeMillis) - remainingTime;
@@ -459,9 +466,10 @@
+ ", mUnthrottledBrightness: " + mUnthrottledBrightness
+ ", mThrottlingReason: "
+ BrightnessInfo.briMaxReasonToString(mThrottlingReason)
- + ", RunningStartTimeMillis: " + mRunningStartTimeMillis
+ + ", RunningStartTimeMillis: "
+ + mHighBrightnessModeMetadata.getRunningStartTimeMillis()
+ ", nextTimeout: " + (nextTimeout != -1 ? (nextTimeout - currentTime) : -1)
- + ", events: " + mEvents);
+ + ", events: " + hbmEvents);
}
if (nextTimeout != -1) {
@@ -588,25 +596,6 @@
}
}
- /**
- * Represents an event in which High Brightness Mode was enabled.
- */
- private static class HbmEvent {
- public long startTimeMillis;
- public long endTimeMillis;
-
- HbmEvent(long startTimeMillis, long endTimeMillis) {
- this.startTimeMillis = startTimeMillis;
- this.endTimeMillis = endTimeMillis;
- }
-
- @Override
- public String toString() {
- return "[Event: {" + startTimeMillis + ", " + endTimeMillis + "}, total: "
- + ((endTimeMillis - startTimeMillis) / 1000) + "]";
- }
- }
-
@VisibleForTesting
class HdrListener extends SurfaceControlHdrLayerInfoListener {
@Override
diff --git a/services/core/java/com/android/server/display/HighBrightnessModeMetadata.java b/services/core/java/com/android/server/display/HighBrightnessModeMetadata.java
new file mode 100644
index 0000000..37234ff
--- /dev/null
+++ b/services/core/java/com/android/server/display/HighBrightnessModeMetadata.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.display;
+
+import java.util.ArrayDeque;
+
+
+/**
+ * Represents High Brightness Mode metadata associated
+ * with a specific internal physical display.
+ * Required for separately storing data like time information,
+ * and related events when display was in HBM mode per
+ * physical internal display.
+ */
+class HighBrightnessModeMetadata {
+ /**
+ * Queue of previous HBM-events ordered from most recent to least recent.
+ * Meant to store only the events that fall into the most recent
+ * {@link HighBrightnessModeData#timeWindowMillis mHbmData.timeWindowMillis}.
+ */
+ private final ArrayDeque<HbmEvent> mEvents = new ArrayDeque<>();
+
+ /**
+ * If HBM is currently running, this is the start time for the current HBM session.
+ */
+ private long mRunningStartTimeMillis = -1;
+
+ public long getRunningStartTimeMillis() {
+ return mRunningStartTimeMillis;
+ }
+
+ public void setRunningStartTimeMillis(long setTime) {
+ mRunningStartTimeMillis = setTime;
+ }
+
+ public ArrayDeque<HbmEvent> getHbmEventQueue() {
+ return mEvents;
+ }
+
+ public void addHbmEvent(HbmEvent hbmEvent) {
+ mEvents.addFirst(hbmEvent);
+ }
+}
+
diff --git a/services/core/java/com/android/server/display/LogicalDisplayMapper.java b/services/core/java/com/android/server/display/LogicalDisplayMapper.java
index da6e31511..bb342ff 100644
--- a/services/core/java/com/android/server/display/LogicalDisplayMapper.java
+++ b/services/core/java/com/android/server/display/LogicalDisplayMapper.java
@@ -405,12 +405,23 @@
void setDeviceStateLocked(int state, boolean isOverrideActive) {
Slog.i(TAG, "Requesting Transition to state: " + state + ", from state=" + mDeviceState
+ ", interactive=" + mInteractive + ", mBootCompleted=" + mBootCompleted);
+ mPendingDeviceState = state;
+
+ if (!mBootCompleted) {
+ // The boot animation might still be in progress, we do not want to switch states now
+ // as the boot animation would end up with an incorrect size.
+ if (DEBUG) {
+ Slog.d(TAG, "Postponing transition to state: " + mPendingDeviceState
+ + " until boot is completed");
+ }
+ return;
+ }
+
// As part of a state transition, we may need to turn off some displays temporarily so that
// the transition is smooth. Plus, on some devices, only one internal displays can be
// on at a time. We use LogicalDisplay.setIsInTransition to mark a display that needs to be
// temporarily turned off.
resetLayoutLocked(mDeviceState, state, /* transitionValue= */ true);
- mPendingDeviceState = state;
final boolean wakeDevice = shouldDeviceBeWoken(mPendingDeviceState, mDeviceState,
mInteractive, mBootCompleted);
final boolean sleepDevice = shouldDeviceBePutToSleep(mPendingDeviceState, mDeviceState,
@@ -457,6 +468,9 @@
void onBootCompleted() {
synchronized (mSyncRoot) {
mBootCompleted = true;
+ if (mPendingDeviceState != DeviceStateManager.INVALID_DEVICE_STATE) {
+ setDeviceStateLocked(mPendingDeviceState, /* isOverrideActive= */ false);
+ }
}
}
@@ -982,6 +996,15 @@
final int layerStack = assignLayerStackLocked(displayId);
final LogicalDisplay display = new LogicalDisplay(displayId, layerStack, device);
display.updateLocked(mDisplayDeviceRepo);
+
+ final DisplayInfo info = display.getDisplayInfoLocked();
+ if (info.type == Display.TYPE_INTERNAL && mDeviceStateToLayoutMap.size() > 1) {
+ // If this is an internal display and the device uses a display layout configuration,
+ // the display should be disabled as later we will receive a device state update, which
+ // will tell us which internal displays should be enabled and which should be disabled.
+ display.setEnabledLocked(false);
+ }
+
mLogicalDisplays.put(displayId, display);
return display;
}
diff --git a/services/core/java/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategy.java
index f8063f3..7d759ca 100644
--- a/services/core/java/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategy.java
+++ b/services/core/java/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategy.java
@@ -48,7 +48,6 @@
BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_TEMPORARY,
mTemporaryScreenBrightness,
mTemporaryScreenBrightness);
- mTemporaryScreenBrightness = Float.NaN;
return displayBrightnessState;
}
diff --git a/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java b/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java
index 11a4294..6cfe921 100644
--- a/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java
+++ b/services/core/java/com/android/server/grammaticalinflection/GrammaticalInflectionService.java
@@ -21,6 +21,7 @@
import android.app.IGrammaticalInflectionManager;
import android.content.Context;
import android.os.IBinder;
+import android.os.SystemProperties;
import com.android.server.LocalServices;
import com.android.server.SystemService;
@@ -34,6 +35,8 @@
public class GrammaticalInflectionService extends SystemService {
private final ActivityTaskManagerInternal mActivityTaskManagerInternal;
+ private static final String GRAMMATICAL_INFLECTION_ENABLED =
+ "i18n.grammatical_Inflection.enabled";
/**
* Initializes the system service.
@@ -67,6 +70,10 @@
private void setRequestedApplicationGrammaticalGender(
String appPackageName, int userId, int gender) {
+ if (!SystemProperties.getBoolean(GRAMMATICAL_INFLECTION_ENABLED, true)) {
+ return;
+ }
+
final ActivityTaskManagerInternal.PackageConfigurationUpdater updater =
mActivityTaskManagerInternal.createPackageConfigurationUpdater(appPackageName,
userId);
diff --git a/services/core/java/com/android/server/hdmi/Constants.java b/services/core/java/com/android/server/hdmi/Constants.java
index 5353092..6b5af88 100644
--- a/services/core/java/com/android/server/hdmi/Constants.java
+++ b/services/core/java/com/android/server/hdmi/Constants.java
@@ -619,6 +619,8 @@
})
@interface HpdSignalType {}
+ static final String DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE = "soundbar_mode";
+
private Constants() {
/* cannot be instantiated */
}
diff --git a/services/core/java/com/android/server/hdmi/DeviceConfigWrapper.java b/services/core/java/com/android/server/hdmi/DeviceConfigWrapper.java
new file mode 100644
index 0000000..f391897
--- /dev/null
+++ b/services/core/java/com/android/server/hdmi/DeviceConfigWrapper.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.hdmi;
+
+import android.provider.DeviceConfig;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Abstraction around {@link DeviceConfig} to allow faking DeviceConfig in tests.
+ */
+public class DeviceConfigWrapper {
+ private static final String TAG = "DeviceConfigWrapper";
+
+ boolean getBoolean(String name, boolean defaultValue) {
+ return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_HDMI_CONTROL, name, defaultValue);
+ }
+
+ void addOnPropertiesChangedListener(Executor mainExecutor,
+ DeviceConfig.OnPropertiesChangedListener onPropertiesChangedListener) {
+ DeviceConfig.addOnPropertiesChangedListener(
+ DeviceConfig.NAMESPACE_HDMI_CONTROL, mainExecutor, onPropertiesChangedListener);
+ }
+}
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecController.java b/services/core/java/com/android/server/hdmi/HdmiCecController.java
index d1354d1..ceb8785 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecController.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecController.java
@@ -19,16 +19,16 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.hardware.hdmi.HdmiPortInfo;
-import android.hardware.tv.cec.CecMessage;
-import android.hardware.tv.cec.IHdmiCec;
-import android.hardware.tv.cec.IHdmiCecCallback;
import android.hardware.tv.cec.V1_0.HotplugEvent;
import android.hardware.tv.cec.V1_0.IHdmiCec.getPhysicalAddressCallback;
import android.hardware.tv.cec.V1_0.OptionKey;
import android.hardware.tv.cec.V1_0.Result;
import android.hardware.tv.cec.V1_0.SendMessageResult;
-import android.hardware.tv.hdmi.IHdmi;
-import android.hardware.tv.hdmi.IHdmiCallback;
+import android.hardware.tv.hdmi.cec.CecMessage;
+import android.hardware.tv.hdmi.cec.IHdmiCec;
+import android.hardware.tv.hdmi.cec.IHdmiCecCallback;
+import android.hardware.tv.hdmi.connection.IHdmiConnection;
+import android.hardware.tv.hdmi.connection.IHdmiConnectionCallback;
import android.icu.util.IllformedLocaleException;
import android.icu.util.ULocale;
import android.os.Binder;
@@ -184,7 +184,7 @@
if (controller != null) {
return controller;
}
- HdmiLogger.warning("Unable to use CEC and HDMI AIDL HALs");
+ HdmiLogger.warning("Unable to use CEC and HDMI Connection AIDL HALs");
controller = createWithNativeWrapper(service, new NativeWrapperImpl11(), atomWriter);
if (controller != null) {
@@ -911,14 +911,14 @@
private static final class NativeWrapperImplAidl
implements NativeWrapper, IBinder.DeathRecipient {
private IHdmiCec mHdmiCec;
- private IHdmi mHdmi;
+ private IHdmiConnection mHdmiConnection;
@Nullable private HdmiCecCallback mCallback;
private final Object mLock = new Object();
@Override
public String nativeInit() {
- return connectToHal() ? mHdmiCec.toString() + " " + mHdmi.toString() : null;
+ return connectToHal() ? mHdmiCec.toString() + " " + mHdmiConnection.toString() : null;
}
boolean connectToHal() {
@@ -935,15 +935,15 @@
HdmiLogger.error("Couldn't link to death : ", e);
}
- mHdmi =
- IHdmi.Stub.asInterface(
- ServiceManager.getService(IHdmi.DESCRIPTOR + "/default"));
- if (mHdmi == null) {
- HdmiLogger.error("Could not initialize HDMI AIDL HAL");
+ mHdmiConnection =
+ IHdmiConnection.Stub.asInterface(
+ ServiceManager.getService(IHdmiConnection.DESCRIPTOR + "/default"));
+ if (mHdmiConnection == null) {
+ HdmiLogger.error("Could not initialize HDMI Connection AIDL HAL");
return false;
}
try {
- mHdmi.asBinder().linkToDeath(this, 0);
+ mHdmiConnection.asBinder().linkToDeath(this, 0);
} catch (RemoteException e) {
HdmiLogger.error("Couldn't link to death : ", e);
}
@@ -954,8 +954,8 @@
public void binderDied() {
// One of the services died, try to reconnect to both.
mHdmiCec.asBinder().unlinkToDeath(this, 0);
- mHdmi.asBinder().unlinkToDeath(this, 0);
- HdmiLogger.error("HDMI or CEC service died, reconnecting");
+ mHdmiConnection.asBinder().unlinkToDeath(this, 0);
+ HdmiLogger.error("HDMI Connection or CEC service died, reconnecting");
connectToHal();
// Reconnect the callback
if (mCallback != null) {
@@ -974,7 +974,7 @@
}
try {
// Create an AIDL callback that can callback onHotplugEvent
- mHdmi.setCallback(new HdmiCallbackAidl(callback));
+ mHdmiConnection.setCallback(new HdmiConnectionCallbackAidl(callback));
} catch (RemoteException e) {
HdmiLogger.error("Couldn't initialise tv.hdmi callback : ", e);
}
@@ -1091,10 +1091,11 @@
@Override
public HdmiPortInfo[] nativeGetPortInfos() {
try {
- android.hardware.tv.hdmi.HdmiPortInfo[] hdmiPortInfos = mHdmi.getPortInfo();
+ android.hardware.tv.hdmi.connection.HdmiPortInfo[] hdmiPortInfos =
+ mHdmiConnection.getPortInfo();
HdmiPortInfo[] hdmiPortInfo = new HdmiPortInfo[hdmiPortInfos.length];
int i = 0;
- for (android.hardware.tv.hdmi.HdmiPortInfo portInfo : hdmiPortInfos) {
+ for (android.hardware.tv.hdmi.connection.HdmiPortInfo portInfo : hdmiPortInfos) {
hdmiPortInfo[i] =
new HdmiPortInfo(
portInfo.portId,
@@ -1116,7 +1117,7 @@
@Override
public boolean nativeIsConnected(int port) {
try {
- return mHdmi.isConnected(port);
+ return mHdmiConnection.isConnected(port);
} catch (RemoteException e) {
HdmiLogger.error("Failed to get connection info : ", e);
return false;
@@ -1624,10 +1625,10 @@
}
}
- private static final class HdmiCallbackAidl extends IHdmiCallback.Stub {
+ private static final class HdmiConnectionCallbackAidl extends IHdmiConnectionCallback.Stub {
private final HdmiCecCallback mHdmiCecCallback;
- HdmiCallbackAidl(HdmiCecCallback hdmiCecCallback) {
+ HdmiConnectionCallbackAidl(HdmiCecCallback hdmiCecCallback) {
mHdmiCecCallback = hdmiCecCallback;
}
@@ -1638,12 +1639,12 @@
@Override
public synchronized String getInterfaceHash() throws android.os.RemoteException {
- return IHdmiCallback.Stub.HASH;
+ return IHdmiConnectionCallback.Stub.HASH;
}
@Override
public int getInterfaceVersion() throws android.os.RemoteException {
- return IHdmiCallback.Stub.VERSION;
+ return IHdmiConnectionCallback.Stub.VERSION;
}
}
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index f66f8ea..f6566d8 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -86,6 +86,7 @@
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.provider.DeviceConfig;
import android.provider.Settings.Global;
import android.sysprop.HdmiProperties;
import android.text.TextUtils;
@@ -450,6 +451,9 @@
private boolean mWakeUpMessageReceived = false;
@ServiceThreadOnly
+ private boolean mSoundbarModeFeatureFlagEnabled = false;
+
+ @ServiceThreadOnly
private int mActivePortId = Constants.INVALID_PORT_ID;
// Set to true while the input change by MHL is allowed.
@@ -471,6 +475,9 @@
private TvInputManager mTvInputManager;
@Nullable
+ private DeviceConfigWrapper mDeviceConfig;
+
+ @Nullable
private PowerManagerWrapper mPowerManager;
@Nullable
@@ -525,6 +532,7 @@
mCecLocalDevices = deviceTypes;
mSettingsObserver = new SettingsObserver(mHandler);
mHdmiCecConfig = new HdmiCecConfig(context);
+ mDeviceConfig = new DeviceConfigWrapper();
mAudioDeviceVolumeManager = audioDeviceVolumeManager;
}
@@ -533,6 +541,7 @@
mCecLocalDevices = readDeviceTypes();
mSettingsObserver = new SettingsObserver(mHandler);
mHdmiCecConfig = new HdmiCecConfig(context);
+ mDeviceConfig = new DeviceConfigWrapper();
}
@VisibleForTesting
@@ -763,14 +772,6 @@
}
}
}, mServiceThreadExecutor);
- mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE,
- new HdmiCecConfig.SettingChangeListener() {
- @Override
- public void onChange(String setting) {
- setSoundbarMode(mHdmiCecConfig.getIntValue(
- HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE));
- }
- }, mServiceThreadExecutor);
mHdmiCecConfig.registerChangeListener(
HdmiControlManager.CEC_SETTING_NAME_SYSTEM_AUDIO_CONTROL,
new HdmiCecConfig.SettingChangeListener() {
@@ -819,9 +820,38 @@
HdmiControlManager.SETTING_NAME_EARC_ENABLED);
setEarcEnabled(enabled);
}
+ },
+ mServiceThreadExecutor);
+
+ mSoundbarModeFeatureFlagEnabled = mDeviceConfig.getBoolean(
+ Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE, false);
+
+ mDeviceConfig.addOnPropertiesChangedListener(getContext().getMainExecutor(),
+ new DeviceConfig.OnPropertiesChangedListener() {
+ @Override
+ public void onPropertiesChanged(DeviceConfig.Properties properties) {
+ mSoundbarModeFeatureFlagEnabled = properties.getBoolean(
+ Constants.DEVICE_CONFIG_FEATURE_FLAG_SOUNDBAR_MODE,
+ false);
+ boolean soundbarModeSetting = mHdmiCecConfig.getIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE)
+ == SOUNDBAR_MODE_ENABLED;
+ setSoundbarMode(soundbarModeSetting && mSoundbarModeFeatureFlagEnabled
+ ? SOUNDBAR_MODE_ENABLED : SOUNDBAR_MODE_DISABLED);
+ }
+ });
+ mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE,
+ new HdmiCecConfig.SettingChangeListener() {
+ @Override
+ public void onChange(String setting) {
+ boolean soundbarModeSetting = mHdmiCecConfig.getIntValue(
+ HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE)
+ == SOUNDBAR_MODE_ENABLED;
+ setSoundbarMode(soundbarModeSetting && mSoundbarModeFeatureFlagEnabled
+ ? SOUNDBAR_MODE_ENABLED : SOUNDBAR_MODE_DISABLED);
+ }
}, mServiceThreadExecutor);
}
-
/** Returns true if the device screen is off */
boolean isScreenOff() {
return mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY).getState() == Display.STATE_OFF;
@@ -920,6 +950,11 @@
}
@VisibleForTesting
+ void setDeviceConfig(DeviceConfigWrapper deviceConfig) {
+ mDeviceConfig = deviceConfig;
+ }
+
+ @VisibleForTesting
void setPowerManager(PowerManagerWrapper powerManager) {
mPowerManager = powerManager;
}
@@ -929,6 +964,10 @@
mPowerManagerInternal = powerManagerInternal;
}
+ DeviceConfigWrapper getDeviceConfig() {
+ return mDeviceConfig;
+ }
+
PowerManagerWrapper getPowerManager() {
return mPowerManager;
}
@@ -1151,7 +1190,8 @@
if (mHdmiCecConfig.getIntValue(HdmiControlManager.CEC_SETTING_NAME_SOUNDBAR_MODE)
== SOUNDBAR_MODE_ENABLED
&& !allLocalDeviceTypes.contains(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM)
- && SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true)) {
+ && SystemProperties.getBoolean(Constants.PROPERTY_ARC_SUPPORT, true)
+ && mSoundbarModeFeatureFlagEnabled) {
allLocalDeviceTypes.add(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM);
}
return allLocalDeviceTypes;
diff --git a/services/core/java/com/android/server/input/InputManagerInternal.java b/services/core/java/com/android/server/input/InputManagerInternal.java
index 30f6145..ca42614 100644
--- a/services/core/java/com/android/server/input/InputManagerInternal.java
+++ b/services/core/java/com/android/server/input/InputManagerInternal.java
@@ -206,4 +206,11 @@
* @param inputPort The port of the input device.
*/
public abstract void removeKeyboardLayoutAssociation(@NonNull String inputPort);
+
+ /**
+ * Set whether stylus button reporting through motion events should be enabled.
+ *
+ * @param enabled When true, stylus buttons will not be reported through motion events.
+ */
+ public abstract void setStylusButtonMotionEventsEnabled(boolean enabled);
}
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 8dc2f52..ea7f0bb 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -3383,6 +3383,11 @@
public void removeKeyboardLayoutAssociation(@NonNull String inputPort) {
InputManagerService.this.removeKeyboardLayoutAssociation(inputPort);
}
+
+ @Override
+ public void setStylusButtonMotionEventsEnabled(boolean enabled) {
+ mNative.setStylusButtonMotionEventsEnabled(enabled);
+ }
}
@Override
diff --git a/services/core/java/com/android/server/input/KeyRemapper.java b/services/core/java/com/android/server/input/KeyRemapper.java
index 950e094..7ba7769 100644
--- a/services/core/java/com/android/server/input/KeyRemapper.java
+++ b/services/core/java/com/android/server/input/KeyRemapper.java
@@ -21,6 +21,8 @@
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.util.ArrayMap;
+import android.util.FeatureFlagUtils;
import android.view.InputDevice;
import com.android.internal.annotations.GuardedBy;
@@ -65,16 +67,25 @@
}
public void remapKey(int fromKey, int toKey) {
+ if (!supportRemapping()) {
+ return;
+ }
Message msg = Message.obtain(mHandler, MSG_REMAP_KEY, fromKey, toKey);
mHandler.sendMessage(msg);
}
public void clearAllKeyRemappings() {
+ if (!supportRemapping()) {
+ return;
+ }
Message msg = Message.obtain(mHandler, MSG_CLEAR_ALL_REMAPPING);
mHandler.sendMessage(msg);
}
public Map<Integer, Integer> getKeyRemapping() {
+ if (!supportRemapping()) {
+ return new ArrayMap<>();
+ }
synchronized (mDataStore) {
return mDataStore.getKeyRemapping();
}
@@ -124,6 +135,9 @@
@Override
public void onInputDeviceAdded(int deviceId) {
+ if (!supportRemapping()) {
+ return;
+ }
InputManager inputManager = Objects.requireNonNull(
mContext.getSystemService(InputManager.class));
InputDevice inputDevice = inputManager.getInputDevice(deviceId);
@@ -158,4 +172,9 @@
}
return false;
}
+
+ private boolean supportRemapping() {
+ return FeatureFlagUtils.isEnabled(mContext,
+ FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_MODIFIER_KEY);
+ }
}
diff --git a/services/core/java/com/android/server/input/NativeInputManagerService.java b/services/core/java/com/android/server/input/NativeInputManagerService.java
index 157c957..6fca9cc 100644
--- a/services/core/java/com/android/server/input/NativeInputManagerService.java
+++ b/services/core/java/com/android/server/input/NativeInputManagerService.java
@@ -213,6 +213,9 @@
/** Get the bluetooth address of an input device if known, otherwise return null. */
String getBluetoothAddress(int deviceId);
+ /** Set whether stylus button reporting through motion events should be enabled. */
+ void setStylusButtonMotionEventsEnabled(boolean enabled);
+
/** The native implementation of InputManagerService methods. */
class NativeImpl implements NativeInputManagerService {
/** Pointer to native input manager service object, used by native code. */
@@ -439,5 +442,8 @@
@Override
public native String getBluetoothAddress(int deviceId);
+
+ @Override
+ public native void setStylusButtonMotionEventsEnabled(boolean enabled);
}
}
diff --git a/services/core/java/com/android/server/location/contexthub/IContextHubWrapper.java b/services/core/java/com/android/server/location/contexthub/IContextHubWrapper.java
index f55ae6e..3581b02 100644
--- a/services/core/java/com/android/server/location/contexthub/IContextHubWrapper.java
+++ b/services/core/java/com/android/server/location/contexthub/IContextHubWrapper.java
@@ -438,6 +438,11 @@
mCallback.handleTransactionResult(transactionId, success);
});
}
+
+ public void handleNanSessionRequest(boolean enable) {
+ // TODO(229888878): Implement
+ }
+
@Override
public String getInterfaceHash() {
return android.hardware.contexthub.IContextHubCallback.HASH;
diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
index 4d525da..9b42cfc 100644
--- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
+++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
@@ -36,6 +36,7 @@
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
+import android.net.NetworkRequest;
import android.os.Handler;
import android.os.PowerManager;
import android.os.SystemClock;
@@ -103,12 +104,12 @@
/**
* Number of boots until we consider the escrow data to be stale for the purposes of metrics.
- * <p>
- * If the delta between the current boot number and the boot number stored when the mechanism
+ *
+ * <p>If the delta between the current boot number and the boot number stored when the mechanism
* was armed is under this number and the escrow mechanism fails, we report it as a failure of
* the mechanism.
- * <p>
- * If the delta over this number and escrow fails, we will not report the metric as failed
+ *
+ * <p>If the delta over this number and escrow fails, we will not report the metric as failed
* since there most likely was some other issue if the device rebooted several times before
* getting to the escrow restore code.
*/
@@ -120,8 +121,11 @@
*/
private static final int DEFAULT_LOAD_ESCROW_DATA_RETRY_COUNT = 3;
private static final int DEFAULT_LOAD_ESCROW_DATA_RETRY_INTERVAL_SECONDS = 30;
+
// 3 minutes. It's enough for the default 3 retries with 30 seconds interval
- private static final int DEFAULT_WAKE_LOCK_TIMEOUT_MILLIS = 180_000;
+ private static final int DEFAULT_LOAD_ESCROW_BASE_TIMEOUT_MILLIS = 180_000;
+ // 5 seconds. An extension of the overall RoR timeout to account for overhead.
+ private static final int DEFAULT_LOAD_ESCROW_TIMEOUT_EXTENSION_MILLIS = 5000;
@IntDef(prefix = {"ERROR_"}, value = {
ERROR_NONE,
@@ -133,6 +137,7 @@
ERROR_PROVIDER_MISMATCH,
ERROR_KEYSTORE_FAILURE,
ERROR_NO_NETWORK,
+ ERROR_TIMEOUT_EXHAUSTED,
})
@Retention(RetentionPolicy.SOURCE)
@interface RebootEscrowErrorCode {
@@ -147,6 +152,7 @@
static final int ERROR_PROVIDER_MISMATCH = 6;
static final int ERROR_KEYSTORE_FAILURE = 7;
static final int ERROR_NO_NETWORK = 8;
+ static final int ERROR_TIMEOUT_EXHAUSTED = 9;
private @RebootEscrowErrorCode int mLoadEscrowDataErrorCode = ERROR_NONE;
@@ -168,6 +174,15 @@
/** Notified when mRebootEscrowReady changes. */
private RebootEscrowListener mRebootEscrowListener;
+ /** Set when unlocking reboot escrow times out. */
+ private boolean mRebootEscrowTimedOut = false;
+
+ /**
+ * Set when {@link #loadRebootEscrowDataWithRetry} is called to ensure the function is only
+ * called once.
+ */
+ private boolean mLoadEscrowDataWithRetry = false;
+
/**
* Hold this lock when checking or generating the reboot escrow key.
*/
@@ -192,6 +207,7 @@
PowerManager.WakeLock mWakeLock;
+ private ConnectivityManager.NetworkCallback mNetworkCallback;
interface Callbacks {
boolean isUserSecure(int userId);
@@ -246,6 +262,11 @@
"server_based_ror_enabled", false);
}
+ public boolean waitForInternet() {
+ return DeviceConfig.getBoolean(
+ DeviceConfig.NAMESPACE_OTA, "wait_for_internet_ror", false);
+ }
+
public boolean isNetworkConnected() {
final ConnectivityManager connectivityManager =
mContext.getSystemService(ConnectivityManager.class);
@@ -263,6 +284,38 @@
NetworkCapabilities.NET_CAPABILITY_VALIDATED);
}
+ /**
+ * Request network with internet connectivity with timeout.
+ *
+ * @param networkCallback callback to be executed if connectivity manager exists.
+ * @return true if success
+ */
+ public boolean requestNetworkWithInternet(
+ ConnectivityManager.NetworkCallback networkCallback) {
+ final ConnectivityManager connectivityManager =
+ mContext.getSystemService(ConnectivityManager.class);
+ if (connectivityManager == null) {
+ return false;
+ }
+ NetworkRequest request =
+ new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .build();
+
+ connectivityManager.requestNetwork(
+ request, networkCallback, getLoadEscrowTimeoutMillis());
+ return true;
+ }
+
+ public void stopRequestingNetwork(ConnectivityManager.NetworkCallback networkCallback) {
+ final ConnectivityManager connectivityManager =
+ mContext.getSystemService(ConnectivityManager.class);
+ if (connectivityManager == null) {
+ return;
+ }
+ connectivityManager.unregisterNetworkCallback(networkCallback);
+ }
+
public Context getContext() {
return mContext;
}
@@ -318,6 +371,16 @@
DEFAULT_LOAD_ESCROW_DATA_RETRY_INTERVAL_SECONDS);
}
+ @VisibleForTesting
+ public int getLoadEscrowTimeoutMillis() {
+ return DEFAULT_LOAD_ESCROW_BASE_TIMEOUT_MILLIS;
+ }
+
+ @VisibleForTesting
+ public int getWakeLockTimeoutMillis() {
+ return getLoadEscrowTimeoutMillis() + DEFAULT_LOAD_ESCROW_TIMEOUT_EXTENSION_MILLIS;
+ }
+
public void reportMetric(boolean success, int errorCode, int serviceType, int attemptCount,
int escrowDurationInSeconds, int vbmetaDigestStatus,
int durationSinceBootCompleteInSeconds) {
@@ -351,13 +414,37 @@
mKeyStoreManager = injector.getKeyStoreManager();
}
- private void onGetRebootEscrowKeyFailed(List<UserInfo> users, int attemptCount) {
+ /** Wrapper function to set error code serialized through handler, */
+ private void setLoadEscrowDataErrorCode(@RebootEscrowErrorCode int value, Handler handler) {
+ if (mInjector.waitForInternet()) {
+ mInjector.post(
+ handler,
+ () -> {
+ mLoadEscrowDataErrorCode = value;
+ });
+ } else {
+ mLoadEscrowDataErrorCode = value;
+ }
+ }
+
+ /** Wrapper function to compare and set error code serialized through handler. */
+ private void compareAndSetLoadEscrowDataErrorCode(
+ @RebootEscrowErrorCode int expectedValue,
+ @RebootEscrowErrorCode int newValue,
+ Handler handler) {
+ if (expectedValue == mLoadEscrowDataErrorCode) {
+ setLoadEscrowDataErrorCode(newValue, handler);
+ }
+ }
+
+ private void onGetRebootEscrowKeyFailed(
+ List<UserInfo> users, int attemptCount, Handler retryHandler) {
Slog.w(TAG, "Had reboot escrow data for users, but no key; removing escrow storage.");
for (UserInfo user : users) {
mStorage.removeRebootEscrow(user.id);
}
- onEscrowRestoreComplete(false, attemptCount);
+ onEscrowRestoreComplete(false, attemptCount, retryHandler);
}
void loadRebootEscrowDataIfAvailable(Handler retryHandler) {
@@ -380,39 +467,130 @@
mWakeLock = mInjector.getWakeLock();
if (mWakeLock != null) {
mWakeLock.setReferenceCounted(false);
- mWakeLock.acquire(DEFAULT_WAKE_LOCK_TIMEOUT_MILLIS);
+ mWakeLock.acquire(mInjector.getWakeLockTimeoutMillis());
+ }
+
+ if (mInjector.waitForInternet()) {
+ // Timeout to stop retrying same as the wake lock timeout.
+ mInjector.postDelayed(
+ retryHandler,
+ () -> {
+ mRebootEscrowTimedOut = true;
+ },
+ mInjector.getLoadEscrowTimeoutMillis());
+
+ mInjector.post(
+ retryHandler,
+ () -> loadRebootEscrowDataOnInternet(retryHandler, users, rebootEscrowUsers));
+ return;
}
mInjector.post(retryHandler, () -> loadRebootEscrowDataWithRetry(
retryHandler, 0, users, rebootEscrowUsers));
}
- void scheduleLoadRebootEscrowDataOrFail(Handler retryHandler, int attemptNumber,
- List<UserInfo> users, List<UserInfo> rebootEscrowUsers) {
+ void scheduleLoadRebootEscrowDataOrFail(
+ Handler retryHandler,
+ int attemptNumber,
+ List<UserInfo> users,
+ List<UserInfo> rebootEscrowUsers) {
Objects.requireNonNull(retryHandler);
final int retryLimit = mInjector.getLoadEscrowDataRetryLimit();
final int retryIntervalInSeconds = mInjector.getLoadEscrowDataRetryIntervalSeconds();
- if (attemptNumber < retryLimit) {
+ if (attemptNumber < retryLimit && !mRebootEscrowTimedOut) {
Slog.i(TAG, "Scheduling loadRebootEscrowData retry number: " + attemptNumber);
mInjector.postDelayed(retryHandler, () -> loadRebootEscrowDataWithRetry(
- retryHandler, attemptNumber, users, rebootEscrowUsers),
+ retryHandler, attemptNumber, users, rebootEscrowUsers),
retryIntervalInSeconds * 1000);
return;
}
+ if (mInjector.waitForInternet()) {
+ if (mRebootEscrowTimedOut) {
+ Slog.w(TAG, "Failed to load reboot escrow data within timeout");
+ compareAndSetLoadEscrowDataErrorCode(
+ ERROR_NONE, ERROR_TIMEOUT_EXHAUSTED, retryHandler);
+ } else {
+ Slog.w(
+ TAG,
+ "Failed to load reboot escrow data after " + attemptNumber + " attempts");
+ compareAndSetLoadEscrowDataErrorCode(
+ ERROR_NONE, ERROR_RETRY_COUNT_EXHAUSTED, retryHandler);
+ }
+ onGetRebootEscrowKeyFailed(users, attemptNumber, retryHandler);
+ return;
+ }
+
Slog.w(TAG, "Failed to load reboot escrow data after " + attemptNumber + " attempts");
if (mInjector.serverBasedResumeOnReboot() && !mInjector.isNetworkConnected()) {
mLoadEscrowDataErrorCode = ERROR_NO_NETWORK;
} else {
mLoadEscrowDataErrorCode = ERROR_RETRY_COUNT_EXHAUSTED;
}
- onGetRebootEscrowKeyFailed(users, attemptNumber);
+ onGetRebootEscrowKeyFailed(users, attemptNumber, retryHandler);
}
- void loadRebootEscrowDataWithRetry(Handler retryHandler, int attemptNumber,
- List<UserInfo> users, List<UserInfo> rebootEscrowUsers) {
+ void loadRebootEscrowDataOnInternet(
+ Handler retryHandler, List<UserInfo> users, List<UserInfo> rebootEscrowUsers) {
+
+ // HAL-Based RoR does not require network connectivity.
+ if (!mInjector.serverBasedResumeOnReboot()) {
+ loadRebootEscrowDataWithRetry(
+ retryHandler, /* attemptNumber = */ 0, users, rebootEscrowUsers);
+ return;
+ }
+
+ mNetworkCallback =
+ new ConnectivityManager.NetworkCallback() {
+ @Override
+ public void onAvailable(Network network) {
+ compareAndSetLoadEscrowDataErrorCode(
+ ERROR_NO_NETWORK, ERROR_NONE, retryHandler);
+
+ if (!mLoadEscrowDataWithRetry) {
+ mLoadEscrowDataWithRetry = true;
+ // Only kickoff retry mechanism on first onAvailable call.
+ loadRebootEscrowDataWithRetry(
+ retryHandler,
+ /* attemptNumber = */ 0,
+ users,
+ rebootEscrowUsers);
+ }
+ }
+
+ @Override
+ public void onUnavailable() {
+ Slog.w(TAG, "Failed to connect to network within timeout");
+ compareAndSetLoadEscrowDataErrorCode(
+ ERROR_NONE, ERROR_NO_NETWORK, retryHandler);
+ onGetRebootEscrowKeyFailed(users, /* attemptCount= */ 0, retryHandler);
+ }
+
+ @Override
+ public void onLost(Network lostNetwork) {
+ // TODO(b/231660348): If network is lost, wait for network to become
+ // available again.
+ Slog.w(TAG, "Network lost, still attempting to load escrow key.");
+ compareAndSetLoadEscrowDataErrorCode(
+ ERROR_NONE, ERROR_NO_NETWORK, retryHandler);
+ }
+ };
+
+ // Fallback to retrying without waiting for internet on failure.
+ boolean success = mInjector.requestNetworkWithInternet(mNetworkCallback);
+ if (!success) {
+ loadRebootEscrowDataWithRetry(
+ retryHandler, /* attemptNumber = */ 0, users, rebootEscrowUsers);
+ }
+ }
+
+ void loadRebootEscrowDataWithRetry(
+ Handler retryHandler,
+ int attemptNumber,
+ List<UserInfo> users,
+ List<UserInfo> rebootEscrowUsers) {
// Fetch the key from keystore to decrypt the escrow data & escrow key; this key is
// generated before reboot. Note that we will clear the escrow key even if the keystore key
// is null.
@@ -423,7 +601,7 @@
RebootEscrowKey escrowKey;
try {
- escrowKey = getAndClearRebootEscrowKey(kk);
+ escrowKey = getAndClearRebootEscrowKey(kk, retryHandler);
} catch (IOException e) {
Slog.i(TAG, "Failed to load escrow key, scheduling retry.", e);
scheduleLoadRebootEscrowDataOrFail(retryHandler, attemptNumber + 1, users,
@@ -438,12 +616,12 @@
? RebootEscrowProviderInterface.TYPE_SERVER_BASED
: RebootEscrowProviderInterface.TYPE_HAL;
if (providerType != mStorage.getInt(REBOOT_ESCROW_KEY_PROVIDER, -1, USER_SYSTEM)) {
- mLoadEscrowDataErrorCode = ERROR_PROVIDER_MISMATCH;
+ setLoadEscrowDataErrorCode(ERROR_PROVIDER_MISMATCH, retryHandler);
} else {
- mLoadEscrowDataErrorCode = ERROR_LOAD_ESCROW_KEY;
+ setLoadEscrowDataErrorCode(ERROR_LOAD_ESCROW_KEY, retryHandler);
}
}
- onGetRebootEscrowKeyFailed(users, attemptNumber + 1);
+ onGetRebootEscrowKeyFailed(users, attemptNumber + 1, retryHandler);
return;
}
@@ -454,10 +632,10 @@
allUsersUnlocked &= restoreRebootEscrowForUser(user.id, escrowKey, kk);
}
- if (!allUsersUnlocked && mLoadEscrowDataErrorCode == ERROR_NONE) {
- mLoadEscrowDataErrorCode = ERROR_UNLOCK_ALL_USERS;
+ if (!allUsersUnlocked) {
+ compareAndSetLoadEscrowDataErrorCode(ERROR_NONE, ERROR_UNLOCK_ALL_USERS, retryHandler);
}
- onEscrowRestoreComplete(allUsersUnlocked, attemptNumber + 1);
+ onEscrowRestoreComplete(allUsersUnlocked, attemptNumber + 1, retryHandler);
}
private void clearMetricsStorage() {
@@ -497,7 +675,8 @@
.REBOOT_ESCROW_RECOVERY_REPORTED__VBMETA_DIGEST_STATUS__MISMATCH;
}
- private void reportMetricOnRestoreComplete(boolean success, int attemptCount) {
+ private void reportMetricOnRestoreComplete(
+ boolean success, int attemptCount, Handler retryHandler) {
int serviceType = mInjector.serverBasedResumeOnReboot()
? FrameworkStatsLog.REBOOT_ESCROW_RECOVERY_REPORTED__TYPE__SERVER_BASED
: FrameworkStatsLog.REBOOT_ESCROW_RECOVERY_REPORTED__TYPE__HAL;
@@ -511,52 +690,69 @@
}
int vbmetaDigestStatus = getVbmetaDigestStatusOnRestoreComplete();
- if (!success && mLoadEscrowDataErrorCode == ERROR_NONE) {
- mLoadEscrowDataErrorCode = ERROR_UNKNOWN;
+ if (!success) {
+ compareAndSetLoadEscrowDataErrorCode(ERROR_NONE, ERROR_UNKNOWN, retryHandler);
}
- Slog.i(TAG, "Reporting RoR recovery metrics, success: " + success + ", service type: "
- + serviceType + ", error code: " + mLoadEscrowDataErrorCode);
+ Slog.i(
+ TAG,
+ "Reporting RoR recovery metrics, success: "
+ + success
+ + ", service type: "
+ + serviceType
+ + ", error code: "
+ + mLoadEscrowDataErrorCode);
// TODO(179105110) report the duration since boot complete.
- mInjector.reportMetric(success, mLoadEscrowDataErrorCode, serviceType, attemptCount,
- escrowDurationInSeconds, vbmetaDigestStatus, -1);
+ mInjector.reportMetric(
+ success,
+ mLoadEscrowDataErrorCode,
+ serviceType,
+ attemptCount,
+ escrowDurationInSeconds,
+ vbmetaDigestStatus,
+ -1);
- mLoadEscrowDataErrorCode = ERROR_NONE;
+ setLoadEscrowDataErrorCode(ERROR_NONE, retryHandler);
}
- private void onEscrowRestoreComplete(boolean success, int attemptCount) {
+ private void onEscrowRestoreComplete(boolean success, int attemptCount, Handler retryHandler) {
int previousBootCount = mStorage.getInt(REBOOT_ESCROW_ARMED_KEY, -1, USER_SYSTEM);
int bootCountDelta = mInjector.getBootCount() - previousBootCount;
if (success || (previousBootCount != -1 && bootCountDelta <= BOOT_COUNT_TOLERANCE)) {
- reportMetricOnRestoreComplete(success, attemptCount);
+ reportMetricOnRestoreComplete(success, attemptCount, retryHandler);
}
-
// Clear the old key in keystore. A new key will be generated by new RoR requests.
mKeyStoreManager.clearKeyStoreEncryptionKey();
// Clear the saved reboot escrow provider
mInjector.clearRebootEscrowProvider();
clearMetricsStorage();
+ if (mNetworkCallback != null) {
+ mInjector.stopRequestingNetwork(mNetworkCallback);
+ }
+
if (mWakeLock != null) {
mWakeLock.release();
}
}
- private RebootEscrowKey getAndClearRebootEscrowKey(SecretKey kk) throws IOException {
+ private RebootEscrowKey getAndClearRebootEscrowKey(SecretKey kk, Handler retryHandler)
+ throws IOException {
RebootEscrowProviderInterface rebootEscrowProvider =
mInjector.createRebootEscrowProviderIfNeeded();
if (rebootEscrowProvider == null) {
- Slog.w(TAG,
+ Slog.w(
+ TAG,
"Had reboot escrow data for users, but RebootEscrowProvider is unavailable");
- mLoadEscrowDataErrorCode = ERROR_NO_PROVIDER;
+ setLoadEscrowDataErrorCode(ERROR_NO_PROVIDER, retryHandler);
return null;
}
// Server based RoR always need the decryption key from keystore.
if (rebootEscrowProvider.getType() == RebootEscrowProviderInterface.TYPE_SERVER_BASED
&& kk == null) {
- mLoadEscrowDataErrorCode = ERROR_KEYSTORE_FAILURE;
+ setLoadEscrowDataErrorCode(ERROR_KEYSTORE_FAILURE, retryHandler);
return null;
}
@@ -870,6 +1066,9 @@
pw.print("mRebootEscrowListener=");
pw.println(mRebootEscrowListener);
+ pw.print("mLoadEscrowDataErrorCode=");
+ pw.println(mLoadEscrowDataErrorCode);
+
boolean keySet;
synchronized (mKeyGenerationLock) {
keySet = mPendingRebootEscrowKey != null;
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index cc485ba..cde4ea9 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -31,6 +31,7 @@
import android.app.ActivityManager;
import android.app.ActivityThread;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -285,6 +286,15 @@
public void setRouteListingPreference(
@NonNull IMediaRouter2 router,
@Nullable RouteListingPreference routeListingPreference) {
+ ComponentName inAppOnlyItemRoutingReceiver =
+ routeListingPreference != null
+ ? routeListingPreference.getInAppOnlyItemRoutingReceiver()
+ : null;
+ if (inAppOnlyItemRoutingReceiver != null) {
+ MediaServerUtils.enforcePackageName(
+ inAppOnlyItemRoutingReceiver.getPackageName(), Binder.getCallingUid());
+ }
+
final long token = Binder.clearCallingIdentity();
try {
synchronized (mLock) {
@@ -787,6 +797,12 @@
obtainMessage(UserHandler::notifyDiscoveryPreferenceChangedToManagers,
routerRecord.mUserRecord.mHandler,
routerRecord.mPackageName, null));
+ routerRecord.mUserRecord.mHandler.sendMessage(
+ obtainMessage(
+ UserHandler::notifyRouteListingPreferenceChangeToManagers,
+ routerRecord.mUserRecord.mHandler,
+ routerRecord.mPackageName,
+ /* routeListingPreference= */ null));
userRecord.mHandler.sendMessage(
obtainMessage(UserHandler::updateDiscoveryPreferenceOnHandler,
userRecord.mHandler));
@@ -1626,7 +1642,7 @@
* <p>This list contains all routes exposed by route providers. This includes routes from
* both system route providers and user route providers.
*
- * <p>See {@link #getRouters(boolean hasModifyAudioRoutingPermission)}.
+ * <p>See {@link #getRouterRecords(boolean hasModifyAudioRoutingPermission)}.
*/
private final Map<String, MediaRoute2Info> mLastNotifiedRoutesToPrivilegedRouters =
new ArrayMap<>();
@@ -1896,9 +1912,10 @@
if (!hasAddedOrModifiedRoutes && !hasRemovedRoutes) {
return;
}
-
- List<IMediaRouter2> routersWithModifyAudioRoutingPermission = getRouters(true);
- List<IMediaRouter2> routersWithoutModifyAudioRoutingPermission = getRouters(false);
+ List<RouterRecord> routerRecordsWithModifyAudioRoutingPermission =
+ getRouterRecords(true);
+ List<RouterRecord> routerRecordsWithoutModifyAudioRoutingPermission =
+ getRouterRecords(false);
List<IMediaRouter2Manager> managers = getManagers();
// Managers receive all provider updates with all routes.
@@ -1907,22 +1924,22 @@
// Routers with modify audio permission (usually system routers) receive all provider
// updates with all routes.
- notifyRoutesUpdatedToRouters(
- routersWithModifyAudioRoutingPermission,
+ notifyRoutesUpdatedToRouterRecords(
+ routerRecordsWithModifyAudioRoutingPermission,
new ArrayList<>(mLastNotifiedRoutesToPrivilegedRouters.values()));
if (!isSystemProvider) {
// Regular routers receive updates from all non-system providers with all non-system
// routes.
- notifyRoutesUpdatedToRouters(
- routersWithoutModifyAudioRoutingPermission,
+ notifyRoutesUpdatedToRouterRecords(
+ routerRecordsWithoutModifyAudioRoutingPermission,
new ArrayList<>(mLastNotifiedRoutesToNonPrivilegedRouters.values()));
} else if (hasAddedOrModifiedRoutes) {
// On system provider updates, regular routers receive the updated default route.
// This is the only system route they should receive.
mLastNotifiedRoutesToNonPrivilegedRouters.put(defaultRoute.getId(), defaultRoute);
- notifyRoutesUpdatedToRouters(
- routersWithoutModifyAudioRoutingPermission,
+ notifyRoutesUpdatedToRouterRecords(
+ routerRecordsWithoutModifyAudioRoutingPermission,
new ArrayList<>(mLastNotifiedRoutesToNonPrivilegedRouters.values()));
}
}
@@ -2191,8 +2208,8 @@
if (mServiceRef.get() == null) {
return;
}
- notifySessionInfoChangedToRouters(getRouters(true), sessionInfo);
- notifySessionInfoChangedToRouters(getRouters(false),
+ notifySessionInfoChangedToRouters(getRouterRecords(true), sessionInfo);
+ notifySessionInfoChangedToRouters(getRouterRecords(false),
mSystemProvider.getDefaultSessionInfo());
return;
}
@@ -2203,7 +2220,7 @@
+ sessionInfo);
return;
}
- notifySessionInfoChangedToRouters(Arrays.asList(routerRecord.mRouter), sessionInfo);
+ notifySessionInfoChangedToRouters(Arrays.asList(routerRecord), sessionInfo);
}
private void onSessionReleasedOnHandler(@NonNull MediaRoute2Provider provider,
@@ -2316,6 +2333,7 @@
== routerRecord.mHasModifyAudioRoutingPermission) {
routers.add(routerRecord.mRouter);
}
+ routers.add(routerRecord.mRouter);
}
}
return routers;
@@ -2345,6 +2363,23 @@
}
}
+ private List<RouterRecord> getRouterRecords(boolean hasModifyAudioRoutingPermission) {
+ MediaRouter2ServiceImpl service = mServiceRef.get();
+ List<RouterRecord> routerRecords = new ArrayList<>();
+ if (service == null) {
+ return routerRecords;
+ }
+ synchronized (service.mLock) {
+ for (RouterRecord routerRecord : mUserRecord.mRouterRecords) {
+ if (hasModifyAudioRoutingPermission
+ == routerRecord.mHasModifyAudioRoutingPermission) {
+ routerRecords.add(routerRecord);
+ }
+ }
+ return routerRecords;
+ }
+ }
+
private List<ManagerRecord> getManagerRecords() {
MediaRouter2ServiceImpl service = mServiceRef.get();
if (service == null) {
@@ -2395,22 +2430,45 @@
}
}
- private void notifyRoutesUpdatedToRouters(
- @NonNull List<IMediaRouter2> routers, @NonNull List<MediaRoute2Info> routes) {
- for (IMediaRouter2 router : routers) {
+ private static void notifyRoutesUpdatedToRouterRecords(
+ @NonNull List<RouterRecord> routerRecords,
+ @NonNull List<MediaRoute2Info> routes) {
+ for (RouterRecord routerRecord: routerRecords) {
+ List<MediaRoute2Info> filteredRoutes = getFilteredRoutesForPackageName(routes,
+ routerRecord.mPackageName);
try {
- router.notifyRoutesUpdated(routes);
+ routerRecord.mRouter.notifyRoutesUpdated(filteredRoutes);
} catch (RemoteException ex) {
Slog.w(TAG, "Failed to notify routes updated. Router probably died.", ex);
}
}
}
+ /**
+ * Filters list of routes to return only public routes or routes provided by
+ * the same package name or routes containing this package name in its allow list.
+ * @param routes initial list of routes to be filtered.
+ * @param packageName router's package name to filter routes for it.
+ * @return only the routes that this package name is allowed to see.
+ */
+ private static List<MediaRoute2Info> getFilteredRoutesForPackageName(
+ @NonNull List<MediaRoute2Info> routes,
+ @NonNull String packageName) {
+ List<MediaRoute2Info> filteredRoutes = new ArrayList<>();
+ for (MediaRoute2Info route : routes) {
+ if (route.isVisibleTo(packageName)) {
+ filteredRoutes.add(route);
+ }
+ }
+ return filteredRoutes;
+ }
+
private void notifySessionInfoChangedToRouters(
- @NonNull List<IMediaRouter2> routers, @NonNull RoutingSessionInfo sessionInfo) {
- for (IMediaRouter2 router : routers) {
+ @NonNull List<RouterRecord> routerRecords,
+ @NonNull RoutingSessionInfo sessionInfo) {
+ for (RouterRecord routerRecord : routerRecords) {
try {
- router.notifySessionInfoChanged(sessionInfo);
+ routerRecord.mRouter.notifySessionInfoChanged(sessionInfo);
} catch (RemoteException ex) {
Slog.w(TAG, "Failed to notify session info changed. Router probably died.", ex);
}
diff --git a/services/core/java/com/android/server/media/MediaServerUtils.java b/services/core/java/com/android/server/media/MediaServerUtils.java
index 5fa2b1c..a4a99af 100644
--- a/services/core/java/com/android/server/media/MediaServerUtils.java
+++ b/services/core/java/com/android/server/media/MediaServerUtils.java
@@ -18,7 +18,13 @@
import android.content.Context;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManagerInternal;
import android.os.Binder;
+import android.os.Process;
+import android.os.UserHandle;
+import android.text.TextUtils;
+
+import com.android.server.LocalServices;
import java.io.PrintWriter;
@@ -26,6 +32,39 @@
* Util class for media server.
*/
class MediaServerUtils {
+
+ /**
+ * Throws if the given {@code packageName} does not correspond to the given {@code uid}.
+ *
+ * <p>This method trusts calls from {@link Process#ROOT_UID} and {@link Process#SHELL_UID}.
+ *
+ * @param packageName A package name to verify (usually sent over binder by an app).
+ * @param uid The calling uid, obtained via {@link Binder#getCallingUid()}.
+ * @throws IllegalArgumentException If the given {@code packageName} does not correspond to the
+ * given {@code uid}, and {@code uid} is not the root uid, or the shell uid.
+ */
+ public static void enforcePackageName(String packageName, int uid) {
+ if (uid == Process.ROOT_UID || uid == Process.SHELL_UID) {
+ return;
+ }
+ if (TextUtils.isEmpty(packageName)) {
+ throw new IllegalArgumentException("packageName may not be empty");
+ }
+ final PackageManagerInternal packageManagerInternal =
+ LocalServices.getService(PackageManagerInternal.class);
+ final int actualUid =
+ packageManagerInternal.getPackageUid(
+ packageName, 0 /* flags */, UserHandle.getUserId(uid));
+ if (!UserHandle.isSameApp(uid, actualUid)) {
+ throw new IllegalArgumentException(
+ "packageName does not belong to the calling uid; "
+ + "pkg="
+ + packageName
+ + ", uid="
+ + uid);
+ }
+ }
+
/**
* Verify that caller holds {@link android.Manifest.permission#DUMP}.
*/
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index e51ed1b..3a20cd9 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -538,30 +538,11 @@
mHandler.postSessionsChanged(session);
}
- private void enforcePackageName(String packageName, int uid) {
- if (TextUtils.isEmpty(packageName)) {
- throw new IllegalArgumentException("packageName may not be empty");
- }
- if (uid == Process.ROOT_UID || uid == Process.SHELL_UID) {
- // If the caller is shell, then trust the packageName given and allow it
- // to proceed.
- return;
- }
- final PackageManagerInternal packageManagerInternal =
- LocalServices.getService(PackageManagerInternal.class);
- final int actualUid = packageManagerInternal.getPackageUid(
- packageName, 0 /* flags */, UserHandle.getUserId(uid));
- if (!UserHandle.isSameApp(uid, actualUid)) {
- throw new IllegalArgumentException("packageName does not belong to the calling uid; "
- + "pkg=" + packageName + ", uid=" + uid);
- }
- }
-
void tempAllowlistTargetPkgIfPossible(int targetUid, String targetPackage,
int callingPid, int callingUid, String callingPackage, String reason) {
final long token = Binder.clearCallingIdentity();
try {
- enforcePackageName(callingPackage, callingUid);
+ MediaServerUtils.enforcePackageName(callingPackage, callingUid);
if (targetUid != callingUid) {
boolean canAllowWhileInUse = mActivityManagerLocal
.canAllowWhileInUsePermissionInFgs(callingPid, callingUid, callingPackage);
@@ -1206,7 +1187,7 @@
final int uid = Binder.getCallingUid();
final long token = Binder.clearCallingIdentity();
try {
- enforcePackageName(packageName, uid);
+ MediaServerUtils.enforcePackageName(packageName, uid);
int resolvedUserId = handleIncomingUser(pid, uid, userId, packageName);
if (cb == null) {
throw new IllegalArgumentException("Controller callback cannot be null");
@@ -1258,7 +1239,7 @@
final int userId = userHandle.getIdentifier();
final long token = Binder.clearCallingIdentity();
try {
- enforcePackageName(packageName, uid);
+ MediaServerUtils.enforcePackageName(packageName, uid);
enforceMediaPermissions(packageName, pid, uid, userId);
MediaSessionRecordImpl record;
@@ -1289,7 +1270,7 @@
final int userId = userHandle.getIdentifier();
final long token = Binder.clearCallingIdentity();
try {
- enforcePackageName(packageName, uid);
+ MediaServerUtils.enforcePackageName(packageName, uid);
enforceMediaPermissions(packageName, pid, uid, userId);
MediaSessionRecordImpl record;
@@ -1615,7 +1596,7 @@
final int userId = userHandle.getIdentifier();
final long token = Binder.clearCallingIdentity();
try {
- enforcePackageName(packageName, uid);
+ MediaServerUtils.enforcePackageName(packageName, uid);
enforceMediaPermissions(packageName, pid, uid, userId);
synchronized (mLock) {
@@ -2129,7 +2110,7 @@
// If they gave us a component name verify they own the
// package
packageName = componentName.getPackageName();
- enforcePackageName(packageName, uid);
+ MediaServerUtils.enforcePackageName(packageName, uid);
}
// Check that they can make calls on behalf of the user and get the final user id
int resolvedUserId = handleIncomingUser(pid, uid, userId, packageName);
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index 1bbcc83..5ab9f38 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -1007,6 +1007,7 @@
channel.setAllowBubbles(existing != null
? existing.getAllowBubbles()
: NotificationChannel.DEFAULT_ALLOW_BUBBLE);
+ channel.setImportantConversation(false);
}
clearLockedFieldsLocked(channel);
diff --git a/services/core/java/com/android/server/pm/AppDataHelper.java b/services/core/java/com/android/server/pm/AppDataHelper.java
index ed31187..abaff4a 100644
--- a/services/core/java/com/android/server/pm/AppDataHelper.java
+++ b/services/core/java/com/android/server/pm/AppDataHelper.java
@@ -18,6 +18,7 @@
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
+import static com.android.server.pm.DexOptHelper.useArtService;
import static com.android.server.pm.PackageManagerService.TAG;
import static com.android.server.pm.PackageManagerServiceUtils.logCriticalInfo;
@@ -45,6 +46,7 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.Preconditions;
import com.android.server.SystemServerInitThreadPool;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.dex.ArtManagerService;
import com.android.server.pm.parsing.pkg.AndroidPackageUtils;
import com.android.server.pm.pkg.AndroidPackage;
@@ -242,33 +244,39 @@
}
}
- // Prepare the application profiles only for upgrades and
- // first boot (so that we don't repeat the same operation at
- // each boot).
- //
- // We only have to cover the upgrade and first boot here
- // because for app installs we prepare the profiles before
- // invoking dexopt (in installPackageLI).
- //
- // We also have to cover non system users because we do not
- // call the usual install package methods for them.
- //
- // NOTE: in order to speed up first boot time we only create
- // the current profile and do not update the content of the
- // reference profile. A system image should already be
- // configured with the right profile keys and the profiles
- // for the speed-profile prebuilds should already be copied.
- // That's done in #performDexOptUpgrade.
- //
- // TODO(calin, mathieuc): We should use .dm files for
- // prebuilds profiles instead of manually copying them in
- // #performDexOptUpgrade. When we do that we should have a
- // more granular check here and only update the existing
- // profiles.
- if (mPm.isDeviceUpgrading() || mPm.isFirstBoot()
- || (userId != UserHandle.USER_SYSTEM)) {
- mArtManagerService.prepareAppProfiles(pkg, userId,
- /* updateReferenceProfileContent= */ false);
+ if (!useArtService()) { // ART Service handles this on demand instead.
+ // Prepare the application profiles only for upgrades and
+ // first boot (so that we don't repeat the same operation at
+ // each boot).
+ //
+ // We only have to cover the upgrade and first boot here
+ // because for app installs we prepare the profiles before
+ // invoking dexopt (in installPackageLI).
+ //
+ // We also have to cover non system users because we do not
+ // call the usual install package methods for them.
+ //
+ // NOTE: in order to speed up first boot time we only create
+ // the current profile and do not update the content of the
+ // reference profile. A system image should already be
+ // configured with the right profile keys and the profiles
+ // for the speed-profile prebuilds should already be copied.
+ // That's done in #performDexOptUpgrade.
+ //
+ // TODO(calin, mathieuc): We should use .dm files for
+ // prebuilds profiles instead of manually copying them in
+ // #performDexOptUpgrade. When we do that we should have a
+ // more granular check here and only update the existing
+ // profiles.
+ if (mPm.isDeviceUpgrading() || mPm.isFirstBoot()
+ || (userId != UserHandle.USER_SYSTEM)) {
+ try {
+ mArtManagerService.prepareAppProfiles(pkg, userId,
+ /* updateReferenceProfileContent= */ false);
+ } catch (LegacyDexoptDisabledException e2) {
+ throw new RuntimeException(e2);
+ }
+ }
}
if ((flags & StorageManager.FLAG_STORAGE_CE) != 0 && ceDataInode != -1) {
@@ -578,7 +586,12 @@
Slog.wtf(TAG, "Package was null!", new Throwable());
return;
}
- mArtManagerService.clearAppProfiles(pkg);
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ mArtManagerService.clearAppProfiles(pkg);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
public void destroyAppDataLIF(AndroidPackage pkg, int userId, int flags) {
@@ -615,8 +628,11 @@
}
private void destroyAppProfilesLeafLIF(AndroidPackage pkg) {
+ // TODO(b/251903639): Call into ART Service.
try {
mInstaller.destroyAppProfiles(pkg.getPackageName());
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
} catch (Installer.InstallerException e) {
Slog.w(TAG, String.valueOf(e));
}
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index fe122f8..9785d47 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -55,9 +55,11 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FrameworkStatsLog;
+import com.android.internal.util.FunctionalUtils.ThrowingCheckedSupplier;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.LocalServices;
import com.android.server.PinnerService;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.PackageDexOptimizer.DexOptResult;
import com.android.server.pm.dex.DexManager;
import com.android.server.pm.dex.DexoptOptions;
@@ -71,7 +73,6 @@
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
-import java.util.function.Supplier;
/**
* Controls background dex optimization run as idle job or command line.
@@ -202,7 +203,8 @@
}
/** Start scheduling job after boot completion */
- public void systemReady() {
+ public void systemReady() throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
if (mInjector.isBackgroundDexOptDisabled()) {
return;
}
@@ -272,7 +274,8 @@
* @return true if dex optimization is complete. false if the task is cancelled or if there was
* an error.
*/
- public boolean runBackgroundDexoptJob(@Nullable List<String> packageNames) {
+ public boolean runBackgroundDexoptJob(@Nullable List<String> packageNames)
+ throws LegacyDexoptDisabledException {
enforceRootOrShell();
long identity = Binder.clearCallingIdentity();
try {
@@ -301,7 +304,8 @@
*
* <p>This is only for shell command and only root or shell user can use this.
*/
- public void cancelBackgroundDexoptJob() {
+ public void cancelBackgroundDexoptJob() throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
enforceRootOrShell();
Binder.withCleanCallingIdentity(() -> cancelDexOptAndWaitForCompletion());
}
@@ -315,7 +319,8 @@
*
* @param disable True if JobScheduler invocations should be disabled, false otherwise.
*/
- public void setDisableJobSchedulerJobs(boolean disable) {
+ public void setDisableJobSchedulerJobs(boolean disable) throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
enforceRootOrShell();
synchronized (mLock) {
mDisableJobSchedulerJobs = disable;
@@ -323,14 +328,18 @@
}
/** Adds listener for package update */
- public void addPackagesUpdatedListener(PackagesUpdatedListener listener) {
+ public void addPackagesUpdatedListener(PackagesUpdatedListener listener)
+ throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
synchronized (mLock) {
mPackagesUpdatedListeners.add(listener);
}
}
/** Removes package update listener */
- public void removePackagesUpdatedListener(PackagesUpdatedListener listener) {
+ public void removePackagesUpdatedListener(PackagesUpdatedListener listener)
+ throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
synchronized (mLock) {
mPackagesUpdatedListeners.remove(listener);
}
@@ -340,7 +349,8 @@
* Notifies package change and removes the package from the failed package list so that
* the package can run dexopt again.
*/
- public void notifyPackageChanged(String packageName) {
+ public void notifyPackageChanged(String packageName) throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
// The idle maintenance job skips packages which previously failed to
// compile. The given package has changed and may successfully compile
// now. Remove it from the list of known failing packages.
@@ -387,37 +397,43 @@
// Post boot job not finished yet. Run post boot job first.
return false;
}
- resetStatesForNewDexOptRunLocked(mInjector.createAndStartThread(
- "BackgroundDexOptService_" + (isPostBootUpdateJob ? "PostBoot" : "Idle"),
- () -> {
- TimingsTraceAndSlog tr =
- new TimingsTraceAndSlog(TAG, Trace.TRACE_TAG_PACKAGE_MANAGER);
- tr.traceBegin("jobExecution");
- boolean completed = false;
- try {
- completed = runIdleOptimization(
- pm, pkgs, params.getJobId() == JOB_POST_BOOT_UPDATE);
- } finally { // Those cleanup should be done always.
- tr.traceEnd();
- Slog.i(TAG,
- "dexopt finishing. jobid:" + params.getJobId()
- + " completed:" + completed);
+ try {
+ resetStatesForNewDexOptRunLocked(mInjector.createAndStartThread(
+ "BackgroundDexOptService_" + (isPostBootUpdateJob ? "PostBoot" : "Idle"),
+ () -> {
+ TimingsTraceAndSlog tr =
+ new TimingsTraceAndSlog(TAG, Trace.TRACE_TAG_PACKAGE_MANAGER);
+ tr.traceBegin("jobExecution");
+ boolean completed = false;
+ try {
+ completed = runIdleOptimization(
+ pm, pkgs, params.getJobId() == JOB_POST_BOOT_UPDATE);
+ } catch (LegacyDexoptDisabledException e) {
+ Slog.wtf(TAG, e);
+ } finally { // Those cleanup should be done always.
+ tr.traceEnd();
+ Slog.i(TAG,
+ "dexopt finishing. jobid:" + params.getJobId()
+ + " completed:" + completed);
- writeStatsLog(params);
+ writeStatsLog(params);
- if (params.getJobId() == JOB_POST_BOOT_UPDATE) {
- if (completed) {
- markPostBootUpdateCompleted(params);
+ if (params.getJobId() == JOB_POST_BOOT_UPDATE) {
+ if (completed) {
+ markPostBootUpdateCompleted(params);
+ }
+ // Reschedule when cancelled
+ job.jobFinished(params, !completed);
+ } else {
+ // Periodic job
+ job.jobFinished(params, false /* reschedule */);
}
- // Reschedule when cancelled
- job.jobFinished(params, !completed);
- } else {
- // Periodic job
- job.jobFinished(params, false /* reschedule */);
+ markDexOptCompleted();
}
- markDexOptCompleted();
- }
- }));
+ }));
+ } catch (LegacyDexoptDisabledException e) {
+ Slog.wtf(TAG, e);
+ }
}
return true;
}
@@ -425,11 +441,16 @@
/** For BackgroundDexOptJobService to dispatch onStopJob event */
/* package */ boolean onStopJob(BackgroundDexOptJobService job, JobParameters params) {
Slog.i(TAG, "onStopJob:" + params.getJobId());
- // This cannot block as it is in main thread, thus dispatch to a newly created thread and
- // cancel it from there.
- // As this event does not happen often, creating a new thread is justified rather than
- // having one thread kept permanently.
- mInjector.createAndStartThread("DexOptCancel", this::cancelDexOptAndWaitForCompletion);
+ // This cannot block as it is in main thread, thus dispatch to a newly created thread
+ // and cancel it from there. As this event does not happen often, creating a new thread
+ // is justified rather than having one thread kept permanently.
+ mInjector.createAndStartThread("DexOptCancel", () -> {
+ try {
+ cancelDexOptAndWaitForCompletion();
+ } catch (LegacyDexoptDisabledException e) {
+ Slog.wtf(TAG, e);
+ }
+ });
// Always reschedule for cancellation.
return true;
}
@@ -438,7 +459,7 @@
* Cancels pending dexopt and wait for completion of the cancellation. This can block the caller
* until cancellation is done.
*/
- private void cancelDexOptAndWaitForCompletion() {
+ private void cancelDexOptAndWaitForCompletion() throws LegacyDexoptDisabledException {
synchronized (mLock) {
if (mDexOptThread == null) {
return;
@@ -496,7 +517,8 @@
}
@GuardedBy("mLock")
- private void resetStatesForNewDexOptRunLocked(Thread thread) {
+ private void resetStatesForNewDexOptRunLocked(Thread thread)
+ throws LegacyDexoptDisabledException {
mDexOptThread = thread;
mLastCancelledPackages.clear();
controlDexOptBlockingLocked(false);
@@ -510,7 +532,7 @@
}
@GuardedBy("mLock")
- private void controlDexOptBlockingLocked(boolean block) {
+ private void controlDexOptBlockingLocked(boolean block) throws LegacyDexoptDisabledException {
PackageManagerService pm = mInjector.getPackageManagerService();
mDexOptHelper.controlDexOptBlocking(block);
}
@@ -564,8 +586,8 @@
* Returns whether we've successfully run the job. Note that it will return true even if some
* packages may have failed compiling.
*/
- private boolean runIdleOptimization(
- PackageManagerService pm, List<String> pkgs, boolean isPostBootUpdate) {
+ private boolean runIdleOptimization(PackageManagerService pm, List<String> pkgs,
+ boolean isPostBootUpdate) throws LegacyDexoptDisabledException {
synchronized (mLock) {
mLastExecutionStatus = STATUS_UNSPECIFIED;
mLastExecutionStartUptimeMs = SystemClock.uptimeMillis();
@@ -631,7 +653,8 @@
@Status
private int idleOptimizePackages(PackageManagerService pm, List<String> pkgs,
- long lowStorageThreshold, boolean isPostBootUpdate) {
+ long lowStorageThreshold, boolean isPostBootUpdate)
+ throws LegacyDexoptDisabledException {
ArraySet<String> updatedPackages = new ArraySet<>();
try {
@@ -707,7 +730,8 @@
@Status
private int optimizePackages(List<String> pkgs, long lowStorageThreshold,
- ArraySet<String> updatedPackages, boolean isPostBootUpdate) {
+ ArraySet<String> updatedPackages, boolean isPostBootUpdate)
+ throws LegacyDexoptDisabledException {
boolean supportSecondaryDex = mInjector.supportSecondaryDex();
// Keep the error if there is any error from any package.
@@ -760,7 +784,8 @@
*/
@DexOptResult
private int downgradePackage(@NonNull Computer snapshot, PackageManagerService pm, String pkg,
- boolean isForPrimaryDex, boolean isPostBootUpdate) {
+ boolean isForPrimaryDex, boolean isPostBootUpdate)
+ throws LegacyDexoptDisabledException {
if (DEBUG) {
Slog.d(TAG, "Downgrading " + pkg);
}
@@ -808,7 +833,7 @@
}
@Status
- private int reconcileSecondaryDexFiles() {
+ private int reconcileSecondaryDexFiles() throws LegacyDexoptDisabledException {
// TODO(calin): should we denylist packages for which we fail to reconcile?
for (String p : mInjector.getDexManager().getAllPackagesWithSecondaryDexFiles()) {
if (isCancelling()) {
@@ -829,7 +854,8 @@
* @return PackageDexOptimizer#DEX_OPT_*
*/
@DexOptResult
- private int optimizePackage(String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate) {
+ private int optimizePackage(String pkg, boolean isForPrimaryDex, boolean isPostBootUpdate)
+ throws LegacyDexoptDisabledException {
int reason = isPostBootUpdate ? PackageManagerService.REASON_POST_BOOT
: PackageManagerService.REASON_BACKGROUND_DEXOPT;
String filter = getCompilerFilterForReason(reason);
@@ -857,7 +883,8 @@
}
@DexOptResult
- private int performDexOptPrimary(String pkg, int reason, String filter, int dexoptFlags) {
+ private int performDexOptPrimary(String pkg, int reason, String filter, int dexoptFlags)
+ throws LegacyDexoptDisabledException {
DexoptOptions dexoptOptions =
new DexoptOptions(pkg, reason, filter, /*splitName=*/null, dexoptFlags);
return trackPerformDexOpt(pkg, /*isForPrimaryDex=*/true,
@@ -865,7 +892,8 @@
}
@DexOptResult
- private int performDexOptSecondary(String pkg, int reason, String filter, int dexoptFlags) {
+ private int performDexOptSecondary(String pkg, int reason, String filter, int dexoptFlags)
+ throws LegacyDexoptDisabledException {
DexoptOptions dexoptOptions = new DexoptOptions(pkg, reason, filter, /*splitName=*/null,
dexoptFlags | DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX);
return trackPerformDexOpt(pkg, /*isForPrimaryDex=*/false,
@@ -885,8 +913,9 @@
* {@link PackageDexOptimizer#DEX_OPT_FAILED}
*/
@DexOptResult
- private int trackPerformDexOpt(
- String pkg, boolean isForPrimaryDex, Supplier<Integer> performDexOptWrapper) {
+ private int trackPerformDexOpt(String pkg, boolean isForPrimaryDex,
+ ThrowingCheckedSupplier<Integer, LegacyDexoptDisabledException> performDexOptWrapper)
+ throws LegacyDexoptDisabledException {
ArraySet<String> failedPackageNames;
synchronized (mLock) {
failedPackageNames =
diff --git a/services/core/java/com/android/server/pm/BroadcastHelper.java b/services/core/java/com/android/server/pm/BroadcastHelper.java
index d6233c7..98d6081 100644
--- a/services/core/java/com/android/server/pm/BroadcastHelper.java
+++ b/services/core/java/com/android/server/pm/BroadcastHelper.java
@@ -51,7 +51,6 @@
import com.android.internal.util.ArrayUtils;
import java.util.ArrayList;
-import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Supplier;
@@ -334,6 +333,13 @@
sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED,
packageName, extras, 0, null, null, userIds, instantUserIds,
broadcastAllowlist, null /* filterExtrasForReceiver */, null);
+ // Send to PermissionController for all new users, even if it may not be running for some
+ // users
+ sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED,
+ packageName, extras, 0,
+ mContext.getPackageManager().getPermissionControllerPackageName(),
+ null, userIds, instantUserIds,
+ broadcastAllowlist, null /* filterExtrasForReceiver */, null);
}
public void sendFirstLaunchBroadcast(String pkgName, String installerPkg,
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index 0a59c19..0eac9ef 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -124,6 +124,7 @@
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.modules.utils.TypedXmlSerializer;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.dex.DexManager;
import com.android.server.pm.dex.PackageDexUsage;
import com.android.server.pm.parsing.PackageInfoUtils;
@@ -1475,14 +1476,18 @@
// Compute GIDs only if requested
final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY
: mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.getAppId()));
+ // Compute installed permissions only if requested
+ final Set<String> installedPermissions = ((flags & PackageManager.GET_PERMISSIONS) == 0
+ || ArrayUtils.isEmpty(p.getPermissions())) ? Collections.emptySet()
+ : mPermissionManager.getInstalledPermissions(ps.getPackageName());
// Compute granted permissions only if package has requested permissions
- final Set<String> permissions = ((flags & PackageManager.GET_PERMISSIONS) == 0
+ final Set<String> grantedPermissions = ((flags & PackageManager.GET_PERMISSIONS) == 0
|| ArrayUtils.isEmpty(p.getRequestedPermissions())) ? Collections.emptySet()
: mPermissionManager.getGrantedPermissions(ps.getPackageName(), userId);
PackageInfo packageInfo = PackageInfoUtils.generate(p, gids, flags,
- state.getFirstInstallTime(), ps.getLastUpdateTime(), permissions, state, userId,
- ps);
+ state.getFirstInstallTimeMillis(), ps.getLastUpdateTime(), installedPermissions,
+ grantedPermissions, state, userId, ps);
if (packageInfo == null) {
return null;
@@ -1499,7 +1504,7 @@
pi.setLongVersionCode(ps.getVersionCode());
SharedUserApi sharedUser = mSettings.getSharedUserFromPackageName(pi.packageName);
pi.sharedUserId = (sharedUser != null) ? sharedUser.getName() : null;
- pi.firstInstallTime = state.getFirstInstallTime();
+ pi.firstInstallTime = state.getFirstInstallTimeMillis();
pi.lastUpdateTime = ps.getLastUpdateTime();
ApplicationInfo ai = new ApplicationInfo();
@@ -3009,8 +3014,13 @@
ipw.println("[" + pkgName + "]");
ipw.increaseIndent();
- mPackageDexOptimizer.dumpDexoptState(ipw, pkg, pkgSetting,
- mDexManager.getPackageUseInfoOrDefault(pkgName));
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ mPackageDexOptimizer.dumpDexoptState(ipw, pkg, pkgSetting,
+ mDexManager.getPackageUseInfoOrDefault(pkgName));
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
ipw.decreaseIndent();
}
ipw.println("BgDexopt state:");
diff --git a/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java b/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java
index 1e0822d..397fdd8 100644
--- a/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java
+++ b/services/core/java/com/android/server/pm/CrossProfileIntentResolverEngine.java
@@ -30,6 +30,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
+import android.content.pm.UserProperties;
import android.os.Process;
import android.text.TextUtils;
import android.util.Pair;
@@ -147,8 +148,6 @@
return crossProfileDomainInfos;
}
- UserInfo userInfo = mUserManagerInternal.getUserInfo(userId);
-
// Grouping the CrossProfileIntentFilters based on targerId
SparseArray<List<CrossProfileIntentFilter>> crossProfileIntentFiltersByUser =
new SparseArray<>();
@@ -183,11 +182,9 @@
continue;
}
- UserInfo targetUserInfo = mUserManagerInternal.getUserInfo(targetUserId);
-
// Choosing strategy based on source and target user
CrossProfileResolver crossProfileResolver =
- chooseCrossProfileResolver(computer, userInfo, targetUserInfo);
+ chooseCrossProfileResolver(computer, userId, targetUserId);
/*
If {@link CrossProfileResolver} is available for source,target pair we will call it to
@@ -234,23 +231,21 @@
/**
* Returns {@link CrossProfileResolver} strategy based on source and target user
* @param computer {@link Computer} instance used for resolution by {@link ComponentResolverApi}
- * @param sourceUserInfo source user
- * @param targetUserInfo target user
+ * @param sourceUserId source user
+ * @param targetUserId target user
* @return {@code CrossProfileResolver} which has value if source and target have
* strategy configured otherwise null.
*/
@SuppressWarnings("unused")
private CrossProfileResolver chooseCrossProfileResolver(@NonNull Computer computer,
- UserInfo sourceUserInfo, UserInfo targetUserInfo) {
- //todo change isCloneProfile to user properties b/241532322
+ @UserIdInt int sourceUserId, @UserIdInt int targetUserId) {
/**
- * If source or target user is clone profile, using {@link CloneProfileResolver}
- * We would allow CloneProfileResolver only if flag
- * SETTINGS_ALLOW_INTENT_REDIRECTION_FOR_CLONE_PROFILE is enabled
+ * If source or target user is clone profile, using {@link NoFilteringResolver}
+ * We would return NoFilteringResolver only if it is allowed(feature flag is set).
*/
- if (sourceUserInfo.isCloneProfile() || targetUserInfo.isCloneProfile()) {
- if (CloneProfileResolver.isIntentRedirectionForCloneProfileAllowed()) {
- return new CloneProfileResolver(computer.getComponentResolver(),
+ if (shouldUseNoFilteringResolver(sourceUserId, targetUserId)) {
+ if (NoFilteringResolver.isIntentRedirectionAllowed()) {
+ return new NoFilteringResolver(computer.getComponentResolver(),
mUserManager);
} else {
return null;
@@ -624,7 +619,6 @@
categorizeResolveInfoByTargetUser, int sourceUserId, int highestApprovalLevel) {
List<CrossProfileDomainInfo> crossProfileDomainInfos = new ArrayList<>();
- UserInfo sourceUserInfo = mUserManagerInternal.getUserInfo(sourceUserId);
for (int index = 0; index < categorizeResolveInfoByTargetUser.size(); index++) {
@@ -634,8 +628,8 @@
} else {
// finding cross profile strategy based on source and target user
CrossProfileResolver crossProfileIntentResolver =
- chooseCrossProfileResolver(computer, sourceUserInfo, mUserManagerInternal
- .getUserInfo(categorizeResolveInfoByTargetUser.keyAt(index)));
+ chooseCrossProfileResolver(computer, sourceUserId,
+ categorizeResolveInfoByTargetUser.keyAt(index));
// if strategy is available call it and add its filtered results
if (crossProfileIntentResolver != null) {
crossProfileDomainInfos.addAll(crossProfileIntentResolver
@@ -678,4 +672,32 @@
&& crossProfileDomainInfos.get(0).mResolveInfo != null
&& crossProfileDomainInfos.get(0).mResolveInfo.priority >= 0;
}
+
+ /**
+ * Deciding if we need to user {@link NoFilteringResolver} based on source and target user
+ * @param sourceUserId id of initiating user
+ * @param targetUserId id of cross profile linked user
+ * @return true if {@link NoFilteringResolver} is applicable in this case.
+ */
+ private boolean shouldUseNoFilteringResolver(@UserIdInt int sourceUserId,
+ @UserIdInt int targetUserId) {
+ return isNoFilteringPropertyConfiguredForUser(sourceUserId)
+ || isNoFilteringPropertyConfiguredForUser(targetUserId);
+ }
+
+ /**
+ * Check if configure property for cross profile intent resolution strategy for user is
+ * {@link UserProperties#CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_NO_FILTERING}
+ * @param userId id of user to check for property
+ * @return true if user have property set to
+ * {@link UserProperties#CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_NO_FILTERING}
+ */
+ private boolean isNoFilteringPropertyConfiguredForUser(@UserIdInt int userId) {
+ if (!mUserManager.isProfile(userId)) return false;
+ UserProperties userProperties = mUserManagerInternal.getUserProperties(userId);
+ if (userProperties == null) return false;
+
+ return userProperties.getCrossProfileIntentResolutionStrategy()
+ == UserProperties.CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_NO_FILTERING;
+ }
}
diff --git a/services/core/java/com/android/server/pm/DexOptHelper.java b/services/core/java/com/android/server/pm/DexOptHelper.java
index 69aaa0d..8757310 100644
--- a/services/core/java/com/android/server/pm/DexOptHelper.java
+++ b/services/core/java/com/android/server/pm/DexOptHelper.java
@@ -66,6 +66,8 @@
import com.android.server.art.model.ArtFlags;
import com.android.server.art.model.OptimizeParams;
import com.android.server.art.model.OptimizeResult;
+import com.android.server.pm.Installer.InstallerException;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.PackageDexOptimizer.DexOptResult;
import com.android.server.pm.dex.DexManager;
import com.android.server.pm.dex.DexoptOptions;
@@ -125,8 +127,9 @@
* and {@code numberOfPackagesFailed}.
*/
public int[] performDexOptUpgrade(List<PackageStateInternal> packageStates, boolean showDialog,
- final int compilationReason, boolean bootComplete) {
-
+ final int compilationReason, boolean bootComplete)
+ throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
int numberOfPackagesVisited = 0;
int numberOfPackagesOptimized = 0;
int numberOfPackagesSkipped = 0;
@@ -158,7 +161,7 @@
// even if things are already compiled.
// useProfileForDexopt = true;
}
- } catch (Exception e) {
+ } catch (InstallerException | RuntimeException e) {
Log.e(TAG, "Failed to copy profile " + profileFile.getAbsolutePath() + " ",
e);
}
@@ -193,7 +196,7 @@
} else {
useProfileForDexopt = true;
}
- } catch (Exception e) {
+ } catch (InstallerException | RuntimeException e) {
Log.e(TAG, "Failed to copy profile "
+ profileFile.getAbsolutePath() + " ", e);
}
@@ -284,7 +287,8 @@
* Checks if system UI package (typically "com.android.systemui") needs to be re-compiled, and
* compiles it if needed.
*/
- private void checkAndDexOptSystemUi() {
+ private void checkAndDexOptSystemUi() throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
Computer snapshot = mPm.snapshotComputer();
String sysUiPackageName =
mPm.mContext.getString(com.android.internal.R.string.config_systemUi);
@@ -320,7 +324,7 @@
Log.e(TAG, "Failed to copy profile " + profileFile.getAbsolutePath());
}
}
- } catch (Exception e) {
+ } catch (InstallerException | RuntimeException e) {
Log.e(TAG, "Failed to copy profile " + profileFile.getAbsolutePath(), e);
}
}
@@ -341,7 +345,7 @@
}
@RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
- public void performPackageDexOptUpgradeIfNeeded() {
+ public void performPackageDexOptUpgradeIfNeeded() throws LegacyDexoptDisabledException {
PackageManagerServiceUtils.enforceSystemOrRoot(
"Only the system can request package update");
@@ -413,7 +417,12 @@
}
if (options.isDexoptOnlySecondaryDex()) {
- return mPm.getDexManager().dexoptSecondaryDex(options);
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ return mPm.getDexManager().dexoptSecondaryDex(options);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
} else {
int dexoptStatus = performDexOptWithStatus(options);
return dexoptStatus != PackageDexOptimizer.DEX_OPT_FAILED;
@@ -470,6 +479,8 @@
final long callingId = Binder.clearCallingIdentity();
try {
return performDexOptInternalWithDependenciesLI(p, pkgSetting, options);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
} finally {
Binder.restoreCallingIdentity(callingId);
}
@@ -542,10 +553,11 @@
@DexOptResult
private int performDexOptInternalWithDependenciesLI(
- AndroidPackage p, @NonNull PackageStateInternal pkgSetting, DexoptOptions options) {
- // System server gets a special path.
+ AndroidPackage p, @NonNull PackageStateInternal pkgSetting, DexoptOptions options)
+ throws LegacyDexoptDisabledException {
if (PLATFORM_PACKAGE_NAME.equals(p.getPackageName())) {
- return mPm.getDexManager().dexoptSystemServer(options);
+ // This needs to be done in odrefresh in early boot, for security reasons.
+ throw new IllegalArgumentException("Cannot dexopt the system server");
}
// Select the dex optimizer based on the force parameter.
@@ -621,7 +633,11 @@
if (artSrvRes.isPresent()) {
res = artSrvRes.get();
} else {
- res = performDexOptInternalWithDependenciesLI(pkg, packageState, options);
+ try {
+ res = performDexOptInternalWithDependenciesLI(pkg, packageState, options);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
@@ -666,8 +682,8 @@
return installerPkg.getUid() == Binder.getCallingUid();
}
- public boolean performDexOptSecondary(String packageName, String compilerFilter,
- boolean force) {
+ public boolean performDexOptSecondary(
+ String packageName, String compilerFilter, boolean force) {
int flags = DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX
| DexoptOptions.DEXOPT_CHECK_FOR_PROFILES_UPDATES
| DexoptOptions.DEXOPT_BOOT_COMPLETE
@@ -869,7 +885,7 @@
}
}
- /*package*/ void controlDexOptBlocking(boolean block) {
+ /*package*/ void controlDexOptBlocking(boolean block) throws LegacyDexoptDisabledException {
mPm.mPackageDexOptimizer.controlDexOptBlocking(block);
}
@@ -929,10 +945,17 @@
}
/**
+ * Returns true if ART Service should be used for package optimization.
+ */
+ public static boolean useArtService() {
+ return SystemProperties.getBoolean("dalvik.vm.useartservice", false);
+ }
+
+ /**
* Returns {@link DexUseManagerLocal} if ART Service should be used for package optimization.
*/
public static @Nullable DexUseManagerLocal getDexUseManagerLocal() {
- if (!"true".equals(SystemProperties.get("dalvik.vm.useartservice", ""))) {
+ if (!useArtService()) {
return null;
}
try {
@@ -946,7 +969,7 @@
* Returns {@link ArtManagerLocal} if ART Service should be used for package optimization.
*/
private static @Nullable ArtManagerLocal getArtManagerLocal() {
- if (!"true".equals(SystemProperties.get("dalvik.vm.useartservice", ""))) {
+ if (!useArtService()) {
return null;
}
try {
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index 0ee1bbf..803c97a 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -46,6 +46,7 @@
import static android.os.storage.StorageManager.FLAG_STORAGE_DE;
import static android.os.storage.StorageManager.FLAG_STORAGE_EXTERNAL;
+import static com.android.server.pm.DexOptHelper.useArtService;
import static com.android.server.pm.InstructionSets.getAppDexInstructionSets;
import static com.android.server.pm.InstructionSets.getDexCodeInstructionSet;
import static com.android.server.pm.InstructionSets.getPreferredInstructionSet;
@@ -157,6 +158,7 @@
import com.android.internal.util.CollectionUtils;
import com.android.internal.util.FrameworkStatsLog;
import com.android.server.EventLogTags;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.dex.ArtManagerService;
import com.android.server.pm.dex.DexManager;
import com.android.server.pm.dex.DexoptOptions;
@@ -261,7 +263,8 @@
final PackageSetting oldPkgSetting = request.getScanRequestOldPackageSetting();
final PackageSetting originalPkgSetting = request.getScanRequestOriginalPackageSetting();
final String realPkgName = request.getRealPackageName();
- final List<String> changedAbiCodePath = request.getChangedAbiCodePath();
+ final List<String> changedAbiCodePath =
+ useArtService() ? null : request.getChangedAbiCodePath();
final PackageSetting pkgSetting;
if (request.getScanRequestPackageSetting() != null) {
SharedUserSetting requestSharedUserSetting = mPm.mSettings.getSharedUserSettingLPr(
@@ -362,6 +365,8 @@
}
pkgSetting.setSigningDetails(reconciledPkg.mSigningDetails);
+ // The conditional on useArtService() for changedAbiCodePath above means this is skipped
+ // when ART Service is in use, since it has its own dex file GC.
if (changedAbiCodePath != null && changedAbiCodePath.size() > 0) {
for (int i = changedAbiCodePath.size() - 1; i >= 0; --i) {
final String codePathString = changedAbiCodePath.get(i);
@@ -370,6 +375,8 @@
mPm.mInstaller.rmdex(codePathString,
getDexCodeInstructionSet(getPreferredInstructionSet()));
}
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
} catch (Installer.InstallerException ignored) {
}
}
@@ -2315,12 +2322,18 @@
pkg.getBaseApkPath(), pkg.getSplitCodePaths());
}
- // Prepare the application profiles for the new code paths.
- // This needs to be done before invoking dexopt so that any install-time profile
- // can be used for optimizations.
- mArtManagerService.prepareAppProfiles(
- pkg, mPm.resolveUserIds(installRequest.getUserId()),
- /* updateReferenceProfileContent= */ true);
+ if (!useArtService()) { // ART Service handles this on demand instead.
+ // Prepare the application profiles for the new code paths.
+ // This needs to be done before invoking dexopt so that any install-time profile
+ // can be used for optimizations.
+ try {
+ mArtManagerService.prepareAppProfiles(pkg,
+ mPm.resolveUserIds(installRequest.getUserId()),
+ /* updateReferenceProfileContent= */ true);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
+ }
// Compute the compilation reason from the installation scenario.
final int compilationReason =
@@ -2398,19 +2411,30 @@
realPkgSetting.getPkgState().setUpdatedSystemApp(isUpdatedSystemApp);
- mPackageDexOptimizer.performDexOpt(pkg, realPkgSetting,
- null /* instructionSets */,
- mPm.getOrCreateCompilerPackageStats(pkg),
- mDexManager.getPackageUseInfoOrDefault(packageName),
- dexoptOptions);
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ mPackageDexOptimizer.performDexOpt(pkg, realPkgSetting,
+ null /* instructionSets */, mPm.getOrCreateCompilerPackageStats(pkg),
+ mDexManager.getPackageUseInfoOrDefault(packageName), dexoptOptions);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
}
- // Notify BackgroundDexOptService that the package has been changed.
- // If this is an update of a package which used to fail to compile,
- // BackgroundDexOptService will remove it from its denylist.
- // TODO: Layering violation
- BackgroundDexOptService.getService().notifyPackageChanged(packageName);
+ if (!useArtService()) {
+ // Notify BackgroundDexOptService that the package has been changed.
+ // If this is an update of a package which used to fail to compile,
+ // BackgroundDexOptService will remove it from its denylist.
+ // ART Service currently doesn't support this and will retry packages in every
+ // background dexopt.
+ // TODO: Layering violation
+ try {
+ BackgroundDexOptService.getService().notifyPackageChanged(packageName);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
PackageManagerServiceUtils.waitForNativeBinariesExtractionForIncremental(
incrementalStorages);
@@ -2764,6 +2788,12 @@
installerPackageName, null /*finishedReceiver*/,
updateUserIds, instantUserIds, null /* broadcastAllowList */, null);
}
+ // Send to PermissionController for all update users, even if it may not be running
+ // for some users
+ mPm.sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName,
+ extras, 0 /*flags*/,
+ mPm.mRequiredPermissionControllerPackage, null /*finishedReceiver*/,
+ updateUserIds, instantUserIds, null /* broadcastAllowList */, null);
// Notify required verifier(s) that are not the installer of record for the package.
for (String verifierPackageName : mPm.mRequiredVerifierPackages) {
if (verifierPackageName != null && !verifierPackageName.equals(
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java
index a078b5d..9329f06 100644
--- a/services/core/java/com/android/server/pm/Installer.java
+++ b/services/core/java/com/android/server/pm/Installer.java
@@ -16,6 +16,8 @@
package com.android.server.pm;
+import static com.android.server.pm.DexOptHelper.useArtService;
+
import android.annotation.AppIdInt;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -609,11 +611,13 @@
* @throws InstallerException if {@code dexopt} fails.
*/
public boolean dexopt(String apkPath, int uid, String pkgName, String instructionSet,
- int dexoptNeeded, @Nullable String outputPath, int dexFlags,
- String compilerFilter, @Nullable String volumeUuid, @Nullable String classLoaderContext,
+ int dexoptNeeded, @Nullable String outputPath, int dexFlags, String compilerFilter,
+ @Nullable String volumeUuid, @Nullable String classLoaderContext,
@Nullable String seInfo, boolean downgrade, int targetSdkVersion,
@Nullable String profileName, @Nullable String dexMetadataPath,
- @Nullable String compilationReason) throws InstallerException {
+ @Nullable String compilationReason)
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
assertValidInstructionSet(instructionSet);
BlockGuard.getVmPolicy().onPathAccess(apkPath);
BlockGuard.getVmPolicy().onPathAccess(outputPath);
@@ -637,7 +641,8 @@
*
* @param block set to true to enable blocking / false to disable blocking.
*/
- public void controlDexOptBlocking(boolean block) {
+ public void controlDexOptBlocking(boolean block) throws LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
try {
mInstalld.controlDexOptBlocking(block);
} catch (Exception e) {
@@ -655,7 +660,8 @@
* {@link #PROFILE_ANALYSIS_DONT_OPTIMIZE_EMPTY_PROFILES}
*/
public int mergeProfiles(int uid, String packageName, String profileName)
- throws InstallerException {
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return PROFILE_ANALYSIS_DONT_OPTIMIZE_SMALL_DELTA;
try {
return mInstalld.mergeProfiles(uid, packageName, profileName);
@@ -668,8 +674,9 @@
* Dumps profiles associated with a package in a human readable format.
*/
public boolean dumpProfiles(int uid, String packageName, String profileName, String codePath,
- boolean dumpClassesAndMethods)
- throws InstallerException {
+ boolean dumpClassesAndMethods)
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return false;
BlockGuard.getVmPolicy().onPathAccess(codePath);
try {
@@ -681,7 +688,8 @@
}
public boolean copySystemProfile(String systemProfile, int uid, String packageName,
- String profileName) throws InstallerException {
+ String profileName) throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return false;
try {
return mInstalld.copySystemProfile(systemProfile, uid, packageName, profileName);
@@ -690,7 +698,9 @@
}
}
- public void rmdex(String codePath, String instructionSet) throws InstallerException {
+ public void rmdex(String codePath, String instructionSet)
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
assertValidInstructionSet(instructionSet);
if (!checkBeforeRemote()) return;
BlockGuard.getVmPolicy().onPathAccess(codePath);
@@ -714,7 +724,9 @@
}
}
- public void clearAppProfiles(String packageName, String profileName) throws InstallerException {
+ public void clearAppProfiles(String packageName, String profileName)
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return;
try {
mInstalld.clearAppProfiles(packageName, profileName);
@@ -723,7 +735,9 @@
}
}
- public void destroyAppProfiles(String packageName) throws InstallerException {
+ public void destroyAppProfiles(String packageName)
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return;
try {
mInstalld.destroyAppProfiles(packageName);
@@ -737,7 +751,8 @@
* @throws InstallerException if the deletion fails.
*/
public void deleteReferenceProfile(String packageName, String profileName)
- throws InstallerException {
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return;
try {
mInstalld.deleteReferenceProfile(packageName, profileName);
@@ -799,7 +814,8 @@
* Creates an oat dir for given package and instruction set.
*/
public void createOatDir(String packageName, String oatDir, String dexInstructionSet)
- throws InstallerException {
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return;
try {
mInstalld.createOatDir(packageName, oatDir, dexInstructionSet);
@@ -843,7 +859,8 @@
* of freed bytes.
*/
public long deleteOdex(String packageName, String apkPath, String instructionSet,
- String outputPath) throws InstallerException {
+ String outputPath) throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return -1;
BlockGuard.getVmPolicy().onPathAccess(apkPath);
BlockGuard.getVmPolicy().onPathAccess(outputPath);
@@ -855,7 +872,9 @@
}
public boolean reconcileSecondaryDexFile(String apkPath, String packageName, int uid,
- String[] isas, @Nullable String volumeUuid, int flags) throws InstallerException {
+ String[] isas, @Nullable String volumeUuid, int flags)
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
for (int i = 0; i < isas.length; i++) {
assertValidInstructionSet(isas[i]);
}
@@ -881,7 +900,8 @@
}
public boolean createProfileSnapshot(int appId, String packageName, String profileName,
- String classpath) throws InstallerException {
+ String classpath) throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return false;
try {
return mInstalld.createProfileSnapshot(appId, packageName, profileName, classpath);
@@ -891,7 +911,8 @@
}
public void destroyProfileSnapshot(String packageName, String profileName)
- throws InstallerException {
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return;
try {
mInstalld.destroyProfileSnapshot(packageName, profileName);
@@ -952,7 +973,9 @@
* </ul>
*/
public boolean prepareAppProfile(String pkg, @UserIdInt int userId, @AppIdInt int appId,
- String profileName, String codePath, String dexMetadataPath) throws InstallerException {
+ String profileName, String codePath, String dexMetadataPath)
+ throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return false;
BlockGuard.getVmPolicy().onPathAccess(codePath);
BlockGuard.getVmPolicy().onPathAccess(dexMetadataPath);
@@ -1117,7 +1140,8 @@
* @throws InstallerException if failed to get the visibility of the optimized artifacts.
*/
public int getOdexVisibility(String packageName, String apkPath, String instructionSet,
- String outputPath) throws InstallerException {
+ String outputPath) throws InstallerException, LegacyDexoptDisabledException {
+ checkLegacyDexoptDisabled();
if (!checkBeforeRemote()) return -1;
BlockGuard.getVmPolicy().onPathAccess(apkPath);
BlockGuard.getVmPolicy().onPathAccess(outputPath);
@@ -1137,4 +1161,26 @@
throw new InstallerException(e.toString());
}
}
+
+ /**
+ * A checked exception that is thrown in legacy dexopt code paths when ART Service should be
+ * used instead.
+ */
+ public static class LegacyDexoptDisabledException extends Exception {
+ // TODO(b/260124949): Remove the legacy dexopt code paths, i.e. this exception and all code
+ // that may throw it.
+ public LegacyDexoptDisabledException() {
+ super("Invalid call to legacy dexopt installd method while ART Service is in use.");
+ }
+ }
+
+ /**
+ * Throws LegacyDexoptDisabledException if ART Service should be used instead of the
+ * {@link android.os.IInstalld} method that follows this method call.
+ */
+ public static void checkLegacyDexoptDisabled() throws LegacyDexoptDisabledException {
+ if (useArtService()) {
+ throw new LegacyDexoptDisabledException();
+ }
+ }
}
diff --git a/services/core/java/com/android/server/pm/CloneProfileResolver.java b/services/core/java/com/android/server/pm/NoFilteringResolver.java
similarity index 89%
rename from services/core/java/com/android/server/pm/CloneProfileResolver.java
rename to services/core/java/com/android/server/pm/NoFilteringResolver.java
index 73036f1..492f915 100644
--- a/services/core/java/com/android/server/pm/CloneProfileResolver.java
+++ b/services/core/java/com/android/server/pm/NoFilteringResolver.java
@@ -30,9 +30,10 @@
import java.util.function.Function;
/**
- * Cross Profile intent resolution strategy used for and to clone profile.
+ * Intent resolution strategy used when no filtering is required. As of now, the known use-case is
+ * clone profile.
*/
-public class CloneProfileResolver extends CrossProfileResolver {
+public class NoFilteringResolver extends CrossProfileResolver {
/**
* Feature flag to allow/restrict intent redirection from/to clone profile.
@@ -48,7 +49,7 @@
* Returns true if intent redirection for clone profile feature flag is set
* @return value of flag allow_intent_redirection_for_clone_profile
*/
- public static boolean isIntentRedirectionForCloneProfileAllowed() {
+ public static boolean isIntentRedirectionAllowed() {
final long token = Binder.clearCallingIdentity();
try {
return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_APP_CLONING,
@@ -58,13 +59,13 @@
}
}
- public CloneProfileResolver(ComponentResolverApi componentResolver,
+ public NoFilteringResolver(ComponentResolverApi componentResolver,
UserManagerService userManagerService) {
super(componentResolver, userManagerService);
}
/**
- * This is resolution strategy for Clone Profile.
+ * This is resolution strategy for when no filtering is required.
* In case of clone profile, the profile is supposed to be transparent to end user. To end user
* clone and owner profile should be part of same user space. Hence, the resolution strategy
* would resolve intent in both profile and return combined result without any filtering of the
@@ -105,8 +106,8 @@
}
/**
- * As clone and owner profile are going to be part of the same userspace, we need no filtering
- * out of any clone profile's result
+ * In case of Clone profile, the clone and owner profile are going to be part of the same
+ * userspace, we need no filtering out of any clone profile's result.
* @param intent request
* @param crossProfileDomainInfos resolved in target user
* @param flags for intent resolution
@@ -119,7 +120,7 @@
public List<CrossProfileDomainInfo> filterResolveInfoWithDomainPreferredActivity(Intent intent,
List<CrossProfileDomainInfo> crossProfileDomainInfos, long flags, int sourceUserId,
int targetUserId, int highestApprovalLevel) {
- // no filtering for clone profile
+ // no filtering
return crossProfileDomainInfos;
}
}
diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java
index 56f2493..490b2a9 100644
--- a/services/core/java/com/android/server/pm/OtaDexoptService.java
+++ b/services/core/java/com/android/server/pm/OtaDexoptService.java
@@ -37,6 +37,7 @@
import com.android.internal.logging.MetricsLogger;
import com.android.server.LocalServices;
import com.android.server.pm.Installer.InstallerException;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.dex.DexoptOptions;
import com.android.server.pm.parsing.pkg.AndroidPackageUtils;
import com.android.server.pm.pkg.AndroidPackage;
@@ -167,7 +168,13 @@
Log.i(TAG, "Low on space, deleting oat files in an attempt to free up space: "
+ DexOptHelper.packagesToString(others));
for (PackageStateInternal pkg : others) {
- mPackageManagerService.deleteOatArtifactsOfPackage(snapshot, pkg.getPackageName());
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ mPackageManagerService.deleteOatArtifactsOfPackage(
+ snapshot, pkg.getPackageName());
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
}
long spaceAvailableNow = getAvailableSpace();
@@ -188,7 +195,7 @@
+ pkgSetting.getTransientState()
.getLatestForegroundPackageUseTimeInMills());
}
- } catch (Exception ignored) {
+ } catch (RuntimeException ignored) {
}
}
}
@@ -352,13 +359,17 @@
PackageDexOptimizer optimizer = new OTADexoptPackageDexOptimizer(
collectingInstaller, mPackageManagerService.mInstallLock, mContext);
- optimizer.performDexOpt(pkg, pkgSetting,
- null /* ISAs */,
- null /* CompilerStats.PackageStats */,
- mPackageManagerService.getDexManager().getPackageUseInfoOrDefault(
- pkg.getPackageName()),
- new DexoptOptions(pkg.getPackageName(), compilationReason,
- DexoptOptions.DEXOPT_BOOT_COMPLETE));
+ // TODO(b/251903639): Allow this use of legacy dexopt code even when ART Service is enabled.
+ try {
+ optimizer.performDexOpt(pkg, pkgSetting, null /* ISAs */,
+ null /* CompilerStats.PackageStats */,
+ mPackageManagerService.getDexManager().getPackageUseInfoOrDefault(
+ pkg.getPackageName()),
+ new DexoptOptions(pkg.getPackageName(), compilationReason,
+ DexoptOptions.DEXOPT_BOOT_COMPLETE));
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
return commands;
}
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
index aaf8755..f708fbb 100644
--- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java
+++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
@@ -59,7 +59,6 @@
import android.os.Trace;
import android.os.UserHandle;
import android.os.WorkSource;
-import android.os.storage.StorageManager;
import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;
@@ -71,6 +70,7 @@
import com.android.server.LocalServices;
import com.android.server.apphibernation.AppHibernationManagerInternal;
import com.android.server.pm.Installer.InstallerException;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.dex.ArtManagerService;
import com.android.server.pm.dex.ArtStatsLogUtils;
import com.android.server.pm.dex.ArtStatsLogUtils.ArtStatsLogger;
@@ -183,10 +183,13 @@
}
boolean canOptimizePackage(@NonNull AndroidPackage pkg) {
+ // The system package has to be optimized during early boot by odrefresh instead.
+ if (PLATFORM_PACKAGE_NAME.equals(pkg.getPackageName())) {
+ return false;
+ }
+
// We do not dexopt a package with no code.
- // Note that the system package is marked as having no code, however we can
- // still optimize it via dexoptSystemServerPath.
- if (!PLATFORM_PACKAGE_NAME.equals(pkg.getPackageName()) && !pkg.isHasCode()) {
+ if (!pkg.isHasCode()) {
return false;
}
@@ -219,10 +222,11 @@
@DexOptResult
int performDexOpt(AndroidPackage pkg, @NonNull PackageStateInternal pkgSetting,
String[] instructionSets, CompilerStats.PackageStats packageStats,
- PackageDexUsage.PackageUseInfo packageUseInfo, DexoptOptions options) {
+ PackageDexUsage.PackageUseInfo packageUseInfo, DexoptOptions options)
+ throws LegacyDexoptDisabledException {
if (PLATFORM_PACKAGE_NAME.equals(pkg.getPackageName())) {
- throw new IllegalArgumentException("System server dexopting should be done via "
- + " DexManager and PackageDexOptimizer#dexoptSystemServerPath");
+ throw new IllegalArgumentException(
+ "System server dexopting should be done via odrefresh");
}
if (pkg.getUid() == -1) {
throw new IllegalArgumentException("Dexopt for " + pkg.getPackageName()
@@ -245,7 +249,7 @@
/**
* Cancels currently running dex optimization.
*/
- void controlDexOptBlocking(boolean block) {
+ void controlDexOptBlocking(boolean block) throws LegacyDexoptDisabledException {
// This method should not hold mInstallLock as cancelling should be possible while
// the lock is held by other thread running performDexOpt.
getInstallerWithoutLock().controlDexOptBlocking(block);
@@ -259,7 +263,8 @@
@DexOptResult
private int performDexOptLI(AndroidPackage pkg, @NonNull PackageStateInternal pkgSetting,
String[] targetInstructionSets, CompilerStats.PackageStats packageStats,
- PackageDexUsage.PackageUseInfo packageUseInfo, DexoptOptions options) {
+ PackageDexUsage.PackageUseInfo packageUseInfo, DexoptOptions options)
+ throws LegacyDexoptDisabledException {
// ClassLoader only refers non-native (jar) shared libraries and must ignore
// native (so) shared libraries. See also LoadedApk#createSharedLibraryLoader().
final List<SharedLibraryInfo> sharedLibraries = pkgSetting.getTransientState()
@@ -439,7 +444,7 @@
*/
@GuardedBy("mInstallLock")
private boolean prepareCloudProfile(AndroidPackage pkg, String profileName, String path,
- @Nullable String dexMetadataPath) {
+ @Nullable String dexMetadataPath) throws LegacyDexoptDisabledException {
if (dexMetadataPath != null) {
try {
// Make sure we don't keep any existing contents.
@@ -472,7 +477,7 @@
String path, String isa, String compilerFilter, int profileAnalysisResult,
String classLoaderContext, int dexoptFlags, int uid,
CompilerStats.PackageStats packageStats, boolean downgrade, String profileName,
- String dexMetadataPath, int compilationReason) {
+ String dexMetadataPath, int compilationReason) throws LegacyDexoptDisabledException {
String oatDir = getPackageOatDirIfSupported(pkgSetting, pkg);
int dexoptNeeded = getDexoptNeeded(pkg.getPackageName(), path, isa, compilerFilter,
@@ -520,65 +525,6 @@
}
}
- /**
- * Perform dexopt (if needed) on a system server code path).
- */
- @GuardedBy("mInstallLock")
- @DexOptResult
- public int dexoptSystemServerPath(
- String dexPath, PackageDexUsage.DexUseInfo dexUseInfo, DexoptOptions options) {
- int dexoptFlags = DEXOPT_PUBLIC
- | (options.isBootComplete() ? DEXOPT_BOOTCOMPLETE : 0)
- | (options.isDexoptIdleBackgroundJob() ? DEXOPT_IDLE_BACKGROUND_JOB : 0);
-
- int result = DEX_OPT_SKIPPED;
- for (String isa : dexUseInfo.getLoaderIsas()) {
- int dexoptNeeded = getDexoptNeeded(
- PackageManagerService.PLATFORM_PACKAGE_NAME,
- dexPath,
- isa,
- options.getCompilerFilter(),
- dexUseInfo.getClassLoaderContext(),
- PROFILE_ANALYSIS_DONT_OPTIMIZE_EMPTY_PROFILES,
- /* downgrade= */ false,
- dexoptFlags,
- /* oatDir= */ null);
-
- if (dexoptNeeded == DexFile.NO_DEXOPT_NEEDED) {
- continue;
- }
- try {
- synchronized (mInstallLock) {
- boolean completed = getInstallerLI().dexopt(
- dexPath,
- android.os.Process.SYSTEM_UID,
- /* pkgName= */ "android",
- isa,
- dexoptNeeded,
- /* outputPath= */ null,
- dexoptFlags,
- options.getCompilerFilter(),
- StorageManager.UUID_PRIVATE_INTERNAL,
- dexUseInfo.getClassLoaderContext(),
- /* seInfo= */ null,
- /* downgrade= */ false,
- /* targetSdkVersion= */ 0,
- /* profileName= */ null,
- /* dexMetadataPath= */ null,
- getReasonName(options.getCompilationReason()));
- if (!completed) {
- return DEX_OPT_CANCELLED;
- }
- }
- } catch (InstallerException e) {
- Slog.w(TAG, "Failed to dexopt", e);
- return DEX_OPT_FAILED;
- }
- result = DEX_OPT_PERFORMED;
- }
- return result;
- }
-
private String getAugmentedReasonName(int compilationReason, boolean useDexMetadata) {
String annotation = useDexMetadata
? ArtManagerService.DEXOPT_REASON_WITH_DEX_METADATA_ANNOTATION : "";
@@ -601,7 +547,8 @@
*/
@DexOptResult
public int dexOptSecondaryDexPath(ApplicationInfo info, String path,
- PackageDexUsage.DexUseInfo dexUseInfo, DexoptOptions options) {
+ PackageDexUsage.DexUseInfo dexUseInfo, DexoptOptions options)
+ throws LegacyDexoptDisabledException {
if (info.uid == -1) {
throw new IllegalArgumentException("Dexopt for path " + path + " has invalid uid.");
}
@@ -643,7 +590,7 @@
+ " time out. Operation took " + duration + " ms. Thread: "
+ Thread.currentThread().getName());
}
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Slog.wtf(TAG, "Error while releasing " + mDexoptWakeLock.getTag() + " lock", e);
}
}
@@ -651,7 +598,8 @@
@GuardedBy("mInstallLock")
@DexOptResult
private int dexOptSecondaryDexPathLI(ApplicationInfo info, String path,
- PackageDexUsage.DexUseInfo dexUseInfo, DexoptOptions options) {
+ PackageDexUsage.DexUseInfo dexUseInfo, DexoptOptions options)
+ throws LegacyDexoptDisabledException {
String compilerFilter = getRealCompilerFilter(info, options.getCompilerFilter(),
dexUseInfo.isUsedByOtherApps());
// Get the dexopt flags after getRealCompilerFilter to make sure we get the correct flags.
@@ -729,7 +677,8 @@
* Dumps the dexopt state of the given package {@code pkg} to the given {@code PrintWriter}.
*/
void dumpDexoptState(IndentingPrintWriter pw, AndroidPackage pkg,
- PackageStateInternal pkgSetting, PackageDexUsage.PackageUseInfo useInfo) {
+ PackageStateInternal pkgSetting, PackageDexUsage.PackageUseInfo useInfo)
+ throws LegacyDexoptDisabledException {
final String[] instructionSets = getAppDexInstructionSets(pkgSetting.getPrimaryCpuAbi(),
pkgSetting.getSecondaryCpuAbi());
final String[] dexCodeInstructionSets = getDexCodeInstructionSets(instructionSets);
@@ -929,7 +878,8 @@
@GuardedBy("mInstallLock")
private int getDexoptNeeded(String packageName, String path, String isa, String compilerFilter,
String classLoaderContext, int profileAnalysisResult, boolean downgrade,
- int dexoptFlags, String oatDir) {
+ int dexoptFlags, String oatDir) throws LegacyDexoptDisabledException {
+ Installer.checkLegacyDexoptDisabled();
final boolean shouldBePublic = (dexoptFlags & DEXOPT_PUBLIC) != 0;
final boolean isProfileGuidedFilter = (dexoptFlags & DEXOPT_PROFILE_GUIDED) != 0;
boolean newProfile = profileAnalysisResult == PROFILE_ANALYSIS_OPTIMIZE;
@@ -962,7 +912,7 @@
} catch (IOException ioe) {
Slog.w(TAG, "IOException reading apk: " + path, ioe);
return DEX_OPT_FAILED;
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Slog.wtf(TAG, "Unexpected exception when calling dexoptNeeded on " + path, e);
return DEX_OPT_FAILED;
}
@@ -976,11 +926,12 @@
/** Returns true if the current artifacts of the app are private to the app itself. */
@GuardedBy("mInstallLock")
- private boolean isOdexPrivate(String packageName, String path, String isa, String oatDir) {
+ private boolean isOdexPrivate(String packageName, String path, String isa, String oatDir)
+ throws LegacyDexoptDisabledException {
try {
return mInstaller.getOdexVisibility(packageName, path, isa, oatDir)
== Installer.ODEX_IS_PRIVATE;
- } catch (Exception e) {
+ } catch (InstallerException e) {
Slog.w(TAG, "Failed to get odex visibility for " + path, e);
return false;
}
@@ -996,7 +947,7 @@
* may return a different result.
*/
private int analyseProfiles(AndroidPackage pkg, int uid, String profileName,
- String compilerFilter) {
+ String compilerFilter) throws LegacyDexoptDisabledException {
// Check if we are allowed to merge and if the compiler filter is profile guided.
if (!isProfileGuidedCompilerFilter(compilerFilter)) {
return PROFILE_ANALYSIS_DONT_OPTIMIZE_SMALL_DELTA;
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index afcd9d1..0556c3b 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -48,6 +48,7 @@
import static com.android.internal.util.XmlUtils.writeByteArrayAttribute;
import static com.android.internal.util.XmlUtils.writeStringAttribute;
import static com.android.internal.util.XmlUtils.writeUriAttribute;
+import static com.android.server.pm.DexOptHelper.useArtService;
import static com.android.server.pm.PackageInstallerService.prepareStageDir;
import static com.android.server.pm.PackageManagerService.APP_METADATA_FILE_NAME;
@@ -164,6 +165,7 @@
import com.android.modules.utils.TypedXmlSerializer;
import com.android.server.LocalServices;
import com.android.server.pm.Installer.InstallerException;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.dex.DexManager;
import com.android.server.pm.pkg.AndroidPackage;
import com.android.server.pm.pkg.PackageStateInternal;
@@ -2382,9 +2384,15 @@
}
if (isLinkPossible(fromFiles, toDir)) {
- if (!mResolvedInstructionSets.isEmpty()) {
- final File oatDir = new File(toDir, "oat");
- createOatDirs(tempPackageName, mResolvedInstructionSets, oatDir);
+ if (!useArtService()) { // ART Service creates oat dirs on demand instead.
+ if (!mResolvedInstructionSets.isEmpty()) {
+ final File oatDir = new File(toDir, "oat");
+ try {
+ createOatDirs(tempPackageName, mResolvedInstructionSets, oatDir);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
// pre-create lib dirs for linking if necessary
if (!mResolvedNativeLibPaths.isEmpty()) {
@@ -3629,7 +3637,7 @@
}
private void createOatDirs(String packageName, List<String> instructionSets, File fromDir)
- throws PackageManagerException {
+ throws PackageManagerException, LegacyDexoptDisabledException {
for (String instructionSet : instructionSets) {
try {
mInstaller.createOatDir(packageName, fromDir.getAbsolutePath(), instructionSet);
diff --git a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
index cc9c1e0..04f5e56 100644
--- a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
+++ b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
@@ -47,6 +47,7 @@
import android.util.ArraySet;
import android.util.SparseArray;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.dex.DexManager;
import com.android.server.pm.dex.DynamicCodeLogger;
import com.android.server.pm.permission.PermissionManagerServiceInternal;
@@ -354,7 +355,7 @@
@Override
@Deprecated
public final void setOwnerProtectedPackages(
- @UserIdInt int userId, @NonNull List<String> packageNames) {
+ @UserIdInt int userId, @Nullable List<String> packageNames) {
getProtectedPackages().setOwnerProtectedPackages(userId, packageNames);
}
@@ -708,7 +709,12 @@
@Override
@Deprecated
public final long deleteOatArtifactsOfPackage(String packageName) {
- return mService.deleteOatArtifactsOfPackage(snapshot(), packageName);
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ return mService.deleteOatArtifactsOfPackage(snapshot(), packageName);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
@Override
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index c1298ff..9a98e1e 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -39,6 +39,7 @@
import static com.android.internal.annotations.VisibleForTesting.Visibility;
import static com.android.internal.util.FrameworkStatsLog.BOOT_TIME_EVENT_DURATION__EVENT__OTA_PACKAGE_MANAGER_INIT_TIME;
+import static com.android.server.pm.DexOptHelper.useArtService;
import static com.android.server.pm.InstructionSets.getDexCodeInstructionSet;
import static com.android.server.pm.InstructionSets.getPreferredInstructionSet;
import static com.android.server.pm.PackageManagerServiceUtils.compareSignatures;
@@ -198,6 +199,7 @@
import com.android.server.compat.CompatChange;
import com.android.server.compat.PlatformCompat;
import com.android.server.pm.Installer.InstallerException;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.Settings.VersionInfo;
import com.android.server.pm.dex.ArtManagerService;
import com.android.server.pm.dex.ArtUtils;
@@ -2136,16 +2138,19 @@
// the rest of the commands above) because there's precious little we
// can do about it. A settings error is reported, though.
final List<String> changedAbiCodePath =
- ScanPackageUtils.applyAdjustedAbiToSharedUser(
- setting, null /*scannedPackage*/,
+ ScanPackageUtils.applyAdjustedAbiToSharedUser(setting,
+ null /*scannedPackage*/,
mInjector.getAbiHelper().getAdjustedAbiForSharedUser(
setting.getPackageStates(), null /*scannedPackage*/));
- if (changedAbiCodePath != null && changedAbiCodePath.size() > 0) {
+ if (!useArtService() && // Skip for ART Service since it has its own dex file GC.
+ changedAbiCodePath != null && changedAbiCodePath.size() > 0) {
for (int i = changedAbiCodePath.size() - 1; i >= 0; --i) {
final String codePathString = changedAbiCodePath.get(i);
try {
mInstaller.rmdex(codePathString,
getDexCodeInstructionSet(getPreferredInstructionSet()));
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
} catch (InstallerException ignored) {
}
}
@@ -2952,7 +2957,12 @@
}
public void updatePackagesIfNeeded() {
- mDexOptHelper.performPackageDexOptUpgradeIfNeeded();
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ mDexOptHelper.performPackageDexOptUpgradeIfNeeded();
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
private void notifyPackageUseInternal(String packageName, int reason) {
@@ -4266,10 +4276,20 @@
}
});
- mBackgroundDexOptService.systemReady();
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ mBackgroundDexOptService.systemReady();
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
// Prune unused static shared libraries which have been cached a period of time
schedulePruneUnusedStaticSharedLibraries(false /* delay */);
+
+ DexUseManagerLocal dexUseManager = DexOptHelper.getDexUseManagerLocal();
+ if (dexUseManager != null) {
+ dexUseManager.systemReady();
+ }
}
//TODO: b/111402650
@@ -4615,7 +4635,8 @@
final Computer snapshot = snapshotComputer();
final AndroidPackage pkg = snapshot.getPackage(packageName);
- try (PackageFreezer ignored = freezePackage(packageName, "clearApplicationProfileData")) {
+ try (PackageFreezer ignored =
+ freezePackage(packageName, "clearApplicationProfileData")) {
synchronized (mInstallLock) {
mAppDataHelper.clearAppProfilesLIF(pkg);
}
@@ -4797,9 +4818,14 @@
throw new IllegalArgumentException("Unknown package: " + packageName);
}
+ // TODO(b/251903639): Call into ART Service.
synchronized (mInstallLock) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dump profiles");
- mArtManagerService.dumpProfiles(pkg, dumpClassesAndMethods);
+ try {
+ mArtManagerService.dumpProfiles(pkg, dumpClassesAndMethods);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
}
}
@@ -5497,20 +5523,40 @@
*/
@Override
public void reconcileSecondaryDexFiles(String packageName) {
+ if (useArtService()) {
+ // ART Service currently relies on a GC to find stale oat files, including secondary
+ // dex files. Hence it doesn't use this call for anything.
+ return;
+ }
+
final Computer snapshot = snapshotComputer();
if (snapshot.getInstantAppPackageName(Binder.getCallingUid()) != null) {
return;
} else if (snapshot.isInstantAppInternal(
- packageName, UserHandle.getCallingUserId(), Process.SYSTEM_UID)) {
+ packageName, UserHandle.getCallingUserId(), Process.SYSTEM_UID)) {
return;
}
- mDexManager.reconcileSecondaryDexFiles(packageName);
+ try {
+ mDexManager.reconcileSecondaryDexFiles(packageName);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
@Override
public void registerDexModule(String packageName, String dexModulePath,
boolean isSharedModule,
IDexModuleRegisterCallback callback) {
+ if (useArtService()) {
+ // ART Service currently doesn't support this explicit dexopting and instead relies
+ // on background dexopt for secondary dex files. This API is problematic since it
+ // doesn't provide the correct classloader context.
+ Slog.i(TAG,
+ "Ignored unsupported registerDexModule call for " + dexModulePath + " in "
+ + packageName);
+ return;
+ }
+
int userId = UserHandle.getCallingUserId();
ApplicationInfo ai = snapshot().getApplicationInfo(packageName, /*flags*/ 0, userId);
DexManager.RegisterDexModuleResult result;
@@ -5520,7 +5566,12 @@
" calling user. package=" + packageName + ", user=" + userId);
result = new DexManager.RegisterDexModuleResult(false, "Package not installed");
} else {
- result = mDexManager.registerDexModule(ai, dexModulePath, isSharedModule, userId);
+ try {
+ result = mDexManager.registerDexModule(
+ ai, dexModulePath, isSharedModule, userId);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
if (callback != null) {
@@ -6460,7 +6511,7 @@
List<String> targetPackages = new ArrayList<>();
PackageManagerService.this.forEachPackageState(snapshot(), packageState -> {
final AndroidPackage pkg = packageState.getPkg();
- if (pkg != null && !pkg.isOverlay()) {
+ if (pkg != null && !pkg.isResourceOverlay()) {
targetPackages.add(pkg.getPackageName());
}
});
@@ -6994,7 +7045,8 @@
return AndroidPackageUtils.canHaveOatDir(packageState, packageState.getPkg());
}
- long deleteOatArtifactsOfPackage(@NonNull Computer snapshot, String packageName) {
+ long deleteOatArtifactsOfPackage(@NonNull Computer snapshot, String packageName)
+ throws LegacyDexoptDisabledException {
PackageManagerServiceUtils.enforceSystemOrRootOrShell(
"Only the system or shell can delete oat artifacts");
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index b53c75a..0709502 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -113,6 +113,7 @@
import com.android.server.LocalServices;
import com.android.server.SystemConfig;
import com.android.server.art.ArtManagerLocal;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.PackageManagerShellCommandDataLoader.Metadata;
import com.android.server.pm.permission.LegacyPermissionManagerInternal;
import com.android.server.pm.permission.PermissionAllowlist;
@@ -1953,52 +1954,62 @@
}
private int runBgDexOpt() throws RemoteException {
- String opt = getNextOption();
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ String opt = getNextOption();
- if (opt == null) {
- List<String> packageNames = new ArrayList<>();
- String arg;
- while ((arg = getNextArg()) != null) {
- packageNames.add(arg);
- }
- if (!BackgroundDexOptService.getService().runBackgroundDexoptJob(
- packageNames.isEmpty() ? null : packageNames)) {
- getOutPrintWriter().println("Failure");
- return -1;
- }
- } else {
- String extraArg = getNextArg();
- if (extraArg != null) {
- getErrPrintWriter().println("Invalid argument: " + extraArg);
- return -1;
- }
-
- switch (opt) {
- case "--cancel":
- return cancelBgDexOptJob();
-
- case "--disable":
- BackgroundDexOptService.getService().setDisableJobSchedulerJobs(true);
- break;
-
- case "--enable":
- BackgroundDexOptService.getService().setDisableJobSchedulerJobs(false);
- break;
-
- default:
- getErrPrintWriter().println("Unknown option: " + opt);
+ if (opt == null) {
+ List<String> packageNames = new ArrayList<>();
+ String arg;
+ while ((arg = getNextArg()) != null) {
+ packageNames.add(arg);
+ }
+ if (!BackgroundDexOptService.getService().runBackgroundDexoptJob(
+ packageNames.isEmpty() ? null : packageNames)) {
+ getOutPrintWriter().println("Failure");
return -1;
- }
- }
+ }
+ } else {
+ String extraArg = getNextArg();
+ if (extraArg != null) {
+ getErrPrintWriter().println("Invalid argument: " + extraArg);
+ return -1;
+ }
- getOutPrintWriter().println("Success");
- return 0;
+ switch (opt) {
+ case "--cancel":
+ return cancelBgDexOptJob();
+
+ case "--disable":
+ BackgroundDexOptService.getService().setDisableJobSchedulerJobs(true);
+ break;
+
+ case "--enable":
+ BackgroundDexOptService.getService().setDisableJobSchedulerJobs(false);
+ break;
+
+ default:
+ getErrPrintWriter().println("Unknown option: " + opt);
+ return -1;
+ }
+ }
+
+ getOutPrintWriter().println("Success");
+ return 0;
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
private int cancelBgDexOptJob() throws RemoteException {
- BackgroundDexOptService.getService().cancelBackgroundDexoptJob();
- getOutPrintWriter().println("Success");
- return 0;
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ BackgroundDexOptService.getService().cancelBackgroundDexoptJob();
+ getOutPrintWriter().println("Success");
+ return 0;
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
+ }
}
private int runDeleteDexOpt() throws RemoteException {
@@ -2008,8 +2019,8 @@
pw.println("Error: no package name");
return 1;
}
- long freedBytes = LocalServices.getService(
- PackageManagerInternal.class).deleteOatArtifactsOfPackage(packageName);
+ long freedBytes = LocalServices.getService(PackageManagerInternal.class)
+ .deleteOatArtifactsOfPackage(packageName);
if (freedBytes < 0) {
pw.println("Error: delete failed");
return 1;
@@ -2273,7 +2284,7 @@
if (abandonSession) {
try {
doAbandonSession(sessionId, false /*logSuccess*/);
- } catch (Exception ignore) {
+ } catch (RuntimeException ignore) {
}
}
}
@@ -3012,6 +3023,10 @@
case UserManager.REMOVE_RESULT_ALREADY_BEING_REMOVED:
getOutPrintWriter().printf("Success: user %d is already being removed\n", userId);
return 0;
+ case UserManager.REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN:
+ getOutPrintWriter().printf("Error: user %d is a permanent admin main user\n",
+ userId);
+ return 1;
default:
getErrPrintWriter().printf("Error: couldn't remove or mark ephemeral user id %d\n",
userId);
diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java
index 433e7a1..877b112 100644
--- a/services/core/java/com/android/server/pm/PackageSetting.java
+++ b/services/core/java/com/android/server/pm/PackageSetting.java
@@ -328,7 +328,7 @@
int[] userIds) {
for (int userId = 0; userId < userIds.length; userId++) {
final long previousFirstInstallTime =
- replacedPkgSetting.getUserStateOrDefault(userId).getFirstInstallTime();
+ replacedPkgSetting.getUserStateOrDefault(userId).getFirstInstallTimeMillis();
if (previousFirstInstallTime != 0) {
modifyUserState(userId).setFirstInstallTime(previousFirstInstallTime);
}
@@ -897,7 +897,7 @@
? null : otherState.getDisabledComponentsNoCopy().untrackedStorage(),
otherState.getInstallReason(), otherState.getUninstallReason(),
otherState.getHarmfulAppWarning(), otherState.getSplashScreenTheme(),
- otherState.getFirstInstallTime());
+ otherState.getFirstInstallTimeMillis());
}
WatchedArraySet<String> getEnabledComponents(int userId) {
@@ -1091,7 +1091,7 @@
PackageProto.UserInfoProto.LAST_DISABLED_APP_CALLER,
state.getLastDisableAppCaller());
proto.write(PackageProto.UserInfoProto.FIRST_INSTALL_TIME_MS,
- state.getFirstInstallTime());
+ state.getFirstInstallTimeMillis());
proto.end(userToken);
}
}
@@ -1386,6 +1386,13 @@
return AndroidPackageUtils.getHiddenApiEnforcementPolicy(getAndroidPackage(), this);
}
+ @Override
+ public boolean isApex() {
+ // TODO(b/256637152):
+ // TODO(b/243839669): Use a flag tracked directly in PackageSetting
+ return getAndroidPackage() != null && getAndroidPackage().isApex();
+ }
+
// Code below generated by codegen v1.0.23.
diff --git a/services/core/java/com/android/server/pm/ProtectedPackages.java b/services/core/java/com/android/server/pm/ProtectedPackages.java
index e923988..98533725 100644
--- a/services/core/java/com/android/server/pm/ProtectedPackages.java
+++ b/services/core/java/com/android/server/pm/ProtectedPackages.java
@@ -16,7 +16,6 @@
package com.android.server.pm;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.content.Context;
@@ -81,8 +80,8 @@
/** Sets packages protected by a device or profile owner. */
public synchronized void setOwnerProtectedPackages(
- @UserIdInt int userId, @NonNull List<String> packageNames) {
- if (packageNames.isEmpty()) {
+ @UserIdInt int userId, @Nullable List<String> packageNames) {
+ if (packageNames == null) {
mOwnerProtectedPackages.remove(userId);
} else {
mOwnerProtectedPackages.put(userId, new ArraySet<>(packageNames));
@@ -134,15 +133,21 @@
*/
private synchronized boolean isOwnerProtectedPackage(
@UserIdInt int userId, String packageName) {
- return isPackageProtectedForUser(UserHandle.USER_ALL, packageName)
- || isPackageProtectedForUser(userId, packageName);
+ return hasProtectedPackages(userId)
+ ? isPackageProtectedForUser(userId, packageName)
+ : isPackageProtectedForUser(UserHandle.USER_ALL, packageName);
}
- private synchronized boolean isPackageProtectedForUser(int userId, String packageName) {
+ private synchronized boolean isPackageProtectedForUser(
+ @UserIdInt int userId, String packageName) {
int userIdx = mOwnerProtectedPackages.indexOfKey(userId);
return userIdx >= 0 && mOwnerProtectedPackages.valueAt(userIdx).contains(packageName);
}
+ private synchronized boolean hasProtectedPackages(@UserIdInt int userId) {
+ return mOwnerProtectedPackages.indexOfKey(userId) >= 0;
+ }
+
/**
* Returns {@code true} if a given package's state is protected. Otherwise, returns
* {@code false}.
diff --git a/services/core/java/com/android/server/pm/RemovePackageHelper.java b/services/core/java/com/android/server/pm/RemovePackageHelper.java
index eb99536..e5aaddb 100644
--- a/services/core/java/com/android/server/pm/RemovePackageHelper.java
+++ b/services/core/java/com/android/server/pm/RemovePackageHelper.java
@@ -45,6 +45,7 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.ArrayUtils;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.parsing.PackageCacher;
import com.android.server.pm.parsing.pkg.AndroidPackageUtils;
import com.android.server.pm.parsing.pkg.PackageImpl;
@@ -424,8 +425,11 @@
String[] dexCodeInstructionSets = getDexCodeInstructionSets(instructionSets);
for (String codePath : allCodePaths) {
for (String dexCodeInstructionSet : dexCodeInstructionSets) {
+ // TODO(b/251903639): Call into ART Service.
try {
mPm.mInstaller.rmdex(codePath, dexCodeInstructionSet);
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
} catch (Installer.InstallerException ignored) {
}
}
diff --git a/services/core/java/com/android/server/pm/ScanPackageUtils.java b/services/core/java/com/android/server/pm/ScanPackageUtils.java
index 386e403..830b096c 100644
--- a/services/core/java/com/android/server/pm/ScanPackageUtils.java
+++ b/services/core/java/com/android/server/pm/ScanPackageUtils.java
@@ -406,7 +406,7 @@
final long scanFileTime = getLastModifiedTime(parsedPackage);
final long existingFirstInstallTime = userId == UserHandle.USER_ALL
? PackageStateUtils.getEarliestFirstInstallTime(pkgSetting.getUserStates())
- : pkgSetting.readUserState(userId).getFirstInstallTime();
+ : pkgSetting.readUserState(userId).getFirstInstallTimeMillis();
if (currentTime != 0) {
if (existingFirstInstallTime == 0) {
pkgSetting.setFirstInstallTime(currentTime, userId)
diff --git a/services/core/java/com/android/server/pm/ScanResult.java b/services/core/java/com/android/server/pm/ScanResult.java
index 750e893..2af01d6 100644
--- a/services/core/java/com/android/server/pm/ScanResult.java
+++ b/services/core/java/com/android/server/pm/ScanResult.java
@@ -47,6 +47,9 @@
*/
@Nullable
public final PackageSetting mPkgSetting;
+
+ // TODO(b/260124949): Check if this can be dropped when the legacy PackageManager dexopt code is
+ // cleaned up.
/** ABI code paths that have changed in the package scan */
@Nullable public final List<String> mChangedAbiCodePath;
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 321c5c6..6ebef20 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -2272,7 +2272,7 @@
ustate.getInstallReason());
}
serializer.attributeLongHex(null, ATTR_FIRST_INSTALL_TIME,
- ustate.getFirstInstallTime());
+ ustate.getFirstInstallTimeMillis());
if (ustate.getUninstallReason() != PackageManager.UNINSTALL_REASON_UNKNOWN) {
serializer.attributeInt(null, ATTR_UNINSTALL_REASON,
ustate.getUninstallReason());
@@ -4773,7 +4773,7 @@
pw.print(",");
pw.print(lastDisabledAppCaller != null ? lastDisabledAppCaller : "?");
pw.print(",");
- pw.print(ps.readUserState(user.id).getFirstInstallTime());
+ pw.print(ps.readUserState(user.id).getFirstInstallTimeMillis());
pw.print(",");
pw.println();
}
@@ -5122,7 +5122,7 @@
final PackageUserStateInternal pus = ps.readUserState(user.id);
pw.print(" firstInstallTime=");
- date.setTime(pus.getFirstInstallTime());
+ date.setTime(pus.getFirstInstallTimeMillis());
pw.println(sdf.format(date));
pw.print(" uninstallReason=");
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 6bac905..81f83b0 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -1834,6 +1834,23 @@
}
/**
+ * Gets the current user id, or the target user id in case there is a started user switch.
+ *
+ * @return id of current or target foreground user, or {@link UserHandle#USER_NULL} if
+ * {@link ActivityManagerInternal} is not available yet.
+ */
+ @VisibleForTesting
+ int getCurrentOrTargetUserId() {
+ ActivityManagerInternal activityManagerInternal = getActivityManagerInternal();
+ if (activityManagerInternal == null) {
+ Slog.w(LOG_TAG, "getCurrentOrTargetUserId() called too early, ActivityManagerInternal"
+ + " is not set yet");
+ return UserHandle.USER_NULL;
+ }
+ return activityManagerInternal.getCurrentUser().id;
+ }
+
+ /**
* Gets whether the user is the current foreground user or a started profile of that user.
*
* <p>Doesn't perform any permission check.
@@ -5407,8 +5424,7 @@
final long ident = Binder.clearCallingIdentity();
try {
final UserData userData;
- int currentUser = getCurrentUserId();
- if (currentUser == userId) {
+ if (userId == getCurrentOrTargetUserId()) {
Slog.w(LOG_TAG, "Current user cannot be removed.");
return false;
}
@@ -5426,6 +5442,12 @@
return false;
}
+ if (isNonRemovableMainUser(userData.info)) {
+ Slog.e(LOG_TAG, "Main user cannot be removed when "
+ + "it's a permanent admin user.");
+ return false;
+ }
+
if (mRemovingUserIds.get(userId)) {
Slog.e(LOG_TAG, TextUtils.formatSimple(
"User %d is already scheduled for removal.", userId));
@@ -5530,6 +5552,12 @@
return UserManager.REMOVE_RESULT_ERROR_USER_NOT_FOUND;
}
+ if (isNonRemovableMainUser(userData.info)) {
+ Slog.e(LOG_TAG, "Main user cannot be removed when "
+ + "it's a permanent admin user.");
+ return UserManager.REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN;
+ }
+
if (mRemovingUserIds.get(userId)) {
Slog.e(LOG_TAG, "User " + userId + " is already scheduled for removal.");
return UserManager.REMOVE_RESULT_ALREADY_BEING_REMOVED;
@@ -6748,7 +6776,7 @@
public void removeAllUsers() {
if (UserHandle.USER_SYSTEM == getCurrentUserId()) {
// Remove the non-system users straight away.
- removeNonSystemUsers();
+ removeAllUsersExceptSystemAndPermanentAdminMain();
} else {
// Switch to the system user first and then remove the other users.
BroadcastReceiver userSwitchedReceiver = new BroadcastReceiver() {
@@ -6760,7 +6788,7 @@
return;
}
mContext.unregisterReceiver(this);
- removeNonSystemUsers();
+ removeAllUsersExceptSystemAndPermanentAdminMain();
}
};
IntentFilter userSwitchedFilter = new IntentFilter();
@@ -7113,14 +7141,14 @@
throw new UserManager.CheckedUserOperationException(message, userOperationResult);
}
- /* Remove all the users except of the system one. */
- private void removeNonSystemUsers() {
+ /* Remove all the users except the system and permanent admin main.*/
+ private void removeAllUsersExceptSystemAndPermanentAdminMain() {
ArrayList<UserInfo> usersToRemove = new ArrayList<>();
synchronized (mUsersLock) {
final int userSize = mUsers.size();
for (int i = 0; i < userSize; i++) {
UserInfo ui = mUsers.valueAt(i).info;
- if (ui.id != UserHandle.USER_SYSTEM) {
+ if (ui.id != UserHandle.USER_SYSTEM && !isNonRemovableMainUser(ui)) {
usersToRemove.add(ui);
}
}
@@ -7249,4 +7277,22 @@
return mAmInternal;
}
+ /**
+ * Returns true, when user has {@link UserInfo#FLAG_MAIN} and system property
+ * {@link com.android.internal.R.bool.isMainUserPermanentAdmin} is true.
+ */
+ private boolean isNonRemovableMainUser(UserInfo userInfo) {
+ return userInfo.isMain() && isMainUserPermanentAdmin();
+ }
+
+ /**
+ * Returns true, when {@link com.android.internal.R.bool.isMainUserPermanentAdmin} is true.
+ * If the main user is a permanent admin user it can't be deleted
+ * or downgraded to non-admin status.
+ */
+ private static boolean isMainUserPermanentAdmin() {
+ return Resources.getSystem()
+ .getBoolean(com.android.internal.R.bool.config_isMainUserPermanentAdmin);
+ }
+
}
diff --git a/services/core/java/com/android/server/pm/UserTypeFactory.java b/services/core/java/com/android/server/pm/UserTypeFactory.java
index 9b337adf..edb2a4be3b 100644
--- a/services/core/java/com/android/server/pm/UserTypeFactory.java
+++ b/services/core/java/com/android/server/pm/UserTypeFactory.java
@@ -133,7 +133,9 @@
.setUseParentsContacts(true)
.setUpdateCrossProfileIntentFiltersOnOTA(true)
.setCrossProfileIntentFilterAccessControl(
- UserProperties.CROSS_PROFILE_INTENT_FILTER_ACCESS_LEVEL_SYSTEM));
+ UserProperties.CROSS_PROFILE_INTENT_FILTER_ACCESS_LEVEL_SYSTEM)
+ .setCrossProfileIntentResolutionStrategy(UserProperties
+ .CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_NO_FILTERING));
}
/**
diff --git a/services/core/java/com/android/server/pm/dex/ArtManagerService.java b/services/core/java/com/android/server/pm/dex/ArtManagerService.java
index e19ebce..b5b6347 100644
--- a/services/core/java/com/android/server/pm/dex/ArtManagerService.java
+++ b/services/core/java/com/android/server/pm/dex/ArtManagerService.java
@@ -52,6 +52,7 @@
import com.android.server.LocalServices;
import com.android.server.pm.Installer;
import com.android.server.pm.Installer.InstallerException;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.PackageManagerService;
import com.android.server.pm.PackageManagerServiceCompilerMapping;
import com.android.server.pm.parsing.PackageInfoUtils;
@@ -177,7 +178,6 @@
== ApplicationInfo.FLAG_DEBUGGABLE;
}
-
@Override
public void snapshotRuntimeProfile(@ProfileType int profileType, @Nullable String packageName,
@Nullable String codePath, @NonNull ISnapshotRuntimeProfileCallback callback,
@@ -210,15 +210,20 @@
Slog.d(TAG, "Requested snapshot for " + packageName + ":" + codePath);
}
- if (bootImageProfile) {
- snapshotBootImageProfile(callback);
- } else {
- snapshotAppProfile(packageName, codePath, callback);
+ // TODO(b/251903639): Call into ART Service.
+ try {
+ if (bootImageProfile) {
+ snapshotBootImageProfile(callback);
+ } else {
+ snapshotAppProfile(packageName, codePath, callback);
+ }
+ } catch (LegacyDexoptDisabledException e) {
+ throw new RuntimeException(e);
}
}
private void snapshotAppProfile(String packageName, String codePath,
- ISnapshotRuntimeProfileCallback callback) {
+ ISnapshotRuntimeProfileCallback callback) throws LegacyDexoptDisabledException {
PackageInfo info = null;
try {
// Note that we use the default user 0 to retrieve the package info.
@@ -269,7 +274,8 @@
}
private void createProfileSnapshot(String packageName, String profileName, String classpath,
- int appId, ISnapshotRuntimeProfileCallback callback) {
+ int appId, ISnapshotRuntimeProfileCallback callback)
+ throws LegacyDexoptDisabledException {
// Ask the installer to snapshot the profile.
try {
if (!mInstaller.createProfileSnapshot(appId, packageName, profileName, classpath)) {
@@ -299,7 +305,8 @@
}
}
- private void destroyProfileSnapshot(String packageName, String profileName) {
+ private void destroyProfileSnapshot(String packageName, String profileName)
+ throws LegacyDexoptDisabledException {
if (DEBUG) {
Slog.d(TAG, "Destroying profile snapshot for" + packageName + ":" + profileName);
}
@@ -333,7 +340,8 @@
}
}
- private void snapshotBootImageProfile(ISnapshotRuntimeProfileCallback callback) {
+ private void snapshotBootImageProfile(ISnapshotRuntimeProfileCallback callback)
+ throws LegacyDexoptDisabledException {
// Combine the profiles for boot classpath and system server classpath.
// This avoids having yet another type of profiles and simplifies the processing.
String classpath = String.join(":", Os.getenv("BOOTCLASSPATH"),
@@ -364,7 +372,7 @@
mHandler.post(() -> {
try {
callback.onError(errCode);
- } catch (Exception e) {
+ } catch (RemoteException | RuntimeException e) {
Slog.w(TAG, "Failed to callback after profile snapshot for " + packageName, e);
}
});
@@ -387,7 +395,7 @@
+ packageName);
callback.onError(ArtManager.SNAPSHOT_FAILED_INTERNAL_ERROR);
}
- } catch (Exception e) {
+ } catch (RemoteException | RuntimeException e) {
Slog.w(TAG,
"Failed to call onSuccess after profile snapshot for " + packageName, e);
} finally {
@@ -402,9 +410,8 @@
* - create the current primary profile to save time at app startup time.
* - copy the profiles from the associated dex metadata file to the reference profile.
*/
- public void prepareAppProfiles(
- AndroidPackage pkg, @UserIdInt int user,
- boolean updateReferenceProfileContent) {
+ public void prepareAppProfiles(AndroidPackage pkg, @UserIdInt int user,
+ boolean updateReferenceProfileContent) throws LegacyDexoptDisabledException {
final int appId = UserHandle.getAppId(pkg.getUid());
if (user < 0) {
Slog.wtf(TAG, "Invalid user id: " + user);
@@ -444,9 +451,8 @@
/**
* Prepares the app profiles for a set of users. {@see ArtManagerService#prepareAppProfiles}.
*/
- public void prepareAppProfiles(
- AndroidPackage pkg, int[] user,
- boolean updateReferenceProfileContent) {
+ public void prepareAppProfiles(AndroidPackage pkg, int[] user,
+ boolean updateReferenceProfileContent) throws LegacyDexoptDisabledException {
for (int i = 0; i < user.length; i++) {
prepareAppProfiles(pkg, user[i], updateReferenceProfileContent);
}
@@ -455,7 +461,7 @@
/**
* Clear the profiles for the given package.
*/
- public void clearAppProfiles(AndroidPackage pkg) {
+ public void clearAppProfiles(AndroidPackage pkg) throws LegacyDexoptDisabledException {
try {
ArrayMap<String, String> packageProfileNames = getPackageProfileNames(pkg);
for (int i = packageProfileNames.size() - 1; i >= 0; i--) {
@@ -470,7 +476,8 @@
/**
* Dumps the profiles for the given package.
*/
- public void dumpProfiles(AndroidPackage pkg, boolean dumpClassesAndMethods) {
+ public void dumpProfiles(AndroidPackage pkg, boolean dumpClassesAndMethods)
+ throws LegacyDexoptDisabledException {
final int sharedGid = UserHandle.getSharedAppGid(pkg.getUid());
try {
ArrayMap<String, String> packageProfileNames = getPackageProfileNames(pkg);
diff --git a/services/core/java/com/android/server/pm/dex/DexManager.java b/services/core/java/com/android/server/pm/dex/DexManager.java
index 8c2da45..3d4f7b0 100644
--- a/services/core/java/com/android/server/pm/dex/DexManager.java
+++ b/services/core/java/com/android/server/pm/dex/DexManager.java
@@ -46,6 +46,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.pm.Installer;
import com.android.server.pm.Installer.InstallerException;
+import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.PackageDexOptimizer;
import com.android.server.pm.PackageManagerService;
import com.android.server.pm.PackageManagerServiceUtils;
@@ -190,7 +191,7 @@
try {
notifyDexLoadInternal(loadingAppInfo, classLoaderContextMap, loaderIsa,
loaderUserId, loaderIsIsolatedProcess);
- } catch (Exception e) {
+ } catch (RuntimeException e) {
Slog.w(TAG, "Exception while notifying dex load for package " +
loadingAppInfo.packageName, e);
}
@@ -325,7 +326,7 @@
public void load(Map<Integer, List<PackageInfo>> existingPackages) {
try {
loadInternal(existingPackages);
- } catch (Exception e) {
+ } catch (RuntimeException e) {
mPackageDexUsage.clear();
mDynamicCodeLogger.clear();
Slog.w(TAG, "Exception while loading. Starting with a fresh state.", e);
@@ -457,7 +458,7 @@
List<String> packagesToKeepDataAbout = new ArrayList<>();
mPackageDexUsage.syncData(
packageToUsersMap, packageToCodePaths, packagesToKeepDataAbout);
- } catch (Exception e) {
+ } catch (RuntimeException e) {
mPackageDexUsage.clear();
Slog.w(TAG, "Exception while loading package dex usage. "
+ "Starting with a fresh state.", e);
@@ -465,7 +466,7 @@
try {
mDynamicCodeLogger.readAndSync(packageToUsersMap);
- } catch (Exception e) {
+ } catch (RuntimeException e) {
mDynamicCodeLogger.clear();
Slog.w(TAG, "Exception while loading package dynamic code usage. "
+ "Starting with a fresh state.", e);
@@ -514,7 +515,7 @@
* @return true if all secondary dex files were processed successfully (compiled or skipped
* because they don't need to be compiled)..
*/
- public boolean dexoptSecondaryDex(DexoptOptions options) {
+ public boolean dexoptSecondaryDex(DexoptOptions options) throws LegacyDexoptDisabledException {
if (isPlatformPackage(options.getPackageName())) {
// We could easily redirect to #dexoptSystemServer in this case. But there should be
// no-one calling this method directly for system server.
@@ -564,88 +565,6 @@
}
/**
- * Performs dexopt on system server dex files.
- *
- * <p>Verfifies that the package name is {@link PackageManagerService#PLATFORM_PACKAGE_NAME}.
- *
- * @return
- * <p>PackageDexOptimizer.DEX_OPT_SKIPPED if dexopt was skipped because no system server
- * files were recorded or if no dexopt was needed.
- * <p>PackageDexOptimizer.DEX_OPT_FAILED if any dexopt operation failed.
- * <p>PackageDexOptimizer.DEX_OPT_PERFORMED if all dexopt operations succeeded.
- */
- public int dexoptSystemServer(DexoptOptions options) {
- if (!isPlatformPackage(options.getPackageName())) {
- Slog.wtf(TAG, "Non system server package used when trying to dexopt system server:"
- + options.getPackageName());
- return PackageDexOptimizer.DEX_OPT_FAILED;
- }
-
- // Override compiler filter for system server to the expected one.
- //
- // We could let the caller do this every time the invoke PackageManagerServer#dexopt.
- // However, there are a few places were this will need to be done which creates
- // redundancy and the danger of overlooking the config (and thus generating code that will
- // waste storage and time).
- DexoptOptions overriddenOptions = options.overrideCompilerFilter(
- SYSTEM_SERVER_COMPILER_FILTER);
-
- PackageDexOptimizer pdo = getPackageDexOptimizer(overriddenOptions);
- String packageName = overriddenOptions.getPackageName();
- PackageUseInfo useInfo = getPackageUseInfoOrDefault(packageName);
- if (useInfo.getDexUseInfoMap().isEmpty()) {
- if (DEBUG) {
- Slog.d(TAG, "No dex files recorded for system server");
- }
- // Nothing to compile, return true.
- return PackageDexOptimizer.DEX_OPT_SKIPPED;
- }
-
- boolean usageUpdated = false;
- int result = PackageDexOptimizer.DEX_OPT_SKIPPED;
- for (Map.Entry<String, DexUseInfo> entry : useInfo.getDexUseInfoMap().entrySet()) {
- String dexPath = entry.getKey();
- DexUseInfo dexUseInfo = entry.getValue();
- if (!Files.exists(Paths.get(dexPath))) {
- if (DEBUG) {
- Slog.w(TAG, "A dex file previously loaded by System Server does not exist "
- + " anymore: " + dexPath);
- }
- usageUpdated = mPackageDexUsage.removeDexFile(
- packageName, dexPath, dexUseInfo.getOwnerUserId()) || usageUpdated;
- continue;
- }
-
- if (dexUseInfo.isUnsupportedClassLoaderContext()
- || dexUseInfo.isVariableClassLoaderContext()) {
- String debugMsg = dexUseInfo.isUnsupportedClassLoaderContext()
- ? "unsupported"
- : "variable";
- Slog.w(TAG, "Skipping dexopt for system server path loaded with " + debugMsg
- + " class loader context: " + dexPath);
- continue;
- }
-
- int newResult = pdo.dexoptSystemServerPath(dexPath, dexUseInfo, overriddenOptions);
-
- // The end result is:
- // - FAILED if any path failed,
- // - PERFORMED if at least one path needed compilation,
- // - SKIPPED when all paths are up to date
- if ((result != PackageDexOptimizer.DEX_OPT_FAILED)
- && (newResult != PackageDexOptimizer.DEX_OPT_SKIPPED)) {
- result = newResult;
- }
- }
-
- if (usageUpdated) {
- mPackageDexUsage.maybeWriteAsync();
- }
-
- return result;
- }
-
- /**
* Select the dex optimizer based on the force parameter.
* Forced compilation is done through ForcedUpdatePackageDexOptimizer which will adjust
* the necessary dexopt flags to make sure that compilation is not skipped. This avoid
@@ -664,7 +583,8 @@
* {@code packagName} and the actual dex files. For all dex files that were
* deleted, update the internal records and delete any generated oat files.
*/
- public void reconcileSecondaryDexFiles(String packageName) {
+ public void reconcileSecondaryDexFiles(String packageName)
+ throws LegacyDexoptDisabledException {
PackageUseInfo useInfo = getPackageUseInfoOrDefault(packageName);
if (useInfo.getDexUseInfoMap().isEmpty()) {
if (DEBUG) {
@@ -756,7 +676,7 @@
// TODO(calin): questionable API in the presence of class loaders context. Needs amends as the
// compilation happening here will use a pessimistic context.
public RegisterDexModuleResult registerDexModule(ApplicationInfo info, String dexPath,
- boolean isSharedModule, int userId) {
+ boolean isSharedModule, int userId) throws LegacyDexoptDisabledException {
// Find the owning package record.
DexSearchResult searchResult = getDexPackage(info, dexPath, userId);
@@ -1012,7 +932,8 @@
* @param packageInfo the package information.
* @return the number of freed bytes or -1 if there was an error in the process.
*/
- public long deleteOptimizedFiles(ArtPackageInfo packageInfo) {
+ public long deleteOptimizedFiles(ArtPackageInfo packageInfo)
+ throws LegacyDexoptDisabledException {
long freedBytes = 0;
boolean hadErrors = false;
final String packageName = packageInfo.getPackageName();
diff --git a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java
index ff993ea..59256d3 100644
--- a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java
+++ b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java
@@ -104,10 +104,11 @@
@Nullable
public static PackageInfo generate(AndroidPackage pkg, int[] gids,
@PackageManager.PackageInfoFlagsBits long flags, long firstInstallTime,
- long lastUpdateTime, Set<String> grantedPermissions, PackageUserStateInternal state,
- @UserIdInt int userId, @NonNull PackageStateInternal pkgSetting) {
+ long lastUpdateTime, Set<String> installedPermissions, Set<String> grantedPermissions,
+ PackageUserStateInternal state, @UserIdInt int userId,
+ @NonNull PackageStateInternal pkgSetting) {
return generateWithComponents(pkg, gids, flags, firstInstallTime, lastUpdateTime,
- grantedPermissions, state, userId, pkgSetting);
+ installedPermissions, grantedPermissions, state, userId, pkgSetting);
}
/**
@@ -115,8 +116,9 @@
*/
private static PackageInfo generateWithComponents(AndroidPackage pkg, int[] gids,
@PackageManager.PackageInfoFlagsBits long flags, long firstInstallTime,
- long lastUpdateTime, Set<String> grantedPermissions, PackageUserStateInternal state,
- @UserIdInt int userId, @NonNull PackageStateInternal pkgSetting) {
+ long lastUpdateTime, Set<String> installedPermissions, Set<String> grantedPermissions,
+ PackageUserStateInternal state, @UserIdInt int userId,
+ @NonNull PackageStateInternal pkgSetting) {
ApplicationInfo applicationInfo = generateApplicationInfo(pkg, flags, state, userId,
pkgSetting);
if (applicationInfo == null) {
@@ -174,8 +176,12 @@
if (size > 0) {
info.permissions = new PermissionInfo[size];
for (int i = 0; i < size; i++) {
- info.permissions[i] = generatePermissionInfo(pkg.getPermissions().get(i),
- flags);
+ final var permission = pkg.getPermissions().get(i);
+ final var permissionInfo = generatePermissionInfo(permission, flags);
+ if (installedPermissions.contains(permission.getName())) {
+ permissionInfo.flags |= PermissionInfo.FLAG_INSTALLED;
+ }
+ info.permissions[i] = permissionInfo;
}
}
final List<ParsedUsesPermission> usesPermissions = pkg.getUsesPermissions();
@@ -917,7 +923,7 @@
@Nullable PackageStateInternal pkgSetting) {
// @formatter:off
int pkgWithoutStateFlags = flag(pkg.isStaticSharedLibrary(), ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY)
- | flag(pkg.isOverlay(), ApplicationInfo.PRIVATE_FLAG_IS_RESOURCE_OVERLAY)
+ | flag(pkg.isResourceOverlay(), ApplicationInfo.PRIVATE_FLAG_IS_RESOURCE_OVERLAY)
| flag(pkg.isIsolatedSplitLoading(), ApplicationInfo.PRIVATE_FLAG_ISOLATED_SPLIT_LOADING)
| flag(pkg.isHasDomainUrls(), ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS)
| flag(pkg.isProfileableByShell(), ApplicationInfo.PRIVATE_FLAG_PROFILEABLE_BY_SHELL)
diff --git a/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java b/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java
index ed9382b..1778e57 100644
--- a/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java
+++ b/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java
@@ -1674,7 +1674,7 @@
}
@Override
- public boolean isOverlay() {
+ public boolean isResourceOverlay() {
return getBoolean(Booleans.OVERLAY);
}
@@ -2167,7 +2167,7 @@
}
@Override
- public PackageImpl setOverlay(boolean value) {
+ public PackageImpl setResourceOverlay(boolean value) {
return setBoolean(Booleans.OVERLAY, value);
}
diff --git a/services/core/java/com/android/server/pm/permission/Permission.java b/services/core/java/com/android/server/pm/permission/Permission.java
index 74b178e..f3b9246 100644
--- a/services/core/java/com/android/server/pm/permission/Permission.java
+++ b/services/core/java/com/android/server/pm/permission/Permission.java
@@ -29,7 +29,6 @@
import android.util.Slog;
import com.android.server.pm.PackageManagerService;
-import com.android.server.pm.pkg.AndroidPackage;
import com.android.server.pm.pkg.PackageState;
import com.android.server.pm.pkg.component.ParsedPermission;
@@ -215,10 +214,6 @@
== PermissionInfo.PROTECTION_DANGEROUS;
}
- public boolean isInstalled() {
- return (mPermissionInfo.flags & PermissionInfo.FLAG_INSTALLED) != 0;
- }
-
public boolean isRemoved() {
return (mPermissionInfo.flags & PermissionInfo.FLAG_REMOVED) != 0;
}
@@ -423,7 +418,6 @@
if (packageState.isSystem()) {
if (permission.mType == Permission.TYPE_CONFIG && !permission.mReconciled) {
// It's a built-in permission and no owner, take ownership now
- permissionInfo.flags |= PermissionInfo.FLAG_INSTALLED;
permission.mPermissionInfo = permissionInfo;
permission.mReconciled = true;
permission.mUid = packageState.getAppId();
@@ -451,7 +445,6 @@
final Permission tree = findPermissionTree(permissionTrees, permissionInfo.name);
if (tree == null
|| tree.mPermissionInfo.packageName.equals(permissionInfo.packageName)) {
- permissionInfo.flags |= PermissionInfo.FLAG_INSTALLED;
permission.mPermissionInfo = permissionInfo;
permission.mReconciled = true;
permission.mUid = packageState.getAppId();
@@ -562,6 +555,8 @@
permissionInfo.packageName = mPermissionInfo.packageName;
permissionInfo.nonLocalizedLabel = mPermissionInfo.name;
}
+ // A Permission in PermissionRegistry is always installed.
+ permissionInfo.flags |= PermissionInfo.FLAG_INSTALLED;
if (targetSdkVersion >= Build.VERSION_CODES.O) {
permissionInfo.protectionLevel = mPermissionInfo.protectionLevel;
} else {
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index 268a36f..8973adc 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -760,6 +760,11 @@
}
@NonNull
@Override
+ public Set<String> getInstalledPermissions(@NonNull String packageName) {
+ return mPermissionManagerServiceImpl.getInstalledPermissions(packageName);
+ }
+ @NonNull
+ @Override
public Set<String> getGrantedPermissions(@NonNull String packageName,
@UserIdInt int userId) {
return mPermissionManagerServiceImpl.getGrantedPermissions(packageName, userId);
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
index f6362f2..936ef67 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
@@ -2345,9 +2345,6 @@
for (int i=0; i<N; i++) {
ParsedPermission p = pkg.getPermissions().get(i);
- // Assume by default that we did not install this permission into the system.
- ComponentMutateUtils.setExactFlags(p, p.getFlags() & ~PermissionInfo.FLAG_INSTALLED);
-
final PermissionInfo permissionInfo;
final Permission oldPermission;
synchronized (mLock) {
@@ -2384,10 +2381,6 @@
} else {
mRegistry.addPermission(permission);
}
- if (permission.isInstalled()) {
- ComponentMutateUtils.setExactFlags(p,
- p.getFlags() | PermissionInfo.FLAG_INSTALLED);
- }
if (permission.isDefinitionChanged()) {
definitionChangedPermissions.add(p.getName());
permission.setDefinitionChanged(false);
@@ -5143,6 +5136,21 @@
@NonNull
@Override
+ public Set<String> getInstalledPermissions(@NonNull String packageName) {
+ Objects.requireNonNull(packageName, "packageName");
+ final Set<String> installedPermissions = new ArraySet<>();
+ synchronized (mLock) {
+ for (final Permission permission : mRegistry.getPermissions()) {
+ if (Objects.equals(permission.getPackageName(), packageName)) {
+ installedPermissions.add(permission.getName());
+ }
+ }
+ }
+ return installedPermissions;
+ }
+
+ @NonNull
+ @Override
public Set<String> getGrantedPermissions(@NonNull String packageName,
@UserIdInt int userId) {
Objects.requireNonNull(packageName, "packageName");
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
index 08938a5..b62c64b 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
@@ -453,6 +453,18 @@
void writeLegacyPermissionStateTEMP();
/**
+ * Get all the permissions definitions from a package that's installed in the system.
+ * <p>
+ * A permission definition in a normal app may not be installed if it's overridden by the
+ * platform or system app that contains a conflicting definition after system upgrade.
+ *
+ * @param packageName the name of the package
+ * @return the names of the installed permissions
+ */
+ @NonNull
+ Set<String> getInstalledPermissions(@NonNull String packageName);
+
+ /**
* Get all the permissions granted to a package.
*
* @param packageName the name of the package
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
index fdcf765..ea85c9d 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
@@ -128,6 +128,19 @@
void writeLegacyPermissionStateTEMP();
/**
+ * Get all the permissions definitions from a package that's installed in the system.
+ * <p>
+ * A permission definition in a normal app may not be installed if it's overridden by the
+ * platform or system app that contains a conflicting definition after system upgrade.
+ *
+ * @param packageName the name of the package
+ * @return the names of the installed permissions
+ */
+ //@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+ @NonNull
+ Set<String> getInstalledPermissions(@NonNull String packageName);
+
+ /**
* Get all the permissions granted to a package.
*
* @param packageName the name of the package
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
index bfe0008..a6fa304 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
@@ -293,6 +293,13 @@
@NonNull
@Override
+ public Set<String> getInstalledPermissions(@NonNull String packageName) {
+ Log.i(LOG_TAG, "getInstalledPermissions(packageName = " + packageName + ")");
+ return mService.getInstalledPermissions(packageName);
+ }
+
+ @NonNull
+ @Override
public Set<String> getGrantedPermissions(@NonNull String packageName, int userId) {
Log.i(LOG_TAG, "getGrantedPermissions(packageName = " + packageName + ", userId = "
+ userId + ")");
diff --git a/services/core/java/com/android/server/pm/pkg/AndroidPackage.java b/services/core/java/com/android/server/pm/pkg/AndroidPackage.java
index 49f85e9..78091bc 100644
--- a/services/core/java/com/android/server/pm/pkg/AndroidPackage.java
+++ b/services/core/java/com/android/server/pm/pkg/AndroidPackage.java
@@ -572,6 +572,13 @@
boolean isResetEnabledSettingsOnAppDataCleared();
/**
+ * @see ApplicationInfo#PRIVATE_FLAG_IS_RESOURCE_OVERLAY
+ * @see ApplicationInfo#isResourceOverlay()
+ * @see R.styleable#AndroidManifestResourceOverlay
+ */
+ boolean isResourceOverlay();
+
+ /**
* @see ApplicationInfo#FLAG_RESTORE_ANY_VERSION
* @see R.styleable#AndroidManifestApplication_restoreAnyVersion
*/
@@ -1415,14 +1422,6 @@
boolean isHasDomainUrls();
/**
- * @see ApplicationInfo#PRIVATE_FLAG_IS_RESOURCE_OVERLAY
- * @see ApplicationInfo#isResourceOverlay()
- * @see R.styleable#AndroidManifestResourceOverlay
- * @hide
- */
- boolean isOverlay();
-
- /**
* @see PackageInfo#mOverlayIsStatic
* @hide
*/
diff --git a/services/core/java/com/android/server/pm/pkg/PackageState.java b/services/core/java/com/android/server/pm/pkg/PackageState.java
index 7335a46..5fdead0 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageState.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageState.java
@@ -163,6 +163,9 @@
@NonNull
List<SharedLibrary> getUsesLibraries();
+ /** Whether this represents an APEX module. This is different from an APK inside an APEX. */
+ boolean isApex();
+
/**
* @see ApplicationInfo#PRIVATE_FLAG_PRIVILEGED
*/
diff --git a/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java b/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java
index 43d019a..8dee8ee 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java
@@ -301,9 +301,10 @@
}
@Override
- public int getSharedUserAppId() {
- return mSharedUserAppId;
+ public boolean isApex() {
+ return getAndroidPackage() != null && getAndroidPackage().isApex();
}
+
/**
* @hide
*/
@@ -372,7 +373,7 @@
private final int mUninstallReason;
@Nullable
private final String mSplashScreenTheme;
- private final long mFirstInstallTime;
+ private final long mFirstInstallTimeMillis;
private UserStateImpl(@NonNull PackageUserState userState) {
mCeDataInode = userState.getCeDataInode();
@@ -394,7 +395,7 @@
setBoolean(Booleans.STOPPED, userState.isStopped());
setBoolean(Booleans.SUSPENDED, userState.isSuspended());
setBoolean(Booleans.VIRTUAL_PRELOAD, userState.isVirtualPreload());
- mFirstInstallTime = userState.getFirstInstallTime();
+ mFirstInstallTimeMillis = userState.getFirstInstallTimeMillis();
}
@Override
@@ -538,8 +539,8 @@
}
@DataClass.Generated.Member
- public long getFirstInstallTime() {
- return mFirstInstallTime;
+ public long getFirstInstallTimeMillis() {
+ return mFirstInstallTimeMillis;
}
@DataClass.Generated.Member
@@ -549,10 +550,10 @@
}
@DataClass.Generated(
- time = 1666719622708L,
+ time = 1671671043891L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java",
- inputSignatures = "private int mBooleans\nprivate final long mCeDataInode\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mDisabledComponents\nprivate final @android.content.pm.PackageManager.DistractionRestriction int mDistractionFlags\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mEnabledComponents\nprivate final int mEnabledState\nprivate final @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate final @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate final @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate final @android.annotation.NonNull android.content.pm.overlay.OverlayPaths mOverlayPaths\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate final @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate final @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate final long mFirstInstallTime\npublic static com.android.server.pm.pkg.PackageUserState copy(com.android.server.pm.pkg.PackageUserState)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isSuspended()\npublic @java.lang.Override boolean isVirtualPreload()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\nclass UserStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageUserState]\nprivate static final int HIDDEN\nprivate static final int INSTALLED\nprivate static final int INSTANT_APP\nprivate static final int NOT_LAUNCHED\nprivate static final int STOPPED\nprivate static final int SUSPENDED\nprivate static final int VIRTUAL_PRELOAD\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)")
+ inputSignatures = "private int mBooleans\nprivate final long mCeDataInode\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mDisabledComponents\nprivate final @android.content.pm.PackageManager.DistractionRestriction int mDistractionFlags\nprivate final @android.annotation.NonNull android.util.ArraySet<java.lang.String> mEnabledComponents\nprivate final int mEnabledState\nprivate final @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate final @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate final @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate final @android.annotation.NonNull android.content.pm.overlay.OverlayPaths mOverlayPaths\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate final @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate final @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate final long mFirstInstallTimeMillis\npublic static com.android.server.pm.pkg.PackageUserState copy(com.android.server.pm.pkg.PackageUserState)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isSuspended()\npublic @java.lang.Override boolean isVirtualPreload()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\nclass UserStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageUserState]\nprivate static final int HIDDEN\nprivate static final int INSTALLED\nprivate static final int INSTANT_APP\nprivate static final int NOT_LAUNCHED\nprivate static final int STOPPED\nprivate static final int SUSPENDED\nprivate static final int VIRTUAL_PRELOAD\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)")
@Deprecated
private void __metadata() {}
@@ -663,6 +664,11 @@
}
@DataClass.Generated.Member
+ public int getSharedUserAppId() {
+ return mSharedUserAppId;
+ }
+
+ @DataClass.Generated.Member
public @NonNull String[] getUsesSdkLibraries() {
return mUsesSdkLibraries;
}
@@ -714,10 +720,10 @@
}
@DataClass.Generated(
- time = 1666719622749L,
+ time = 1671671043929L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java",
- inputSignatures = "private int mBooleans\nprivate final @android.annotation.Nullable com.android.server.pm.pkg.AndroidPackage mAndroidPackage\nprivate final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.Nullable java.lang.String mVolumeUuid\nprivate final int mAppId\nprivate final int mCategoryOverride\nprivate final @android.annotation.Nullable java.lang.String mCpuAbiOverride\nprivate final @android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy int mHiddenApiEnforcementPolicy\nprivate final long mLastModifiedTime\nprivate final long mLastUpdateTime\nprivate final long mLongVersionCode\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>> mMimeGroups\nprivate final @android.annotation.NonNull java.io.File mPath\nprivate final @android.annotation.Nullable java.lang.String mPrimaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSecondaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSeInfo\nprivate final boolean mHasSharedUser\nprivate final int mSharedUserAppId\nprivate final @android.annotation.NonNull java.lang.String[] mUsesSdkLibraries\nprivate final @android.annotation.NonNull long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.NonNull java.lang.String[] mUsesStaticLibraries\nprivate final @android.annotation.NonNull long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.NonNull java.util.List<com.android.server.pm.pkg.SharedLibrary> mUsesLibraries\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesLibraryFiles\nprivate final @android.annotation.NonNull long[] mLastPackageUsageTime\nprivate final @android.annotation.NonNull android.content.pm.SigningInfo mSigningInfo\nprivate final @android.annotation.NonNull android.util.SparseArray<com.android.server.pm.pkg.PackageUserState> mUserStates\npublic static com.android.server.pm.pkg.PackageState copy(com.android.server.pm.pkg.PackageStateInternal)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserState getStateForUser(android.os.UserHandle)\npublic @java.lang.Override boolean isExternalStorage()\npublic @java.lang.Override boolean isForceQueryableOverride()\npublic @java.lang.Override boolean isHiddenUntilInstalled()\npublic @java.lang.Override boolean isInstallPermissionsFixed()\npublic @java.lang.Override boolean isOdm()\npublic @java.lang.Override boolean isOem()\npublic @java.lang.Override boolean isPrivileged()\npublic @java.lang.Override boolean isProduct()\npublic @java.lang.Override boolean isRequiredForSystemUser()\npublic @java.lang.Override boolean isSystem()\npublic @java.lang.Override boolean isSystemExt()\npublic @java.lang.Override boolean isUpdateAvailable()\npublic @java.lang.Override boolean isUpdatedSystemApp()\npublic @java.lang.Override boolean isApkInUpdatedApex()\npublic @java.lang.Override boolean isVendor()\npublic @java.lang.Override long getVersionCode()\npublic @java.lang.Override boolean hasSharedUser()\npublic @java.lang.Override int getSharedUserAppId()\nclass PackageStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageState]\nprivate static final int SYSTEM\nprivate static final int EXTERNAL_STORAGE\nprivate static final int PRIVILEGED\nprivate static final int OEM\nprivate static final int VENDOR\nprivate static final int PRODUCT\nprivate static final int SYSTEM_EXT\nprivate static final int REQUIRED_FOR_SYSTEM_USER\nprivate static final int ODM\nprivate static final int FORCE_QUERYABLE_OVERRIDE\nprivate static final int HIDDEN_UNTIL_INSTALLED\nprivate static final int INSTALL_PERMISSIONS_FIXED\nprivate static final int UPDATE_AVAILABLE\nprivate static final int UPDATED_SYSTEM_APP\nprivate static final int APK_IN_UPDATED_APEX\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)")
+ inputSignatures = "private int mBooleans\nprivate final @android.annotation.Nullable com.android.server.pm.pkg.AndroidPackage mAndroidPackage\nprivate final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.Nullable java.lang.String mVolumeUuid\nprivate final int mAppId\nprivate final int mCategoryOverride\nprivate final @android.annotation.Nullable java.lang.String mCpuAbiOverride\nprivate final @android.content.pm.ApplicationInfo.HiddenApiEnforcementPolicy int mHiddenApiEnforcementPolicy\nprivate final long mLastModifiedTime\nprivate final long mLastUpdateTime\nprivate final long mLongVersionCode\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>> mMimeGroups\nprivate final @android.annotation.NonNull java.io.File mPath\nprivate final @android.annotation.Nullable java.lang.String mPrimaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSecondaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSeInfo\nprivate final boolean mHasSharedUser\nprivate final int mSharedUserAppId\nprivate final @android.annotation.NonNull java.lang.String[] mUsesSdkLibraries\nprivate final @android.annotation.NonNull long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.NonNull java.lang.String[] mUsesStaticLibraries\nprivate final @android.annotation.NonNull long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.NonNull java.util.List<com.android.server.pm.pkg.SharedLibrary> mUsesLibraries\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesLibraryFiles\nprivate final @android.annotation.NonNull long[] mLastPackageUsageTime\nprivate final @android.annotation.NonNull android.content.pm.SigningInfo mSigningInfo\nprivate final @android.annotation.NonNull android.util.SparseArray<com.android.server.pm.pkg.PackageUserState> mUserStates\npublic static com.android.server.pm.pkg.PackageState copy(com.android.server.pm.pkg.PackageStateInternal)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserState getStateForUser(android.os.UserHandle)\npublic @java.lang.Override boolean isExternalStorage()\npublic @java.lang.Override boolean isForceQueryableOverride()\npublic @java.lang.Override boolean isHiddenUntilInstalled()\npublic @java.lang.Override boolean isInstallPermissionsFixed()\npublic @java.lang.Override boolean isOdm()\npublic @java.lang.Override boolean isOem()\npublic @java.lang.Override boolean isPrivileged()\npublic @java.lang.Override boolean isProduct()\npublic @java.lang.Override boolean isRequiredForSystemUser()\npublic @java.lang.Override boolean isSystem()\npublic @java.lang.Override boolean isSystemExt()\npublic @java.lang.Override boolean isUpdateAvailable()\npublic @java.lang.Override boolean isUpdatedSystemApp()\npublic @java.lang.Override boolean isApkInUpdatedApex()\npublic @java.lang.Override boolean isVendor()\npublic @java.lang.Override long getVersionCode()\npublic @java.lang.Override boolean hasSharedUser()\npublic @java.lang.Override boolean isApex()\nclass PackageStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageState]\nprivate static final int SYSTEM\nprivate static final int EXTERNAL_STORAGE\nprivate static final int PRIVILEGED\nprivate static final int OEM\nprivate static final int VENDOR\nprivate static final int PRODUCT\nprivate static final int SYSTEM_EXT\nprivate static final int REQUIRED_FOR_SYSTEM_USER\nprivate static final int ODM\nprivate static final int FORCE_QUERYABLE_OVERRIDE\nprivate static final int HIDDEN_UNTIL_INSTALLED\nprivate static final int INSTALL_PERMISSIONS_FIXED\nprivate static final int UPDATE_AVAILABLE\nprivate static final int UPDATED_SYSTEM_APP\nprivate static final int APK_IN_UPDATED_APEX\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)")
@Deprecated
private void __metadata() {}
diff --git a/services/core/java/com/android/server/pm/pkg/PackageStateUtils.java b/services/core/java/com/android/server/pm/pkg/PackageStateUtils.java
index 9749cfa..1d2c5ec 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageStateUtils.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageStateUtils.java
@@ -87,7 +87,7 @@
}
long earliestFirstInstallTime = Long.MAX_VALUE;
for (int i = 0; i < userStatesInternal.size(); i++) {
- final long firstInstallTime = userStatesInternal.valueAt(i).getFirstInstallTime();
+ final long firstInstallTime = userStatesInternal.valueAt(i).getFirstInstallTimeMillis();
if (firstInstallTime != 0 && firstInstallTime < earliestFirstInstallTime) {
earliestFirstInstallTime = firstInstallTime;
}
diff --git a/services/core/java/com/android/server/pm/pkg/PackageUserState.java b/services/core/java/com/android/server/pm/pkg/PackageUserState.java
index 366f8e5..2048d65 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageUserState.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageUserState.java
@@ -16,6 +16,7 @@
package com.android.server.pm.pkg;
+import android.annotation.CurrentTimeMillisLong;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
@@ -50,6 +51,16 @@
*/
boolean isInstalled();
+ /**
+ * In epoch milliseconds. The timestamp of the first install of the app of the particular user
+ * on the device, surviving past app updates. Different users might have a different first
+ * install time.
+ * <p/>
+ * This does not survive full removal of the app (i.e., uninstalls for all users).
+ */
+ @CurrentTimeMillisLong
+ long getFirstInstallTimeMillis();
+
// Methods below this comment are not yet exposed as API
/**
@@ -206,15 +217,4 @@
*/
@Nullable
String getSplashScreenTheme();
-
- /**
- * In epoch milliseconds. The timestamp of the first install of the app of the particular user
- * on the device, surviving past app updates. Different users might have a different first
- * install time.
- * <p/>
- * This does not survive full removal of the app (i.e., uninstalls for all users).
- *
- * @hide
- */
- long getFirstInstallTime();
}
diff --git a/services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java b/services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java
index 2d2e062..73fb672 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java
@@ -136,7 +136,7 @@
}
@Override
- public long getFirstInstallTime() {
+ public long getFirstInstallTimeMillis() {
return 0;
}
diff --git a/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java b/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java
index b3deb1c..ed4aab9 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java
@@ -691,7 +691,7 @@
}
@DataClass.Generated.Member
- public long getFirstInstallTime() {
+ public long getFirstInstallTimeMillis() {
return mFirstInstallTime;
}
diff --git a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackage.java b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackage.java
index 12dfef4..69f2716 100644
--- a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackage.java
+++ b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackage.java
@@ -171,7 +171,7 @@
ParsingPackage setAllowTaskReparenting(boolean allowTaskReparenting);
- ParsingPackage setOverlay(boolean isOverlay);
+ ParsingPackage setResourceOverlay(boolean isResourceOverlay);
ParsingPackage setBackupInForeground(boolean backupInForeground);
diff --git a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java
index 2a2640d..995b9e5 100644
--- a/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java
+++ b/services/core/java/com/android/server/pm/pkg/parsing/ParsingPackageUtils.java
@@ -2828,7 +2828,7 @@
return input.skip(message);
}
- return input.success(pkg.setOverlay(true)
+ return input.success(pkg.setResourceOverlay(true)
.setOverlayTarget(target)
.setOverlayPriority(priority)
.setOverlayTargetOverlayableName(
diff --git a/services/core/java/com/android/server/pm/verify/domain/DomainVerificationService.java b/services/core/java/com/android/server/pm/verify/domain/DomainVerificationService.java
index f80ead6..811d6e2 100644
--- a/services/core/java/com/android/server/pm/verify/domain/DomainVerificationService.java
+++ b/services/core/java/com/android/server/pm/verify/domain/DomainVerificationService.java
@@ -832,11 +832,12 @@
PackageStateInternal firstPkgSetting = snapshot.getPackageStateInternal(first);
PackageStateInternal secondPkgSetting = snapshot.getPackageStateInternal(second);
- long firstInstallTime = firstPkgSetting == null
- ? -1L : firstPkgSetting.getUserStateOrDefault(userId).getFirstInstallTime();
- long secondInstallTime = secondPkgSetting == null
- ? -1L
- : secondPkgSetting.getUserStateOrDefault(userId).getFirstInstallTime();
+ long firstInstallTime =
+ firstPkgSetting == null ? -1L : firstPkgSetting.getUserStateOrDefault(
+ userId).getFirstInstallTimeMillis();
+ long secondInstallTime =
+ secondPkgSetting == null ? -1L : secondPkgSetting.getUserStateOrDefault(
+ userId).getFirstInstallTimeMillis();
if (firstInstallTime != secondInstallTime) {
return (int) (firstInstallTime - secondInstallTime);
@@ -1974,7 +1975,7 @@
if (pkgSetting == null) {
continue;
}
- long installTime = pkgSetting.getUserStateOrDefault(userId).getFirstInstallTime();
+ long installTime = pkgSetting.getUserStateOrDefault(userId).getFirstInstallTimeMillis();
if (installTime > latestInstall) {
latestInstall = installTime;
filteredPackages.clear();
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index fe0fe29..65acdc1 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -86,6 +86,7 @@
import static com.android.server.wm.WindowManagerPolicyProto.SCREEN_ON_FULLY;
import static com.android.server.wm.WindowManagerPolicyProto.WINDOW_MANAGER_DRAW_COMPLETE;
+import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.annotation.Nullable;
import android.app.ActivityManager;
@@ -200,6 +201,7 @@
import com.android.internal.policy.TransitionAnimation;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.ArrayUtils;
+import com.android.server.AccessibilityManagerInternal;
import com.android.server.ExtconStateObserver;
import com.android.server.ExtconUEventObserver;
import com.android.server.GestureLauncherService;
@@ -404,6 +406,7 @@
Vibrator mVibrator; // Vibrator for giving feedback of orientation changes
SearchManager mSearchManager;
AccessibilityManager mAccessibilityManager;
+ AccessibilityManagerInternal mAccessibilityManagerInternal;
BurnInProtectionHelper mBurnInProtectionHelper;
private DisplayFoldController mDisplayFoldController;
AppOpsManager mAppOpsManager;
@@ -851,6 +854,15 @@
}
}
+ AccessibilityManagerInternal getAccessibilityManagerInternal() {
+ synchronized (mServiceAcquireLock) {
+ if (mAccessibilityManagerInternal == null) {
+ mAccessibilityManagerInternal =
+ LocalServices.getService(AccessibilityManagerInternal.class);
+ }
+ return mAccessibilityManagerInternal;
+ }
+ }
// returns true if the key was handled and should not be passed to the user
private boolean backKeyPress() {
@@ -1083,10 +1095,9 @@
// a tendency to hit the power button immediately when they pick up their device, and we
// don't want to put the device back to sleep in those cases.
final PowerManager.WakeData lastWakeUp = mPowerManagerInternal.getLastWakeup();
- if (lastWakeUp != null && lastWakeUp.wakeReason == PowerManager.WAKE_REASON_GESTURE) {
- final int gestureDelayMillis = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.POWER_BUTTON_SUPPRESSION_DELAY_AFTER_GESTURE_WAKE,
- POWER_BUTTON_SUPPRESSION_DELAY_DEFAULT_MILLIS);
+ if (lastWakeUp != null && (lastWakeUp.wakeReason == PowerManager.WAKE_REASON_GESTURE
+ || lastWakeUp.wakeReason == PowerManager.WAKE_REASON_LIFT
+ || lastWakeUp.wakeReason == PowerManager.WAKE_REASON_BIOMETRIC)) {
final long now = SystemClock.uptimeMillis();
if (mPowerButtonSuppressionDelayMillis > 0
&& (now < lastWakeUp.wakeTime + mPowerButtonSuppressionDelayMillis)) {
@@ -1710,6 +1721,11 @@
startActivityAsUser(intent, UserHandle.CURRENT);
}
+ private void launchAllAppsViaA11y() {
+ getAccessibilityManagerInternal().performSystemAction(
+ AccessibilityService.GLOBAL_ACTION_ACCESSIBILITY_ALL_APPS);
+ }
+
private void toggleNotificationPanel() {
IStatusBarService statusBarService = getStatusBarService();
if (isUserSetupComplete() && statusBarService != null) {
@@ -2577,6 +2593,7 @@
mStylusButtonsDisabled = Settings.Secure.getIntForUser(resolver,
Secure.STYLUS_BUTTONS_DISABLED, 0, UserHandle.USER_CURRENT) == 1;
+ mInputManagerInternal.setStylusButtonMotionEventsEnabled(!mStylusButtonsDisabled);
}
if (updateRotation) {
updateRotation(true);
@@ -3138,7 +3155,7 @@
mPendingCapsLockToggle = false;
} else if (mPendingMetaAction) {
if (!canceled) {
- // TODO: launch all apps here.
+ launchAllAppsViaA11y();
}
mPendingMetaAction = false;
}
@@ -4283,9 +4300,7 @@
case KeyEvent.KEYCODE_DEMO_APP_3:
case KeyEvent.KEYCODE_DEMO_APP_4: {
// TODO(b/254604589): Dispatch KeyEvent to System UI.
- if (!mStylusButtonsDisabled) {
- sendSystemKeyToStatusBarAsync(keyCode);
- }
+ sendSystemKeyToStatusBarAsync(keyCode);
// Just drop if keys are not intercepted for direct key.
result &= ~ACTION_PASS_TO_USER;
@@ -4295,7 +4310,9 @@
case KeyEvent.KEYCODE_STYLUS_BUTTON_SECONDARY:
case KeyEvent.KEYCODE_STYLUS_BUTTON_TERTIARY:
case KeyEvent.KEYCODE_STYLUS_BUTTON_TAIL: {
- // TODO(go/android-stylus-buttons): Handle stylus button presses.
+ if (!mStylusButtonsDisabled) {
+ sendSystemKeyToStatusBarAsync(keyCode);
+ }
result &= ~ACTION_PASS_TO_USER;
break;
}
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 884d5d6..c29ab09 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -3229,8 +3229,7 @@
}
final PowerGroup powerGroup = mPowerGroups.get(groupId);
wakefulness = powerGroup.getWakefulnessLocked();
- if ((wakefulness == WAKEFULNESS_DREAMING || wakefulness == WAKEFULNESS_DOZING) &&
- powerGroup.isSandmanSummonedLocked() && powerGroup.isReadyLocked()) {
+ if (powerGroup.isSandmanSummonedLocked() && powerGroup.isReadyLocked()) {
startDreaming = canDreamLocked(powerGroup) || canDozeLocked(powerGroup);
powerGroup.setSandmanSummonedLocked(/* isSandmanSummoned= */ false);
} else {
diff --git a/services/core/java/com/android/server/security/rkp/TEST_MAPPING b/services/core/java/com/android/server/security/rkp/TEST_MAPPING
new file mode 100644
index 0000000..e983968
--- /dev/null
+++ b/services/core/java/com/android/server/security/rkp/TEST_MAPPING
@@ -0,0 +1,8 @@
+{
+ "presubmit": [
+ {
+ "name": "RemoteProvisioningServiceTests"
+ }
+ ]
+}
+
diff --git a/services/core/java/com/android/server/telecom/TelecomLoaderService.java b/services/core/java/com/android/server/telecom/TelecomLoaderService.java
index 32ad702..63a3e5a 100644
--- a/services/core/java/com/android/server/telecom/TelecomLoaderService.java
+++ b/services/core/java/com/android/server/telecom/TelecomLoaderService.java
@@ -72,21 +72,19 @@
final LegacyPermissionManagerInternal permissionManager =
LocalServices.getService(LegacyPermissionManagerInternal.class);
if (mDefaultSimCallManagerRequests != null) {
- if (mDefaultSimCallManagerRequests != null) {
- TelecomManager telecomManager =
+ TelecomManager telecomManager =
(TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
- PhoneAccountHandle phoneAccount = telecomManager.getSimCallManager();
- if (phoneAccount != null) {
- final int requestCount = mDefaultSimCallManagerRequests.size();
- final String packageName =
+ PhoneAccountHandle phoneAccount = telecomManager.getSimCallManager();
+ if (phoneAccount != null) {
+ final int requestCount = mDefaultSimCallManagerRequests.size();
+ final String packageName =
phoneAccount.getComponentName().getPackageName();
- for (int i = requestCount - 1; i >= 0; i--) {
- final int userId = mDefaultSimCallManagerRequests.get(i);
- mDefaultSimCallManagerRequests.remove(i);
- permissionManager
- .grantDefaultPermissionsToDefaultSimCallManager(
- packageName, userId);
- }
+ for (int i = requestCount - 1; i >= 0; i--) {
+ final int userId = mDefaultSimCallManagerRequests.get(i);
+ mDefaultSimCallManagerRequests.remove(i);
+ permissionManager
+ .grantDefaultPermissionsToDefaultSimCallManager(
+ packageName, userId);
}
}
}
diff --git a/services/core/java/com/android/server/timedetector/NetworkTimeUpdateService.java b/services/core/java/com/android/server/timedetector/NetworkTimeUpdateService.java
index b96af89..41824de 100644
--- a/services/core/java/com/android/server/timedetector/NetworkTimeUpdateService.java
+++ b/services/core/java/com/android/server/timedetector/NetworkTimeUpdateService.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.time.UnixEpochTime;
@@ -33,8 +34,6 @@
import android.os.Binder;
import android.os.Handler;
import android.os.HandlerThread;
-import android.os.Looper;
-import android.os.Message;
import android.os.PowerManager;
import android.os.ResultReceiver;
import android.os.ShellCallback;
@@ -45,6 +44,7 @@
import android.util.NtpTrustedTime;
import android.util.NtpTrustedTime.TimeResult;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.DumpUtils;
import com.android.server.LocalServices;
@@ -66,17 +66,13 @@
private static final String TAG = "NetworkTimeUpdateService";
private static final boolean DBG = false;
- private static final int EVENT_AUTO_TIME_ENABLED = 1;
- private static final int EVENT_POLL_NETWORK_TIME = 2;
- private static final int EVENT_NETWORK_CHANGED = 3;
-
private static final String ACTION_POLL =
"com.android.server.timedetector.NetworkTimeUpdateService.action.POLL";
-
private static final int POLL_REQUEST = 0;
+ private final Object mLock = new Object();
private final Context mContext;
- private final NtpTrustedTime mTime;
+ private final NtpTrustedTime mNtpTrustedTime;
private final AlarmManager mAlarmManager;
private final TimeDetectorInternal mTimeDetectorInternal;
private final ConnectivityManager mCM;
@@ -84,9 +80,9 @@
private final PowerManager.WakeLock mWakeLock;
// Normal polling frequency
- private final long mPollingIntervalMs;
+ private final int mNormalPollingIntervalMillis;
// Try-again polling interval, in case the network request failed
- private final long mPollingIntervalShorterMs;
+ private final int mShortPollingIntervalMillis;
// Number of times to try again
private final int mTryAgainTimesMax;
@@ -94,18 +90,13 @@
* A log that records the decisions to fetch a network time update.
* This is logged in bug reports to assist with debugging issues with network time suggestions.
*/
- @NonNull
private final LocalLog mLocalLog = new LocalLog(30, false /* useLocalTimestamps */);
- // NTP lookup is done on this thread and handler
- // @NonNull after systemRunning()
- private Handler mHandler;
- // @NonNull after systemRunning()
- private AutoTimeSettingObserver mAutoTimeSettingObserver;
- // @NonNull after systemRunning()
- private NetworkTimeUpdateCallback mNetworkTimeUpdateCallback;
+ // Blocking NTP lookup is done using this handler
+ private final Handler mHandler;
// This field is only updated and accessed by the mHandler thread (except dump()).
+ @GuardedBy("mLock")
@Nullable
private Network mDefaultNetwork = null;
@@ -113,54 +104,76 @@
// During bootup, the network may not have been up yet, or it's taking time for the
// connection to happen.
// This field is only updated and accessed by the mHandler thread (except dump()).
+ @GuardedBy("mLock")
private int mTryAgainCounter;
public NetworkTimeUpdateService(@NonNull Context context) {
mContext = Objects.requireNonNull(context);
- mTime = NtpTrustedTime.getInstance(context);
mAlarmManager = mContext.getSystemService(AlarmManager.class);
mTimeDetectorInternal = LocalServices.getService(TimeDetectorInternal.class);
mCM = mContext.getSystemService(ConnectivityManager.class);
-
- Intent pollIntent = new Intent(ACTION_POLL, null);
- // Broadcast alarms sent by system are immutable
- mPendingPollIntent = PendingIntent.getBroadcast(mContext, POLL_REQUEST, pollIntent,
- PendingIntent.FLAG_IMMUTABLE);
-
- mPollingIntervalMs = mContext.getResources().getInteger(
- com.android.internal.R.integer.config_ntpPollingInterval);
- mPollingIntervalShorterMs = mContext.getResources().getInteger(
- com.android.internal.R.integer.config_ntpPollingIntervalShorter);
- mTryAgainTimesMax = mContext.getResources().getInteger(
- com.android.internal.R.integer.config_ntpRetry);
-
mWakeLock = context.getSystemService(PowerManager.class).newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK, TAG);
+ mNtpTrustedTime = NtpTrustedTime.getInstance(context);
+
+ mTryAgainTimesMax = mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_ntpRetry);
+ mNormalPollingIntervalMillis = mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_ntpPollingInterval);
+ mShortPollingIntervalMillis = mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_ntpPollingIntervalShorter);
+
+ // Broadcast alarms sent by system are immutable
+ Intent pollIntent = new Intent(ACTION_POLL, null);
+ mPendingPollIntent = PendingIntent.getBroadcast(mContext, POLL_REQUEST,
+ pollIntent, PendingIntent.FLAG_IMMUTABLE);
+
+ HandlerThread thread = new HandlerThread(TAG);
+ thread.start();
+ mHandler = thread.getThreadHandler();
}
/** Initialize the receivers and initiate the first NTP request */
public void systemRunning() {
- registerForAlarms();
-
- HandlerThread thread = new HandlerThread(TAG);
- thread.start();
- mHandler = new MyHandler(thread.getLooper());
- mNetworkTimeUpdateCallback = new NetworkTimeUpdateCallback();
- mCM.registerDefaultNetworkCallback(mNetworkTimeUpdateCallback, mHandler);
-
- mAutoTimeSettingObserver = new AutoTimeSettingObserver(mContext, mHandler,
- EVENT_AUTO_TIME_ENABLED);
- mAutoTimeSettingObserver.observe();
- }
-
- private void registerForAlarms() {
+ // Listen for scheduled refreshes.
mContext.registerReceiver(
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- mHandler.obtainMessage(EVENT_POLL_NETWORK_TIME).sendToTarget();
+ onPollNetworkTime("scheduled refresh");
}
- }, new IntentFilter(ACTION_POLL));
+ },
+ new IntentFilter(ACTION_POLL),
+ /*broadcastPermission=*/ null,
+ mHandler);
+
+ // Listen for network connectivity changes.
+ NetworkTimeUpdateCallback networkTimeUpdateCallback = new NetworkTimeUpdateCallback();
+ mCM.registerDefaultNetworkCallback(networkTimeUpdateCallback, mHandler);
+
+ // Listen for user settings changes.
+ ContentResolver resolver = mContext.getContentResolver();
+ AutoTimeSettingObserver autoTimeSettingObserver =
+ new AutoTimeSettingObserver(mHandler, mContext);
+ resolver.registerContentObserver(Settings.Global.getUriFor(Settings.Global.AUTO_TIME),
+ false, autoTimeSettingObserver);
+ }
+
+ /**
+ * Overrides the NTP server config for tests. Passing {@code null} to a parameter clears the
+ * test value, i.e. so the normal value will be used next time.
+ */
+ @RequiresPermission(android.Manifest.permission.SET_TIME)
+ void setServerConfigForTests(@Nullable NtpTrustedTime.NtpConfig ntpConfig) {
+ mContext.enforceCallingPermission(
+ android.Manifest.permission.SET_TIME, "set NTP server config for tests");
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ mNtpTrustedTime.setServerConfigForTests(ntpConfig);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
}
/**
@@ -168,15 +181,14 @@
*
* <p>This operation takes place in the calling thread rather than the service's handler thread.
*/
+ @RequiresPermission(android.Manifest.permission.SET_TIME)
void clearTimeForTests() {
mContext.enforceCallingPermission(
android.Manifest.permission.SET_TIME, "clear latest network time");
final long token = Binder.clearCallingIdentity();
try {
- mTime.clearCachedTimeResult();
-
- mLocalLog.log("clearTimeForTests");
+ mNtpTrustedTime.clearCachedTimeResult();
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -186,20 +198,28 @@
* Forces the service to refresh the NTP time.
*
* <p>This operation takes place in the calling thread rather than the service's handler thread.
- * This method does not affect currently scheduled refreshes. If the NTP request is successful
- * it will make an (asynchronously handled) suggestion to the time detector.
+ * This method does not affect currently scheduled refreshes.
+ *
+ * <p>If the NTP request is successful it will synchronously make a suggestion to the time
+ * detector, which will be asynchronously handled; therefore the effects are not guaranteed to
+ * be visible when this call returns.
*/
+ @RequiresPermission(android.Manifest.permission.SET_TIME)
boolean forceRefreshForTests() {
mContext.enforceCallingPermission(
android.Manifest.permission.SET_TIME, "force network time refresh");
final long token = Binder.clearCallingIdentity();
try {
- boolean success = mTime.forceRefresh();
- mLocalLog.log("forceRefreshForTests: success=" + success);
+ Network network;
+ synchronized (mLock) {
+ network = mDefaultNetwork;
+ }
+ if (network == null) return false;
+ boolean success = mNtpTrustedTime.forceRefresh(network);
if (success) {
- makeNetworkTimeSuggestion(mTime.getCachedTimeResult(),
+ makeNetworkTimeSuggestion(mNtpTrustedTime.getCachedTimeResult(),
"Origin: NetworkTimeUpdateService: forceRefreshForTests");
}
return success;
@@ -208,49 +228,41 @@
}
}
- /**
- * Overrides the NTP server config for tests. Passing {@code null} to a parameter clears the
- * test value, i.e. so the normal value will be used next time.
- */
- void setServerConfigForTests(@Nullable NtpTrustedTime.NtpConfig ntpConfig) {
- mContext.enforceCallingPermission(
- android.Manifest.permission.SET_TIME, "set NTP server config for tests");
-
- final long token = Binder.clearCallingIdentity();
- try {
- mLocalLog.log("Setting server config for tests: ntpConnectionInfo=" + ntpConfig);
- mTime.setServerConfigForTests(ntpConfig);
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- private void onPollNetworkTime(int event) {
+ private void onPollNetworkTime(@NonNull String reason) {
// If we don't have any default network, don't bother.
- Network network = mDefaultNetwork;
+ Network network;
+ synchronized (mLock) {
+ network = mDefaultNetwork;
+ }
if (network == null) return;
mWakeLock.acquire();
try {
- onPollNetworkTimeUnderWakeLock(network, event);
+ onPollNetworkTimeUnderWakeLock(network, reason);
} finally {
mWakeLock.release();
}
}
- private void onPollNetworkTimeUnderWakeLock(@NonNull Network network, int event) {
+ private void onPollNetworkTimeUnderWakeLock(
+ @NonNull Network network, @NonNull String reason) {
long currentElapsedRealtimeMillis = SystemClock.elapsedRealtime();
+ final int maxNetworkTimeAgeMillis = mNormalPollingIntervalMillis;
// Force an NTP fix when outdated
- NtpTrustedTime.TimeResult cachedNtpResult = mTime.getCachedTimeResult();
- if (cachedNtpResult == null || cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis)
- >= mPollingIntervalMs) {
+ NtpTrustedTime.TimeResult cachedNtpResult = mNtpTrustedTime.getCachedTimeResult();
+ if (cachedNtpResult == null
+ || cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis)
+ >= maxNetworkTimeAgeMillis) {
if (DBG) Log.d(TAG, "Stale NTP fix; forcing refresh using network=" + network);
- boolean isSuccessful = mTime.forceRefresh(network);
- if (isSuccessful) {
- mTryAgainCounter = 0;
+ boolean success = mNtpTrustedTime.forceRefresh(network);
+ if (success) {
+ synchronized (mLock) {
+ mTryAgainCounter = 0;
+ }
} else {
- String logMsg = "forceRefresh() returned false: cachedNtpResult=" + cachedNtpResult
+ String logMsg = "forceRefresh() returned false:"
+ + " cachedNtpResult=" + cachedNtpResult
+ ", currentElapsedRealtimeMillis=" + currentElapsedRealtimeMillis;
if (DBG) {
@@ -259,32 +271,35 @@
mLocalLog.log(logMsg);
}
- cachedNtpResult = mTime.getCachedTimeResult();
+ cachedNtpResult = mNtpTrustedTime.getCachedTimeResult();
}
if (cachedNtpResult != null
&& cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis)
- < mPollingIntervalMs) {
+ < maxNetworkTimeAgeMillis) {
// Obtained fresh fix; schedule next normal update
- resetAlarm(mPollingIntervalMs
+ scheduleNextRefresh(mNormalPollingIntervalMillis
- cachedNtpResult.getAgeMillis(currentElapsedRealtimeMillis));
- makeNetworkTimeSuggestion(cachedNtpResult,
- "Origin: NetworkTimeUpdateService. event=" + event);
+ makeNetworkTimeSuggestion(cachedNtpResult, reason);
} else {
- // No fresh fix; schedule retry
- mTryAgainCounter++;
- if (mTryAgainTimesMax < 0 || mTryAgainCounter <= mTryAgainTimesMax) {
- resetAlarm(mPollingIntervalShorterMs);
- } else {
- // Try much later
- String logMsg = "mTryAgainTimesMax exceeded, cachedNtpResult=" + cachedNtpResult;
- if (DBG) {
- Log.d(TAG, logMsg);
+ synchronized (mLock) {
+ // No fresh fix; schedule retry
+ mTryAgainCounter++;
+ if (mTryAgainTimesMax < 0 || mTryAgainCounter <= mTryAgainTimesMax) {
+ scheduleNextRefresh(mShortPollingIntervalMillis);
+ } else {
+ // Try much later
+ String logMsg = "mTryAgainTimesMax exceeded,"
+ + " cachedNtpResult=" + cachedNtpResult;
+ if (DBG) {
+ Log.d(TAG, logMsg);
+ }
+ mLocalLog.log(logMsg);
+ mTryAgainCounter = 0;
+
+ scheduleNextRefresh(mNormalPollingIntervalMillis);
}
- mLocalLog.log(logMsg);
- mTryAgainCounter = 0;
- resetAlarm(mPollingIntervalMs);
}
}
}
@@ -304,46 +319,35 @@
/**
* Cancel old alarm and starts a new one for the specified interval.
*
- * @param interval when to trigger the alarm, starting from now.
+ * @param delayMillis when to trigger the alarm, starting from now.
*/
- private void resetAlarm(long interval) {
+ private void scheduleNextRefresh(long delayMillis) {
mAlarmManager.cancel(mPendingPollIntent);
long now = SystemClock.elapsedRealtime();
- long next = now + interval;
+ long next = now + delayMillis;
mAlarmManager.set(AlarmManager.ELAPSED_REALTIME, next, mPendingPollIntent);
}
- /** Handler to do the network accesses on */
- private class MyHandler extends Handler {
-
- MyHandler(Looper l) {
- super(l);
- }
-
- @Override
- public void handleMessage(@NonNull Message msg) {
- switch (msg.what) {
- case EVENT_AUTO_TIME_ENABLED:
- case EVENT_POLL_NETWORK_TIME:
- case EVENT_NETWORK_CHANGED:
- onPollNetworkTime(msg.what);
- break;
- }
- }
- }
-
+ // All callbacks will be invoked using mHandler because of how the callback is registered.
private class NetworkTimeUpdateCallback extends NetworkCallback {
@Override
public void onAvailable(@NonNull Network network) {
Log.d(TAG, String.format("New default network %s; checking time.", network));
- mDefaultNetwork = network;
+ synchronized (mLock) {
+ mDefaultNetwork = network;
+ }
+
// Running on mHandler so invoke directly.
- onPollNetworkTime(EVENT_NETWORK_CHANGED);
+ onPollNetworkTime("network available");
}
@Override
public void onLost(@NonNull Network network) {
- if (network.equals(mDefaultNetwork)) mDefaultNetwork = null;
+ synchronized (mLock) {
+ if (network.equals(mDefaultNetwork)) {
+ mDefaultNetwork = null;
+ }
+ }
}
}
@@ -351,29 +355,20 @@
* Observer to watch for changes to the AUTO_TIME setting. It only triggers when the setting
* is enabled.
*/
- private static class AutoTimeSettingObserver extends ContentObserver {
+ private class AutoTimeSettingObserver extends ContentObserver {
private final Context mContext;
- private final int mMsg;
- private final Handler mHandler;
- AutoTimeSettingObserver(@NonNull Context context, @NonNull Handler handler, int msg) {
+ AutoTimeSettingObserver(@NonNull Handler handler, @NonNull Context context) {
super(handler);
mContext = Objects.requireNonNull(context);
- mHandler = Objects.requireNonNull(handler);
- mMsg = msg;
- }
-
- void observe() {
- ContentResolver resolver = mContext.getContentResolver();
- resolver.registerContentObserver(Settings.Global.getUriFor(Settings.Global.AUTO_TIME),
- false, this);
}
@Override
public void onChange(boolean selfChange) {
+ // onChange() will be invoked using handler, see the constructor.
if (isAutomaticTimeEnabled()) {
- mHandler.obtainMessage(mMsg).sendToTarget();
+ onPollNetworkTime("automatic time enabled");
}
}
@@ -389,14 +384,19 @@
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
- pw.println("mPollingIntervalMs=" + Duration.ofMillis(mPollingIntervalMs));
- pw.println("mPollingIntervalShorterMs=" + Duration.ofMillis(mPollingIntervalShorterMs));
+
+ pw.println("mNormalPollingIntervalMillis="
+ + Duration.ofMillis(mNormalPollingIntervalMillis));
+ pw.println("mShortPollingIntervalMillis="
+ + Duration.ofMillis(mShortPollingIntervalMillis));
pw.println("mTryAgainTimesMax=" + mTryAgainTimesMax);
- pw.println("mDefaultNetwork=" + mDefaultNetwork);
- pw.println("mTryAgainCounter=" + mTryAgainCounter);
+ synchronized (mLock) {
+ pw.println("mDefaultNetwork=" + mDefaultNetwork);
+ pw.println("mTryAgainCounter=" + mTryAgainCounter);
+ }
pw.println();
pw.println("NtpTrustedTime:");
- mTime.dump(pw);
+ mNtpTrustedTime.dump(pw);
pw.println();
pw.println("Local logs:");
mLocalLog.dump(fd, pw, args);
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorService.java b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
index 9d098c6..1be9074 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorService.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
@@ -29,7 +29,6 @@
import android.app.timedetector.ITimeDetectorService;
import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.TelephonyTimeSuggestion;
-import android.app.timedetector.TimePoint;
import android.content.Context;
import android.os.Binder;
import android.os.Handler;
@@ -361,6 +360,34 @@
mHandler.post(() -> mTimeDetectorStrategy.suggestNetworkTime(timeSignal));
}
+ @Override
+ public UnixEpochTime latestNetworkTime() {
+ NetworkTimeSuggestion suggestion = getLatestNetworkSuggestion();
+ if (suggestion != null) {
+ return suggestion.getUnixEpochTime();
+ } else {
+ throw new ParcelableException(new DateTimeException("Missing network time fix"));
+ }
+ }
+
+ /**
+ * Returns the latest network suggestion accepted. For use by {@link TimeDetectorShellCommand}.
+ */
+ @Nullable
+ NetworkTimeSuggestion getLatestNetworkSuggestion() {
+ // TODO(b/222295093): Return the latest network time from mTimeDetectorStrategy once we can
+ // be sure that all uses of NtpTrustedTime results in a suggestion being made to the time
+ // detector. mNtpTrustedTime can be removed once this happens.
+ NtpTrustedTime.TimeResult ntpResult = mNtpTrustedTime.getCachedTimeResult();
+ if (ntpResult != null) {
+ UnixEpochTime unixEpochTime = new UnixEpochTime(
+ ntpResult.getElapsedRealtimeMillis(), ntpResult.getTimeMillis());
+ return new NetworkTimeSuggestion(unixEpochTime, ntpResult.getUncertaintyMillis());
+ } else {
+ return null;
+ }
+ }
+
void suggestGnssTime(@NonNull GnssTimeSuggestion timeSignal) {
enforceSuggestGnssTimePermission();
Objects.requireNonNull(timeSignal);
@@ -377,19 +404,6 @@
}
@Override
- public TimePoint latestNetworkTime() {
- // TODO(b/222295093): Return the latest network time from mTimeDetectorStrategy once we can
- // be sure that all uses of NtpTrustedTime results in a suggestion being made to the time
- // detector. mNtpTrustedTime can be removed once this happens.
- NtpTrustedTime.TimeResult ntpResult = mNtpTrustedTime.getCachedTimeResult();
- if (ntpResult != null) {
- return new TimePoint(ntpResult.getTimeMillis(), ntpResult.getElapsedRealtimeMillis());
- } else {
- throw new ParcelableException(new DateTimeException("Missing network time fix"));
- }
- }
-
- @Override
protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw,
@Nullable String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
@@ -421,7 +435,7 @@
private void enforceSuggestNetworkTimePermission() {
mContext.enforceCallingPermission(
android.Manifest.permission.SET_TIME,
- "set time");
+ "suggest network time");
}
private void enforceSuggestGnssTimePermission() {
diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java
index 863ee75..73b2238 100755
--- a/services/core/java/com/android/server/tv/TvInputManagerService.java
+++ b/services/core/java/com/android/server/tv/TvInputManagerService.java
@@ -3610,6 +3610,23 @@
}
}
+ @Override
+ public void onTvMessage(String type, Bundle data) {
+ synchronized (mLock) {
+ if (DEBUG) {
+ Slog.d(TAG, "onTvMessage(type=" + type + ", data=" + data + ")");
+ }
+ if (mSessionState.session == null || mSessionState.client == null) {
+ return;
+ }
+ try {
+ mSessionState.client.onTvMessage(type, data, mSessionState.seq);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "error in onTvMessage", e);
+ }
+ }
+ }
+
// For the recording session only
@Override
public void onRecordingStopped(Uri recordedProgramUri) {
diff --git a/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java b/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java
index 966e883..ebee995 100644
--- a/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java
+++ b/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java
@@ -1049,6 +1049,29 @@
}
@Override
+ public void notifyTvMessage(IBinder sessionToken, String type, Bundle data, int userId) {
+ final int callingUid = Binder.getCallingUid();
+ final int callingPid = Binder.getCallingPid();
+ final int resolvedUserId = resolveCallingUserId(callingPid, callingUid, userId,
+ "notifyTvMessage");
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ try {
+ SessionState sessionState = getSessionStateLocked(sessionToken, callingUid,
+ resolvedUserId);
+ getSessionLocked(sessionState).notifyTvMessage(type, data);
+ } catch (RemoteException | SessionNotFoundException e) {
+ Slogf.e(TAG, "error in notifyTvMessage", e);
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+
+ @Override
public void notifyRecordingStarted(IBinder sessionToken, String recordingId, int userId) {
final int callingUid = Binder.getCallingUid();
final int callingPid = Binder.getCallingPid();
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperData.java b/services/core/java/com/android/server/wallpaper/WallpaperData.java
new file mode 100644
index 0000000..79de282
--- /dev/null
+++ b/services/core/java/com/android/server/wallpaper/WallpaperData.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wallpaper;
+
+import static android.app.WallpaperManager.FLAG_LOCK;
+
+import static com.android.server.wallpaper.WallpaperManagerService.WALLPAPER;
+import static com.android.server.wallpaper.WallpaperManagerService.WALLPAPER_CROP;
+import static com.android.server.wallpaper.WallpaperManagerService.WALLPAPER_LOCK_CROP;
+import static com.android.server.wallpaper.WallpaperManagerService.WALLPAPER_LOCK_ORIG;
+import static com.android.server.wallpaper.WallpaperUtils.getWallpaperDir;
+
+import android.app.IWallpaperManagerCallback;
+import android.app.WallpaperColors;
+import android.app.WallpaperManager.SetWallpaperFlags;
+import android.content.ComponentName;
+import android.graphics.Rect;
+import android.os.RemoteCallbackList;
+import android.util.ArrayMap;
+
+import java.io.File;
+
+/**
+ * The main wallpaper data model, used internally by the {@link WallpaperManagerService}. <br>
+ * An instance of this class contains all the information about a wallpaper.
+ */
+class WallpaperData {
+
+ int userId;
+
+ final File wallpaperFile; // source image
+ final File cropFile; // eventual destination
+
+ /**
+ * True while the client is writing a new wallpaper
+ */
+ boolean imageWallpaperPending;
+
+ /**
+ * Which wallpaper is set. Flag values are from {@link SetWallpaperFlags}.
+ */
+ int mWhich;
+
+ /**
+ * Callback once the set + crop is finished
+ */
+ IWallpaperManagerCallback setComplete;
+
+ /**
+ * Is the OS allowed to back up this wallpaper imagery?
+ */
+ boolean allowBackup;
+
+ /**
+ * Resource name if using a picture from the wallpaper gallery
+ */
+ String name = "";
+
+ /**
+ * The component name of the currently set live wallpaper.
+ */
+ ComponentName wallpaperComponent;
+
+ /**
+ * The component name of the wallpaper that should be set next.
+ */
+ ComponentName nextWallpaperComponent;
+
+ /**
+ * The ID of this wallpaper
+ */
+ int wallpaperId;
+
+ /**
+ * Primary colors histogram
+ */
+ WallpaperColors primaryColors;
+
+ /**
+ * If the wallpaper was set from a foreground app (instead of from a background service).
+ */
+ public boolean fromForegroundApp;
+
+ WallpaperManagerService.WallpaperConnection connection;
+ long lastDiedTime;
+ boolean wallpaperUpdating;
+ WallpaperManagerService.WallpaperObserver wallpaperObserver;
+
+ /**
+ * The dim amount to be applied to the wallpaper.
+ */
+ float mWallpaperDimAmount = 0.0f;
+
+ /**
+ * A map to keep track of the dimming set by different applications. The key is the calling
+ * UID and the value is the dim amount.
+ */
+ ArrayMap<Integer, Float> mUidToDimAmount = new ArrayMap<>();
+
+ /**
+ * Whether we need to extract the wallpaper colors again to calculate the dark hints
+ * after dimming is applied.
+ */
+ boolean mIsColorExtractedFromDim;
+
+ /**
+ * List of callbacks registered they should each be notified when the wallpaper is changed.
+ */
+ RemoteCallbackList<IWallpaperManagerCallback> callbacks = new RemoteCallbackList<>();
+
+ /**
+ * The crop hint supplied for displaying a subset of the source image
+ */
+ final Rect cropHint = new Rect(0, 0, 0, 0);
+
+ WallpaperData(int userId, File wallpaperDir, String inputFileName, String cropFileName) {
+ this.userId = userId;
+ wallpaperFile = new File(wallpaperDir, inputFileName);
+ cropFile = new File(wallpaperDir, cropFileName);
+ }
+
+ WallpaperData(int userId, @SetWallpaperFlags int wallpaperType) {
+ this(userId, getWallpaperDir(userId),
+ (wallpaperType == FLAG_LOCK) ? WALLPAPER_LOCK_ORIG : WALLPAPER,
+ (wallpaperType == FLAG_LOCK) ? WALLPAPER_LOCK_CROP : WALLPAPER_CROP);
+ }
+
+ // Called during initialization of a given user's wallpaper bookkeeping
+ boolean cropExists() {
+ return cropFile.exists();
+ }
+
+ boolean sourceExists() {
+ return wallpaperFile.exists();
+ }
+}
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index cee7864..3d59b7b 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -32,6 +32,8 @@
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
+import static com.android.server.wallpaper.WallpaperUtils.getWallpaperDir;
+
import android.annotation.NonNull;
import android.app.ActivityManager;
import android.app.ActivityOptions;
@@ -71,7 +73,6 @@
import android.os.Binder;
import android.os.Bundle;
import android.os.Debug;
-import android.os.Environment;
import android.os.FileObserver;
import android.os.FileUtils;
import android.os.Handler;
@@ -149,6 +150,7 @@
private static final boolean DEBUG = false;
private static final boolean DEBUG_LIVE = true;
private static final boolean DEBUG_CROP = true;
+
private static final @NonNull RectF LOCAL_COLOR_BOUNDS =
new RectF(0, 0, 1, 1);
@@ -921,112 +923,6 @@
private boolean mInAmbientMode;
private LocalColorRepository mLocalColorRepo = new LocalColorRepository();
- static class WallpaperData {
-
- int userId;
-
- final File wallpaperFile; // source image
- final File cropFile; // eventual destination
-
- /**
- * True while the client is writing a new wallpaper
- */
- boolean imageWallpaperPending;
-
- /**
- * Which wallpaper is set. Flag values are from {@link SetWallpaperFlags}.
- */
- int mWhich;
-
- /**
- * Callback once the set + crop is finished
- */
- IWallpaperManagerCallback setComplete;
-
- /**
- * Is the OS allowed to back up this wallpaper imagery?
- */
- boolean allowBackup;
-
- /**
- * Resource name if using a picture from the wallpaper gallery
- */
- String name = "";
-
- /**
- * The component name of the currently set live wallpaper.
- */
- ComponentName wallpaperComponent;
-
- /**
- * The component name of the wallpaper that should be set next.
- */
- ComponentName nextWallpaperComponent;
-
- /**
- * The ID of this wallpaper
- */
- int wallpaperId;
-
- /**
- * Primary colors histogram
- */
- WallpaperColors primaryColors;
-
- /**
- * If the wallpaper was set from a foreground app (instead of from a background service).
- */
- public boolean fromForegroundApp;
-
- WallpaperConnection connection;
- long lastDiedTime;
- boolean wallpaperUpdating;
- WallpaperObserver wallpaperObserver;
-
- /**
- * The dim amount to be applied to the wallpaper.
- */
- float mWallpaperDimAmount = 0.0f;
-
- /**
- * A map to keep track of the dimming set by different applications. The key is the calling
- * UID and the value is the dim amount.
- */
- ArrayMap<Integer, Float> mUidToDimAmount = new ArrayMap<>();
-
- /**
- * Whether we need to extract the wallpaper colors again to calculate the dark hints
- * after dimming is applied.
- */
- boolean mIsColorExtractedFromDim;
-
- /**
- * List of callbacks registered they should each be notified when the wallpaper is changed.
- */
- private RemoteCallbackList<IWallpaperManagerCallback> callbacks
- = new RemoteCallbackList<IWallpaperManagerCallback>();
-
- /**
- * The crop hint supplied for displaying a subset of the source image
- */
- final Rect cropHint = new Rect(0, 0, 0, 0);
-
- WallpaperData(int userId, File wallpaperDir, String inputFileName, String cropFileName) {
- this.userId = userId;
- wallpaperFile = new File(wallpaperDir, inputFileName);
- cropFile = new File(wallpaperDir, cropFileName);
- }
-
- // Called during initialization of a given user's wallpaper bookkeeping
- boolean cropExists() {
- return cropFile.exists();
- }
-
- boolean sourceExists() {
- return wallpaperFile.exists();
- }
- }
-
@VisibleForTesting
static final class DisplayData {
int mWidth = -1;
@@ -1784,10 +1680,6 @@
getWallpaperSafeLocked(UserHandle.USER_SYSTEM, FLAG_SYSTEM);
}
- File getWallpaperDir(int userId) {
- return Environment.getUserSystemDirectory(userId);
- }
-
@Override
protected void finalize() throws Throwable {
super.finalize();
@@ -1928,9 +1820,7 @@
}
private void clearWallpaperData(int userID, int wallpaperType) {
- final WallpaperData wallpaper = new WallpaperData(userID, getWallpaperDir(userID),
- (wallpaperType == FLAG_LOCK) ? WALLPAPER_LOCK_ORIG : WALLPAPER,
- (wallpaperType == FLAG_LOCK) ? WALLPAPER_LOCK_CROP : WALLPAPER_CROP);
+ final WallpaperData wallpaper = new WallpaperData(userID, wallpaperType);
if (wallpaper.sourceExists()) {
wallpaper.wallpaperFile.delete();
}
@@ -2050,9 +1940,7 @@
// while locked, so pretend like the component was actually
// bound into place
wallpaper.wallpaperComponent = wallpaper.nextWallpaperComponent;
- final WallpaperData fallback =
- new WallpaperData(wallpaper.userId, getWallpaperDir(wallpaper.userId),
- WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
+ final WallpaperData fallback = new WallpaperData(wallpaper.userId, FLAG_LOCK);
ensureSaneWallpaperData(fallback);
bindWallpaperComponentLocked(mImageWallpaper, true, false, fallback, reply);
mWaitingForUnlock = true;
@@ -2914,8 +2802,7 @@
}
// We know a-priori that there is no lock-only wallpaper currently
- WallpaperData lockWP = new WallpaperData(userId, getWallpaperDir(userId),
- WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
+ WallpaperData lockWP = new WallpaperData(userId, FLAG_LOCK);
lockWP.wallpaperId = sysWP.wallpaperId;
lockWP.cropHint.set(sysWP.cropHint);
lockWP.allowBackup = sysWP.allowBackup;
@@ -3588,16 +3475,14 @@
// it now.
if (wallpaper == null) {
if (which == FLAG_LOCK) {
- wallpaper = new WallpaperData(userId, getWallpaperDir(userId),
- WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
+ wallpaper = new WallpaperData(userId, FLAG_LOCK);
mLockWallpaperMap.put(userId, wallpaper);
ensureSaneWallpaperData(wallpaper);
} else {
// rationality fallback: we're in bad shape, but establishing a known
// valid system+lock WallpaperData will keep us from dying.
Slog.wtf(TAG, "Didn't find wallpaper in non-lock case!");
- wallpaper = new WallpaperData(userId, getWallpaperDir(userId),
- WALLPAPER, WALLPAPER_CROP);
+ wallpaper = new WallpaperData(userId, FLAG_SYSTEM);
mWallpaperMap.put(userId, wallpaper);
ensureSaneWallpaperData(wallpaper);
}
@@ -3616,8 +3501,7 @@
// Do this once per boot
migrateFromOld();
- wallpaper = new WallpaperData(userId, getWallpaperDir(userId),
- WALLPAPER, WALLPAPER_CROP);
+ wallpaper = new WallpaperData(userId, FLAG_SYSTEM);
wallpaper.allowBackup = true;
mWallpaperMap.put(userId, wallpaper);
if (!wallpaper.cropExists()) {
@@ -3668,8 +3552,7 @@
// keyguard-specific wallpaper for this user
WallpaperData lockWallpaper = mLockWallpaperMap.get(userId);
if (lockWallpaper == null) {
- lockWallpaper = new WallpaperData(userId, getWallpaperDir(userId),
- WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
+ lockWallpaper = new WallpaperData(userId, FLAG_LOCK);
mLockWallpaperMap.put(userId, lockWallpaper);
}
parseWallpaperAttributes(parser, lockWallpaper, false);
@@ -3720,8 +3603,7 @@
if (mFallbackWallpaper == null) {
if (DEBUG) Slog.d(TAG, "Initialize fallback wallpaper");
final int systemUserId = UserHandle.USER_SYSTEM;
- mFallbackWallpaper = new WallpaperData(systemUserId, getWallpaperDir(systemUserId),
- WALLPAPER, WALLPAPER_CROP);
+ mFallbackWallpaper = new WallpaperData(systemUserId, FLAG_SYSTEM);
mFallbackWallpaper.allowBackup = false;
mFallbackWallpaper.wallpaperId = makeWallpaperIdLocked();
bindWallpaperComponentLocked(mImageWallpaper, true, false, mFallbackWallpaper, null);
diff --git a/core/java/android/app/timedetector/TimePoint.aidl b/services/core/java/com/android/server/wallpaper/WallpaperUtils.java
similarity index 60%
copy from core/java/android/app/timedetector/TimePoint.aidl
copy to services/core/java/com/android/server/wallpaper/WallpaperUtils.java
index 80d4bc1..a9b8092 100644
--- a/core/java/android/app/timedetector/TimePoint.aidl
+++ b/services/core/java/com/android/server/wallpaper/WallpaperUtils.java
@@ -1,11 +1,11 @@
/*
- * Copyright (C) 2022, The Android Open Source Project
+ * Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,6 +14,15 @@
* limitations under the License.
*/
-package android.app.timedetector;
+package com.android.server.wallpaper;
-parcelable TimePoint;
+import android.os.Environment;
+
+import java.io.File;
+
+class WallpaperUtils {
+
+ static File getWallpaperDir(int userId) {
+ return Environment.getUserSystemDirectory(userId);
+ }
+}
diff --git a/services/core/java/com/android/server/wm/AbsAppSnapshotController.java b/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
index 5e89fa6..f215495 100644
--- a/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
+++ b/services/core/java/com/android/server/wm/AbsAppSnapshotController.java
@@ -140,6 +140,7 @@
*
* This is only used for testing so the snapshot content can be verified.
*/
+ // TODO(b/264551777): clean up the "snapshotHome" argument
@VisibleForTesting
TaskSnapshot captureSnapshot(TYPE source, boolean snapshotHome) {
final TaskSnapshot snapshot;
diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java
index a16e659..4428be7 100644
--- a/services/core/java/com/android/server/wm/ActivityClientController.java
+++ b/services/core/java/com/android/server/wm/ActivityClientController.java
@@ -1644,4 +1644,19 @@
}
return false;
}
+
+ @Override
+ public void enableTaskLocaleOverride(IBinder token) {
+ if (UserHandle.getAppId(Binder.getCallingUid()) != SYSTEM_UID) {
+ // Only allow system to align locale.
+ return;
+ }
+
+ synchronized (mGlobalLock) {
+ final ActivityRecord r = ActivityRecord.forTokenLocked(token);
+ if (r != null) {
+ r.getTask().mAlignActivityLocaleWithTask = true;
+ }
+ }
+ }
}
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 8410942..9a7b165 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -298,6 +298,7 @@
import android.os.Debug;
import android.os.IBinder;
import android.os.IRemoteCallback;
+import android.os.LocaleList;
import android.os.PersistableBundle;
import android.os.Process;
import android.os.RemoteException;
@@ -7998,6 +7999,9 @@
}
super.resolveOverrideConfiguration(newParentConfiguration);
final Configuration resolvedConfig = getResolvedOverrideConfiguration();
+
+ applyLocaleOverrideIfNeeded(resolvedConfig);
+
if (isFixedRotationTransforming()) {
// The resolved configuration is applied with rotated display configuration. If this
// activity matches its parent (the following resolving procedures are no-op), then it
@@ -10160,6 +10164,35 @@
}
}
+ private void applyLocaleOverrideIfNeeded(Configuration resolvedConfig) {
+ // We always align the locale for ActivityEmbedding apps. System apps or some apps which
+ // has set known cert apps can embed across different uid activity.
+ boolean shouldAlignLocale = isEmbedded()
+ || (task != null && task.mAlignActivityLocaleWithTask);
+ if (!shouldAlignLocale) {
+ return;
+ }
+
+ boolean differentPackage = task != null
+ && task.realActivity != null
+ && !task.realActivity.getPackageName().equals(packageName);
+ if (!differentPackage) {
+ return;
+ }
+
+ LocaleList locale;
+ final ActivityTaskManagerInternal.PackageConfig appConfig =
+ mAtmService.mPackageConfigPersister.findPackageConfiguration(
+ task.realActivity.getPackageName(), mUserId);
+ // if there is no app locale for the package, clear the target activity's locale.
+ if (appConfig == null || appConfig.mLocales == null || appConfig.mLocales.isEmpty()) {
+ locale = LocaleList.getEmptyLocaleList();
+ } else {
+ locale = appConfig.mLocales;
+ }
+ resolvedConfig.setLocales(locale);
+ }
+
/**
* Whether we should send fake focus when the activity is resumed. This is done because some
* game engines wait to get focus before drawing the content of the app.
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 034f5c8..86493eb 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -60,6 +60,7 @@
import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_CONFIGURATION;
import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_TASKS;
+import static com.android.server.wm.ActivityRecord.State.FINISHING;
import static com.android.server.wm.ActivityRecord.State.RESUMED;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_PERMISSIONS_REVIEW;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_RESULTS;
@@ -74,7 +75,12 @@
import static com.android.server.wm.ActivityTaskSupervisor.DEFER_RESUME;
import static com.android.server.wm.ActivityTaskSupervisor.ON_TOP;
import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_ALLOWLISTED_COMPONENT;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_ALLOWLISTED_UID;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_BAL_PERMISSION;
import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_DEFAULT;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_PENDING_INTENT;
+import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_VISIBLE_WINDOW;
import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK;
import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_BOUNDS;
import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_DISPLAY;
@@ -152,6 +158,7 @@
private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS;
private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION;
private static final String TAG_USER_LEAVING = TAG + POSTFIX_USER_LEAVING;
+
private static final int INVALID_LAUNCH_MODE = -1;
/**
@@ -1851,65 +1858,117 @@
}
}
- // Log activity starts which violate one of the following rules of the
- // activity security model (ASM):
- // 1. Only the top activity on a task can start activities on that task
- // 2. Only the top activity on the top task can create new (top) tasks
- // We don't currently block, but these checks may later become blocks
- // TODO(b/236234252): Shift to BackgroundActivityStartController once
- // class is ready
- if (mSourceRecord != null) {
- int callerUid = mSourceRecord.getUid();
- ActivityRecord targetTopActivity =
- targetTask != null ? targetTask.getTopNonFinishingActivity() : null;
- boolean passesAsmChecks = newTask
- ? mService.mVisibleActivityProcessTracker.hasResumedActivity(callerUid)
- : targetTopActivity != null && targetTopActivity.getUid() == callerUid;
-
- if (!passesAsmChecks) {
- Slog.i(TAG, "Launching r: " + r
- + " from background: " + mSourceRecord
- + ". New task: " + newTask);
- boolean newOrEmptyTask = newTask || (targetTopActivity == null);
- int action = newTask
- ? FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_NEW_TASK
- : (mSourceRecord.getTask().equals(targetTask)
- ? FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_SAME_TASK
- : FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_DIFFERENT_TASK);
- FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED,
- /* caller_uid */
- callerUid,
- /* caller_activity_class_name */
- mSourceRecord.info.name,
- /* target_task_top_activity_uid */
- newOrEmptyTask ? -1 : targetTopActivity.getUid(),
- /* target_task_top_activity_class_name */
- newOrEmptyTask ? null : targetTopActivity.info.name,
- /* target_task_is_different */
- newTask || !mSourceRecord.getTask().equals(targetTask),
- /* target_activity_uid */
- r.getUid(),
- /* target_activity_class_name */
- r.info.name,
- /* target_intent_action */
- r.intent.getAction(),
- /* target_intent_flags */
- r.intent.getFlags(),
- /* action */
- action,
- /* version */
- 1,
- /* multi_window */
- targetTask != null && !targetTask.equals(mSourceRecord.getTask())
- && targetTask.isVisible()
- );
- }
+ if (!checkActivitySecurityModel(r, newTask, targetTask)) {
+ return START_SUCCESS;
}
return START_SUCCESS;
}
/**
+ * TODO(b/263368846): Shift to BackgroundActivityStartController once class is ready
+ * Log activity starts which violate one of the following rules of the
+ * activity security model (ASM):
+ * See go/activity-security for rationale behind the rules.
+ * We don't currently block, but these checks may later become blocks
+ * 1. Within a task, only an activity matching a top UID of the task can start activities
+ * 2. Only activities within a foreground task, which match a top UID of the task, can
+ * create a new task or bring an existing one into the foreground
+ */
+ private boolean checkActivitySecurityModel(ActivityRecord r, boolean newTask, Task targetTask) {
+ // Intents with FLAG_ACTIVITY_NEW_TASK will always be considered as creating a new task
+ // even if the intent is delivered to an existing task.
+ boolean taskToFront = newTask
+ || (mLaunchFlags & FLAG_ACTIVITY_NEW_TASK) == FLAG_ACTIVITY_NEW_TASK;
+
+ if (mSourceRecord != null) {
+ boolean passesAsmChecks = true;
+ Task sourceTask = mSourceRecord.getTask();
+
+ // Don't allow launches into a new task if the current task is not foreground.
+ if (taskToFront) {
+ passesAsmChecks = sourceTask != null && sourceTask.isVisible();
+ }
+
+ Task taskToCheck = taskToFront ? sourceTask : targetTask;
+ passesAsmChecks = passesAsmChecks && ActivityTaskSupervisor
+ .doesTopActivityMatchingUidExistForAsm(taskToCheck, mSourceRecord.getUid(),
+ mSourceRecord);
+
+ if (passesAsmChecks) {
+ return true;
+ }
+ }
+
+ // BAL exception only allowed for new tasks
+ if (taskToFront) {
+ if (mBalCode == BAL_ALLOW_ALLOWLISTED_COMPONENT
+ || mBalCode == BAL_ALLOW_BAL_PERMISSION
+ || mBalCode == BAL_ALLOW_PENDING_INTENT) {
+ return true;
+ }
+ }
+
+ // BAL Exception allowed in all cases
+ if (mBalCode == BAL_ALLOW_ALLOWLISTED_UID) {
+ return true;
+ }
+
+ // TODO(b/230590090): Revisit this - ideally we would not rely on visibility, but rather
+ // have an explicit api for activities to opt-out of ASM protection if they need to.
+ if (mBalCode == BAL_ALLOW_VISIBLE_WINDOW) {
+ return true;
+ }
+
+ // ASM rules have failed. Log why
+ ActivityRecord targetTopActivity = targetTask == null ? null
+ : targetTask.getActivity(ar ->
+ !ar.isState(FINISHING) && !ar.isAlwaysOnTop());
+
+ Slog.i(TAG, "Launching r: " + r
+ + " from background: " + mSourceRecord
+ + ". New task: " + newTask
+ + ". Top activity: " + targetTopActivity);
+
+ int action = newTask || mSourceRecord == null
+ ? FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_NEW_TASK
+ : (mSourceRecord.getTask().equals(targetTask)
+ ? FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_SAME_TASK
+ : FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_DIFFERENT_TASK);
+
+ FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED,
+ /* caller_uid */
+ mSourceRecord != null ? mSourceRecord.getUid() : -1,
+ /* caller_activity_class_name */
+ mSourceRecord != null ? mSourceRecord.info.name : null,
+ /* target_task_top_activity_uid */
+ targetTopActivity != null ? targetTopActivity.getUid() : -1,
+ /* target_task_top_activity_class_name */
+ targetTopActivity != null ? targetTopActivity.info.name : null,
+ /* target_task_is_different */
+ newTask || mSourceRecord == null || targetTask == null
+ || !targetTask.equals(mSourceRecord.getTask()),
+ /* target_activity_uid */
+ r.getUid(),
+ /* target_activity_class_name */
+ r.info.name,
+ /* target_intent_action */
+ r.intent.getAction(),
+ /* target_intent_flags */
+ mLaunchFlags,
+ /* action */
+ action,
+ /* version */
+ 1,
+ /* multi_window - we have our source not in the target task, but both are visible */
+ targetTask != null && mSourceRecord != null
+ && !targetTask.equals(mSourceRecord.getTask()) && targetTask.isVisible()
+ );
+
+ return false;
+ }
+
+ /**
* Returns whether embedding of {@code starting} is allowed.
*
* @param taskFragment the TaskFragment for embedding.
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index ef126a9..c51808a 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -437,8 +437,6 @@
boolean allowInstrumenting, boolean fromHomeKey);
/** Start home activities on all displays that support system decorations. */
public abstract boolean startHomeOnAllDisplays(int userId, String reason);
- /** @return true if the given process is the factory test process. */
- public abstract boolean isFactoryTestProcess(WindowProcessController wpc);
public abstract void updateTopComponentForFactoryTest();
public abstract void handleAppDied(WindowProcessController wpc, boolean restarting,
Runnable finishInstrumentationCallback);
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index f4d76c2..fd6d606 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -41,7 +41,6 @@
import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
-import static android.content.pm.ApplicationInfo.FLAG_FACTORY_TEST;
import static android.content.pm.ConfigurationInfo.GL_ES_VERSION_UNDEFINED;
import static android.content.pm.PackageManager.FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS;
import static android.content.pm.PackageManager.FEATURE_CANT_SAVE_STATE;
@@ -50,9 +49,7 @@
import static android.content.pm.PackageManager.FEATURE_LEANBACK;
import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import static android.os.FactoryTest.FACTORY_TEST_HIGH_LEVEL;
import static android.os.FactoryTest.FACTORY_TEST_LOW_LEVEL;
-import static android.os.FactoryTest.FACTORY_TEST_OFF;
import static android.os.InputConstants.DEFAULT_DISPATCHING_TIMEOUT_MILLIS;
import static android.os.Process.FIRST_APPLICATION_UID;
import static android.os.Process.SYSTEM_UID;
@@ -3774,7 +3771,7 @@
return null;
}
return mWindowManager.mTaskSnapshotController.captureSnapshot(
- task, false /* snapshotHome */);
+ task, true /* snapshotHome */);
}
} finally {
Binder.restoreCallingIdentity(ident);
@@ -6088,22 +6085,6 @@
}
}
- @HotPath(caller = HotPath.PROCESS_CHANGE)
- @Override
- public boolean isFactoryTestProcess(WindowProcessController wpc) {
- synchronized (mGlobalLockWithoutBoost) {
- if (mFactoryTest == FACTORY_TEST_OFF) {
- return false;
- }
- if (mFactoryTest == FACTORY_TEST_LOW_LEVEL && mTopComponent != null
- && wpc.mName.equals(mTopComponent.getPackageName())) {
- return true;
- }
- return mFactoryTest == FACTORY_TEST_HIGH_LEVEL
- && (wpc.mInfo.flags & FLAG_FACTORY_TEST) != 0;
- }
- }
-
@Override
public void updateTopComponentForFactoryTest() {
synchronized (mGlobalLock) {
@@ -6363,7 +6344,7 @@
int wakefulness) {
synchronized (mGlobalLock) {
if (mHomeProcess != null && (dumpPackage == null
- || mHomeProcess.mPkgList.contains(dumpPackage))) {
+ || mHomeProcess.containsPackage(dumpPackage))) {
if (needSep) {
pw.println();
needSep = false;
@@ -6371,7 +6352,7 @@
pw.println(" mHomeProcess: " + mHomeProcess);
}
if (mPreviousProcess != null && (dumpPackage == null
- || mPreviousProcess.mPkgList.contains(dumpPackage))) {
+ || mPreviousProcess.containsPackage(dumpPackage))) {
if (needSep) {
pw.println();
needSep = false;
@@ -6379,14 +6360,14 @@
pw.println(" mPreviousProcess: " + mPreviousProcess);
}
if (dumpAll && (mPreviousProcess == null || dumpPackage == null
- || mPreviousProcess.mPkgList.contains(dumpPackage))) {
+ || mPreviousProcess.containsPackage(dumpPackage))) {
StringBuilder sb = new StringBuilder(128);
sb.append(" mPreviousProcessVisibleTime: ");
TimeUtils.formatDuration(mPreviousProcessVisibleTime, sb);
pw.println(sb);
}
if (mHeavyWeightProcess != null && (dumpPackage == null
- || mHeavyWeightProcess.mPkgList.contains(dumpPackage))) {
+ || mHeavyWeightProcess.containsPackage(dumpPackage))) {
if (needSep) {
pw.println();
needSep = false;
@@ -6510,18 +6491,18 @@
}
if (mHomeProcess != null && (dumpPackage == null
- || mHomeProcess.mPkgList.contains(dumpPackage))) {
+ || mHomeProcess.containsPackage(dumpPackage))) {
mHomeProcess.dumpDebug(proto, HOME_PROC);
}
if (mPreviousProcess != null && (dumpPackage == null
- || mPreviousProcess.mPkgList.contains(dumpPackage))) {
+ || mPreviousProcess.containsPackage(dumpPackage))) {
mPreviousProcess.dumpDebug(proto, PREVIOUS_PROC);
proto.write(PREVIOUS_PROC_VISIBLE_TIME_MS, mPreviousProcessVisibleTime);
}
if (mHeavyWeightProcess != null && (dumpPackage == null
- || mHeavyWeightProcess.mPkgList.contains(dumpPackage))) {
+ || mHeavyWeightProcess.containsPackage(dumpPackage))) {
mHeavyWeightProcess.dumpDebug(proto, HEAVY_WEIGHT_PROC);
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index 103b9b2..407ffd0 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -51,6 +51,7 @@
import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_STATES;
import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_TASKS;
+import static com.android.server.wm.ActivityRecord.State.FINISHING;
import static com.android.server.wm.ActivityRecord.State.PAUSED;
import static com.android.server.wm.ActivityRecord.State.PAUSING;
import static com.android.server.wm.ActivityRecord.State.RESTARTING_PROCESS;
@@ -157,6 +158,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
+import java.util.function.Predicate;
// TODO: This class has become a dumping ground. Let's
// - Move things relating to the hierarchy to RootWindowContainer
@@ -1629,10 +1631,11 @@
// cleared the calling identify. If so, we infer we do not need further restrictions here.
// TODO(b/263368846) Move to live with the rest of the ASM logic.
if (callingUid != SYSTEM_UID) {
- ActivityRecord topActivity = task.getTopNonFinishingActivity();
- boolean passesAsmChecks = topActivity != null
- && topActivity.getUid() == callingUid;
+ boolean passesAsmChecks = doesTopActivityMatchingUidExistForAsm(task, callingUid,
+ null);
if (!passesAsmChecks) {
+ ActivityRecord topActivity = task.getActivity(ar ->
+ !ar.isState(FINISHING) && !ar.isAlwaysOnTop());
Slog.i(TAG, "Finishing task from background. t: " + task);
FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED,
/* caller_uid */
@@ -1677,6 +1680,57 @@
}
}
+ /**
+ * For the purpose of ASM, ‘Top UID” for a task is defined as an activity UID
+ * 1. Which is top of the stack in z-order
+ * a. Excluding any activities with the flag ‘isAlwaysOnTop’ and
+ * b. Excluding any activities which are `finishing`
+ * 2. Or top of an adjacent task fragment to (1)
+ *
+ * The 'sourceRecord' can be considered top even if it is 'finishing'
+ *
+ * TODO(b/263368846) Shift to BackgroundActivityStartController once class is ready
+ */
+ @Nullable
+ static boolean doesTopActivityMatchingUidExistForAsm(@Nullable Task task,
+ int uid, @Nullable ActivityRecord sourceRecord) {
+ // If the source is visible, consider it 'top'.
+ if (sourceRecord != null && sourceRecord.isVisible()) {
+ return true;
+ }
+
+ // Consider the source activity, whether or not it is finishing. Do not consider any other
+ // finishing activity.
+ Predicate<ActivityRecord> topOfStackPredicate = (ar) -> ar.equals(sourceRecord)
+ || (!ar.isState(FINISHING) && !ar.isAlwaysOnTop());
+
+ // Check top of stack (or the first task fragment for embedding).
+ ActivityRecord topActivity = task.getActivity(topOfStackPredicate);
+ if (topActivity == null) {
+ return false;
+ }
+
+ if (topActivity.getUid() == uid) {
+ return true;
+ }
+
+ // Even if the top activity is not a match, we may be in an embedded activity scenario with
+ // an adjacent task fragment. Get the second fragment.
+ TaskFragment taskFragment = topActivity.getTaskFragment();
+ if (taskFragment == null) {
+ return false;
+ }
+
+ TaskFragment adjacentTaskFragment = taskFragment.getAdjacentTaskFragment();
+ if (adjacentTaskFragment == null) {
+ return false;
+ }
+
+ // Check the second fragment.
+ topActivity = adjacentTaskFragment.getActivity(topOfStackPredicate);
+ return topActivity != null && topActivity.getUid() == uid;
+ }
+
void cleanUpRemovedTaskLocked(Task task, boolean killProcess, boolean removeFromRecents) {
if (removeFromRecents) {
mRecentTasks.remove(task);
@@ -1714,7 +1768,7 @@
// Don't kill the home process along with tasks from the same package.
continue;
}
- if (!proc.mPkgList.contains(pkg)) {
+ if (!proc.containsPackage(pkg)) {
// Don't kill process that is not associated with this task.
continue;
}
diff --git a/services/core/java/com/android/server/wm/AppTaskImpl.java b/services/core/java/com/android/server/wm/AppTaskImpl.java
index 6b5f068..7bd8c53 100644
--- a/services/core/java/com/android/server/wm/AppTaskImpl.java
+++ b/services/core/java/com/android/server/wm/AppTaskImpl.java
@@ -99,7 +99,7 @@
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
}
return mService.getRecentTasks().createRecentTaskInfo(task,
- false /* stripExtras */);
+ false /* stripExtras */, true /* getTasksAllowed */);
} finally {
Binder.restoreCallingIdentity(origId);
}
diff --git a/services/core/java/com/android/server/wm/CompatModePackages.java b/services/core/java/com/android/server/wm/CompatModePackages.java
index a035948..d5828ef 100644
--- a/services/core/java/com/android/server/wm/CompatModePackages.java
+++ b/services/core/java/com/android/server/wm/CompatModePackages.java
@@ -566,7 +566,7 @@
SparseArray<WindowProcessController> pidMap = mService.mProcessMap.getPidMap();
for (int i = pidMap.size() - 1; i >= 0; i--) {
final WindowProcessController app = pidMap.valueAt(i);
- if (!app.mPkgList.contains(packageName)) {
+ if (!app.containsPackage(packageName)) {
continue;
}
try {
diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
index 659f8d7..49eaea2 100644
--- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
@@ -508,6 +508,9 @@
}
mClientVisible = clientVisible;
updateVisibility();
+ // The visibility change needs a traversal to apply.
+ mDisplayContent.setLayoutNeeded();
+ mDisplayContent.mWmService.mWindowPlacerLocked.requestTraversal();
}
@VisibleForTesting
diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java
index 9e95918..4be1c83 100644
--- a/services/core/java/com/android/server/wm/RecentTasks.java
+++ b/services/core/java/com/android/server/wm/RecentTasks.java
@@ -976,7 +976,7 @@
continue;
}
- res.add(createRecentTaskInfo(task, true /* stripExtras */));
+ res.add(createRecentTaskInfo(task, true /* stripExtras */, getTasksAllowed));
}
return res;
}
@@ -1889,7 +1889,8 @@
/**
* Creates a new RecentTaskInfo from a Task.
*/
- ActivityManager.RecentTaskInfo createRecentTaskInfo(Task tr, boolean stripExtras) {
+ ActivityManager.RecentTaskInfo createRecentTaskInfo(Task tr, boolean stripExtras,
+ boolean getTasksAllowed) {
final ActivityManager.RecentTaskInfo rti = new ActivityManager.RecentTaskInfo();
// If the recent Task is detached, we consider it will be re-attached to the default
// TaskDisplayArea because we currently only support recent overview in the default TDA.
@@ -1901,6 +1902,9 @@
rti.id = rti.isRunning ? rti.taskId : INVALID_TASK_ID;
rti.persistentId = rti.taskId;
rti.lastSnapshotData.set(tr.mLastTaskSnapshotData);
+ if (!getTasksAllowed) {
+ Task.trimIneffectiveInfo(tr, rti);
+ }
// Fill in organized child task info for the task created by organizer.
if (tr.mCreatedByOrganizer) {
diff --git a/services/core/java/com/android/server/wm/RunningTasks.java b/services/core/java/com/android/server/wm/RunningTasks.java
index 614b405..1cc1a57 100644
--- a/services/core/java/com/android/server/wm/RunningTasks.java
+++ b/services/core/java/com/android/server/wm/RunningTasks.java
@@ -173,6 +173,10 @@
}
// Fill in some deprecated values
rti.id = rti.taskId;
+
+ if (!mAllowed) {
+ Task.trimIneffectiveInfo(task, rti);
+ }
return rti;
}
}
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index b5c82a8..15a5ebf 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -910,6 +910,22 @@
}
@Override
+ public boolean transferEmbeddedTouchFocusToHost(IWindow embeddedWindow) {
+ if (embeddedWindow == null) {
+ return false;
+ }
+
+ final long identity = Binder.clearCallingIdentity();
+ boolean didTransfer = false;
+ try {
+ didTransfer = mService.transferEmbeddedTouchFocusToHost(embeddedWindow);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ return didTransfer;
+ }
+
+ @Override
public void generateDisplayHash(IWindow window, Rect boundsInWindow, String hashAlgorithm,
RemoteCallback callback) {
final long origId = Binder.clearCallingIdentity();
diff --git a/services/core/java/com/android/server/wm/SurfaceSyncGroupController.java b/services/core/java/com/android/server/wm/SurfaceSyncGroupController.java
new file mode 100644
index 0000000..75691ca
--- /dev/null
+++ b/services/core/java/com/android/server/wm/SurfaceSyncGroupController.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import android.annotation.Nullable;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.ArrayMap;
+import android.window.AddToSurfaceSyncGroupResult;
+import android.window.ISurfaceSyncGroupCompletedListener;
+import android.window.ITransactionReadyCallback;
+import android.window.SurfaceSyncGroup;
+
+import com.android.internal.annotations.GuardedBy;
+
+class SurfaceSyncGroupController {
+ private static final String TAG = "SurfaceSyncGroupController";
+ private final Object mLock = new Object();
+
+ @GuardedBy("mLock")
+ private final ArrayMap<IBinder, SurfaceSyncGroupData> mSurfaceSyncGroups = new ArrayMap<>();
+
+ boolean addToSyncGroup(IBinder syncGroupToken, boolean parentSyncGroupMerge,
+ @Nullable ISurfaceSyncGroupCompletedListener completedListener,
+ AddToSurfaceSyncGroupResult outAddToSyncGroupResult) {
+ SurfaceSyncGroup root;
+ synchronized (mLock) {
+ SurfaceSyncGroupData syncGroupData = mSurfaceSyncGroups.get(syncGroupToken);
+ if (syncGroupData == null) {
+ root = new SurfaceSyncGroup(TAG + "-" + syncGroupToken.hashCode());
+ if (completedListener != null) {
+ root.addSyncCompleteCallback(Runnable::run, () -> {
+ try {
+ completedListener.onSurfaceSyncGroupComplete();
+ } catch (RemoteException e) {
+ }
+ });
+ }
+ mSurfaceSyncGroups.put(syncGroupToken,
+ new SurfaceSyncGroupData(Binder.getCallingUid(), root));
+ } else {
+ root = syncGroupData.mSurfaceSyncGroup;
+ }
+ }
+
+ ITransactionReadyCallback callback =
+ root.createTransactionReadyCallback(parentSyncGroupMerge);
+ if (callback == null) {
+ return false;
+ }
+ outAddToSyncGroupResult.mParentSyncGroup = root;
+ outAddToSyncGroupResult.mTransactionReadyCallback = callback;
+ return true;
+ }
+
+ void markSyncGroupReady(IBinder syncGroupToken) {
+ final SurfaceSyncGroup root;
+ synchronized (mLock) {
+ SurfaceSyncGroupData syncGroupData = mSurfaceSyncGroups.get(syncGroupToken);
+ if (syncGroupData == null) {
+ throw new IllegalArgumentException(
+ "SurfaceSyncGroup Token has not been set up or has already been marked as"
+ + " ready");
+ }
+ if (syncGroupData.mOwningUid != Binder.getCallingUid()) {
+ throw new IllegalArgumentException(
+ "Only process that created the SurfaceSyncGroup can call "
+ + "markSyncGroupReady");
+ }
+ root = syncGroupData.mSurfaceSyncGroup;
+ mSurfaceSyncGroups.remove(syncGroupToken);
+ }
+
+ root.markSyncReady();
+ }
+
+ private static class SurfaceSyncGroupData {
+ final int mOwningUid;
+ final SurfaceSyncGroup mSurfaceSyncGroup;
+
+ private SurfaceSyncGroupData(int owningUid, SurfaceSyncGroup surfaceSyncGroup) {
+ mOwningUid = owningUid;
+ mSurfaceSyncGroup = surfaceSyncGroup;
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 3b5b5a9..852c9b2 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -612,6 +612,8 @@
boolean mLastSurfaceShowing = true;
+ boolean mAlignActivityLocaleWithTask = false;
+
private Task(ActivityTaskManagerService atmService, int _taskId, Intent _intent,
Intent _affinityIntent, String _affinity, String _rootAffinity,
ComponentName _realActivity, ComponentName _origActivity, boolean _rootWasReset,
@@ -3402,6 +3404,54 @@
info.isSleeping = shouldSleepActivities();
}
+ /**
+ * Removes the activity info if the activity belongs to a different uid, which is
+ * different from the app that hosts the task.
+ */
+ static void trimIneffectiveInfo(Task task, TaskInfo info) {
+ final ActivityRecord baseActivity = task.getActivity(r -> !r.finishing,
+ false /* traverseTopToBottom */);
+ final int baseActivityUid =
+ baseActivity != null ? baseActivity.getUid() : task.effectiveUid;
+
+ if (info.topActivityInfo != null
+ && task.effectiveUid != info.topActivityInfo.applicationInfo.uid) {
+ // Making a copy to prevent eliminating the info in the original ActivityRecord.
+ info.topActivityInfo = new ActivityInfo(info.topActivityInfo);
+ info.topActivityInfo.applicationInfo =
+ new ApplicationInfo(info.topActivityInfo.applicationInfo);
+
+ // Strip the sensitive info.
+ info.topActivity = new ComponentName("", "");
+ info.topActivityInfo.packageName = "";
+ info.topActivityInfo.taskAffinity = "";
+ info.topActivityInfo.processName = "";
+ info.topActivityInfo.name = "";
+ info.topActivityInfo.parentActivityName = "";
+ info.topActivityInfo.targetActivity = "";
+ info.topActivityInfo.splitName = "";
+ info.topActivityInfo.applicationInfo.className = "";
+ info.topActivityInfo.applicationInfo.credentialProtectedDataDir = "";
+ info.topActivityInfo.applicationInfo.dataDir = "";
+ info.topActivityInfo.applicationInfo.deviceProtectedDataDir = "";
+ info.topActivityInfo.applicationInfo.manageSpaceActivityName = "";
+ info.topActivityInfo.applicationInfo.nativeLibraryDir = "";
+ info.topActivityInfo.applicationInfo.nativeLibraryRootDir = "";
+ info.topActivityInfo.applicationInfo.processName = "";
+ info.topActivityInfo.applicationInfo.publicSourceDir = "";
+ info.topActivityInfo.applicationInfo.scanPublicSourceDir = "";
+ info.topActivityInfo.applicationInfo.scanSourceDir = "";
+ info.topActivityInfo.applicationInfo.sourceDir = "";
+ info.topActivityInfo.applicationInfo.taskAffinity = "";
+ info.topActivityInfo.applicationInfo.name = "";
+ info.topActivityInfo.applicationInfo.packageName = "";
+ }
+
+ if (task.effectiveUid != baseActivityUid) {
+ info.baseActivity = new ComponentName("", "");
+ }
+ }
+
@Nullable PictureInPictureParams getPictureInPictureParams() {
final Task topTask = getTopMostTask();
if (topTask == null) return null;
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 7983047..4e7613b 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -292,7 +292,9 @@
import android.view.displayhash.DisplayHash;
import android.view.displayhash.VerifiedDisplayHash;
import android.view.inputmethod.ImeTracker;
+import android.window.AddToSurfaceSyncGroupResult;
import android.window.ClientWindowFrames;
+import android.window.ISurfaceSyncGroupCompletedListener;
import android.window.ITaskFpsCallback;
import android.window.ScreenCapture;
import android.window.TaskSnapshot;
@@ -746,6 +748,10 @@
@VisibleForTesting
final ContentRecordingController mContentRecordingController = new ContentRecordingController();
+
+ private final SurfaceSyncGroupController mSurfaceSyncGroupController =
+ new SurfaceSyncGroupController();
+
@VisibleForTesting
final class SettingsObserver extends ContentObserver {
private final Uri mDisplayInversionEnabledUri =
@@ -6725,12 +6731,12 @@
pw.print(" mDisplayFrozen="); pw.print(mDisplayFrozen);
pw.print(" windows="); pw.print(mWindowsFreezingScreen);
pw.print(" client="); pw.print(mClientFreezingScreen);
- pw.print(" apps="); pw.print(mAppsFreezingScreen);
+ pw.print(" apps="); pw.println(mAppsFreezingScreen);
final DisplayContent defaultDisplayContent = getDefaultDisplayContentLocked();
- pw.print(" mRotation="); pw.print(defaultDisplayContent.getRotation());
+ pw.print(" mRotation="); pw.println(defaultDisplayContent.getRotation());
pw.print(" mLastOrientation=");
pw.println(defaultDisplayContent.getLastOrientation());
- pw.print(" waitingForConfig=");
+ pw.print(" mWaitingForConfig=");
pw.println(defaultDisplayContent.mWaitingForConfig);
pw.print(" Animation settings: disabled="); pw.print(mAnimationsDisabled);
@@ -8682,6 +8688,38 @@
clientChannel.copyTo(outInputChannel);
}
+ boolean transferEmbeddedTouchFocusToHost(IWindow embeddedWindow) {
+ final IBinder windowBinder = embeddedWindow.asBinder();
+ final IBinder hostInputChannel, embeddedInputChannel;
+ synchronized (mGlobalLock) {
+ final EmbeddedWindowController.EmbeddedWindow ew =
+ mEmbeddedWindowController.getByWindowToken(windowBinder);
+ if (ew == null) {
+ Slog.w(TAG, "Attempt to transfer touch focus from non-existent embedded window");
+ return false;
+ }
+ final WindowState hostWindowState = ew.getWindowState();
+ if (hostWindowState == null) {
+ Slog.w(TAG, "Attempt to transfer touch focus from embedded window with no" +
+ " associated host");
+ return false;
+ }
+ embeddedInputChannel = ew.getInputChannelToken();
+ if (embeddedInputChannel == null) {
+ Slog.w(TAG, "Attempt to transfer touch focus from embedded window with no input" +
+ " channel");
+ return false;
+ }
+ hostInputChannel = hostWindowState.mInputChannelToken;
+ if (hostInputChannel == null) {
+ Slog.w(TAG, "Attempt to transfer touch focus to a host window with no" +
+ " input channel");
+ return false;
+ }
+ return mInputManager.transferTouchFocus(embeddedInputChannel, hostInputChannel);
+ }
+ }
+
private void updateInputChannel(IBinder channelToken, int callingUid, int callingPid,
int displayId, SurfaceControl surface, String name,
InputApplicationHandle applicationHandle, int flags,
@@ -9384,4 +9422,16 @@
}
return type;
}
+ @Override
+ public boolean addToSurfaceSyncGroup(IBinder syncGroupToken, boolean parentSyncGroupMerge,
+ @Nullable ISurfaceSyncGroupCompletedListener completedListener,
+ AddToSurfaceSyncGroupResult outAddToSyncGroupResult) {
+ return mSurfaceSyncGroupController.addToSyncGroup(syncGroupToken, parentSyncGroupMerge,
+ completedListener, outAddToSyncGroupResult);
+ }
+
+ @Override
+ public void markSurfaceSyncGroupReady(IBinder syncGroupToken) {
+ mSurfaceSyncGroupController.markSyncGroupReady(syncGroupToken);
+ }
}
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java
index 7d15902..aac5ef6 100644
--- a/services/core/java/com/android/server/wm/WindowOrganizerController.java
+++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java
@@ -1966,6 +1966,13 @@
creationParams.getPairedPrimaryFragmentToken());
final int pairedPosition = ownerTask.mChildren.indexOf(pairedPrimaryTaskFragment);
position = pairedPosition != -1 ? pairedPosition + 1 : POSITION_TOP;
+ } else if (creationParams.getPairedActivityToken() != null) {
+ // When there is a paired Activity, we want to place the new TaskFragment right above
+ // the paired Activity to make sure the Activity position is not changed after reparent.
+ final ActivityRecord pairedActivity = ActivityRecord.forTokenLocked(
+ creationParams.getPairedActivityToken());
+ final int pairedPosition = ownerTask.mChildren.indexOf(pairedActivity);
+ position = pairedPosition != -1 ? pairedPosition + 1 : POSITION_TOP;
} else {
position = POSITION_TOP;
}
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index 3e1dc7e..3e279b2 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -54,6 +54,7 @@
import android.app.ProfilerInfo;
import android.app.servertransaction.ConfigurationChangeItem;
import android.companion.virtual.VirtualDeviceManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
@@ -62,6 +63,7 @@
import android.content.res.Configuration;
import android.os.Binder;
import android.os.Build;
+import android.os.FactoryTest;
import android.os.IBinder;
import android.os.LocaleList;
import android.os.Message;
@@ -74,6 +76,7 @@
import android.util.proto.ProtoOutputStream;
import android.view.IRemoteAnimationRunner;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.HeavyWeightSwitcherActivity;
import com.android.internal.protolog.common.ProtoLog;
@@ -116,7 +119,8 @@
// communicate back to the activity manager side.
public final Object mOwner;
// List of packages running in the process
- final ArraySet<String> mPkgList = new ArraySet<>();
+ @GuardedBy("itself")
+ private final ArrayList<String> mPkgList = new ArrayList<>(1);
private final WindowProcessListener mListener;
private final ActivityTaskManagerService mAtm;
private final BackgroundLaunchProcessController mBgLaunchController;
@@ -643,18 +647,26 @@
@HotPath(caller = HotPath.PROCESS_CHANGE)
public void addPackage(String packageName) {
- synchronized (mAtm.mGlobalLockWithoutBoost) {
- mPkgList.add(packageName);
+ synchronized (mPkgList) {
+ if (!mPkgList.contains(packageName)) {
+ mPkgList.add(packageName);
+ }
}
}
@HotPath(caller = HotPath.PROCESS_CHANGE)
public void clearPackageList() {
- synchronized (mAtm.mGlobalLockWithoutBoost) {
+ synchronized (mPkgList) {
mPkgList.clear();
}
}
+ boolean containsPackage(String packageName) {
+ synchronized (mPkgList) {
+ return mPkgList.contains(packageName);
+ }
+ }
+
void addActivityIfNeeded(ActivityRecord r) {
// even if we already track this activity, note down that it has been launched
setLastActivityLaunchTime(r.lastLaunchTime);
@@ -1718,6 +1730,22 @@
return this == mAtm.mHeavyWeightProcess;
}
+ @HotPath(caller = HotPath.PROCESS_CHANGE)
+ public boolean isFactoryTestProcess() {
+ final int factoryTestMode = mAtm.mFactoryTest;
+ if (factoryTestMode == FactoryTest.FACTORY_TEST_OFF) {
+ return false;
+ }
+ if (factoryTestMode == FactoryTest.FACTORY_TEST_LOW_LEVEL) {
+ final ComponentName topComponent = mAtm.mTopComponent;
+ if (topComponent != null && mName.equals(topComponent.getPackageName())) {
+ return true;
+ }
+ }
+ return factoryTestMode == FactoryTest.FACTORY_TEST_HIGH_LEVEL
+ && (mInfo.flags & ApplicationInfo.FLAG_FACTORY_TEST) != 0;
+ }
+
void setRunningRecentsAnimation(boolean running) {
if (mRunningRecentsAnimation == running) {
return;
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 5ecf737..a1f4096 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -329,8 +329,8 @@
mSurfaceController = new WindowSurfaceController(attrs.getTitle().toString(), format,
flags, this, attrs.type);
- mSurfaceController.setColorSpaceAgnostic((attrs.privateFlags
- & WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC) != 0);
+ mSurfaceController.setColorSpaceAgnostic(w.getPendingTransaction(),
+ (attrs.privateFlags & LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC) != 0);
w.setHasSurface(true);
// The surface instance is changed. Make sure the input info can be applied to the
@@ -527,7 +527,7 @@
if (mSurfaceController == null) {
return;
}
- mSurfaceController.setColorSpaceAgnostic(agnostic);
+ mSurfaceController.setColorSpaceAgnostic(mWin.getPendingTransaction(), agnostic);
}
/**
diff --git a/services/core/java/com/android/server/wm/WindowSurfaceController.java b/services/core/java/com/android/server/wm/WindowSurfaceController.java
index 4a5c473..607ce25 100644
--- a/services/core/java/com/android/server/wm/WindowSurfaceController.java
+++ b/services/core/java/com/android/server/wm/WindowSurfaceController.java
@@ -236,24 +236,13 @@
}
}
- void setColorSpaceAgnostic(boolean agnostic) {
+ void setColorSpaceAgnostic(SurfaceControl.Transaction t, boolean agnostic) {
ProtoLog.i(WM_SHOW_TRANSACTIONS, "SURFACE isColorSpaceAgnostic=%b: %s", agnostic, title);
if (mSurfaceControl == null) {
return;
}
- if (SHOW_LIGHT_TRANSACTIONS) {
- Slog.i(TAG, ">>> OPEN TRANSACTION setColorSpaceAgnosticLocked");
- }
- mService.openSurfaceTransaction();
- try {
- getGlobalTransaction().setColorSpaceAgnostic(mSurfaceControl, agnostic);
- } finally {
- mService.closeSurfaceTransaction("setColorSpaceAgnostic");
- if (SHOW_LIGHT_TRANSACTIONS) {
- Slog.i(TAG, "<<< CLOSE TRANSACTION setColorSpaceAgnosticLocked");
- }
- }
+ t.setColorSpaceAgnostic(mSurfaceControl, agnostic);
}
boolean showRobustly(SurfaceControl.Transaction t) {
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index d6cf473..40e74b1 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -302,6 +302,7 @@
void setCustomPointerIcon(const SpriteIcon& icon);
void setMotionClassifierEnabled(bool enabled);
std::optional<std::string> getBluetoothAddress(int32_t deviceId);
+ void setStylusButtonMotionEventsEnabled(bool enabled);
/* --- InputReaderPolicyInterface implementation --- */
@@ -405,6 +406,9 @@
// Associated Pointer controller display.
int32_t pointerDisplayId{ADISPLAY_ID_DEFAULT};
+
+ // True if stylus button reporting through motion events is enabled.
+ bool stylusButtonMotionEventsEnabled{true};
} mLocked GUARDED_BY(mLock);
std::atomic<bool> mInteractive;
@@ -654,6 +658,8 @@
outConfig->defaultPointerDisplayId = mLocked.pointerDisplayId;
outConfig->disabledDevices = mLocked.disabledInputDevices;
+
+ outConfig->stylusButtonMotionEventsEnabled = mLocked.stylusButtonMotionEventsEnabled;
} // release lock
}
@@ -1524,6 +1530,21 @@
return mInputManager->getReader().getBluetoothAddress(deviceId);
}
+void NativeInputManager::setStylusButtonMotionEventsEnabled(bool enabled) {
+ { // acquire lock
+ AutoMutex _l(mLock);
+
+ if (mLocked.stylusButtonMotionEventsEnabled == enabled) {
+ return;
+ }
+
+ mLocked.stylusButtonMotionEventsEnabled = enabled;
+ } // release lock
+
+ mInputManager->getReader().requestRefreshConfiguration(
+ InputReaderConfiguration::CHANGE_STYLUS_BUTTON_REPORTING);
+}
+
bool NativeInputManager::isPerDisplayTouchModeEnabled() {
JNIEnv* env = jniEnv();
jboolean enabled =
@@ -2393,6 +2414,12 @@
return address ? env->NewStringUTF(address->c_str()) : nullptr;
}
+static void nativeSetStylusButtonMotionEventsEnabled(JNIEnv* env, jobject nativeImplObj,
+ jboolean enabled) {
+ NativeInputManager* im = getNativeInputManager(env, nativeImplObj);
+ im->setStylusButtonMotionEventsEnabled(enabled);
+}
+
// ----------------------------------------------------------------------------
static const JNINativeMethod gInputManagerMethods[] = {
@@ -2479,6 +2506,8 @@
{"cancelCurrentTouch", "()V", (void*)nativeCancelCurrentTouch},
{"setPointerDisplayId", "(I)V", (void*)nativeSetPointerDisplayId},
{"getBluetoothAddress", "(I)Ljava/lang/String;", (void*)nativeGetBluetoothAddress},
+ {"setStylusButtonMotionEventsEnabled", "(Z)V",
+ (void*)nativeSetStylusButtonMotionEventsEnabled},
};
#define FIND_CLASS(var, className) \
diff --git a/services/credentials/java/com/android/server/credentials/ClearRequestSession.java b/services/credentials/java/com/android/server/credentials/ClearRequestSession.java
index 6b254bf..2141d51 100644
--- a/services/credentials/java/com/android/server/credentials/ClearRequestSession.java
+++ b/services/credentials/java/com/android/server/credentials/ClearRequestSession.java
@@ -24,6 +24,7 @@
import android.credentials.ui.ProviderData;
import android.credentials.ui.RequestInfo;
import android.os.RemoteException;
+import android.service.credentials.CallingAppInfo;
import android.service.credentials.CredentialProviderInfo;
import android.util.Log;
@@ -40,8 +41,8 @@
public ClearRequestSession(Context context, int userId,
IClearCredentialStateCallback callback, ClearCredentialStateRequest request,
- String callingPackage) {
- super(context, userId, request, callback, RequestInfo.TYPE_UNDEFINED, callingPackage);
+ CallingAppInfo callingAppInfo) {
+ super(context, userId, request, callback, RequestInfo.TYPE_UNDEFINED, callingAppInfo);
}
/**
diff --git a/services/credentials/java/com/android/server/credentials/CreateRequestSession.java b/services/credentials/java/com/android/server/credentials/CreateRequestSession.java
index f036ed1..3091c0a 100644
--- a/services/credentials/java/com/android/server/credentials/CreateRequestSession.java
+++ b/services/credentials/java/com/android/server/credentials/CreateRequestSession.java
@@ -27,6 +27,7 @@
import android.credentials.ui.ProviderData;
import android.credentials.ui.RequestInfo;
import android.os.RemoteException;
+import android.service.credentials.CallingAppInfo;
import android.service.credentials.CredentialProviderInfo;
import android.util.Log;
@@ -45,8 +46,8 @@
CreateRequestSession(@NonNull Context context, int userId,
CreateCredentialRequest request,
ICreateCredentialCallback callback,
- String callingPackage) {
- super(context, userId, request, callback, RequestInfo.TYPE_CREATE, callingPackage);
+ CallingAppInfo callingAppInfo) {
+ super(context, userId, request, callback, RequestInfo.TYPE_CREATE, callingAppInfo);
}
/**
@@ -75,7 +76,8 @@
try {
mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent(
RequestInfo.newCreateRequestInfo(
- mRequestId, mClientRequest, mClientCallingPackage),
+ mRequestId, mClientRequest,
+ mClientAppInfo.getPackageName()),
providerDataList));
} catch (RemoteException e) {
Log.i(TAG, "Issue with invoking pending intent: " + e.getMessage());
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
index 86a086f..50ce1c3 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
@@ -23,6 +23,7 @@
import android.app.ActivityManager;
import android.content.ComponentName;
import android.content.Context;
+import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.credentials.ClearCredentialStateRequest;
import android.credentials.CreateCredentialRequest;
@@ -35,6 +36,7 @@
import android.credentials.IListEnabledProvidersCallback;
import android.credentials.ISetEnabledProvidersCallback;
import android.credentials.ListEnabledProvidersResponse;
+import android.credentials.ui.IntentFactory;
import android.os.Binder;
import android.os.CancellationSignal;
import android.os.ICancellationSignal;
@@ -43,6 +45,7 @@
import android.provider.Settings;
import android.service.credentials.BeginCreateCredentialRequest;
import android.service.credentials.BeginGetCredentialRequest;
+import android.service.credentials.CallingAppInfo;
import android.service.credentials.CredentialProviderInfo;
import android.text.TextUtils;
import android.util.Log;
@@ -115,9 +118,8 @@
continue;
}
try {
- serviceList.add(new CredentialManagerServiceImpl(this, mLock,
- resolvedUserId,
- serviceName));
+ serviceList.add(
+ new CredentialManagerServiceImpl(this, mLock, resolvedUserId, serviceName));
} catch (PackageManager.NameNotFoundException | SecurityException e) {
Log.i(TAG, "Unable to add serviceInfo : " + e.getMessage());
}
@@ -175,18 +177,34 @@
RequestSession session, List<String> requestOptions) {
List<ProviderSession> providerSessions = new ArrayList<>();
// Invoke all services of a user to initiate a provider session
- runForUser((service) -> {
- synchronized (mLock) {
- ProviderSession providerSession = service
- .initiateProviderSessionForRequestLocked(session, requestOptions);
- if (providerSession != null) {
- providerSessions.add(providerSession);
- }
- }
- });
+ runForUser(
+ (service) -> {
+ synchronized (mLock) {
+ ProviderSession providerSession =
+ service.initiateProviderSessionForRequestLocked(
+ session, requestOptions);
+ if (providerSession != null) {
+ providerSessions.add(providerSession);
+ }
+ }
+ });
return providerSessions;
}
+ private CallingAppInfo constructCallingAppInfo(String packageName, int userId) {
+ final PackageInfo packageInfo;
+ try {
+ packageInfo = getContext().getPackageManager().getPackageInfoAsUser(
+ packageName,
+ PackageManager.PackageInfoFlags.of(PackageManager.GET_SIGNING_CERTIFICATES),
+ userId);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.i(TAG, "Issue while retrieving signatureInfo : " + e.getMessage());
+ return new CallingAppInfo(packageName, null);
+ }
+ return new CallingAppInfo(packageName, packageInfo.signingInfo);
+ }
+
final class CredentialManagerServiceStub extends ICredentialManager.Stub {
@Override
public ICancellationSignal executeGetCredential(
@@ -197,38 +215,47 @@
// TODO : Implement cancellation
ICancellationSignal cancelTransport = CancellationSignal.createTransport();
+ int userId = UserHandle.getCallingUserId();
// New request session, scoped for this request only.
final GetRequestSession session =
new GetRequestSession(
getContext(),
- UserHandle.getCallingUserId(),
+ userId,
callback,
request,
- callingPackage);
+ constructCallingAppInfo(callingPackage, userId));
// Initiate all provider sessions
List<ProviderSession> providerSessions =
- initiateProviderSessions(session, request.getGetCredentialOptions()
- .stream().map(GetCredentialOption::getType)
- .collect(Collectors.toList()));
+ initiateProviderSessions(
+ session,
+ request.getGetCredentialOptions().stream()
+ .map(GetCredentialOption::getType)
+ .collect(Collectors.toList()));
if (providerSessions.isEmpty()) {
try {
// TODO("Replace with properly defined error type")
- callback.onError("unknown_type",
- "No providers available to fulfill request.");
+ callback.onError("unknown_type", "No providers available to fulfill request.");
} catch (RemoteException e) {
- Log.i(TAG, "Issue invoking onError on IGetCredentialCallback "
- + "callback: " + e.getMessage());
+ Log.i(
+ TAG,
+ "Issue invoking onError on IGetCredentialCallback "
+ + "callback: "
+ + e.getMessage());
}
}
// Iterate over all provider sessions and invoke the request
- providerSessions.forEach(providerGetSession -> {
- providerGetSession.getRemoteCredentialService().onBeginGetCredential(
- (BeginGetCredentialRequest) providerGetSession.getProviderRequest(),
- /*callback=*/providerGetSession);
- });
+ providerSessions.forEach(
+ providerGetSession -> {
+ providerGetSession
+ .getRemoteCredentialService()
+ .onBeginGetCredential(
+ (BeginGetCredentialRequest)
+ providerGetSession.getProviderRequest(),
+ /* callback= */ providerGetSession);
+ });
return cancelTransport;
}
@@ -242,13 +269,14 @@
ICancellationSignal cancelTransport = CancellationSignal.createTransport();
// New request session, scoped for this request only.
+ int userId = UserHandle.getCallingUserId();
final CreateRequestSession session =
new CreateRequestSession(
getContext(),
- UserHandle.getCallingUserId(),
+ userId,
request,
callback,
- callingPackage);
+ constructCallingAppInfo(callingPackage, userId));
// Initiate all provider sessions
List<ProviderSession> providerSessions =
@@ -257,11 +285,13 @@
if (providerSessions.isEmpty()) {
try {
// TODO("Replace with properly defined error type")
- callback.onError("unknown_type",
- "No providers available to fulfill request.");
+ callback.onError("unknown_type", "No providers available to fulfill request.");
} catch (RemoteException e) {
- Log.i(TAG, "Issue invoking onError on ICreateCredentialCallback "
- + "callback: " + e.getMessage());
+ Log.i(
+ TAG,
+ "Issue invoking onError on ICreateCredentialCallback "
+ + "callback: "
+ + e.getMessage());
}
}
@@ -278,7 +308,7 @@
return cancelTransport;
}
- @SuppressWarnings("GuardedBy") // ErrorProne requires listEnabledProviders
+ @SuppressWarnings("GuardedBy") // ErrorProne requires listEnabledProviders
// to be guarded by 'service.mLock', which is the same as mLock.
@Override
public ICancellationSignal listEnabledProviders(IListEnabledProvidersCallback callback) {
@@ -288,8 +318,7 @@
List<String> enabledProviders = new ArrayList<>();
runForUser(
(service) -> {
- enabledProviders.add(
- service.getComponentName().flattenToString());
+ enabledProviders.add(service.getComponentName().flattenToString());
});
// Call the callback.
@@ -331,7 +360,7 @@
"Failed to store setting containing enabled providers");
} catch (RemoteException e) {
Log.i(TAG, "Issue with invoking error response: " + e.getMessage());
- // TODO: Propagate failure
+ return;
}
}
@@ -342,37 +371,44 @@
Log.i(TAG, "Issue with invoking response: " + e.getMessage());
// TODO: Propagate failure
}
+
+ // Send an intent to the UI that we have new enabled providers.
+ getContext().sendBroadcast(IntentFactory.createProviderUpdateIntent());
}
@Override
- public ICancellationSignal clearCredentialState(ClearCredentialStateRequest request,
- IClearCredentialStateCallback callback, String callingPackage) {
+ public ICancellationSignal clearCredentialState(
+ ClearCredentialStateRequest request,
+ IClearCredentialStateCallback callback,
+ String callingPackage) {
Log.i(TAG, "starting clearCredentialState with callingPackage: " + callingPackage);
// TODO : Implement cancellation
ICancellationSignal cancelTransport = CancellationSignal.createTransport();
// New request session, scoped for this request only.
+ int userId = UserHandle.getCallingUserId();
final ClearRequestSession session =
new ClearRequestSession(
getContext(),
- UserHandle.getCallingUserId(),
+ userId,
callback,
request,
- callingPackage);
+ constructCallingAppInfo(callingPackage, userId));
// Initiate all provider sessions
// TODO: Determine if provider needs to have clear capability in their manifest
- List<ProviderSession> providerSessions =
- initiateProviderSessions(session, List.of());
+ List<ProviderSession> providerSessions = initiateProviderSessions(session, List.of());
if (providerSessions.isEmpty()) {
try {
// TODO("Replace with properly defined error type")
- callback.onError("unknown_type",
- "No providers available to fulfill request.");
+ callback.onError("unknown_type", "No providers available to fulfill request.");
} catch (RemoteException e) {
- Log.i(TAG, "Issue invoking onError on IClearCredentialStateCallback "
- + "callback: " + e.getMessage());
+ Log.i(
+ TAG,
+ "Issue invoking onError on IClearCredentialStateCallback "
+ + "callback: "
+ + e.getMessage());
}
}
diff --git a/services/credentials/java/com/android/server/credentials/GetRequestSession.java b/services/credentials/java/com/android/server/credentials/GetRequestSession.java
index 5076d74..06396e0 100644
--- a/services/credentials/java/com/android/server/credentials/GetRequestSession.java
+++ b/services/credentials/java/com/android/server/credentials/GetRequestSession.java
@@ -25,6 +25,7 @@
import android.credentials.ui.ProviderData;
import android.credentials.ui.RequestInfo;
import android.os.RemoteException;
+import android.service.credentials.CallingAppInfo;
import android.service.credentials.CredentialProviderInfo;
import android.util.Log;
@@ -41,8 +42,8 @@
public GetRequestSession(Context context, int userId,
IGetCredentialCallback callback, GetCredentialRequest request,
- String callingPackage) {
- super(context, userId, request, callback, RequestInfo.TYPE_GET, callingPackage);
+ CallingAppInfo callingAppInfo) {
+ super(context, userId, request, callback, RequestInfo.TYPE_GET, callingAppInfo);
}
/**
@@ -71,7 +72,7 @@
try {
mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent(
RequestInfo.newGetRequestInfo(
- mRequestId, null, ""),
+ mRequestId, mClientRequest, mClientAppInfo.getPackageName()),
providerDataList));
} catch (RemoteException e) {
Log.i(TAG, "Issue with invoking pending intent: " + e.getMessage());
@@ -85,7 +86,6 @@
super.onProviderStatusChanged(status, componentName);
}
-
@Override
public void onFinalResponseReceived(ComponentName componentName,
@Nullable GetCredentialResponse response) {
diff --git a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
index 020552a..48e35b2 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java
@@ -25,7 +25,6 @@
import android.service.credentials.CallingAppInfo;
import android.service.credentials.ClearCredentialStateRequest;
import android.service.credentials.CredentialProviderInfo;
-import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;
@@ -52,7 +51,7 @@
ClearCredentialStateRequest providerRequest =
createProviderRequest(
clearRequestSession.mClientRequest,
- clearRequestSession.mClientCallingPackage);
+ clearRequestSession.mClientAppInfo);
return new ProviderClearSession(context, providerInfo, clearRequestSession, userId,
remoteCredentialService, providerRequest);
}
@@ -60,11 +59,11 @@
@Nullable
private static ClearCredentialStateRequest createProviderRequest(
android.credentials.ClearCredentialStateRequest clientRequest,
- String clientCallingPackage
+ CallingAppInfo callingAppInfo
) {
// TODO: Determine if provider needs to declare clear capability in manifest
return new ClearCredentialStateRequest(
- new CallingAppInfo(clientCallingPackage, new ArraySet<>()),
+ callingAppInfo,
clientRequest.getData());
}
diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
index 17a47ec..9163b8e 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
@@ -19,10 +19,8 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
-import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.Signature;
import android.credentials.CreateCredentialException;
import android.credentials.ui.CreateCredentialProviderData;
import android.credentials.ui.Entry;
@@ -34,7 +32,6 @@
import android.service.credentials.CreateEntry;
import android.service.credentials.CredentialProviderInfo;
import android.service.credentials.CredentialProviderService;
-import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;
@@ -71,8 +68,7 @@
CreateCredentialRequest providerCreateRequest =
createProviderRequest(providerInfo.getCapabilities(),
createRequestSession.mClientRequest,
- new CallingAppInfo(createRequestSession.mClientCallingPackage,
- new ArraySet<Signature>()));
+ createRequestSession.mClientAppInfo);
if (providerCreateRequest != null) {
BeginCreateCredentialRequest providerBeginCreateRequest =
new BeginCreateCredentialRequest(
@@ -214,14 +210,13 @@
mUiSaveEntries.put(entryId, createEntry);
Log.i(TAG, "in prepareUiProviderData creating ui entry with id " + entryId);
uiSaveEntries.add(new Entry(SAVE_ENTRY_KEY, entryId, createEntry.getSlice(),
- createEntry.getPendingIntent(), setUpFillInIntent(
- createEntry.getPendingIntent())));
+ setUpFillInIntent()));
}
return uiSaveEntries;
}
- private Intent setUpFillInIntent(PendingIntent pendingIntent) {
- Intent intent = pendingIntent.getIntent();
+ private Intent setUpFillInIntent() {
+ Intent intent = new Intent();
intent.putExtra(CredentialProviderService.EXTRA_CREATE_CREDENTIAL_REQUEST,
mCompleteRequest);
return intent;
@@ -240,7 +235,7 @@
pendingIntentResponse);
if (exception != null) {
invokeCallbackWithError(
- exception.errorType,
+ exception.getType(),
exception.getMessage());
return;
}
diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
index 4a614a6..9846d83 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
@@ -19,10 +19,8 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
-import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.Signature;
import android.credentials.GetCredentialException;
import android.credentials.GetCredentialOption;
import android.credentials.GetCredentialResponse;
@@ -39,7 +37,6 @@
import android.service.credentials.CredentialProviderService;
import android.service.credentials.CredentialsResponseContent;
import android.service.credentials.GetCredentialRequest;
-import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
import android.util.Slog;
@@ -96,8 +93,7 @@
getRequestSession.mClientRequest);
if (filteredRequest != null) {
BeginGetCredentialRequest beginGetCredentialRequest = constructQueryPhaseRequest(
- filteredRequest, getRequestSession.mClientCallingPackage);
-
+ filteredRequest, getRequestSession.mClientAppInfo);
return new ProviderGetSession(context, providerInfo, getRequestSession, userId,
remoteCredentialService, beginGetCredentialRequest, filteredRequest);
}
@@ -107,11 +103,9 @@
private static BeginGetCredentialRequest constructQueryPhaseRequest(
android.credentials.GetCredentialRequest filteredRequest,
- String clientCallingPackage
+ CallingAppInfo callingAppInfo
) {
- return new BeginGetCredentialRequest.Builder(
- new CallingAppInfo(clientCallingPackage,
- new ArraySet<Signature>()))
+ return new BeginGetCredentialRequest.Builder(callingAppInfo)
.setBeginGetCredentialOptions(
filteredRequest.getGetCredentialOptions().stream().map(
option -> {
@@ -293,8 +287,8 @@
private Entry prepareUiAuthenticationAction(@NonNull Action authenticationAction) {
String entryId = generateEntryId();
Entry authEntry = new Entry(
- AUTHENTICATION_ACTION_ENTRY_KEY, entryId, authenticationAction.getSlice(),
- authenticationAction.getPendingIntent(), /*fillInIntent=*/null);
+ AUTHENTICATION_ACTION_ENTRY_KEY, entryId,
+ authenticationAction.getSlice());
mUiAuthenticationAction = new Pair<>(entryId, authenticationAction);
return authEntry;
}
@@ -309,20 +303,15 @@
String entryId = generateEntryId();
mUiCredentialEntries.put(entryId, credentialEntry);
Log.i(TAG, "in prepareUiProviderData creating ui entry with id " + entryId);
- if (credentialEntry.getPendingIntent() != null) {
- credentialUiEntries.add(new Entry(CREDENTIAL_ENTRY_KEY, entryId,
- credentialEntry.getSlice(), credentialEntry.getPendingIntent(),
- setUpFillInIntent(credentialEntry.getPendingIntent(),
- credentialEntry.getType())));
- } else {
- Log.i(TAG, "No pending intent. Should not happen.");
- }
+ credentialUiEntries.add(new Entry(CREDENTIAL_ENTRY_KEY, entryId,
+ credentialEntry.getSlice(),
+ /*fillInIntent=*/setUpFillInIntent(credentialEntry.getType())));
}
return credentialUiEntries;
}
- private Intent setUpFillInIntent(PendingIntent pendingIntent, String type) {
- Intent intent = pendingIntent.getIntent();
+ private Intent setUpFillInIntent(String type) {
+ Intent intent = new Intent();
for (GetCredentialOption option : mCompleteRequest.getGetCredentialOptions()) {
if (option.getType().equals(type)) {
intent.putExtra(
@@ -341,8 +330,7 @@
String entryId = UUID.randomUUID().toString();
mUiActionsEntries.put(entryId, action);
// TODO : Remove conversion of string to int after change in Entry class
- actionEntries.add(new Entry(ACTION_ENTRY_KEY, entryId, action.getSlice(),
- action.getPendingIntent(), /*fillInIntent=*/null));
+ actionEntries.add(new Entry(ACTION_ENTRY_KEY, entryId, action.getSlice()));
}
return actionEntries;
}
@@ -365,7 +353,7 @@
GetCredentialException exception = maybeGetPendingIntentException(
providerPendingIntentResponse);
if (exception != null) {
- invokeCallbackWithError(exception.errorType,
+ invokeCallbackWithError(exception.getType(),
exception.getMessage());
return;
}
@@ -393,12 +381,12 @@
private void onAuthenticationEntrySelected(
@Nullable ProviderPendingIntentResponse providerPendingIntentResponse) {
- //TODO: Other provider intent statuses
+ //TODO: Other provider intent statuses
// Check if pending intent has an error
GetCredentialException exception = maybeGetPendingIntentException(
providerPendingIntentResponse);
if (exception != null) {
- invokeCallbackWithError(exception.errorType,
+ invokeCallbackWithError(exception.getType(),
exception.getMessage());
return;
}
diff --git a/services/credentials/java/com/android/server/credentials/RequestSession.java b/services/credentials/java/com/android/server/credentials/RequestSession.java
index 7fcea35..f59a0ef 100644
--- a/services/credentials/java/com/android/server/credentials/RequestSession.java
+++ b/services/credentials/java/com/android/server/credentials/RequestSession.java
@@ -26,6 +26,7 @@
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
+import android.service.credentials.CallingAppInfo;
import android.service.credentials.CredentialProviderInfo;
import android.util.Log;
@@ -49,20 +50,20 @@
@NonNull protected final String mRequestType;
@NonNull protected final Handler mHandler;
@UserIdInt protected final int mUserId;
- @NonNull protected final String mClientCallingPackage;
+ @NonNull protected final CallingAppInfo mClientAppInfo;
protected final Map<String, ProviderSession> mProviders = new HashMap<>();
protected RequestSession(@NonNull Context context,
@UserIdInt int userId, @NonNull T clientRequest, U clientCallback,
@NonNull String requestType,
- String clientCallingPackage) {
+ CallingAppInfo callingAppInfo) {
mContext = context;
mUserId = userId;
mClientRequest = clientRequest;
mClientCallback = clientCallback;
mRequestType = requestType;
- mClientCallingPackage = clientCallingPackage;
+ mClientAppInfo = callingAppInfo;
mHandler = new Handler(Looper.getMainLooper(), null, true);
mRequestId = new Binder();
mCredentialManagerUi = new CredentialManagerUi(mContext,
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/ActiveAdmin.java b/services/devicepolicy/java/com/android/server/devicepolicy/ActiveAdmin.java
index 70a7a02..4c42791 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/ActiveAdmin.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/ActiveAdmin.java
@@ -34,6 +34,7 @@
import android.app.admin.DeviceAdminInfo;
import android.app.admin.DevicePolicyManager;
import android.app.admin.FactoryResetProtectionPolicy;
+import android.app.admin.ManagedSubscriptionsPolicy;
import android.app.admin.PackagePolicy;
import android.app.admin.PasswordPolicy;
import android.app.admin.PreferentialNetworkServiceConfig;
@@ -168,6 +169,7 @@
private static final String TAG_PROTECTED_PACKAGES = "protected_packages";
private static final String TAG_SUSPENDED_PACKAGES = "suspended-packages";
private static final String TAG_MTE_POLICY = "mte-policy";
+ private static final String TAG_MANAGED_SUBSCRIPTIONS_POLICY = "managed_subscriptions_policy";
private static final String ATTR_VALUE = "value";
private static final String ATTR_LAST_NETWORK_LOGGING_NOTIFICATION = "last-notification";
private static final String ATTR_NUM_NETWORK_LOGGING_NOTIFICATIONS = "num-notifications";
@@ -272,6 +274,9 @@
// Wi-Fi SSID restriction policy.
WifiSsidPolicy mWifiSsidPolicy;
+ // Managed subscriptions policy.
+ ManagedSubscriptionsPolicy mManagedSubscriptionsPolicy;
+
// TODO: review implementation decisions with frameworks team
boolean specifiesGlobalProxy = false;
String globalProxySpec = null;
@@ -642,6 +647,11 @@
mManagedProfileCallerIdAccess);
writePackagePolicy(out, TAG_CROSS_PROFILE_CONTACTS_SEARCH_POLICY,
mManagedProfileContactsAccess);
+ if (mManagedSubscriptionsPolicy != null) {
+ out.startTag(null, TAG_MANAGED_SUBSCRIPTIONS_POLICY);
+ mManagedSubscriptionsPolicy.saveToXml(out);
+ out.endTag(null, TAG_MANAGED_SUBSCRIPTIONS_POLICY);
+ }
}
private void writePackagePolicy(TypedXmlSerializer out, String tag,
@@ -946,6 +956,8 @@
mManagedProfileCallerIdAccess = readPackagePolicy(parser);
} else if (TAG_CROSS_PROFILE_CONTACTS_SEARCH_POLICY.equals(tag)) {
mManagedProfileContactsAccess = readPackagePolicy(parser);
+ } else if (TAG_MANAGED_SUBSCRIPTIONS_POLICY.equals(tag)) {
+ mManagedSubscriptionsPolicy = ManagedSubscriptionsPolicy.readFromXml(parser);
} else {
Slogf.w(LOG_TAG, "Unknown admin tag: %s", tag);
XmlUtils.skipCurrentTag(parser);
@@ -1414,5 +1426,13 @@
pw.print("accountTypesWithManagementDisabled=");
pw.println(accountTypesWithManagementDisabled);
+
+ if (mManagedSubscriptionsPolicy != null) {
+ pw.println("mManagedSubscriptionsPolicy:");
+ pw.increaseIndent();
+ pw.print("mPolicyType=");
+ mManagedSubscriptionsPolicy.getPolicyType();
+ pw.decreaseIndent();
+ }
}
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DeviceAdminServiceController.java b/services/devicepolicy/java/com/android/server/devicepolicy/DeviceAdminServiceController.java
index 8f0af91..e080fc7 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DeviceAdminServiceController.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DeviceAdminServiceController.java
@@ -35,8 +35,11 @@
import com.android.server.appbinding.AppBindingUtils;
import com.android.server.utils.Slogf;
+import java.util.HashMap;
+import java.util.Map;
+
/**
- * Manages connections to persistent services in owner packages.
+ * Manages connections to persistent services in admin packages.
*/
public class DeviceAdminServiceController {
static final String TAG = DevicePolicyManagerService.LOG_TAG;
@@ -76,7 +79,8 @@
* User-ID -> {@link PersistentConnection}.
*/
@GuardedBy("mLock")
- private final SparseArray<DevicePolicyServiceConnection> mConnections = new SparseArray<>();
+ private final SparseArray<Map<String, DevicePolicyServiceConnection>> mConnections =
+ new SparseArray<>();
public DeviceAdminServiceController(DevicePolicyManagerService service,
DevicePolicyConstants constants) {
@@ -104,9 +108,9 @@
/**
* Find a service that handles {@link DevicePolicyManager#ACTION_DEVICE_ADMIN_SERVICE}
- * in an owner package and connect to it.
+ * in an admin package and connect to it.
*/
- public void startServiceForOwner(@NonNull String packageName, int userId,
+ public void startServiceForAdmin(@NonNull String packageName, int userId,
@NonNull String actionForLog) {
final long token = mInjector.binderClearCallingIdentity();
try {
@@ -114,15 +118,16 @@
final ServiceInfo service = findService(packageName, userId);
if (service == null) {
if (DEBUG) {
- Slogf.d(TAG, "Owner package %s on u%d has no service.", packageName,
+ Slogf.d(TAG, "Admin package %s on u%d has no service.", packageName,
userId);
}
- disconnectServiceOnUserLocked(userId, actionForLog);
+ disconnectServiceOnUserLocked(packageName, userId, actionForLog);
return;
}
// See if it's already running.
final PersistentConnection<IDeviceAdminService> existing =
- mConnections.get(userId);
+ mConnections.contains(userId)
+ ? mConnections.get(userId).get(packageName) : null;
if (existing != null) {
// Note even when we're already connected to the same service, the binding
// would have died at this point due to a package update. So we disconnect
@@ -131,18 +136,21 @@
Slogf.d("Disconnecting from existing service connection.", packageName,
userId);
}
- disconnectServiceOnUserLocked(userId, actionForLog);
+ disconnectServiceOnUserLocked(packageName, userId, actionForLog);
}
if (DEBUG) {
- Slogf.d("Owner package %s on u%d has service %s for %s", packageName, userId,
+ Slogf.d("Admin package %s on u%d has service %s for %s", packageName, userId,
service.getComponentName().flattenToShortString(), actionForLog);
}
final DevicePolicyServiceConnection conn =
new DevicePolicyServiceConnection(
userId, service.getComponentName());
- mConnections.put(userId, conn);
+ if (!mConnections.contains(userId)) {
+ mConnections.put(userId, new HashMap<>());
+ }
+ mConnections.get(userId).put(packageName, conn);
conn.bind();
}
} finally {
@@ -151,9 +159,24 @@
}
/**
- * Stop an owner service on a given user.
+ * Stop an admin service on a given user.
*/
- public void stopServiceForOwner(int userId, @NonNull String actionForLog) {
+ public void stopServiceForAdmin(
+ @NonNull String packageName, int userId, @NonNull String actionForLog) {
+ final long token = mInjector.binderClearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ disconnectServiceOnUserLocked(packageName, userId, actionForLog);
+ }
+ } finally {
+ mInjector.binderRestoreCallingIdentity(token);
+ }
+ }
+
+ /**
+ * Stop all admin services on a given user.
+ */
+ public void stopServicesForUser(int userId, @NonNull String actionForLog) {
final long token = mInjector.binderClearCallingIdentity();
try {
synchronized (mLock) {
@@ -165,34 +188,68 @@
}
@GuardedBy("mLock")
- private void disconnectServiceOnUserLocked(int userId, @NonNull String actionForLog) {
- final DevicePolicyServiceConnection conn = mConnections.get(userId);
+ private void disconnectServiceOnUserLocked(
+ @NonNull String packageName, int userId, @NonNull String actionForLog) {
+ final DevicePolicyServiceConnection conn = mConnections.contains(userId)
+ ? mConnections.get(userId).get(packageName) : null;
if (conn != null) {
if (DEBUG) {
- Slogf.d(TAG, "Stopping service for u%d if already running for %s.", userId,
+ Slogf.d(TAG, "Stopping service for package %s on u%d if already running for %s.",
+ packageName,
+ userId,
actionForLog);
}
conn.unbind();
- mConnections.remove(userId);
+ mConnections.get(userId).remove(packageName);
+ if (mConnections.get(userId).isEmpty()) {
+ mConnections.remove(userId);
+ }
}
}
+ @GuardedBy("mLock")
+ private void disconnectServiceOnUserLocked(int userId, @NonNull String actionForLog) {
+ if (!mConnections.contains(userId)) {
+ return;
+ }
+ for (String packageName : mConnections.get(userId).keySet()) {
+ DevicePolicyServiceConnection conn = mConnections.get(userId).get(packageName);
+ if (DEBUG) {
+ Slogf.d(TAG,
+ "Stopping service for package %s on u%d if already running for %s.",
+ packageName,
+ userId,
+ actionForLog);
+ }
+ conn.unbind();
+ }
+ mConnections.remove(userId);
+ }
+
/** dump content */
public void dump(IndentingPrintWriter pw) {
synchronized (mLock) {
if (mConnections.size() == 0) {
return;
}
- pw.println("Owner Services:");
+ pw.println("Admin Services:");
pw.increaseIndent();
for (int i = 0; i < mConnections.size(); i++) {
final int userId = mConnections.keyAt(i);
- pw.print("User: "); pw.println(userId);
+ pw.print("User: ");
+ pw.println(userId);
+ for (String packageName : mConnections.get(userId).keySet()) {
+ pw.increaseIndent();
+ pw.print("Package: ");
+ pw.println(packageName);
- final DevicePolicyServiceConnection con = mConnections.valueAt(i);
- pw.increaseIndent();
- con.dump("", pw);
- pw.decreaseIndent();
+ final DevicePolicyServiceConnection con = mConnections.valueAt(i)
+ .get(packageName);
+ pw.increaseIndent();
+ con.dump("", pw);
+ pw.decreaseIndent();
+ pw.decreaseIndent();
+ }
}
pw.decreaseIndent();
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
index d796ddf..7ec809f 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
@@ -28,15 +28,19 @@
import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.app.admin.DevicePolicyManager;
import android.app.admin.PolicyUpdatesReceiver;
import android.app.admin.TargetUser;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.pm.UserInfo;
+import android.os.Binder;
import android.os.Bundle;
import android.os.Environment;
import android.os.UserHandle;
+import android.os.UserManager;
import android.util.AtomicFile;
import android.util.Log;
import android.util.SparseArray;
@@ -54,7 +58,9 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -68,6 +74,8 @@
static final String TAG = "DevicePolicyEngine";
private final Context mContext;
+ private final UserManager mUserManager;
+
// TODO(b/256849338): add more granular locks
private final Object mLock = new Object();
@@ -81,20 +89,30 @@
*/
private final Map<String, PolicyState<?>> mGlobalPolicies;
- DevicePolicyEngine(@NonNull Context context) {
+ /**
+ * Map containing the current set of admins in each user with active policies.
+ */
+ private final SparseArray<Set<EnforcingAdmin>> mEnforcingAdmins;
+
+ private final DeviceAdminServiceController mDeviceAdminServiceController;
+
+ DevicePolicyEngine(
+ @NonNull Context context,
+ @NonNull DeviceAdminServiceController deviceAdminServiceController) {
mContext = Objects.requireNonNull(context);
+ mDeviceAdminServiceController = Objects.requireNonNull(deviceAdminServiceController);
+ mUserManager = mContext.getSystemService(UserManager.class);
mLocalPolicies = new SparseArray<>();
mGlobalPolicies = new HashMap<>();
+ mEnforcingAdmins = new SparseArray<>();
}
// TODO: add more documentation on broadcasts/callbacks to use to get current enforced values
/**
* Set the policy for the provided {@code policyDefinition}
* (see {@link PolicyDefinition}) and {@code enforcingAdmin} to the provided {@code value}.
- * Returns {@code true} if the enforced policy has been changed.
- *
*/
- <V> boolean setLocalPolicy(
+ <V> void setLocalPolicy(
@NonNull PolicyDefinition<V> policyDefinition,
@NonNull EnforcingAdmin enforcingAdmin,
@NonNull V value,
@@ -105,45 +123,129 @@
Objects.requireNonNull(value);
synchronized (mLock) {
- PolicyState<V> policyState = getLocalPolicyStateLocked(policyDefinition, userId);
+ PolicyState<V> localPolicyState = getLocalPolicyStateLocked(policyDefinition, userId);
- boolean policyChanged = policyState.setPolicy(enforcingAdmin, value);
+ boolean hasGlobalPolicies = hasGlobalPolicyLocked(policyDefinition);
+ boolean policyChanged;
+ if (hasGlobalPolicies) {
+ PolicyState<V> globalPolicyState = getGlobalPolicyStateLocked(policyDefinition);
+ policyChanged = localPolicyState.addPolicy(
+ enforcingAdmin,
+ value,
+ globalPolicyState.getPoliciesSetByAdmins());
+ } else {
+ policyChanged = localPolicyState.addPolicy(enforcingAdmin, value);
+ }
if (policyChanged) {
- enforcePolicy(
- policyDefinition, policyState.getCurrentResolvedPolicy(), userId);
- sendPolicyChangedToAdmins(
- policyState.getPoliciesSetByAdmins().keySet(),
- enforcingAdmin,
- policyDefinition,
- userId == enforcingAdmin.getUserId()
- ? TargetUser.LOCAL_USER_ID : TargetUser.PARENT_USER_ID);
-
+ onLocalPolicyChanged(policyDefinition, enforcingAdmin, userId);
}
- boolean wasAdminPolicyEnforced = Objects.equals(
- policyState.getCurrentResolvedPolicy(), value);
+
+ boolean policyEnforced = Objects.equals(
+ localPolicyState.getCurrentResolvedPolicy(), value);
sendPolicyResultToAdmin(
enforcingAdmin,
policyDefinition,
- wasAdminPolicyEnforced,
+ policyEnforced,
// TODO: we're always sending this for now, should properly handle errors.
REASON_CONFLICTING_ADMIN_POLICY,
- userId == enforcingAdmin.getUserId()
- ? TargetUser.LOCAL_USER_ID : TargetUser.PARENT_USER_ID);
+ userId);
+
+ updateDeviceAdminServiceOnPolicyAddLocked(enforcingAdmin);
write();
- return policyChanged;
}
}
// TODO: add more documentation on broadcasts/callbacks to use to get current enforced values
/**
+ * Removes any previously set policy for the provided {@code policyDefinition}
+ * (see {@link PolicyDefinition}) and {@code enforcingAdmin}.
+ */
+ <V> void removeLocalPolicy(
+ @NonNull PolicyDefinition<V> policyDefinition,
+ @NonNull EnforcingAdmin enforcingAdmin,
+ int userId) {
+ Objects.requireNonNull(policyDefinition);
+ Objects.requireNonNull(enforcingAdmin);
+
+ synchronized (mLock) {
+ if (!hasLocalPolicyLocked(policyDefinition, userId)) {
+ return;
+ }
+ PolicyState<V> localPolicyState = getLocalPolicyStateLocked(policyDefinition, userId);
+
+ boolean policyChanged;
+ if (hasGlobalPolicyLocked(policyDefinition)) {
+ PolicyState<V> globalPolicyState = getGlobalPolicyStateLocked(policyDefinition);
+ policyChanged = localPolicyState.removePolicy(
+ enforcingAdmin,
+ globalPolicyState.getPoliciesSetByAdmins());
+ } else {
+ policyChanged = localPolicyState.removePolicy(enforcingAdmin);
+ }
+
+ if (policyChanged) {
+ onLocalPolicyChanged(policyDefinition, enforcingAdmin, userId);
+ }
+
+ // For a removePolicy to be enforced, it means no current policy exists
+ boolean policyEnforced = localPolicyState.getCurrentResolvedPolicy() == null;
+ sendPolicyResultToAdmin(
+ enforcingAdmin,
+ policyDefinition,
+ policyEnforced,
+ // TODO: we're always sending this for now, should properly handle errors.
+ REASON_CONFLICTING_ADMIN_POLICY,
+ userId);
+
+ if (localPolicyState.getPoliciesSetByAdmins().isEmpty()) {
+ removeLocalPolicyStateLocked(policyDefinition, userId);
+ }
+
+ updateDeviceAdminServiceOnPolicyRemoveLocked(enforcingAdmin);
+
+ write();
+ }
+ }
+
+ /**
+ * Enforces the new policy and notifies relevant admins.
+ */
+ private <V> void onLocalPolicyChanged(
+ @NonNull PolicyDefinition<V> policyDefinition,
+ @NonNull EnforcingAdmin enforcingAdmin,
+ int userId) {
+
+ PolicyState<V> localPolicyState = getLocalPolicyStateLocked(policyDefinition, userId);
+ enforcePolicy(
+ policyDefinition, localPolicyState.getCurrentResolvedPolicy(), userId);
+
+ // Send policy updates to admins who've set it locally
+ sendPolicyChangedToAdmins(
+ localPolicyState.getPoliciesSetByAdmins().keySet(),
+ enforcingAdmin,
+ policyDefinition,
+ // This policy change is only relevant to a single user, not the global
+ // policy value,
+ userId);
+
+ // Send policy updates to admins who've set it globally
+ if (hasGlobalPolicyLocked(policyDefinition)) {
+ PolicyState<V> globalPolicyState = getGlobalPolicyStateLocked(policyDefinition);
+ sendPolicyChangedToAdmins(
+ globalPolicyState.getPoliciesSetByAdmins().keySet(),
+ enforcingAdmin,
+ policyDefinition,
+ userId);
+ }
+ }
+ // TODO: add more documentation on broadcasts/callbacks to use to get current enforced values
+ /**
* Set the policy for the provided {@code policyDefinition}
* (see {@link PolicyDefinition}) and {@code enforcingAdmin} to the provided {@code value}.
- * Returns {@code true} if the enforced policy has been changed.
- *
*/
- <V> boolean setGlobalPolicy(
+ <V> void setGlobalPolicy(
@NonNull PolicyDefinition<V> policyDefinition,
@NonNull EnforcingAdmin enforcingAdmin,
@NonNull V value) {
@@ -153,77 +255,29 @@
Objects.requireNonNull(value);
synchronized (mLock) {
- PolicyState<V> policyState = getGlobalPolicyStateLocked(policyDefinition);
+ PolicyState<V> globalPolicyState = getGlobalPolicyStateLocked(policyDefinition);
-
- boolean policyChanged = policyState.setPolicy(enforcingAdmin, value);
+ boolean policyChanged = globalPolicyState.addPolicy(enforcingAdmin, value);
if (policyChanged) {
- enforcePolicy(policyDefinition, policyState.getCurrentResolvedPolicy(),
- UserHandle.USER_ALL);
- sendPolicyChangedToAdmins(
- policyState.getPoliciesSetByAdmins().keySet(),
- enforcingAdmin,
- policyDefinition,
- TargetUser.GLOBAL_USER_ID);
+ onGlobalPolicyChanged(policyDefinition, enforcingAdmin);
}
- boolean wasAdminPolicyEnforced = Objects.equals(
- policyState.getCurrentResolvedPolicy(), value);
+
+ boolean policyEnforcedOnAllUsers = enforceGlobalPolicyOnUsersWithLocalPoliciesLocked(
+ policyDefinition, enforcingAdmin, value);
+ boolean policyEnforcedGlobally = Objects.equals(
+ globalPolicyState.getCurrentResolvedPolicy(), value);
+
sendPolicyResultToAdmin(
enforcingAdmin,
policyDefinition,
- wasAdminPolicyEnforced,
+ policyEnforcedGlobally && policyEnforcedOnAllUsers,
// TODO: we're always sending this for now, should properly handle errors.
REASON_CONFLICTING_ADMIN_POLICY,
- TargetUser.GLOBAL_USER_ID);
+ UserHandle.USER_ALL);
+
+ updateDeviceAdminServiceOnPolicyAddLocked(enforcingAdmin);
write();
- return policyChanged;
- }
- }
-
-
- // TODO: add more documentation on broadcasts/callbacks to use to get current enforced values
- /**
- * Removes any previously set policy for the provided {@code policyDefinition}
- * (see {@link PolicyDefinition}) and {@code enforcingAdmin}.
- * Returns {@code true} if the enforced policy has been changed.
- *
- */
- <V> boolean removeLocalPolicy(
- @NonNull PolicyDefinition<V> policyDefinition,
- @NonNull EnforcingAdmin enforcingAdmin,
- int userId) {
-
- Objects.requireNonNull(policyDefinition);
- Objects.requireNonNull(enforcingAdmin);
-
- synchronized (mLock) {
- PolicyState<V> policyState = getLocalPolicyStateLocked(policyDefinition, userId);
- boolean policyChanged = policyState.removePolicy(enforcingAdmin);
-
- if (policyChanged) {
- enforcePolicy(
- policyDefinition, policyState.getCurrentResolvedPolicy(), userId);
- sendPolicyChangedToAdmins(
- policyState.getPoliciesSetByAdmins().keySet(),
- enforcingAdmin,
- policyDefinition,
- userId == enforcingAdmin.getUserId()
- ? TargetUser.LOCAL_USER_ID : TargetUser.PARENT_USER_ID);
- }
- // for a remove policy to be enforced, it means no current policy exists
- boolean wasAdminPolicyEnforced = policyState.getCurrentResolvedPolicy() == null;
- sendPolicyResultToAdmin(
- enforcingAdmin,
- policyDefinition,
- wasAdminPolicyEnforced,
- // TODO: we're always sending this for now, should properly handle errors.
- REASON_CONFLICTING_ADMIN_POLICY,
- userId == enforcingAdmin.getUserId()
- ? TargetUser.LOCAL_USER_ID : TargetUser.PARENT_USER_ID);
-
- write();
- return policyChanged;
}
}
@@ -231,10 +285,8 @@
/**
* Removes any previously set policy for the provided {@code policyDefinition}
* (see {@link PolicyDefinition}) and {@code enforcingAdmin}.
- * Returns {@code true} if the enforced policy has been changed.
- *
*/
- <V> boolean removeGlobalPolicy(
+ <V> void removeGlobalPolicy(
@NonNull PolicyDefinition<V> policyDefinition,
@NonNull EnforcingAdmin enforcingAdmin) {
@@ -246,61 +298,170 @@
boolean policyChanged = policyState.removePolicy(enforcingAdmin);
if (policyChanged) {
- enforcePolicy(policyDefinition, policyState.getCurrentResolvedPolicy(),
- UserHandle.USER_ALL);
-
- sendPolicyChangedToAdmins(
- policyState.getPoliciesSetByAdmins().keySet(),
- enforcingAdmin,
- policyDefinition,
- TargetUser.GLOBAL_USER_ID);
+ onGlobalPolicyChanged(policyDefinition, enforcingAdmin);
}
- // for a remove policy to be enforced, it means no current policy exists
- boolean wasAdminPolicyEnforced = policyState.getCurrentResolvedPolicy() == null;
+
+ boolean policyEnforcedOnAllUsers = enforceGlobalPolicyOnUsersWithLocalPoliciesLocked(
+ policyDefinition, enforcingAdmin, /* value= */ null);
+ // For a removePolicy to be enforced, it means no current policy exists
+ boolean policyEnforcedGlobally = policyState.getCurrentResolvedPolicy() == null;
+
sendPolicyResultToAdmin(
enforcingAdmin,
policyDefinition,
- wasAdminPolicyEnforced,
+ policyEnforcedGlobally && policyEnforcedOnAllUsers,
// TODO: we're always sending this for now, should properly handle errors.
REASON_CONFLICTING_ADMIN_POLICY,
- TargetUser.GLOBAL_USER_ID);
+ UserHandle.USER_ALL);
+
+ if (policyState.getPoliciesSetByAdmins().isEmpty()) {
+ removeGlobalPolicyStateLocked(policyDefinition);
+ }
+
+ updateDeviceAdminServiceOnPolicyRemoveLocked(enforcingAdmin);
write();
- return policyChanged;
}
}
/**
- * Retrieves policies set by all admins for the provided {@code policyDefinition}.
- *
+ * Enforces the new policy globally and notifies relevant admins.
*/
- <V> PolicyState<V> getLocalPolicy(@NonNull PolicyDefinition<V> policyDefinition, int userId) {
+ private <V> void onGlobalPolicyChanged(
+ @NonNull PolicyDefinition<V> policyDefinition,
+ @NonNull EnforcingAdmin enforcingAdmin) {
+ PolicyState<V> policyState = getGlobalPolicyStateLocked(policyDefinition);
+
+ enforcePolicy(policyDefinition, policyState.getCurrentResolvedPolicy(),
+ UserHandle.USER_ALL);
+
+ sendPolicyChangedToAdmins(
+ policyState.getPoliciesSetByAdmins().keySet(),
+ enforcingAdmin,
+ policyDefinition,
+ UserHandle.USER_ALL);
+ }
+
+ /**
+ * Tries to enforce the global policy locally on all users that have the same policy set
+ * locally, this is only applicable to policies that can be set locally or globally
+ * (e.g. setCameraDisabled, setScreenCaptureDisabled) rather than
+ * policies that are global by nature (e.g. setting Wifi enabled/disabled).
+ *
+ * <p> A {@code null} policy value means the policy was removed
+ *
+ * <p>Returns {@code true} if the policy is enforced successfully on all users.
+ */
+ private <V> boolean enforceGlobalPolicyOnUsersWithLocalPoliciesLocked(
+ @NonNull PolicyDefinition<V> policyDefinition,
+ @NonNull EnforcingAdmin enforcingAdmin,
+ @Nullable V value) {
+ // Global only policies can't be applied locally, return early.
+ if (policyDefinition.isGlobalOnlyPolicy()) {
+ return true;
+ }
+ boolean isAdminPolicyEnforced = true;
+ for (int i = 0; i < mLocalPolicies.size(); i++) {
+ int userId = mLocalPolicies.keyAt(i);
+ if (!hasLocalPolicyLocked(policyDefinition, userId)) {
+ continue;
+ }
+
+ PolicyState<V> localPolicyState = getLocalPolicyStateLocked(policyDefinition, userId);
+ PolicyState<V> globalPolicyState = getGlobalPolicyStateLocked(policyDefinition);
+
+ boolean policyChanged = localPolicyState.resolvePolicy(
+ globalPolicyState.getPoliciesSetByAdmins());
+ if (policyChanged) {
+ enforcePolicy(
+ policyDefinition, localPolicyState.getCurrentResolvedPolicy(), userId);
+ sendPolicyChangedToAdmins(
+ localPolicyState.getPoliciesSetByAdmins().keySet(),
+ enforcingAdmin,
+ policyDefinition,
+ // Even though this is caused by a global policy change, admins who've set
+ // it locally should only care about the local user state.
+ userId);
+
+ }
+ isAdminPolicyEnforced &= Objects.equals(
+ value, localPolicyState.getCurrentResolvedPolicy());
+ }
+ return isAdminPolicyEnforced;
+ }
+
+ /**
+ * Retrieves the resolved policy for the provided {@code policyDefinition} and {@code userId}.
+ */
+ @Nullable
+ <V> V getResolvedPolicy(@NonNull PolicyDefinition<V> policyDefinition, int userId) {
Objects.requireNonNull(policyDefinition);
synchronized (mLock) {
- return getLocalPolicyStateLocked(policyDefinition, userId);
+ if (hasLocalPolicyLocked(policyDefinition, userId)) {
+ return getLocalPolicyStateLocked(
+ policyDefinition, userId).getCurrentResolvedPolicy();
+ }
+ if (hasGlobalPolicyLocked(policyDefinition)) {
+ return getGlobalPolicyStateLocked(policyDefinition).getCurrentResolvedPolicy();
+ }
+ return null;
}
}
/**
- * Retrieves policies set by all admins for the provided {@code policyDefinition}.
- *
+ * Retrieves the policy set by the admin for the provided {@code policyDefinition} and
+ * {@code userId} if one was set, otherwise returns {@code null}.
*/
- <V> PolicyState<V> getGlobalPolicy(@NonNull PolicyDefinition<V> policyDefinition) {
+ @Nullable
+ <V> V getLocalPolicySetByAdmin(
+ @NonNull PolicyDefinition<V> policyDefinition,
+ @NonNull EnforcingAdmin enforcingAdmin,
+ int userId) {
Objects.requireNonNull(policyDefinition);
+ Objects.requireNonNull(enforcingAdmin);
synchronized (mLock) {
- return getGlobalPolicyStateLocked(policyDefinition);
+ if (!hasLocalPolicyLocked(policyDefinition, userId)) {
+ return null;
+ }
+ return getLocalPolicyStateLocked(policyDefinition, userId)
+ .getPoliciesSetByAdmins().get(enforcingAdmin);
}
}
+ private <V> boolean hasLocalPolicyLocked(PolicyDefinition<V> policyDefinition, int userId) {
+ if (policyDefinition.isGlobalOnlyPolicy()) {
+ return false;
+ }
+ if (!mLocalPolicies.contains(userId)) {
+ return false;
+ }
+ if (!mLocalPolicies.get(userId).containsKey(policyDefinition.getPolicyKey())) {
+ return false;
+ }
+ return !mLocalPolicies.get(userId).get(policyDefinition.getPolicyKey())
+ .getPoliciesSetByAdmins().isEmpty();
+ }
+
+ private <V> boolean hasGlobalPolicyLocked(PolicyDefinition<V> policyDefinition) {
+ if (policyDefinition.isLocalOnlyPolicy()) {
+ return false;
+ }
+ if (!mGlobalPolicies.containsKey(policyDefinition.getPolicyKey())) {
+ return false;
+ }
+ return !mGlobalPolicies.get(policyDefinition.getPolicyKey()).getPoliciesSetByAdmins()
+ .isEmpty();
+ }
+
@NonNull
private <V> PolicyState<V> getLocalPolicyStateLocked(
PolicyDefinition<V> policyDefinition, int userId) {
if (policyDefinition.isGlobalOnlyPolicy()) {
- throw new IllegalArgumentException("Can't set global policy "
- + policyDefinition.getPolicyKey() + " locally.");
+ throw new IllegalArgumentException(policyDefinition.getPolicyKey() + " is a global only"
+ + "policy.");
}
if (!mLocalPolicies.contains(userId)) {
@@ -313,11 +474,19 @@
return getPolicyState(mLocalPolicies.get(userId), policyDefinition);
}
+ private <V> void removeLocalPolicyStateLocked(
+ PolicyDefinition<V> policyDefinition, int userId) {
+ if (!mLocalPolicies.contains(userId)) {
+ return;
+ }
+ mLocalPolicies.get(userId).remove(policyDefinition.getPolicyKey());
+ }
+
@NonNull
private <V> PolicyState<V> getGlobalPolicyStateLocked(PolicyDefinition<V> policyDefinition) {
if (policyDefinition.isLocalOnlyPolicy()) {
- throw new IllegalArgumentException("Can't set local policy "
- + policyDefinition.getPolicyKey() + " globally.");
+ throw new IllegalArgumentException(policyDefinition.getPolicyKey() + " is a local only"
+ + "policy.");
}
if (!mGlobalPolicies.containsKey(policyDefinition.getPolicyKey())) {
@@ -327,6 +496,10 @@
return getPolicyState(mGlobalPolicies, policyDefinition);
}
+ private <V> void removeGlobalPolicyStateLocked(PolicyDefinition<V> policyDefinition) {
+ mGlobalPolicies.remove(policyDefinition.getPolicyKey());
+ }
+
private static <V> PolicyState<V> getPolicyState(
Map<String, PolicyState<?>> policies, PolicyDefinition<V> policyDefinition) {
try {
@@ -344,14 +517,14 @@
private <V> void enforcePolicy(
PolicyDefinition<V> policyDefinition, @Nullable V policyValue, int userId) {
- // TODO: null policyValue means remove any enforced policies, ensure callbacks handle this
- // properly
+ // null policyValue means remove any enforced policies, ensure callbacks handle this
+ // properly
policyDefinition.enforcePolicy(policyValue, mContext, userId);
}
private <V> void sendPolicyResultToAdmin(
EnforcingAdmin admin, PolicyDefinition<V> policyDefinition, boolean success,
- int reason, int targetUserId) {
+ int reason, int userId) {
Intent intent = new Intent(PolicyUpdatesReceiver.ACTION_DEVICE_POLICY_SET_RESULT);
intent.setPackage(admin.getPackageName());
@@ -367,42 +540,44 @@
Bundle extras = new Bundle();
extras.putString(EXTRA_POLICY_KEY, policyDefinition.getPolicyDefinitionKey());
- extras.putInt(EXTRA_POLICY_TARGET_USER_ID, targetUserId);
-
if (policyDefinition.getCallbackArgs() != null
&& !policyDefinition.getCallbackArgs().isEmpty()) {
extras.putBundle(EXTRA_POLICY_BUNDLE_KEY, policyDefinition.getCallbackArgs());
}
extras.putInt(
+ EXTRA_POLICY_TARGET_USER_ID,
+ getTargetUser(admin.getUserId(), userId));
+ extras.putInt(
EXTRA_POLICY_SET_RESULT_KEY,
success ? POLICY_SET_RESULT_SUCCESS : POLICY_SET_RESULT_FAILURE);
if (!success) {
extras.putInt(EXTRA_POLICY_UPDATE_REASON_KEY, reason);
}
-
intent.putExtras(extras);
+
maybeSendIntentToAdminReceivers(intent, UserHandle.of(admin.getUserId()), receivers);
}
// TODO(b/261430877): Finalise the decision on which admins to send the updates to.
private <V> void sendPolicyChangedToAdmins(
- Set<EnforcingAdmin> admins, EnforcingAdmin callingAdmin,
+ Set<EnforcingAdmin> admins,
+ EnforcingAdmin callingAdmin,
PolicyDefinition<V> policyDefinition,
- int targetUserId) {
+ int userId) {
for (EnforcingAdmin admin: admins) {
// We're sending a separate broadcast for the calling admin with the result.
if (admin.equals(callingAdmin)) {
continue;
}
maybeSendOnPolicyChanged(
- admin, policyDefinition, REASON_CONFLICTING_ADMIN_POLICY, targetUserId);
+ admin, policyDefinition, REASON_CONFLICTING_ADMIN_POLICY, userId);
}
}
private <V> void maybeSendOnPolicyChanged(
EnforcingAdmin admin, PolicyDefinition<V> policyDefinition, int reason,
- int targetUserId) {
+ int userId) {
Intent intent = new Intent(PolicyUpdatesReceiver.ACTION_DEVICE_POLICY_CHANGED);
intent.setPackage(admin.getPackageName());
@@ -418,14 +593,17 @@
Bundle extras = new Bundle();
extras.putString(EXTRA_POLICY_KEY, policyDefinition.getPolicyDefinitionKey());
- extras.putInt(EXTRA_POLICY_TARGET_USER_ID, targetUserId);
-
if (policyDefinition.getCallbackArgs() != null
&& !policyDefinition.getCallbackArgs().isEmpty()) {
extras.putBundle(EXTRA_POLICY_BUNDLE_KEY, policyDefinition.getCallbackArgs());
}
+ extras.putInt(
+ EXTRA_POLICY_TARGET_USER_ID,
+ getTargetUser(admin.getUserId(), userId));
extras.putInt(EXTRA_POLICY_UPDATE_REASON_KEY, reason);
intent.putExtras(extras);
+ intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+
maybeSendIntentToAdminReceivers(
intent, UserHandle.of(admin.getUserId()), receivers);
}
@@ -447,6 +625,184 @@
}
}
+ private int getTargetUser(int adminUserId, int targetUserId) {
+ if (targetUserId == UserHandle.USER_ALL) {
+ return TargetUser.GLOBAL_USER_ID;
+ }
+ if (adminUserId == targetUserId) {
+ return TargetUser.LOCAL_USER_ID;
+ }
+ if (getProfileParentId(adminUserId) == targetUserId) {
+ return TargetUser.PARENT_USER_ID;
+ }
+ return TargetUser.UNKNOWN_USER_ID;
+ }
+
+ private int getProfileParentId(int userId) {
+ return Binder.withCleanCallingIdentity(() -> {
+ UserInfo parentUser = mUserManager.getProfileParent(userId);
+ return parentUser != null ? parentUser.id : userId;
+ });
+ }
+
+ /**
+ * Starts/Stops the services that handle {@link DevicePolicyManager#ACTION_DEVICE_ADMIN_SERVICE}
+ * in the enforcing admins for the given {@code userId}.
+ */
+ private void updateDeviceAdminsServicesForUser(
+ int userId, boolean enable, @NonNull String actionForLog) {
+ if (!enable) {
+ mDeviceAdminServiceController.stopServicesForUser(
+ userId, actionForLog);
+ } else {
+ for (EnforcingAdmin admin : getEnforcingAdminsForUser(userId)) {
+ // DPCs are handled separately in DPMS, no need to reestablish the connection here.
+ if (admin.hasAuthority(EnforcingAdmin.DPC_AUTHORITY)) {
+ continue;
+ }
+ mDeviceAdminServiceController.startServiceForAdmin(
+ admin.getPackageName(), userId, actionForLog);
+ }
+ }
+ }
+
+ /**
+ * Handles internal state related to a user getting started.
+ */
+ void handleStartUser(int userId) {
+ updateDeviceAdminsServicesForUser(
+ userId, /* enable= */ true, /* actionForLog= */ "start-user");
+ }
+
+ /**
+ * Handles internal state related to a user getting started.
+ */
+ void handleUnlockUser(int userId) {
+ updateDeviceAdminsServicesForUser(
+ userId, /* enable= */ true, /* actionForLog= */ "unlock-user");
+ }
+
+ /**
+ * Handles internal state related to a user getting stopped.
+ */
+ void handleStopUser(int userId) {
+ updateDeviceAdminsServicesForUser(
+ userId, /* enable= */ false, /* actionForLog= */ "stop-user");
+ }
+
+ /**
+ * Handles internal state related to packages getting updated.
+ */
+ void handlePackageChanged(@Nullable String updatedPackage, int userId) {
+ if (updatedPackage == null) {
+ return;
+ }
+ updateDeviceAdminServiceOnPackageChanged(updatedPackage, userId);
+ }
+
+ /**
+ * Reestablishes the service that handles
+ * {@link DevicePolicyManager#ACTION_DEVICE_ADMIN_SERVICE} in the enforcing admin if the package
+ * was updated, as a package update results in the persistent connection getting reset.
+ */
+ private void updateDeviceAdminServiceOnPackageChanged(
+ @NonNull String updatedPackage, int userId) {
+ for (EnforcingAdmin admin : getEnforcingAdminsForUser(userId)) {
+ // DPCs are handled separately in DPMS, no need to reestablish the connection here.
+ if (admin.hasAuthority(EnforcingAdmin.DPC_AUTHORITY)) {
+ continue;
+ }
+ if (updatedPackage.equals(admin.getPackageName())) {
+ mDeviceAdminServiceController.startServiceForAdmin(
+ updatedPackage, userId, /* actionForLog= */ "package-broadcast");
+ }
+ }
+ }
+
+ /**
+ * Called after an admin policy has been added to start binding to the admin if a connection
+ * was not already established.
+ */
+ private void updateDeviceAdminServiceOnPolicyAddLocked(@NonNull EnforcingAdmin enforcingAdmin) {
+ int userId = enforcingAdmin.getUserId();
+
+ // A connection is established with DPCs as soon as they are provisioned, so no need to
+ // connect when a policy is set.
+ if (enforcingAdmin.hasAuthority(EnforcingAdmin.DPC_AUTHORITY)) {
+ return;
+ }
+ if (mEnforcingAdmins.contains(userId)
+ && mEnforcingAdmins.get(userId).contains(enforcingAdmin)) {
+ return;
+ }
+
+ if (!mEnforcingAdmins.contains(enforcingAdmin.getUserId())) {
+ mEnforcingAdmins.put(enforcingAdmin.getUserId(), new HashSet<>());
+ }
+ mEnforcingAdmins.get(enforcingAdmin.getUserId()).add(enforcingAdmin);
+
+ mDeviceAdminServiceController.startServiceForAdmin(
+ enforcingAdmin.getPackageName(),
+ userId,
+ /* actionForLog= */ "policy-added");
+ }
+
+ /**
+ * Called after an admin policy has been removed to stop binding to the admin if they no longer
+ * have any policies set.
+ */
+ private void updateDeviceAdminServiceOnPolicyRemoveLocked(
+ @NonNull EnforcingAdmin enforcingAdmin) {
+ // TODO(b/263364434): centralise handling in one place.
+ // DPCs rely on a constant connection being established as soon as they are provisioned,
+ // so we shouldn't disconnect it even if they no longer have policies set.
+ if (enforcingAdmin.hasAuthority(EnforcingAdmin.DPC_AUTHORITY)) {
+ return;
+ }
+ if (doesAdminHavePolicies(enforcingAdmin)) {
+ return;
+ }
+
+ int userId = enforcingAdmin.getUserId();
+
+ if (mEnforcingAdmins.contains(userId)) {
+ mEnforcingAdmins.get(userId).remove(enforcingAdmin);
+ if (mEnforcingAdmins.get(userId).isEmpty()) {
+ mEnforcingAdmins.remove(enforcingAdmin.getUserId());
+ }
+ }
+
+ mDeviceAdminServiceController.stopServiceForAdmin(
+ enforcingAdmin.getPackageName(),
+ userId,
+ /* actionForLog= */ "policy-removed");
+ }
+
+ private boolean doesAdminHavePolicies(@NonNull EnforcingAdmin enforcingAdmin) {
+ for (String policy : mGlobalPolicies.keySet()) {
+ PolicyState<?> policyState = mGlobalPolicies.get(policy);
+ if (policyState.getPoliciesSetByAdmins().containsKey(enforcingAdmin)) {
+ return true;
+ }
+ }
+ for (int i = 0; i < mLocalPolicies.size(); i++) {
+ for (String policy : mLocalPolicies.get(mLocalPolicies.keyAt(i)).keySet()) {
+ PolicyState<?> policyState = mLocalPolicies.get(
+ mLocalPolicies.keyAt(i)).get(policy);
+ if (policyState.getPoliciesSetByAdmins().containsKey(enforcingAdmin)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @NonNull
+ private Set<EnforcingAdmin> getEnforcingAdminsForUser(int userId) {
+ return mEnforcingAdmins.contains(userId)
+ ? mEnforcingAdmins.get(userId) : Collections.emptySet();
+ }
+
private void write() {
Log.d(TAG, "Writing device policies to file.");
new DevicePoliciesReaderWriter().writeToFileLocked();
@@ -474,6 +830,7 @@
private static final String TAG_LOCAL_POLICY_ENTRY = "local-policy-entry";
private static final String TAG_GLOBAL_POLICY_ENTRY = "global-policy-entry";
private static final String TAG_ADMINS_POLICY_ENTRY = "admins-policy-entry";
+ private static final String TAG_ENFORCING_ADMINS_ENTRY = "enforcing-admins-entry";
private static final String ATTR_USER_ID = "user-id";
private static final String ATTR_POLICY_ID = "policy-id";
@@ -516,6 +873,7 @@
void writeInner(TypedXmlSerializer serializer) throws IOException {
writeLocalPoliciesInner(serializer);
writeGlobalPoliciesInner(serializer);
+ writeEnforcingAdminsInner(serializer);
}
private void writeLocalPoliciesInner(TypedXmlSerializer serializer) throws IOException {
@@ -556,6 +914,19 @@
}
}
+ private void writeEnforcingAdminsInner(TypedXmlSerializer serializer) throws IOException {
+ if (mEnforcingAdmins != null) {
+ for (int i = 0; i < mEnforcingAdmins.size(); i++) {
+ int userId = mEnforcingAdmins.keyAt(i);
+ for (EnforcingAdmin admin : mEnforcingAdmins.get(userId)) {
+ serializer.startTag(/* namespace= */ null, TAG_ENFORCING_ADMINS_ENTRY);
+ admin.saveToXml(serializer);
+ serializer.endTag(/* namespace= */ null, TAG_ENFORCING_ADMINS_ENTRY);
+ }
+ }
+ }
+ }
+
void readFromFileLocked() {
if (!mFile.exists()) {
Log.d(TAG, "" + mFile + " doesn't exist");
@@ -590,6 +961,9 @@
case TAG_GLOBAL_POLICY_ENTRY:
readGlobalPoliciesInner(parser);
break;
+ case TAG_ENFORCING_ADMINS_ENTRY:
+ readEnforcingAdminsInner(parser);
+ break;
default:
Log.e(TAG, "Unknown tag " + tag);
}
@@ -625,6 +999,15 @@
}
}
+ private void readEnforcingAdminsInner(TypedXmlPullParser parser)
+ throws XmlPullParserException {
+ EnforcingAdmin admin = EnforcingAdmin.readFromXml(parser);
+ if (!mEnforcingAdmins.contains(admin.getUserId())) {
+ mEnforcingAdmins.put(admin.getUserId(), new HashSet<>());
+ }
+ mEnforcingAdmins.get(admin.getUserId()).add(admin);
+ }
+
@Nullable
private PolicyState<?> parseAdminsPolicy(TypedXmlPullParser parser)
throws XmlPullParserException, IOException {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 51f3e32..cdb2e08 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -218,6 +218,7 @@
import android.app.admin.FactoryResetProtectionPolicy;
import android.app.admin.FullyManagedDeviceProvisioningParams;
import android.app.admin.ManagedProfileProvisioningParams;
+import android.app.admin.ManagedSubscriptionsPolicy;
import android.app.admin.NetworkEvent;
import android.app.admin.PackagePolicy;
import android.app.admin.ParcelableGranteeMap;
@@ -334,6 +335,8 @@
import android.security.keystore.KeyGenParameterSpec;
import android.security.keystore.ParcelableKeyGenParameterSpec;
import android.stats.devicepolicy.DevicePolicyEnums;
+import android.telecom.TelecomManager;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.text.TextUtils;
@@ -768,6 +771,9 @@
private final DeviceStateCacheImpl mStateCache = new DeviceStateCacheImpl();
private final Object mESIDInitilizationLock = new Object();
private EnterpriseSpecificIdCalculator mEsidCalculator;
+ private final Object mSubscriptionsChangedListenerLock = new Object();
+ @GuardedBy("mSubscriptionsChangedListenerLock")
+ private SubscriptionManager.OnSubscriptionsChangedListener mSubscriptionsChangedListener;
/**
* Contains the list of OEM Default Role Holders for Contact-related roles
@@ -973,8 +979,6 @@
@GuardedBy("getLockObject()")
final SparseArray<DevicePolicyData> mUserData;
- @GuardedBy("getLockObject()")
-
final Handler mHandler;
final Handler mBackgroundHandler;
@@ -1276,6 +1280,9 @@
&& (owner.getPackageName().equals(packageName))) {
startOwnerService(userHandle, "package-broadcast");
}
+ if (isCoexistenceFlagEnabled()) {
+ mDevicePolicyEngine.handlePackageChanged(packageName, userHandle);
+ }
// Persist updates if the removed package was an admin or delegate.
if (removedAdmin || removedDelegate) {
@@ -1919,7 +1926,7 @@
mUserData = new SparseArray<>();
mOwners = makeOwners(injector, pathProvider);
- mDevicePolicyEngine = new DevicePolicyEngine(mContext);
+ mDevicePolicyEngine = new DevicePolicyEngine(mContext, mDeviceAdminServiceController);
if (!mHasFeature) {
// Skip the rest of the initialization
@@ -3089,6 +3096,7 @@
onLockSettingsReady();
loadAdminDataAsync();
mOwners.systemReady();
+ applyManagedSubscriptionsPolicyIfRequired();
break;
case SystemService.PHASE_ACTIVITY_MANAGER_READY:
synchronized (getLockObject()) {
@@ -3107,6 +3115,22 @@
}
}
+ private void applyManagedSubscriptionsPolicyIfRequired() {
+ int copeProfileUserId = getOrganizationOwnedProfileUserId();
+ // This policy is relevant only for COPE devices.
+ if (copeProfileUserId != UserHandle.USER_NULL) {
+ unregisterOnSubscriptionsChangedListener();
+ int policyType = getManagedSubscriptionsPolicy().getPolicyType();
+ if (policyType == ManagedSubscriptionsPolicy.TYPE_ALL_PERSONAL_SUBSCRIPTIONS) {
+ // By default, assign all current and future subs to system user on COPE devices.
+ registerListenerToAssignSubscriptionsToUser(UserHandle.USER_SYSTEM);
+ } else if (policyType == ManagedSubscriptionsPolicy.TYPE_ALL_MANAGED_SUBSCRIPTIONS) {
+ // Add listener to assign all current and future subs to managed profile.
+ registerListenerToAssignSubscriptionsToUser(copeProfileUserId);
+ }
+ }
+ }
+
private void updatePersonalAppsSuspensionOnUserStart(int userHandle) {
final int profileUserHandle = getManagedUserId(userHandle);
if (profileUserHandle >= 0) {
@@ -3286,6 +3310,9 @@
updateNetworkPreferenceForUser(userId, preferentialNetworkServiceConfigs);
startOwnerService(userId, "start-user");
+ if (isCoexistenceFlagEnabled()) {
+ mDevicePolicyEngine.handleStartUser(userId);
+ }
}
void pushUserControlDisabledPackagesLocked(int userId) {
@@ -3300,7 +3327,7 @@
}
List<String> protectedPackages = (owner == null || owner.protectedPackages == null)
- ? Collections.emptyList() : owner.protectedPackages;
+ ? null : owner.protectedPackages;
mInjector.binderWithCleanCallingIdentity(() ->
mInjector.getPackageManagerInternal().setOwnerProtectedPackages(
targetUserId, protectedPackages));
@@ -3309,6 +3336,9 @@
@Override
void handleUnlockUser(int userId) {
startOwnerService(userId, "unlock-user");
+ if (isCoexistenceFlagEnabled()) {
+ mDevicePolicyEngine.handleUnlockUser(userId);
+ }
}
@Override
@@ -3319,22 +3349,21 @@
@Override
void handleStopUser(int userId) {
updateNetworkPreferenceForUser(userId, List.of(PreferentialNetworkServiceConfig.DEFAULT));
- stopOwnerService(userId, "stop-user");
+ mDeviceAdminServiceController.stopServicesForUser(userId, /* actionForLog= */ "stop-user");
+ if (isCoexistenceFlagEnabled()) {
+ mDevicePolicyEngine.handleStopUser(userId);
+ }
}
private void startOwnerService(int userId, String actionForLog) {
final ComponentName owner = getOwnerComponent(userId);
if (owner != null) {
- mDeviceAdminServiceController.startServiceForOwner(
+ mDeviceAdminServiceController.startServiceForAdmin(
owner.getPackageName(), userId, actionForLog);
invalidateBinderCaches();
}
}
- private void stopOwnerService(int userId, String actionForLog) {
- mDeviceAdminServiceController.stopServiceForOwner(userId, actionForLog);
- }
-
private void cleanUpOldUsers() {
// This is needed in case the broadcast {@link Intent.ACTION_USER_REMOVED} was not handled
// before reboot
@@ -6985,9 +7014,23 @@
}
mLockSettingsInternal.refreshStrongAuthTimeout(parentId);
+ clearManagedSubscriptionsPolicy();
+
Slogf.i(LOG_TAG, "Cleaning up device-wide policies done.");
}
+ private void clearManagedSubscriptionsPolicy() {
+ unregisterOnSubscriptionsChangedListener();
+
+ SubscriptionManager subscriptionManager = mContext.getSystemService(
+ SubscriptionManager.class);
+ //Iterate over all the subscriptions and remove association with any user.
+ int[] subscriptionIds = subscriptionManager.getActiveSubscriptionIdList(false);
+ for (int subId : subscriptionIds) {
+ subscriptionManager.setSubscriptionUserHandle(subId, null);
+ }
+ }
+
/**
* @param factoryReset null: legacy behaviour, false: attempt to remove user, true: attempt to
* factory reset
@@ -8608,7 +8651,7 @@
// TODO Send to system too?
sendOwnerChangedBroadcast(DevicePolicyManager.ACTION_DEVICE_OWNER_CHANGED, userId);
});
- mDeviceAdminServiceController.startServiceForOwner(
+ mDeviceAdminServiceController.startServiceForAdmin(
admin.getPackageName(), userId, "set-device-owner");
Slogf.i(LOG_TAG, "Device owner set: " + admin + " on user " + userId);
@@ -8973,7 +9016,11 @@
}
private void clearDeviceOwnerLocked(ActiveAdmin admin, int userId) {
- mDeviceAdminServiceController.stopServiceForOwner(userId, "clear-device-owner");
+ String ownersPackage = mOwners.getDeviceOwnerPackageName();
+ if (ownersPackage != null) {
+ mDeviceAdminServiceController.stopServiceForAdmin(
+ ownersPackage, userId, "clear-device-owner");
+ }
if (admin != null) {
admin.disableCamera = false;
@@ -9085,7 +9132,7 @@
sendOwnerChangedBroadcast(DevicePolicyManager.ACTION_PROFILE_OWNER_CHANGED,
userHandle);
});
- mDeviceAdminServiceController.startServiceForOwner(
+ mDeviceAdminServiceController.startServiceForAdmin(
who.getPackageName(), userHandle, "set-profile-owner");
return true;
}
@@ -9134,7 +9181,11 @@
}
public void clearProfileOwnerLocked(ActiveAdmin admin, int userId) {
- mDeviceAdminServiceController.stopServiceForOwner(userId, "clear-profile-owner");
+ String ownersPackage = mOwners.getProfileOwnerPackage(userId);
+ if (ownersPackage != null) {
+ mDeviceAdminServiceController.stopServiceForAdmin(
+ ownersPackage, userId, "clear-profile-owner");
+ }
if (admin != null) {
admin.disableCamera = false;
@@ -10072,6 +10123,10 @@
mStateCache.dump(pw);
pw.println();
}
+
+ synchronized (mSubscriptionsChangedListenerLock) {
+ pw.println("Subscription changed listener : " + mSubscriptionsChangedListener);
+ }
mHandler.post(() -> handleDump(pw));
dumpResources(pw);
}
@@ -12644,9 +12699,10 @@
admin,
caller.getUserId());
} else {
- LockTaskPolicy currentPolicy = mDevicePolicyEngine.getLocalPolicy(
+ LockTaskPolicy currentPolicy = mDevicePolicyEngine.getLocalPolicySetByAdmin(
PolicyDefinition.LOCK_TASK,
- caller.getUserId()).getPoliciesSetByAdmins().get(admin);
+ admin,
+ caller.getUserId());
LockTaskPolicy policy;
if (currentPolicy == null) {
policy = new LockTaskPolicy(Set.of(packages));
@@ -12689,8 +12745,8 @@
}
if (isCoexistenceEnabled(caller)) {
- LockTaskPolicy policy = mDevicePolicyEngine.getLocalPolicy(
- PolicyDefinition.LOCK_TASK, userHandle).getCurrentResolvedPolicy();
+ LockTaskPolicy policy = mDevicePolicyEngine.getResolvedPolicy(
+ PolicyDefinition.LOCK_TASK, userHandle);
if (policy == null) {
return new String[0];
} else {
@@ -12719,8 +12775,8 @@
// TODO(b/260560985): This is not the right check, as the flag could be enabled but there
// could be an admin that hasn't targeted U.
if (isCoexistenceFlagEnabled()) {
- LockTaskPolicy policy = mDevicePolicyEngine.getLocalPolicy(
- PolicyDefinition.LOCK_TASK, userId).getCurrentResolvedPolicy();
+ LockTaskPolicy policy = mDevicePolicyEngine.getResolvedPolicy(
+ PolicyDefinition.LOCK_TASK, userId);
if (policy == null) {
return false;
}
@@ -12754,9 +12810,10 @@
}
if (isCoexistenceEnabled(caller)) {
EnforcingAdmin admin = EnforcingAdmin.createEnterpriseEnforcingAdmin(who, userHandle);
- LockTaskPolicy currentPolicy = mDevicePolicyEngine.getLocalPolicy(
+ LockTaskPolicy currentPolicy = mDevicePolicyEngine.getLocalPolicySetByAdmin(
PolicyDefinition.LOCK_TASK,
- caller.getUserId()).getPoliciesSetByAdmins().get(admin);
+ admin,
+ caller.getUserId());
if (currentPolicy == null) {
throw new IllegalArgumentException("Can't set a lock task flags without setting "
+ "lock task packages first.");
@@ -12793,8 +12850,8 @@
}
if (isCoexistenceEnabled(caller)) {
- LockTaskPolicy policy = mDevicePolicyEngine.getLocalPolicy(
- PolicyDefinition.LOCK_TASK, userHandle).getCurrentResolvedPolicy();
+ LockTaskPolicy policy = mDevicePolicyEngine.getResolvedPolicy(
+ PolicyDefinition.LOCK_TASK, userHandle);
if (policy == null) {
// We default on the power button menu, in order to be consistent with pre-P
// behaviour.
@@ -16751,7 +16808,7 @@
mOwners.transferProfileOwner(target, profileOwnerUserId);
Slogf.i(LOG_TAG, "Profile owner set: " + target + " on user " + profileOwnerUserId);
mOwners.writeProfileOwner(profileOwnerUserId);
- mDeviceAdminServiceController.startServiceForOwner(
+ mDeviceAdminServiceController.startServiceForAdmin(
target.getPackageName(), profileOwnerUserId, "transfer-profile-owner");
}
@@ -16763,7 +16820,7 @@
mOwners.transferDeviceOwnership(target);
Slogf.i(LOG_TAG, "Device owner set: " + target + " on user " + userId);
mOwners.writeDeviceOwner();
- mDeviceAdminServiceController.startServiceForOwner(
+ mDeviceAdminServiceController.startServiceForAdmin(
target.getPackageName(), userId, "transfer-device-owner");
}
@@ -17672,12 +17729,22 @@
checkCanExecuteOrThrowUnsafe(
DevicePolicyManager.OPERATION_SET_USER_CONTROL_DISABLED_PACKAGES);
- synchronized (getLockObject()) {
- ActiveAdmin owner = getDeviceOrProfileOwnerAdminLocked(caller.getUserId());
- if (!Objects.equals(owner.protectedPackages, packages)) {
- owner.protectedPackages = packages.isEmpty() ? null : packages;
- saveSettingsLocked(caller.getUserId());
- pushUserControlDisabledPackagesLocked(caller.getUserId());
+ if (isCoexistenceEnabled(caller)) {
+ Binder.withCleanCallingIdentity(() -> {
+ if (packages.isEmpty()) {
+ removeUserControlDisabledPackages(caller);
+ } else {
+ addUserControlDisabledPackages(caller, new HashSet<>(packages));
+ }
+ });
+ } else {
+ synchronized (getLockObject()) {
+ ActiveAdmin owner = getDeviceOrProfileOwnerAdminLocked(caller.getUserId());
+ if (!Objects.equals(owner.protectedPackages, packages)) {
+ owner.protectedPackages = packages.isEmpty() ? null : packages;
+ saveSettingsLocked(caller.getUserId());
+ pushUserControlDisabledPackagesLocked(caller.getUserId());
+ }
}
}
@@ -17688,6 +17755,52 @@
.write();
}
+ private void addUserControlDisabledPackages(CallerIdentity caller, Set<String> packages) {
+ if (isCallerDeviceOwner(caller)) {
+ mDevicePolicyEngine.setGlobalPolicy(
+ PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
+ // TODO(b/260573124): add correct enforcing admin when permission changes are
+ // merged.
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(
+ caller.getComponentName(), caller.getUserId()),
+ packages);
+ } else {
+ mDevicePolicyEngine.setLocalPolicy(
+ PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
+ // TODO(b/260573124): add correct enforcing admin when permission changes are
+ // merged.
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(
+ caller.getComponentName(), caller.getUserId()),
+ packages,
+ caller.getUserId());
+ }
+ }
+
+ private void removeUserControlDisabledPackages(CallerIdentity caller) {
+ if (isCallerDeviceOwner(caller)) {
+ mDevicePolicyEngine.removeGlobalPolicy(
+ PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
+ // TODO(b/260573124): add correct enforcing admin when permission changes are
+ // merged.
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(
+ caller.getComponentName(), caller.getUserId()));
+ } else {
+ mDevicePolicyEngine.removeLocalPolicy(
+ PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
+ // TODO(b/260573124): add correct enforcing admin when permission changes are
+ // merged.
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(
+ caller.getComponentName(), caller.getUserId()),
+ caller.getUserId());
+ }
+ }
+
+ private boolean isCallerDeviceOwner(CallerIdentity caller) {
+ synchronized (getLockObject()) {
+ return getDeviceOwnerUserIdUncheckedLocked() == caller.getUserId();
+ }
+ }
+
@Override
public List<String> getUserControlDisabledPackages(ComponentName who) {
Objects.requireNonNull(who, "ComponentName is null");
@@ -17696,10 +17809,19 @@
Preconditions.checkCallAuthorization(isDefaultDeviceOwner(caller) || isProfileOwner(caller)
|| isFinancedDeviceOwner(caller));
- synchronized (getLockObject()) {
- ActiveAdmin deviceOwner = getDeviceOrProfileOwnerAdminLocked(caller.getUserId());
- return deviceOwner.protectedPackages != null
- ? deviceOwner.protectedPackages : Collections.emptyList();
+ if (isCoexistenceEnabled(caller)) {
+ // This retrieves the policy for the calling user only, DOs for example can't know
+ // what's enforced globally or on another user.
+ Set<String> packages = mDevicePolicyEngine.getResolvedPolicy(
+ PolicyDefinition.USER_CONTROLLED_DISABLED_PACKAGES,
+ caller.getUserId());
+ return packages == null ? Collections.emptyList() : packages.stream().toList();
+ } else {
+ synchronized (getLockObject()) {
+ ActiveAdmin deviceOwner = getDeviceOrProfileOwnerAdminLocked(caller.getUserId());
+ return deviceOwner.protectedPackages != null
+ ? deviceOwner.protectedPackages : Collections.emptyList();
+ }
}
}
@@ -19869,4 +19991,139 @@
HEADLESS_FLAG,
DEFAULT_HEADLESS_FLAG);
}
+
+ @Override
+ public ManagedSubscriptionsPolicy getManagedSubscriptionsPolicy() {
+ synchronized (getLockObject()) {
+ ActiveAdmin admin = getProfileOwnerOfOrganizationOwnedDeviceLocked();
+ if (admin != null && admin.mManagedSubscriptionsPolicy != null) {
+ return admin.mManagedSubscriptionsPolicy;
+ }
+ }
+ return new ManagedSubscriptionsPolicy(
+ ManagedSubscriptionsPolicy.TYPE_ALL_PERSONAL_SUBSCRIPTIONS);
+ }
+
+ @Override
+ public void setManagedSubscriptionsPolicy(ManagedSubscriptionsPolicy policy) {
+ CallerIdentity caller = getCallerIdentity();
+ Preconditions.checkCallAuthorization(isProfileOwnerOfOrganizationOwnedDevice(caller),
+ "This policy can only be set by a profile owner on an organization-owned device.");
+
+ synchronized (getLockObject()) {
+ final ActiveAdmin admin = getProfileOwnerLocked(caller.getUserId());
+ if (hasUserSetupCompleted(UserHandle.USER_SYSTEM) && !isAdminTestOnlyLocked(
+ admin.info.getComponent(), caller.getUserId())) {
+ throw new IllegalStateException("Not allowed to apply this policy after setup");
+ }
+ boolean changed = false;
+ if (!Objects.equals(policy, admin.mManagedSubscriptionsPolicy)) {
+ admin.mManagedSubscriptionsPolicy = policy;
+ changed = true;
+ }
+ if (changed) {
+ saveSettingsLocked(caller.getUserId());
+ } else {
+ return;
+ }
+ }
+
+ applyManagedSubscriptionsPolicyIfRequired();
+
+ int policyType = getManagedSubscriptionsPolicy().getPolicyType();
+ if (policyType == ManagedSubscriptionsPolicy.TYPE_ALL_MANAGED_SUBSCRIPTIONS) {
+ final long id = mInjector.binderClearCallingIdentity();
+ try {
+ int parentUserId = getProfileParentId(caller.getUserId());
+ installOemDefaultDialerAndMessagesApp(parentUserId, caller.getUserId());
+ } finally {
+ mInjector.binderRestoreCallingIdentity(id);
+ }
+ }
+ }
+
+ private void installOemDefaultDialerAndMessagesApp(int sourceUserId, int targetUserId) {
+ try {
+ UserHandle sourceUserHandle = UserHandle.of(sourceUserId);
+ TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
+ String dialerAppPackage = telecomManager.getDefaultDialerPackage(
+ sourceUserHandle);
+ String messagesAppPackage = SmsApplication.getDefaultSmsApplicationAsUser(mContext,
+ true, sourceUserHandle).getPackageName();
+ if (dialerAppPackage != null) {
+ mIPackageManager.installExistingPackageAsUser(dialerAppPackage, targetUserId,
+ PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS,
+ PackageManager.INSTALL_REASON_POLICY, null);
+ } else {
+ Slogf.w(LOG_TAG, "Couldn't install dialer app, dialer app package is null");
+ }
+
+ if (messagesAppPackage != null) {
+ mIPackageManager.installExistingPackageAsUser(messagesAppPackage, targetUserId,
+ PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS,
+ PackageManager.INSTALL_REASON_POLICY, null);
+ } else {
+ Slogf.w(LOG_TAG, "Couldn't install messages app, messages app package is null");
+ }
+ } catch (RemoteException re) {
+ // shouldn't happen
+ Slogf.wtf(LOG_TAG, "Failed to install dialer/messages app", re);
+ }
+ }
+
+ private void registerListenerToAssignSubscriptionsToUser(int userId) {
+ synchronized (mSubscriptionsChangedListenerLock) {
+ if (mSubscriptionsChangedListener != null) {
+ return;
+ }
+ SubscriptionManager subscriptionManager = mContext.getSystemService(
+ SubscriptionManager.class);
+ // Listener to assign all current and future subs to managed profile.
+ mSubscriptionsChangedListener = new SubscriptionManager.OnSubscriptionsChangedListener(
+ mHandler.getLooper()) {
+ @Override
+ public void onSubscriptionsChanged() {
+ final long id = mInjector.binderClearCallingIdentity();
+ try {
+ int[] subscriptionIds = subscriptionManager.getActiveSubscriptionIdList(
+ false);
+ for (int subId : subscriptionIds) {
+ UserHandle associatedUserHandle =
+ subscriptionManager.getSubscriptionUserHandle(subId);
+ if (associatedUserHandle == null
+ || associatedUserHandle.getIdentifier() != userId) {
+ subscriptionManager.setSubscriptionUserHandle(subId,
+ UserHandle.of(userId));
+ }
+ }
+ } finally {
+ mInjector.binderRestoreCallingIdentity(id);
+ }
+ }
+ };
+
+ final long id = mInjector.binderClearCallingIdentity();
+ try {
+ // When listener is added onSubscriptionsChanged gets called immediately for once
+ // (even if subscriptions are not changed) and later on when subscriptions changes.
+ subscriptionManager.addOnSubscriptionsChangedListener(
+ mSubscriptionsChangedListener.getHandlerExecutor(),
+ mSubscriptionsChangedListener);
+ } finally {
+ mInjector.binderRestoreCallingIdentity(id);
+ }
+ }
+ }
+
+ private void unregisterOnSubscriptionsChangedListener() {
+ synchronized (mSubscriptionsChangedListenerLock) {
+ if (mSubscriptionsChangedListener != null) {
+ SubscriptionManager subscriptionManager = mContext.getSystemService(
+ SubscriptionManager.class);
+ subscriptionManager.removeOnSubscriptionsChangedListener(
+ mSubscriptionsChangedListener);
+ mSubscriptionsChangedListener = null;
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java b/services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java
index 00e48eb..da895f4 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java
@@ -227,4 +227,11 @@
return new EnforcingAdmin(packageName, componentName, authorities, userId);
}
}
+
+ @Override
+ public String toString() {
+ return "EnforcingAdmin { mPackageName= " + mPackageName + ", mComponentName= "
+ + mComponentName + ", mAuthorities= " + mAuthorities + ", mUserId= "
+ + mUserId + ", mIsRoleAuthority= " + mIsRoleAuthority + " }";
+ }
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/IntegerUnion.java b/services/devicepolicy/java/com/android/server/devicepolicy/IntegerUnion.java
index 00bc261..a051a2b 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/IntegerUnion.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/IntegerUnion.java
@@ -36,4 +36,9 @@
}
return unionOfPolicies;
}
+
+ @Override
+ public String toString() {
+ return "IntegerUnion {}";
+ }
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/MostRestrictive.java b/services/devicepolicy/java/com/android/server/devicepolicy/MostRestrictive.java
index 9a24dcf..edb3d2e 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/MostRestrictive.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/MostRestrictive.java
@@ -44,4 +44,9 @@
Map.Entry<EnforcingAdmin, V> policy = adminPolicies.entrySet().stream().findFirst().get();
return policy.getValue();
}
+
+ @Override
+ public String toString() {
+ return "MostRestrictive { mMostToLeastRestrictive= " + mMostToLeastRestrictive + " }";
+ }
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
index c684af3..cfb3db0 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
@@ -33,6 +33,7 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
final class PolicyDefinition<V> {
private static final int POLICY_FLAG_NONE = 0;
@@ -98,10 +99,18 @@
PolicyEnforcerCallbacks.setLockTask(value, context, userId),
new LockTaskPolicy.LockTaskPolicySerializer());
- private static Map<String, PolicyDefinition<?>> sPolicyDefinitions = Map.of(
+ static PolicyDefinition<Set<String>> USER_CONTROLLED_DISABLED_PACKAGES = new PolicyDefinition<>(
+ DevicePolicyManager.USER_CONTROL_DISABLED_PACKAGES,
+ new SetUnion<>(),
+ (Set<String> value, Context context, Integer userId, Bundle args) ->
+ PolicyEnforcerCallbacks.setUserControlDisabledPackages(value, userId),
+ new SetPolicySerializer<>());
+
+ private static final Map<String, PolicyDefinition<?>> sPolicyDefinitions = Map.of(
DevicePolicyManager.AUTO_TIMEZONE_POLICY, AUTO_TIMEZONE,
DevicePolicyManager.PERMISSION_GRANT_POLICY_KEY, PERMISSION_GRANT_NO_ARGS,
- DevicePolicyManager.LOCK_TASK_POLICY, LOCK_TASK
+ DevicePolicyManager.LOCK_TASK_POLICY, LOCK_TASK,
+ DevicePolicyManager.USER_CONTROL_DISABLED_PACKAGES, USER_CONTROLLED_DISABLED_PACKAGES
);
@@ -261,4 +270,11 @@
V readPolicyValueFromXml(TypedXmlPullParser parser, String attributeName) {
return mPolicySerializer.readFromXml(parser, attributeName);
}
+
+ @Override
+ public String toString() {
+ return "PolicyDefinition { mPolicyKey= " + mPolicyKey + ", mPolicyDefinitionKey= "
+ + mPolicyDefinitionKey + ", mResolutionMechanism= " + mResolutionMechanism
+ + ", mCallbackArgs= " + mCallbackArgs + ", mPolicyFlags= " + mPolicyFlags + " }";
+ }
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
index c745b31..5664d2b 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
@@ -22,6 +22,7 @@
import android.app.admin.PolicyUpdatesReceiver;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManagerInternal;
import android.os.Binder;
import android.os.Bundle;
import android.os.UserHandle;
@@ -29,11 +30,13 @@
import android.permission.PermissionControllerManager;
import android.provider.Settings;
+import com.android.server.LocalServices;
import com.android.server.utils.Slogf;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
+import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
@@ -137,4 +140,14 @@
return mValue.get();
}
}
+
+ static boolean setUserControlDisabledPackages(
+ @Nullable Set<String> packages, int userId) {
+ Binder.withCleanCallingIdentity(() ->
+ LocalServices.getService(PackageManagerInternal.class)
+ .setOwnerProtectedPackages(
+ userId,
+ packages == null ? null : packages.stream().toList()));
+ return true;
+ }
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyState.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyState.java
index ffde5f8..db0a623 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyState.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyState.java
@@ -62,12 +62,32 @@
/**
* Returns {@code true} if the resolved policy has changed, {@code false} otherwise.
*/
- boolean setPolicy(@NonNull EnforcingAdmin admin, @NonNull V value) {
- mPoliciesSetByAdmins.put(Objects.requireNonNull(admin), Objects.requireNonNull(value));
+ boolean addPolicy(@NonNull EnforcingAdmin admin, @NonNull V policy) {
+ mPoliciesSetByAdmins.put(Objects.requireNonNull(admin), Objects.requireNonNull(policy));
return resolvePolicy();
}
+ /**
+ * Takes into account global policies set by the admin when resolving the policy, this is only
+ * relevant to local policies that can be applied globally as well.
+ *
+ * <p> Note that local policies set by an admin takes precedence over global policies set by the
+ * same admin.
+ *
+ * Returns {@code true} if the resolved policy has changed, {@code false} otherwise.
+ */
+ boolean addPolicy(
+ @NonNull EnforcingAdmin admin, @NonNull V policy,
+ LinkedHashMap<EnforcingAdmin, V> globalPoliciesSetByAdmins) {
+ mPoliciesSetByAdmins.put(Objects.requireNonNull(admin), Objects.requireNonNull(policy));
+
+ return resolvePolicy(globalPoliciesSetByAdmins);
+ }
+
+ /**
+ * Returns {@code true} if the resolved policy has changed, {@code false} otherwise.
+ */
boolean removePolicy(@NonNull EnforcingAdmin admin) {
Objects.requireNonNull(admin);
@@ -78,8 +98,52 @@
return resolvePolicy();
}
+ /**
+ * Takes into account global policies set by the admin when resolving the policy, this is only
+ * relevant to local policies that can be applied globally as well.
+ *
+ * <p> Note that local policies set by an admin takes precedence over global policies set by the
+ * same admin.
+ *
+ * Returns {@code true} if the resolved policy has changed, {@code false} otherwise.
+ */
+ boolean removePolicy(
+ @NonNull EnforcingAdmin admin,
+ LinkedHashMap<EnforcingAdmin, V> globalPoliciesSetByAdmins) {
+ Objects.requireNonNull(admin);
+
+ if (mPoliciesSetByAdmins.remove(admin) == null) {
+ return false;
+ }
+
+ return resolvePolicy(globalPoliciesSetByAdmins);
+ }
+
+ /**
+ * Takes into account global policies set by the admin when resolving the policy, this is only
+ * relevant to local policies that can be applied globally as well.
+ *
+ * <p> Note that local policies set by an admin takes precedence over global policies set by the
+ * same admin.
+ *
+ * Returns {@code true} if the resolved policy has changed, {@code false} otherwise.
+ */
+ boolean resolvePolicy(LinkedHashMap<EnforcingAdmin, V> globalPoliciesSetByAdmins) {
+ // Add global policies first then override with local policies for the same admin.
+ LinkedHashMap<EnforcingAdmin, V> mergedPolicies =
+ new LinkedHashMap<>(globalPoliciesSetByAdmins);
+ mergedPolicies.putAll(mPoliciesSetByAdmins);
+
+ V resolvedPolicy = mPolicyDefinition.resolvePolicy(mergedPolicies);
+ boolean policyChanged = !Objects.equals(resolvedPolicy, mCurrentResolvedPolicy);
+ mCurrentResolvedPolicy = resolvedPolicy;
+
+ return policyChanged;
+ }
+
+ @NonNull
LinkedHashMap<EnforcingAdmin, V> getPoliciesSetByAdmins() {
- return mPoliciesSetByAdmins;
+ return new LinkedHashMap<>(mPoliciesSetByAdmins);
}
private boolean resolvePolicy() {
@@ -95,6 +159,13 @@
return mCurrentResolvedPolicy;
}
+ @Override
+ public String toString() {
+ return "PolicyState { mPolicyDefinition= " + mPolicyDefinition + ", mPoliciesSetByAdmins= "
+ + mPoliciesSetByAdmins + ", mCurrentResolvedPolicy= " + mCurrentResolvedPolicy
+ + " }";
+ }
+
void saveToXml(TypedXmlSerializer serializer) throws IOException {
mPolicyDefinition.saveToXml(serializer);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/SetPolicySerializer.java b/services/devicepolicy/java/com/android/server/devicepolicy/SetPolicySerializer.java
new file mode 100644
index 0000000..736627b
--- /dev/null
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/SetPolicySerializer.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.devicepolicy;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+
+import com.android.modules.utils.TypedXmlPullParser;
+import com.android.modules.utils.TypedXmlSerializer;
+
+import java.io.IOException;
+import java.util.Objects;
+import java.util.Set;
+
+// TODO(scottjonathan): Replace with actual implementation
+final class SetPolicySerializer<V> extends PolicySerializer<Set<V>> {
+
+ @Override
+ void saveToXml(TypedXmlSerializer serializer, String attributeName, @NonNull Set<V> value)
+ throws IOException {
+ Objects.requireNonNull(value);
+ }
+
+ @Nullable
+ @Override
+ Set<V> readFromXml(TypedXmlPullParser parser, String attributeName) {
+ return null;
+ }
+}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/SetUnion.java b/services/devicepolicy/java/com/android/server/devicepolicy/SetUnion.java
index 8a932c3..cf26983 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/SetUnion.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/SetUnion.java
@@ -37,4 +37,9 @@
}
return unionOfPolicies;
}
+
+ @Override
+ public String toString() {
+ return "SetUnion {}";
+ }
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/TopPriority.java b/services/devicepolicy/java/com/android/server/devicepolicy/TopPriority.java
index 4467b22..571cf64 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/TopPriority.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/TopPriority.java
@@ -49,4 +49,10 @@
Map.Entry<EnforcingAdmin, V> policy = adminPolicies.entrySet().stream().findFirst().get();
return policy.getValue();
}
+
+ @Override
+ public String toString() {
+ return "TopPriority { mHighestToLowestPriorityAuthorities= "
+ + mHighestToLowestPriorityAuthorities + " }";
+ }
}
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 5b9460a..5ebf6ce 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -1250,7 +1250,7 @@
// DexUseManagerLocal needs to be loaded after PackageManagerLocal has been registered, but
// before PackageManagerService starts processing binder calls to notifyDexLoad.
LocalManagerRegistry.addManager(
- DexUseManagerLocal.class, DexUseManagerLocal.createInstance());
+ DexUseManagerLocal.class, DexUseManagerLocal.createInstance(mSystemContext));
t.traceEnd();
if (!mRuntimeRestart && !isFirstBootOrUpgrade()) {
diff --git a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
index dd36c38..acd0a3c 100644
--- a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
@@ -241,6 +241,9 @@
): PermissionInfo =
@Suppress("DEPRECATION")
PermissionInfo(permissionInfo).apply {
+ // All Permission objects are registered so the PermissionInfo generated for it should
+ // also have FLAG_INSTALLED.
+ this.flags = this.flags or PermissionInfo.FLAG_INSTALLED
if (!flags.hasBits(PackageManager.GET_META_DATA)) {
metaData = null
}
@@ -322,6 +325,21 @@
return permission.getGidsForUser(userId)
}
+ override fun getInstalledPermissions(packageName: String): Set<String> {
+ requireNotNull(packageName) { "packageName cannot be null" }
+
+ val permissions = service.getState {
+ with(policy) { getPermissions() }
+ }
+ return permissions.mapNotNullIndexedToSet { _, _, permission ->
+ if (permission.packageName == packageName) {
+ permission.name
+ } else {
+ null
+ }
+ }
+ }
+
override fun addPermission(permissionInfo: PermissionInfo, async: Boolean): Boolean {
val permissionName = permissionInfo.name
requireNotNull(permissionName) { "permissionName cannot be null" }
diff --git a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt b/services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt
index 73fc0b2..d0833bd 100644
--- a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt
@@ -38,6 +38,8 @@
import com.android.server.permission.access.util.andInv
import com.android.server.permission.access.util.hasAnyBit
import com.android.server.permission.access.util.hasBits
+import com.android.server.permission.access.util.isInternal
+import com.android.server.permission.access.util.isRuntime
import com.android.server.pm.KnownPackages
import com.android.server.pm.parsing.PackageInfoUtils
import com.android.server.pm.permission.CompatibilityPermissionInfo
@@ -131,8 +133,6 @@
volumeUuid: String?,
isSystemUpdated: Boolean
) {
- // TODO: STOPSHIP: Either make addPermissionGroups() favor system packages
- // like addPermissions(), or sort system packages before non-system packages for this loop.
val changedPermissionNames = IndexedSet<String>()
newState.systemState.packageStates.forEach { (_, packageState) ->
val androidPackage = packageState.androidPackage
@@ -328,12 +328,33 @@
val oldPermissionGroup = newState.systemState.permissionGroups[permissionGroupName]
if (oldPermissionGroup != null &&
newPermissionGroup.packageName != oldPermissionGroup.packageName) {
+ val newPackageName = newPermissionGroup.packageName
+ val oldPackageName = oldPermissionGroup.packageName
+ // Different from the old implementation, which defines permission group on
+ // a first-come-first-serve basis, and relies on system apps being scanned before
+ // non-system apps, we now allow system apps to override permission groups similar
+ // to permissions so that we no longer need to rely on the scan order.
+ if (!packageState.isSystem) {
+ Log.w(
+ LOG_TAG, "Ignoring permission group $permissionGroupName declared in" +
+ " package $newPackageName: already declared in another" +
+ " package $oldPackageName"
+ )
+ return@forEachIndexed
+ }
+ if (newState.systemState.packageStates[oldPackageName]?.isSystem == true) {
+ Log.w(
+ LOG_TAG, "Ignoring permission group $permissionGroupName declared in" +
+ " system package $newPackageName: already declared in another" +
+ " system package $oldPackageName"
+ )
+ return@forEachIndexed
+ }
Log.w(
- LOG_TAG, "Ignoring permission group $permissionGroupName declared in package" +
- " ${newPermissionGroup.packageName}: already declared in another package" +
- " ${oldPermissionGroup.packageName}"
+ LOG_TAG, "Overriding permission group $permissionGroupName with" +
+ " new declaration in system package $newPackageName: originally" +
+ " declared in another package $oldPackageName"
)
- return@forEachIndexed
}
newState.systemState.permissionGroups[permissionGroupName] = newPermissionGroup
}
@@ -421,7 +442,42 @@
return@forEachIndexed
}
} else {
- // TODO: STOPSHIP: Clear permission state on type or group change.
+ if (oldPermission != null) {
+ val isPermissionGroupChanged = newPermissionInfo.isRuntime &&
+ newPermissionInfo.group != null &&
+ newPermissionInfo.group != oldPermission.groupName
+ val isPermissionTypeChanged = oldPermission.type != Permission.TYPE_CONFIG && (
+ (newPermissionInfo.isRuntime && !oldPermission.isRuntime) ||
+ (newPermissionInfo.isInternal && !oldPermission.isInternal)
+ )
+ if (isPermissionGroupChanged || isPermissionTypeChanged) {
+ systemState.userIds.forEachIndexed { _, userId ->
+ systemState.appIds.forEachKeyIndexed { _, appId ->
+ if (isPermissionGroupChanged) {
+ // We might auto-grant permissions if any permission of
+ // the group is already granted. Hence if the group of
+ // a granted permission changes we need to revoke it to
+ // avoid having permissions of the new group auto-granted.
+ Log.w(
+ LOG_TAG, "Revoking runtime permission $permissionName for" +
+ " appId $appId and userId $userId as the permission" +
+ " group changed from ${oldPermission.groupName}" +
+ " to ${newPermissionInfo.group}"
+ )
+ }
+ if (isPermissionTypeChanged) {
+ Log.w(
+ LOG_TAG, "Revoking permission $permissionName for" +
+ " appId $appId and userId $userId as the permission" +
+ " type changed."
+ )
+ }
+ setPermissionFlags(appId, userId, permissionName, 0)
+ }
+ }
+ }
+ }
+
// Different from the old implementation, which doesn't update the permission
// definition upon app update, but does update it on the next boot, we now
// consistently update the permission definition upon app update.
diff --git a/services/permission/java/com/android/server/permission/access/util/PermissionInfoExtensions.kt b/services/permission/java/com/android/server/permission/access/util/PermissionInfoExtensions.kt
new file mode 100644
index 0000000..e95bc02
--- /dev/null
+++ b/services/permission/java/com/android/server/permission/access/util/PermissionInfoExtensions.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.permission.access.util
+
+import android.content.pm.PermissionInfo
+
+inline val PermissionInfo.isRuntime: Boolean
+ get() = protection == PermissionInfo.PROTECTION_DANGEROUS
+
+inline val PermissionInfo.isInternal: Boolean
+ get() = protection == PermissionInfo.PROTECTION_INTERNAL
diff --git a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
index 16a9845..898658e 100644
--- a/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
+++ b/services/tests/InputMethodSystemServerTests/src/com/android/inputmethodservice/InputMethodServiceTest.java
@@ -24,6 +24,7 @@
import android.content.Context;
import android.content.res.Configuration;
import android.os.RemoteException;
+import android.provider.Settings;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject2;
@@ -31,7 +32,6 @@
import android.util.Log;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
-import android.widget.EditText;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.MediumTest;
@@ -40,6 +40,7 @@
import com.android.apps.inputmethod.simpleime.ims.InputMethodServiceWrapper;
import com.android.apps.inputmethod.simpleime.testing.TestActivity;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -54,15 +55,19 @@
private static final String INPUT_METHOD_SERVICE_NAME = ".SimpleInputMethodService";
private static final String EDIT_TEXT_DESC = "Input box";
private static final long TIMEOUT_IN_SECONDS = 3;
+ private static final String ENABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD =
+ "settings put secure show_ime_with_hard_keyboard 1";
+ private static final String DISABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD =
+ "settings put secure show_ime_with_hard_keyboard 0";
- public Instrumentation mInstrumentation;
- public UiDevice mUiDevice;
- public Context mContext;
- public String mTargetPackageName;
- public TestActivity mActivity;
- public EditText mEditText;
- public InputMethodServiceWrapper mInputMethodService;
- public String mInputMethodId;
+ private Instrumentation mInstrumentation;
+ private UiDevice mUiDevice;
+ private Context mContext;
+ private String mTargetPackageName;
+ private TestActivity mActivity;
+ private InputMethodServiceWrapper mInputMethodService;
+ private String mInputMethodId;
+ private boolean mShowImeWithHardKeyboardEnabled;
@Before
public void setUp() throws Exception {
@@ -73,7 +78,9 @@
mInputMethodId = getInputMethodId();
prepareIme();
prepareEditor();
-
+ mInstrumentation.waitForIdleSync();
+ mUiDevice.freezeRotation();
+ mUiDevice.setOrientationNatural();
// Waits for input binding ready.
eventually(
() -> {
@@ -85,6 +92,28 @@
assertThat(mInputMethodService.getCurrentInputStarted()).isTrue();
assertThat(mInputMethodService.getCurrentInputViewStarted()).isFalse();
});
+ // Save the original value of show_ime_with_hard_keyboard in Settings.
+ mShowImeWithHardKeyboardEnabled = Settings.Secure.getInt(
+ mInputMethodService.getContentResolver(),
+ Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0) != 0;
+ // Disable showing Ime with hard keyboard because it is the precondition the for most test
+ // cases
+ if (mShowImeWithHardKeyboardEnabled) {
+ executeShellCommand(DISABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD);
+ }
+ mInputMethodService.getResources().getConfiguration().keyboard =
+ Configuration.KEYBOARD_NOKEYS;
+ mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
+ Configuration.HARDKEYBOARDHIDDEN_YES;
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ mUiDevice.unfreezeRotation();
+ executeShellCommand("ime disable " + mInputMethodId);
+ // Change back the original value of show_ime_with_hard_keyboard in Settings.
+ executeShellCommand(mShowImeWithHardKeyboardEnabled ? ENABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD
+ : DISABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD);
}
@Test
@@ -107,8 +136,6 @@
true /* inputViewStarted */);
// Triggers to hide IME via public API.
- // TODO(b/242838873): investigate why WIC#hide(ime()) does not work, likely related to
- // triggered from IME process.
verifyInputViewStatusOnMainSync(
() -> assertThat(mActivity.hideImeWithInputMethodManager(0 /* flags */)).isTrue(),
false /* inputViewStarted */);
@@ -145,6 +172,141 @@
false /* inputViewStarted */);
}
+ @Test
+ public void testOnEvaluateInputViewShown_showImeWithHardKeyboard() throws Exception {
+ executeShellCommand(ENABLE_SHOW_IME_WITH_HARD_KEYBOARD_CMD);
+ mInstrumentation.waitForIdleSync();
+
+ // Simulate connecting a hard keyboard
+ mInputMethodService.getResources().getConfiguration().keyboard =
+ Configuration.KEYBOARD_QWERTY;
+ mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
+ Configuration.HARDKEYBOARDHIDDEN_NO;
+
+ eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+ }
+
+ @Test
+ public void testOnEvaluateInputViewShown_disableShowImeWithHardKeyboard() {
+ mInputMethodService.getResources().getConfiguration().keyboard =
+ Configuration.KEYBOARD_QWERTY;
+ mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
+ Configuration.HARDKEYBOARDHIDDEN_NO;
+ eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isFalse());
+
+ mInputMethodService.getResources().getConfiguration().keyboard =
+ Configuration.KEYBOARD_NOKEYS;
+ eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+
+ mInputMethodService.getResources().getConfiguration().keyboard =
+ Configuration.KEYBOARD_QWERTY;
+ mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
+ Configuration.HARDKEYBOARDHIDDEN_YES;
+ eventually(() -> assertThat(mInputMethodService.onEvaluateInputViewShown()).isTrue());
+ }
+
+ @Test
+ public void testShowSoftInput_disableShowImeWithHardKeyboard() throws Exception {
+ // Simulate connecting a hard keyboard
+ mInputMethodService.getResources().getConfiguration().keyboard =
+ Configuration.KEYBOARD_QWERTY;
+ mInputMethodService.getResources().getConfiguration().hardKeyboardHidden =
+ Configuration.HARDKEYBOARDHIDDEN_NO;
+ // When InputMethodService#onEvaluateInputViewShown() returns false, the Ime should not be
+ // shown no matter what the show flag is.
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
+ false /* inputViewStarted */);
+ verifyInputViewStatusOnMainSync(
+ () -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
+ false /* inputViewStarted */);
+ }
+
+ @Test
+ public void testShowSoftInputExplicitly() throws Exception {
+ // When InputMethodService#onEvaluateInputViewShown() returns true and flag is EXPLICIT, the
+ // Ime should be shown.
+ verifyInputViewStatusOnMainSync(
+ () -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
+ true /* inputViewStarted */);
+ }
+
+ @Test
+ public void testShowSoftInputImplicitly() throws Exception {
+ // When InputMethodService#onEvaluateInputViewShown() returns true and flag is IMPLICIT, the
+ // Ime should be shown.
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
+ true /* inputViewStarted */);
+ }
+
+ @Test
+ public void testShowSoftInputImplicitly_fullScreenMode() throws Exception {
+ // When keyboard is off, InputMethodService#onEvaluateInputViewShown returns true, flag is
+ // IMPLICIT and InputMethodService#onEvaluateFullScreenMode returns true, the Ime should not
+ // be shown.
+ setOrientation(2);
+ eventually(() -> assertThat(mUiDevice.isNaturalOrientation()).isFalse());
+ // Wait for the TestActivity to be recreated
+ eventually(() ->
+ assertThat(TestActivity.getLastCreatedInstance()).isNotEqualTo(mActivity));
+ // Get the new TestActivity
+ mActivity = TestActivity.getLastCreatedInstance();
+ assertThat(mActivity).isNotNull();
+ InputMethodManager imm = mContext.getSystemService(InputMethodManager.class);
+ // Wait for the new EditText to be served by InputMethodManager
+ eventually(() ->
+ assertThat(imm.hasActiveInputConnection(mActivity.getEditText())).isTrue());
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
+ false /* inputViewStarted */);
+ }
+
+ @Test
+ public void testShowSoftInputImplicitly_withHardKeyboard() throws Exception {
+ mInputMethodService.getResources().getConfiguration().keyboard =
+ Configuration.KEYBOARD_QWERTY;
+ // When connecting to a hard keyboard and the flag is IMPLICIT, the Ime should not be shown.
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
+ false /* inputViewStarted */);
+ }
+
+ @Test
+ public void testConfigurationChanged_withKeyboardShownExplicitly() throws InterruptedException {
+ verifyInputViewStatusOnMainSync(
+ () -> assertThat(mActivity.showImeWithInputMethodManager(0 /* flags */)).isTrue(),
+ true /* inputViewStarted */);
+ // Simulate a fake configuration change to avoid triggering the recreation of TestActivity.
+ mInputMethodService.getResources().getConfiguration().orientation =
+ Configuration.ORIENTATION_LANDSCAPE;
+ verifyInputViewStatusOnMainSync(() -> mInputMethodService.onConfigurationChanged(
+ mInputMethodService.getResources().getConfiguration()),
+ true /* inputViewStarted */);
+ }
+
+ @Test
+ public void testConfigurationChanged_withKeyboardShownImplicitly() throws InterruptedException {
+ verifyInputViewStatusOnMainSync(() -> assertThat(
+ mActivity.showImeWithInputMethodManager(InputMethodManager.SHOW_IMPLICIT)).isTrue(),
+ true /* inputViewStarted */);
+ // Simulate a fake configuration change to avoid triggering the recreation of TestActivity.
+ mInputMethodService.getResources().getConfiguration().orientation =
+ Configuration.ORIENTATION_LANDSCAPE;
+ mInputMethodService.getResources().getConfiguration().keyboard =
+ Configuration.KEYBOARD_QWERTY;
+
+ // Normally, IMS#onFinishInputView will be called when finishing the input view by the user.
+ // But if IMS#hideWindow is called when receiving a new configuration change, we don't
+ // expect that it's user-driven to finish the lifecycle of input view with
+ // IMS#onFinishInputView, because the input view will be re-initialized according to the
+ // last mShowSoftRequested state. So in this case we treat the input view is still alive.
+ verifyInputViewStatusOnMainSync(() -> mInputMethodService.onConfigurationChanged(
+ mInputMethodService.getResources().getConfiguration()),
+ true /* inputViewStarted */);
+ assertThat(mInputMethodService.isInputViewShown()).isFalse();
+ }
+
private void verifyInputViewStatus(Runnable runnable, boolean inputViewStarted)
throws InterruptedException {
verifyInputViewStatusInternal(runnable, inputViewStarted, false /*runOnMainSync*/);
@@ -184,8 +346,6 @@
Log.i(TAG, "Set orientation right");
verifyFullscreenMode(() -> setOrientation(2), false /* orientationPortrait */);
-
- mUiDevice.unfreezeRotation();
}
private void setOrientation(int orientation) {
@@ -249,7 +409,6 @@
private void prepareEditor() {
mActivity = TestActivity.start(mInstrumentation);
- mEditText = mActivity.mEditText;
Log.i(TAG, "Finish preparing activity with editor.");
}
diff --git a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/Android.bp b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/Android.bp
index ef50476..8d0e0c4 100644
--- a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/Android.bp
+++ b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/Android.bp
@@ -58,5 +58,8 @@
srcs: [
"src/com/android/apps/inputmethod/simpleime/testing/*.java",
],
+ static_libs: [
+ "androidx.annotation_annotation",
+ ],
sdk_version: "current",
}
diff --git a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/AndroidManifest.xml b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/AndroidManifest.xml
index 802caf1..996322d 100644
--- a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/AndroidManifest.xml
+++ b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/AndroidManifest.xml
@@ -20,6 +20,8 @@
<uses-sdk android:targetSdkVersion="31" />
+ <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+
<application android:debuggable="true"
android:label="@string/app_name">
<service
diff --git a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java
index 0eec7e6..73b4501 100644
--- a/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java
+++ b/services/tests/InputMethodSystemServerTests/test-apps/SimpleTestIme/src/com/android/apps/inputmethod/simpleime/testing/TestActivity.java
@@ -31,6 +31,10 @@
import android.widget.EditText;
import android.widget.LinearLayout;
+import androidx.annotation.Nullable;
+
+import java.lang.ref.WeakReference;
+
/**
* A special activity for testing purpose.
*
@@ -40,6 +44,8 @@
*/
public class TestActivity extends Activity {
private static final String TAG = "TestActivity";
+ private static WeakReference<TestActivity> sLastCreatedInstance =
+ new WeakReference<>(null);
/**
* Start a new test activity with an editor and wait for it to begin running before returning.
@@ -57,10 +63,15 @@
return (TestActivity) instrumentation.startActivitySync(intent);
}
- public EditText mEditText;
+ private EditText mEditText;
+
+ public EditText getEditText() {
+ return mEditText;
+ }
@Override
protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
LinearLayout rootView = new LinearLayout(this);
mEditText = new EditText(this);
@@ -68,14 +79,19 @@
rootView.addView(mEditText, new LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT));
setContentView(rootView);
mEditText.requestFocus();
- super.onCreate(savedInstanceState);
+ sLastCreatedInstance = new WeakReference<>(this);
+ }
+
+ /** Get the last created TestActivity instance. */
+ public static @Nullable TestActivity getLastCreatedInstance() {
+ return sLastCreatedInstance.get();
}
/** Shows soft keyboard via InputMethodManager. */
public boolean showImeWithInputMethodManager(int flags) {
InputMethodManager imm = getSystemService(InputMethodManager.class);
boolean result = imm.showSoftInput(mEditText, flags);
- Log.i(TAG, "hideIme() via InputMethodManager, result=" + result);
+ Log.i(TAG, "showIme() via InputMethodManager, result=" + result);
return result;
}
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/AppsFilterImplTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/AppsFilterImplTest.java
index 7c4b9f8..5e5e7e3 100644
--- a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/AppsFilterImplTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/AppsFilterImplTest.java
@@ -865,7 +865,7 @@
.addOverlayable("overlayableName", actorName)
.hideAsParsed();
var overlay = pkg("com.some.package.overlay")
- .setOverlay(true)
+ .setResourceOverlay(true)
.setOverlayTarget(target.getPackageName())
.setOverlayTargetOverlayableName("overlayableName")
.hideAsParsed();
@@ -952,7 +952,7 @@
.addOverlayable("overlayableName", actorName)
.hideAsParsed();
var overlay = pkg("com.some.package.overlay")
- .setOverlay(true)
+ .setResourceOverlay(true)
.setOverlayTarget(target.getPackageName())
.setOverlayTargetOverlayableName("overlayableName")
.hideAsParsed();
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
index b20e1dd..6a1ccc5 100644
--- a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
@@ -1547,7 +1547,7 @@
: oldUserState.getOverlayPaths() == null)
&& userState.getCeDataInode() == oldUserState.getCeDataInode()
&& userState.getDistractionFlags() == oldUserState.getDistractionFlags()
- && userState.getFirstInstallTime() == oldUserState.getFirstInstallTime()
+ && userState.getFirstInstallTimeMillis() == oldUserState.getFirstInstallTimeMillis()
&& userState.getEnabledState() == oldUserState.getEnabledState()
&& userState.getHarmfulAppWarning().equals(oldUserState.getHarmfulAppWarning())
&& userState.getInstallReason() == oldUserState.getInstallReason()
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageParserTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageParserTest.java
index c6b7736..9895e7c 100644
--- a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageParserTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageParserTest.java
@@ -780,9 +780,11 @@
assertArrayEquals(a.getSplitFlags(), b.getSplitFlags());
PackageInfo aInfo = PackageInfoUtils.generate(a, new int[]{}, 0, 0, 0,
- Collections.emptySet(), PackageUserStateInternal.DEFAULT, 0, mockPkgSetting(a));
+ Collections.emptySet(), Collections.emptySet(), PackageUserStateInternal.DEFAULT, 0,
+ mockPkgSetting(a));
PackageInfo bInfo = PackageInfoUtils.generate(b, new int[]{}, 0, 0, 0,
- Collections.emptySet(), PackageUserStateInternal.DEFAULT, 0, mockPkgSetting(b));
+ Collections.emptySet(), Collections.emptySet(), PackageUserStateInternal.DEFAULT, 0,
+ mockPkgSetting(b));
assertApplicationInfoEqual(aInfo.applicationInfo, bInfo.applicationInfo);
assertEquals(ArrayUtils.size(a.getPermissions()), ArrayUtils.size(b.getPermissions()));
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
index f0e3f3f..8e1ca3c 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
@@ -243,7 +243,7 @@
AndroidPackage::isMultiArch,
AndroidPackage::isNativeLibraryRootRequiresIsa,
AndroidPackage::isOnBackInvokedCallbackEnabled,
- AndroidPackage::isOverlay,
+ AndroidPackage::isResourceOverlay,
AndroidPackage::isOverlayIsStatic,
AndroidPackage::isPartiallyDirectBootAware,
AndroidPackage::isPersistent,
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationManagerApiTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationManagerApiTest.kt
index c22bb53..86c4335 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationManagerApiTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/verify/domain/DomainVerificationManagerApiTest.kt
@@ -30,7 +30,6 @@
import android.util.ArraySet
import android.util.SparseArray
import com.android.server.pm.parsing.pkg.AndroidPackageInternal
-import com.android.server.pm.pkg.AndroidPackage
import com.android.server.pm.pkg.PackageStateInternal
import com.android.server.pm.pkg.PackageUserStateInternal
import com.android.server.pm.pkg.component.ParsedActivityImpl
@@ -301,7 +300,7 @@
whenever(isInstalled) { true }
whenever(isSuspended) { false }
whenever(isInstantApp) { false }
- whenever(firstInstallTime) {0L}
+ whenever(firstInstallTimeMillis) {0L}
}
})
val pkg2 = mockPkgState(PKG_TWO, UUID_TWO, listOf(DOMAIN_1, DOMAIN_2))
diff --git a/services/tests/RemoteProvisioningServiceTests/Android.bp b/services/tests/RemoteProvisioningServiceTests/Android.bp
new file mode 100644
index 0000000..075680a
--- /dev/null
+++ b/services/tests/RemoteProvisioningServiceTests/Android.bp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package {
+ // See: http://go/android-license-faq
+ default_applicable_licenses: ["frameworks_base_license"],
+}
+
+android_test {
+ name: "RemoteProvisioningServiceTests",
+ srcs: ["src/**/*.java"],
+ static_libs: [
+ "android.security.rkp_aidl-java",
+ "androidx.test.core",
+ "androidx.test.ext.junit",
+ "androidx.test.rules",
+ "mockito-target",
+ "service-rkp.impl",
+ "services.core",
+ "truth-prebuilt",
+ ],
+ test_suites: [
+ "device-tests",
+ ],
+ platform_apis: true,
+}
diff --git a/services/tests/RemoteProvisioningServiceTests/AndroidManifest.xml b/services/tests/RemoteProvisioningServiceTests/AndroidManifest.xml
new file mode 100644
index 0000000..7c12e189
--- /dev/null
+++ b/services/tests/RemoteProvisioningServiceTests/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.server.security.rkp.test">
+
+ <application android:testOnly="true">
+ <uses-library android:name="android.test.runner"/>
+ </application>
+
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+ android:targetPackage="com.android.server.security.rkp.test"
+ android:label="Remote Provisioning System Service Tests"/>
+</manifest>
diff --git a/services/tests/RemoteProvisioningServiceTests/AndroidTest.xml b/services/tests/RemoteProvisioningServiceTests/AndroidTest.xml
new file mode 100644
index 0000000..bf86fc8
--- /dev/null
+++ b/services/tests/RemoteProvisioningServiceTests/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Runs Frameworks RemoteProvisioningService Tests.">
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-suite-tag" value="apct-instrumentation" />
+ <option name="test-tag" value="RemoteProvisioningServiceTests" />
+
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+ <option name="cleanup-apks" value="true" />
+ <option name="install-arg" value="-t" />
+ <option name="test-file-name" value="RemoteProvisioningServiceTests.apk" />
+ </target_preparer>
+
+ <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+ <option name="package" value="com.android.server.security.rkp.test" />
+ <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+ <option name="exclude-annotation" value="androidx.test.filters.FlakyTest" />
+ </test>
+</configuration>
diff --git a/services/tests/RemoteProvisioningServiceTests/OWNERS b/services/tests/RemoteProvisioningServiceTests/OWNERS
new file mode 100644
index 0000000..348f940
--- /dev/null
+++ b/services/tests/RemoteProvisioningServiceTests/OWNERS
@@ -0,0 +1 @@
+file:platform/frameworks/base:master:/core/java/android/security/rkp/OWNERS
diff --git a/services/tests/RemoteProvisioningServiceTests/src/com/android/server/security/rkp/RemoteProvisioningRegistrationTest.java b/services/tests/RemoteProvisioningServiceTests/src/com/android/server/security/rkp/RemoteProvisioningRegistrationTest.java
new file mode 100644
index 0000000..470f2be
--- /dev/null
+++ b/services/tests/RemoteProvisioningServiceTests/src/com/android/server/security/rkp/RemoteProvisioningRegistrationTest.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.security.rkp;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertThrows;
+import static org.mockito.AdditionalAnswers.answerVoid;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.argThat;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
+import android.os.OutcomeReceiver;
+import android.security.rkp.IGetKeyCallback;
+import android.security.rkp.service.RegistrationProxy;
+import android.security.rkp.service.RemotelyProvisionedKey;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.stubbing.Answer;
+import org.mockito.stubbing.VoidAnswer4;
+
+import java.time.Duration;
+import java.util.Arrays;
+import java.util.concurrent.Executor;
+
+/**
+ * Build/Install/Run:
+ * atest FrameworksServicesTests:RemoteProvisioningRegistrationTest
+ */
+@RunWith(AndroidJUnit4.class)
+public class RemoteProvisioningRegistrationTest {
+ private RegistrationProxy mRegistrationProxy;
+ private RemoteProvisioningRegistration mRegistration;
+
+ @Before
+ public void setUp() {
+ mRegistrationProxy = mock(RegistrationProxy.class);
+ mRegistration = new RemoteProvisioningRegistration(mRegistrationProxy, Runnable::run);
+ }
+
+ // answerVoid wrapper with explicit types, avoiding long signatures when mocking getKeyAsync.
+ static Answer<Void> answerGetKeyAsync(
+ VoidAnswer4<Integer, CancellationSignal, Executor,
+ OutcomeReceiver<RemotelyProvisionedKey, Exception>> answer) {
+ return answerVoid(answer);
+ }
+
+ // matcher helper, making it easier to match the different key types
+ private android.security.rkp.RemotelyProvisionedKey matches(
+ RemotelyProvisionedKey expectedKey) {
+ return argThat((android.security.rkp.RemotelyProvisionedKey key) ->
+ Arrays.equals(key.keyBlob, expectedKey.getKeyBlob())
+ && Arrays.equals(key.encodedCertChain, expectedKey.getEncodedCertChain())
+ );
+ }
+
+ @Test
+ public void getKeySuccess() throws Exception {
+ RemotelyProvisionedKey expectedKey = mock(RemotelyProvisionedKey.class);
+ doAnswer(
+ answerGetKeyAsync((keyId, cancelSignal, executor, receiver) ->
+ executor.execute(() -> receiver.onResult(expectedKey))))
+ .when(mRegistrationProxy).getKeyAsync(eq(42), any(), any(), any());
+
+ IGetKeyCallback callback = mock(IGetKeyCallback.class);
+ mRegistration.getKey(42, callback);
+ verify(callback).onSuccess(matches(expectedKey));
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void getKeyHandlesError() throws Exception {
+ Exception expectedException = new Exception("oops!");
+ doAnswer(
+ answerGetKeyAsync((keyId, cancelSignal, executor, receiver) ->
+ executor.execute(() -> receiver.onError(expectedException))))
+ .when(mRegistrationProxy).getKeyAsync(eq(0), any(), any(), any());
+ IGetKeyCallback callback = mock(IGetKeyCallback.class);
+ mRegistration.getKey(0, callback);
+ verify(callback).onError(eq(expectedException.getMessage()));
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void getKeyCancelDuringProxyOperation() throws Exception {
+ IGetKeyCallback callback = mock(IGetKeyCallback.class);
+ doAnswer(
+ answerGetKeyAsync((keyId, cancelSignal, executor, receiver) -> {
+ mRegistration.cancelGetKey(callback);
+ assertThat(cancelSignal.isCanceled()).isTrue();
+ executor.execute(() -> receiver.onError(new OperationCanceledException()));
+ }))
+ .when(mRegistrationProxy).getKeyAsync(eq(Integer.MAX_VALUE), any(), any(), any());
+
+ mRegistration.getKey(Integer.MAX_VALUE, callback);
+ verify(callback).onCancel();
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void cancelGetKeyWithInvalidCallback() throws Exception {
+ IGetKeyCallback callback = mock(IGetKeyCallback.class);
+ assertThrows(IllegalArgumentException.class, () -> mRegistration.cancelGetKey(callback));
+ }
+
+ @Test
+ public void getKeyRejectsDuplicateCallback() throws Exception {
+ IGetKeyCallback callback = mock(IGetKeyCallback.class);
+ doAnswer(
+ answerGetKeyAsync((keyId, cancelSignal, executor, receiver) -> {
+ assertThrows(IllegalArgumentException.class, () ->
+ mRegistration.getKey(0, callback));
+ executor.execute(() -> receiver.onResult(mock(RemotelyProvisionedKey.class)));
+ }))
+ .when(mRegistrationProxy).getKeyAsync(anyInt(), any(), any(), any());
+
+ mRegistration.getKey(0, callback);
+ verify(callback, times(1)).onSuccess(any());
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void getKeyCancelAfterCompleteFails() throws Exception {
+ IGetKeyCallback callback = mock(IGetKeyCallback.class);
+ doAnswer(
+ answerGetKeyAsync((keyId, cancelSignal, executor, receiver) ->
+ executor.execute(() ->
+ receiver.onResult(mock(RemotelyProvisionedKey.class))
+ )))
+ .when(mRegistrationProxy).getKeyAsync(eq(Integer.MIN_VALUE), any(), any(), any());
+
+ mRegistration.getKey(Integer.MIN_VALUE, callback);
+ verify(callback).onSuccess(any());
+ assertThrows(IllegalArgumentException.class, () -> mRegistration.cancelGetKey(callback));
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void getKeyCatchesExceptionFromProxy() throws Exception {
+ Exception expectedException = new RuntimeException("oops! bad input!");
+ doThrow(expectedException)
+ .when(mRegistrationProxy)
+ .getKeyAsync(anyInt(), any(), any(), any());
+
+ IGetKeyCallback callback = mock(IGetKeyCallback.class);
+ mRegistration.getKey(0, callback);
+ verify(callback).onError(eq(expectedException.getMessage()));
+ assertThrows(IllegalArgumentException.class, () -> mRegistration.cancelGetKey(callback));
+ verifyNoMoreInteractions(callback);
+ }
+
+ @Test
+ public void storeUpgradedKeySuccess() throws Exception {
+ // TODO(b/262748535)
+ }
+
+ @Test
+ public void storeUpgradedKeyFails() throws Exception {
+ // TODO(b/262748535)
+ }
+
+ @Test
+ public void storeUpgradedCatchesExceptionFromProxy() throws Exception {
+ // TODO(b/262748535)
+ }
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
index b6a53ac..8d9dda08 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
@@ -75,6 +75,8 @@
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
+import android.util.ArrayMap;
+import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
import android.util.SparseArray;
@@ -156,6 +158,7 @@
private ActivityManagerService mAms;
private BroadcastQueue mQueue;
BroadcastConstants mConstants;
+ private TestBroadcastSkipPolicy mSkipPolicy;
/**
* Desired behavior of the next
@@ -282,16 +285,8 @@
mConstants = new BroadcastConstants(Settings.Global.BROADCAST_FG_CONSTANTS);
mConstants.TIMEOUT = 100;
mConstants.ALLOW_BG_ACTIVITY_START_TIMEOUT = 0;
- final BroadcastSkipPolicy emptySkipPolicy = new BroadcastSkipPolicy(mAms) {
- public boolean shouldSkip(BroadcastRecord r, Object o) {
- // Ignored
- return false;
- }
- public String shouldSkipMessage(BroadcastRecord r, Object o) {
- // Ignored
- return null;
- }
- };
+ mSkipPolicy = new TestBroadcastSkipPolicy(mAms);
+
final BroadcastHistory emptyHistory = new BroadcastHistory(mConstants) {
public void addBroadcastToHistoryLocked(BroadcastRecord original) {
// Ignored
@@ -300,13 +295,13 @@
if (mImpl == Impl.DEFAULT) {
var q = new BroadcastQueueImpl(mAms, mHandlerThread.getThreadHandler(), TAG,
- mConstants, emptySkipPolicy, emptyHistory, false,
+ mConstants, mSkipPolicy, emptyHistory, false,
ProcessList.SCHED_GROUP_DEFAULT);
q.mReceiverBatch.mDeepReceiverCopy = true;
mQueue = q;
} else if (mImpl == Impl.MODERN) {
var q = new BroadcastQueueModernImpl(mAms, mHandlerThread.getThreadHandler(),
- mConstants, mConstants, emptySkipPolicy, emptyHistory);
+ mConstants, mConstants, mSkipPolicy, emptyHistory);
q.mReceiverBatch.mDeepReceiverCopy = true;
mQueue = q;
} else {
@@ -327,6 +322,43 @@
}
}
+ private static class TestBroadcastSkipPolicy extends BroadcastSkipPolicy {
+ private final ArrayMap<String, ArraySet> mReceiversToSkip = new ArrayMap<>();
+
+ TestBroadcastSkipPolicy(ActivityManagerService service) {
+ super(service);
+ }
+
+ public String shouldSkipMessage(BroadcastRecord r, Object o) {
+ if (shouldSkipReceiver(r.intent.getAction(), o)) {
+ return "test skipped receiver";
+ }
+ return null;
+ }
+
+ private boolean shouldSkipReceiver(String action, Object o) {
+ final ArraySet<Object> receiversToSkip = mReceiversToSkip.get(action);
+ if (receiversToSkip == null) {
+ return false;
+ }
+ for (int i = 0; i < receiversToSkip.size(); ++i) {
+ if (BroadcastRecord.isReceiverEquals(o, receiversToSkip.valueAt(i))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void setSkipReceiver(String action, Object o) {
+ ArraySet<Object> receiversToSkip = mReceiversToSkip.get(action);
+ if (receiversToSkip == null) {
+ receiversToSkip = new ArraySet<>();
+ mReceiversToSkip.put(action, receiversToSkip);
+ }
+ receiversToSkip.add(o);
+ }
+ }
+
private class TestInjector extends Injector {
TestInjector(Context context) {
super(context);
@@ -835,6 +867,7 @@
static final String PACKAGE_GREEN = "com.example.green";
static final String PACKAGE_BLUE = "com.example.blue";
static final String PACKAGE_YELLOW = "com.example.yellow";
+ static final String PACKAGE_ORANGE = "com.example.orange";
static final String PROCESS_SYSTEM = "system";
@@ -842,6 +875,7 @@
static final String CLASS_GREEN = "com.example.green.Green";
static final String CLASS_BLUE = "com.example.blue.Blue";
static final String CLASS_YELLOW = "com.example.yellow.Yellow";
+ static final String CLASS_ORANGE = "com.example.orange.Orange";
static int getUidForPackage(@NonNull String packageName) {
switch (packageName) {
@@ -851,6 +885,7 @@
case PACKAGE_GREEN: return android.os.Process.FIRST_APPLICATION_UID + 2;
case PACKAGE_BLUE: return android.os.Process.FIRST_APPLICATION_UID + 3;
case PACKAGE_YELLOW: return android.os.Process.FIRST_APPLICATION_UID + 4;
+ case PACKAGE_ORANGE: return android.os.Process.FIRST_APPLICATION_UID + 5;
default: throw new IllegalArgumentException();
}
}
@@ -1873,4 +1908,38 @@
verify(mAms).addBroadcastStatLocked(eq(Intent.ACTION_TIMEZONE_CHANGED), eq(PACKAGE_RED),
eq(1), eq(0), anyLong());
}
+
+ /**
+ * Verify that we skip broadcasts if {@link BroadcastSkipPolicy} decides it should be skipped.
+ */
+ @Test
+ public void testSkipPolicy() throws Exception {
+ final ProcessRecord callerApp = makeActiveProcessRecord(PACKAGE_RED);
+ final ProcessRecord receiverGreenApp = makeActiveProcessRecord(PACKAGE_GREEN);
+ final ProcessRecord receiverBlueApp = makeActiveProcessRecord(PACKAGE_BLUE);
+
+ final Intent airplane = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+ try (SyncBarrier b = new SyncBarrier()) {
+ final Object greenReceiver = makeRegisteredReceiver(receiverGreenApp);
+ final Object blueReceiver = makeRegisteredReceiver(receiverBlueApp);
+ final Object yellowReceiver = makeManifestReceiver(PACKAGE_YELLOW, CLASS_YELLOW);
+ final Object orangeReceiver = makeManifestReceiver(PACKAGE_ORANGE, CLASS_ORANGE);
+ enqueueBroadcast(makeBroadcastRecord(airplane, callerApp,
+ List.of(greenReceiver, blueReceiver, yellowReceiver, orangeReceiver)));
+
+ mSkipPolicy.setSkipReceiver(airplane.getAction(), greenReceiver);
+ mSkipPolicy.setSkipReceiver(airplane.getAction(), orangeReceiver);
+ }
+
+ waitForIdle();
+ // Verify that only blue and yellow receiver apps received the broadcast.
+ verifyScheduleRegisteredReceiver(never(), receiverGreenApp, USER_SYSTEM);
+ verifyScheduleRegisteredReceiver(receiverBlueApp, airplane);
+ final ProcessRecord receiverYellowApp = mAms.getProcessRecordLocked(PACKAGE_YELLOW,
+ getUidForPackage(PACKAGE_YELLOW));
+ verifyScheduleReceiver(receiverYellowApp, airplane);
+ final ProcessRecord receiverOrangeApp = mAms.getProcessRecordLocked(PACKAGE_ORANGE,
+ getUidForPackage(PACKAGE_ORANGE));
+ assertNull(receiverOrangeApp);
+ }
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
index d3fa92c..c4c50424 100644
--- a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
@@ -262,6 +262,16 @@
mTestLooper.dispatchAll();
}
+ private void mockQueryAllPackageGranted() {
+ mMockContext.setPermission(Manifest.permission.QUERY_ALL_PACKAGES,
+ PackageManager.PERMISSION_GRANTED);
+ }
+
+ private void mockQueryAllPackageDenied() {
+ mMockContext.setPermission(Manifest.permission.QUERY_ALL_PACKAGES,
+ PackageManager.PERMISSION_DENIED);
+ }
+
private void mockManageUsersGranted() {
mMockContext.setPermission(Manifest.permission.MANAGE_USERS,
PackageManager.PERMISSION_GRANTED);
@@ -527,7 +537,7 @@
}
/**
- * Test permission.MANAGE_GAME_MODE is checked
+ * Test invalid package name is queried
*/
@Test
public void testGetGameModeInvalidPackageName() {
@@ -536,16 +546,16 @@
startUser(gameManagerService, USER_ID_1);
try {
+ when(mMockPackageManager.getApplicationInfoAsUser(anyString(), anyInt(), anyInt()))
+ .thenThrow(new PackageManager.NameNotFoundException());
assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
gameManagerService.getGameMode(PACKAGE_NAME_INVALID,
USER_ID_1));
-
- fail("GameManagerService failed to generate SecurityException when "
- + "permission.MANAGE_GAME_MODE is not granted.");
- } catch (SecurityException ignored) {
+ } catch (PackageManager.NameNotFoundException e) {
+ // should never get here as isPackageGame() catches this exception
+ // fail this test if we ever get here
+ fail("Unexpected NameNotFoundException caught.");
}
-
- // The test should throw an exception, so the test is passing if we get here.
}
/**
@@ -1874,16 +1884,20 @@
@Test
public void testUpdateCustomGameModeConfiguration() throws InterruptedException {
mockModifyGameModeGranted();
- GameManagerService gameManagerService = createServiceAndStartUser(USER_ID_1);
+ GameManagerService gameManagerService = Mockito.spy(createServiceAndStartUser(USER_ID_1));
+ gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_CUSTOM, USER_ID_1);
gameManagerService.updateCustomGameModeConfiguration(mPackageName,
new GameModeConfiguration.Builder().setScalingFactor(0.35f).setFpsOverride(
60).build(),
USER_ID_1);
-
assertTrue(gameManagerService.mHandler.hasEqualMessages(WRITE_SETTINGS, USER_ID_1));
assertTrue(
gameManagerService.mHandler.hasEqualMessages(WRITE_GAME_MODE_INTERVENTION_LIST_FILE,
USER_ID_1));
+ Mockito.verify(gameManagerService).setOverrideFrameRate(
+ ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
+ ArgumentMatchers.eq(60.0f));
+ checkFps(gameManagerService, GameManager.GAME_MODE_CUSTOM, 60);
GameManagerService.GamePackageConfiguration pkgConfig = gameManagerService.getConfig(
mPackageName, USER_ID_1);
@@ -2180,4 +2194,22 @@
verify(mMockPowerManager, never()).setPowerMode(anyInt(), anyBoolean());
assertFalse(gameManagerService.mHandler.hasMessages(CANCEL_GAME_LOADING_MODE));
}
+
+ @Test
+ public void testGetInterventionList_permissionDenied() throws Exception {
+ String configString = "mode=2,downscaleFactor=0.5";
+ when(DeviceConfig.getProperty(anyString(), anyString()))
+ .thenReturn(configString);
+ mockQueryAllPackageDenied();
+ GameManagerService gameManagerService = createServiceAndStartUser(USER_ID_1);
+ assertThrows(SecurityException.class,
+ () -> gameManagerService.getInterventionList(mPackageName, USER_ID_1));
+
+ mockQueryAllPackageGranted();
+ String expectedInterventionListOutput = "\n[Name:" + mPackageName
+ + " Modes: {2=[Game Mode:2,Scaling:0.5,Use Angle:false,"
+ + "Fps:,Loading Boost Duration:-1]}]";
+ assertEquals(expectedInterventionListOutput,
+ gameManagerService.getInterventionList(mPackageName, USER_ID_1));
+ }
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerController2Test.java b/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerController2Test.java
index f2cba40..2a790a1 100644
--- a/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerController2Test.java
+++ b/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerController2Test.java
@@ -80,6 +80,8 @@
@Mock
private DisplayBlanker mDisplayBlankerMock;
@Mock
+ private HighBrightnessModeMetadata mHighBrightnessModeMetadataMock;
+ @Mock
private LogicalDisplay mLogicalDisplayMock;
@Mock
private DisplayDevice mDisplayDeviceMock;
@@ -169,7 +171,7 @@
mContextSpy, mInjector, mDisplayPowerCallbacksMock, mHandler,
mSensorManagerMock, mDisplayBlankerMock, mLogicalDisplayMock,
mBrightnessTrackerMock, mBrightnessSettingMock, () -> {
- });
+ }, mHighBrightnessModeMetadataMock);
when(mDisplayPowerStateMock.getScreenState()).thenReturn(Display.STATE_ON);
// send a display power request
diff --git a/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerControllerTest.java
index 4f8cb88..d99ed78 100644
--- a/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerControllerTest.java
@@ -84,6 +84,8 @@
@Mock
private DisplayDevice mDisplayDeviceMock;
@Mock
+ private HighBrightnessModeMetadata mHighBrightnessModeMetadataMock;
+ @Mock
private BrightnessTracker mBrightnessTrackerMock;
@Mock
private BrightnessSetting mBrightnessSettingMock;
@@ -151,7 +153,7 @@
mContextSpy, mInjector, mDisplayPowerCallbacksMock, mHandler,
mSensorManagerMock, mDisplayBlankerMock, mLogicalDisplayMock,
mBrightnessTrackerMock, mBrightnessSettingMock, () -> {
- });
+ }, mHighBrightnessModeMetadataMock);
when(mDisplayPowerStateMock.getScreenState()).thenReturn(Display.STATE_ON);
// send a display power request
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/BackgroundDexOptServiceUnitTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/BackgroundDexOptServiceUnitTest.java
index 01674bb..8b36da5 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/BackgroundDexOptServiceUnitTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/BackgroundDexOptServiceUnitTest.java
@@ -169,19 +169,19 @@
}
@Test
- public void testBootCompleted() {
+ public void testBootCompleted() throws Exception {
initUntilBootCompleted();
}
@Test
- public void testNoExecutionForIdleJobBeforePostBootUpdate() {
+ public void testNoExecutionForIdleJobBeforePostBootUpdate() throws Exception {
initUntilBootCompleted();
assertThat(mService.onStartJob(mJobServiceForIdle, mJobParametersForIdle)).isFalse();
}
@Test
- public void testNoExecutionForLowStorage() {
+ public void testNoExecutionForLowStorage() throws Exception {
initUntilBootCompleted();
when(mPackageManager.isStorageLow()).thenReturn(true);
@@ -191,7 +191,7 @@
}
@Test
- public void testNoExecutionForNoOptimizablePackages() {
+ public void testNoExecutionForNoOptimizablePackages() throws Exception {
initUntilBootCompleted();
when(mDexOptHelper.getOptimizablePackages(any())).thenReturn(Collections.emptyList());
@@ -201,7 +201,7 @@
}
@Test
- public void testPostBootUpdateFullRun() {
+ public void testPostBootUpdateFullRun() throws Exception {
initUntilBootCompleted();
runFullJob(mJobServiceForPostBoot, mJobParametersForPostBoot,
@@ -210,7 +210,7 @@
}
@Test
- public void testPostBootUpdateFullRunWithPackageFailure() {
+ public void testPostBootUpdateFullRunWithPackageFailure() throws Exception {
mDexOptResultForPackageAAA = PackageDexOptimizer.DEX_OPT_FAILED;
initUntilBootCompleted();
@@ -224,7 +224,7 @@
}
@Test
- public void testIdleJobFullRun() {
+ public void testIdleJobFullRun() throws Exception {
initUntilBootCompleted();
runFullJob(mJobServiceForPostBoot, mJobParametersForPostBoot,
/* expectedReschedule= */ false, /* expectedStatus= */ STATUS_OK,
@@ -235,7 +235,7 @@
}
@Test
- public void testIdleJobFullRunWithFailureOnceAndSuccessAfterUpdate() {
+ public void testIdleJobFullRunWithFailureOnceAndSuccessAfterUpdate() throws Exception {
mDexOptResultForPackageAAA = PackageDexOptimizer.DEX_OPT_FAILED;
initUntilBootCompleted();
@@ -271,7 +271,7 @@
}
@Test
- public void testIdleJobFullRunWithFatalError() {
+ public void testIdleJobFullRunWithFatalError() throws Exception {
initUntilBootCompleted();
runFullJob(mJobServiceForPostBoot, mJobParametersForPostBoot,
/* expectedReschedule= */ false, /* expectedStatus= */ STATUS_OK,
@@ -285,7 +285,7 @@
}
@Test
- public void testSystemReadyWhenDisabled() {
+ public void testSystemReadyWhenDisabled() throws Exception {
when(mInjector.isBackgroundDexOptDisabled()).thenReturn(true);
mService.systemReady();
@@ -294,7 +294,7 @@
}
@Test
- public void testStopByCancelFlag() {
+ public void testStopByCancelFlag() throws Exception {
when(mInjector.createAndStartThread(any(), any())).thenReturn(Thread.currentThread());
initUntilBootCompleted();
@@ -447,7 +447,7 @@
}
@Test
- public void testStopByThermal() {
+ public void testStopByThermal() throws Exception {
when(mInjector.createAndStartThread(any(), any())).thenReturn(Thread.currentThread());
initUntilBootCompleted();
@@ -478,7 +478,7 @@
}
@Test
- public void testDisableJobSchedulerJobs() {
+ public void testDisableJobSchedulerJobs() throws Exception {
when(mInjector.getCallingUid()).thenReturn(Process.SHELL_UID);
mService.setDisableJobSchedulerJobs(true);
assertThat(mService.onStartJob(mJobServiceForIdle, mJobParametersForIdle)).isFalse();
@@ -492,7 +492,7 @@
assertThrows(SecurityException.class, () -> mService.setDisableJobSchedulerJobs(true));
}
- private void initUntilBootCompleted() {
+ private void initUntilBootCompleted() throws Exception {
ArgumentCaptor<BroadcastReceiver> argReceiver = ArgumentCaptor.forClass(
BroadcastReceiver.class);
ArgumentCaptor<IntentFilter> argIntentFilter = ArgumentCaptor.forClass(IntentFilter.class);
@@ -515,7 +515,7 @@
assertThat(jobIds).containsExactlyElementsIn(expectedJobIds);
}
- private void verifyLastControlDexOptBlockingCall(boolean expected) {
+ private void verifyLastControlDexOptBlockingCall(boolean expected) throws Exception {
ArgumentCaptor<Boolean> argDexOptBlock = ArgumentCaptor.forClass(Boolean.class);
verify(mDexOptHelper, atLeastOnce()).controlDexOptBlocking(argDexOptBlock.capture());
assertThat(argDexOptBlock.getValue()).isEqualTo(expected);
@@ -523,7 +523,7 @@
private void runFullJob(BackgroundDexOptJobService jobService, JobParameters params,
boolean expectedReschedule, int expectedStatus, int totalJobFinishedWithParams,
- @Nullable String expectedSkippedPackage) {
+ @Nullable String expectedSkippedPackage) throws Exception {
when(mInjector.createAndStartThread(any(), any())).thenReturn(Thread.currentThread());
addFullRunSequence(expectedSkippedPackage);
assertThat(mService.onStartJob(jobService, params)).isTrue();
diff --git a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
index 7fd1ddb..bcba4a1 100644
--- a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java
@@ -29,7 +29,6 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.server.wallpaper.WallpaperManagerService.WALLPAPER;
-import static com.android.server.wallpaper.WallpaperManagerService.WALLPAPER_CROP;
import static org.hamcrest.core.IsNot.not;
import static org.junit.Assert.assertEquals;
@@ -76,12 +75,12 @@
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
+import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.dx.mockito.inline.extended.StaticMockitoSession;
import com.android.internal.R;
import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.TypedXmlSerializer;
import com.android.server.LocalServices;
-import com.android.server.wallpaper.WallpaperManagerService.WallpaperData;
import com.android.server.wm.WindowManagerInternal;
import org.hamcrest.CoreMatchers;
@@ -114,6 +113,8 @@
@FlakyTest(bugId = 129797242)
@RunWith(AndroidJUnit4.class)
public class WallpaperManagerServiceTests {
+
+ private static final String TAG = "WallpaperManagerServiceTests";
private static final int DISPLAY_SIZE_DIMENSION = 100;
private static StaticMockitoSession sMockitoSession;
@@ -138,6 +139,7 @@
public static void setUpClass() {
sMockitoSession = mockitoSession()
.strictness(Strictness.LENIENT)
+ .spyStatic(WallpaperUtils.class)
.spyStatic(LocalServices.class)
.spyStatic(WallpaperManager.class)
.startMocking();
@@ -193,6 +195,11 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
+ ExtendedMockito.doAnswer(invocation -> {
+ int userId = (invocation.getArgument(0));
+ return getWallpaperTestDir(userId);
+ }).when(() -> WallpaperUtils.getWallpaperDir(anyInt()));
+
sContext.addMockSystemService(DisplayManager.class, mDisplayManager);
final Display mockDisplay = mock(Display.class);
@@ -217,27 +224,25 @@
mService = null;
}
+ private File getWallpaperTestDir(int userId) {
+ File tempDir = mTempDirs.get(userId);
+ if (tempDir == null) {
+ try {
+ tempDir = mFolder.newFolder(String.valueOf(userId));
+ mTempDirs.append(userId, tempDir);
+ } catch (IOException e) {
+ Log.e(TAG, "getWallpaperTestDir failed at userId= " + userId);
+ }
+ }
+ return tempDir;
+ }
+
protected class TestWallpaperManagerService extends WallpaperManagerService {
- private static final String TAG = "TestWallpaperManagerService";
TestWallpaperManagerService(Context context) {
super(context);
}
- @Override
- File getWallpaperDir(int userId) {
- File tempDir = mTempDirs.get(userId);
- if (tempDir == null) {
- try {
- tempDir = mFolder.newFolder(String.valueOf(userId));
- mTempDirs.append(userId, tempDir);
- } catch (IOException e) {
- Log.e(TAG, "getWallpaperDir failed at userId= " + userId);
- }
- }
- return tempDir;
- }
-
// Always return true for test
@Override
public boolean isWallpaperSupported(String callingPackage) {
@@ -403,8 +408,7 @@
@Test
public void testWallpaperManagerCallbackInRightOrder() throws RemoteException {
- WallpaperData wallpaper = new WallpaperData(
- USER_SYSTEM, mService.getWallpaperDir(USER_SYSTEM), WALLPAPER, WALLPAPER_CROP);
+ WallpaperData wallpaper = new WallpaperData(USER_SYSTEM, FLAG_SYSTEM);
wallpaper.primaryColors = new WallpaperColors(Color.valueOf(Color.RED),
Color.valueOf(Color.BLUE), null);
diff --git a/services/tests/servicestests/res/xml/usertypes_test_profile.xml b/services/tests/servicestests/res/xml/usertypes_test_profile.xml
index f3ad6d8..450cc40 100644
--- a/services/tests/servicestests/res/xml/usertypes_test_profile.xml
+++ b/services/tests/servicestests/res/xml/usertypes_test_profile.xml
@@ -35,6 +35,7 @@
startWithParent='false'
useParentsContacts='false'
crossProfileIntentFilterAccessControl='20'
+ crossProfileIntentResolutionStrategy='0'
/>
</profile-type>
<profile-type name='custom.test.1' max-allowed-per-parent='14' />
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
index 52a550b..d056348 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
@@ -21,10 +21,12 @@
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
-import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
-
+import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
@@ -51,7 +53,9 @@
import android.content.pm.ServiceInfo;
import android.graphics.drawable.Icon;
import android.hardware.display.DisplayManagerGlobal;
+import android.os.Bundle;
import android.os.IBinder;
+import android.os.UserHandle;
import android.provider.Settings;
import android.testing.TestableContext;
import android.view.Display;
@@ -61,6 +65,7 @@
import android.view.accessibility.AccessibilityWindowAttributes;
import androidx.test.InstrumentationRegistry;
+import androidx.test.core.app.ApplicationProvider;
import androidx.test.filters.SmallTest;
import com.android.compatibility.common.util.TestUtils;
@@ -76,12 +81,12 @@
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.WindowManagerInternal;
-import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers;
+import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@@ -92,13 +97,16 @@
* APCT tests for {@link AccessibilityManagerService}.
*/
public class AccessibilityManagerServiceTest {
- private static final String TAG = "A11Y_MANAGER_SERVICE_TEST";
+ @Rule
+ public final A11yTestableContext mTestableContext = new A11yTestableContext(
+ ApplicationProvider.getApplicationContext());
+
private static final int ACTION_ID = 20;
private static final String LABEL = "label";
private static final String INTENT_ACTION = "TESTACTION";
private static final String DESCRIPTION = "description";
private static final PendingIntent TEST_PENDING_INTENT = PendingIntent.getBroadcast(
- InstrumentationRegistry.getTargetContext(), 0, new Intent(INTENT_ACTION),
+ ApplicationProvider.getApplicationContext(), 0, new Intent(INTENT_ACTION),
PendingIntent.FLAG_MUTABLE_UNAUDITED);
private static final RemoteAction TEST_ACTION = new RemoteAction(
Icon.createWithContentUri("content://test"),
@@ -130,11 +138,7 @@
@Mock private MagnificationController mMockMagnificationController;
@Mock private FullScreenMagnificationController mMockFullScreenMagnificationController;
@Mock private ProxyManager mProxyManager;
-
- @Rule
- public final TestableContext mTestableContext = new TestableContext(
- getInstrumentation().getTargetContext(), null);
-
+ @Captor private ArgumentCaptor<Intent> mIntentArgumentCaptor;
private MessageCapturingHandler mHandler = new MessageCapturingHandler(null);
private AccessibilityServiceConnection mAccessibilityServiceConnection;
private AccessibilityInputFilter mInputFilter;
@@ -228,11 +232,8 @@
doThrow(SecurityException.class).when(mMockSecurityPolicy)
.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
- try {
- mA11yms.registerSystemAction(TEST_ACTION, ACTION_ID);
- Assert.fail();
- } catch (SecurityException expected) {
- }
+ assertThrows(SecurityException.class,
+ () -> mA11yms.registerSystemAction(TEST_ACTION, ACTION_ID));
verify(mMockSystemActionPerformer, never()).registerSystemAction(ACTION_ID, TEST_ACTION);
}
@@ -248,11 +249,8 @@
doThrow(SecurityException.class).when(mMockSecurityPolicy)
.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
- try {
- mA11yms.unregisterSystemAction(ACTION_ID);
- Assert.fail();
- } catch (SecurityException expected) {
- }
+ assertThrows(SecurityException.class,
+ () -> mA11yms.unregisterSystemAction(ACTION_ID));
verify(mMockSystemActionPerformer, never()).unregisterSystemAction(ACTION_ID);
}
@@ -290,11 +288,9 @@
public void testRegisterProxyWithoutPermission() throws Exception {
doThrow(SecurityException.class).when(mMockSecurityPolicy)
.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
- try {
- mA11yms.registerProxyForDisplay(mMockServiceClient, TEST_DISPLAY);
- Assert.fail();
- } catch (SecurityException expected) {
- }
+
+ assertThrows(SecurityException.class,
+ () -> mA11yms.registerProxyForDisplay(mMockServiceClient, TEST_DISPLAY));
verify(mProxyManager, never()).registerProxy(any(), anyInt(), any(), anyInt(), any(), any(),
any(), any(), any(), any());
}
@@ -302,11 +298,8 @@
@SmallTest
@Test
public void testRegisterProxyForDefaultDisplay() throws Exception {
- try {
- mA11yms.registerProxyForDisplay(mMockServiceClient, Display.DEFAULT_DISPLAY);
- Assert.fail();
- } catch (IllegalArgumentException expected) {
- }
+ assertThrows(IllegalArgumentException.class,
+ () -> mA11yms.registerProxyForDisplay(mMockServiceClient, Display.DEFAULT_DISPLAY));
verify(mProxyManager, never()).registerProxy(any(), anyInt(), any(), anyInt(), any(), any(),
any(), any(), any(), any());
}
@@ -314,11 +307,8 @@
@SmallTest
@Test
public void testRegisterProxyForInvalidDisplay() throws Exception {
- try {
- mA11yms.registerProxyForDisplay(mMockServiceClient, Display.INVALID_DISPLAY);
- Assert.fail();
- } catch (IllegalArgumentException expected) {
- }
+ assertThrows(IllegalArgumentException.class,
+ () -> mA11yms.registerProxyForDisplay(mMockServiceClient, Display.INVALID_DISPLAY));
verify(mProxyManager, never()).registerProxy(any(), anyInt(), any(), anyInt(), any(), any(),
any(), any(), any(), any());
}
@@ -337,11 +327,9 @@
public void testUnRegisterProxyWithoutPermission() throws Exception {
doThrow(SecurityException.class).when(mMockSecurityPolicy)
.enforceCallingOrSelfPermission(Manifest.permission.MANAGE_ACCESSIBILITY);
- try {
- mA11yms.unregisterProxyForDisplay(TEST_DISPLAY);
- Assert.fail();
- } catch (SecurityException expected) {
- }
+
+ assertThrows(SecurityException.class,
+ () -> mA11yms.unregisterProxyForDisplay(TEST_DISPLAY));
verify(mProxyManager, never()).unregisterProxy(TEST_DISPLAY);
}
@@ -357,8 +345,9 @@
mA11yms.onMagnificationTransitionEndedLocked(Display.DEFAULT_DISPLAY, false);
- Assert.assertEquals(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
- userState.getMagnificationModeLocked(Display.DEFAULT_DISPLAY));
+ assertThat(userState.getMagnificationModeLocked(Display.DEFAULT_DISPLAY)).isEqualTo(
+ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
+
}
@SmallTest
@@ -376,7 +365,7 @@
ArgumentCaptor<Display> displayCaptor = ArgumentCaptor.forClass(Display.class);
verify(mInputFilter, timeout(100)).refreshMagnificationMode(displayCaptor.capture());
- Assert.assertEquals(Display.DEFAULT_DISPLAY, displayCaptor.getValue().getDisplayId());
+ assertThat(displayCaptor.getValue().getDisplayId()).isEqualTo(Display.DEFAULT_DISPLAY);
}
@SmallTest
@@ -506,10 +495,59 @@
attributes);
}
+ @SmallTest
+ @Test
+ public void testPerformAccessibilityShortcut_hearingAids_startActivityWithExpectedComponent() {
+ final AccessibilityUserState userState = mA11yms.mUserStates.get(
+ mA11yms.getCurrentUserIdLocked());
+ mockManageAccessibilityGranted(mTestableContext);
+ userState.mAccessibilityShortcutKeyTargets.add(
+ ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.flattenToString());
+
+ mA11yms.performAccessibilityShortcut(
+ ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.flattenToString());
+ mHandler.sendAllMessages();
+
+ assertStartActivityWithExpectedComponentName(mTestableContext.getMockContext(),
+ ACCESSIBILITY_HEARING_AIDS_COMPONENT_NAME.flattenToString());
+ }
+
+ private void mockManageAccessibilityGranted(TestableContext context) {
+ context.getTestablePermissions().setPermission(Manifest.permission.MANAGE_ACCESSIBILITY,
+ PackageManager.PERMISSION_GRANTED);
+ }
+
+ private void assertStartActivityWithExpectedComponentName(Context mockContext,
+ String componentName) {
+ verify(mockContext).startActivityAsUser(mIntentArgumentCaptor.capture(),
+ any(Bundle.class), any(UserHandle.class));
+ assertThat(mIntentArgumentCaptor.getValue().getStringExtra(
+ Intent.EXTRA_COMPONENT_NAME)).isEqualTo(componentName);
+ }
+
public static class FakeInputFilter extends AccessibilityInputFilter {
FakeInputFilter(Context context,
AccessibilityManagerService service) {
super(context, service);
}
}
+
+ private static class A11yTestableContext extends TestableContext {
+
+ private final Context mMockContext;
+
+ A11yTestableContext(Context base) {
+ super(base);
+ mMockContext = Mockito.mock(Context.class);
+ }
+
+ @Override
+ public void startActivityAsUser(Intent intent, Bundle options, UserHandle user) {
+ mMockContext.startActivityAsUser(intent, options, user);
+ }
+
+ Context getMockContext() {
+ return mMockContext;
+ }
+ }
}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java
index e66a1d4..7b7e1e0 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java
@@ -1019,7 +1019,7 @@
windowInfosForDisplay.get(DEFAULT_FOCUSED_INDEX).focused = true;
}
// Turns on windows tracking, and update window info.
- mA11yWindowManager.startTrackingWindows(displayId);
+ mA11yWindowManager.startTrackingWindows(displayId, false);
// Puts window lists into array.
mWindowInfos.put(displayId, windowInfosForDisplay);
// Sets the default display is the top focused display and
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
index 20beed0..99f7905 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java
@@ -41,7 +41,6 @@
import android.hardware.biometrics.fingerprint.ISession;
import android.hardware.biometrics.fingerprint.PointerContext;
import android.hardware.fingerprint.Fingerprint;
-import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.hardware.fingerprint.ISidefpsController;
import android.hardware.fingerprint.IUdfpsOverlayController;
@@ -55,7 +54,6 @@
import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry;
-import com.android.internal.R;
import com.android.server.biometrics.log.BiometricContext;
import com.android.server.biometrics.log.BiometricLogger;
import com.android.server.biometrics.log.CallbackWithProbe;
@@ -398,274 +396,6 @@
verify(mCancellationSignal).cancel();
}
- @Test
- public void fingerprintPowerIgnoresAuthInWindow() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
- when(mHal.authenticate(anyLong())).thenReturn(mCancellationSignal);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- client.onPowerPressed();
- client.onAuthenticated(new Fingerprint("friendly", 1 /* fingerId */, 2 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- mLooper.moveTimeForward(1000);
- mLooper.dispatchAll();
-
- verify(mCallback).onClientFinished(any(), eq(false));
- verify(mCancellationSignal).cancel();
- }
-
- @Test
- public void fingerprintAuthIgnoredWaitingForPower() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
- when(mHal.authenticate(anyLong())).thenReturn(mCancellationSignal);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- client.onAuthenticated(new Fingerprint("friendly", 3 /* fingerId */, 4 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- client.onPowerPressed();
- mLooper.moveTimeForward(1000);
- mLooper.dispatchAll();
-
- verify(mCallback).onClientFinished(any(), eq(false));
- verify(mCancellationSignal).cancel();
- }
-
- @Test
- public void fingerprintAuthFailsWhenAuthAfterPower() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
- when(mHal.authenticate(anyLong())).thenReturn(mCancellationSignal);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- client.onPowerPressed();
- mLooper.dispatchAll();
- mLooper.moveTimeForward(1000);
- mLooper.dispatchAll();
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- mLooper.dispatchAll();
- mLooper.moveTimeForward(1000);
- mLooper.dispatchAll();
-
- verify(mCallback, never()).onClientFinished(any(), eq(true));
- verify(mCallback).onClientFinished(any(), eq(false));
- when(mHal.authenticateWithContext(anyLong(), any())).thenReturn(mCancellationSignal);
- }
-
- @Test
- public void sideFingerprintDoesntSendAuthImmediately() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- mLooper.dispatchAll();
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- mLooper.dispatchAll();
-
- verify(mCallback, never()).onClientFinished(any(), anyBoolean());
- }
-
- @Test
- public void sideFingerprintSkipsWindowIfFingerUp() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
-
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsSkipWaitForPowerAcquireMessage, FINGER_UP);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- mLooper.dispatchAll();
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- client.onAcquired(FINGER_UP, 0);
- mLooper.dispatchAll();
-
- verify(mCallback).onClientFinished(any(), eq(true));
- }
-
- @Test
- public void sideFingerprintSkipsWindowIfVendorMessageMatch() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
- final int vendorAcquireMessage = 1234;
-
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsSkipWaitForPowerAcquireMessage,
- FingerprintManager.FINGERPRINT_ACQUIRED_VENDOR);
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsSkipWaitForPowerVendorAcquireMessage,
- vendorAcquireMessage);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- mLooper.dispatchAll();
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- client.onAcquired(FingerprintManager.FINGERPRINT_ACQUIRED_VENDOR, vendorAcquireMessage);
- mLooper.dispatchAll();
-
- verify(mCallback).onClientFinished(any(), eq(true));
- }
-
- @Test
- public void sideFingerprintDoesNotSkipWindowOnVendorErrorMismatch() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
- final int vendorAcquireMessage = 1234;
-
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsSkipWaitForPowerAcquireMessage,
- FingerprintManager.FINGERPRINT_ACQUIRED_VENDOR);
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsSkipWaitForPowerVendorAcquireMessage,
- vendorAcquireMessage);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- mLooper.dispatchAll();
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- client.onAcquired(FingerprintManager.FINGERPRINT_ACQUIRED_VENDOR, 1);
- mLooper.dispatchAll();
-
- verify(mCallback, never()).onClientFinished(any(), anyBoolean());
- }
-
- @Test
- public void sideFingerprintSendsAuthIfFingerUp() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
-
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsSkipWaitForPowerAcquireMessage, FINGER_UP);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- mLooper.dispatchAll();
- client.onAcquired(FINGER_UP, 0);
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- mLooper.dispatchAll();
-
- verify(mCallback).onClientFinished(any(), eq(true));
- }
-
- @Test
- public void sideFingerprintShortCircuitExpires() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
-
- final int timeBeforeAuthSent = 500;
-
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsKeyguardPowerPressWindow, timeBeforeAuthSent);
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsSkipWaitForPowerAcquireMessage, FINGER_UP);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- mLooper.dispatchAll();
- client.onAcquired(FINGER_UP, 0);
- mLooper.dispatchAll();
-
- mLooper.moveTimeForward(500);
- mLooper.dispatchAll();
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- mLooper.dispatchAll();
- verify(mCallback, never()).onClientFinished(any(), anyBoolean());
-
- mLooper.moveTimeForward(500);
- mLooper.dispatchAll();
- verify(mCallback).onClientFinished(any(), eq(true));
- }
-
- @Test
- public void sideFingerprintPowerWindowStartsOnAcquireStart() throws Exception {
- final int powerWindow = 500;
- final long authStart = 300;
-
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsBpPowerPressWindow, powerWindow);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
-
- // Acquire start occurs at time = 0ms
- when(mClock.millis()).thenReturn(0L);
- client.onAcquired(FingerprintManager.FINGERPRINT_ACQUIRED_START, 0 /* vendorCode */);
-
- // Auth occurs at time = 300
- when(mClock.millis()).thenReturn(authStart);
- // At this point the delay should be 500 - (300 - 0) == 200 milliseconds.
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- mLooper.dispatchAll();
- verify(mCallback, never()).onClientFinished(any(), anyBoolean());
-
- // After waiting 200 milliseconds, auth should succeed.
- mLooper.moveTimeForward(powerWindow - authStart);
- mLooper.dispatchAll();
- verify(mCallback).onClientFinished(any(), eq(true));
- }
-
- @Test
- public void sideFingerprintPowerWindowStartsOnLastAcquireStart() throws Exception {
- final int powerWindow = 500;
-
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
- mContext.getOrCreateTestableResources().addOverride(
- R.integer.config_sidefpsBpPowerPressWindow, powerWindow);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
- // Acquire start occurs at time = 0ms
- when(mClock.millis()).thenReturn(0L);
- client.onAcquired(FingerprintManager.FINGERPRINT_ACQUIRED_START, 0 /* vendorCode */);
-
- // Auth reject occurs at time = 300ms
- when(mClock.millis()).thenReturn(300L);
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- false /* authenticated */, new ArrayList<>());
- mLooper.dispatchAll();
-
- mLooper.moveTimeForward(300);
- mLooper.dispatchAll();
- verify(mCallback, never()).onClientFinished(any(), anyBoolean());
-
- when(mClock.millis()).thenReturn(1300L);
- client.onAcquired(FingerprintManager.FINGERPRINT_ACQUIRED_START, 0 /* vendorCode */);
-
- // If code is correct, the new acquired start timestamp should be used
- // and the code should only have to wait 500 - (1500-1300)ms.
- when(mClock.millis()).thenReturn(1500L);
- client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */),
- true /* authenticated */, new ArrayList<>());
- mLooper.dispatchAll();
-
- mLooper.moveTimeForward(299);
- mLooper.dispatchAll();
- verify(mCallback, never()).onClientFinished(any(), anyBoolean());
-
- mLooper.moveTimeForward(1);
- mLooper.dispatchAll();
- verify(mCallback).onClientFinished(any(), eq(true));
- }
-
- @Test
- public void sideFpsPowerPressCancelsIsntantly() throws Exception {
- when(mSensorProps.isAnySidefpsType()).thenReturn(true);
-
- final FingerprintAuthenticationClient client = createClient(1);
- client.start(mCallback);
-
- client.onPowerPressed();
- mLooper.dispatchAll();
-
- verify(mCallback, never()).onClientFinished(any(), eq(true));
- verify(mCallback).onClientFinished(any(), eq(false));
- }
-
private FingerprintAuthenticationClient createClient() throws RemoteException {
return createClient(100 /* version */, true /* allowBackgroundAuthentication */);
}
diff --git a/services/tests/servicestests/src/com/android/server/companion/datatransfer/contextsync/OWNERS b/services/tests/servicestests/src/com/android/server/companion/datatransfer/contextsync/OWNERS
new file mode 100644
index 0000000..008a53f
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/companion/datatransfer/contextsync/OWNERS
@@ -0,0 +1 @@
+include /services/companion/java/com/android/server/companion/OWNERS
\ No newline at end of file
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index a55b196..61c3f13 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -5014,7 +5014,8 @@
.thenReturn(new UserInfo(UserHandle.USER_SYSTEM, "user system", 0));
when(getServices().userManager.getPrimaryUser())
.thenReturn(new UserInfo(UserHandle.USER_SYSTEM, "user system", 0));
-
+ when(getServices().subscriptionManager.getActiveSubscriptionIdList(false)).thenReturn(
+ new int[1]);
// Set some device-wide policies:
// Security logging
when(getServices().settings.securityLogGetLoggingEnabledProperty()).thenReturn(true);
@@ -5062,6 +5063,7 @@
// Unsuspend personal apps
verify(getServices().packageManagerInternal)
.unsuspendForSuspendingPackage(PLATFORM_PACKAGE_NAME, UserHandle.USER_SYSTEM);
+ verify(getServices().subscriptionManager).setSubscriptionUserHandle(0, null);
}
@Test
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
index ac1667d..c739969 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java
@@ -239,6 +239,8 @@
return mMockSystemServices.locationManager;
case Context.ROLE_SERVICE:
return mMockSystemServices.roleManager;
+ case Context.TELEPHONY_SUBSCRIPTION_SERVICE:
+ return mMockSystemServices.subscriptionManager;
}
throw new UnsupportedOperationException();
}
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/MockSystemServices.java b/services/tests/servicestests/src/com/android/server/devicepolicy/MockSystemServices.java
index cec9d50..2a6a979 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/MockSystemServices.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/MockSystemServices.java
@@ -63,6 +63,7 @@
import android.permission.IPermissionManager;
import android.provider.Settings;
import android.security.KeyChain;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.test.mock.MockContentProvider;
import android.test.mock.MockContentResolver;
@@ -135,6 +136,7 @@
public final DevicePolicyManager devicePolicyManager;
public final LocationManager locationManager;
public final RoleManager roleManager;
+ public final SubscriptionManager subscriptionManager;
/** Note this is a partial mock, not a real mock. */
public final PackageManager packageManager;
public final BuildMock buildMock = new BuildMock();
@@ -188,6 +190,7 @@
devicePolicyManager = mock(DevicePolicyManager.class);
locationManager = mock(LocationManager.class);
roleManager = realContext.getSystemService(RoleManager.class);
+ subscriptionManager = mock(SubscriptionManager.class);
// Package manager is huge, so we use a partial mock instead.
packageManager = spy(realContext.getPackageManager());
diff --git a/services/tests/servicestests/src/com/android/server/display/HbmEventTest.java b/services/tests/servicestests/src/com/android/server/display/HbmEventTest.java
new file mode 100644
index 0000000..24fc348
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/display/HbmEventTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.display;
+
+import static org.junit.Assert.assertEquals;
+
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public final class HbmEventTest {
+ private long mStartTimeMillis;
+ private long mEndTimeMillis;
+ private HbmEvent mHbmEvent;
+
+ @Before
+ public void setUp() {
+ mStartTimeMillis = 10;
+ mEndTimeMillis = 20;
+ mHbmEvent = new HbmEvent(mStartTimeMillis, mEndTimeMillis);
+ }
+
+ @Test
+ public void getCorrectValues() {
+ assertEquals(mHbmEvent.getStartTimeMillis(), mStartTimeMillis);
+ assertEquals(mHbmEvent.getEndTimeMillis(), mEndTimeMillis);
+ }
+
+ @Test
+ public void toStringGeneratesExpectedString() {
+ String actualString = mHbmEvent.toString();
+ String expectedString = "HbmEvent: {startTimeMillis:" + mStartTimeMillis
+ + ", endTimeMillis: " + mEndTimeMillis + "}, total: "
+ + ((mEndTimeMillis - mStartTimeMillis) / 1000) + "]";
+ assertEquals(actualString, expectedString);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/display/HighBrightnessModeControllerTest.java b/services/tests/servicestests/src/com/android/server/display/HighBrightnessModeControllerTest.java
index a1e5ce7..2655c3f 100644
--- a/services/tests/servicestests/src/com/android/server/display/HighBrightnessModeControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/HighBrightnessModeControllerTest.java
@@ -96,6 +96,7 @@
private Binder mDisplayToken;
private String mDisplayUniqueId;
private Context mContextSpy;
+ private HighBrightnessModeMetadata mHighBrightnessModeMetadata;
@Rule
public FakeSettingsProviderRule mSettingsProviderRule = FakeSettingsProvider.rule();
@@ -118,6 +119,7 @@
mTestLooper = new TestLooper(mClock::now);
mDisplayToken = null;
mDisplayUniqueId = "unique_id";
+
mContextSpy = spy(new ContextWrapper(ApplicationProvider.getApplicationContext()));
final MockContentResolver resolver = mSettingsProviderRule.mockContentResolver(mContextSpy);
when(mContextSpy.getContentResolver()).thenReturn(resolver);
@@ -134,7 +136,8 @@
initHandler(null);
final HighBrightnessModeController hbmc = new HighBrightnessModeController(
mInjectorMock, mHandler, DISPLAY_WIDTH, DISPLAY_HEIGHT, mDisplayToken,
- mDisplayUniqueId, DEFAULT_MIN, DEFAULT_MAX, null, null, () -> {}, mContextSpy);
+ mDisplayUniqueId, DEFAULT_MIN, DEFAULT_MAX, null, null, () -> {},
+ null, mContextSpy);
assertState(hbmc, DEFAULT_MIN, DEFAULT_MAX, HIGH_BRIGHTNESS_MODE_OFF);
assertEquals(hbmc.getTransitionPoint(), HBM_TRANSITION_POINT_INVALID, 0.0f);
}
@@ -144,7 +147,8 @@
initHandler(null);
final HighBrightnessModeController hbmc = new HighBrightnessModeController(
mInjectorMock, mHandler, DISPLAY_WIDTH, DISPLAY_HEIGHT, mDisplayToken,
- mDisplayUniqueId, DEFAULT_MIN, DEFAULT_MAX, null, null, () -> {}, mContextSpy);
+ mDisplayUniqueId, DEFAULT_MIN, DEFAULT_MAX, null, null, () -> {},
+ null, mContextSpy);
hbmc.setAutoBrightnessEnabled(AUTO_BRIGHTNESS_ENABLED);
hbmc.onAmbientLuxChange(MINIMUM_LUX - 1); // below allowed range
assertState(hbmc, DEFAULT_MIN, DEFAULT_MAX, HIGH_BRIGHTNESS_MODE_OFF);
@@ -699,9 +703,12 @@
// Creates instance with standard initialization values.
private HighBrightnessModeController createDefaultHbm(OffsettableClock clock) {
initHandler(clock);
+ if (mHighBrightnessModeMetadata == null) {
+ mHighBrightnessModeMetadata = new HighBrightnessModeMetadata();
+ }
return new HighBrightnessModeController(mInjectorMock, mHandler, DISPLAY_WIDTH,
DISPLAY_HEIGHT, mDisplayToken, mDisplayUniqueId, DEFAULT_MIN, DEFAULT_MAX,
- DEFAULT_HBM_DATA, null, () -> {}, mContextSpy);
+ DEFAULT_HBM_DATA, null, () -> {}, mHighBrightnessModeMetadata, mContextSpy);
}
private void initHandler(OffsettableClock clock) {
diff --git a/services/tests/servicestests/src/com/android/server/display/HighBrightnessModeMetadataTest.java b/services/tests/servicestests/src/com/android/server/display/HighBrightnessModeMetadataTest.java
new file mode 100644
index 0000000..ede54e0
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/display/HighBrightnessModeMetadataTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.display;
+
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public final class HighBrightnessModeMetadataTest {
+ private HighBrightnessModeMetadata mHighBrightnessModeMetadata;
+
+ private long mRunningStartTimeMillis = -1;
+
+ @Before
+ public void setUp() {
+ mHighBrightnessModeMetadata = new HighBrightnessModeMetadata();
+ }
+
+ @Test
+ public void checkDefaultValues() {
+ assertEquals(mHighBrightnessModeMetadata.getRunningStartTimeMillis(),
+ mRunningStartTimeMillis);
+ assertEquals(mHighBrightnessModeMetadata.getHbmEventQueue().size(), 0);
+ }
+
+ @Test
+ public void checkSetValues() {
+ mRunningStartTimeMillis = 10;
+ mHighBrightnessModeMetadata.setRunningStartTimeMillis(mRunningStartTimeMillis);
+ assertEquals(mHighBrightnessModeMetadata.getRunningStartTimeMillis(),
+ mRunningStartTimeMillis);
+ HbmEvent expectedHbmEvent = new HbmEvent(10, 20);
+ mHighBrightnessModeMetadata.addHbmEvent(expectedHbmEvent);
+ HbmEvent actualHbmEvent = mHighBrightnessModeMetadata.getHbmEventQueue().peekFirst();
+ assertEquals(expectedHbmEvent.toString(), actualHbmEvent.toString());
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/display/LogicalDisplayMapperTest.java b/services/tests/servicestests/src/com/android/server/display/LogicalDisplayMapperTest.java
index c6a0b0f..a9b7143 100644
--- a/services/tests/servicestests/src/com/android/server/display/LogicalDisplayMapperTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/LogicalDisplayMapperTest.java
@@ -18,6 +18,7 @@
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.DEFAULT_DISPLAY_GROUP;
+import static android.view.Display.TYPE_EXTERNAL;
import static android.view.Display.TYPE_INTERNAL;
import static android.view.Display.TYPE_VIRTUAL;
@@ -177,7 +178,7 @@
@Test
public void testDisplayDeviceAddAndRemove_NonInternalTypes() {
- testDisplayDeviceAddAndRemove_NonInternal(Display.TYPE_EXTERNAL);
+ testDisplayDeviceAddAndRemove_NonInternal(TYPE_EXTERNAL);
testDisplayDeviceAddAndRemove_NonInternal(Display.TYPE_WIFI);
testDisplayDeviceAddAndRemove_NonInternal(Display.TYPE_OVERLAY);
testDisplayDeviceAddAndRemove_NonInternal(TYPE_VIRTUAL);
@@ -222,7 +223,7 @@
@Test
public void testDisplayDeviceAddAndRemove_OneExternalDefault() {
- DisplayDevice device = createDisplayDevice(Display.TYPE_EXTERNAL, 600, 800,
+ DisplayDevice device = createDisplayDevice(TYPE_EXTERNAL, 600, 800,
FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY);
// add
@@ -272,7 +273,7 @@
public void testGetDisplayIdsLocked() {
add(createDisplayDevice(TYPE_INTERNAL, 600, 800,
FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY));
- add(createDisplayDevice(Display.TYPE_EXTERNAL, 600, 800, 0));
+ add(createDisplayDevice(TYPE_EXTERNAL, 600, 800, 0));
add(createDisplayDevice(TYPE_VIRTUAL, 600, 800, 0));
int [] ids = mLogicalDisplayMapper.getDisplayIdsLocked(Process.SYSTEM_UID,
@@ -558,7 +559,7 @@
layout.createDisplayLocked(device1.getDisplayDeviceInfoLocked().address,
true, true, mIdProducer);
layout.createDisplayLocked(device2.getDisplayDeviceInfoLocked().address,
- false, false, mIdProducer);
+ false, true, mIdProducer);
when(mDeviceStateToLayoutMapSpy.get(0)).thenReturn(layout);
layout = new Layout();
@@ -569,6 +570,8 @@
when(mDeviceStateToLayoutMapSpy.get(1)).thenReturn(layout);
when(mDeviceStateToLayoutMapSpy.get(2)).thenReturn(layout);
+ when(mDeviceStateToLayoutMapSpy.size()).thenReturn(4);
+
LogicalDisplay display1 = add(device1);
assertEquals(info(display1).address, info(device1).address);
assertEquals(DEFAULT_DISPLAY, id(display1));
@@ -580,8 +583,14 @@
mLogicalDisplayMapper.setDeviceStateLocked(0, false);
advanceTime(1000);
+ // The new state is not applied until the boot is completed
assertTrue(mLogicalDisplayMapper.getDisplayLocked(device1).isEnabledLocked());
assertFalse(mLogicalDisplayMapper.getDisplayLocked(device2).isEnabledLocked());
+
+ mLogicalDisplayMapper.onBootCompleted();
+ advanceTime(1000);
+ assertTrue(mLogicalDisplayMapper.getDisplayLocked(device1).isEnabledLocked());
+ assertTrue(mLogicalDisplayMapper.getDisplayLocked(device2).isEnabledLocked());
assertFalse(mLogicalDisplayMapper.getDisplayLocked(device1).isInTransitionLocked());
assertFalse(mLogicalDisplayMapper.getDisplayLocked(device2).isInTransitionLocked());
@@ -722,6 +731,23 @@
assertEquals(3, threeDisplaysEnabled.length);
}
+ @Test
+ public void testCreateNewLogicalDisplay() {
+ DisplayDevice device1 = createDisplayDevice(TYPE_EXTERNAL, 600, 800,
+ FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY);
+ when(mDeviceStateToLayoutMapSpy.size()).thenReturn(1);
+ LogicalDisplay display1 = add(device1);
+
+ assertTrue(display1.isEnabledLocked());
+
+ DisplayDevice device2 = createDisplayDevice(TYPE_INTERNAL, 600, 800,
+ FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY);
+ when(mDeviceStateToLayoutMapSpy.size()).thenReturn(2);
+ LogicalDisplay display2 = add(device2);
+
+ assertFalse(display2.isEnabledLocked());
+ }
+
/////////////////
// Helper Methods
/////////////////
diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategyTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategyTest.java
index 4a32796..b92aa9c 100644
--- a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategyTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategyTest.java
@@ -59,8 +59,6 @@
DisplayBrightnessState updatedDisplayBrightnessState =
mTemporaryBrightnessStrategy.updateBrightness(displayPowerRequest);
assertEquals(updatedDisplayBrightnessState, expectedDisplayBrightnessState);
- assertEquals(mTemporaryBrightnessStrategy.getTemporaryScreenBrightness(),
- Float.NaN, 0.0f);
}
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
index 112db76..ad1ecf1 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java
@@ -88,6 +88,7 @@
Looper looper = mTestLooper.getLooper();
mHdmiControlService.setIoLooper(looper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
this.mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
index e4eecc6..3df0449 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
@@ -105,6 +105,7 @@
Looper looper = mTestLooper.getLooper();
hdmiControlService.setIoLooper(looper);
hdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy));
+ hdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
hdmiControlService, mNativeWrapper, hdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
index 2cb46da..61ab99b 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
@@ -101,6 +101,7 @@
Looper looper = mTestLooper.getLooper();
hdmiControlService.setIoLooper(looper);
hdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy));
+ hdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
hdmiControlService, mNativeWrapper, hdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeControlTest.java b/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeControlTest.java
index 8ff87e3..93b151e 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeControlTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeControlTest.java
@@ -154,6 +154,7 @@
HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE,
HdmiControlManager.VOLUME_CONTROL_DISABLED);
mHdmiControlService.setHdmiCecConfig(mHdmiCecConfig);
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mNativeWrapper.setPhysicalAddress(getPhysicalAddress());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java
index 3a57db9..c4c5c2a 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java
@@ -104,6 +104,7 @@
Looper looper = mTestLooper.getLooper();
mHdmiControlService.setIoLooper(looper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
this.mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
index 6a899e8..b571f43 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
@@ -120,6 +120,7 @@
mHdmiControlService.setIoLooper(mMyLooper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
index 0419768..4d8d25a 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
@@ -129,6 +129,7 @@
mHdmiControlService.setIoLooper(mMyLooper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/FakeDeviceConfigWrapper.java b/services/tests/servicestests/src/com/android/server/hdmi/FakeDeviceConfigWrapper.java
new file mode 100644
index 0000000..8780329
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/hdmi/FakeDeviceConfigWrapper.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.hdmi;
+
+import android.provider.DeviceConfig;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Fake class which stubs DeviceConfigWrapper (useful for testing).
+ */
+public class FakeDeviceConfigWrapper extends DeviceConfigWrapper {
+
+ // Set all boolean flags to true such that all unit tests are running with enabled features.
+ @Override
+ boolean getBoolean(String name, boolean defaultValue) {
+ return true;
+ }
+
+ @Override
+ void addOnPropertiesChangedListener(Executor mainExecutor,
+ DeviceConfig.OnPropertiesChangedListener onPropertiesChangedListener) {
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java
index d2fe6da..f27587e 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java
@@ -114,6 +114,7 @@
mHdmiCecNetwork = new HdmiCecNetwork(mHdmiControlServiceSpy,
mHdmiCecController, mHdmiMhlControllerStub);
mHdmiControlServiceSpy.setHdmiCecNetwork(mHdmiCecNetwork);
+ mHdmiControlServiceSpy.setDeviceConfig(new FakeDeviceConfigWrapper());
HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[1];
hdmiPortInfos[0] =
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
index 367f41d..a7232fe 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
@@ -108,6 +108,7 @@
doAnswer(__ -> mCecVersion).when(mHdmiControlServiceSpy).getCecVersion();
doNothing().when(mHdmiControlServiceSpy)
.writeStringSystemProperty(anyString(), anyString());
+ mHdmiControlServiceSpy.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
index de2c218..90acc99 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
@@ -175,6 +175,7 @@
HdmiControlManager.VOLUME_CONTROL_ENABLED);
mMyLooper = mTestLooper.getLooper();
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService);
mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService) {
@Override
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
index 3ed8983..dfab207 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
@@ -141,6 +141,7 @@
};
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mHdmiControlService.setIoLooper(mMyLooper);
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
index b30118c..3796ce9 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
@@ -179,6 +179,7 @@
};
mHdmiControlService.setIoLooper(mTestLooper.getLooper());
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
index 5dd29fd..233fd6e 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
@@ -180,6 +180,7 @@
mHdmiControlService.setIoLooper(mMyLooper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
index 4e5336e..8e5bb13 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
@@ -91,6 +91,7 @@
mHdmiControlService.setIoLooper(myLooper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(contextSpy));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
index aa49a62..6c77405 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
@@ -119,6 +119,7 @@
mHdmiControlServiceSpy.setIoLooper(mMyLooper);
mHdmiControlServiceSpy.setHdmiCecConfig(hdmiCecConfig);
+ mHdmiControlServiceSpy.setDeviceConfig(new FakeDeviceConfigWrapper());
mHdmiControlServiceSpy.onBootPhase(PHASE_SYSTEM_SERVICES_READY);
mNativeWrapper = new FakeNativeWrapper();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java
index bf44e09..c79e219 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiEarcLocalDeviceTxTest.java
@@ -121,6 +121,7 @@
mHdmiControlService.setIoLooper(mMyLooper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java
index 9b8cedf..b0e8ca7 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java
@@ -120,6 +120,7 @@
mNativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
this.mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mHdmiControlService.setCecController(hdmiCecController);
mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService));
mHdmiControlService.initService();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java
index f72ac71..a623841 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java
@@ -93,6 +93,7 @@
Looper looper = mTestLooper.getLooper();
mHdmiControlService.setIoLooper(looper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
this.mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
index f719ca1..1c19341 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
@@ -116,6 +116,7 @@
mHdmiControlService.setIoLooper(mMyLooper);
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
index be62df8..4e8cf4a 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
@@ -175,6 +175,7 @@
mNativeWrapper = new FakeNativeWrapper();
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mHdmiControlService.setCecController(mHdmiCecController);
mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService));
HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[1];
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java
index e3c8939..cac7815 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java
@@ -89,6 +89,7 @@
mLooper = mTestLooper.getLooper();
mHdmiControlServiceSpy.setIoLooper(mLooper);
mHdmiControlServiceSpy.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy));
+ mHdmiControlServiceSpy.setDeviceConfig(new FakeDeviceConfigWrapper());
mNativeWrapper = new FakeNativeWrapper();
mNativeWrapper.setPhysicalAddress(mPhysicalAddress);
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java
index e7557fe..70f9e5c 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java
@@ -97,6 +97,7 @@
mNativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter());
+ mHdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
mHdmiControlService.setCecController(hdmiCecController);
mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService));
HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[2];
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
index c2f706a..b13ef4f 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
@@ -168,6 +168,7 @@
Looper looper = mTestLooper.getLooper();
hdmiControlService.setIoLooper(looper);
hdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
+ hdmiControlService.setDeviceConfig(new FakeDeviceConfigWrapper());
HdmiCecController.NativeWrapper nativeWrapper = new FakeNativeWrapper();
HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper(
hdmiControlService, nativeWrapper, hdmiControlService.getAtomWriter());
diff --git a/services/tests/servicestests/src/com/android/server/input/KeyRemapperTests.kt b/services/tests/servicestests/src/com/android/server/input/KeyRemapperTests.kt
index c22782c..705a5da 100644
--- a/services/tests/servicestests/src/com/android/server/input/KeyRemapperTests.kt
+++ b/services/tests/servicestests/src/com/android/server/input/KeyRemapperTests.kt
@@ -22,6 +22,7 @@
import android.hardware.input.InputManager
import android.os.test.TestLooper
import android.platform.test.annotations.Presubmit
+import android.provider.Settings
import android.view.InputDevice
import android.view.KeyEvent
import androidx.test.core.app.ApplicationProvider
@@ -113,38 +114,75 @@
}
@Test
- fun testKeyRemapping() {
- val keyboard = createKeyboard(DEVICE_ID)
- Mockito.`when`(iInputManager.getInputDevice(DEVICE_ID)).thenReturn(keyboard)
+ fun testKeyRemapping_whenRemappingEnabled() {
+ ModifierRemappingFlag(true).use {
+ val keyboard = createKeyboard(DEVICE_ID)
+ Mockito.`when`(iInputManager.getInputDevice(DEVICE_ID)).thenReturn(keyboard)
- for (i in REMAPPABLE_KEYS.indices) {
- val fromKeyCode = REMAPPABLE_KEYS[i]
- val toKeyCode = REMAPPABLE_KEYS[(i + 1) % REMAPPABLE_KEYS.size]
- mKeyRemapper.remapKey(fromKeyCode, toKeyCode)
+ for (i in REMAPPABLE_KEYS.indices) {
+ val fromKeyCode = REMAPPABLE_KEYS[i]
+ val toKeyCode = REMAPPABLE_KEYS[(i + 1) % REMAPPABLE_KEYS.size]
+ mKeyRemapper.remapKey(fromKeyCode, toKeyCode)
+ testLooper.dispatchNext()
+ }
+
+ val remapping = mKeyRemapper.keyRemapping
+ val expectedSize = REMAPPABLE_KEYS.size
+ assertEquals("Remapping size should be $expectedSize", expectedSize, remapping.size)
+
+ for (i in REMAPPABLE_KEYS.indices) {
+ val fromKeyCode = REMAPPABLE_KEYS[i]
+ val toKeyCode = REMAPPABLE_KEYS[(i + 1) % REMAPPABLE_KEYS.size]
+ assertEquals(
+ "Remapping should include mapping from $fromKeyCode to $toKeyCode",
+ toKeyCode,
+ remapping.getOrDefault(fromKeyCode, -1)
+ )
+ }
+
+ mKeyRemapper.clearAllKeyRemappings()
testLooper.dispatchNext()
- }
- val remapping = mKeyRemapper.keyRemapping
- val expectedSize = REMAPPABLE_KEYS.size
- assertEquals("Remapping size should be $expectedSize", expectedSize, remapping.size)
-
- for (i in REMAPPABLE_KEYS.indices) {
- val fromKeyCode = REMAPPABLE_KEYS[i]
- val toKeyCode = REMAPPABLE_KEYS[(i + 1) % REMAPPABLE_KEYS.size]
assertEquals(
- "Remapping should include mapping from $fromKeyCode to $toKeyCode",
- toKeyCode,
- remapping.getOrDefault(fromKeyCode, -1)
+ "Remapping size should be 0 after clearAllModifierKeyRemappings",
+ 0,
+ mKeyRemapper.keyRemapping.size
+ )
+ }
+ }
+
+ @Test
+ fun testKeyRemapping_whenRemappingDisabled() {
+ ModifierRemappingFlag(false).use {
+ val keyboard = createKeyboard(DEVICE_ID)
+ Mockito.`when`(iInputManager.getInputDevice(DEVICE_ID)).thenReturn(keyboard)
+
+ mKeyRemapper.remapKey(REMAPPABLE_KEYS[0], REMAPPABLE_KEYS[1])
+ testLooper.dispatchAll()
+
+ val remapping = mKeyRemapper.keyRemapping
+ assertEquals(
+ "Remapping should not be done if modifier key remapping is disabled",
+ 0,
+ remapping.size
+ )
+ }
+ }
+
+ private inner class ModifierRemappingFlag constructor(enabled: Boolean) : AutoCloseable {
+ init {
+ Settings.Global.putString(
+ context.contentResolver,
+ "settings_new_keyboard_modifier_key", enabled.toString()
)
}
- mKeyRemapper.clearAllKeyRemappings()
- testLooper.dispatchNext()
-
- assertEquals(
- "Remapping size should be 0 after clearAllModifierKeyRemappings",
- 0,
- mKeyRemapper.keyRemapping.size
- )
+ override fun close() {
+ Settings.Global.putString(
+ context.contentResolver,
+ "settings_new_keyboard_modifier_key",
+ ""
+ )
+ }
}
}
\ No newline at end of file
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
index 858f658..d9d0715 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
@@ -50,6 +50,8 @@
import android.content.ContextWrapper;
import android.content.pm.UserInfo;
import android.hardware.rebootescrow.IRebootEscrow;
+import android.net.ConnectivityManager;
+import android.net.Network;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.RemoteException;
@@ -72,6 +74,7 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.function.Consumer;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
@@ -113,6 +116,7 @@
private RebootEscrowManager mService;
private SecretKey mAesKey;
private MockInjector mMockInjector;
+ private Handler mHandler;
public interface MockableRebootEscrowInjected {
int getBootCount();
@@ -131,6 +135,9 @@
private final RebootEscrowKeyStoreManager mKeyStoreManager;
private boolean mServerBased;
private RebootEscrowProviderInterface mRebootEscrowProviderInUse;
+ private ConnectivityManager.NetworkCallback mNetworkCallback;
+ private Consumer<ConnectivityManager.NetworkCallback> mNetworkConsumer;
+ private boolean mWaitForInternet;
MockInjector(Context context, UserManager userManager,
IRebootEscrow rebootEscrow,
@@ -140,6 +147,7 @@
super(context, storage);
mRebootEscrow = rebootEscrow;
mServerBased = false;
+ mWaitForInternet = false;
RebootEscrowProviderHalImpl.Injector halInjector =
new RebootEscrowProviderHalImpl.Injector() {
@Override
@@ -161,6 +169,7 @@
super(context, storage);
mRebootEscrow = null;
mServerBased = true;
+ mWaitForInternet = false;
RebootEscrowProviderServerBasedImpl.Injector injector =
new RebootEscrowProviderServerBasedImpl.Injector(serviceConnection) {
@Override
@@ -196,11 +205,33 @@
}
@Override
+ public boolean waitForInternet() {
+ return mWaitForInternet;
+ }
+
+ public void setWaitForNetwork(boolean waitForNetworkEnabled) {
+ mWaitForInternet = waitForNetworkEnabled;
+ }
+
+ @Override
public boolean isNetworkConnected() {
return false;
}
@Override
+ public boolean requestNetworkWithInternet(
+ ConnectivityManager.NetworkCallback networkCallback) {
+ mNetworkCallback = networkCallback;
+ mNetworkConsumer.accept(networkCallback);
+ return true;
+ }
+
+ @Override
+ public void stopRequestingNetwork(ConnectivityManager.NetworkCallback networkCallback) {
+ mNetworkCallback = null;
+ }
+
+ @Override
public RebootEscrowProviderInterface createRebootEscrowProviderIfNeeded() {
mRebootEscrowProviderInUse = mDefaultRebootEscrowProvider;
return mRebootEscrowProviderInUse;
@@ -239,6 +270,12 @@
}
@Override
+ public int getLoadEscrowTimeoutMillis() {
+ // Timeout in 3 seconds.
+ return 3000;
+ }
+
+ @Override
public String getVbmetaDigest(boolean other) {
return other ? "" : "fake digest";
}
@@ -288,6 +325,9 @@
mMockInjector = new MockInjector(mContext, mUserManager, mRebootEscrow,
mKeyStoreManager, mStorage, mInjected);
mService = new RebootEscrowManager(mMockInjector, mCallbacks, mStorage);
+ HandlerThread thread = new HandlerThread("RebootEscrowManagerTest");
+ thread.start();
+ mHandler = new Handler(thread.getLooper());
}
private void setServerBasedRebootEscrowProvider() throws Exception {
@@ -459,7 +499,7 @@
@Test
public void loadRebootEscrowDataIfAvailable_NothingAvailable_Success() throws Exception {
- mService.loadRebootEscrowDataIfAvailable(null);
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
}
@Test
@@ -496,7 +536,7 @@
eq(20), eq(0) /* vbmeta status */, anyInt());
when(mRebootEscrow.retrieveKey()).thenAnswer(invocation -> keyByteCaptor.getValue());
- mService.loadRebootEscrowDataIfAvailable(null);
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
verify(mRebootEscrow).retrieveKey();
assertTrue(metricsSuccessCaptor.getValue());
verify(mKeyStoreManager).clearKeyStoreEncryptionKey();
@@ -528,9 +568,16 @@
// pretend reboot happens here
when(mInjected.getBootCount()).thenReturn(1);
ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
- doNothing().when(mInjected).reportMetric(metricsSuccessCaptor.capture(),
- eq(0) /* error code */, eq(2) /* Server based */, eq(1) /* attempt count */,
- anyInt(), eq(0) /* vbmeta status */, anyInt());
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ eq(0) /* error code */,
+ eq(2) /* Server based */,
+ eq(1) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
when(mServiceConnection.unwrap(any(), anyLong()))
.thenAnswer(invocation -> invocation.getArgument(0));
@@ -566,15 +613,23 @@
when(mInjected.getBootCount()).thenReturn(1);
ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
ArgumentCaptor<Integer> metricsErrorCodeCaptor = ArgumentCaptor.forClass(Integer.class);
- doNothing().when(mInjected).reportMetric(metricsSuccessCaptor.capture(),
- metricsErrorCodeCaptor.capture(), eq(2) /* Server based */,
- eq(1) /* attempt count */, anyInt(), eq(0) /* vbmeta status */, anyInt());
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ metricsErrorCodeCaptor.capture(),
+ eq(2) /* Server based */,
+ eq(1) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
when(mServiceConnection.unwrap(any(), anyLong())).thenThrow(RemoteException.class);
mService.loadRebootEscrowDataIfAvailable(null);
verify(mServiceConnection).unwrap(any(), anyLong());
assertFalse(metricsSuccessCaptor.getValue());
- assertEquals(Integer.valueOf(RebootEscrowManager.ERROR_LOAD_ESCROW_KEY),
+ assertEquals(
+ Integer.valueOf(RebootEscrowManager.ERROR_LOAD_ESCROW_KEY),
metricsErrorCodeCaptor.getValue());
}
@@ -603,18 +658,24 @@
when(mInjected.getBootCount()).thenReturn(1);
ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
ArgumentCaptor<Integer> metricsErrorCodeCaptor = ArgumentCaptor.forClass(Integer.class);
- doNothing().when(mInjected).reportMetric(metricsSuccessCaptor.capture(),
- metricsErrorCodeCaptor.capture(), eq(2) /* Server based */,
- eq(2) /* attempt count */, anyInt(), eq(0) /* vbmeta status */, anyInt());
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ metricsErrorCodeCaptor.capture(),
+ eq(2) /* Server based */,
+ eq(2) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
when(mServiceConnection.unwrap(any(), anyLong())).thenThrow(IOException.class);
- HandlerThread thread = new HandlerThread("RebootEscrowManagerTest");
- thread.start();
- mService.loadRebootEscrowDataIfAvailable(new Handler(thread.getLooper()));
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
// Sleep 5s for the retry to complete
Thread.sleep(5 * 1000);
assertFalse(metricsSuccessCaptor.getValue());
- assertEquals(Integer.valueOf(RebootEscrowManager.ERROR_NO_NETWORK),
+ assertEquals(
+ Integer.valueOf(RebootEscrowManager.ERROR_NO_NETWORK),
metricsErrorCodeCaptor.getValue());
}
@@ -642,16 +703,22 @@
// pretend reboot happens here
when(mInjected.getBootCount()).thenReturn(1);
ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
- doNothing().when(mInjected).reportMetric(metricsSuccessCaptor.capture(),
- anyInt(), anyInt(), eq(2) /* attempt count */, anyInt(), anyInt(), anyInt());
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ anyInt(),
+ anyInt(),
+ eq(2) /* attempt count */,
+ anyInt(),
+ anyInt(),
+ anyInt());
when(mServiceConnection.unwrap(any(), anyLong()))
.thenThrow(new IOException())
.thenAnswer(invocation -> invocation.getArgument(0));
- HandlerThread thread = new HandlerThread("RebootEscrowManagerTest");
- thread.start();
- mService.loadRebootEscrowDataIfAvailable(new Handler(thread.getLooper()));
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
// Sleep 5s for the retry to complete
Thread.sleep(5 * 1000);
verify(mServiceConnection, times(2)).unwrap(any(), anyLong());
@@ -660,6 +727,447 @@
}
@Test
+ public void loadRebootEscrowDataIfAvailable_serverBasedWaitForInternet_success()
+ throws Exception {
+ setServerBasedRebootEscrowProvider();
+ mMockInjector.setWaitForNetwork(true);
+
+ when(mInjected.getBootCount()).thenReturn(0);
+ RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+ mService.setRebootEscrowListener(mockListener);
+ mService.prepareRebootEscrow();
+
+ clearInvocations(mServiceConnection);
+ mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+ verify(mockListener).onPreparedForReboot(eq(true));
+ verify(mServiceConnection, never()).wrapBlob(any(), anyLong(), anyLong());
+
+ // Use x -> x for both wrap & unwrap functions.
+ when(mServiceConnection.wrapBlob(any(), anyLong(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ assertEquals(ARM_REBOOT_ERROR_NONE, mService.armRebootEscrowIfNeeded());
+ verify(mServiceConnection).wrapBlob(any(), anyLong(), anyLong());
+ assertTrue(mStorage.hasRebootEscrowServerBlob());
+
+ // pretend reboot happens here
+ when(mInjected.getBootCount()).thenReturn(1);
+ ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ eq(0) /* error code */,
+ eq(2) /* Server based */,
+ eq(1) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
+
+ // load escrow data
+ when(mServiceConnection.unwrap(any(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ Network mockNetwork = mock(Network.class);
+ mMockInjector.mNetworkConsumer =
+ (callback) -> {
+ callback.onAvailable(mockNetwork);
+ };
+
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
+ verify(mServiceConnection).unwrap(any(), anyLong());
+ assertTrue(metricsSuccessCaptor.getValue());
+ verify(mKeyStoreManager).clearKeyStoreEncryptionKey();
+ assertNull(mMockInjector.mNetworkCallback);
+ }
+
+ @Test
+ public void loadRebootEscrowDataIfAvailable_serverBasedWaitForInternetRemoteException_Failure()
+ throws Exception {
+ setServerBasedRebootEscrowProvider();
+ mMockInjector.setWaitForNetwork(true);
+
+ when(mInjected.getBootCount()).thenReturn(0);
+ RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+ mService.setRebootEscrowListener(mockListener);
+ mService.prepareRebootEscrow();
+
+ clearInvocations(mServiceConnection);
+ mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+ verify(mockListener).onPreparedForReboot(eq(true));
+ verify(mServiceConnection, never()).wrapBlob(any(), anyLong(), anyLong());
+
+ // Use x -> x for both wrap & unwrap functions.
+ when(mServiceConnection.wrapBlob(any(), anyLong(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ assertEquals(ARM_REBOOT_ERROR_NONE, mService.armRebootEscrowIfNeeded());
+ verify(mServiceConnection).wrapBlob(any(), anyLong(), anyLong());
+ assertTrue(mStorage.hasRebootEscrowServerBlob());
+
+ // pretend reboot happens here
+ when(mInjected.getBootCount()).thenReturn(1);
+ ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Integer> metricsErrorCodeCaptor = ArgumentCaptor.forClass(Integer.class);
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ metricsErrorCodeCaptor.capture(),
+ eq(2) /* Server based */,
+ eq(1) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
+
+ // load escrow data
+ when(mServiceConnection.unwrap(any(), anyLong())).thenThrow(RemoteException.class);
+ Network mockNetwork = mock(Network.class);
+ mMockInjector.mNetworkConsumer =
+ (callback) -> {
+ callback.onAvailable(mockNetwork);
+ };
+
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
+ verify(mServiceConnection).unwrap(any(), anyLong());
+ assertFalse(metricsSuccessCaptor.getValue());
+ assertEquals(
+ Integer.valueOf(RebootEscrowManager.ERROR_LOAD_ESCROW_KEY),
+ metricsErrorCodeCaptor.getValue());
+ assertNull(mMockInjector.mNetworkCallback);
+ }
+
+ @Test
+ public void loadRebootEscrowDataIfAvailable_waitForInternet_networkUnavailable()
+ throws Exception {
+ setServerBasedRebootEscrowProvider();
+ mMockInjector.setWaitForNetwork(true);
+
+ when(mInjected.getBootCount()).thenReturn(0);
+ RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+ mService.setRebootEscrowListener(mockListener);
+ mService.prepareRebootEscrow();
+
+ clearInvocations(mServiceConnection);
+ mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+ verify(mockListener).onPreparedForReboot(eq(true));
+ verify(mServiceConnection, never()).wrapBlob(any(), anyLong(), anyLong());
+
+ // Use x -> x for both wrap & unwrap functions.
+ when(mServiceConnection.wrapBlob(any(), anyLong(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ assertEquals(ARM_REBOOT_ERROR_NONE, mService.armRebootEscrowIfNeeded());
+ verify(mServiceConnection).wrapBlob(any(), anyLong(), anyLong());
+ assertTrue(mStorage.hasRebootEscrowServerBlob());
+
+ // pretend reboot happens here
+ when(mInjected.getBootCount()).thenReturn(1);
+ ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Integer> metricsErrorCodeCaptor = ArgumentCaptor.forClass(Integer.class);
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ metricsErrorCodeCaptor.capture(),
+ eq(2) /* Server based */,
+ eq(0) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
+
+ // Network is not available within timeout.
+ mMockInjector.mNetworkConsumer = ConnectivityManager.NetworkCallback::onUnavailable;
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
+ assertFalse(metricsSuccessCaptor.getValue());
+ assertEquals(
+ Integer.valueOf(RebootEscrowManager.ERROR_NO_NETWORK),
+ metricsErrorCodeCaptor.getValue());
+ assertNull(mMockInjector.mNetworkCallback);
+ }
+
+ @Test
+ public void loadRebootEscrowDataIfAvailable_waitForInternet_networkLost() throws Exception {
+ setServerBasedRebootEscrowProvider();
+ mMockInjector.setWaitForNetwork(true);
+
+ when(mInjected.getBootCount()).thenReturn(0);
+ RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+ mService.setRebootEscrowListener(mockListener);
+ mService.prepareRebootEscrow();
+
+ clearInvocations(mServiceConnection);
+ mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+ verify(mockListener).onPreparedForReboot(eq(true));
+ verify(mServiceConnection, never()).wrapBlob(any(), anyLong(), anyLong());
+
+ // Use x -> x for both wrap & unwrap functions.
+ when(mServiceConnection.wrapBlob(any(), anyLong(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ assertEquals(ARM_REBOOT_ERROR_NONE, mService.armRebootEscrowIfNeeded());
+ verify(mServiceConnection).wrapBlob(any(), anyLong(), anyLong());
+ assertTrue(mStorage.hasRebootEscrowServerBlob());
+
+ // pretend reboot happens here
+ when(mInjected.getBootCount()).thenReturn(1);
+ ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Integer> metricsErrorCodeCaptor = ArgumentCaptor.forClass(Integer.class);
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ metricsErrorCodeCaptor.capture(),
+ eq(2) /* Server based */,
+ eq(2) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
+
+ // Network is available, then lost.
+ when(mServiceConnection.unwrap(any(), anyLong())).thenThrow(new IOException());
+ Network mockNetwork = mock(Network.class);
+ mMockInjector.mNetworkConsumer =
+ (callback) -> {
+ callback.onAvailable(mockNetwork);
+ callback.onLost(mockNetwork);
+ };
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
+ // Sleep 5s for the retry to complete
+ Thread.sleep(5 * 1000);
+ assertFalse(metricsSuccessCaptor.getValue());
+ assertEquals(
+ Integer.valueOf(RebootEscrowManager.ERROR_NO_NETWORK),
+ metricsErrorCodeCaptor.getValue());
+ assertNull(mMockInjector.mNetworkCallback);
+ }
+
+ @Test
+ public void loadRebootEscrowDataIfAvailable_waitForInternet_networkAvailableWithDelay()
+ throws Exception {
+ setServerBasedRebootEscrowProvider();
+ mMockInjector.setWaitForNetwork(true);
+
+ when(mInjected.getBootCount()).thenReturn(0);
+ RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+ mService.setRebootEscrowListener(mockListener);
+ mService.prepareRebootEscrow();
+
+ clearInvocations(mServiceConnection);
+ mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+ verify(mockListener).onPreparedForReboot(eq(true));
+ verify(mServiceConnection, never()).wrapBlob(any(), anyLong(), anyLong());
+
+ // Use x -> x for both wrap & unwrap functions.
+ when(mServiceConnection.wrapBlob(any(), anyLong(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ assertEquals(ARM_REBOOT_ERROR_NONE, mService.armRebootEscrowIfNeeded());
+ verify(mServiceConnection).wrapBlob(any(), anyLong(), anyLong());
+ assertTrue(mStorage.hasRebootEscrowServerBlob());
+
+ // pretend reboot happens here
+ when(mInjected.getBootCount()).thenReturn(1);
+ ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Integer> metricsErrorCodeCaptor = ArgumentCaptor.forClass(Integer.class);
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ metricsErrorCodeCaptor.capture(),
+ eq(2) /* Server based */,
+ eq(1) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
+
+ // load escrow data
+ when(mServiceConnection.unwrap(any(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ // network available after 1 sec
+ Network mockNetwork = mock(Network.class);
+ mMockInjector.mNetworkConsumer =
+ (callback) -> {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ callback.onAvailable(mockNetwork);
+ };
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
+ verify(mServiceConnection).unwrap(any(), anyLong());
+ assertTrue(metricsSuccessCaptor.getValue());
+ verify(mKeyStoreManager).clearKeyStoreEncryptionKey();
+ assertNull(mMockInjector.mNetworkCallback);
+ }
+
+ @Test
+ public void loadRebootEscrowDataIfAvailable_waitForInternet_timeoutExhausted()
+ throws Exception {
+ setServerBasedRebootEscrowProvider();
+ mMockInjector.setWaitForNetwork(true);
+
+ when(mInjected.getBootCount()).thenReturn(0);
+ RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+ mService.setRebootEscrowListener(mockListener);
+ mService.prepareRebootEscrow();
+
+ clearInvocations(mServiceConnection);
+ mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+ verify(mockListener).onPreparedForReboot(eq(true));
+ verify(mServiceConnection, never()).wrapBlob(any(), anyLong(), anyLong());
+
+ // Use x -> x for both wrap & unwrap functions.
+ when(mServiceConnection.wrapBlob(any(), anyLong(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ assertEquals(ARM_REBOOT_ERROR_NONE, mService.armRebootEscrowIfNeeded());
+ verify(mServiceConnection).wrapBlob(any(), anyLong(), anyLong());
+ assertTrue(mStorage.hasRebootEscrowServerBlob());
+
+ // pretend reboot happens here
+ when(mInjected.getBootCount()).thenReturn(1);
+ ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Integer> metricsErrorCodeCaptor = ArgumentCaptor.forClass(Integer.class);
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ metricsErrorCodeCaptor.capture(),
+ eq(2) /* Server based */,
+ eq(1) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
+
+ // load reboot escrow data
+ when(mServiceConnection.unwrap(any(), anyLong())).thenThrow(IOException.class);
+ Network mockNetwork = mock(Network.class);
+ // wait past timeout
+ mMockInjector.mNetworkConsumer =
+ (callback) -> {
+ try {
+ Thread.sleep(3500);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ callback.onAvailable(mockNetwork);
+ };
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
+ verify(mServiceConnection).unwrap(any(), anyLong());
+ assertFalse(metricsSuccessCaptor.getValue());
+ assertEquals(
+ Integer.valueOf(RebootEscrowManager.ERROR_TIMEOUT_EXHAUSTED),
+ metricsErrorCodeCaptor.getValue());
+ assertNull(mMockInjector.mNetworkCallback);
+ }
+
+ @Test
+ public void loadRebootEscrowDataIfAvailable_serverBasedWaitForNetwork_retryCountExhausted()
+ throws Exception {
+ setServerBasedRebootEscrowProvider();
+ mMockInjector.setWaitForNetwork(true);
+
+ when(mInjected.getBootCount()).thenReturn(0);
+ RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+ mService.setRebootEscrowListener(mockListener);
+ mService.prepareRebootEscrow();
+
+ clearInvocations(mServiceConnection);
+ mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+ verify(mockListener).onPreparedForReboot(eq(true));
+ verify(mServiceConnection, never()).wrapBlob(any(), anyLong(), anyLong());
+
+ // Use x -> x for both wrap & unwrap functions.
+ when(mServiceConnection.wrapBlob(any(), anyLong(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ assertEquals(ARM_REBOOT_ERROR_NONE, mService.armRebootEscrowIfNeeded());
+ verify(mServiceConnection).wrapBlob(any(), anyLong(), anyLong());
+ assertTrue(mStorage.hasRebootEscrowServerBlob());
+
+ // pretend reboot happens here
+ when(mInjected.getBootCount()).thenReturn(1);
+ ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
+ ArgumentCaptor<Integer> metricsErrorCodeCaptor = ArgumentCaptor.forClass(Integer.class);
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ metricsErrorCodeCaptor.capture(),
+ eq(2) /* Server based */,
+ eq(2) /* attempt count */,
+ anyInt(),
+ eq(0) /* vbmeta status */,
+ anyInt());
+
+ when(mServiceConnection.unwrap(any(), anyLong())).thenThrow(new IOException());
+ Network mockNetwork = mock(Network.class);
+ mMockInjector.mNetworkConsumer =
+ (callback) -> {
+ callback.onAvailable(mockNetwork);
+ };
+
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
+ // Sleep 5s for the retry to complete
+ Thread.sleep(5 * 1000);
+ verify(mServiceConnection, times(2)).unwrap(any(), anyLong());
+ assertFalse(metricsSuccessCaptor.getValue());
+ assertEquals(
+ Integer.valueOf(RebootEscrowManager.ERROR_RETRY_COUNT_EXHAUSTED),
+ metricsErrorCodeCaptor.getValue());
+ assertNull(mMockInjector.mNetworkCallback);
+ }
+
+ @Test
+ public void loadRebootEscrowDataIfAvailable_ServerBasedWaitForInternet_RetrySuccess()
+ throws Exception {
+ setServerBasedRebootEscrowProvider();
+ mMockInjector.setWaitForNetwork(true);
+
+ when(mInjected.getBootCount()).thenReturn(0);
+ RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+ mService.setRebootEscrowListener(mockListener);
+ mService.prepareRebootEscrow();
+
+ clearInvocations(mServiceConnection);
+ mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+ verify(mockListener).onPreparedForReboot(eq(true));
+ verify(mServiceConnection, never()).wrapBlob(any(), anyLong(), anyLong());
+
+ // Use x -> x for both wrap & unwrap functions.
+ when(mServiceConnection.wrapBlob(any(), anyLong(), anyLong()))
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ assertEquals(ARM_REBOOT_ERROR_NONE, mService.armRebootEscrowIfNeeded());
+ verify(mServiceConnection).wrapBlob(any(), anyLong(), anyLong());
+ assertTrue(mStorage.hasRebootEscrowServerBlob());
+
+ // pretend reboot happens here
+ when(mInjected.getBootCount()).thenReturn(1);
+ ArgumentCaptor<Boolean> metricsSuccessCaptor = ArgumentCaptor.forClass(Boolean.class);
+ doNothing()
+ .when(mInjected)
+ .reportMetric(
+ metricsSuccessCaptor.capture(),
+ anyInt(),
+ anyInt(),
+ eq(2) /* attempt count */,
+ anyInt(),
+ anyInt(),
+ anyInt());
+
+ when(mServiceConnection.unwrap(any(), anyLong()))
+ .thenThrow(new IOException())
+ .thenAnswer(invocation -> invocation.getArgument(0));
+ Network mockNetwork = mock(Network.class);
+ mMockInjector.mNetworkConsumer =
+ (callback) -> {
+ callback.onAvailable(mockNetwork);
+ };
+
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
+ // Sleep 5s for the retry to complete
+ Thread.sleep(5 * 1000);
+ verify(mServiceConnection, times(2)).unwrap(any(), anyLong());
+ assertTrue(metricsSuccessCaptor.getValue());
+ verify(mKeyStoreManager).clearKeyStoreEncryptionKey();
+ assertNull(mMockInjector.mNetworkCallback);
+ }
+
+ @Test
public void loadRebootEscrowDataIfAvailable_TooManyBootsInBetween_NoMetrics() throws Exception {
when(mInjected.getBootCount()).thenReturn(0);
@@ -684,7 +1192,7 @@
when(mInjected.getBootCount()).thenReturn(10);
when(mRebootEscrow.retrieveKey()).thenReturn(new byte[32]);
- mService.loadRebootEscrowDataIfAvailable(null);
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
verify(mRebootEscrow).retrieveKey();
verify(mInjected, never()).reportMetric(anyBoolean(), anyInt(), anyInt(), anyInt(),
anyInt(), anyInt(), anyInt());
@@ -712,7 +1220,7 @@
when(mInjected.getBootCount()).thenReturn(10);
when(mRebootEscrow.retrieveKey()).thenReturn(new byte[32]);
- mService.loadRebootEscrowDataIfAvailable(null);
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
verify(mInjected, never()).reportMetric(anyBoolean(), anyInt(), anyInt(), anyInt(),
anyInt(), anyInt(), anyInt());
}
@@ -750,7 +1258,7 @@
// Trigger a vbmeta digest mismatch
mStorage.setString(RebootEscrowManager.REBOOT_ESCROW_KEY_VBMETA_DIGEST,
"non sense value", USER_SYSTEM);
- mService.loadRebootEscrowDataIfAvailable(null);
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
verify(mInjected).reportMetric(eq(true), eq(0) /* error code */, eq(1) /* HAL based */,
eq(1) /* attempt count */, anyInt(), eq(2) /* vbmeta status */, anyInt());
assertEquals(mStorage.getString(RebootEscrowManager.REBOOT_ESCROW_KEY_VBMETA_DIGEST,
@@ -787,7 +1295,7 @@
eq(1) /* attempt count */, anyInt(), anyInt(), anyInt());
when(mRebootEscrow.retrieveKey()).thenAnswer(invocation -> null);
- mService.loadRebootEscrowDataIfAvailable(null);
+ mService.loadRebootEscrowDataIfAvailable(mHandler);
verify(mRebootEscrow).retrieveKey();
assertFalse(metricsSuccessCaptor.getValue());
assertEquals(Integer.valueOf(RebootEscrowManager.ERROR_LOAD_ESCROW_KEY),
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt b/services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt
index 7be4921..1352ade 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayReferenceMapperTests.kt
@@ -236,13 +236,13 @@
whenever(packageName) { "$TARGET_PACKAGE_NAME$increment" }
whenever(overlayables) { mapOf("overlayableName$increment" to ACTOR_NAME) }
whenever(toString()) { "Package{$packageName}" }
- whenever(isOverlay) { false }
+ whenever(isResourceOverlay) { false }
}
private fun mockOverlay(increment: Int = 0) = mockThrowOnUnmocked<AndroidPackage> {
whenever(packageName) { "$OVERLAY_PACKAGE_NAME$increment" }
whenever(overlayables) { emptyMap<String, String>() }
whenever(toString()) { "Package{$packageName}" }
- whenever(isOverlay) { true }
+ whenever(isResourceOverlay) { true }
}
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserLifecycleStressTest.java b/services/tests/servicestests/src/com/android/server/pm/UserLifecycleStressTest.java
index bbe8907..b00fb92 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserLifecycleStressTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserLifecycleStressTest.java
@@ -29,6 +29,7 @@
import android.os.RemoteException;
import android.os.UserManager;
import android.platform.test.annotations.Postsubmit;
+import android.provider.Settings;
import android.util.Log;
import androidx.test.InstrumentationRegistry;
@@ -37,6 +38,7 @@
import com.android.internal.util.FunctionalUtils;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -62,12 +64,22 @@
private Context mContext;
private UserManager mUserManager;
private ActivityManager mActivityManager;
+ private String mRemoveGuestOnExitOriginalValue;
@Before
public void setup() {
mContext = InstrumentationRegistry.getInstrumentation().getContext();
mUserManager = mContext.getSystemService(UserManager.class);
mActivityManager = mContext.getSystemService(ActivityManager.class);
+ mRemoveGuestOnExitOriginalValue = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.REMOVE_GUEST_ON_EXIT);
+
+ }
+
+ @After
+ public void tearDown() {
+ Settings.Global.putString(mContext.getContentResolver(),
+ Settings.Global.REMOVE_GUEST_ON_EXIT, mRemoveGuestOnExitOriginalValue);
}
/**
@@ -105,6 +117,9 @@
**/
@Test
public void switchToExistingGuestAndStartOverStressTest() throws Exception {
+ Settings.Global.putString(mContext.getContentResolver(),
+ Settings.Global.REMOVE_GUEST_ON_EXIT, "0");
+
if (ActivityManager.getCurrentUser() != USER_SYSTEM) {
switchUser(USER_SYSTEM);
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserPropertiesTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserPropertiesTest.java
index 9625188..26d0ddf 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserPropertiesTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserPropertiesTest.java
@@ -63,6 +63,7 @@
.setInheritDevicePolicy(67)
.setUseParentsContacts(false)
.setCrossProfileIntentFilterAccessControl(10)
+ .setCrossProfileIntentResolutionStrategy(0)
.build();
final UserProperties actualProps = new UserProperties(defaultProps);
actualProps.setShowInLauncher(14);
@@ -70,6 +71,7 @@
actualProps.setInheritDevicePolicy(51);
actualProps.setUseParentsContacts(true);
actualProps.setCrossProfileIntentFilterAccessControl(20);
+ actualProps.setCrossProfileIntentResolutionStrategy(1);
// Write the properties to xml.
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -154,6 +156,8 @@
copy::getInheritDevicePolicy, exposeAll);
assertEqualGetterOrThrows(orig::getCrossProfileIntentFilterAccessControl,
copy::getCrossProfileIntentFilterAccessControl, exposeAll);
+ assertEqualGetterOrThrows(orig::getCrossProfileIntentResolutionStrategy,
+ copy::getCrossProfileIntentResolutionStrategy, exposeAll);
// Items requiring hasManagePermission - put them here using hasManagePermission.
assertEqualGetterOrThrows(orig::getShowInSettings, copy::getShowInSettings,
@@ -209,5 +213,7 @@
assertThat(expected.getUseParentsContacts()).isEqualTo(actual.getUseParentsContacts());
assertThat(expected.getCrossProfileIntentFilterAccessControl())
.isEqualTo(actual.getCrossProfileIntentFilterAccessControl());
+ assertThat(expected.getCrossProfileIntentResolutionStrategy())
+ .isEqualTo(actual.getCrossProfileIntentResolutionStrategy());
}
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserTypeTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserTypeTest.java
index 1151222..928c6ef 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserTypeTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerServiceUserTypeTest.java
@@ -85,7 +85,8 @@
final UserProperties.Builder userProps = new UserProperties.Builder()
.setShowInLauncher(17)
.setUseParentsContacts(true)
- .setCrossProfileIntentFilterAccessControl(10);
+ .setCrossProfileIntentFilterAccessControl(10)
+ .setCrossProfileIntentResolutionStrategy(1);
final UserTypeDetails type = new UserTypeDetails.Builder()
.setName("a.name")
.setEnabled(1)
@@ -145,6 +146,8 @@
assertTrue(type.getDefaultUserPropertiesReference().getUseParentsContacts());
assertEquals(10, type.getDefaultUserPropertiesReference()
.getCrossProfileIntentFilterAccessControl());
+ assertEquals(1, type.getDefaultUserPropertiesReference()
+ .getCrossProfileIntentResolutionStrategy());
assertEquals(23, type.getBadgeLabel(0));
assertEquals(24, type.getBadgeLabel(1));
@@ -191,6 +194,8 @@
assertEquals(UserProperties.CROSS_PROFILE_INTENT_FILTER_ACCESS_LEVEL_ALL,
props.getCrossProfileIntentFilterAccessControl());
assertEquals(UserProperties.SHOW_IN_LAUNCHER_WITH_PARENT, props.getShowInLauncher());
+ assertEquals(UserProperties.CROSS_PROFILE_INTENT_RESOLUTION_STRATEGY_DEFAULT,
+ props.getCrossProfileIntentResolutionStrategy());
assertFalse(type.hasBadge());
}
@@ -273,7 +278,8 @@
.setShowInLauncher(19)
.setStartWithParent(true)
.setUseParentsContacts(true)
- .setCrossProfileIntentFilterAccessControl(10);
+ .setCrossProfileIntentFilterAccessControl(10)
+ .setCrossProfileIntentResolutionStrategy(1);
final ArrayMap<String, UserTypeDetails.Builder> builders = new ArrayMap<>();
builders.put(userTypeAosp1, new UserTypeDetails.Builder()
.setName(userTypeAosp1)
@@ -301,6 +307,8 @@
assertEquals(19, aospType.getDefaultUserPropertiesReference().getShowInLauncher());
assertEquals(10, aospType.getDefaultUserPropertiesReference()
.getCrossProfileIntentFilterAccessControl());
+ assertEquals(1, aospType.getDefaultUserPropertiesReference()
+ .getCrossProfileIntentResolutionStrategy());
assertTrue(aospType.getDefaultUserPropertiesReference().getStartWithParent());
assertTrue(aospType.getDefaultUserPropertiesReference()
.getUseParentsContacts());
@@ -335,6 +343,8 @@
assertEquals(2020, aospType.getDefaultUserPropertiesReference().getShowInLauncher());
assertEquals(20, aospType.getDefaultUserPropertiesReference()
.getCrossProfileIntentFilterAccessControl());
+ assertEquals(0, aospType.getDefaultUserPropertiesReference()
+ .getCrossProfileIntentResolutionStrategy());
assertFalse(aospType.getDefaultUserPropertiesReference().getStartWithParent());
assertFalse(aospType.getDefaultUserPropertiesReference()
.getUseParentsContacts());
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index 5059ef3..34dad09 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -208,6 +208,8 @@
assertThrows(SecurityException.class, cloneUserProperties::getStartWithParent);
assertThrows(SecurityException.class,
cloneUserProperties::getCrossProfileIntentFilterAccessControl);
+ assertThrows(SecurityException.class,
+ cloneUserProperties::getCrossProfileIntentResolutionStrategy);
// Verify clone user parent
assertThat(mUserManager.getProfileParent(primaryUserId)).isNull();
@@ -373,6 +375,29 @@
@MediumTest
@Test
+ public void testRemoveUserWhenPossible_permanentAdminMainUserReturnsError() throws Exception {
+ assumeHeadlessModeEnabled();
+ assumeTrue("Main user is not permanent admin", isMainUserPermanentAdmin());
+
+ int currentUser = ActivityManager.getCurrentUser();
+ final UserInfo otherUser = createUser("User 1", /* flags= */ UserInfo.FLAG_ADMIN);
+ UserHandle mainUser = mUserManager.getMainUser();
+
+ switchUser(otherUser.id, null, true);
+
+ assertThat(mUserManager.removeUserWhenPossible(mainUser,
+ /* overrideDevicePolicy= */ false))
+ .isEqualTo(UserManager.REMOVE_RESULT_ERROR_MAIN_USER_PERMANENT_ADMIN);
+
+
+ assertThat(hasUser(mainUser.getIdentifier())).isTrue();
+
+ // Switch back to the starting user.
+ switchUser(currentUser, null, true);
+ }
+
+ @MediumTest
+ @Test
public void testRemoveUserWhenPossible_invalidUserReturnsError() throws Exception {
assertThat(hasUser(Integer.MAX_VALUE)).isFalse();
assertThat(mUserManager.removeUserWhenPossible(UserHandle.of(Integer.MAX_VALUE),
@@ -727,6 +752,7 @@
assertThat(userProps.getShowInSettings()).isEqualTo(typeProps.getShowInSettings());
assertFalse(userProps.getUseParentsContacts());
assertThrows(SecurityException.class, userProps::getCrossProfileIntentFilterAccessControl);
+ assertThrows(SecurityException.class, userProps::getCrossProfileIntentResolutionStrategy);
assertThrows(SecurityException.class, userProps::getStartWithParent);
assertThrows(SecurityException.class, userProps::getInheritDevicePolicy);
}
@@ -1420,4 +1446,10 @@
private static UserHandle asHandle(int userId) {
return new UserHandle(userId);
}
+
+ private boolean isMainUserPermanentAdmin() {
+ return Resources.getSystem()
+ .getBoolean(com.android.internal.R.bool.config_isMainUserPermanentAdmin);
+ }
+
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
index b7729bb..cca924e 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserSystemPackageInstallerTest.java
@@ -397,7 +397,7 @@
// Static overlay for allowlisted package1 -> should be installed, like package1
final AndroidPackage overlayPackage1 = ((ParsedPackage) PackageImpl.forTesting(overlayName1)
- .setOverlay(true)
+ .setResourceOverlay(true)
.setOverlayIsStatic(true)
.setOverlayTarget(packageName1)
.hideAsParsed())
@@ -405,7 +405,7 @@
// Static overlay for non-allowlisted package2 -> should not be installed, like package2
final AndroidPackage overlayPackage2 = ((ParsedPackage) PackageImpl.forTesting(overlayName2)
- .setOverlay(true)
+ .setResourceOverlay(true)
.setOverlayIsStatic(true)
.setOverlayTarget(packageName2)
.hideAsParsed())
@@ -413,7 +413,7 @@
// Non-static overlay for package1 -> not explicitly allowlisted, so shouldn't be installed
final AndroidPackage overlayPackage3 = ((ParsedPackage) PackageImpl.forTesting(overlayName3)
- .setOverlay(true)
+ .setResourceOverlay(true)
.setOverlayIsStatic(false) // non-static
.setOverlayTarget(packageName1)
.hideAsParsed())
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
index 4b417ba..a857238 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
@@ -20,6 +20,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
@@ -44,7 +45,6 @@
import android.app.time.UnixEpochTime;
import android.app.timedetector.ManualTimeSuggestion;
import android.app.timedetector.TelephonyTimeSuggestion;
-import android.app.timedetector.TimePoint;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.HandlerThread;
@@ -385,8 +385,8 @@
1234L, 54321L, 999, InetSocketAddress.createUnresolved("test.timeserver", 123));
when(mMockNtpTrustedTime.getCachedTimeResult())
.thenReturn(latestNetworkTime);
- TimePoint expected = new TimePoint(latestNetworkTime.getTimeMillis(),
- latestNetworkTime.getElapsedRealtimeMillis());
+ UnixEpochTime expected = new UnixEpochTime(
+ latestNetworkTime.getElapsedRealtimeMillis(), latestNetworkTime.getTimeMillis());
assertEquals(expected, mTimeDetectorService.latestNetworkTime());
}
@@ -397,6 +397,25 @@
}
@Test
+ public void testGetLatestNetworkSuggestion() {
+ NtpTrustedTime.TimeResult latestNetworkTime = new NtpTrustedTime.TimeResult(
+ 1234L, 54321L, 999, InetSocketAddress.createUnresolved("test.timeserver", 123));
+ when(mMockNtpTrustedTime.getCachedTimeResult())
+ .thenReturn(latestNetworkTime);
+ UnixEpochTime expectedUnixEpochTime = new UnixEpochTime(
+ latestNetworkTime.getElapsedRealtimeMillis(), latestNetworkTime.getTimeMillis());
+ NetworkTimeSuggestion expected = new NetworkTimeSuggestion(
+ expectedUnixEpochTime, latestNetworkTime.getUncertaintyMillis());
+ assertEquals(expected, mTimeDetectorService.getLatestNetworkSuggestion());
+ }
+
+ @Test
+ public void testGetLatestNetworkSuggestion_noTimeAvailable() {
+ when(mMockNtpTrustedTime.getCachedTimeResult()).thenReturn(null);
+ assertNull(mTimeDetectorService.getLatestNetworkSuggestion());
+ }
+
+ @Test
public void testGetTimeState() {
doNothing().when(mMockContext).enforceCallingPermission(anyString(), any());
TimeState fakeState = new TimeState(new UnixEpochTime(12345L, 98765L), true);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
index b64b281..19f3189 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -1703,6 +1703,7 @@
channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
channel.setShowBadge(true);
channel.setAllowBubbles(false);
+ channel.setImportantConversation(true);
int lockMask = 0;
for (int i = 0; i < NotificationChannel.LOCKABLE_FIELDS.length; i++) {
lockMask |= NotificationChannel.LOCKABLE_FIELDS[i];
@@ -1718,6 +1719,7 @@
assertEquals(channel.shouldShowLights(), savedChannel.shouldShowLights());
assertFalse(savedChannel.canBypassDnd());
assertFalse(Notification.VISIBILITY_SECRET == savedChannel.getLockscreenVisibility());
+ assertFalse(channel.isImportantConversation());
assertEquals(channel.canShowBadge(), savedChannel.canShowBadge());
assertEquals(channel.canBubble(), savedChannel.canBubble());
@@ -4396,7 +4398,7 @@
new NotificationChannel("A person calls", "calls from A", IMPORTANCE_DEFAULT);
channel2.setConversationId(calls.getId(), convoId);
channel2.setImportantConversation(true);
- mHelper.createNotificationChannel(PKG_O, UID_O, channel2, true, false);
+ mHelper.createNotificationChannel(PKG_O, UID_O, channel2, false, false);
List<ConversationChannelWrapper> convos =
mHelper.getConversations(IntArray.wrap(new int[] {0}), false);
@@ -4473,7 +4475,7 @@
new NotificationChannel("A person calls", "calls from A", IMPORTANCE_DEFAULT);
channel2.setConversationId(calls.getId(), convoId);
channel2.setImportantConversation(true);
- mHelper.createNotificationChannel(PKG_O, UID_O, channel2, true, false);
+ mHelper.createNotificationChannel(PKG_O, UID_O, channel2, false, false);
List<ConversationChannelWrapper> convos =
mHelper.getConversations(IntArray.wrap(new int[] {0}), false);
@@ -4501,13 +4503,13 @@
new NotificationChannel("A person msgs", "messages from A", IMPORTANCE_DEFAULT);
channel.setConversationId(messages.getId(), convoId);
channel.setImportantConversation(true);
- mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false);
+ mHelper.createNotificationChannel(PKG_O, UID_O, channel, false, false);
NotificationChannel diffConvo =
new NotificationChannel("B person msgs", "messages from B", IMPORTANCE_DEFAULT);
diffConvo.setConversationId(p.getId(), "different convo");
diffConvo.setImportantConversation(true);
- mHelper.createNotificationChannel(PKG_P, UID_P, diffConvo, true, false);
+ mHelper.createNotificationChannel(PKG_P, UID_P, diffConvo, false, false);
NotificationChannel channel2 =
new NotificationChannel("A person calls", "calls from A", IMPORTANCE_DEFAULT);
@@ -4534,7 +4536,7 @@
new NotificationChannel("A person msgs", "messages from A", IMPORTANCE_DEFAULT);
channel.setConversationId(messages.getId(), convoId);
channel.setImportantConversation(true);
- mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false);
+ mHelper.createNotificationChannel(PKG_O, UID_O, channel, false, false);
mHelper.permanentlyDeleteNotificationChannel(PKG_O, UID_O, "messages");
@@ -4935,7 +4937,7 @@
"conversation", IMPORTANCE_DEFAULT);
friend.setConversationId(parent.getId(), "friend");
friend.setImportantConversation(true);
- mHelper.createNotificationChannel(PKG_O, UID_O, friend, true, false);
+ mHelper.createNotificationChannel(PKG_O, UID_O, friend, false, false);
ArrayList<StatsEvent> events = new ArrayList<>();
mHelper.pullPackageChannelPreferencesStats(events);
diff --git a/services/tests/wmtests/Android.bp b/services/tests/wmtests/Android.bp
index 2ce7cea..e5371975 100644
--- a/services/tests/wmtests/Android.bp
+++ b/services/tests/wmtests/Android.bp
@@ -27,13 +27,13 @@
],
tools: ["protologtool"],
cmd: "$(location protologtool) transform-protolog-calls " +
- "--protolog-class com.android.internal.protolog.common.ProtoLog " +
- "--protolog-impl-class com.android.internal.protolog.ProtoLogImpl " +
- "--protolog-cache-class 'com.android.server.wm.ProtoLogCache' " +
- "--loggroups-class com.android.internal.protolog.ProtoLogGroup " +
- "--loggroups-jar $(location :protolog-groups) " +
- "--output-srcjar $(out) " +
- "$(locations :wmtests-sources)",
+ "--protolog-class com.android.internal.protolog.common.ProtoLog " +
+ "--protolog-impl-class com.android.internal.protolog.ProtoLogImpl " +
+ "--protolog-cache-class 'com.android.server.wm.ProtoLogCache' " +
+ "--loggroups-class com.android.internal.protolog.ProtoLogGroup " +
+ "--loggroups-jar $(location :protolog-groups) " +
+ "--output-srcjar $(out) " +
+ "$(locations :wmtests-sources)",
out: ["wmtests.protolog.srcjar"],
}
@@ -41,7 +41,10 @@
name: "WmTests",
// We only want this apk build for tests.
- srcs: [":wmtests.protologsrc"],
+ srcs: [
+ ":wmtests.protologsrc",
+ "src/**/*.aidl",
+ ],
static_libs: [
"frameworks-base-testutils",
diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml
index 593ee4a..b51feb3 100644
--- a/services/tests/wmtests/AndroidManifest.xml
+++ b/services/tests/wmtests/AndroidManifest.xml
@@ -90,6 +90,9 @@
android:foregroundServiceType="mediaProjection"
android:enabled="true">
</service>
+
+ <service android:name="com.android.server.wm.scvh.EmbeddedSCVHService"
+ android:process="com.android.server.wm.scvh.embedded_process" />
</application>
<instrumentation
diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java
index cdb2642..4d69979 100644
--- a/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java
@@ -39,6 +39,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.spy;
@@ -411,7 +412,14 @@
final WindowState navBar = createTestWindow("navBar");
getController().getSourceProvider(ITYPE_IME).setWindowContainer(ime, null, null);
+
+ waitUntilHandlersIdle();
+ clearInvocations(mDisplayContent);
getController().getSourceProvider(ITYPE_IME).setClientVisible(true);
+ waitUntilHandlersIdle();
+ // The visibility change should trigger a traversal to notify the change.
+ verify(mDisplayContent).notifyInsetsChanged(any());
+
getController().getSourceProvider(ITYPE_STATUS_BAR).setWindowContainer(statusBar, null,
null);
getController().getSourceProvider(ITYPE_NAVIGATION_BAR).setWindowContainer(navBar, null,
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
index d364dbb..74dd361 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
@@ -30,6 +30,7 @@
import static android.content.pm.ActivityInfo.LAUNCH_MULTIPLE;
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
+import static android.os.Process.NOBODY_UID;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
@@ -1207,20 +1208,35 @@
@Test
public void testCreateRecentTaskInfo_detachedTask() {
- final Task task = createTaskBuilder(".Task").setCreateActivity(true).build();
+ final Task task = createTaskBuilder(".Task").build();
+ final ComponentName componentName = getUniqueComponentName();
+ new ActivityBuilder(mSupervisor.mService)
+ .setTask(task)
+ .setUid(NOBODY_UID)
+ .setComponent(componentName)
+ .build();
final TaskDisplayArea tda = task.getDisplayArea();
assertTrue(task.isAttached());
assertTrue(task.supportsMultiWindow());
- RecentTaskInfo info = mRecentTasks.createRecentTaskInfo(task, true);
+ RecentTaskInfo info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
+ true /* getTasksAllowed */);
assertTrue(info.supportsMultiWindow);
+ info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
+ false /* getTasksAllowed */);
+
+ assertFalse(info.topActivity.equals(componentName));
+ assertFalse(info.topActivityInfo.packageName.equals(componentName.getPackageName()));
+ assertFalse(info.baseActivity.equals(componentName));
+
// The task can be put in split screen even if it is not attached now.
task.removeImmediately();
- info = mRecentTasks.createRecentTaskInfo(task, true);
+ info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
+ true /* getTasksAllowed */);
assertTrue(info.supportsMultiWindow);
@@ -1229,7 +1245,8 @@
doReturn(false).when(tda).supportsNonResizableMultiWindow();
doReturn(false).when(task).isResizeable();
- info = mRecentTasks.createRecentTaskInfo(task, true);
+ info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
+ true /* getTasksAllowed */);
assertFalse(info.supportsMultiWindow);
@@ -1237,7 +1254,8 @@
// the device supports it.
doReturn(true).when(tda).supportsNonResizableMultiWindow();
- info = mRecentTasks.createRecentTaskInfo(task, true);
+ info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
+ true /* getTasksAllowed */);
assertTrue(info.supportsMultiWindow);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/SurfaceSyncGroupContinuousTest.java b/services/tests/wmtests/src/com/android/server/wm/SurfaceSyncGroupContinuousTest.java
index 8c49c26..e6f47a1 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SurfaceSyncGroupContinuousTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SurfaceSyncGroupContinuousTest.java
@@ -28,6 +28,8 @@
import androidx.test.rule.ActivityTestRule;
+import com.android.server.wm.scvh.SyncValidatorSCVHTestCase;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -56,11 +58,21 @@
pressWakeupButton();
pressUnlockButton();
}
+ SurfaceSyncGroup.setTransactionFactory(SurfaceControl.Transaction::new);
}
@Test
public void testSurfaceViewSyncDuringResize() throws Throwable {
- SurfaceSyncGroup.setTransactionFactory(SurfaceControl.Transaction::new);
mCapturedActivity.verifyTest(new SurfaceSyncGroupValidatorTestCase(), mName);
}
+
+ @Test
+ public void testSurfaceControlViewHostIPCSync_Fast() throws Throwable {
+ mCapturedActivity.verifyTest(new SyncValidatorSCVHTestCase(0 /* delayMs */), mName);
+ }
+
+ @Test
+ public void testSurfaceControlViewHostIPCSync_Slow() throws Throwable {
+ mCapturedActivity.verifyTest(new SyncValidatorSCVHTestCase(100 /* delayMs */), mName);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/SurfaceSyncGroupTest.java b/services/tests/wmtests/src/com/android/server/wm/SurfaceSyncGroupTest.java
index d2cca9f..f655242 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SurfaceSyncGroupTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SurfaceSyncGroupTest.java
@@ -56,7 +56,7 @@
syncGroup.addSyncCompleteCallback(mExecutor, finishedLatch::countDown);
SyncTarget syncTarget = new SyncTarget();
syncGroup.addToSync(syncTarget, false /* parentSyncGroupMerge */);
- syncGroup.onTransactionReady(null);
+ syncGroup.markSyncReady();
syncTarget.onBufferReady();
@@ -76,7 +76,7 @@
syncGroup.addToSync(syncTarget1, false /* parentSyncGroupMerge */);
syncGroup.addToSync(syncTarget2, false /* parentSyncGroupMerge */);
syncGroup.addToSync(syncTarget3, false /* parentSyncGroupMerge */);
- syncGroup.onTransactionReady(null);
+ syncGroup.markSyncReady();
syncTarget1.onBufferReady();
assertNotEquals(0, finishedLatch.getCount());
@@ -98,7 +98,7 @@
SyncTarget syncTarget2 = new SyncTarget();
assertTrue(syncGroup.addToSync(syncTarget1, false /* parentSyncGroupMerge */));
- syncGroup.onTransactionReady(null);
+ syncGroup.markSyncReady();
// Adding to a sync that has been completed is also invalid since the sync id has been
// cleared.
assertFalse(syncGroup.addToSync(syncTarget2, false /* parentSyncGroupMerge */));
@@ -119,8 +119,8 @@
assertTrue(syncGroup1.addToSync(syncTarget1, false /* parentSyncGroupMerge */));
assertTrue(syncGroup2.addToSync(syncTarget2, false /* parentSyncGroupMerge */));
- syncGroup1.onTransactionReady(null);
- syncGroup2.onTransactionReady(null);
+ syncGroup1.markSyncReady();
+ syncGroup2.markSyncReady();
syncTarget1.onBufferReady();
@@ -149,9 +149,9 @@
assertTrue(syncGroup1.addToSync(syncTarget1, false /* parentSyncGroupMerge */));
assertTrue(syncGroup2.addToSync(syncTarget2, false /* parentSyncGroupMerge */));
- syncGroup1.onTransactionReady(null);
+ syncGroup1.markSyncReady();
syncGroup2.addToSync(syncGroup1, false /* parentSyncGroupMerge */);
- syncGroup2.onTransactionReady(null);
+ syncGroup2.markSyncReady();
// Finish syncTarget2 first to test that the syncGroup is not complete until the merged sync
// is also done.
@@ -185,7 +185,7 @@
assertTrue(syncGroup1.addToSync(syncTarget1, false /* parentSyncGroupMerge */));
assertTrue(syncGroup2.addToSync(syncTarget2, false /* parentSyncGroupMerge */));
- syncGroup1.onTransactionReady(null);
+ syncGroup1.markSyncReady();
syncTarget1.onBufferReady();
// The first sync will still get a callback when it's sync requirements are done.
@@ -193,7 +193,7 @@
assertEquals(0, finishedLatch1.getCount());
syncGroup2.addToSync(syncGroup1, false /* parentSyncGroupMerge */);
- syncGroup2.onTransactionReady(null);
+ syncGroup2.markSyncReady();
syncTarget2.onBufferReady();
// Verify that the second sync will receive complete since the merged sync was already
@@ -223,8 +223,8 @@
assertTrue(syncGroup2.addToSync(syncTarget1, false /* parentSyncGroupMerge */));
assertTrue(syncGroup2.addToSync(syncTarget3, false /* parentSyncGroupMerge */));
- syncGroup1.onTransactionReady(null);
- syncGroup2.onTransactionReady(null);
+ syncGroup1.markSyncReady();
+ syncGroup2.markSyncReady();
// Make target1 and target3 ready, but not target2. SyncGroup2 should not be ready since
// SyncGroup2 also waits for all of SyncGroup1 to finish, which includes target2
@@ -269,8 +269,8 @@
assertTrue(syncGroup2.addToSync(syncTarget1, false /* parentSyncGroupMerge */));
assertTrue(syncGroup2.addToSync(syncTarget3, false /* parentSyncGroupMerge */));
- syncGroup1.onTransactionReady(null);
- syncGroup2.onTransactionReady(null);
+ syncGroup1.markSyncReady();
+ syncGroup2.markSyncReady();
syncTarget1.onBufferReady();
@@ -304,7 +304,7 @@
SyncTarget syncTarget = new SyncTarget();
assertTrue(syncGroup.addToSync(syncTarget, true /* parentSyncGroupMerge */));
- syncTarget.onTransactionReady(null);
+ syncTarget.markSyncReady();
// When parentSyncGroupMerge is true, the transaction passed in merges the main SyncGroup
// transaction first because it knows the previous parentSyncGroup is older so it should
@@ -329,7 +329,7 @@
SyncTarget syncTarget = new SyncTarget();
assertTrue(syncGroup.addToSync(syncTarget, false /* parentSyncGroupMerge */));
- syncTarget.onTransactionReady(null);
+ syncTarget.markSyncReady();
// When parentSyncGroupMerge is false, the transaction passed in should not merge
// the main SyncGroup since we don't need to change the transaction order
@@ -346,7 +346,7 @@
syncGroup.addToSync(syncTarget, false /* parentSyncGroupMerge */);
// Add the syncTarget to the same syncGroup and ensure it doesn't crash.
syncGroup.addToSync(syncTarget, false /* parentSyncGroupMerge */);
- syncGroup.onTransactionReady(null);
+ syncGroup.markSyncReady();
syncTarget.onBufferReady();
@@ -364,8 +364,7 @@
}
void onBufferReady() {
- SurfaceControl.Transaction t = new StubTransaction();
- onTransactionReady(t);
+ markSyncReady();
}
}
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
index b70d8bd..656c486 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
@@ -811,6 +811,40 @@
}
@Test
+ public void testApplyTransaction_createTaskFragment_withPairedActivityToken() {
+ final Task task = createTask(mDisplayContent);
+ final ActivityRecord activityAtBottom = createActivityRecord(task);
+ final int uid = Binder.getCallingUid();
+ activityAtBottom.info.applicationInfo.uid = uid;
+ activityAtBottom.getTask().effectiveUid = uid;
+ mTaskFragment = new TaskFragmentBuilder(mAtm)
+ .setParentTask(task)
+ .setFragmentToken(mFragmentToken)
+ .createActivityCount(1)
+ .build();
+ mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment);
+ final IBinder fragmentToken1 = new Binder();
+ final TaskFragmentCreationParams params = new TaskFragmentCreationParams.Builder(
+ mOrganizerToken, fragmentToken1, activityAtBottom.token)
+ .setPairedActivityToken(activityAtBottom.token)
+ .build();
+ mTransaction.setTaskFragmentOrganizer(mIOrganizer);
+ mTransaction.createTaskFragment(params);
+ assertApplyTransactionAllowed(mTransaction);
+
+ // Successfully created a TaskFragment.
+ final TaskFragment taskFragment = mWindowOrganizerController.getTaskFragment(
+ fragmentToken1);
+ assertNotNull(taskFragment);
+ // The new TaskFragment should be positioned right above the paired activity.
+ assertEquals(task.mChildren.indexOf(activityAtBottom) + 1,
+ task.mChildren.indexOf(taskFragment));
+ // The top TaskFragment should remain on top.
+ assertEquals(task.mChildren.indexOf(taskFragment) + 1,
+ task.mChildren.indexOf(mTaskFragment));
+ }
+
+ @Test
public void testApplyTransaction_enforceHierarchyChange_reparentChildren() {
doReturn(true).when(mTaskFragment).isAttached();
diff --git a/services/tests/wmtests/src/com/android/server/wm/scvh/EmbeddedSCVHService.java b/services/tests/wmtests/src/com/android/server/wm/scvh/EmbeddedSCVHService.java
new file mode 100644
index 0000000..3bd577c
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/scvh/EmbeddedSCVHService.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.scvh;
+
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
+
+import android.annotation.Nullable;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.PixelFormat;
+import android.hardware.display.DisplayManager;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.RemoteException;
+import android.view.Display;
+import android.view.SurfaceControl.Transaction;
+import android.view.SurfaceControlViewHost;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+
+import androidx.annotation.NonNull;
+
+public class EmbeddedSCVHService extends Service {
+ private static final String TAG = "SCVHEmbeddedService";
+ private SurfaceControlViewHost mVr;
+
+ private Handler mHandler;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ mHandler = new Handler(Looper.getMainLooper());
+ }
+
+ @Nullable
+ @Override
+ public IBinder onBind(Intent intent) {
+ // Return the interface
+ return new AttachEmbeddedWindow();
+ }
+
+ public static class SlowView extends View {
+ private long mDelayMs;
+ public SlowView(Context context) {
+ super(context);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ try {
+ Thread.sleep(mDelayMs);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ public void setDelay(long delayMs) {
+ mDelayMs = delayMs;
+ }
+ }
+
+ private class AttachEmbeddedWindow extends IAttachEmbeddedWindow.Stub {
+ @Override
+ public void attachEmbedded(IBinder hostToken, int width,
+ int height, int displayId, long delayMs, IAttachEmbeddedWindowCallback callback) {
+ mHandler.post(() -> {
+ Context context = EmbeddedSCVHService.this;
+ Display display = getApplicationContext().getSystemService(
+ DisplayManager.class).getDisplay(displayId);
+ mVr = new SurfaceControlViewHost(context, display, hostToken);
+ FrameLayout content = new FrameLayout(context);
+
+ SlowView slowView = new SlowView(context);
+ slowView.setDelay(delayMs);
+ slowView.setBackgroundColor(Color.BLUE);
+ content.addView(slowView);
+ WindowManager.LayoutParams lp = new WindowManager.LayoutParams(width, height,
+ TYPE_APPLICATION, 0, PixelFormat.OPAQUE);
+ lp.setTitle("EmbeddedWindow");
+ mVr.setView(content, lp);
+
+ content.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
+ @Override
+ public void onViewAttachedToWindow(@NonNull View v) {
+ // First frame isn't included in the sync so don't notify the host about the
+ // surface package until the first draw has completed.
+ Transaction transaction = new Transaction().addTransactionCommittedListener(
+ getMainExecutor(), () -> {
+ try {
+ callback.onEmbeddedWindowAttached(mVr.getSurfacePackage());
+ } catch (RemoteException e) {
+ }
+ });
+ v.getRootSurfaceControl().applyTransactionOnDraw(transaction);
+ }
+
+ @Override
+ public void onViewDetachedFromWindow(@NonNull View v) {
+ }
+ });
+ });
+ }
+
+ @Override
+ public void relayout(WindowManager.LayoutParams lp) {
+ mHandler.post(() -> mVr.relayout(lp));
+ }
+ }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/scvh/IAttachEmbeddedWindow.aidl b/services/tests/wmtests/src/com/android/server/wm/scvh/IAttachEmbeddedWindow.aidl
new file mode 100644
index 0000000..3439567
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/scvh/IAttachEmbeddedWindow.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.scvh;
+
+import android.view.SurfaceControlViewHost.SurfacePackage;
+import android.os.IBinder;
+import com.android.server.wm.scvh.IAttachEmbeddedWindowCallback;
+import android.view.WindowManager.LayoutParams;
+
+interface IAttachEmbeddedWindow {
+ void attachEmbedded(IBinder hostToken, int width, int height, int displayId, long delayMs, IAttachEmbeddedWindowCallback callback);
+ void relayout(in LayoutParams lp);
+}
\ No newline at end of file
diff --git a/core/java/android/app/timedetector/TimePoint.aidl b/services/tests/wmtests/src/com/android/server/wm/scvh/IAttachEmbeddedWindowCallback.aidl
similarity index 61%
copy from core/java/android/app/timedetector/TimePoint.aidl
copy to services/tests/wmtests/src/com/android/server/wm/scvh/IAttachEmbeddedWindowCallback.aidl
index 80d4bc1..92abfc8 100644
--- a/core/java/android/app/timedetector/TimePoint.aidl
+++ b/services/tests/wmtests/src/com/android/server/wm/scvh/IAttachEmbeddedWindowCallback.aidl
@@ -1,11 +1,11 @@
/*
- * Copyright (C) 2022, The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,6 +14,10 @@
* limitations under the License.
*/
-package android.app.timedetector;
+package com.android.server.wm.scvh;
-parcelable TimePoint;
+import android.view.SurfaceControlViewHost.SurfacePackage;
+
+interface IAttachEmbeddedWindowCallback {
+ void onEmbeddedWindowAttached(in SurfacePackage surfacePackage);
+}
\ No newline at end of file
diff --git a/services/tests/wmtests/src/com/android/server/wm/scvh/SyncValidatorSCVHTestCase.java b/services/tests/wmtests/src/com/android/server/wm/scvh/SyncValidatorSCVHTestCase.java
new file mode 100644
index 0000000..af4c683c
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/scvh/SyncValidatorSCVHTestCase.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.scvh;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNotNull;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.graphics.Color;
+import android.graphics.PixelFormat;
+import android.graphics.Point;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.SurfaceControlViewHost.SurfacePackage;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.view.cts.surfacevalidator.ISurfaceValidatorTestCase;
+import android.view.cts.surfacevalidator.PixelChecker;
+import android.widget.FrameLayout;
+import android.window.SurfaceSyncGroup;
+
+import androidx.annotation.NonNull;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class SyncValidatorSCVHTestCase implements ISurfaceValidatorTestCase {
+ private static final String TAG = "SCVHSyncValidatorTestCase";
+
+ private final Point[] mSizes = new Point[]{new Point(500, 500), new Point(700, 400),
+ new Point(300, 800), new Point(200, 200)};
+ private int mLastSizeIndex = 1;
+
+ private long mDelayMs;
+
+ public SyncValidatorSCVHTestCase(long delayMs) {
+ mDelayMs = delayMs;
+ }
+
+ private final Runnable mRunnable = new Runnable() {
+ @Override
+ public void run() {
+ Point size = mSizes[mLastSizeIndex % mSizes.length];
+ Runnable svResizeRunnable = () -> {
+ ViewGroup.LayoutParams svParams = mSurfaceView.getLayoutParams();
+ svParams.width = size.x;
+ svParams.height = size.y;
+ mSurfaceView.setLayoutParams(svParams);
+ };
+ Runnable resizeRunnable = () -> {
+ try {
+ final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(size.x,
+ size.y,
+ WindowManager.LayoutParams.TYPE_APPLICATION, 0,
+ PixelFormat.TRANSPARENT);
+ mIAttachEmbeddedWindow.relayout(lp);
+ } catch (RemoteException e) {
+ }
+ };
+
+ SurfaceSyncGroup syncGroup = new SurfaceSyncGroup(TAG);
+ syncGroup.addToSync(mSurfaceView.getRootSurfaceControl(), svResizeRunnable);
+ syncGroup.addToSync(mSurfacePackage, resizeRunnable);
+ syncGroup.markSyncReady();
+
+ mLastSizeIndex++;
+
+ mHandler.postDelayed(this, mDelayMs + 50);
+ }
+ };
+
+ private Handler mHandler;
+ private SurfaceView mSurfaceView;
+
+ private final CountDownLatch mReadyLatch = new CountDownLatch(1);
+ private boolean mSurfaceCreated;
+ private boolean mIsAttached;
+ private final Object mLock = new Object();
+ private int mDisplayId;
+ private IAttachEmbeddedWindow mIAttachEmbeddedWindow;
+ private SurfacePackage mSurfacePackage;
+
+ final SurfaceHolder.Callback mCallback = new SurfaceHolder.Callback() {
+ @Override
+ public void surfaceCreated(@NonNull SurfaceHolder holder) {
+ synchronized (mLock) {
+ mSurfaceCreated = true;
+ }
+ if (isReadyToAttach()) {
+ attachEmbedded();
+ }
+ }
+
+ @Override
+ public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width,
+ int height) {
+ }
+
+ @Override
+ public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
+ }
+ };
+
+ @Override
+ public PixelChecker getChecker() {
+ return new PixelChecker(Color.BLACK) {
+ @Override
+ public boolean checkPixels(int matchingPixelCount, int width, int height) {
+ // Content has been set up yet.
+ if (mReadyLatch.getCount() > 0) {
+ return true;
+ }
+ return matchingPixelCount == 0;
+ }
+ };
+ }
+
+ private final ServiceConnection mConnection = new ServiceConnection() {
+ // Called when the connection with the service is established
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ Log.d(TAG, "Service Connected");
+ synchronized (mLock) {
+ mIAttachEmbeddedWindow = IAttachEmbeddedWindow.Stub.asInterface(service);
+ }
+ if (isReadyToAttach()) {
+ attachEmbedded();
+ }
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ Log.d(TAG, "Service Disconnected");
+ mIAttachEmbeddedWindow = null;
+ synchronized (mLock) {
+ mIsAttached = false;
+ }
+ }
+ };
+
+ private boolean isReadyToAttach() {
+ synchronized (mLock) {
+ if (!mSurfaceCreated) {
+ Log.d(TAG, "surface is not created");
+ }
+ if (mIAttachEmbeddedWindow == null) {
+ Log.d(TAG, "Service is not attached");
+ }
+ if (mIsAttached) {
+ Log.d(TAG, "Already attached");
+ }
+
+ return mSurfaceCreated && mIAttachEmbeddedWindow != null && !mIsAttached;
+ }
+ }
+
+ private void attachEmbedded() {
+ synchronized (mLock) {
+ mIsAttached = true;
+ }
+ try {
+ mIAttachEmbeddedWindow.attachEmbedded(mSurfaceView.getHostToken(), mSizes[0].x,
+ mSizes[0].y, mDisplayId, mDelayMs, new IAttachEmbeddedWindowCallback.Stub() {
+ @Override
+ public void onEmbeddedWindowAttached(SurfacePackage surfacePackage) {
+ mHandler.post(() -> {
+ mSurfacePackage = surfacePackage;
+ mSurfaceView.setChildSurfacePackage(surfacePackage);
+ mReadyLatch.countDown();
+ });
+ }
+ });
+ } catch (RemoteException e) {
+ }
+ }
+
+ @Override
+ public void start(Context context, FrameLayout parent) {
+ mDisplayId = context.getDisplayId();
+ mHandler = new Handler(Looper.getMainLooper());
+
+ Intent intent = new Intent(context, EmbeddedSCVHService.class);
+ intent.setAction(EmbeddedSCVHService.class.getName());
+ context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+
+ mSurfaceView = new SurfaceView(context);
+ mSurfaceView.getHolder().addCallback(mCallback);
+
+ FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(mSizes[0].x,
+ mSizes[0].y);
+ layoutParams.gravity = Gravity.CENTER;
+ parent.addView(mSurfaceView, layoutParams);
+ }
+
+ @Override
+ public void waitForReady() {
+
+ try {
+ mReadyLatch.await(5, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ }
+
+ assertEquals("Timed out waiting for setup", 0, mReadyLatch.getCount());
+ assertNotNull("SurfacePackage is null", mSurfacePackage);
+
+ mHandler.post(mRunnable);
+ }
+
+ @Override
+ public void end() {
+ mHandler.removeCallbacks(mRunnable);
+ }
+}
diff --git a/services/usb/java/com/android/server/usb/UsbPortManager.java b/services/usb/java/com/android/server/usb/UsbPortManager.java
index f920f0f..28d726e 100644
--- a/services/usb/java/com/android/server/usb/UsbPortManager.java
+++ b/services/usb/java/com/android/server/usb/UsbPortManager.java
@@ -46,11 +46,13 @@
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.hardware.usb.IDisplayPortAltModeInfoListener;
import android.hardware.usb.IUsbOperationInternal;
import android.hardware.usb.ParcelableUsbPort;
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus;
+import android.hardware.usb.DisplayPortAltModeInfo;
import android.hardware.usb.V1_0.IUsb;
import android.hardware.usb.V1_0.PortRole;
import android.hardware.usb.V1_0.PortRoleType;
@@ -63,6 +65,8 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.HwBinder;
+import android.os.IBinder;
+import android.os.IInterface;
import android.os.Message;
import android.os.Parcel;
import android.os.Parcelable;
@@ -90,8 +94,10 @@
import java.util.Arrays;
import java.util.ArrayList;
+import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.Objects;
+import java.util.concurrent.Executor;
/**
* Allows trusted components to control the properties of physical USB ports
@@ -105,7 +111,7 @@
* (but we don't care today).
* </p>
*/
-public class UsbPortManager {
+public class UsbPortManager implements IBinder.DeathRecipient {
private static final String TAG = "UsbPortManager";
private static final int MSG_UPDATE_PORTS = 1;
@@ -158,6 +164,12 @@
private NotificationManager mNotificationManager;
+ // Maintains a list of DisplayPortAltModeInfo Event listeners,
+ // protected by mDisplayPortListenerLock for broadcasts/register/unregister events
+ private final Object mDisplayPortListenerLock = new Object();
+ private final ArrayMap<IBinder, IDisplayPortAltModeInfoListener> mDisplayPortListeners =
+ new ArrayMap<IBinder, IDisplayPortAltModeInfoListener>();
+
/**
* If there currently is a notification related to contaminated USB port management
* shown the id of the notification, or 0 if there is none.
@@ -673,6 +685,46 @@
}
}
+ @Override
+ public void binderDied() {
+ // All calls should go to binderDied(IBinder deadBinder)
+ Slog.wtf(TAG, "binderDied() called unexpectedly");
+ }
+
+ public void binderDied(IBinder deadBinder) {
+ synchronized (mDisplayPortListenerLock) {
+ mDisplayPortListeners.remove(deadBinder);
+ Slog.d(TAG, "DisplayPortEventDispatcherListener died at " + deadBinder);
+ }
+ }
+
+ public boolean registerForDisplayPortEvents(
+ @NonNull IDisplayPortAltModeInfoListener listener) {
+ synchronized (mDisplayPortListenerLock) {
+ if (!mDisplayPortListeners.containsKey(listener.asBinder())) {
+ try {
+ listener.asBinder().linkToDeath(this, 0);
+ } catch (RemoteException e) {
+ logAndPrintException(null, "Caught RemoteException in " +
+ "registerForDisplayPortEvents: ", e);
+ return false;
+ }
+ mDisplayPortListeners.put(listener.asBinder(), listener);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public void unregisterForDisplayPortEvents(
+ @NonNull IDisplayPortAltModeInfoListener listener) {
+ synchronized (mDisplayPortListenerLock) {
+ if (mDisplayPortListeners.remove(listener.asBinder()) != null) {
+ listener.asBinder().unlinkToDeath(this, 0);
+ }
+ }
+ }
+
public void updatePorts(ArrayList<RawPortInfo> newPortInfo) {
Message message = mHandler.obtainMessage();
Bundle bundle = new Bundle();
@@ -683,8 +735,15 @@
}
public void addSimulatedPort(String portId, int supportedModes,
- boolean supportsComplianceWarnings,
- IndentingPrintWriter pw) {
+ boolean supportsComplianceWarnings, boolean supportsDisplayPortAltMode,
+ IndentingPrintWriter pw) {
+ int supportedAltModes = supportsDisplayPortAltMode ?
+ UsbPort.FLAG_ALT_MODE_TYPE_DISPLAYPORT : 0;
+ DisplayPortAltModeInfo displayPortAltModeInfo = null;
+
+ if (supportsDisplayPortAltMode) {
+ displayPortAltModeInfo = new DisplayPortAltModeInfo();
+ }
synchronized (mLock) {
if (mSimulatedPorts.containsKey(portId)) {
@@ -713,7 +772,10 @@
false,
UsbPortStatus.POWER_BRICK_STATUS_UNKNOWN,
supportsComplianceWarnings,
- new int[] {}));
+ new int[] {},
+ UsbPortStatus.PLUG_STATE_UNKNOWN,
+ supportedAltModes,
+ displayPortAltModeInfo));
updatePortsLocked(pw, null);
}
}
@@ -802,6 +864,25 @@
}
}
+
+ public void simulateDisplayPortAltModeInfo(String portId, int partnerSinkStatus,
+ int cableStatus, int numLanes, IndentingPrintWriter pw) {
+ synchronized (mLock) {
+ final RawPortInfo portInfo = mSimulatedPorts.get(portId);
+ if (portInfo == null) {
+ pw.println("Simulated port not found");
+ return;
+ }
+
+ DisplayPortAltModeInfo displayPortAltModeInfo =
+ new DisplayPortAltModeInfo(partnerSinkStatus, cableStatus, numLanes);
+ portInfo.displayPortAltModeInfo = displayPortAltModeInfo;
+ pw.println("Simulating DisplayPort Info: " + displayPortAltModeInfo);
+ updatePortsLocked(pw, null);
+ }
+
+ }
+
public void disconnectSimulatedPort(String portId, IndentingPrintWriter pw) {
synchronized (mLock) {
final RawPortInfo portInfo = mSimulatedPorts.get(portId);
@@ -893,6 +974,9 @@
portInfo.powerBrickConnectionStatus,
portInfo.supportsComplianceWarnings,
portInfo.complianceWarnings,
+ portInfo.plugState,
+ portInfo.supportedAltModes,
+ portInfo.displayPortAltModeInfo,
pw);
}
} else {
@@ -911,6 +995,9 @@
currentPortInfo.powerBrickConnectionStatus,
currentPortInfo.supportsComplianceWarnings,
currentPortInfo.complianceWarnings,
+ currentPortInfo.plugState,
+ currentPortInfo.supportedAltModes,
+ currentPortInfo.displayPortAltModeInfo,
pw);
}
}
@@ -937,6 +1024,9 @@
if (portInfo.mComplianceWarningChange == portInfo.COMPLIANCE_WARNING_CHANGED) {
handlePortComplianceWarningLocked(portInfo, pw);
}
+ if (portInfo.mDisplayPortAltModeChange == portInfo.ALTMODE_INFO_CHANGED) {
+ handleDpAltModeLocked(portInfo, pw);
+ }
}
}
@@ -955,6 +1045,9 @@
int powerBrickConnectionStatus,
boolean supportsComplianceWarnings,
@NonNull int[] complianceWarnings,
+ int plugState,
+ int supportedAltModes,
+ DisplayPortAltModeInfo displayPortAltModeInfo,
IndentingPrintWriter pw) {
// Only allow mode switch capability for dual role ports.
// Validate that the current mode matches the supported modes we expect.
@@ -1009,14 +1102,15 @@
portId, supportedModes, supportedContaminantProtectionModes,
supportsEnableContaminantPresenceProtection,
supportsEnableContaminantPresenceDetection,
- supportsComplianceWarnings);
+ supportsComplianceWarnings,
+ supportedAltModes);
portInfo.setStatus(currentMode, canChangeMode,
currentPowerRole, canChangePowerRole,
currentDataRole, canChangeDataRole,
supportedRoleCombinations, contaminantProtectionStatus,
contaminantDetectionStatus, usbDataStatus,
powerTransferLimited, powerBrickConnectionStatus,
- complianceWarnings);
+ complianceWarnings, plugState, displayPortAltModeInfo);
mPorts.put(portId, portInfo);
} else {
// Validate that ports aren't changing definition out from under us.
@@ -1054,7 +1148,7 @@
supportedRoleCombinations, contaminantProtectionStatus,
contaminantDetectionStatus, usbDataStatus,
powerTransferLimited, powerBrickConnectionStatus,
- complianceWarnings)) {
+ complianceWarnings, plugState, displayPortAltModeInfo)) {
portInfo.mDisposition = PortInfo.DISPOSITION_CHANGED;
} else {
portInfo.mDisposition = PortInfo.DISPOSITION_READY;
@@ -1086,6 +1180,11 @@
sendComplianceWarningBroadcastLocked(portInfo);
}
+ private void handleDpAltModeLocked(PortInfo portInfo, IndentingPrintWriter pw) {
+ logAndPrint(Log.INFO, pw, "USB port DisplayPort Alt Mode Status Changed: " + portInfo);
+ sendDpAltModeCallbackLocked(portInfo, pw);
+ }
+
private void handlePortRemovedLocked(PortInfo portInfo, IndentingPrintWriter pw) {
logAndPrint(Log.INFO, pw, "USB port removed: " + portInfo);
handlePortLocked(portInfo, pw);
@@ -1135,7 +1234,6 @@
return complianceWarningsProto.toArray();
}
-
private void sendPortChangedBroadcastLocked(PortInfo portInfo) {
final Intent intent = new Intent(UsbManager.ACTION_USB_PORT_CHANGED);
intent.addFlags(
@@ -1167,6 +1265,21 @@
Manifest.permission.MANAGE_USB));
}
+ private void sendDpAltModeCallbackLocked(PortInfo portInfo, IndentingPrintWriter pw) {
+ String portId = portInfo.mUsbPort.getId();
+ synchronized (mDisplayPortListenerLock) {
+ for (IDisplayPortAltModeInfoListener mListener : mDisplayPortListeners.values()) {
+ try {
+ mListener.onDisplayPortAltModeInfoChanged(portId,
+ portInfo.mUsbPortStatus.getDisplayPortAltModeInfo());
+ } catch (RemoteException e) {
+ logAndPrintException(pw, "Caught RemoteException at "
+ + "sendDpAltModeCallbackLocked", e);
+ }
+ }
+ }
+ }
+
private void enableContaminantDetectionIfNeeded(PortInfo portInfo, IndentingPrintWriter pw) {
if (!mConnected.containsKey(portInfo.mUsbPort.getId())) {
return;
@@ -1308,6 +1421,9 @@
public static final int COMPLIANCE_WARNING_UNCHANGED = 0;
public static final int COMPLIANCE_WARNING_CHANGED = 1;
+ public static final int ALTMODE_INFO_UNCHANGED = 0;
+ public static final int ALTMODE_INFO_CHANGED = 1;
+
public final UsbPort mUsbPort;
public UsbPortStatus mUsbPortStatus;
public boolean mCanChangeMode;
@@ -1321,18 +1437,23 @@
public long mLastConnectDurationMillis;
// default initialized to 0 which means no changes reported
public int mComplianceWarningChange;
+ // default initialized to 0 which means unchanged
+ public int mDisplayPortAltModeChange;
PortInfo(@NonNull UsbManager usbManager, @NonNull String portId, int supportedModes,
int supportedContaminantProtectionModes,
boolean supportsEnableContaminantPresenceDetection,
boolean supportsEnableContaminantPresenceProtection,
- boolean supportsComplianceWarnings) {
+ boolean supportsComplianceWarnings,
+ int supportedAltModes) {
mUsbPort = new UsbPort(usbManager, portId, supportedModes,
supportedContaminantProtectionModes,
supportsEnableContaminantPresenceDetection,
supportsEnableContaminantPresenceProtection,
- supportsComplianceWarnings);
+ supportsComplianceWarnings,
+ supportedAltModes);
mComplianceWarningChange = COMPLIANCE_WARNING_UNCHANGED;
+ mDisplayPortAltModeChange = ALTMODE_INFO_UNCHANGED;
}
public boolean complianceWarningsChanged(@NonNull int[] complianceWarnings) {
@@ -1344,6 +1465,34 @@
return true;
}
+ public boolean displayPortAltModeChanged(DisplayPortAltModeInfo
+ displayPortAltModeInfo) {
+ DisplayPortAltModeInfo currentDisplayPortAltModeInfo =
+ mUsbPortStatus.getDisplayPortAltModeInfo();
+
+ mDisplayPortAltModeChange = ALTMODE_INFO_UNCHANGED;
+
+ if (displayPortAltModeInfo == null
+ && currentDisplayPortAltModeInfo != null) {
+ mDisplayPortAltModeChange = ALTMODE_INFO_CHANGED;
+ return true;
+ }
+
+ if (currentDisplayPortAltModeInfo == null) {
+ if (displayPortAltModeInfo != null) {
+ mDisplayPortAltModeChange = ALTMODE_INFO_CHANGED;
+ return true;
+ }
+ return false;
+ }
+
+ if (!(currentDisplayPortAltModeInfo.equals(displayPortAltModeInfo))) {
+ mDisplayPortAltModeChange = ALTMODE_INFO_CHANGED;
+ return true;
+ }
+ return false;
+ }
+
public boolean setStatus(int currentMode, boolean canChangeMode,
int currentPowerRole, boolean canChangePowerRole,
int currentDataRole, boolean canChangeDataRole,
@@ -1364,7 +1513,7 @@
UsbPortStatus.CONTAMINANT_DETECTION_NOT_SUPPORTED,
UsbPortStatus.DATA_STATUS_UNKNOWN, false,
UsbPortStatus.POWER_BRICK_STATUS_UNKNOWN,
- new int[] {});
+ new int[] {}, 0, null);
dispositionChanged = true;
}
@@ -1410,7 +1559,7 @@
supportedRoleCombinations, contaminantProtectionStatus,
contaminantDetectionStatus, usbDataStatus,
powerTransferLimited, powerBrickConnectionStatus,
- new int[] {});
+ new int[] {}, 0, null);
dispositionChanged = true;
}
@@ -1431,8 +1580,16 @@
int supportedRoleCombinations, int contaminantProtectionStatus,
int contaminantDetectionStatus, int usbDataStatus,
boolean powerTransferLimited, int powerBrickConnectionStatus,
- @NonNull int[] complianceWarnings) {
+ @NonNull int[] complianceWarnings,
+ int plugState, DisplayPortAltModeInfo displayPortAltModeInfo) {
boolean dispositionChanged = false;
+ boolean complianceChanged = false;
+ boolean displayPortChanged = false;
+
+ if (mUsbPortStatus != null) {
+ complianceChanged = complianceWarningsChanged(complianceWarnings);
+ displayPortChanged = displayPortAltModeChanged(displayPortAltModeInfo);
+ }
mCanChangeMode = canChangeMode;
mCanChangePowerRole = canChangePowerRole;
@@ -1452,7 +1609,9 @@
|| mUsbPortStatus.isPowerTransferLimited()
!= powerTransferLimited
|| mUsbPortStatus.getPowerBrickConnectionStatus()
- != powerBrickConnectionStatus) {
+ != powerBrickConnectionStatus
+ || mUsbPortStatus.getPlugState()
+ != plugState) {
if (mUsbPortStatus == null && complianceWarnings.length > 0) {
mComplianceWarningChange = COMPLIANCE_WARNING_CHANGED;
}
@@ -1460,14 +1619,17 @@
supportedRoleCombinations, contaminantProtectionStatus,
contaminantDetectionStatus, usbDataStatus,
powerTransferLimited, powerBrickConnectionStatus,
- complianceWarnings);
+ complianceWarnings, plugState, displayPortAltModeInfo);
dispositionChanged = true;
- } else if (complianceWarningsChanged(complianceWarnings)) {
- mUsbPortStatus = new UsbPortStatus(currentMode, currentPowerRole, currentDataRole,
- supportedRoleCombinations, contaminantProtectionStatus,
- contaminantDetectionStatus, usbDataStatus,
- powerTransferLimited, powerBrickConnectionStatus,
- complianceWarnings);
+ // Case used in order to send compliance warning broadcast or signal DisplayPort
+ // listeners. These targeted broadcasts don't use dispositionChanged to broadcast to
+ // general ACTION_USB_PORT_CHANGED.
+ } else if (complianceChanged || displayPortChanged) {
+ mUsbPortStatus = new UsbPortStatus(currentMode, currentPowerRole,
+ currentDataRole, supportedRoleCombinations,
+ contaminantProtectionStatus, contaminantDetectionStatus,
+ usbDataStatus, powerTransferLimited, powerBrickConnectionStatus,
+ complianceWarnings, plugState, displayPortAltModeInfo);
}
if (mUsbPortStatus.isConnected() && mConnectedAtMillis == 0) {
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index 6eb04d9..7d84222 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -36,6 +36,7 @@
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.hardware.usb.IUsbManager;
+import android.hardware.usb.IDisplayPortAltModeInfoListener;
import android.hardware.usb.IUsbOperationInternal;
import android.hardware.usb.ParcelableUsbPort;
import android.hardware.usb.UsbAccessory;
@@ -43,6 +44,7 @@
import android.hardware.usb.UsbManager;
import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus;
+import android.hardware.usb.DisplayPortAltModeInfo;
import android.os.Binder;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
@@ -902,6 +904,45 @@
}
}
+ @Override
+ public boolean registerForDisplayPortEvents(
+ @NonNull IDisplayPortAltModeInfoListener listener) {
+ Objects.requireNonNull(listener, "registerForDisplayPortEvents: listener " +
+ "must not be null.");
+
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ if (mPortManager != null) {
+ return mPortManager.registerForDisplayPortEvents(listener);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+
+ return false;
+ }
+
+ @Override
+ public void unregisterForDisplayPortEvents(
+ @NonNull IDisplayPortAltModeInfoListener listener) {
+ Objects.requireNonNull(listener, "unregisterForDisplayPortEvents: listener " +
+ "must not be null.");
+
+ mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);
+
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ if (mPortManager != null) {
+ mPortManager.unregisterForDisplayPortEvents(listener);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
+ }
+
+
@NeverCompile // Avoid size overhead of debugging code.
@Override
public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
@@ -993,6 +1034,7 @@
int i;
boolean supportsComplianceWarnings = false;
+ boolean supportsDisplayPortAltMode = false;
switch (args[2]) {
case "ufp":
supportedModes = MODE_UFP;
@@ -1015,14 +1057,17 @@
case "--compliance-warnings":
supportsComplianceWarnings = true;
continue;
+ case "--displayport":
+ supportsDisplayPortAltMode = true;
+ continue;
default:
pw.println("Invalid Identifier: " + args[i]);
}
}
if (mPortManager != null) {
mPortManager.addSimulatedPort(portId, supportedModes,
- supportsComplianceWarnings,
- pw);
+ supportsComplianceWarnings, supportsDisplayPortAltMode,
+ pw);
pw.println();
mPortManager.dump(new DualDumpOutputStream(new IndentingPrintWriter(pw, " ")),
"", 0);
@@ -1124,6 +1169,29 @@
mPortManager.dump(new DualDumpOutputStream(new IndentingPrintWriter(pw, " ")),
"", 0);
}
+ } else if ("set-displayport-status".equals(args[0]) && args.length == 5) {
+ final String portId = args[1];
+ final int partnerSinkStatus = Integer.parseInt(args[2]);
+ final int cableStatus = Integer.parseInt(args[3]);
+ final int displayPortNumLanes = Integer.parseInt(args[4]);
+ if (mPortManager != null) {
+ mPortManager.simulateDisplayPortAltModeInfo(portId,
+ partnerSinkStatus, cableStatus, displayPortNumLanes, pw);
+ pw.println();
+ mPortManager.dump(new DualDumpOutputStream(new IndentingPrintWriter(pw, " ")),
+ "", 0);
+ }
+ } else if ("reset-displayport-status".equals(args[0]) && args.length == 2) {
+ final String portId = args[1];
+ if (mPortManager != null) {
+ mPortManager.simulateDisplayPortAltModeInfo(portId,
+ DisplayPortAltModeInfo.DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN,
+ DisplayPortAltModeInfo.DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN,
+ 0, pw);
+ pw.println();
+ mPortManager.dump(new DualDumpOutputStream(new IndentingPrintWriter(pw, " ")),
+ "", 0);
+ }
} else if ("ports".equals(args[0]) && args.length == 1) {
if (mPortManager != null) {
mPortManager.dump(new DualDumpOutputStream(new IndentingPrintWriter(pw, " ")),
@@ -1138,6 +1206,7 @@
pw.println(" add-port <id> <ufp|dfp|dual|none> <optional args>");
pw.println(" <optional args> include:");
pw.println(" --compliance-warnings: enables compliance warnings on port");
+ pw.println(" --displayport: enables DisplayPort Alt Mode on port");
pw.println(" connect-port <id> <ufp|dfp><?> <source|sink><?> <host|device><?>");
pw.println(" (add ? suffix if mode, power role, or data role can be changed)");
pw.println(" disconnect-port <id>");
@@ -1148,7 +1217,8 @@
pw.println(" dumpsys usb set-port-roles \"default\" source device");
pw.println();
pw.println("Example USB type C port simulation with full capabilities:");
- pw.println(" dumpsys usb add-port \"matrix\" dual --compliance-warnings");
+ pw.println(" dumpsys usb add-port \"matrix\" dual --compliance-warnings "
+ + "--displayport");
pw.println(" dumpsys usb connect-port \"matrix\" ufp? sink? device?");
pw.println(" dumpsys usb ports");
pw.println(" dumpsys usb disconnect-port \"matrix\"");
@@ -1186,6 +1256,14 @@
pw.println(" 3: bc12");
pw.println(" 4: missing rp");
pw.println();
+ pw.println("Example simulate DisplayPort Alt Mode Changes:");
+ pw.println(" dumpsys usb add-port \"matrix\" dual --displayport");
+ pw.println(" dumpsys usb set-displayport-status \"matrix\" <partner-sink>"
+ + " <cable> <num-lanes>");
+ pw.println(" dumpsys usb reset-displayport-status \"matrix\"");
+ pw.println("reset-displayport-status can also be used in order to set");
+ pw.println("the DisplayPortInfo to default values.");
+ pw.println();
pw.println("Example USB device descriptors:");
pw.println(" dumpsys usb dump-descriptors -dump-short");
pw.println(" dumpsys usb dump-descriptors -dump-tree");
diff --git a/services/usb/java/com/android/server/usb/hal/port/RawPortInfo.java b/services/usb/java/com/android/server/usb/hal/port/RawPortInfo.java
index e6a3e53..ef32e93 100644
--- a/services/usb/java/com/android/server/usb/hal/port/RawPortInfo.java
+++ b/services/usb/java/com/android/server/usb/hal/port/RawPortInfo.java
@@ -15,7 +15,9 @@
*/
package com.android.server.usb.hal.port;
+import android.hardware.usb.UsbPort;
import android.hardware.usb.UsbPortStatus;
+import android.hardware.usb.DisplayPortAltModeInfo;
import android.os.Parcel;
import android.os.Parcelable;
@@ -42,6 +44,9 @@
public int powerBrickConnectionStatus;
public final boolean supportsComplianceWarnings;
public int[] complianceWarnings;
+ public int plugState;
+ public int supportedAltModes;
+ public DisplayPortAltModeInfo displayPortAltModeInfo;
public RawPortInfo(String portId, int supportedModes) {
this.portId = portId;
@@ -56,6 +61,9 @@
this.powerBrickConnectionStatus = UsbPortStatus.POWER_BRICK_STATUS_UNKNOWN;
this.supportsComplianceWarnings = false;
this.complianceWarnings = new int[] {};
+ this.plugState = UsbPortStatus.PLUG_STATE_UNKNOWN;
+ this.supportedAltModes = 0;
+ this.displayPortAltModeInfo = null;
}
public RawPortInfo(String portId, int supportedModes, int supportedContaminantProtectionModes,
@@ -76,7 +84,8 @@
supportsEnableContaminantPresenceProtection, contaminantProtectionStatus,
supportsEnableContaminantPresenceDetection, contaminantDetectionStatus,
usbDataStatus, powerTransferLimited, powerBrickConnectionStatus,
- false, new int[] {});
+ false, new int[] {}, UsbPortStatus.PLUG_STATE_UNKNOWN,
+ 0, null);
}
public RawPortInfo(String portId, int supportedModes, int supportedContaminantProtectionModes,
@@ -91,7 +100,10 @@
boolean powerTransferLimited,
int powerBrickConnectionStatus,
boolean supportsComplianceWarnings,
- int[] complianceWarnings) {
+ int[] complianceWarnings,
+ int plugState,
+ int supportedAltModes,
+ DisplayPortAltModeInfo displayPortAltModeInfo) {
this.portId = portId;
this.supportedModes = supportedModes;
this.supportedContaminantProtectionModes = supportedContaminantProtectionModes;
@@ -112,6 +124,9 @@
this.powerBrickConnectionStatus = powerBrickConnectionStatus;
this.supportsComplianceWarnings = supportsComplianceWarnings;
this.complianceWarnings = complianceWarnings;
+ this.plugState = plugState;
+ this.supportedAltModes = supportedAltModes;
+ this.displayPortAltModeInfo = displayPortAltModeInfo;
}
@Override
@@ -139,12 +154,19 @@
dest.writeInt(powerBrickConnectionStatus);
dest.writeBoolean(supportsComplianceWarnings);
dest.writeIntArray(complianceWarnings);
+ dest.writeInt(plugState);
+ dest.writeInt(supportedAltModes);
+ if ((supportedAltModes & UsbPort.FLAG_ALT_MODE_TYPE_DISPLAYPORT) != 0) {
+ displayPortAltModeInfo.writeToParcel(dest, 0);
+ }
}
public static final Parcelable.Creator<RawPortInfo> CREATOR =
new Parcelable.Creator<RawPortInfo>() {
@Override
public RawPortInfo createFromParcel(Parcel in) {
+ DisplayPortAltModeInfo displayPortAltModeInfo;
+
String id = in.readString();
int supportedModes = in.readInt();
int supportedContaminantProtectionModes = in.readInt();
@@ -163,6 +185,13 @@
int powerBrickConnectionStatus = in.readInt();
boolean supportsComplianceWarnings = in.readBoolean();
int[] complianceWarnings = in.createIntArray();
+ int plugState = in.readInt();
+ int supportedAltModes = in.readInt();
+ if ((supportedAltModes & UsbPort.FLAG_ALT_MODE_TYPE_DISPLAYPORT) != 0) {
+ displayPortAltModeInfo = DisplayPortAltModeInfo.CREATOR.createFromParcel(in);
+ } else {
+ displayPortAltModeInfo = null;
+ }
return new RawPortInfo(id, supportedModes,
supportedContaminantProtectionModes, currentMode, canChangeMode,
currentPowerRole, canChangePowerRole,
@@ -172,7 +201,8 @@
supportsEnableContaminantPresenceDetection,
contaminantDetectionStatus, usbDataStatus,
powerTransferLimited, powerBrickConnectionStatus,
- supportsComplianceWarnings, complianceWarnings);
+ supportsComplianceWarnings, complianceWarnings,
+ plugState, supportedAltModes, displayPortAltModeInfo);
}
@Override
diff --git a/services/usb/java/com/android/server/usb/hal/port/UsbPortAidl.java b/services/usb/java/com/android/server/usb/hal/port/UsbPortAidl.java
index ff4268f..b9ccace 100644
--- a/services/usb/java/com/android/server/usb/hal/port/UsbPortAidl.java
+++ b/services/usb/java/com/android/server/usb/hal/port/UsbPortAidl.java
@@ -35,6 +35,10 @@
import android.hardware.usb.PortRole;
import android.hardware.usb.PortStatus;
import android.hardware.usb.ComplianceWarning;
+import android.hardware.usb.DisplayPortAltModeInfo;
+import android.hardware.usb.AltModeData;
+import android.hardware.usb.AltModeData.DisplayPortAltModeData;
+import android.hardware.usb.DisplayPortAltModePinAssignment;
import android.os.Build;
import android.os.ServiceManager;
import android.os.IBinder;
@@ -600,6 +604,47 @@
return newComplianceWarnings.toArray();
}
+ private int toSupportedAltModesInt(android.hardware.usb.AltModeData[] supportedAltModes) {
+ int supportedAltModesInt = 0;
+ for (android.hardware.usb.AltModeData altModeData : supportedAltModes) {
+ switch (altModeData.getTag()) {
+ case AltModeData.displayPortAltModeData:
+ supportedAltModesInt |= UsbPort.FLAG_ALT_MODE_TYPE_DISPLAYPORT;
+ break;
+ }
+ }
+ return supportedAltModesInt;
+ }
+
+ private int toDisplayPortAltModeNumLanesInt(int pinAssignment) {
+ switch (pinAssignment) {
+ case DisplayPortAltModePinAssignment.A:
+ case DisplayPortAltModePinAssignment.C:
+ case DisplayPortAltModePinAssignment.E:
+ return 4;
+ case DisplayPortAltModePinAssignment.B:
+ case DisplayPortAltModePinAssignment.D:
+ case DisplayPortAltModePinAssignment.F:
+ return 2;
+ default:
+ return 0;
+ }
+ }
+
+ private DisplayPortAltModeInfo formatDisplayPortAltModeInfo(
+ android.hardware.usb.AltModeData[] supportedAltModes) {
+ for (android.hardware.usb.AltModeData altModeData : supportedAltModes) {
+ if (altModeData.getTag() == AltModeData.displayPortAltModeData) {
+ DisplayPortAltModeData displayPortData =
+ altModeData.getDisplayPortAltModeData();
+ return new DisplayPortAltModeInfo(displayPortData.partnerSinkStatus,
+ displayPortData.cableStatus,
+ toDisplayPortAltModeNumLanesInt(displayPortData.pinAssignment));
+ }
+ }
+ return null;
+ }
+
@Override
public void notifyPortStatusChange(
android.hardware.usb.PortStatus[] currentPortStatus, int retval) {
@@ -635,7 +680,10 @@
current.powerTransferLimited,
current.powerBrickStatus,
current.supportsComplianceWarnings,
- formatComplianceWarnings(current.complianceWarnings));
+ formatComplianceWarnings(current.complianceWarnings),
+ current.plugOrientation,
+ toSupportedAltModesInt(current.supportedAltModes),
+ formatDisplayPortAltModeInfo(current.supportedAltModes));
newPortInfo.add(temp);
UsbPortManager.logAndPrint(Log.INFO, mPw, "ClientCallback AIDL V1: "
+ current.portName);
diff --git a/services/usb/java/com/android/server/usb/hal/port/UsbPortHidl.java b/services/usb/java/com/android/server/usb/hal/port/UsbPortHidl.java
index 10403c1..a7ecabb 100644
--- a/services/usb/java/com/android/server/usb/hal/port/UsbPortHidl.java
+++ b/services/usb/java/com/android/server/usb/hal/port/UsbPortHidl.java
@@ -35,7 +35,8 @@
import static android.hardware.usb.UsbPortStatus.POWER_ROLE_SOURCE;
import static android.hardware.usb.UsbPortStatus.DATA_STATUS_DISABLED_FORCE;
import static android.hardware.usb.UsbPortStatus.DATA_STATUS_UNKNOWN;
-
+import static android.hardware.usb.UsbPortStatus.PLUG_STATE_UNKNOWN;
+import static android.hardware.usb.DisplayPortAltModeInfo.DISPLAYPORT_ALT_MODE_STATUS_UNKNOWN;
import static com.android.server.usb.UsbPortManager.logAndPrint;
import static com.android.server.usb.UsbPortManager.logAndPrintException;
@@ -422,7 +423,10 @@
false, CONTAMINANT_PROTECTION_NONE,
false, CONTAMINANT_DETECTION_NOT_SUPPORTED, sUsbDataStatus,
false, POWER_BRICK_STATUS_UNKNOWN,
- false, new int[] {});
+ false, new int[] {},
+ PLUG_STATE_UNKNOWN,
+ 0,
+ null);
newPortInfo.add(temp);
UsbPortManager.logAndPrint(Log.INFO, mPw, "ClientCallback V1_0: "
+ current.portName);
@@ -457,7 +461,10 @@
false, CONTAMINANT_PROTECTION_NONE,
false, CONTAMINANT_DETECTION_NOT_SUPPORTED, sUsbDataStatus,
false, POWER_BRICK_STATUS_UNKNOWN,
- false, new int[] {});
+ false, new int[] {},
+ PLUG_STATE_UNKNOWN,
+ 0,
+ null);
newPortInfo.add(temp);
UsbPortManager.logAndPrint(Log.INFO, mPw, "ClientCallback V1_1: "
+ current.status.portName);
@@ -496,7 +503,10 @@
current.contaminantDetectionStatus,
sUsbDataStatus,
false, POWER_BRICK_STATUS_UNKNOWN,
- false, new int[] {});
+ false, new int[] {},
+ PLUG_STATE_UNKNOWN,
+ 0,
+ null);
newPortInfo.add(temp);
UsbPortManager.logAndPrint(Log.INFO, mPw, "ClientCallback V1_2: "
+ current.status_1_1.status.portName);
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index bbdc890..95c9061 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -2123,6 +2123,14 @@
* <p>
* No assumptions should be made as to how an In-Call UI or service will handle these
* extras. Keys should be fully qualified (e.g., com.example.MY_EXTRA) to avoid conflicts.
+ * <p>
+ * Extras added using this method will be made available to the {@link ConnectionService}
+ * associated with this {@link Call} and notified via
+ * {@link Connection#onExtrasChanged(Bundle)}.
+ * <p>
+ * Extras added using this method will also be available to other running {@link InCallService}s
+ * and notified via {@link Call.Callback#onDetailsChanged(Call, Details)}. The extras can be
+ * accessed via {@link Details#getExtras()}.
*
* @param extras The extras to add.
*/
diff --git a/telecomm/java/android/telecom/CallControl.java b/telecomm/java/android/telecom/CallControl.java
index 867bcc7..770a374 100644
--- a/telecomm/java/android/telecom/CallControl.java
+++ b/telecomm/java/android/telecom/CallControl.java
@@ -31,6 +31,8 @@
import com.android.internal.telecom.ClientTransactionalServiceRepository;
import com.android.internal.telecom.ICallControl;
+import java.util.List;
+import java.util.Objects;
import java.util.concurrent.Executor;
/**
@@ -223,6 +225,42 @@
}
/**
+ * Request a CallEndpoint change. Clients should not define their own CallEndpoint when
+ * requesting a change. Instead, the new endpoint should be one of the valid endpoints provided
+ * by {@link CallEventCallback#onAvailableCallEndpointsChanged(List)}.
+ *
+ * @param callEndpoint ; The {@link CallEndpoint} to change to.
+ * @param executor ; The {@link Executor} on which the {@link OutcomeReceiver} callback
+ * will be called on.
+ * @param callback ; The {@link OutcomeReceiver} that will be completed on the Telecom side
+ * that details success or failure of the requested operation.
+ *
+ * {@link OutcomeReceiver#onResult} will be called if Telecom has
+ * successfully changed the CallEndpoint that was requested.
+ *
+ * {@link OutcomeReceiver#onError} will be called if Telecom has failed to
+ * switch to the requested CallEndpoint. A {@link CallException} will be
+ * passed that details why the operation failed.
+ */
+ public void requestCallEndpointChange(@NonNull CallEndpoint callEndpoint,
+ @CallbackExecutor @NonNull Executor executor,
+ @NonNull OutcomeReceiver<Void, CallException> callback) {
+ Objects.requireNonNull(callEndpoint);
+ Objects.requireNonNull(executor);
+ Objects.requireNonNull(callback);
+ if (mServerInterface != null) {
+ try {
+ mServerInterface.requestCallEndpointChange(callEndpoint,
+ new CallControlResultReceiver("endpointChange", executor, callback));
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ } else {
+ throw new IllegalStateException(INTERFACE_ERROR_MSG);
+ }
+ }
+
+ /**
* This method should be called after
* {@link CallControl#disconnect(DisconnectCause, Executor, OutcomeReceiver)} or
* {@link CallControl#rejectCall(Executor, OutcomeReceiver)}
diff --git a/telecomm/java/android/telecom/CallEventCallback.java b/telecomm/java/android/telecom/CallEventCallback.java
index fd7e101..806febd 100644
--- a/telecomm/java/android/telecom/CallEventCallback.java
+++ b/telecomm/java/android/telecom/CallEventCallback.java
@@ -19,6 +19,7 @@
import android.annotation.NonNull;
+import java.util.List;
import java.util.function.Consumer;
/**
@@ -95,13 +96,6 @@
void onDisconnect(@NonNull Consumer<Boolean> wasCompleted);
/**
- * update the client on the new {@link CallAudioState}
- *
- * @param callAudioState that is currently being used
- */
- void onCallAudioStateChanged(@NonNull CallAudioState callAudioState);
-
- /**
* Telecom is informing the client to set the call in streaming.
*
* @param wasCompleted The {@link Consumer} to be completed. If the client can stream the
@@ -118,4 +112,26 @@
* @param reason Code to indicate the reason of this failure
*/
void onCallStreamingFailed(@CallStreamingService.StreamingFailedReason int reason);
+
+ /**
+ * Telecom is informing the client the current {@link CallEndpoint} changed.
+ *
+ * @param newCallEndpoint The new {@link CallEndpoint} through which call media flows
+ * (i.e. speaker, bluetooth, etc.).
+ */
+ void onCallEndpointChanged(@NonNull CallEndpoint newCallEndpoint);
+
+ /**
+ * Telecom is informing the client that the available {@link CallEndpoint}s have changed.
+ *
+ * @param availableEndpoints The set of available {@link CallEndpoint}s reported by Telecom.
+ */
+ void onAvailableCallEndpointsChanged(@NonNull List<CallEndpoint> availableEndpoints);
+
+ /**
+ * Called when the mute state changes.
+ *
+ * @param isMuted The current mute state.
+ */
+ void onMuteStateChanged(boolean isMuted);
}
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index b8c056e..ca15422 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -540,6 +540,11 @@
/**
* Creates a builder with the specified {@link PhoneAccountHandle} and label.
+ * <p>
+ * Note: each CharSequence or String field is limited to 256 characters. This check is
+ * enforced when registering the PhoneAccount via
+ * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an
+ * {@link IllegalArgumentException} to be thrown if the character field limit is over 256.
*/
public Builder(PhoneAccountHandle accountHandle, CharSequence label) {
this.mAccountHandle = accountHandle;
@@ -570,6 +575,11 @@
/**
* Sets the label. See {@link PhoneAccount#getLabel()}.
+ * <p>
+ * Note: Each CharSequence or String field is limited to 256 characters. This check is
+ * enforced when registering the PhoneAccount via
+ * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an
+ * {@link IllegalArgumentException} to be thrown if the character field limit is over 256.
*
* @param label The label of the phone account.
* @return The builder.
@@ -636,6 +646,11 @@
/**
* Sets the short description. See {@link PhoneAccount#getShortDescription}.
+ * <p>
+ * Note: Each CharSequence or String field is limited to 256 characters. This check is
+ * enforced when registering the PhoneAccount via
+ * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an
+ * {@link IllegalArgumentException} to be thrown if the character field limit is over 256.
*
* @param value The short description.
* @return The builder.
@@ -680,6 +695,13 @@
* <p>
* {@code PhoneAccount}s only support extra values of type: {@link String}, {@link Integer},
* and {@link Boolean}. Extras which are not of these types are ignored.
+ * <p>
+ * Note: Each Bundle (Key, Value) String field is limited to 256 characters. Additionally,
+ * the bundle is limited to 100 (Key, Value) pairs total. This check is
+ * enforced when registering the PhoneAccount via
+ * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an
+ * {@link IllegalArgumentException} to be thrown if the character field limit is over 256
+ * or more than 100 (Key, Value) pairs are in the Bundle.
*
* @param extras
* @return
@@ -711,6 +733,11 @@
* <p>
* Note: This is an API specific to the Telephony stack; the group Id will be ignored for
* callers not holding the correct permission.
+ * <p>
+ * Additionally, each CharSequence or String field is limited to 256 characters.
+ * This check is enforced when registering the PhoneAccount via
+ * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an
+ * {@link IllegalArgumentException} to be thrown if the character field limit is over 256.
*
* @param groupId The group Id of the {@link PhoneAccount} that will replace any other
* registered {@link PhoneAccount} in Telecom with the same Group Id.
diff --git a/telecomm/java/android/telecom/PhoneAccountHandle.java b/telecomm/java/android/telecom/PhoneAccountHandle.java
index ec94f8a..e5db8cf 100644
--- a/telecomm/java/android/telecom/PhoneAccountHandle.java
+++ b/telecomm/java/android/telecom/PhoneAccountHandle.java
@@ -70,6 +70,12 @@
* ID provided does not expose personally identifying information. A
* {@link ConnectionService} should use an opaque token as the
* {@link PhoneAccountHandle} identifier.
+ * <p>
+ * Note: Each String field is limited to 256 characters. This check is enforced when
+ * registering the PhoneAccount via
+ * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an
+ * {@link IllegalArgumentException} to be thrown if the character field limit is
+ * over 256.
*/
public PhoneAccountHandle(
@NonNull ComponentName componentName,
@@ -88,6 +94,13 @@
* {@link ConnectionService} should use an opaque token as the
* {@link PhoneAccountHandle} identifier.
* @param userHandle The {@link UserHandle} associated with this {@link PhoneAccountHandle}.
+ *
+ * <p>
+ * Note: Each String field is limited to 256 characters. This check is enforced when
+ * registering the PhoneAccount via
+ * {@link TelecomManager#registerPhoneAccount(PhoneAccount)} and will cause an
+ * {@link IllegalArgumentException} to be thrown if the character field limit is
+ * over 256.
*/
public PhoneAccountHandle(
@NonNull ComponentName componentName,
diff --git a/telecomm/java/com/android/internal/telecom/ClientTransactionalServiceWrapper.java b/telecomm/java/com/android/internal/telecom/ClientTransactionalServiceWrapper.java
index 16816ff..b2e921b 100644
--- a/telecomm/java/com/android/internal/telecom/ClientTransactionalServiceWrapper.java
+++ b/telecomm/java/com/android/internal/telecom/ClientTransactionalServiceWrapper.java
@@ -22,14 +22,15 @@
import android.os.OutcomeReceiver;
import android.os.ResultReceiver;
import android.telecom.CallAttributes;
-import android.telecom.CallAudioState;
import android.telecom.CallControl;
+import android.telecom.CallEndpoint;
import android.telecom.CallEventCallback;
import android.telecom.CallException;
import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
import android.util.Log;
+import java.util.List;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
@@ -140,6 +141,9 @@
private static final String ON_REJECT = "onReject";
private static final String ON_DISCONNECT = "onDisconnect";
private static final String ON_STREAMING_STARTED = "onStreamingStarted";
+ private static final String ON_REQ_ENDPOINT_CHANGE = "onRequestEndpointChange";
+ private static final String ON_AVAILABLE_CALL_ENDPOINTS = "onAvailableCallEndpointsChanged";
+ private static final String ON_MUTE_STATE_CHANGED = "onMuteStateChanged";
private void handleCallEventCallback(String action, String callId, int code,
ResultReceiver ackResultReceiver) {
@@ -246,14 +250,45 @@
}
@Override
- public void onCallAudioStateChanged(String callId, CallAudioState callAudioState) {
- Log.i(TAG, TextUtils.formatSimple("onCallAudioStateChanged: callId=[%s]", callId));
+ public void onCallEndpointChanged(String callId, CallEndpoint endpoint) {
+ handleEndpointUpdate(callId, ON_REQ_ENDPOINT_CHANGE, endpoint);
+ }
+
+ @Override
+ public void onAvailableCallEndpointsChanged(String callId, List<CallEndpoint> endpoints) {
+ handleEndpointUpdate(callId, ON_AVAILABLE_CALL_ENDPOINTS, endpoints);
+ }
+
+ @Override
+ public void onMuteStateChanged(String callId, boolean isMuted) {
+ handleEndpointUpdate(callId, ON_MUTE_STATE_CHANGED, isMuted);
+ }
+
+ public void handleEndpointUpdate(String callId, String action, Object arg) {
+ Log.d(TAG, TextUtils.formatSimple("[%s], callId=[%s]", action, callId));
// lookup the callEventCallback associated with the particular call
TransactionalCall call = mCallIdToTransactionalCall.get(callId);
if (call != null) {
CallEventCallback callback = call.getCallEventCallback();
Executor executor = call.getExecutor();
- executor.execute(() -> callback.onCallAudioStateChanged(callAudioState));
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ executor.execute(() -> {
+ switch (action) {
+ case ON_REQ_ENDPOINT_CHANGE:
+ callback.onCallEndpointChanged((CallEndpoint) arg);
+ break;
+ case ON_AVAILABLE_CALL_ENDPOINTS:
+ callback.onAvailableCallEndpointsChanged((List<CallEndpoint>) arg);
+ break;
+ case ON_MUTE_STATE_CHANGED:
+ callback.onMuteStateChanged((boolean) arg);
+ break;
+ }
+ });
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
}
diff --git a/telecomm/java/com/android/internal/telecom/ICallControl.aidl b/telecomm/java/com/android/internal/telecom/ICallControl.aidl
index dc0aeac..a5c6e44 100644
--- a/telecomm/java/com/android/internal/telecom/ICallControl.aidl
+++ b/telecomm/java/com/android/internal/telecom/ICallControl.aidl
@@ -17,6 +17,7 @@
package com.android.internal.telecom;
import android.telecom.CallControl;
+import android.telecom.CallEndpoint;
import android.telecom.DisconnectCause;
import android.os.ResultReceiver;
@@ -29,4 +30,5 @@
void disconnect(String callId, in DisconnectCause disconnectCause, in ResultReceiver callback);
void rejectCall(String callId, in ResultReceiver callback);
void startCallStreaming(String callId, in ResultReceiver callback);
+ void requestCallEndpointChange(in CallEndpoint callEndpoint, in ResultReceiver callback);
}
\ No newline at end of file
diff --git a/telecomm/java/com/android/internal/telecom/ICallEventCallback.aidl b/telecomm/java/com/android/internal/telecom/ICallEventCallback.aidl
index c45ef97..fef5e9e 100644
--- a/telecomm/java/com/android/internal/telecom/ICallEventCallback.aidl
+++ b/telecomm/java/com/android/internal/telecom/ICallEventCallback.aidl
@@ -17,10 +17,12 @@
package com.android.internal.telecom;
import android.telecom.CallControl;
+import android.telecom.CallEndpoint;
import com.android.internal.telecom.ICallControl;
import android.os.ResultReceiver;
import android.telecom.CallAudioState;
import android.telecom.CallException;
+import java.util.List;
/**
* {@hide}
@@ -29,15 +31,19 @@
// publicly exposed. Client should override
void onAddCallControl(String callId, int resultCode, in ICallControl callControl,
in CallException exception);
+ // -- Call Event Actions / Call State Transitions
void onSetActive(String callId, in ResultReceiver callback);
void onSetInactive(String callId, in ResultReceiver callback);
void onAnswer(String callId, int videoState, in ResultReceiver callback);
void onReject(String callId, in ResultReceiver callback);
void onDisconnect(String callId, in ResultReceiver callback);
- void onCallAudioStateChanged(String callId, in CallAudioState callAudioState);
- // Streaming related. Client registered call streaming capabilities should override
+ // -- Streaming related. Client registered call streaming capabilities should override
void onCallStreamingStarted(String callId, in ResultReceiver callback);
void onCallStreamingFailed(String callId, int reason);
+ // -- Audio related.
+ void onCallEndpointChanged(String callId, in CallEndpoint endpoint);
+ void onAvailableCallEndpointsChanged(String callId, in List<CallEndpoint> endpoint);
+ void onMuteStateChanged(String callId, boolean isMuted);
// hidden methods that help with cleanup
void removeCallFromTransactionalServiceWrapper(String callId);
}
\ No newline at end of file
diff --git a/telephony/java/android/telephony/NetworkScanRequest.java b/telephony/java/android/telephony/NetworkScanRequest.java
index 326f417..65c2146 100644
--- a/telephony/java/android/telephony/NetworkScanRequest.java
+++ b/telephony/java/android/telephony/NetworkScanRequest.java
@@ -26,7 +26,7 @@
import java.util.Arrays;
/**
- * Defines a request to peform a network scan.
+ * Defines a request to perform a network scan.
*
* This class defines whether the network scan will be performed only once or periodically until
* cancelled, when the scan is performed periodically, the time interval is not controlled by the
diff --git a/telephony/java/android/telephony/SmsMessage.java b/telephony/java/android/telephony/SmsMessage.java
index 95d5136..845449e 100644
--- a/telephony/java/android/telephony/SmsMessage.java
+++ b/telephony/java/android/telephony/SmsMessage.java
@@ -1031,6 +1031,15 @@
}
/**
+ * Check if format of the message is 3GPP.
+ *
+ * @hide
+ */
+ public boolean is3gpp() {
+ return (mWrappedSmsMessage instanceof com.android.internal.telephony.gsm.SmsMessage);
+ }
+
+ /**
* Determines whether or not to use CDMA format for MO SMS.
* If SMS over IMS is supported, then format is based on IMS SMS format,
* otherwise format is based on current phone type.
diff --git a/telephony/java/android/telephony/emergency/EmergencyNumber.java b/telephony/java/android/telephony/emergency/EmergencyNumber.java
index e78a1e1..64bcf71 100644
--- a/telephony/java/android/telephony/emergency/EmergencyNumber.java
+++ b/telephony/java/android/telephony/emergency/EmergencyNumber.java
@@ -25,6 +25,8 @@
import android.os.Parcelable;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneNumberUtils;
+import android.util.SparseArray;
+import android.util.SparseIntArray;
import com.android.telephony.Rlog;
@@ -247,6 +249,17 @@
private final List<String> mEmergencyUrns;
private final int mEmergencyNumberSourceBitmask;
private final int mEmergencyCallRouting;
+ /**
+ * The source of the EmergencyNumber in the order of precedence.
+ */
+ private static final int[] EMERGENCY_NUMBER_SOURCE_PRECEDENCE;
+ static {
+ EMERGENCY_NUMBER_SOURCE_PRECEDENCE = new int[4];
+ EMERGENCY_NUMBER_SOURCE_PRECEDENCE[0] = EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING;
+ EMERGENCY_NUMBER_SOURCE_PRECEDENCE[1] = EMERGENCY_NUMBER_SOURCE_SIM;
+ EMERGENCY_NUMBER_SOURCE_PRECEDENCE[2] = EMERGENCY_NUMBER_SOURCE_DATABASE;
+ EMERGENCY_NUMBER_SOURCE_PRECEDENCE[3] = EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG;
+ }
/** @hide */
public EmergencyNumber(@NonNull String number, @NonNull String countryIso, @NonNull String mnc,
@@ -601,19 +614,44 @@
*/
public static void mergeSameNumbersInEmergencyNumberList(
List<EmergencyNumber> emergencyNumberList) {
+ mergeSameNumbersInEmergencyNumberList(emergencyNumberList, false);
+ }
+
+ /**
+ * In-place merge same emergency numbers in the emergency number list.
+ *
+ * A unique EmergencyNumber has a unique combination of ‘number’, ‘mcc’ and 'mnc' fields.
+ * If mergeServiceCategoriesAndUrns is true ignore comparing of 'urns' and
+ * 'categories' fields and determine these fields from most precedent number. Else compare
+ * to get unique combination of EmergencyNumber.
+ * Multiple Emergency Number Sources should be merged into one bitfield for the
+ * same EmergencyNumber.
+ *
+ * @param emergencyNumberList the emergency number list to process
+ * @param mergeServiceCategoriesAndUrns {@code true} determine service category and urns
+ * from most precedent number. {@code false} compare those fields for determing duplicate.
+ *
+ * @hide
+ */
+ public static void mergeSameNumbersInEmergencyNumberList(
+ @NonNull List<EmergencyNumber> emergencyNumberList,
+ boolean mergeServiceCategoriesAndUrns) {
if (emergencyNumberList == null) {
return;
}
+
Set<Integer> duplicatedEmergencyNumberPosition = new HashSet<>();
for (int i = 0; i < emergencyNumberList.size(); i++) {
for (int j = 0; j < i; j++) {
- if (areSameEmergencyNumbers(
- emergencyNumberList.get(i), emergencyNumberList.get(j))) {
- Rlog.e(LOG_TAG, "Found unexpected duplicate numbers: "
- + emergencyNumberList.get(i) + " vs " + emergencyNumberList.get(j));
+ if (areSameEmergencyNumbers(emergencyNumberList.get(i),
+ emergencyNumberList.get(j), mergeServiceCategoriesAndUrns)) {
+ Rlog.e(LOG_TAG, "Found unexpected duplicate numbers "
+ + emergencyNumberList.get(i)
+ + " vs " + emergencyNumberList.get(j));
// Set the merged emergency number in the current position
- emergencyNumberList.set(i, mergeSameEmergencyNumbers(
- emergencyNumberList.get(i), emergencyNumberList.get(j)));
+ emergencyNumberList.set(i,
+ mergeSameEmergencyNumbers(emergencyNumberList.get(i),
+ emergencyNumberList.get(j), mergeServiceCategoriesAndUrns));
// Mark the emergency number has been merged
duplicatedEmergencyNumberPosition.add(j);
}
@@ -632,18 +670,24 @@
/**
* Check if two emergency numbers are the same.
*
- * A unique EmergencyNumber has a unique combination of ‘number’, ‘mcc’, 'mnc' and
- * 'categories', and 'routing' fields. Multiple Emergency Number Sources should be
+ * A unique EmergencyNumber has a unique combination of ‘number’, ‘mcc’, 'mnc' fields.
+ * If mergeServiceCategoriesAndUrns is true ignore comparing of 'urns' and
+ * 'categories' fields and determine these fields from most precedent number. Else compare
+ * to get unique combination of EmergencyNumber.
+ * Multiple Emergency Number Sources should be
* merged into one bitfield for the same EmergencyNumber.
*
* @param first first EmergencyNumber to compare
* @param second second EmergencyNumber to compare
+ * @param ignoreServiceCategoryAndUrns {@code true} Ignore comparing of service category
+ * and Urns so that they can be determined from most precedent number. {@code false} compare
+ * those fields for determing duplicate.
* @return true if they are the same EmergencyNumbers; false otherwise.
*
* @hide
*/
public static boolean areSameEmergencyNumbers(@NonNull EmergencyNumber first,
- @NonNull EmergencyNumber second) {
+ @NonNull EmergencyNumber second, boolean ignoreServiceCategoryAndUrns) {
if (!first.getNumber().equals(second.getNumber())) {
return false;
}
@@ -653,12 +697,14 @@
if (!first.getMnc().equals(second.getMnc())) {
return false;
}
- if (first.getEmergencyServiceCategoryBitmask()
- != second.getEmergencyServiceCategoryBitmask()) {
- return false;
- }
- if (!first.getEmergencyUrns().equals(second.getEmergencyUrns())) {
- return false;
+ if (!ignoreServiceCategoryAndUrns) {
+ if (first.getEmergencyServiceCategoryBitmask()
+ != second.getEmergencyServiceCategoryBitmask()) {
+ return false;
+ }
+ if (!first.getEmergencyUrns().equals(second.getEmergencyUrns())) {
+ return false;
+ }
}
// Never merge two numbers if one of them is from test mode but the other one is not;
// This supports to remove a number from the test mode.
@@ -681,7 +727,7 @@
*/
public static EmergencyNumber mergeSameEmergencyNumbers(@NonNull EmergencyNumber first,
@NonNull EmergencyNumber second) {
- if (areSameEmergencyNumbers(first, second)) {
+ if (areSameEmergencyNumbers(first, second, false)) {
int routing = first.getEmergencyCallRouting();
if (second.isFromSources(EMERGENCY_NUMBER_SOURCE_DATABASE)) {
@@ -699,6 +745,115 @@
}
/**
+ * Get merged EmergencyUrns list from two same emergency numbers.
+ * By giving priority to the urns from first number.
+ *
+ * @param firstEmergencyUrns first number's Urns
+ * @param secondEmergencyUrns second number's Urns
+ * @return a merged Urns
+ *
+ * @hide
+ */
+ private static List<String> mergeEmergencyUrns(@NonNull List<String> firstEmergencyUrns,
+ @NonNull List<String> secondEmergencyUrns) {
+ List<String> mergedUrns = new ArrayList<String>();
+ mergedUrns.addAll(firstEmergencyUrns);
+ for (String urn : secondEmergencyUrns) {
+ if (!firstEmergencyUrns.contains(urn)) {
+ mergedUrns.add(urn);
+ }
+ }
+ return mergedUrns;
+ }
+
+ /**
+ * Get the highest precedence source of the given Emergency number. Then get service catergory
+ * and urns list fill in the respective map with key as source.
+ *
+ * @param num EmergencyNumber to get the source, service category & urns
+ * @param serviceCategoryArray Array to store the category of the given EmergencyNumber
+ * with key as highest precedence source
+ * @param urnsArray Array to store the list of Urns of the given EmergencyNumber
+ * with key as highest precedence source
+ *
+ * @hide
+ */
+ private static void fillServiceCategoryAndUrns(@NonNull EmergencyNumber num,
+ @NonNull SparseIntArray serviceCategoryArray,
+ @NonNull SparseArray<List<String>> urnsArray) {
+ int numberSrc = num.getEmergencyNumberSourceBitmask();
+ for (Integer source : EMERGENCY_NUMBER_SOURCE_PRECEDENCE) {
+ if ((numberSrc & source) == source) {
+ if (!num.isInEmergencyServiceCategories(EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED)) {
+ serviceCategoryArray.put(source, num.getEmergencyServiceCategoryBitmask());
+ }
+ urnsArray.put(source, num.getEmergencyUrns());
+ break;
+ }
+ }
+ }
+
+ /**
+ * Get a merged EmergencyNumber from two same emergency numbers from
+ * Emergency number list. Two emergency numbers are the same if
+ * {@link #areSameEmergencyNumbers} returns {@code true}.
+ *
+ * @param first first EmergencyNumber to compare
+ * @param second second EmergencyNumber to compare
+ * @param mergeServiceCategoriesAndUrns {@code true} then determine service category and urns
+ * Service catetory : set from most precedence source number(N/W, SIM, DB, modem_cfg)
+ * Urns : merge from both with first priority from most precedence source number
+ * {@code false} then call {@link #mergeSameEmergencyNumbers} to merge.
+ * @return a merged EmergencyNumber or null if they are not the same EmergencyNumber
+ *
+ * @hide
+ */
+ public static @NonNull EmergencyNumber mergeSameEmergencyNumbers(
+ @NonNull EmergencyNumber first, @NonNull EmergencyNumber second,
+ boolean mergeServiceCategoriesAndUrns) {
+ if (!mergeServiceCategoriesAndUrns) {
+ return mergeSameEmergencyNumbers(first, second);
+ }
+
+ int routing = first.getEmergencyCallRouting();
+ int serviceCategory = first.getEmergencyServiceCategoryBitmask();
+ List<String> mergedEmergencyUrns = new ArrayList<String>();
+ //Maps to store the service category and urns of both the first and second emergency number
+ // with key as most precedent source
+ SparseIntArray serviceCategoryArray = new SparseIntArray(2);
+ SparseArray<List<String>> urnsArray = new SparseArray(2);
+
+ fillServiceCategoryAndUrns(first, serviceCategoryArray, urnsArray);
+ fillServiceCategoryAndUrns(second, serviceCategoryArray, urnsArray);
+
+ if (second.isFromSources(EMERGENCY_NUMBER_SOURCE_DATABASE)) {
+ routing = second.getEmergencyCallRouting();
+ }
+
+ // Determine serviceCategory of most precedence number
+ for (int sourceOfCategory : EMERGENCY_NUMBER_SOURCE_PRECEDENCE) {
+ if (serviceCategoryArray.indexOfKey(sourceOfCategory) >= 0) {
+ serviceCategory = serviceCategoryArray.get(sourceOfCategory);
+ break;
+ }
+ }
+
+ // Merge Urns in precedence number
+ for (int sourceOfUrn : EMERGENCY_NUMBER_SOURCE_PRECEDENCE) {
+ if (urnsArray.contains(sourceOfUrn)) {
+ mergedEmergencyUrns = mergeEmergencyUrns(mergedEmergencyUrns,
+ urnsArray.get(sourceOfUrn));
+ }
+ }
+
+ return new EmergencyNumber(first.getNumber(), first.getCountryIso(), first.getMnc(),
+ serviceCategory, mergedEmergencyUrns,
+ first.getEmergencyNumberSourceBitmask()
+ | second.getEmergencyNumberSourceBitmask(),
+ routing);
+ }
+
+ /**
* Validate Emergency Number address that only contains the dialable character
* {@link PhoneNumberUtils#isDialable(char)}
*
diff --git a/telephony/java/android/telephony/ims/ImsCallSessionListener.java b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
index 93cea25..4836f86 100644
--- a/telephony/java/android/telephony/ims/ImsCallSessionListener.java
+++ b/telephony/java/android/telephony/ims/ImsCallSessionListener.java
@@ -16,7 +16,6 @@
package android.telephony.ims;
-import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -27,12 +26,12 @@
import android.telephony.ServiceState;
import android.telephony.ims.aidl.IImsCallSessionListener;
import android.telephony.ims.stub.ImsCallSessionImplBase;
+import android.telephony.ims.stub.ImsCallSessionImplBase.MediaStreamDirection;
+import android.telephony.ims.stub.ImsCallSessionImplBase.MediaStreamType;
import android.util.Log;
import com.android.ims.internal.IImsCallSession;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Set;
@@ -814,55 +813,15 @@
}
}
- /** @hide */
- @IntDef(flag = true,
- value = {
- MEDIA_STREAM_TYPE_AUDIO,
- MEDIA_STREAM_TYPE_VIDEO,
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface MediaStreamType {}
-
- /**
- * Media Stream Type - Audio
- * @hide
- */
- public static final int MEDIA_STREAM_TYPE_AUDIO = 1;
- /**
- * Media Stream Type - Video
- * @hide
- */
- public static final int MEDIA_STREAM_TYPE_VIDEO = 2;
-
- /** @hide */
- @IntDef(flag = true,
- value = {
- MEDIA_STREAM_DIRECTION_UPLINK,
- MEDIA_STREAM_DIRECTION_DOWNLINK,
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface MediaStreamDirection {}
-
- /**
- * Media Stream Direction - Uplink
- * @hide
- */
- public static final int MEDIA_STREAM_DIRECTION_UPLINK = 1;
- /**
- * Media Stream Direction - Downlink
- * @hide
- */
- public static final int MEDIA_STREAM_DIRECTION_DOWNLINK = 2;
-
/**
* Access Network Bitrate Recommendation Query (ANBRQ), see 3GPP TS 26.114.
* This API triggers radio to send ANBRQ message to the access network to query the
* desired bitrate.
*
- * @param mediaType {@link MediaStreamType} is used to identify media stream such as
- * audio or video.
- * @param direction {@link MediaStreamDirection} of this packet stream (e.g. uplink
- * or downlink).
+ * @param mediaType {@link ImsCallSessionImplBase.MediaStreamType} is used to identify
+ * media stream such as audio or video.
+ * @param direction {@link ImsCallSessionImplBase.MediaStreamDirection} of this packet
+ * stream (e.g. uplink or downlink).
* @param bitsPerSecond This value is the bitrate requested by the other party UE through
* RTP CMR, RTCPAPP or TMMBR, and ImsStack converts this value to the MAC bitrate
* (defined in TS36.321, range: 0 ~ 8000 kbit/s).
diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
index 1686f38..153a951 100644
--- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java
+++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
@@ -894,11 +894,12 @@
"android.telephony.ims.feature.extra.IS_UNKNOWN_CALL";
/** @hide */
- @IntDef(flag = true,
- value = {
- AUDIO_HANDLER_ANDROID,
- AUDIO_HANDLER_BASEBAND
- })
+ @IntDef(
+ prefix = "AUDIO_HANDLER_",
+ value = {
+ AUDIO_HANDLER_ANDROID,
+ AUDIO_HANDLER_BASEBAND
+ })
@Retention(RetentionPolicy.SOURCE)
public @interface ImsAudioHandler {}
diff --git a/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java b/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
index e46351dc..3ab4ee69 100644
--- a/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsCallSessionImplBase.java
@@ -74,6 +74,7 @@
/** @hide */
@IntDef(
+ prefix = "MEDIA_STREAM_TYPE_",
value = {
MEDIA_STREAM_TYPE_AUDIO,
MEDIA_STREAM_TYPE_VIDEO
@@ -94,6 +95,7 @@
/** @hide */
@IntDef(
+ prefix = "MEDIA_STREAM_DIRECTION_",
value = {
MEDIA_STREAM_DIRECTION_UPLINK,
MEDIA_STREAM_DIRECTION_DOWNLINK
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt
index 5e50b45..3d1342c 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt
@@ -57,7 +57,7 @@
@RunWith(Parameterized::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-class ActivitiesTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
+open class ActivitiesTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
private val testApp: TwoActivitiesAppHelper = TwoActivitiesAppHelper(instrumentation)
/** {@inheritDoc} */
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTestCfArm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTestCfArm.kt
new file mode 100644
index 0000000..549b929
--- /dev/null
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTestCfArm.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.flicker.launch
+
+import com.android.server.wm.flicker.FlickerTest
+import com.android.server.wm.flicker.FlickerTestFactory
+import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
+import org.junit.FixMethodOrder
+import org.junit.runner.RunWith
+import org.junit.runners.MethodSorters
+import org.junit.runners.Parameterized
+
+@RunWith(Parameterized::class)
+@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+class ActivitiesTransitionTestCfArm(flicker: FlickerTest) : ActivitiesTransitionTest(flicker) {
+ companion object {
+ /**
+ * Creates the test configurations.
+ *
+ * See [FlickerTestFactory.nonRotationTests] for configuring screen orientation and
+ * navigation modes.
+ */
+ @Parameterized.Parameters(name = "{0}")
+ @JvmStatic
+ fun getParams(): Collection<FlickerTest> {
+ return FlickerTestFactory.nonRotationTests()
+ }
+ }
+}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTestCfArm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTestCfArm.kt
new file mode 100644
index 0000000..1c979e8
--- /dev/null
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTestCfArm.kt
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.flicker.launch
+
+import com.android.server.wm.flicker.FlickerTest
+import com.android.server.wm.flicker.FlickerTestFactory
+import com.android.server.wm.flicker.annotation.FlickerServiceCompatible
+import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
+import org.junit.FixMethodOrder
+import org.junit.runner.RunWith
+import org.junit.runners.MethodSorters
+import org.junit.runners.Parameterized
+
+/** Some assertions will fail because of b/264415996 */
+@FlickerServiceCompatible
+@RunWith(Parameterized::class)
+@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+open class OpenAppFromOverviewTestCfArm(flicker: FlickerTest) : OpenAppFromOverviewTest(flicker) {
+ companion object {
+ /**
+ * Creates the test configurations.
+ *
+ * See [FlickerTestFactory.nonRotationTests] for configuring screen orientation and
+ * navigation modes.
+ */
+ @Parameterized.Parameters(name = "{0}")
+ @JvmStatic
+ fun getParams(): Collection<FlickerTest> {
+ return FlickerTestFactory.nonRotationTests()
+ }
+ }
+}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
index e3296a5..1b23952 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
@@ -78,7 +78,7 @@
@RunWith(Parameterized::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-class ChangeAppRotationTest(flicker: FlickerTest) : RotationTransition(flicker) {
+open class ChangeAppRotationTest(flicker: FlickerTest) : RotationTransition(flicker) {
override val testApp = SimpleAppHelper(instrumentation)
override val transition: FlickerBuilder.() -> Unit
get() = {
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTestCfArm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTestCfArm.kt
new file mode 100644
index 0000000..6420f79
--- /dev/null
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTestCfArm.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.flicker.rotation
+
+import com.android.server.wm.flicker.FlickerTest
+import com.android.server.wm.flicker.FlickerTestFactory
+import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
+import org.junit.FixMethodOrder
+import org.junit.runner.RunWith
+import org.junit.runners.MethodSorters
+import org.junit.runners.Parameterized
+
+@RunWith(Parameterized::class)
+@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+class ChangeAppRotationTestCfArm(flicker: FlickerTest) : ChangeAppRotationTest(flicker) {
+ companion object {
+ /**
+ * Creates the test configurations.
+ *
+ * See [FlickerTestFactory.rotationTests] for configuring screen orientation and navigation
+ * modes.
+ */
+ @Parameterized.Parameters(name = "{0}")
+ @JvmStatic
+ fun getParams(): Collection<FlickerTest> {
+ return FlickerTestFactory.rotationTests()
+ }
+ }
+}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
index 23edfb6..c26485b 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
@@ -234,7 +234,11 @@
getConfigValue<Boolean>(ActivityOptions.SeamlessRotation.EXTRA_STARVE_UI_THREAD)
?: false
- private fun createConfig(sourceConfig: FlickerTest, starveUiThread: Boolean): FlickerTest {
+ @JvmStatic
+ protected fun createConfig(
+ sourceConfig: FlickerTest,
+ starveUiThread: Boolean
+ ): FlickerTest {
val originalScenario = sourceConfig.initialize("createConfig")
val nameExt = if (starveUiThread) "_BUSY_UI_THREAD" else ""
val newConfig =
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTestCfArm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTestCfArm.kt
new file mode 100644
index 0000000..0ebbf4e
--- /dev/null
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTestCfArm.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.flicker.rotation
+
+import com.android.server.wm.flicker.FlickerTest
+import com.android.server.wm.flicker.FlickerTestFactory
+import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
+import com.android.server.wm.flicker.testapp.ActivityOptions
+import org.junit.FixMethodOrder
+import org.junit.runner.RunWith
+import org.junit.runners.MethodSorters
+import org.junit.runners.Parameterized
+
+/** This test should fail because of b/264518826 */
+@RunWith(Parameterized::class)
+@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+open class SeamlessAppRotationTestCfArm(flicker: FlickerTest) : SeamlessAppRotationTest(flicker) {
+ companion object {
+ /**
+ * Creates the test configurations for seamless rotation based on the default rotation tests
+ * from [FlickerTestFactory.rotationTests], but adding a flag (
+ * [ActivityOptions.SeamlessRotation.EXTRA_STARVE_UI_THREAD]) to indicate if the app should
+ * starve the UI thread of not
+ */
+ @Parameterized.Parameters(name = "{0}")
+ @JvmStatic
+ fun getParams(): Collection<FlickerTest> {
+ return FlickerTestFactory.rotationTests().flatMap { sourceConfig ->
+ val defaultRun = createConfig(sourceConfig, starveUiThread = false)
+ val busyUiRun = createConfig(sourceConfig, starveUiThread = true)
+ listOf(defaultRun, busyUiRun)
+ }
+ }
+ }
+}
diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml
index 7383d6a..616f21cb 100644
--- a/tests/HwAccelerationTest/AndroidManifest.xml
+++ b/tests/HwAccelerationTest/AndroidManifest.xml
@@ -1136,6 +1136,15 @@
</intent-filter>
</activity>
+ <activity android:name="HardwareBufferRendererActivity"
+ android:label="HardwareRenderer/HardwareBufferRenderer"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="com.android.test.hwui.TEST"/>
+ </intent-filter>
+ </activity>
+
<activity android:name="MyLittleTextureView"
android:label="HardwareRenderer/MyLittleTextureView"
android:screenOrientation="fullSensor"
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java
new file mode 100644
index 0000000..e4de434
--- /dev/null
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareBufferRendererActivity.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.hwui;
+
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorSpace;
+import android.graphics.ColorSpace.Named;
+import android.graphics.HardwareBufferRenderer;
+import android.graphics.Paint;
+import android.graphics.PixelFormat;
+import android.graphics.RenderNode;
+import android.hardware.HardwareBuffer;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+
+import java.time.Duration;
+import java.util.concurrent.Executors;
+
+public class HardwareBufferRendererActivity extends Activity {
+
+ private ImageView mImageView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mImageView = new ImageView(this);
+ mImageView.setBackgroundColor(Color.MAGENTA);
+ FrameLayout layout = new FrameLayout(this);
+ layout.setBackgroundColor(Color.CYAN);
+ layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT));
+ layout.addView(mImageView, new FrameLayout.LayoutParams(100, 100));
+ setContentView(layout);
+
+ HardwareBuffer buffer = HardwareBuffer.create(100, 100, PixelFormat.RGBA_8888, 1,
+ HardwareBuffer.USAGE_GPU_SAMPLED_IMAGE | HardwareBuffer.USAGE_GPU_COLOR_OUTPUT);
+ HardwareBufferRenderer renderer = new HardwareBufferRenderer(buffer);
+ RenderNode node = new RenderNode("content");
+ node.setPosition(0, 0, 100, 100);
+
+ Canvas canvas = node.beginRecording();
+ canvas.drawColor(Color.BLUE);
+
+ Paint paint = new Paint();
+ paint.setColor(Color.RED);
+ canvas.drawRect(0f, 0f, 50f, 50f, paint);
+ node.endRecording();
+
+ renderer.setContentRoot(node);
+
+ ColorSpace colorSpace = ColorSpace.get(Named.SRGB);
+ Handler handler = new Handler(Looper.getMainLooper());
+ renderer.obtainRenderRequest()
+ .setColorSpace(colorSpace)
+ .draw(Executors.newSingleThreadExecutor(), result -> {
+ result.getFence().await(Duration.ofMillis(3000));
+ handler.post(() -> {
+ Bitmap bitmap = Bitmap.wrapHardwareBuffer(buffer, colorSpace);
+ Bitmap copy = bitmap.copy(Config.ARGB_8888, false);
+ mImageView.setImageBitmap(copy);
+ });
+ });
+ }
+}
diff --git a/tests/Input/Android.bp b/tests/Input/Android.bp
index de9bbb6..83893ba 100644
--- a/tests/Input/Android.bp
+++ b/tests/Input/Android.bp
@@ -18,6 +18,7 @@
static_libs: [
"androidx.test.ext.junit",
"androidx.test.rules",
+ "mockito-target-minus-junit4",
"services.core.unboosted",
"testables",
"truth-prebuilt",
diff --git a/tests/Input/src/com/android/test/input/MotionPredictorTest.kt b/tests/Input/src/com/android/test/input/MotionPredictorTest.kt
new file mode 100644
index 0000000..46aad9f
--- /dev/null
+++ b/tests/Input/src/com/android/test/input/MotionPredictorTest.kt
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.test.input
+
+import android.content.Context
+import android.content.res.Resources
+import android.os.SystemProperties
+import android.view.InputDevice
+import android.view.MotionEvent
+import android.view.MotionEvent.ACTION_DOWN
+import android.view.MotionEvent.ACTION_MOVE
+import android.view.MotionEvent.PointerCoords
+import android.view.MotionEvent.PointerProperties
+import android.view.MotionPredictor
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+
+import org.mockito.Mockito.mock
+import org.mockito.Mockito.`when`
+
+import org.junit.After
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertNotNull
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import java.time.Duration
+
+private fun getStylusMotionEvent(
+ eventTime: Duration,
+ action: Int,
+ x: Float,
+ y: Float,
+ ): MotionEvent{
+ // One-time: send a DOWN event
+ val pointerCount = 1
+ val properties = arrayOfNulls<MotionEvent.PointerProperties>(pointerCount)
+ val coords = arrayOfNulls<MotionEvent.PointerCoords>(pointerCount)
+
+ for (i in 0 until pointerCount) {
+ properties[i] = PointerProperties()
+ properties[i]!!.id = i
+ properties[i]!!.toolType = MotionEvent.TOOL_TYPE_STYLUS
+ coords[i] = PointerCoords()
+ coords[i]!!.x = x
+ coords[i]!!.y = y
+ }
+
+ return MotionEvent.obtain(/*downTime=*/0, eventTime.toMillis(), action, properties.size,
+ properties, coords, /*metaState=*/0, /*buttonState=*/0,
+ /*xPrecision=*/0f, /*yPrecision=*/0f, /*deviceId=*/0, /*edgeFlags=*/0,
+ InputDevice.SOURCE_STYLUS, /*flags=*/0)
+}
+
+private fun getPredictionContext(offset: Duration, enablePrediction: Boolean): Context {
+ val context = mock(Context::class.java)
+ val resources: Resources = mock(Resources::class.java)
+ `when`(context.getResources()).thenReturn(resources)
+ `when`(resources.getInteger(
+ com.android.internal.R.integer.config_motionPredictionOffsetNanos)).thenReturn(
+ offset.toNanos().toInt())
+ `when`(resources.getBoolean(
+ com.android.internal.R.bool.config_enableMotionPrediction)).thenReturn(enablePrediction)
+ return context
+}
+
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+class MotionPredictorTest {
+ private val instrumentation = InstrumentationRegistry.getInstrumentation()
+ val initialPropertyValue = SystemProperties.get("persist.input.enable_motion_prediction")
+
+ @Before
+ fun setUp() {
+ instrumentation.uiAutomation.executeShellCommand(
+ "setprop persist.input.enable_motion_prediction true")
+ }
+
+ @After
+ fun tearDown() {
+ instrumentation.uiAutomation.executeShellCommand(
+ "setprop persist.input.enable_motion_prediction $initialPropertyValue")
+ }
+
+ /**
+ * In a typical usage, app will send the event to the predictor and then call .predict to draw
+ * a prediction. Here, we send 2 events to the predictor and check the returned event.
+ * Input:
+ * t = 0 x = 0 y = 0
+ * t = 1 x = 1 y = 2
+ * Output (expected):
+ * t = 3 x = 3 y = 6
+ *
+ * Historical data is ignored for simplicity.
+ */
+ @Test
+ fun testPredictedCoordinatesAndTime() {
+ val context = getPredictionContext(
+ /*offset=*/Duration.ofMillis(1), /*enablePrediction=*/true)
+ val predictor = MotionPredictor(context)
+ var eventTime = Duration.ofMillis(0)
+ val downEvent = getStylusMotionEvent(eventTime, ACTION_DOWN, /*x=*/0f, /*y=*/0f)
+ // ACTION_DOWN t=0 x=0 y=0
+ predictor.record(downEvent)
+
+ eventTime += Duration.ofMillis(1)
+ val moveEvent = getStylusMotionEvent(eventTime, ACTION_MOVE, /*x=*/1f, /*y=*/2f)
+ // ACTION_MOVE t=1 x=1 y=2
+ predictor.record(moveEvent)
+
+ val predicted = predictor.predict(Duration.ofMillis(2).toNanos())
+ assertEquals(1, predicted.size)
+ val event = predicted[0]
+ assertNotNull(event)
+
+ // Prediction will happen for t=3 (2 + 1, since offset is 1 and present time is 2)
+ assertEquals(3, event.eventTime)
+ assertEquals(3f, event.x, /*delta=*/0.001f)
+ assertEquals(6f, event.y, /*delta=*/0.001f)
+ }
+}
diff --git a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java
index a6131ce..e348184 100644
--- a/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java
+++ b/tests/InputMethodStressTest/src/com/android/inputmethod/stresstest/ImeOpenCloseStressTest.java
@@ -16,6 +16,8 @@
package com.android.inputmethod.stresstest;
+import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED;
+
import static com.android.inputmethod.stresstest.ImeStressTestUtil.INPUT_METHOD_MANAGER_HIDE_ON_CREATE;
import static com.android.inputmethod.stresstest.ImeStressTestUtil.INPUT_METHOD_MANAGER_SHOW_ON_CREATE;
import static com.android.inputmethod.stresstest.ImeStressTestUtil.REQUEST_FOCUS_ON_CREATE;
@@ -209,8 +211,23 @@
verifyShowBehavior(activity);
}
+ /**
+ * Test IME hidden by calling show and hide IME consecutively with
+ * {@link android.view.inputmethod.InputMethodManager} APIs in
+ * {@link android.app.Activity#onCreate}.
+ *
+ * <p> Note for developers: Use {@link WindowManager.LayoutParams#SOFT_INPUT_STATE_UNCHANGED}
+ * window flag to avoid some softInputMode visibility flags may take presence over
+ * {@link android.view.inputmethod.InputMethodManager} APIs (e.g. use showSoftInput to show
+ * IME in {@link android.app.Activity#onCreate} but being hidden by
+ * {@link WindowManager.LayoutParams#SOFT_INPUT_STATE_ALWAYS_HIDDEN} window flag after the
+ * activity window focused).</p>
+ */
@Test
public void testShowHideWithInputMethodManager_onCreate() {
+ if (mSoftInputFlags != SOFT_INPUT_STATE_UNCHANGED) {
+ return;
+ }
// Show and hide with InputMethodManager at onCreate()
Intent intent =
createIntent(
@@ -222,10 +239,7 @@
INPUT_METHOD_MANAGER_HIDE_ON_CREATE));
TestActivity activity = TestActivity.start(intent);
- // TODO: The Ime is expected to show first and then hide. But show or hide
- // with InputMethodManager at onCreate() would always fail because the window
- // has not gained focus, so the actual behavior will be the same as auto-show.
- // verifyHideBehavior(activity);
+ verifyHideBehavior(activity);
}
@Test
@@ -352,8 +366,7 @@
// Wait until IMMS / IMS handles messages.
SystemClock.sleep(1000);
mInstrumentation.waitForIdleSync();
- // TODO(b/248456059): Ime should be hidden but is shown.
- // verifyHideBehavior(activity);
+ verifyHideBehavior(activity);
mInstrumentation.runOnMainSync(activity::showImeWithWindowInsetsController);
verifyShowBehavior(activity);
@@ -420,11 +433,25 @@
verifyShowBehaviorNotRequestFocus(activity);
}
+ /**
+ * Test IME hidden by calling show and hide IME consecutively with
+ * {@link android.view.WindowInsetsController} APIs in {@link android.app.Activity#onCreate}.
+ *
+ * <p> Note for developers: Use {@link WindowManager.LayoutParams#SOFT_INPUT_STATE_UNCHANGED}
+ * window flag to avoid some softInputMode visibility flags may take presence over
+ * {@link android.view.WindowInsetsController} APIs (e.g. use showSoftInput to show
+ * IME in {@link android.app.Activity#onCreate} but being hidden by
+ * {@link WindowManager.LayoutParams#SOFT_INPUT_STATE_ALWAYS_HIDDEN} window flag after the
+ * activity window focused).</p>
+ */
@Test
public void testHideWithWindowInsetsController_onCreate_requestFocus() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
return;
}
+ if (mSoftInputFlags != SOFT_INPUT_STATE_UNCHANGED) {
+ return;
+ }
// Show and hide with InputMethodManager at onCreate()
Intent intent =
createIntent(
@@ -436,8 +463,7 @@
WINDOW_INSETS_CONTROLLER_HIDE_ON_CREATE));
TestActivity activity = TestActivity.start(intent);
- // TODO(b/248456059): Ime should be hidden but is shown.
- //verifyHideBehavior(activity);
+ verifyHideBehavior(activity);
}
@Test
diff --git a/tests/MotionPrediction/Android.bp b/tests/MotionPrediction/Android.bp
new file mode 100644
index 0000000..b9d01da
--- /dev/null
+++ b/tests/MotionPrediction/Android.bp
@@ -0,0 +1,31 @@
+//
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "frameworks_base_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: ["frameworks_base_license"],
+}
+
+android_app {
+ name: "MotionPrediction",
+ srcs: ["**/*.kt"],
+ platform_apis: true,
+ certificate: "platform",
+}
diff --git a/tests/MotionPrediction/AndroidManifest.xml b/tests/MotionPrediction/AndroidManifest.xml
new file mode 100644
index 0000000..3f8c2f2
--- /dev/null
+++ b/tests/MotionPrediction/AndroidManifest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="test.motionprediction">
+
+ <application android:allowBackup="false"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/app_name"
+ android:supportsRtl="true"
+ android:theme="@style/AppTheme">
+ <activity android:name=".MainActivity"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>
diff --git a/tests/MotionPrediction/OWNERS b/tests/MotionPrediction/OWNERS
new file mode 100644
index 0000000..c88bfe9
--- /dev/null
+++ b/tests/MotionPrediction/OWNERS
@@ -0,0 +1 @@
+include platform/frameworks/base:/INPUT_OWNERS
diff --git a/tests/MotionPrediction/res/layout/activity_main.xml b/tests/MotionPrediction/res/layout/activity_main.xml
new file mode 100644
index 0000000..65dc325
--- /dev/null
+++ b/tests/MotionPrediction/res/layout/activity_main.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingBottom="@dimen/activity_vertical_margin"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="@dimen/activity_vertical_margin"
+ tools:context="test.motionprediction.MainActivity">
+
+ <test.motionprediction.DrawingView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/output" />
+
+</LinearLayout>
diff --git a/tests/MotionPrediction/res/mipmap-hdpi/ic_launcher.png b/tests/MotionPrediction/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..cde69bc
--- /dev/null
+++ b/tests/MotionPrediction/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/tests/MotionPrediction/res/mipmap-mdpi/ic_launcher.png b/tests/MotionPrediction/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c133a0c
--- /dev/null
+++ b/tests/MotionPrediction/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/tests/MotionPrediction/res/mipmap-xhdpi/ic_launcher.png b/tests/MotionPrediction/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..bfa42f0
--- /dev/null
+++ b/tests/MotionPrediction/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/tests/MotionPrediction/res/mipmap-xxhdpi/ic_launcher.png b/tests/MotionPrediction/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..324e72c
--- /dev/null
+++ b/tests/MotionPrediction/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/tests/MotionPrediction/res/mipmap-xxxhdpi/ic_launcher.png b/tests/MotionPrediction/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..aee44e1
--- /dev/null
+++ b/tests/MotionPrediction/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/tests/MotionPrediction/res/values-w820dp/dimens.xml b/tests/MotionPrediction/res/values-w820dp/dimens.xml
new file mode 100644
index 0000000..95669e6
--- /dev/null
+++ b/tests/MotionPrediction/res/values-w820dp/dimens.xml
@@ -0,0 +1,20 @@
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <!-- Example customization of dimensions originally defined in res/values/dimens.xml
+ (such as screen margins) for screens with more than 820dp of available width. This
+ would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
+ <dimen name="activity_horizontal_margin">64dp</dimen>
+</resources>
diff --git a/tests/MotionPrediction/res/values/colors.xml b/tests/MotionPrediction/res/values/colors.xml
new file mode 100644
index 0000000..139eb1d
--- /dev/null
+++ b/tests/MotionPrediction/res/values/colors.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <color name="colorPrimary">#3F51B5</color>
+ <color name="colorPrimaryDark">#303F9F</color>
+ <color name="colorAccent">#FF4081</color>
+</resources>
diff --git a/tests/MotionPrediction/res/values/dimens.xml b/tests/MotionPrediction/res/values/dimens.xml
new file mode 100644
index 0000000..d26136f
--- /dev/null
+++ b/tests/MotionPrediction/res/values/dimens.xml
@@ -0,0 +1,19 @@
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <!-- Default screen margins, per the Android Design guidelines. -->
+ <dimen name="activity_horizontal_margin">16dp</dimen>
+ <dimen name="activity_vertical_margin">16dp</dimen>
+</resources>
diff --git a/tests/MotionPrediction/res/values/strings.xml b/tests/MotionPrediction/res/values/strings.xml
new file mode 100644
index 0000000..16a2bdf
--- /dev/null
+++ b/tests/MotionPrediction/res/values/strings.xml
@@ -0,0 +1,17 @@
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="app_name">Motion Prediction</string>
+</resources>
diff --git a/tests/MotionPrediction/res/values/styles.xml b/tests/MotionPrediction/res/values/styles.xml
new file mode 100644
index 0000000..cfb5e3d
--- /dev/null
+++ b/tests/MotionPrediction/res/values/styles.xml
@@ -0,0 +1,23 @@
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <!-- Base application theme. -->
+ <style name="AppTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
+ <!-- Customize your theme here. -->
+ <item name="android:colorPrimary">@color/colorPrimary</item>
+ <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
+ <item name="android:colorAccent">@color/colorAccent</item>
+ </style>
+</resources>
diff --git a/tests/MotionPrediction/src/test/motionprediction/DrawingView.kt b/tests/MotionPrediction/src/test/motionprediction/DrawingView.kt
new file mode 100644
index 0000000..f529bf7
--- /dev/null
+++ b/tests/MotionPrediction/src/test/motionprediction/DrawingView.kt
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package test.motionprediction
+
+import android.content.Context
+import android.graphics.Canvas
+import android.graphics.Color
+import android.graphics.Paint
+import android.util.AttributeSet
+import android.view.MotionEvent
+import android.view.MotionEvent.ACTION_DOWN
+import android.view.MotionPredictor
+import android.view.View
+
+import java.util.Vector
+
+private fun drawLine(canvas: Canvas, from: MotionEvent, to: MotionEvent, paint: Paint) {
+ canvas.apply {
+ val x0 = from.getX()
+ val y0 = from.getY()
+ val x1 = to.getX()
+ val y1 = to.getY()
+ // TODO: handle historical data
+ drawLine(x0, y0, x1, y1, paint)
+ }
+}
+
+/**
+ * Draw the current stroke and predicted values
+ */
+class DrawingView(context: Context, attrs: AttributeSet) : View(context, attrs) {
+ private val TAG = "DrawingView"
+
+ val events: MutableMap<Int, Vector<MotionEvent>> = mutableMapOf<Int, Vector<MotionEvent>>()
+
+ var isPredictionAvailable = false
+ private val predictor = MotionPredictor(getContext())
+
+ private var predictionPaint = Paint()
+ private var realPaint = Paint()
+
+ init {
+ setBackgroundColor(Color.WHITE)
+ predictionPaint.color = Color.BLACK
+ predictionPaint.setStrokeWidth(5f)
+ realPaint.color = Color.RED
+ realPaint.setStrokeWidth(5f)
+ }
+
+ private fun addEvent(event: MotionEvent) {
+ if (event.getActionMasked() == ACTION_DOWN) {
+ events.remove(event.deviceId)
+ }
+ var vec = events.getOrPut(event.deviceId) { Vector<MotionEvent>() }
+ vec.add(MotionEvent.obtain(event))
+ predictor.record(event)
+ invalidate()
+ }
+
+ public override fun onTouchEvent(event: MotionEvent): Boolean {
+ isPredictionAvailable = predictor.isPredictionAvailable(event.getDeviceId(),
+ event.getSource())
+ addEvent(event)
+ return true
+ }
+
+ public override fun onDraw(canvas: Canvas) {
+ super.onDraw(canvas)
+ if (!isPredictionAvailable) {
+ canvas.apply {
+ drawRect(0f, 0f, 200f, 200f, realPaint)
+ }
+ }
+
+ var eventTime = 0L
+
+ // Draw real events
+ for ((_, vec) in events ) {
+ for (i in 1 until vec.size) {
+ drawLine(canvas, vec[i - 1], vec[i], realPaint)
+ }
+ eventTime = vec.lastElement().eventTime
+ }
+
+ // Draw predictions. Convert to nanos and hardcode to +20ms into the future
+ val predictionList = predictor.predict(eventTime * 1000000 + 20000000)
+ for (prediction in predictionList) {
+ val realEvents = events.get(prediction.deviceId)!!
+ drawLine(canvas, realEvents[realEvents.size - 1], prediction, predictionPaint)
+ }
+ }
+}
diff --git a/tests/MotionPrediction/src/test/motionprediction/MainActivity.kt b/tests/MotionPrediction/src/test/motionprediction/MainActivity.kt
new file mode 100644
index 0000000..cec2c06
--- /dev/null
+++ b/tests/MotionPrediction/src/test/motionprediction/MainActivity.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package test.motionprediction
+
+import android.app.Activity
+import android.os.Bundle
+
+class MainActivity : Activity() {
+ val TAG = "MotionPrediction"
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+ }
+}
diff --git a/tests/SurfaceControlViewHostTest/Android.bp b/tests/SurfaceControlViewHostTest/Android.bp
index 0127ba5..99567b9 100644
--- a/tests/SurfaceControlViewHostTest/Android.bp
+++ b/tests/SurfaceControlViewHostTest/Android.bp
@@ -25,7 +25,10 @@
android_test {
name: "SurfaceControlViewHostTest",
- srcs: ["**/*.java"],
+ srcs: [
+ "**/*.aidl",
+ "**/*.java",
+ ],
platform_apis: true,
certificate: "platform",
}
diff --git a/tests/SurfaceControlViewHostTest/AndroidManifest.xml b/tests/SurfaceControlViewHostTest/AndroidManifest.xml
index 7e9a04d..e50cbc5 100644
--- a/tests/SurfaceControlViewHostTest/AndroidManifest.xml
+++ b/tests/SurfaceControlViewHostTest/AndroidManifest.xml
@@ -24,6 +24,16 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
+ <activity android:name="SurfaceControlViewHostSyncTest"
+ android:label="View Embedding Test Sync"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ </activity>
+ <service android:name=".EmbeddedWindowService"
+ android:process="com.android.test.viewembed.embedded_process"/>
</application>
diff --git a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java
new file mode 100644
index 0000000..abc15b4
--- /dev/null
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.viewembed;
+
+import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
+
+import android.annotation.Nullable;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.PixelFormat;
+import android.hardware.display.DisplayManager;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.RemoteException;
+import android.view.Display;
+import android.view.Gravity;
+import android.view.SurfaceControlViewHost;
+import android.view.WindowManager;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+public class EmbeddedWindowService extends Service {
+ private static final String TAG = "EmbeddedWindowService";
+ private SurfaceControlViewHost mVr;
+
+ private Handler mHandler;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ mHandler = new Handler(Looper.getMainLooper());
+ }
+
+ @Nullable
+ @Override
+ public IBinder onBind(Intent intent) {
+ // Return the interface
+ return new AttachEmbeddedWindow();
+ }
+
+ public static class SlowView extends TextView {
+
+ public SlowView(Context context) {
+ super(context);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ try {
+ Thread.sleep(250);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+
+ private class AttachEmbeddedWindow extends IAttachEmbeddedWindow.Stub {
+ @Override
+ public void attachEmbedded(IBinder hostToken, int width, int height,
+ IAttachEmbeddedWindowCallback callback) {
+ mHandler.post(() -> {
+ Context context = EmbeddedWindowService.this;
+ Display display = getApplicationContext().getSystemService(
+ DisplayManager.class).getDisplay(DEFAULT_DISPLAY);
+ mVr = new SurfaceControlViewHost(context, display, hostToken);
+ FrameLayout content = new FrameLayout(context);
+
+ SlowView slowView = new SlowView(context);
+ slowView.setText("INSIDE TEXT");
+ slowView.setGravity(Gravity.CENTER);
+ slowView.setTextColor(Color.BLACK);
+ slowView.setBackgroundColor(Color.CYAN);
+ content.addView(slowView);
+ WindowManager.LayoutParams lp =
+ new WindowManager.LayoutParams(width, height, TYPE_APPLICATION,
+ 0, PixelFormat.OPAQUE);
+ lp.setTitle("EmbeddedWindow");
+
+ mVr.setView(content, lp);
+ try {
+ callback.onEmbeddedWindowAttached(mVr.getSurfacePackage());
+ } catch (RemoteException e) {
+ }
+ });
+ }
+ @Override
+ public void relayout(WindowManager.LayoutParams lp) {
+ mHandler.post(() -> mVr.relayout(lp));
+ }
+ }
+}
diff --git a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindow.aidl b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindow.aidl
new file mode 100644
index 0000000..9e9faf0
--- /dev/null
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindow.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.viewembed;
+
+import android.os.IBinder;
+import com.android.test.viewembed.IAttachEmbeddedWindowCallback;
+import android.view.WindowManager.LayoutParams;
+
+interface IAttachEmbeddedWindow {
+ void attachEmbedded(IBinder hostToken, int width, int height, in IAttachEmbeddedWindowCallback callback);
+ void relayout(in LayoutParams lp);
+}
\ No newline at end of file
diff --git a/core/java/android/app/timedetector/TimePoint.aidl b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindowCallback.aidl
similarity index 61%
copy from core/java/android/app/timedetector/TimePoint.aidl
copy to tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindowCallback.aidl
index 80d4bc1..c45c24d 100644
--- a/core/java/android/app/timedetector/TimePoint.aidl
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindowCallback.aidl
@@ -1,11 +1,11 @@
/*
- * Copyright (C) 2022, The Android Open Source Project
+ * Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,6 +14,10 @@
* limitations under the License.
*/
-package android.app.timedetector;
+package com.android.test.viewembed;
-parcelable TimePoint;
+import android.view.SurfaceControlViewHost.SurfacePackage;
+
+interface IAttachEmbeddedWindowCallback {
+ void onEmbeddedWindowAttached(in SurfacePackage surfacePackage);
+}
\ No newline at end of file
diff --git a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceControlViewHostSyncTest.java b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceControlViewHostSyncTest.java
new file mode 100644
index 0000000..ea727b9
--- /dev/null
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceControlViewHostSyncTest.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.viewembed;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.graphics.PixelFormat;
+import android.graphics.Point;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.SurfaceControlViewHost.SurfacePackage;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.FrameLayout;
+import android.widget.Switch;
+import android.window.SurfaceSyncGroup;
+
+public class SurfaceControlViewHostSyncTest extends Activity implements SurfaceHolder.Callback {
+ private static final String TAG = "SurfaceControlViewHostSyncTest";
+ private SurfaceView mSv;
+
+ private final Object mLock = new Object();
+ private boolean mIsAttached;
+ private boolean mSurfaceCreated;
+
+ private IAttachEmbeddedWindow mIAttachEmbeddedWindow;
+ private SurfacePackage mSurfacePackage;
+
+ private final Point[] mSizes = new Point[]{new Point(500, 500), new Point(700, 400),
+ new Point(300, 800), new Point(200, 200)};
+ private int mLastSizeIndex = 0;
+
+ private boolean mSync = true;
+
+ private final ServiceConnection mConnection = new ServiceConnection() {
+ // Called when the connection with the service is established
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ Log.d(TAG, "Service Connected");
+ synchronized (mLock) {
+ mIAttachEmbeddedWindow = IAttachEmbeddedWindow.Stub.asInterface(service);
+ }
+ loadEmbedded();
+ }
+
+ public void onServiceDisconnected(ComponentName className) {
+ Log.d(TAG, "Service Disconnected");
+ mIAttachEmbeddedWindow = null;
+ }
+ };
+
+ protected void onCreate(Bundle savedInstanceState) {
+ FrameLayout content = new FrameLayout(this);
+ super.onCreate(savedInstanceState);
+ mSv = new SurfaceView(this);
+ Button button = new Button(this);
+ Switch enableSyncButton = new Switch(this);
+ content.addView(mSv, new FrameLayout.LayoutParams(
+ mSizes[0].x, mSizes[0].y, Gravity.CENTER_HORIZONTAL | Gravity.TOP));
+ content.addView(button, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM));
+ content.addView(enableSyncButton,
+ new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.BOTTOM));
+ setContentView(content);
+
+ mSv.setZOrderOnTop(false);
+ mSv.getHolder().addCallback(this);
+
+ button.setText("Change Size");
+ enableSyncButton.setText("Enable Sync");
+ enableSyncButton.setChecked(true);
+ button.setOnClickListener(v -> {
+ resize();
+ });
+
+ enableSyncButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ mSync = isChecked;
+ });
+
+ Intent intent = new Intent(this, EmbeddedWindowService.class);
+ intent.setAction(IAttachEmbeddedWindow.class.getName());
+ Log.d(TAG, "bindService");
+ bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+ }
+
+ private void resize() {
+ if (mSurfacePackage == null) {
+ return;
+ }
+ Point size = mSizes[mLastSizeIndex % mSizes.length];
+
+ Runnable svResizeRunnable = () -> {
+ mSv.getLayoutParams().width = size.x;
+ mSv.getLayoutParams().height = size.y;
+ mSv.requestLayout();
+ };
+
+ Runnable resizeRunnable = () -> {
+ try {
+ final WindowManager.LayoutParams lp =
+ new WindowManager.LayoutParams(size.x, size.y,
+ WindowManager.LayoutParams.TYPE_APPLICATION, 0,
+ PixelFormat.TRANSPARENT);
+ mIAttachEmbeddedWindow.relayout(lp);
+ } catch (RemoteException e) {
+ }
+ };
+
+ if (mSync) {
+ SurfaceSyncGroup syncGroup = new SurfaceSyncGroup(TAG);
+ syncGroup.addToSync(getWindow().getRootSurfaceControl(), svResizeRunnable);
+ syncGroup.addToSync(mSurfacePackage, resizeRunnable);
+ syncGroup.markSyncReady();
+ } else {
+ svResizeRunnable.run();
+ resizeRunnable.run();
+ }
+
+ mLastSizeIndex++;
+ }
+
+ @Override
+ public void surfaceCreated(SurfaceHolder holder) {
+ synchronized (mLock) {
+ mSurfaceCreated = true;
+ }
+ attachEmbedded();
+ }
+
+ private boolean isReadyToAttach() {
+ synchronized (mLock) {
+ if (!mSurfaceCreated) {
+ Log.d(TAG, "surface is not created");
+ }
+ if (mIAttachEmbeddedWindow == null) {
+ Log.d(TAG, "Service is not attached");
+ }
+ if (mIsAttached) {
+ Log.d(TAG, "Already attached");
+ }
+
+ return mSurfaceCreated && mIAttachEmbeddedWindow != null && !mIsAttached
+ && mSurfacePackage != null;
+ }
+ }
+
+ private void loadEmbedded() {
+ try {
+ mIAttachEmbeddedWindow.attachEmbedded(mSv.getHostToken(), mSizes[0].x, mSizes[0].y,
+ new IAttachEmbeddedWindowCallback.Stub() {
+ @Override
+ public void onEmbeddedWindowAttached(SurfacePackage surfacePackage) {
+ getMainThreadHandler().post(() -> {
+ mSurfacePackage = surfacePackage;
+ attachEmbedded();
+ });
+ }
+ });
+ mLastSizeIndex++;
+ } catch (RemoteException e) {
+ }
+ }
+
+ private void attachEmbedded() {
+ if (!isReadyToAttach()) {
+ return;
+ }
+
+ synchronized (mLock) {
+ mIsAttached = true;
+ }
+ mSv.setChildSurfacePackage(mSurfacePackage);
+ }
+
+ @Override
+ public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+ }
+
+ @Override
+ public void surfaceDestroyed(SurfaceHolder holder) {
+ synchronized (mLock) {
+ mSurfaceCreated = false;
+ }
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ Log.d(TAG, "onStart");
+ resize();
+ }
+}
diff --git a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/AidlImplementationDetector.kt b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/AidlImplementationDetector.kt
index 227cdcd..ab6d871 100644
--- a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/AidlImplementationDetector.kt
+++ b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/AidlImplementationDetector.kt
@@ -36,7 +36,7 @@
private inner class AidlStubHandler(val context: JavaContext) : UElementHandler() {
override fun visitMethod(node: UMethod) {
- val interfaceName = getContainingAidlInterface(node)
+ val interfaceName = getContainingAidlInterface(context, node)
.takeUnless(EXCLUDED_CPP_INTERFACES::contains) ?: return
val body = (node.uastBody as? UBlockExpression) ?: return
visitAidlMethod(context, node, interfaceName, body)
diff --git a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/Constants.kt b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/Constants.kt
index 8ee3763..72de00f 100644
--- a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/Constants.kt
+++ b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/Constants.kt
@@ -26,6 +26,7 @@
ANNOTATION_PERMISSION_MANUALLY_ENFORCED
)
+const val BINDER_CLASS = "android.os.Binder"
const val IINTERFACE_INTERFACE = "android.os.IInterface"
/**
diff --git a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionDetector.kt b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionDetector.kt
index 2665b3c..0baac2c 100644
--- a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionDetector.kt
+++ b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionDetector.kt
@@ -38,6 +38,7 @@
import org.jetbrains.uast.UAnnotation
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UMethod
+import org.jetbrains.uast.toUElement
/**
* Lint Detector that ensures that any method overriding a method annotated
@@ -55,9 +56,6 @@
*/
class EnforcePermissionDetector : Detector(), SourceCodeScanner {
- val BINDER_CLASS = "android.os.Binder"
- val JAVA_OBJECT = "java.lang.Object"
-
override fun applicableAnnotations(): List<String> {
return listOf(ANNOTATION_ENFORCE_PERMISSION)
}
@@ -123,6 +121,11 @@
overriddenMethod: PsiMethod,
checkEquivalence: Boolean = true
) {
+ // If method is not from a Stub subclass, this method shouldn't use @EP at all.
+ // This is handled by EnforcePermissionHelperDetector.
+ if (!isContainedInSubclassOfStub(context, overridingMethod.toUElement() as? UMethod)) {
+ return
+ }
val overridingAnnotation = overridingMethod.getAnnotation(ANNOTATION_ENFORCE_PERMISSION)
val overriddenAnnotation = overriddenMethod.getAnnotation(ANNOTATION_ENFORCE_PERMISSION)
val location = context.getLocation(element)
@@ -131,13 +134,6 @@
val overridingName = "${overridingClass.name}.${overridingMethod.name}"
val overriddenName = "${overriddenClass.name}.${overriddenMethod.name}"
if (overridingAnnotation == null) {
- if (shouldIgnoreGeneratedMethod(
- context,
- overriddenClass = overriddenClass,
- overridingClass = overridingClass)
- ) {
- return
- }
val msg = "The method $overridingName overrides the method $overriddenName which " +
"is annotated with @EnforcePermission. The same annotation must be used " +
"on $overridingName"
@@ -177,54 +173,19 @@
if (node.qualifiedName != ANNOTATION_ENFORCE_PERMISSION) {
return
}
- val method = node.uastParent as? UMethod
- if (method != null) {
- val overridingMethod = method as PsiMethod
- val parents = overridingMethod.findSuperMethods()
- for (overriddenMethod in parents) {
- // The equivalence check can be skipped, if both methods are
- // annotated, it will be verified by visitAnnotationUsage.
- compareMethods(context, method, overridingMethod,
- overriddenMethod, checkEquivalence = false)
- }
+ val method = node.uastParent as? UMethod ?: return
+ val overridingMethod = method as PsiMethod
+ val parents = overridingMethod.findSuperMethods()
+ for (overriddenMethod in parents) {
+ // The equivalence check can be skipped, if both methods are
+ // annotated, it will be verified by visitAnnotationUsage.
+ compareMethods(context, method, overridingMethod,
+ overriddenMethod, checkEquivalence = false)
}
}
}
}
- /**
- * since this lint runs globally, it will also run against generated
- * test code e.g.
- * system/tools/aidl/tests/golden_output/aidl-test-interface-permission-java-source/gen/android/aidl/tests/permission/IProtected.java
- * system/tools/aidl/tests/golden_output/aidl-test-interface-permission-java-source/gen/android/aidl/tests/permission/IProtectedInterface.java
- * we do not want to report errors against generated `Stub` and `Proxy` classes in those files
- */
- private fun shouldIgnoreGeneratedMethod(
- context: JavaContext,
- overriddenClass: PsiClass,
- overridingClass: PsiClass,
-
- ): Boolean {
- if (isInterfaceAndExtendsIInterface(overriddenClass) &&
- context.evaluator.isStatic(overridingClass)) {
- if (overridingClass.name == "Default") return true
- if (overridingClass.name == "Proxy") {
- val shouldBeStub = overridingClass.parent as? PsiClass ?: return false
- return shouldBeStub.name == "Stub" &&
- context.evaluator.isAbstract(shouldBeStub) &&
- context.evaluator.isStatic(shouldBeStub) &&
- shouldBeStub.extendsList?.referenceElements
- ?.any { it.qualifiedName == BINDER_CLASS } == true
- }
- }
- return false
- }
-
- private fun isInterfaceAndExtendsIInterface(overriddenClass: PsiClass): Boolean =
- overriddenClass.isInterface &&
- overriddenClass.extendsList?.referenceElements
- ?.any { it.qualifiedName == IINTERFACE_INTERFACE } == true
-
companion object {
val EXPLANATION = """
The @EnforcePermission annotation is used to indicate that the underlying binder code
diff --git a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionHelperDetector.kt b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionHelperDetector.kt
index 268c565..b65c0fc 100644
--- a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionHelperDetector.kt
+++ b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionHelperDetector.kt
@@ -45,8 +45,19 @@
if (context.evaluator.isAbstract(node)) return
if (!node.hasAnnotation(ANNOTATION_ENFORCE_PERMISSION)) return
+ if (!isContainedInSubclassOfStub(context, node)) {
+ context.report(
+ ISSUE_MISUSING_ENFORCE_PERMISSION,
+ node,
+ context.getLocation(node),
+ "The class of ${node.name} does not inherit from an AIDL generated Stub class"
+ )
+ return
+ }
+
val targetExpression = "${node.name}$HELPER_SUFFIX()"
- val message = "Method must start with $targetExpression or super.${node.name}()"
+ val message =
+ "Method must start with $targetExpression or super.${node.name}(), if applicable"
val firstExpression = (node.uastBody as? UBlockExpression)
?.expressions?.firstOrNull()
@@ -99,16 +110,17 @@
private const val HELPER_SUFFIX = "_enforcePermission"
private const val EXPLANATION = """
- When @EnforcePermission is applied, the AIDL compiler generates a Stub method to do the
- permission check called yourMethodName$HELPER_SUFFIX.
+ The @EnforcePermission annotation can only be used on methods whose class extends from
+ the Stub class generated by the AIDL compiler. When @EnforcePermission is applied, the
+ AIDL compiler generates a Stub method to do the permission check called yourMethodName$HELPER_SUFFIX.
yourMethodName$HELPER_SUFFIX must be executed before any other operation. To do that, you can
- either call it directly or indirectly via super.yourMethodName().
+ either call it directly, or call it indirectly via super.yourMethodName().
"""
val ISSUE_ENFORCE_PERMISSION_HELPER: Issue = Issue.create(
id = "MissingEnforcePermissionHelper",
- briefDescription = """Missing permission-enforcing method call in AIDL method
+ briefDescription = """Missing permission-enforcing method call in AIDL method
|annotated with @EnforcePermission""".trimMargin(),
explanation = EXPLANATION,
category = Category.SECURITY,
@@ -120,6 +132,19 @@
)
)
+ val ISSUE_MISUSING_ENFORCE_PERMISSION: Issue = Issue.create(
+ id = "MisusingEnforcePermissionAnnotation",
+ briefDescription = "@EnforcePermission cannot be used here",
+ explanation = EXPLANATION,
+ category = Category.SECURITY,
+ priority = 6,
+ severity = Severity.ERROR,
+ implementation = Implementation(
+ EnforcePermissionDetector::class.java,
+ Scope.JAVA_FILE_SCOPE
+ )
+ )
+
/**
* handles an edge case with UDeclarationsExpression, where sourcePsi is null,
* resulting in an incorrect Location if used directly
diff --git a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionUtils.kt b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionUtils.kt
index 250ca78..2239ea1 100644
--- a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionUtils.kt
+++ b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionUtils.kt
@@ -16,17 +16,18 @@
package com.google.android.lint.aidl
-import com.google.android.lint.CLASS_STUB
-import com.intellij.psi.PsiAnonymousClass
+import com.android.tools.lint.detector.api.JavaContext
+import com.intellij.psi.PsiClass
+import com.intellij.psi.PsiReferenceList
import org.jetbrains.uast.UMethod
/**
* Given a UMethod, determine if this method is
- * an entrypoint to an interface generated by AIDL,
- * returning the interface name if so
+ * the entrypoint to an interface generated by AIDL,
+ * returning the interface name if so, otherwise returning null
*/
-fun getContainingAidlInterface(node: UMethod): String? {
- if (!isInClassCalledStub(node)) return null
+fun getContainingAidlInterface(context: JavaContext, node: UMethod): String? {
+ if (!isContainedInSubclassOfStub(context, node)) return null
for (superMethod in node.findSuperMethods()) {
for (extendsInterface in superMethod.containingClass?.extendsList?.referenceElements
?: continue) {
@@ -38,11 +39,33 @@
return null
}
-private fun isInClassCalledStub(node: UMethod): Boolean {
- (node.containingClass as? PsiAnonymousClass)?.let {
- return it.baseClassReference.referenceName == CLASS_STUB
+fun isContainedInSubclassOfStub(context: JavaContext, node: UMethod?): Boolean {
+ var superClass = node?.containingClass?.superClass
+ while (superClass != null) {
+ if (isStub(context, superClass)) return true
+ superClass = superClass.superClass
}
- return node.containingClass?.extendsList?.referenceElements?.any {
- it.referenceName == CLASS_STUB
- } ?: false
+ return false
}
+
+fun isStub(context: JavaContext, psiClass: PsiClass?): Boolean {
+ if (psiClass == null) return false
+ if (psiClass.name != "Stub") return false
+ if (!context.evaluator.isStatic(psiClass)) return false
+ if (!context.evaluator.isAbstract(psiClass)) return false
+
+ if (!hasSingleAncestor(psiClass.extendsList, BINDER_CLASS)) return false
+
+ val parent = psiClass.parent as? PsiClass ?: return false
+ if (!hasSingleAncestor(parent.extendsList, IINTERFACE_INTERFACE)) return false
+
+ val parentName = parent.qualifiedName ?: return false
+ if (!hasSingleAncestor(psiClass.implementsList, parentName)) return false
+
+ return true
+}
+
+private fun hasSingleAncestor(references: PsiReferenceList?, qualifiedName: String) =
+ references != null &&
+ references.referenceElements.size == 1 &&
+ references.referenceElements[0].qualifiedName == qualifiedName
diff --git a/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionDetectorTest.kt b/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionDetectorTest.kt
index 4ed68a8..f7560a7 100644
--- a/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionDetectorTest.kt
+++ b/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionDetectorTest.kt
@@ -326,7 +326,7 @@
// A service with permission annotation on the method.
private val interfaceIFooMethodStub: TestFile = java(
"""
- public interface IFooMethod {
+ public interface IFooMethod extends android.os.IInterface {
public static abstract class Stub extends android.os.Binder implements IFooMethod {
@Override
@android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
@@ -361,7 +361,7 @@
// A service without any permission annotation.
private val interfaceIBarStub: TestFile = java(
"""
- public interface IBar {
+ public interface IBar extends android.os.IInterface {
public static abstract class Stub extends android.os.Binder implements IBar {
@Override
public void testMethod() {}
diff --git a/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionHelperDetectorTest.kt b/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionHelperDetectorTest.kt
index df7ebd7..10a6e1d 100644
--- a/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionHelperDetectorTest.kt
+++ b/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionHelperDetectorTest.kt
@@ -22,7 +22,9 @@
class EnforcePermissionHelperDetectorTest : LintDetectorTest() {
override fun getDetector() = EnforcePermissionHelperDetector()
override fun getIssues() = listOf(
- EnforcePermissionHelperDetector.ISSUE_ENFORCE_PERMISSION_HELPER)
+ EnforcePermissionHelperDetector.ISSUE_ENFORCE_PERMISSION_HELPER,
+ EnforcePermissionHelperDetector.ISSUE_MISUSING_ENFORCE_PERMISSION
+ )
override fun lint(): TestLintTask = super.lint().allowMissingSdk()
@@ -47,7 +49,7 @@
.run()
.expect(
"""
- src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
+ src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test(), if applicable [MissingEnforcePermissionHelper]
@Override
^
1 errors, 0 warnings
@@ -55,9 +57,9 @@
)
.expectFixDiffs(
"""
- Autofix for src/Foo.java line 5: Replace with super.test_enforcePermission();...:
+ Autofix for src/Foo.java line 5: Replace with test_enforcePermission();...:
@@ -8 +8
- + super.test_enforcePermission();
+ + test_enforcePermission();
+
"""
)
@@ -85,7 +87,7 @@
.run()
.expect(
"""
- src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
+ src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test(), if applicable [MissingEnforcePermissionHelper]
@Override
^
1 errors, 0 warnings
@@ -93,9 +95,9 @@
)
.expectFixDiffs(
"""
- Autofix for src/Foo.java line 5: Replace with super.test_enforcePermission();...:
+ Autofix for src/Foo.java line 5: Replace with test_enforcePermission();...:
@@ -8 +8
- + super.test_enforcePermission();
+ + test_enforcePermission();
+
"""
)
@@ -120,7 +122,7 @@
.run()
.expect(
"""
- src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
+ src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test(), if applicable [MissingEnforcePermissionHelper]
@Override
^
1 errors, 0 warnings
@@ -172,29 +174,29 @@
.expectClean()
}
- fun testInterfaceDefaultMethod_wouldStillReport() {
+ fun testInterfaceDefaultMethod_notStubAncestor_error() {
lint().files(
- java(
- """
- public interface IProtected extends android.os.IInterface {
- @android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
- default void PermissionProtected() throws android.os.RemoteException {
- String foo = "bar";
- }
+ java(
+ """
+ public interface IProtected extends android.os.IInterface {
+ @android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
+ default void PermissionProtected() throws android.os.RemoteException {
+ String foo = "bar";
}
- """
- ).indented(),
- *stubs
+ }
+ """
+ ).indented(),
+ *stubs
)
- .run()
- .expect(
- """
- src/IProtected.java:2: Error: Method must start with super.PermissionProtected_enforcePermission() or super.PermissionProtected() [MissingEnforcePermissionHelper]
- @android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
- ^
- 1 errors, 0 warnings
- """
- )
+ .run()
+ .expect(
+ """
+ src/IProtected.java:2: Error: The class of PermissionProtected does not inherit from an AIDL generated Stub class [MisusingEnforcePermissionAnnotation]
+ @android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
+ ^
+ 1 errors, 0 warnings
+ """
+ )
}
fun testInheritance_callSuper_okay() {
@@ -343,7 +345,7 @@
.run()
.expect(
"""
- src/test/Bar.java:4: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
+ src/test/Bar.java:4: Error: Method must start with test_enforcePermission() or super.test(), if applicable [MissingEnforcePermissionHelper]
@Override
^
1 errors, 0 warnings
@@ -399,7 +401,7 @@
.run()
.expect(
"""
- src/test/Baz.java:4: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
+ src/test/Baz.java:4: Error: Method must start with test_enforcePermission() or super.test(), if applicable [MissingEnforcePermissionHelper]
@Override
^
1 errors, 0 warnings
@@ -407,6 +409,31 @@
)
}
+ fun testRandomClass_notStubAncestor_error() {
+ lint().files(
+ java(
+ """
+ public class Foo {
+ @android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
+ void PermissionProtected() throws android.os.RemoteException {
+ String foo = "bar";
+ }
+ }
+ """
+ ).indented(),
+ *stubs
+ )
+ .run()
+ .expect(
+ """
+ src/Foo.java:2: Error: The class of PermissionProtected does not inherit from an AIDL generated Stub class [MisusingEnforcePermissionAnnotation]
+ @android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
+ ^
+ 1 errors, 0 warnings
+ """
+ )
+ }
+
companion object {
val stubs = arrayOf(aidlStub, contextStub, binderStub)
}