Merge "Add system_file_type" am: d14b18d80e am: 956e842405
am: ce77dce5e7

Change-Id: Ie9c1894868034f923c684fbc8f33621ac1840820
diff --git a/car-lib/api/current.txt b/car-lib/api/current.txt
index 57975a2..6744238 100644
--- a/car-lib/api/current.txt
+++ b/car-lib/api/current.txt
@@ -493,9 +493,9 @@
 
   public static final class CarSettings.Global {
     ctor public CarSettings.Global();
-    field public static final java.lang.String KEY_GARAGE_MODE_ENABLED = "android.car.GARAGE_MODE_ENABLED";
-    field public static final java.lang.String KEY_GARAGE_MODE_MAINTENANCE_WINDOW = "android.car.GARAGE_MODE_MAINTENANCE_WINDOW";
-    field public static final java.lang.String KEY_GARAGE_MODE_WAKE_UP_TIME = "android.car.GARAGE_MODE_WAKE_UP_TIME";
+    field public static final deprecated java.lang.String KEY_GARAGE_MODE_ENABLED = "android.car.GARAGE_MODE_ENABLED";
+    field public static final deprecated java.lang.String KEY_GARAGE_MODE_MAINTENANCE_WINDOW = "android.car.GARAGE_MODE_MAINTENANCE_WINDOW";
+    field public static final deprecated java.lang.String KEY_GARAGE_MODE_WAKE_UP_TIME = "android.car.GARAGE_MODE_WAKE_UP_TIME";
   }
 
   public final class SpeedBumpConfiguration implements android.os.Parcelable {
diff --git a/car-lib/api/system-current.txt b/car-lib/api/system-current.txt
index df6b85e..c4c4385 100644
--- a/car-lib/api/system-current.txt
+++ b/car-lib/api/system-current.txt
@@ -693,7 +693,7 @@
   }
 
   public static abstract interface CarPowerManager.CarPowerStateListener {
-    method public abstract void onStateChanged(int);
+    method public abstract void onStateChanged(int, java.util.concurrent.CompletableFuture<java.lang.Void>);
     field public static final int SHUTDOWN_CANCELLED = 0; // 0x0
     field public static final int SHUTDOWN_ENTER = 1; // 0x1
     field public static final int SUSPEND_ENTER = 2; // 0x2
diff --git a/car-lib/src/android/car/VehicleHvacFanDirection.java b/car-lib/src/android/car/VehicleHvacFanDirection.java
new file mode 100644
index 0000000..1de111b
--- /dev/null
+++ b/car-lib/src/android/car/VehicleHvacFanDirection.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car;
+
+/**
+ * Bit flags for fan direction.
+ * This constant must be used with HVAC_FAN_DIRECTION property in {@link VehiclePropertyIds}.
+ * @hide
+ */
+public final class VehicleHvacFanDirection {
+    public static final int FACE = 0x1;
+    public static final int FLOOR = 0x2;
+    public static final int DEFROST = 0x4;
+
+    private VehicleHvacFanDirection() {}
+}
diff --git a/car-lib/src/android/car/drivingstate/CarUxRestrictions.java b/car-lib/src/android/car/drivingstate/CarUxRestrictions.java
index 87dfa3a..acccfdd 100644
--- a/car-lib/src/android/car/drivingstate/CarUxRestrictions.java
+++ b/car-lib/src/android/car/drivingstate/CarUxRestrictions.java
@@ -328,12 +328,14 @@
         dest.writeInt(mMaxContentDepth);
     }
 
-    public static final Parcelable.Creator<CarUxRestrictions> CREATOR
-            = new Parcelable.Creator<CarUxRestrictions>() {
+    public static final Parcelable.Creator<CarUxRestrictions> CREATOR =
+            new Parcelable.Creator<CarUxRestrictions>() {
+        @Override
         public CarUxRestrictions createFromParcel(Parcel in) {
             return new CarUxRestrictions(in);
         }
 
+        @Override
         public CarUxRestrictions[] newArray(int size) {
             return new CarUxRestrictions[size];
         }
diff --git a/car-lib/src/android/car/hardware/CarVendorExtensionManager.java b/car-lib/src/android/car/hardware/CarVendorExtensionManager.java
index 9f06764..5e07ace 100644
--- a/car-lib/src/android/car/hardware/CarVendorExtensionManager.java
+++ b/car-lib/src/android/car/hardware/CarVendorExtensionManager.java
@@ -106,7 +106,6 @@
             if (mCallbacks.isEmpty()) {
                 mListenerToBase = new CarPropertyEventListenerToBase(this);
             }
-
             List<CarPropertyConfig> configs = mPropertyManager.getPropertyList();
             for (CarPropertyConfig c : configs) {
                 // Register each individual propertyId
diff --git a/car-lib/src/android/car/hardware/cabin/CarCabinManager.java b/car-lib/src/android/car/hardware/cabin/CarCabinManager.java
index 1dee2b0..7d5715f 100644
--- a/car-lib/src/android/car/hardware/cabin/CarCabinManager.java
+++ b/car-lib/src/android/car/hardware/cabin/CarCabinManager.java
@@ -496,8 +496,6 @@
             mCarPropertyMgr.registerListener(mListenerToBase, c.getPropertyId(), 0);
         }
         mCallbacks.add(callback);
-
-
     }
 
     /**
@@ -510,7 +508,7 @@
         mCallbacks.remove(callback);
         List<CarPropertyConfig> configs = getPropertyList();
         for (CarPropertyConfig c : configs) {
-            // Register each individual propertyId
+                // Register each individual propertyId
             mCarPropertyMgr.unregisterListener(mListenerToBase, c.getPropertyId());
         }
         if (mCallbacks.isEmpty()) {
diff --git a/car-lib/src/android/car/hardware/hvac/CarHvacManager.java b/car-lib/src/android/car/hardware/hvac/CarHvacManager.java
index c953d6f..f86640f 100644
--- a/car-lib/src/android/car/hardware/hvac/CarHvacManager.java
+++ b/car-lib/src/android/car/hardware/hvac/CarHvacManager.java
@@ -54,10 +54,6 @@
      * HVAC property IDs for get/set methods
      */
     /**
-     * Global HVAC properties.  There is only a single instance in a car.
-     * Global properties are in the range of 0-0x3FFF.
-     */
-    /**
      * Mirror defrosters state, bool type
      * true indicates mirror defroster is on
      */
@@ -81,10 +77,6 @@
     public static final int ID_TEMPERATURE_DISPLAY_UNITS = 0x1140050e;
 
     /**
-     * ID_ZONED_* represents properties available on a per-zone basis.  All zones in a car are
-     * not required to have the same properties.  Zone specific properties start at 0x4000.
-     */
-    /**
      * Temperature setpoint, float type
      * Temperature set by the user, units are in degrees Celsius.
      */
@@ -325,7 +317,7 @@
         }
         List<CarPropertyConfig> configs = getPropertyList();
         for (CarPropertyConfig c : configs) {
-            // Register each individual propertyId
+                // Register each individual propertyId
             mCarPropertyMgr.registerListener(mListenerToBase, c.getPropertyId(), 0);
         }
         mCallbacks.add(callback);
@@ -343,6 +335,7 @@
             for (CarPropertyConfig c : configs) {
                 // Register each individual propertyId
                 mCarPropertyMgr.unregisterListener(mListenerToBase, c.getPropertyId());
+
             }
         } catch (Exception e) {
             Log.e(TAG, "getPropertyList exception ", e);
diff --git a/car-lib/src/android/car/hardware/power/CarPowerManager.java b/car-lib/src/android/car/hardware/power/CarPowerManager.java
index 38c5cd1..e4d26ea 100644
--- a/car-lib/src/android/car/hardware/power/CarPowerManager.java
+++ b/car-lib/src/android/car/hardware/power/CarPowerManager.java
@@ -16,15 +16,7 @@
 
 package android.car.hardware.power;
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.ref.WeakReference;
-import java.util.concurrent.Executor;
-
-import com.android.internal.annotations.GuardedBy;
-
 import android.annotation.IntDef;
-import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.car.Car;
 import android.car.CarManagerBase;
@@ -32,10 +24,15 @@
 import android.content.Context;
 import android.os.Handler;
 import android.os.IBinder;
-import android.os.Message;
 import android.os.RemoteException;
 import android.util.Log;
 
+import com.android.internal.annotations.GuardedBy;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.concurrent.CompletableFuture;
+
 /**
  * API for receiving power state change notifications.
  * @hide
@@ -46,7 +43,7 @@
     private final static String TAG = "CarPowerManager";
     private CarPowerStateListener mListener;
     private final ICarPower mService;
-    private Executor mExecutor;
+    private CompletableFuture<Void> mFuture;
 
     @GuardedBy("mLock")
     private ICarPowerStateListener mListenerToService;
@@ -97,32 +94,48 @@
         /**
          * onStateChanged() states.  These definitions must match the ones located in the native
          * CarPowerManager:  packages/services/Car/car-lib/native/CarPowerManager/CarPowerManager.h
-         *
          */
         /**
          * Shutdown is cancelled, return to normal state.
          */
-        public static final int SHUTDOWN_CANCELLED = 0;
+        int SHUTDOWN_CANCELLED = 0;
         /**
          * Enter shutdown state.  Application is expected to cleanup and be ready to shutdown.
          */
-        public static final int SHUTDOWN_ENTER = 1;
+        int SHUTDOWN_ENTER = 1;
         /**
          * Enter suspend state.  Application is expected to cleanup and be ready to suspend.
          */
-        public static final int SUSPEND_ENTER = 2;
+        int SUSPEND_ENTER = 2;
         /**
          * Wake up from suspend, or resume from a cancelled suspend.  Application transitions to
          * normal state.
          */
-        public static final int SUSPEND_EXIT = 3;
+        int SUSPEND_EXIT = 3;
+        /**
+         * NonInteractive state
+         * @hide
+         */
+        int NON_INTERACTIVE = 4;
+        /**
+         * Interactive state (Full On State)
+         * @hide
+         */
+        int INTERACTIVE = 5;
+        /**
+         * State where system is getting ready for shutdown or suspend
+         * @hide
+         */
+        int SHUTDOWN_PREPARE = 6;
 
         /**
          *  Called when power state changes
          *  @param state New power state of device.
-         *  @param token Opaque identifier to keep track of listener events.
+         *  @param future CompletableFuture used by consumer modules to notify CPMS that
+         *                they are ready to continue shutting down. CPMS will wait until this future
+         *                is completed.
          */
-        void onStateChanged(int state);
+        void onStateChanged(int state, CompletableFuture<Void> future);
     }
 
     /**
@@ -169,28 +182,39 @@
     }
 
     /**
+     * Schedule next wake up time in CarPowerManagementSystem
+     * @throws CarNotConnectedException
+     * @hide
+     */
+    public void scheduleNextWakeupTime(int seconds) throws CarNotConnectedException {
+        try {
+            mService.scheduleNextWakeupTime(seconds);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Exception while scheduling next wakeup time", e);
+            throw new CarNotConnectedException(e);
+        }
+    }
+
+    /**
      * Sets a listener to receive power state changes.  Only one listener may be set at a time.
-     * Caller may add an Executor to allow the callback to run in a seperate thread of execution
-     * if the {@link onStateChanged} method will take some time.  If no Executor is passed in,
-     * the listener will run in the Binder thread and should finish quickly.  After
-     * {@link onStateChanged} is called, the {@link finished} method will automatically be called
-     * to notify {@link CarPowerManagementService} that the application has handled the
-     * {@link #SHUTDOWN_ENTER} or {@link #SUSPEND_ENTER} state transitions.  Only these two states
-     * require a confirmation from the application.
+     * For calls that require completion before continue, we attach a {@link CompletableFuture}
+     * which is being used as a signal that caller is finished and ready to proceed.
+     * Once future is completed, the {@link finished} method will automatically be called to notify
+     * {@link CarPowerManagementService} that the application has handled the
+     * {@link #SHUTDOWN_ENTER} or {@link #SUSPEND_ENTER} state transition.
      *
-     * @param executor
      * @param listener
      * @throws CarNotConnectedException, IllegalStateException
      * @hide
      */
-    public void setListener(CarPowerStateListener listener, Executor executor) throws
+    public void setListener(CarPowerStateListener listener) throws
             CarNotConnectedException, IllegalStateException {
         synchronized(mLock) {
             if (mListenerToService == null) {
                 ICarPowerStateListener listenerToService = new ICarPowerStateListener.Stub() {
                     @Override
                     public void onStateChanged(int state, int token) throws RemoteException {
-                        handleEvent(state, token);
+                        handleStateTransition(state, token);
                     }
                 };
                 try {
@@ -203,9 +227,8 @@
                     Car.checkCarNotConnectedExceptionFromCarService(ex);
                 }
             }
-            if ((mExecutor == null) && (mListener == null)) {
-                // Update listener and executor
-                mExecutor = executor;
+            if (mListener == null) {
+                // Update listener
                 mListener = listener;
             } else {
                 throw new IllegalStateException("Listener must be cleared first");
@@ -223,7 +246,7 @@
             listenerToService = mListenerToService;
             mListenerToService = null;
             mListener = null;
-            mExecutor = null;
+            cleanupFuture();
         }
 
         if (listenerToService == null) {
@@ -241,33 +264,38 @@
         }
     }
 
-    private void handleEvent(int state, int token) {
-        Executor executor;
-        synchronized (mLock) {
-            executor = mExecutor;
-        }
-        if (executor != null) {
-            executor.execute(() -> {
-                handleEventInternal(state, token);
+    private void handleStateTransition(int state, int token) {
+        // Update CompletableFuture. It will recreate it or just clean it up
+        updateFuture(state, token);
+        // Notify user that state has changed and supply future
+        mListener.onStateChanged(state, mFuture);
+    }
+
+    private void updateFuture(int state, int token) {
+        cleanupFuture();
+        if (state == CarPowerStateListener.SHUTDOWN_ENTER
+                || state == CarPowerStateListener.SUSPEND_ENTER) {
+            mFuture = new CompletableFuture<>();
+            mFuture.whenComplete((result, exception) -> {
+                if (exception != null) {
+                    Log.e(TAG, "Exception occurred while waiting for future", exception);
+                    return;
+                }
+                try {
+                    mService.finished(mListenerToService, token);
+                } catch (RemoteException e) {
+                    Log.e(TAG, "RemoteException while calling CPMS.finished()", e);
+                }
             });
-        } else {
-            // If no executor provided, run in binder thread.  This should only be done for
-            //  trivial listener logic.
-            handleEventInternal(state, token);
         }
     }
 
-    private void handleEventInternal(int state, int token) {
-        mListener.onStateChanged(state);
-        if ((state == CarPowerStateListener.SHUTDOWN_ENTER) ||
-            (state == CarPowerStateListener.SUSPEND_ENTER)) {
-            // Notify service that state change is complete for SHUTDOWN_ENTER and SUSPEND_ENTER
-            //  states only.
-            try {
-                mService.finished(mListenerToService, token);
-            } catch (RemoteException e) {
-                Log.e(TAG, "Exception in finished", e);
+    private void cleanupFuture() {
+        if (mFuture != null) {
+            if (!mFuture.isDone()) {
+                mFuture.cancel(false);
             }
+            mFuture = null;
         }
     }
 
diff --git a/car-lib/src/android/car/hardware/power/ICarPower.aidl b/car-lib/src/android/car/hardware/power/ICarPower.aidl
index 851ed0c..95f9ec7 100644
--- a/car-lib/src/android/car/hardware/power/ICarPower.aidl
+++ b/car-lib/src/android/car/hardware/power/ICarPower.aidl
@@ -29,4 +29,6 @@
     int getBootReason() = 3;
 
     void finished(in ICarPowerStateListener listener, int token) = 4;
+
+    void scheduleNextWakeupTime(int seconds) = 5;
 }
diff --git a/car-lib/src/android/car/media/CarAudioManager.java b/car-lib/src/android/car/media/CarAudioManager.java
index 7257255..2b9e5af 100644
--- a/car-lib/src/android/car/media/CarAudioManager.java
+++ b/car-lib/src/android/car/media/CarAudioManager.java
@@ -116,7 +116,7 @@
         try {
             return mService.getGroupMaxVolume(groupId);
         } catch (RemoteException e) {
-            Log.e(CarLibLog.TAG_CAR, "getUsageMaxVolume failed", e);
+            Log.e(CarLibLog.TAG_CAR, "getGroupMaxVolume failed", e);
             throw new CarNotConnectedException(e);
         }
     }
@@ -134,7 +134,7 @@
         try {
             return mService.getGroupMinVolume(groupId);
         } catch (RemoteException e) {
-            Log.e(CarLibLog.TAG_CAR, "getUsageMinVolume failed", e);
+            Log.e(CarLibLog.TAG_CAR, "getGroupMinVolume failed", e);
             throw new CarNotConnectedException(e);
         }
     }
@@ -155,7 +155,7 @@
         try {
             return mService.getGroupVolume(groupId);
         } catch (RemoteException e) {
-            Log.e(CarLibLog.TAG_CAR, "getUsageVolume failed", e);
+            Log.e(CarLibLog.TAG_CAR, "getGroupVolume failed", e);
             throw new CarNotConnectedException(e);
         }
     }
diff --git a/car-lib/src/android/car/settings/CarSettings.java b/car-lib/src/android/car/settings/CarSettings.java
index f5e1037..abbefc1 100644
--- a/car-lib/src/android/car/settings/CarSettings.java
+++ b/car-lib/src/android/car/settings/CarSettings.java
@@ -32,17 +32,24 @@
      */
     public static final class Global {
         /**
-         * Key for when to wake up to run garage mode.
+         * DEPRECATED. Will be removed in Q. Key for when to wake up to run garage mode.
+         * @deprecated not used by GarageMode anymore. Will be removed in Q.
          */
+        @Deprecated
         public static final String KEY_GARAGE_MODE_WAKE_UP_TIME =
                 "android.car.GARAGE_MODE_WAKE_UP_TIME";
         /**
-         * Key for whether garage mode is enabled.
+         * DEPRECATED. Will be removed in Q. Key for whether garage mode is enabled.
+         * @deprecated not used by GarageMode anymore. Will be removed in Q.
          */
+        @Deprecated
         public static final String KEY_GARAGE_MODE_ENABLED = "android.car.GARAGE_MODE_ENABLED";
+
         /**
-         * Key for garage mode maintenance window.
+         * DEPRECATED. Will be removed in Q. Key for garage mode maintenance window.
+         * @deprecated not used by GarageMode anymore. Will be removed in Q.
          */
+        @Deprecated
         public static final String KEY_GARAGE_MODE_MAINTENANCE_WINDOW =
                 "android.car.GARAGE_MODE_MAINTENANCE_WINDOW";
 
diff --git a/car-lib/src/android/car/settings/GarageModeSettingsObserver.java b/car-lib/src/android/car/settings/GarageModeSettingsObserver.java
deleted file mode 100644
index 8b58ed6..0000000
--- a/car-lib/src/android/car/settings/GarageModeSettingsObserver.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- *   Licensed under the Apache License, Version 2.0 (the "License");
- *   you may not use this file except in compliance with the License.
- *   You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing, software
- *   distributed under the License is distributed on an "AS IS" BASIS,
- *   WITHOUT WARRANTIES 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.car.settings;
-
-import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
-import android.os.Handler;
-import android.provider.Settings;
-
-import java.lang.ref.WeakReference;
-
-/**
- * A content observer for garage mode settings.
- * @hide
- */
-public abstract class GarageModeSettingsObserver extends ContentObserver {
-
-    public static final Uri GARAGE_MODE_ENABLED_URI =
-            Settings.Global.getUriFor(CarSettings.Global.KEY_GARAGE_MODE_ENABLED);
-    public static final Uri GARAGE_MODE_WAKE_UP_TIME_URI =
-            Settings.Global.getUriFor(CarSettings.Global.KEY_GARAGE_MODE_WAKE_UP_TIME);
-    public static final Uri GARAGE_MODE_MAINTENANCE_WINDOW_URI =
-            Settings.Global.getUriFor(CarSettings.Global.KEY_GARAGE_MODE_MAINTENANCE_WINDOW);
-
-    public static final Uri[] GARAGE_SETTING_URIS = {GARAGE_MODE_ENABLED_URI,
-            GARAGE_MODE_WAKE_UP_TIME_URI, GARAGE_MODE_MAINTENANCE_WINDOW_URI};
-
-    private final WeakReference<Context> mContext;
-
-    public GarageModeSettingsObserver(Context context, Handler handler) {
-        super(handler);
-        mContext = new WeakReference<Context>(context);
-    }
-
-    public void register() {
-        if (mContext.get() == null) {
-            return;
-        }
-        for (Uri uri : GARAGE_SETTING_URIS) {
-            mContext.get().getContentResolver().registerContentObserver(
-                    uri, false, this);
-        }
-    }
-
-    public void unregister() {
-        if (mContext.get() == null) {
-            return;
-        }
-        mContext.get().getContentResolver().unregisterContentObserver(this);
-    }
-
-}
diff --git a/car-lib/src/android/car/test/CarLocationTestHelper.java b/car-lib/src/android/car/test/CarLocationTestHelper.java
new file mode 100644
index 0000000..a5ef4d7
--- /dev/null
+++ b/car-lib/src/android/car/test/CarLocationTestHelper.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.test;
+
+import android.annotation.TestApi;
+import android.content.Context;
+import android.location.Location;
+import android.location.LocationManager;
+
+/**
+ * Provides a helper method for use in ATS tests which calls {@link LocationManager#injectLocation}
+ * without reflection.
+ *
+ * @hide
+ */
+public class CarLocationTestHelper {
+
+    /**
+     * Calls the {@link LocationManager#injectLocation} API without reflection.
+     *
+     * @hide
+     */
+    @TestApi
+    public static boolean injectLocation(Location location, Context context) {
+        LocationManager locationManager =
+                (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
+        return locationManager.injectLocation(location);
+    }
+}
diff --git a/car-lib/src/android/car/vms/VmsOperationRecorder.java b/car-lib/src/android/car/vms/VmsOperationRecorder.java
index bfb6055..23a089a 100644
--- a/car-lib/src/android/car/vms/VmsOperationRecorder.java
+++ b/car-lib/src/android/car/vms/VmsOperationRecorder.java
@@ -132,6 +132,7 @@
         if (isEnabled()) {
             try {
                 JSONObject args = new JSONObject();
+                args.put("publisherId", layersOffering.getPublisherId());
                 JSONArray offering = toJson(layersOffering);
                 if (offering.length() > 0) {
                     args.put("layerDependency", offering);
diff --git a/car-maps-placeholder/AndroidManifest.xml b/car-maps-placeholder/AndroidManifest.xml
index 38caf38..8c96130 100644
--- a/car-maps-placeholder/AndroidManifest.xml
+++ b/car-maps-placeholder/AndroidManifest.xml
@@ -31,6 +31,8 @@
             android:resizeableActivity="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT"/>
+                <category android:name="android.intent.category.APP_MAPS" />
             </intent-filter>
         </activity>
     </application>
diff --git a/car-support-lib/Android.bp b/car-support-lib/Android.bp
deleted file mode 100644
index 2d4269e..0000000
--- a/car-support-lib/Android.bp
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (C) 2018 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-java_library_static {
-    name: "android.support.car",
-    srcs: [
-        "src/**/*.java",
-        "src/**/I*.aidl",
-    ],
-    aidl: {
-        include_dirs: [
-            "system/bt/binder",
-        ],
-    },
-    libs: [
-        "android.car",
-    ],
-    static_libs: [
-        "androidx.annotation_annotation",
-    ],
-    platform_apis: true,
-    product_variables: {
-        pdk: {
-            enabled: false,
-        },
-    },
-    installable: true,
-}
-
-doc_defaults {
-    name: "android.support.car-docs-default",
-    srcs: [
-        "src/**/*.java",
-    ],
-    libs: [
-        "android.car",
-        "android.support.car",
-        "androidx.annotation_annotation",
-    ],
-    custom_template: "droiddoc-templates-sdk",
-    product_variables: {
-        pdk: {
-            enabled: false,
-        },
-    },
-}
-
-droiddoc {
-    name: "android.support.car-stubs-docs",
-    defaults: ["android.support.car-docs-default"],
-    api_tag_name: "ANDROID_SUPPORT_CAR",
-    api_filename: "api.txt",
-    removed_api_filename: "removed.txt",
-    args: "-hide 113 -hide 110 -nodocs -stubpackages android.support.car* ",
-    installable: false,
-    check_api: {
-        current: {
-            api_file: "api/current.txt",
-            removed_api_file: "api/removed.txt",
-            args: " -error 2 -error 3 -error 4 -error 5 -error 6 -error 7 -error 8 -error 9 -error 10 -error 11 " +
-                  " -error 12 -error 13 -error 14 -error 15 -error 16 -error 17 -error 18 -error 19 -error 20 " +
-                  " -error 21 -error 23 -error 24 -error 25 -hide 113 ",
-        },
-    },
-}
-
-droiddoc {
-    name: "android.support.car-proguard-docs",
-    defaults: ["android.support.car-docs-default"],
-    api_tag_name: "ANDROID_SUPPORT_CAR_PROGUARD",
-    proguard_filename: "keep_list.proguard",
-    create_stubs: false,
-}
-
-// TODO(deanh) support lib should be able to be using public APIs only
-droiddoc {
-    name: "android.support.car-docs",
-    srcs: [
-        "src/**/*.java",
-    ],
-    libs: [
-        "android.car",
-        "androidx.annotation_annotation",
-    ],
-    custom_template: "droiddoc-templates-sdk",
-    create_stubs: false,
-    product_variables: {
-        pdk: {
-            enabled: false,
-        },
-    },
-}
diff --git a/car-support-lib/Android.mk b/car-support-lib/Android.mk
deleted file mode 100644
index cfa40be..0000000
--- a/car-support-lib/Android.mk
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-#disble build in PDK, should add prebuilts/fullsdk to make this work
-ifneq ($(TARGET_BUILD_PDK),true)
-
-LOCAL_PATH:= $(call my-dir)
-
-# Build prebuilt android.support.car library
-# ---------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_AAPT_FLAGS := --auto-add-overlay
-LOCAL_MODULE := android.support.car-prebuilt
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-#TODO(b/72620511) support lib should be able to be using public APIs only
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_MANIFEST_FILE := AndroidManifest.xml
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
-LOCAL_JAVA_LIBRARIES += android.car\
-                        androidx.annotation_annotation
-
-LOCAL_PROGUARD_ENABLED := custom optimization obfuscation
-LOCAL_PROGUARD_FLAGS := -dontwarn
-LOCAL_PROGUARD_FLAG_FILES := proguard-release.flags proguard-extra-keeps.flags
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-ifeq ($(BOARD_IS_AUTOMOTIVE), true)
-    $(call dist-for-goals, dist_files, $(built_aar):android.support.car.aar)
-endif
-
-# Same as above, except without proguard.
-# ---------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_AAPT_FLAGS := --auto-add-overlay
-LOCAL_MODULE := android.support.car-1p-prebuilt
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-#TODO(b/72620511) support lib should be able to be using public APIs only
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_MANIFEST_FILE := AndroidManifest.xml
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
-LOCAL_JAVA_LIBRARIES += android.car\
-                        androidx.annotation_annotation
-
-LOCAL_PROGUARD_ENABLED := disabled
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-ifeq ($(BOARD_IS_AUTOMOTIVE), true)
-    $(call dist-for-goals, dist_files, $(built_aar):android.support.car-1p.aar)
-endif
-
-.PHONY: update-support-car-proguard-api
-update-support-car-proguard-api: $(INTERNAL_PLATFORM_ANDROID_SUPPORT_CAR_PROGUARD_PROGUARD_FILE) | $(ACP)
-	@echo $(PRIVATE_CAR_MODULE) copying $(INTERNAL_PLATFORM_ANDROID_SUPPORT_CAR_PROGUARD_PROGUARD_FILE) to $(LOCAL_PATH)/proguard-release.flags
-	$(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_SUPPORT_CAR_PROGUARD_PROGUARD_FILE) $(LOCAL_PATH)/proguard-release.flags
-
-endif #TARGET_BUILD_PDK
diff --git a/car-support-lib/api/current.txt b/car-support-lib/api/current.txt
deleted file mode 100644
index 7ee1246..0000000
--- a/car-support-lib/api/current.txt
+++ /dev/null
@@ -1,228 +0,0 @@
-package android.support.car {
-
-  public class Car {
-    method public void connect() throws java.lang.IllegalStateException;
-    method public static android.support.car.Car createCar(android.content.Context, android.support.car.CarConnectionCallback, android.os.Handler);
-    method public static android.support.car.Car createCar(android.content.Context, android.support.car.CarConnectionCallback);
-    method public void disconnect();
-    method public java.lang.Object getCarManager(java.lang.String) throws android.support.car.CarNotConnectedException;
-    method public <T> T getCarManager(java.lang.Class<T>) throws android.support.car.CarNotConnectedException;
-    method public boolean isConnected();
-    method public boolean isConnecting();
-    field public static final java.lang.String APP_FOCUS_SERVICE = "app_focus";
-    field public static final java.lang.String AUDIO_SERVICE = "audio";
-    field public static final java.lang.String INFO_SERVICE = "info";
-    field public static final java.lang.String NAVIGATION_STATUS_SERVICE = "car_navigation_service";
-    field public static final java.lang.String PERMISSION_CAR_NAVIGATION_MANAGER = "android.car.permission.PERMISSION_CAR_NAVIGATION_MANAGER";
-    field public static final java.lang.String PERMISSION_VENDOR_EXTENSION = "android.car.permission.CAR_VENDOR_EXTENSION";
-    field public static final java.lang.String SENSOR_SERVICE = "sensor";
-  }
-
-  public abstract class CarAppFocusManager {
-    ctor public CarAppFocusManager();
-    method public abstract void abandonAppFocus(android.support.car.CarAppFocusManager.OnAppFocusOwnershipCallback, int);
-    method public abstract void abandonAppFocus(android.support.car.CarAppFocusManager.OnAppFocusOwnershipCallback);
-    method public abstract void addFocusListener(android.support.car.CarAppFocusManager.OnAppFocusChangedListener, int) throws android.support.car.CarNotConnectedException;
-    method public abstract boolean isOwningFocus(int, android.support.car.CarAppFocusManager.OnAppFocusOwnershipCallback) throws android.support.car.CarNotConnectedException;
-    method public abstract void removeFocusListener(android.support.car.CarAppFocusManager.OnAppFocusChangedListener, int);
-    method public abstract void removeFocusListener(android.support.car.CarAppFocusManager.OnAppFocusChangedListener);
-    method public abstract int requestAppFocus(int, android.support.car.CarAppFocusManager.OnAppFocusOwnershipCallback) throws android.support.car.CarNotConnectedException, java.lang.SecurityException;
-    field public static final int APP_FOCUS_REQUEST_FAILED = 0; // 0x0
-    field public static final int APP_FOCUS_REQUEST_SUCCEEDED = 1; // 0x1
-    field public static final int APP_FOCUS_TYPE_NAVIGATION = 1; // 0x1
-  }
-
-  public static abstract interface CarAppFocusManager.OnAppFocusChangedListener {
-    method public abstract void onAppFocusChanged(android.support.car.CarAppFocusManager, int, boolean);
-  }
-
-  public static abstract interface CarAppFocusManager.OnAppFocusOwnershipCallback {
-    method public abstract void onAppFocusOwnershipGranted(android.support.car.CarAppFocusManager, int);
-    method public abstract void onAppFocusOwnershipLost(android.support.car.CarAppFocusManager, int);
-  }
-
-  public abstract class CarConnectionCallback {
-    ctor public CarConnectionCallback();
-    method public abstract void onConnected(android.support.car.Car);
-    method public abstract void onDisconnected(android.support.car.Car);
-  }
-
-  public abstract class CarInfoManager {
-    ctor public CarInfoManager();
-    method public abstract int getDriverPosition() throws android.support.car.CarNotConnectedException;
-    method public abstract float getEvBatteryCapacity() throws android.support.car.CarNotConnectedException;
-    method public abstract int[] getEvConnectorTypes() throws android.support.car.CarNotConnectedException;
-    method public abstract float getFuelCapacity() throws android.support.car.CarNotConnectedException;
-    method public abstract int[] getFuelTypes() throws android.support.car.CarNotConnectedException;
-    method public abstract java.lang.String getHeadunitManufacturer() throws android.support.car.CarNotConnectedException;
-    method public abstract java.lang.String getHeadunitModel() throws android.support.car.CarNotConnectedException;
-    method public abstract java.lang.String getHeadunitSoftwareBuild() throws android.support.car.CarNotConnectedException;
-    method public abstract java.lang.String getHeadunitSoftwareVersion() throws android.support.car.CarNotConnectedException;
-    method public abstract java.lang.String getManufacturer() throws android.support.car.CarNotConnectedException;
-    method public abstract java.lang.String getModel() throws android.support.car.CarNotConnectedException;
-    method public abstract java.lang.String getModelYear() throws android.support.car.CarNotConnectedException;
-    method public abstract java.lang.String getVehicleId() throws android.support.car.CarNotConnectedException;
-    field public static final int DRIVER_SIDE_CENTER = 3; // 0x3
-    field public static final int DRIVER_SIDE_LEFT = 1; // 0x1
-    field public static final int DRIVER_SIDE_RIGHT = 2; // 0x2
-    field public static final int DRIVER_SIDE_UNKNOWN = 0; // 0x0
-  }
-
-  public class CarNotConnectedException extends java.lang.Exception {
-    ctor public CarNotConnectedException();
-    ctor public CarNotConnectedException(java.lang.String);
-    ctor public CarNotConnectedException(java.lang.String, java.lang.Throwable);
-    ctor public CarNotConnectedException(java.lang.Exception);
-  }
-
-}
-
-package android.support.car.annotation {
-
-  public abstract class ValueTypeDef implements java.lang.annotation.Annotation {
-  }
-
-  public abstract class VersionDef implements java.lang.annotation.Annotation {
-  }
-
-}
-
-package android.support.car.hardware {
-
-  public class CarSensorEvent {
-    method public android.support.car.hardware.CarSensorEvent.CompassData getCompassData();
-    method public android.support.car.hardware.CarSensorEvent.DrivingStatusData getDrivingStatusData();
-    method public android.support.car.hardware.CarSensorEvent.NightData getNightData();
-    method public android.support.car.hardware.CarSensorEvent.ParkingBrakeData getParkingBrakeData();
-    field public static final int DRIVE_STATUS_FULLY_RESTRICTED = 31; // 0x1f
-    field public static final int DRIVE_STATUS_LIMIT_MESSAGE_LEN = 16; // 0x10
-    field public static final int DRIVE_STATUS_NO_CONFIG = 8; // 0x8
-    field public static final int DRIVE_STATUS_NO_KEYBOARD_INPUT = 2; // 0x2
-    field public static final int DRIVE_STATUS_NO_VIDEO = 1; // 0x1
-    field public static final int DRIVE_STATUS_NO_VOICE_INPUT = 4; // 0x4
-    field public static final int DRIVE_STATUS_UNRESTRICTED = 0; // 0x0
-    field public static final int INDEX_COMPASS_BEARING = 0; // 0x0
-    field public static final int INDEX_COMPASS_PITCH = 1; // 0x1
-    field public static final int INDEX_COMPASS_ROLL = 2; // 0x2
-    field public static final int INDEX_WHEEL_DISTANCE_FRONT_LEFT = 1; // 0x1
-    field public static final int INDEX_WHEEL_DISTANCE_FRONT_RIGHT = 2; // 0x2
-    field public static final int INDEX_WHEEL_DISTANCE_REAR_LEFT = 4; // 0x4
-    field public static final int INDEX_WHEEL_DISTANCE_REAR_RIGHT = 3; // 0x3
-    field public static final int INDEX_WHEEL_DISTANCE_RESET_COUNT = 0; // 0x0
-    field public final float[] floatValues;
-    field public final int[] intValues;
-    field public final long[] longValues;
-    field public final int sensorType;
-    field public final long timestamp;
-  }
-
-  public static class CarSensorEvent.CompassData {
-    field public final float bearing;
-    field public final float pitch;
-    field public final float roll;
-    field public final long timestamp;
-  }
-
-  public static class CarSensorEvent.DrivingStatusData {
-    method public boolean isConfigurationRestricted();
-    method public boolean isFullyRestricted();
-    method public boolean isKeyboardRestricted();
-    method public boolean isMessageLengthRestricted();
-    method public boolean isVideoRestricted();
-    method public boolean isVoiceRestricted();
-    field public final int status;
-    field public final long timestamp;
-  }
-
-  public static class CarSensorEvent.NightData {
-    field public final boolean isNightMode;
-    field public final long timestamp;
-  }
-
-  public static class CarSensorEvent.ParkingBrakeData {
-    field public final boolean isEngaged;
-    field public final long timestamp;
-  }
-
-  public abstract class CarSensorManager {
-    ctor public CarSensorManager();
-    method public abstract boolean addListener(android.support.car.hardware.CarSensorManager.OnSensorChangedListener, int, int) throws android.support.car.CarNotConnectedException, java.lang.IllegalArgumentException;
-    method public abstract android.support.car.hardware.CarSensorEvent getLatestSensorEvent(int) throws android.support.car.CarNotConnectedException;
-    method public abstract int[] getSupportedSensors() throws android.support.car.CarNotConnectedException;
-    method public abstract boolean isSensorSupported(int) throws android.support.car.CarNotConnectedException;
-    method public abstract void removeListener(android.support.car.hardware.CarSensorManager.OnSensorChangedListener);
-    method public abstract void removeListener(android.support.car.hardware.CarSensorManager.OnSensorChangedListener, int);
-    field public static final int SENSOR_RATE_FASTEST = 100; // 0x64
-    field public static final int SENSOR_RATE_NORMAL = 1; // 0x1
-    field public static final int SENSOR_TYPE_ABS_ACTIVE = 24; // 0x18
-    field public static final int SENSOR_TYPE_COMPASS = 1; // 0x1
-    field public static final int SENSOR_TYPE_DRIVING_STATUS = 11; // 0xb
-    field public static final int SENSOR_TYPE_EV_BATTERY_CHARGE_RATE = 31; // 0x1f
-    field public static final int SENSOR_TYPE_EV_BATTERY_LEVEL = 28; // 0x1c
-    field public static final int SENSOR_TYPE_EV_CHARGE_PORT_CONNECTED = 30; // 0x1e
-    field public static final int SENSOR_TYPE_EV_CHARGE_PORT_OPEN = 29; // 0x1d
-    field public static final int SENSOR_TYPE_FUEL_DOOR_OPEN = 27; // 0x1b
-    field public static final int SENSOR_TYPE_NIGHT = 9; // 0x9
-    field public static final int SENSOR_TYPE_PARKING_BRAKE = 6; // 0x6
-    field public static final int SENSOR_TYPE_TRACTION_CONTROL_ACTIVE = 25; // 0x19
-    field public static final int SENSOR_TYPE_WHEEL_TICK_DISTANCE = 23; // 0x17
-  }
-
-  public static abstract interface CarSensorManager.OnSensorChangedListener {
-    method public abstract void onSensorChanged(android.support.car.hardware.CarSensorManager, android.support.car.hardware.CarSensorEvent);
-  }
-
-}
-
-package android.support.car.media {
-
-  public abstract class CarAudioManager {
-    ctor public CarAudioManager();
-    method public abstract android.support.car.media.CarAudioRecord createCarAudioRecord(int) throws android.support.car.CarNotConnectedException, java.lang.SecurityException;
-    method public abstract android.media.AudioFormat getAudioRecordAudioFormat() throws android.support.car.CarNotConnectedException;
-    method public abstract int getAudioRecordMaxBufferSize() throws android.support.car.CarNotConnectedException;
-    method public abstract int getAudioRecordMinBufferSize() throws android.support.car.CarNotConnectedException;
-    method public abstract boolean isAudioRecordSupported() throws android.support.car.CarNotConnectedException;
-  }
-
-  public abstract class CarAudioRecord {
-    ctor public CarAudioRecord();
-    method public abstract int getAudioSessionId() throws android.support.car.CarNotConnectedException;
-    method public abstract int getBufferSize() throws android.support.car.CarNotConnectedException;
-    method public abstract int getRecordingState() throws android.support.car.CarNotConnectedException;
-    method public abstract int getState() throws android.support.car.CarNotConnectedException;
-    method public abstract int read(byte[], int, int) throws android.support.car.CarNotConnectedException, java.lang.IllegalStateException;
-    method public abstract void release();
-    method public abstract void startRecording() throws android.support.car.CarNotConnectedException;
-    method public abstract void stop();
-  }
-
-}
-
-package android.support.car.navigation {
-
-  public class CarNavigationInstrumentCluster {
-    method public int getImageColorDepthBits();
-    method public int getImageHeight();
-    method public int getImageWidth();
-    method public int getMinIntervalMillis();
-    method public int getType();
-    method public boolean supportsCustomImages();
-    field public static final int CLUSTER_TYPE_CUSTOM_IMAGES_SUPPORTED = 1; // 0x1
-    field public static final int CLUSTER_TYPE_IMAGE_CODES_ONLY = 2; // 0x2
-  }
-
-  public abstract class CarNavigationStatusManager {
-    ctor public CarNavigationStatusManager();
-    method public abstract void addListener(android.support.car.navigation.CarNavigationStatusManager.CarNavigationCallback) throws android.support.car.CarNotConnectedException;
-    method public abstract void removeListener();
-    method public abstract void sendEvent(int, android.os.Bundle) throws android.support.car.CarNotConnectedException;
-  }
-
-  public static abstract interface CarNavigationStatusManager.CarNavigationCallback {
-    method public abstract void onInstrumentClusterStarted(android.support.car.navigation.CarNavigationStatusManager, android.support.car.navigation.CarNavigationInstrumentCluster);
-    method public abstract void onInstrumentClusterStopped(android.support.car.navigation.CarNavigationStatusManager);
-  }
-
-}
-
diff --git a/car-support-lib/api/removed.txt b/car-support-lib/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/car-support-lib/api/removed.txt
+++ /dev/null
diff --git a/car-support-lib/car-support.mk b/car-support-lib/car-support.mk
deleted file mode 100644
index 7feba67..0000000
--- a/car-support-lib/car-support.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Include this make file to build your application with car friendly UI.
-#
-# Make sure to include it after you've set all your desired LOCAL variables.
-# Note that you must explicitly set your LOCAL_RESOURCE_DIR before including this file.
-#
-# For example:
-#
-#   LOCAL_RESOURCE_DIR := \
-#        $(LOCAL_PATH)/res
-#
-#   include packages/services/Car/car-support-lib/car-support.mk
-#
-
-# Check that LOCAL_RESOURCE_DIR is defined
-ifeq (,$(LOCAL_RESOURCE_DIR))
-$(error LOCAL_RESOURCE_DIR must be defined)
-endif
-
-# Add --auto-add-overlay flag if not present
-ifeq (,$(findstring --auto-add-overlay, $(LOCAL_AAPT_FLAGS)))
-LOCAL_AAPT_FLAGS += --auto-add-overlay
-endif
-
-# Include car support library, if not already included
-ifeq (,$(findstring android.support.car, $(LOCAL_STATIC_JAVA_LIBRARIES)))
-LOCAL_STATIC_JAVA_LIBRARIES += android.support.car
-endif
-
-LOCAL_JAVA_LIBRARIES += android.car
diff --git a/car-support-lib/proguard-extra-keeps.flags b/car-support-lib/proguard-extra-keeps.flags
deleted file mode 100644
index 72ea927..0000000
--- a/car-support-lib/proguard-extra-keeps.flags
+++ /dev/null
@@ -1,23 +0,0 @@
--keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,EnclosingMethod,*Annotation*
-
--keep class android.support.car.CarServiceLoader {
-    public protected *;
-    class CarConnectionCallbackProxy;
-}
-
--keep class android.support.car.CarServiceLoader$CarConnectionCallbackProxy {
-    *;
-}
-
--keep class android.support.car.hardware.CarSensorEvent {
-    public <init>(...);
-}
-
--keep class android.support.car.navigation.CarNavigationInstrumentCluster {
-    public static ... createCluster(...);
-    public static ... createCustomImageCluster(...);
-}
-
--keep class android.support.car.CarManagerBase {
-  *;
-}
diff --git a/car-support-lib/proguard-release.flags b/car-support-lib/proguard-release.flags
deleted file mode 100644
index 4f5f917..0000000
--- a/car-support-lib/proguard-release.flags
+++ /dev/null
@@ -1,31385 +0,0 @@
--keep class android.accessibilityservice.AccessibilityServiceInfo {
-    <init>();
-    <init>(android.content.pm.ResolveInfo, android.content.Context);
-
-    public static java.lang.String capabilityToString(int);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static java.lang.String feedbackTypeToString(int);
-    public static java.lang.String flagToString(int);
-    public boolean getCanRetrieveWindowContent();
-    public int getCapabilities();
-    public java.util.List getCapabilityInfos();
-    public java.util.List getCapabilityInfos(android.content.Context);
-    public android.content.ComponentName getComponentName();
-    public java.lang.String getDescription();
-    public java.lang.String getId();
-    public android.content.pm.ResolveInfo getResolveInfo();
-    public java.lang.String getSettingsActivityName();
-    public int hashCode();
-    public boolean isDirectBootAware();
-    public java.lang.String loadDescription(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadSummary(android.content.pm.PackageManager);
-    public void setCapabilities(int);
-    public void setComponentName(android.content.ComponentName);
-    public java.lang.String toString();
-    public void updateDynamicallyConfigurableProperties(android.accessibilityservice.AccessibilityServiceInfo);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int CAPABILITY_CAN_CONTROL_MAGNIFICATION;
-    public static int CAPABILITY_CAN_PERFORM_GESTURES;
-    public static int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY;
-    public static int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS;
-    public static int CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES;
-    public static int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION;
-    public static int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int DEFAULT;
-    public static int FEEDBACK_ALL_MASK;
-    public static int FEEDBACK_AUDIBLE;
-    public static int FEEDBACK_BRAILLE;
-    public static int FEEDBACK_GENERIC;
-    public static int FEEDBACK_HAPTIC;
-    public static int FEEDBACK_SPOKEN;
-    public static int FEEDBACK_VISUAL;
-    public static int FLAG_ENABLE_ACCESSIBILITY_VOLUME;
-    public static int FLAG_FORCE_DIRECT_BOOT_AWARE;
-    public static int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
-    public static int FLAG_REPORT_VIEW_IDS;
-    public static int FLAG_REQUEST_ACCESSIBILITY_BUTTON;
-    public static int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY;
-    public static int FLAG_REQUEST_FILTER_KEY_EVENTS;
-    public static int FLAG_REQUEST_FINGERPRINT_GESTURES;
-    public static int FLAG_REQUEST_TOUCH_EXPLORATION_MODE;
-    public static int FLAG_RETRIEVE_INTERACTIVE_WINDOWS;
-    public boolean crashed;
-    public int eventTypes;
-    public int feedbackType;
-    public int flags;
-    public long notificationTimeout;
-    public java.lang.String[] packageNames;
-}
-
--keep class android.accessibilityservice.AccessibilityServiceInfo$CapabilityInfo {
-    <init>(int, int, int);
-
-
-
-    public int capability;
-    public int descResId;
-    public int titleResId;
-}
-
--keep class android.accessibilityservice.IAccessibilityServiceClient {
-
-    public abstract void clearAccessibilityCache();
-    public abstract void init(android.accessibilityservice.IAccessibilityServiceConnection, int, android.os.IBinder);
-    public abstract void onAccessibilityButtonAvailabilityChanged(boolean);
-    public abstract void onAccessibilityButtonClicked();
-    public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent, boolean);
-    public abstract void onFingerprintCapturingGesturesChanged(boolean);
-    public abstract void onFingerprintGesture(int);
-    public abstract void onGesture(int);
-    public abstract void onInterrupt();
-    public abstract void onKeyEvent(android.view.KeyEvent, int);
-    public abstract void onMagnificationChanged(android.graphics.Region, float, float, float);
-    public abstract void onPerformGestureResult(int, boolean);
-    public abstract void onSoftKeyboardShowModeChanged(int);
-
-
-}
-
--keep class android.accessibilityservice.IAccessibilityServiceConnection {
-
-    public abstract void disableSelf();
-    public abstract java.lang.String[] findAccessibilityNodeInfoByAccessibilityId(int, long, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, int, long, android.os.Bundle);
-    public abstract java.lang.String[] findAccessibilityNodeInfosByText(int, long, java.lang.String, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, long);
-    public abstract java.lang.String[] findAccessibilityNodeInfosByViewId(int, long, java.lang.String, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, long);
-    public abstract java.lang.String[] findFocus(int, long, int, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, long);
-    public abstract java.lang.String[] focusSearch(int, long, int, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, long);
-    public abstract float getMagnificationCenterX();
-    public abstract float getMagnificationCenterY();
-    public abstract android.graphics.Region getMagnificationRegion();
-    public abstract float getMagnificationScale();
-    public abstract android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
-    public abstract android.view.accessibility.AccessibilityWindowInfo getWindow(int);
-    public abstract java.util.List getWindows();
-    public abstract boolean isAccessibilityButtonAvailable();
-    public abstract boolean isFingerprintGestureDetectionAvailable();
-    public abstract boolean performAccessibilityAction(int, long, int, android.os.Bundle, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, long);
-    public abstract boolean performGlobalAction(int);
-    public abstract boolean resetMagnification(boolean);
-    public abstract void sendGesture(int, android.content.pm.ParceledListSlice);
-    public abstract void setMagnificationCallbackEnabled(boolean);
-    public abstract boolean setMagnificationScaleAndCenter(float, float, float, boolean);
-    public abstract void setOnKeyEventResult(boolean, int);
-    public abstract void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
-    public abstract void setSoftKeyboardCallbackEnabled(boolean);
-    public abstract boolean setSoftKeyboardShowMode(int);
-
-
-}
-
--keep class android.accounts.Account {
-    <init>(java.lang.String, java.lang.String);
-    <init>(android.accounts.Account, java.lang.String);
-    <init>(java.lang.String, java.lang.String, java.lang.String);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public java.lang.String getAccessId();
-    public int hashCode();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String name;
-    public java.lang.String type;
-}
-
--keep class android.animation.AnimationHandler {
-    <init>();
-
-    public void addAnimationFrameCallback(android.animation.AnimationHandler$AnimationFrameCallback, long);
-    public void addOneShotCommitCallback(android.animation.AnimationHandler$AnimationFrameCallback);
-    public static int getAnimationCount();
-    public static long getFrameDelay();
-    public static android.animation.AnimationHandler getInstance();
-    public void removeCallback(android.animation.AnimationHandler$AnimationFrameCallback);
-    public static void setFrameDelay(long);
-    public void setProvider(android.animation.AnimationHandler$AnimationFrameCallbackProvider);
-
-
-    public static java.lang.ThreadLocal sAnimatorHandler;
-}
-
--keep class android.animation.AnimationHandler$AnimationFrameCallback {
-
-    public abstract void commitAnimationFrame(long);
-    public abstract boolean doAnimationFrame(long);
-
-
-}
-
--keep class android.animation.AnimationHandler$AnimationFrameCallbackProvider {
-
-    public abstract long getFrameDelay();
-    public abstract long getFrameTime();
-    public abstract void postCommitCallback(java.lang.Runnable);
-    public abstract void postFrameCallback(android.view.Choreographer$FrameCallback);
-    public abstract void setFrameDelay(long);
-
-
-}
-
--keep class android.animation.Animator {
-    <init>();
-
-    public void addListener(android.animation.Animator$AnimatorListener);
-    public void addPauseListener(android.animation.Animator$AnimatorPauseListener);
-    public void appendChangingConfigurations(int);
-    public boolean canReverse();
-    public void cancel();
-    public android.animation.Animator clone();
-    public java.lang.Object clone();
-    public android.content.res.ConstantState createConstantState();
-    public void end();
-    public int getChangingConfigurations();
-    public abstract long getDuration();
-    public android.animation.TimeInterpolator getInterpolator();
-    public java.util.ArrayList getListeners();
-    public abstract long getStartDelay();
-    public long getTotalDuration();
-    public boolean isPaused();
-    public abstract boolean isRunning();
-    public boolean isStarted();
-    public void pause();
-    public void removeAllListeners();
-    public void removeListener(android.animation.Animator$AnimatorListener);
-    public void removePauseListener(android.animation.Animator$AnimatorPauseListener);
-    public void resume();
-    public void reverse();
-    public void setAllowRunningAsynchronously(boolean);
-    public void setChangingConfigurations(int);
-    public abstract android.animation.Animator setDuration(long);
-    public abstract void setInterpolator(android.animation.TimeInterpolator);
-    public abstract void setStartDelay(long);
-    public void setTarget(java.lang.Object);
-    public void setupEndValues();
-    public void setupStartValues();
-    public void start();
-
-
-    public static long DURATION_INFINITE;
-}
-
--keep class android.animation.Animator$AnimatorListener {
-
-    public abstract void onAnimationCancel(android.animation.Animator);
-    public void onAnimationEnd(android.animation.Animator, boolean);
-    public abstract void onAnimationEnd(android.animation.Animator);
-    public abstract void onAnimationRepeat(android.animation.Animator);
-    public void onAnimationStart(android.animation.Animator, boolean);
-    public abstract void onAnimationStart(android.animation.Animator);
-
-
-}
-
--keep class android.animation.Animator$AnimatorPauseListener {
-
-    public abstract void onAnimationPause(android.animation.Animator);
-    public abstract void onAnimationResume(android.animation.Animator);
-
-
-}
-
--keep class android.animation.AnimatorSet {
-    <init>();
-
-    public boolean canReverse();
-    public void cancel();
-    public android.animation.AnimatorSet clone();
-    public android.animation.Animator clone();
-    public java.lang.Object clone();
-    public void commitAnimationFrame(long);
-    public boolean doAnimationFrame(long);
-    public void end();
-    public int getChangingConfigurations();
-    public java.util.ArrayList getChildAnimations();
-    public long getCurrentPlayTime();
-    public long getDuration();
-    public android.animation.TimeInterpolator getInterpolator();
-    public long getStartDelay();
-    public long getTotalDuration();
-    public boolean isRunning();
-    public boolean isStarted();
-    public void pause();
-    public android.animation.AnimatorSet$Builder play(android.animation.Animator);
-    public void playSequentially(android.animation.Animator[]);
-    public void playSequentially(java.util.List);
-    public void playTogether(android.animation.Animator[]);
-    public void playTogether(java.util.Collection);
-    public void resume();
-    public void reverse();
-    public void setCurrentPlayTime(long);
-    public android.animation.AnimatorSet setDuration(long);
-    public android.animation.Animator setDuration(long);
-    public void setInterpolator(android.animation.TimeInterpolator);
-    public void setStartDelay(long);
-    public void setTarget(java.lang.Object);
-    public void setupEndValues();
-    public void setupStartValues();
-    public boolean shouldPlayTogether();
-    public void start();
-    public java.lang.String toString();
-
-
-}
-
--keep class android.animation.AnimatorSet$Builder {
-
-    public android.animation.AnimatorSet$Builder after(android.animation.Animator);
-    public android.animation.AnimatorSet$Builder after(long);
-    public android.animation.AnimatorSet$Builder before(android.animation.Animator);
-    public android.animation.AnimatorSet$Builder with(android.animation.Animator);
-
-
-}
-
--keep class android.animation.Keyframe {
-    <init>();
-
-    public abstract android.animation.Keyframe clone();
-    public java.lang.Object clone();
-    public float getFraction();
-    public android.animation.TimeInterpolator getInterpolator();
-    public java.lang.Class getType();
-    public abstract java.lang.Object getValue();
-    public boolean hasValue();
-    public static android.animation.Keyframe ofFloat(float, float);
-    public static android.animation.Keyframe ofFloat(float);
-    public static android.animation.Keyframe ofInt(float, int);
-    public static android.animation.Keyframe ofInt(float);
-    public static android.animation.Keyframe ofObject(float, java.lang.Object);
-    public static android.animation.Keyframe ofObject(float);
-    public void setFraction(float);
-    public void setInterpolator(android.animation.TimeInterpolator);
-    public abstract void setValue(java.lang.Object);
-
-
-}
-
--keep class android.animation.LayoutTransition {
-    <init>();
-
-    public void addChild(android.view.ViewGroup, android.view.View);
-    public void addTransitionListener(android.animation.LayoutTransition$TransitionListener);
-    public void cancel();
-    public void cancel(int);
-    public void disableTransitionType(int);
-    public void enableTransitionType(int);
-    public void endChangingAnimations();
-    public android.animation.Animator getAnimator(int);
-    public long getDuration(int);
-    public android.animation.TimeInterpolator getInterpolator(int);
-    public long getStagger(int);
-    public long getStartDelay(int);
-    public java.util.List getTransitionListeners();
-    public void hideChild(android.view.ViewGroup, android.view.View);
-    public void hideChild(android.view.ViewGroup, android.view.View, int);
-    public boolean isChangingLayout();
-    public boolean isRunning();
-    public boolean isTransitionTypeEnabled(int);
-    public void layoutChange(android.view.ViewGroup);
-    public void removeChild(android.view.ViewGroup, android.view.View);
-    public void removeTransitionListener(android.animation.LayoutTransition$TransitionListener);
-    public void setAnimateParentHierarchy(boolean);
-    public void setAnimator(int, android.animation.Animator);
-    public void setDuration(long);
-    public void setDuration(int, long);
-    public void setInterpolator(int, android.animation.TimeInterpolator);
-    public void setStagger(int, long);
-    public void setStartDelay(int, long);
-    public void showChild(android.view.ViewGroup, android.view.View);
-    public void showChild(android.view.ViewGroup, android.view.View, int);
-    public void startChangingAnimations();
-
-
-    public static int APPEARING;
-    public static int CHANGE_APPEARING;
-    public static int CHANGE_DISAPPEARING;
-    public static int CHANGING;
-    public static int DISAPPEARING;
-}
-
--keep class android.animation.LayoutTransition$TransitionListener {
-
-    public abstract void endTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
-    public abstract void startTransition(android.animation.LayoutTransition, android.view.ViewGroup, android.view.View, int);
-
-
-}
-
--keep class android.animation.PropertyValuesHolder {
-
-    public android.animation.PropertyValuesHolder clone();
-    public java.lang.Object clone();
-    public java.lang.String getPropertyName();
-    public void getPropertyValues(android.animation.PropertyValuesHolder$PropertyValues);
-    public java.lang.Class getValueType();
-    public static android.animation.PropertyValuesHolder ofFloat(java.lang.String, float[]);
-    public static android.animation.PropertyValuesHolder ofFloat(android.util.Property, float[]);
-    public static android.animation.PropertyValuesHolder ofInt(java.lang.String, int[]);
-    public static android.animation.PropertyValuesHolder ofInt(android.util.Property, int[]);
-    public static android.animation.PropertyValuesHolder ofKeyframe(java.lang.String, android.animation.Keyframe[]);
-    public static android.animation.PropertyValuesHolder ofKeyframe(android.util.Property, android.animation.Keyframe[]);
-    public static android.animation.PropertyValuesHolder ofMultiFloat(java.lang.String, float[][]);
-    public static android.animation.PropertyValuesHolder ofMultiFloat(java.lang.String, android.graphics.Path);
-    public static android.animation.PropertyValuesHolder ofMultiFloat(java.lang.String, android.animation.TypeConverter, android.animation.TypeEvaluator, java.lang.Object[]);
-    public static android.animation.PropertyValuesHolder ofMultiFloat(java.lang.String, android.animation.TypeConverter, android.animation.TypeEvaluator, android.animation.Keyframe[]);
-    public static android.animation.PropertyValuesHolder ofMultiInt(java.lang.String, int[][]);
-    public static android.animation.PropertyValuesHolder ofMultiInt(java.lang.String, android.graphics.Path);
-    public static android.animation.PropertyValuesHolder ofMultiInt(java.lang.String, android.animation.TypeConverter, android.animation.TypeEvaluator, java.lang.Object[]);
-    public static android.animation.PropertyValuesHolder ofMultiInt(java.lang.String, android.animation.TypeConverter, android.animation.TypeEvaluator, android.animation.Keyframe[]);
-    public static android.animation.PropertyValuesHolder ofObject(java.lang.String, android.animation.TypeEvaluator, java.lang.Object[]);
-    public static android.animation.PropertyValuesHolder ofObject(java.lang.String, android.animation.TypeConverter, android.graphics.Path);
-    public static android.animation.PropertyValuesHolder ofObject(android.util.Property, android.animation.TypeEvaluator, java.lang.Object[]);
-    public static android.animation.PropertyValuesHolder ofObject(android.util.Property, android.animation.TypeConverter, android.animation.TypeEvaluator, java.lang.Object[]);
-    public static android.animation.PropertyValuesHolder ofObject(android.util.Property, android.animation.TypeConverter, android.graphics.Path);
-    public void setConverter(android.animation.TypeConverter);
-    public void setEvaluator(android.animation.TypeEvaluator);
-    public void setFloatValues(float[]);
-    public void setIntValues(int[]);
-    public void setKeyframes(android.animation.Keyframe[]);
-    public void setObjectValues(java.lang.Object[]);
-    public void setProperty(android.util.Property);
-    public void setPropertyName(java.lang.String);
-    public java.lang.String toString();
-
-
-    protected android.util.Property mProperty;
-}
-
--keep class android.animation.PropertyValuesHolder$PropertyValues {
-    <init>();
-
-    public java.lang.String toString();
-
-
-    public android.animation.PropertyValuesHolder$PropertyValues$DataSource dataSource;
-    public java.lang.Object endValue;
-    public java.lang.String propertyName;
-    public java.lang.Object startValue;
-    public java.lang.Class type;
-}
-
--keep class android.animation.PropertyValuesHolder$PropertyValues$DataSource {
-
-    public abstract java.lang.Object getValueAtFraction(float);
-
-
-}
-
--keep class android.animation.StateListAnimator {
-    <init>();
-
-    public void addState(int[], android.animation.Animator);
-    public void appendChangingConfigurations(int);
-    public android.animation.StateListAnimator clone();
-    public java.lang.Object clone();
-    public android.content.res.ConstantState createConstantState();
-    public int getChangingConfigurations();
-    public android.animation.Animator getRunningAnimator();
-    public android.view.View getTarget();
-    public java.util.ArrayList getTuples();
-    public void jumpToCurrentState();
-    public void setChangingConfigurations(int);
-    public void setState(int[]);
-    public void setTarget(android.view.View);
-
-
-}
-
--keep class android.animation.StateListAnimator$Tuple {
-
-    public android.animation.Animator getAnimator();
-    public int[] getSpecs();
-
-
-}
-
--keep class android.animation.TimeInterpolator {
-
-    public abstract float getInterpolation(float);
-
-
-}
-
--keep class android.animation.TypeConverter {
-    <init>(java.lang.Class, java.lang.Class);
-
-    public abstract java.lang.Object convert(java.lang.Object);
-
-
-}
-
--keep class android.animation.TypeEvaluator {
-
-    public abstract java.lang.Object evaluate(float, java.lang.Object, java.lang.Object);
-
-
-}
-
--keep class android.animation.ValueAnimator {
-    <init>();
-
-    public void addUpdateListener(android.animation.ValueAnimator$AnimatorUpdateListener);
-    public static boolean areAnimatorsEnabled();
-    public boolean canReverse();
-    public void cancel();
-    public android.animation.ValueAnimator clone();
-    public android.animation.Animator clone();
-    public java.lang.Object clone();
-    public void commitAnimationFrame(long);
-    public boolean doAnimationFrame(long);
-    public void end();
-    public float getAnimatedFraction();
-    public java.lang.Object getAnimatedValue();
-    public java.lang.Object getAnimatedValue(java.lang.String);
-    public android.animation.AnimationHandler getAnimationHandler();
-    public static int getCurrentAnimationsCount();
-    public long getCurrentPlayTime();
-    public long getDuration();
-    public static float getDurationScale();
-    public static long getFrameDelay();
-    public android.animation.TimeInterpolator getInterpolator();
-    public int getRepeatCount();
-    public int getRepeatMode();
-    public long getStartDelay();
-    public long getTotalDuration();
-    public android.animation.PropertyValuesHolder[] getValues();
-    public boolean isRunning();
-    public boolean isStarted();
-    public static android.animation.ValueAnimator ofArgb(int[]);
-    public static android.animation.ValueAnimator ofFloat(float[]);
-    public static android.animation.ValueAnimator ofInt(int[]);
-    public static android.animation.ValueAnimator ofObject(android.animation.TypeEvaluator, java.lang.Object[]);
-    public static android.animation.ValueAnimator ofPropertyValuesHolder(android.animation.PropertyValuesHolder[]);
-    public void overrideDurationScale(float);
-    public void pause();
-    public void removeAllUpdateListeners();
-    public void removeUpdateListener(android.animation.ValueAnimator$AnimatorUpdateListener);
-    public void resume();
-    public void reverse();
-    public void setAllowRunningAsynchronously(boolean);
-    public void setCurrentFraction(float);
-    public void setCurrentPlayTime(long);
-    public android.animation.ValueAnimator setDuration(long);
-    public android.animation.Animator setDuration(long);
-    public static void setDurationScale(float);
-    public void setEvaluator(android.animation.TypeEvaluator);
-    public void setFloatValues(float[]);
-    public static void setFrameDelay(long);
-    public void setIntValues(int[]);
-    public void setInterpolator(android.animation.TimeInterpolator);
-    public void setObjectValues(java.lang.Object[]);
-    public void setRepeatCount(int);
-    public void setRepeatMode(int);
-    public void setStartDelay(long);
-    public void setValues(android.animation.PropertyValuesHolder[]);
-    public void start();
-    public java.lang.String toString();
-
-
-    public static int INFINITE;
-    public static int RESTART;
-    public static int REVERSE;
-}
-
--keep class android.animation.ValueAnimator$AnimatorUpdateListener {
-
-    public abstract void onAnimationUpdate(android.animation.ValueAnimator);
-
-
-}
-
--keep class android.app.ActionBar {
-    <init>();
-
-    public abstract void addOnMenuVisibilityListener(android.app.ActionBar$OnMenuVisibilityListener);
-    public abstract void addTab(android.app.ActionBar$Tab);
-    public abstract void addTab(android.app.ActionBar$Tab, boolean);
-    public abstract void addTab(android.app.ActionBar$Tab, int);
-    public abstract void addTab(android.app.ActionBar$Tab, int, boolean);
-    public boolean closeOptionsMenu();
-    public boolean collapseActionView();
-    public void dispatchMenuVisibilityChanged(boolean);
-    public abstract android.view.View getCustomView();
-    public abstract int getDisplayOptions();
-    public float getElevation();
-    public abstract int getHeight();
-    public int getHideOffset();
-    public abstract int getNavigationItemCount();
-    public abstract int getNavigationMode();
-    public abstract int getSelectedNavigationIndex();
-    public abstract android.app.ActionBar$Tab getSelectedTab();
-    public abstract java.lang.CharSequence getSubtitle();
-    public abstract android.app.ActionBar$Tab getTabAt(int);
-    public abstract int getTabCount();
-    public android.content.Context getThemedContext();
-    public abstract java.lang.CharSequence getTitle();
-    public abstract void hide();
-    public boolean invalidateOptionsMenu();
-    public boolean isHideOnContentScrollEnabled();
-    public abstract boolean isShowing();
-    public boolean isTitleTruncated();
-    public abstract android.app.ActionBar$Tab newTab();
-    public void onConfigurationChanged(android.content.res.Configuration);
-    public void onDestroy();
-    public boolean onKeyShortcut(int, android.view.KeyEvent);
-    public boolean onMenuKeyEvent(android.view.KeyEvent);
-    public boolean openOptionsMenu();
-    public abstract void removeAllTabs();
-    public abstract void removeOnMenuVisibilityListener(android.app.ActionBar$OnMenuVisibilityListener);
-    public abstract void removeTab(android.app.ActionBar$Tab);
-    public abstract void removeTabAt(int);
-    public abstract void selectTab(android.app.ActionBar$Tab);
-    public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    public abstract void setCustomView(android.view.View);
-    public abstract void setCustomView(android.view.View, android.app.ActionBar$LayoutParams);
-    public abstract void setCustomView(int);
-    public void setDefaultDisplayHomeAsUpEnabled(boolean);
-    public abstract void setDisplayHomeAsUpEnabled(boolean);
-    public abstract void setDisplayOptions(int);
-    public abstract void setDisplayOptions(int, int);
-    public abstract void setDisplayShowCustomEnabled(boolean);
-    public abstract void setDisplayShowHomeEnabled(boolean);
-    public abstract void setDisplayShowTitleEnabled(boolean);
-    public abstract void setDisplayUseLogoEnabled(boolean);
-    public void setElevation(float);
-    public void setHideOffset(int);
-    public void setHideOnContentScrollEnabled(boolean);
-    public void setHomeActionContentDescription(java.lang.CharSequence);
-    public void setHomeActionContentDescription(int);
-    public void setHomeAsUpIndicator(android.graphics.drawable.Drawable);
-    public void setHomeAsUpIndicator(int);
-    public void setHomeButtonEnabled(boolean);
-    public abstract void setIcon(int);
-    public abstract void setIcon(android.graphics.drawable.Drawable);
-    public abstract void setListNavigationCallbacks(android.widget.SpinnerAdapter, android.app.ActionBar$OnNavigationListener);
-    public abstract void setLogo(int);
-    public abstract void setLogo(android.graphics.drawable.Drawable);
-    public abstract void setNavigationMode(int);
-    public abstract void setSelectedNavigationItem(int);
-    public void setShowHideAnimationEnabled(boolean);
-    public void setSplitBackgroundDrawable(android.graphics.drawable.Drawable);
-    public void setStackedBackgroundDrawable(android.graphics.drawable.Drawable);
-    public abstract void setSubtitle(java.lang.CharSequence);
-    public abstract void setSubtitle(int);
-    public abstract void setTitle(java.lang.CharSequence);
-    public abstract void setTitle(int);
-    public void setWindowTitle(java.lang.CharSequence);
-    public abstract void show();
-    public android.view.ActionMode startActionMode(android.view.ActionMode$Callback);
-
-
-    public static int DISPLAY_HOME_AS_UP;
-    public static int DISPLAY_SHOW_CUSTOM;
-    public static int DISPLAY_SHOW_HOME;
-    public static int DISPLAY_SHOW_TITLE;
-    public static int DISPLAY_TITLE_MULTIPLE_LINES;
-    public static int DISPLAY_USE_LOGO;
-    public static int NAVIGATION_MODE_LIST;
-    public static int NAVIGATION_MODE_STANDARD;
-    public static int NAVIGATION_MODE_TABS;
-}
-
--keep class android.app.ActionBar$LayoutParams {
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(int, int);
-    <init>(int, int, int);
-    <init>(int);
-    <init>(android.app.ActionBar$LayoutParams);
-    <init>(android.view.ViewGroup$LayoutParams);
-
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-
-
-    public int gravity;
-}
-
--keep class android.app.ActionBar$OnMenuVisibilityListener {
-
-    public abstract void onMenuVisibilityChanged(boolean);
-
-
-}
-
--keep class android.app.ActionBar$OnNavigationListener {
-
-    public abstract boolean onNavigationItemSelected(int, long);
-
-
-}
-
--keep class android.app.ActionBar$Tab {
-    <init>();
-
-    public abstract java.lang.CharSequence getContentDescription();
-    public abstract android.view.View getCustomView();
-    public abstract android.graphics.drawable.Drawable getIcon();
-    public abstract int getPosition();
-    public abstract java.lang.Object getTag();
-    public abstract java.lang.CharSequence getText();
-    public abstract void select();
-    public abstract android.app.ActionBar$Tab setContentDescription(int);
-    public abstract android.app.ActionBar$Tab setContentDescription(java.lang.CharSequence);
-    public abstract android.app.ActionBar$Tab setCustomView(android.view.View);
-    public abstract android.app.ActionBar$Tab setCustomView(int);
-    public abstract android.app.ActionBar$Tab setIcon(android.graphics.drawable.Drawable);
-    public abstract android.app.ActionBar$Tab setIcon(int);
-    public abstract android.app.ActionBar$Tab setTabListener(android.app.ActionBar$TabListener);
-    public abstract android.app.ActionBar$Tab setTag(java.lang.Object);
-    public abstract android.app.ActionBar$Tab setText(java.lang.CharSequence);
-    public abstract android.app.ActionBar$Tab setText(int);
-
-
-    public static int INVALID_POSITION;
-}
-
--keep class android.app.ActionBar$TabListener {
-
-    public abstract void onTabReselected(android.app.ActionBar$Tab, android.app.FragmentTransaction);
-    public abstract void onTabSelected(android.app.ActionBar$Tab, android.app.FragmentTransaction);
-    public abstract void onTabUnselected(android.app.ActionBar$Tab, android.app.FragmentTransaction);
-
-
-}
-
--keep class android.app.Activity {
-    <init>();
-
-    public void addContentView(android.view.View, android.view.ViewGroup$LayoutParams);
-    protected void attachBaseContext(android.content.Context);
-    public void autofillClientAuthenticate(int, android.content.IntentSender, android.content.Intent);
-    public void autofillClientDispatchUnhandledKey(android.view.View, android.view.KeyEvent);
-    public android.view.View autofillClientFindViewByAccessibilityIdTraversal(int, int);
-    public android.view.View autofillClientFindViewByAutofillIdTraversal(android.view.autofill.AutofillId);
-    public android.view.View[] autofillClientFindViewsByAutofillIdTraversal(android.view.autofill.AutofillId[]);
-    public android.os.IBinder autofillClientGetActivityToken();
-    public android.content.ComponentName autofillClientGetComponentName();
-    public android.view.autofill.AutofillId autofillClientGetNextAutofillId();
-    public boolean[] autofillClientGetViewVisibility(android.view.autofill.AutofillId[]);
-    public boolean autofillClientIsCompatibilityModeEnabled();
-    public boolean autofillClientIsFillUiShowing();
-    public boolean autofillClientIsVisibleForAutofill();
-    public boolean autofillClientRequestHideFillUi();
-    public boolean autofillClientRequestShowFillUi(android.view.View, int, int, android.graphics.Rect, android.view.autofill.IAutofillWindowPresenter);
-    public void autofillClientResetableStateAvailable();
-    public void autofillClientRunOnUiThread(java.lang.Runnable);
-    public boolean canStartActivityForResult();
-    public void closeContextMenu();
-    public void closeOptionsMenu();
-    public void convertFromTranslucent();
-    public boolean convertToTranslucent(android.app.Activity$TranslucentConversionListener, android.app.ActivityOptions);
-    public android.app.PendingIntent createPendingResult(int, android.content.Intent, int);
-    public void dismissDialog(int);
-    public void dismissKeyboardShortcutsHelper();
-    public void dispatchEnterAnimationComplete();
-    public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    public boolean dispatchKeyEvent(android.view.KeyEvent);
-    public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    public boolean dispatchTouchEvent(android.view.MotionEvent);
-    public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public void enterPictureInPictureMode();
-    public boolean enterPictureInPictureMode(android.app.PictureInPictureArgs);
-    public boolean enterPictureInPictureMode(android.app.PictureInPictureParams);
-    public void enterPictureInPictureModeIfPossible();
-    public void exitFreeformMode();
-    public android.view.View findViewById(int);
-    public void finish();
-    public void finishActivity(int);
-    public void finishActivityFromChild(android.app.Activity, int);
-    public void finishAffinity();
-    public void finishAfterTransition();
-    public void finishAndRemoveTask();
-    public void finishFromChild(android.app.Activity);
-    public android.app.ActionBar getActionBar();
-    public android.app.ActivityThread getActivityThread();
-    public android.os.IBinder getActivityToken();
-    public android.app.Application getApplication();
-    public android.view.autofill.AutofillManager$AutofillClient getAutofillClient();
-    public android.content.ComponentName getCallingActivity();
-    public java.lang.String getCallingPackage();
-    public int getChangingConfigurations();
-    public android.content.ComponentName getComponentName();
-    public android.transition.Scene getContentScene();
-    public android.transition.TransitionManager getContentTransitionManager();
-    public android.view.View getCurrentFocus();
-    public android.app.FragmentManager getFragmentManager();
-    public android.content.Intent getIntent();
-    public java.lang.Object getLastNonConfigurationInstance();
-    public android.view.LayoutInflater getLayoutInflater();
-    public android.app.LoaderManager getLoaderManager();
-    public java.lang.String getLocalClassName();
-    public int getMaxNumPictureInPictureActions();
-    public android.media.session.MediaController getMediaController();
-    public android.view.MenuInflater getMenuInflater();
-    public int getNextAutofillId();
-    public android.app.Activity getParent();
-    public android.content.Intent getParentActivityIntent();
-    public android.content.SharedPreferences getPreferences(int);
-    public android.net.Uri getReferrer();
-    public int getRequestedOrientation();
-    public android.view.SearchEvent getSearchEvent();
-    public java.lang.Object getSystemService(java.lang.String);
-    public int getTaskId();
-    public java.lang.CharSequence getTitle();
-    public int getTitleColor();
-    public android.app.VoiceInteractor getVoiceInteractor();
-    public int getVolumeControlStream();
-    public android.view.Window getWindow();
-    public android.view.WindowManager getWindowManager();
-    public boolean hasWindowFocus();
-    public void invalidateOptionsMenu();
-    public boolean isActivityTransitionRunning();
-    public boolean isBackgroundVisibleBehind();
-    public boolean isChangingConfigurations();
-    public boolean isChild();
-    public boolean isDestroyed();
-    public boolean isDisablingEnterExitEventForAutofill();
-    public boolean isFinishing();
-    public boolean isImmersive();
-    public boolean isInMultiWindowMode();
-    public boolean isInPictureInPictureMode();
-    public boolean isLocalVoiceInteractionSupported();
-    public boolean isOverlayWithDecorCaptionEnabled();
-    public boolean isResumed();
-    public boolean isTaskRoot();
-    public boolean isVoiceInteraction();
-    public boolean isVoiceInteractionRoot();
-    public android.database.Cursor managedQuery(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String);
-    public android.database.Cursor managedQuery(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
-    public boolean moveTaskToBack(boolean);
-    public boolean navigateUpTo(android.content.Intent);
-    public boolean navigateUpToFromChild(android.app.Activity, android.content.Intent);
-    public void onActionModeFinished(android.view.ActionMode);
-    public void onActionModeStarted(android.view.ActionMode);
-    public void onActivityReenter(int, android.content.Intent);
-    protected void onActivityResult(int, int, android.content.Intent);
-    protected void onApplyThemeResource(android.content.res.Resources$Theme, int, boolean);
-    public void onAttachFragment(android.app.Fragment);
-    public void onAttachedToWindow();
-    public void onBackPressed();
-    public void onBackgroundVisibleBehindChanged(boolean);
-    protected void onChildTitleChanged(android.app.Activity, java.lang.CharSequence);
-    public void onConfigurationChanged(android.content.res.Configuration);
-    public void onContentChanged();
-    public boolean onContextItemSelected(android.view.MenuItem);
-    public void onContextMenuClosed(android.view.Menu);
-    protected void onCreate(android.os.Bundle);
-    public void onCreate(android.os.Bundle, android.os.PersistableBundle);
-    public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu$ContextMenuInfo);
-    public java.lang.CharSequence onCreateDescription();
-    protected android.app.Dialog onCreateDialog(int);
-    protected android.app.Dialog onCreateDialog(int, android.os.Bundle);
-    public void onCreateNavigateUpTaskStack(android.app.TaskStackBuilder);
-    public boolean onCreateOptionsMenu(android.view.Menu);
-    public boolean onCreatePanelMenu(int, android.view.Menu);
-    public android.view.View onCreatePanelView(int);
-    public boolean onCreateThumbnail(android.graphics.Bitmap, android.graphics.Canvas);
-    public android.view.View onCreateView(java.lang.String, android.content.Context, android.util.AttributeSet);
-    public android.view.View onCreateView(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet);
-    protected void onDestroy();
-    public void onDetachedFromWindow();
-    public void onEnterAnimationComplete();
-    public boolean onGenericMotionEvent(android.view.MotionEvent);
-    public boolean onKeyDown(int, android.view.KeyEvent);
-    public boolean onKeyLongPress(int, android.view.KeyEvent);
-    public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    public boolean onKeyShortcut(int, android.view.KeyEvent);
-    public boolean onKeyUp(int, android.view.KeyEvent);
-    public void onLocalVoiceInteractionStarted();
-    public void onLocalVoiceInteractionStopped();
-    public void onLowMemory();
-    public boolean onMenuItemSelected(int, android.view.MenuItem);
-    public boolean onMenuOpened(int, android.view.Menu);
-    public void onMovedToDisplay(int, android.content.res.Configuration);
-    public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
-    public void onMultiWindowModeChanged(boolean);
-    public boolean onNavigateUp();
-    public boolean onNavigateUpFromChild(android.app.Activity);
-    public void onNewActivityOptions(android.app.ActivityOptions);
-    protected void onNewIntent(android.content.Intent);
-    public boolean onOptionsItemSelected(android.view.MenuItem);
-    public void onOptionsMenuClosed(android.view.Menu);
-    public void onPanelClosed(int, android.view.Menu);
-    protected void onPause();
-    public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
-    public void onPictureInPictureModeChanged(boolean);
-    protected void onPostCreate(android.os.Bundle);
-    public void onPostCreate(android.os.Bundle, android.os.PersistableBundle);
-    protected void onPostResume();
-    protected void onPrepareDialog(int, android.app.Dialog);
-    protected void onPrepareDialog(int, android.app.Dialog, android.os.Bundle);
-    public void onPrepareNavigateUpTaskStack(android.app.TaskStackBuilder);
-    public boolean onPrepareOptionsMenu(android.view.Menu);
-    public boolean onPreparePanel(int, android.view.View, android.view.Menu);
-    public void onProvideAssistContent(android.app.assist.AssistContent);
-    public void onProvideAssistData(android.os.Bundle);
-    public void onProvideKeyboardShortcuts(java.util.List, android.view.Menu, int);
-    public android.net.Uri onProvideReferrer();
-    public void onRequestPermissionsResult(int, java.lang.String[], int[]);
-    protected void onRestart();
-    protected void onRestoreInstanceState(android.os.Bundle);
-    public void onRestoreInstanceState(android.os.Bundle, android.os.PersistableBundle);
-    protected void onResume();
-    public java.lang.Object onRetainNonConfigurationInstance();
-    protected void onSaveInstanceState(android.os.Bundle);
-    public void onSaveInstanceState(android.os.Bundle, android.os.PersistableBundle);
-    public boolean onSearchRequested(android.view.SearchEvent);
-    public boolean onSearchRequested();
-    protected void onStart();
-    public void onStateNotSaved();
-    protected void onStop();
-    protected void onTitleChanged(java.lang.CharSequence, int);
-    public boolean onTouchEvent(android.view.MotionEvent);
-    public boolean onTrackballEvent(android.view.MotionEvent);
-    public void onTrimMemory(int);
-    public void onUserInteraction();
-    protected void onUserLeaveHint();
-    public void onVisibleBehindCanceled();
-    public void onWindowAttributesChanged(android.view.WindowManager$LayoutParams);
-    public void onWindowDismissed(boolean, boolean);
-    public void onWindowFocusChanged(boolean);
-    public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode$Callback);
-    public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode$Callback, int);
-    public void openContextMenu(android.view.View);
-    public void openOptionsMenu();
-    public void overridePendingTransition(int, int);
-    public void postponeEnterTransition();
-    public void recreate();
-    public void registerForContextMenu(android.view.View);
-    public void registerRemoteAnimations(android.view.RemoteAnimationDefinition);
-    public boolean releaseInstance();
-    public void removeDialog(int);
-    public void reportFullyDrawn();
-    public android.view.DragAndDropPermissions requestDragAndDropPermissions(android.view.DragEvent);
-    public void requestPermissions(java.lang.String[], int);
-    public void requestShowKeyboardShortcuts();
-    public boolean requestVisibleBehind(boolean);
-    public boolean requestWindowFeature(int);
-    public android.view.View requireViewById(int);
-    public void runOnUiThread(java.lang.Runnable);
-    public void setActionBar(android.widget.Toolbar);
-    public void setContentTransitionManager(android.transition.TransitionManager);
-    public void setContentView(int);
-    public void setContentView(android.view.View);
-    public void setContentView(android.view.View, android.view.ViewGroup$LayoutParams);
-    public void setDefaultKeyMode(int);
-    public void setDisablePreviewScreenshots(boolean);
-    public void setEnterSharedElementCallback(android.app.SharedElementCallback);
-    public void setExitSharedElementCallback(android.app.SharedElementCallback);
-    public void setFeatureDrawable(int, android.graphics.drawable.Drawable);
-    public void setFeatureDrawableAlpha(int, int);
-    public void setFeatureDrawableResource(int, int);
-    public void setFeatureDrawableUri(int, android.net.Uri);
-    public void setFinishOnTouchOutside(boolean);
-    public void setImmersive(boolean);
-    public void setIntent(android.content.Intent);
-    public void setMediaController(android.media.session.MediaController);
-    public void setOverlayWithDecorCaptionEnabled(boolean);
-    public void setPersistent(boolean);
-    public void setPictureInPictureArgs(android.app.PictureInPictureArgs);
-    public void setPictureInPictureParams(android.app.PictureInPictureParams);
-    public void setProgress(int);
-    public void setProgressBarIndeterminate(boolean);
-    public void setProgressBarIndeterminateVisibility(boolean);
-    public void setProgressBarVisibility(boolean);
-    public void setRequestedOrientation(int);
-    public void setResult(int);
-    public void setResult(int, android.content.Intent);
-    public void setSecondaryProgress(int);
-    public void setShowWhenLocked(boolean);
-    public void setTaskDescription(android.app.ActivityManager$TaskDescription);
-    public void setTheme(int);
-    public void setTitle(java.lang.CharSequence);
-    public void setTitle(int);
-    public void setTitleColor(int);
-    public void setTurnScreenOn(boolean);
-    public void setVisible(boolean);
-    public void setVolumeControlStream(int);
-    public void setVrModeEnabled(boolean, android.content.ComponentName);
-    public boolean shouldShowRequestPermissionRationale(java.lang.String);
-    public boolean shouldUpRecreateTask(android.content.Intent);
-    public boolean showAssist(android.os.Bundle);
-    public void showDialog(int);
-    public boolean showDialog(int, android.os.Bundle);
-    public void showLockTaskEscapeMessage();
-    public android.view.ActionMode startActionMode(android.view.ActionMode$Callback);
-    public android.view.ActionMode startActionMode(android.view.ActionMode$Callback, int);
-    public void startActivities(android.content.Intent[]);
-    public void startActivities(android.content.Intent[], android.os.Bundle);
-    public void startActivity(android.content.Intent);
-    public void startActivity(android.content.Intent, android.os.Bundle);
-    public void startActivityAsCaller(android.content.Intent, android.os.Bundle, boolean, int);
-    public void startActivityAsUser(android.content.Intent, android.os.UserHandle);
-    public void startActivityAsUser(android.content.Intent, android.os.Bundle, android.os.UserHandle);
-    public void startActivityAsUserFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle, android.os.UserHandle);
-    public void startActivityForResult(android.content.Intent, int);
-    public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
-    public void startActivityForResult(java.lang.String, android.content.Intent, int, android.os.Bundle);
-    public void startActivityForResultAsUser(android.content.Intent, int, android.os.UserHandle);
-    public void startActivityForResultAsUser(android.content.Intent, int, android.os.Bundle, android.os.UserHandle);
-    public void startActivityForResultAsUser(android.content.Intent, java.lang.String, int, android.os.Bundle, android.os.UserHandle);
-    public void startActivityFromChild(android.app.Activity, android.content.Intent, int);
-    public void startActivityFromChild(android.app.Activity, android.content.Intent, int, android.os.Bundle);
-    public void startActivityFromFragment(android.app.Fragment, android.content.Intent, int);
-    public void startActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle);
-    public boolean startActivityIfNeeded(android.content.Intent, int);
-    public boolean startActivityIfNeeded(android.content.Intent, int, android.os.Bundle);
-    public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int);
-    public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle);
-    public void startIntentSenderForResult(android.content.IntentSender, int, android.content.Intent, int, int, int);
-    public void startIntentSenderForResult(android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle);
-    public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int);
-    public void startIntentSenderFromChild(android.app.Activity, android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle);
-    public void startIntentSenderFromChildFragment(android.app.Fragment, android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle);
-    public void startLocalVoiceInteraction(android.os.Bundle);
-    public void startLockTask();
-    public void startManagingCursor(android.database.Cursor);
-    public boolean startNextMatchingActivity(android.content.Intent);
-    public boolean startNextMatchingActivity(android.content.Intent, android.os.Bundle);
-    public void startPostponedEnterTransition();
-    public void startSearch(java.lang.String, boolean, android.os.Bundle, boolean);
-    public void stopLocalVoiceInteraction();
-    public void stopLockTask();
-    public void stopManagingCursor(android.database.Cursor);
-    public void takeKeyEvents(boolean);
-    public void triggerSearch(java.lang.String, android.os.Bundle);
-    public void unregisterForContextMenu(android.view.View);
-
-
-    public static int DEFAULT_KEYS_DIALER;
-    public static int DEFAULT_KEYS_DISABLE;
-    public static int DEFAULT_KEYS_SEARCH_GLOBAL;
-    public static int DEFAULT_KEYS_SEARCH_LOCAL;
-    public static int DEFAULT_KEYS_SHORTCUT;
-    public static int DONT_FINISH_TASK_WITH_ACTIVITY;
-    public static int FINISH_TASK_WITH_ACTIVITY;
-    public static int FINISH_TASK_WITH_ROOT_ACTIVITY;
-    protected static int[] FOCUSED_STATE_SET;
-    public static int RESULT_CANCELED;
-    public static int RESULT_FIRST_USER;
-    public static int RESULT_OK;
-}
-
--keep class android.app.Activity$NonConfigurationInstances {
-
-
-
-}
-
--keep class android.app.Activity$TranslucentConversionListener {
-
-    public abstract void onTranslucentConversionComplete(boolean);
-
-
-}
-
--keep class android.app.ActivityManager {
-
-    public int addAppTask(android.app.Activity, android.content.Intent, android.app.ActivityManager$TaskDescription, android.graphics.Bitmap);
-    public void addOnUidImportanceListener(android.app.ActivityManager$OnUidImportanceListener, int);
-    public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
-    public static void broadcastStickyIntent(android.content.Intent, int);
-    public static void broadcastStickyIntent(android.content.Intent, int, int);
-    public static int checkComponentPermission(java.lang.String, int, int, boolean);
-    public static int checkUidPermission(java.lang.String, int);
-    public boolean clearApplicationUserData(java.lang.String, android.content.pm.IPackageDataObserver);
-    public boolean clearApplicationUserData();
-    public void clearGrantedUriPermissions(java.lang.String);
-    public void clearWatchHeapLimit();
-    public void dumpPackageState(java.io.FileDescriptor, java.lang.String);
-    public static void dumpPackageStateStatic(java.io.FileDescriptor, java.lang.String);
-    public void forceStopPackage(java.lang.String);
-    public void forceStopPackageAsUser(java.lang.String, int);
-    public android.util.Size getAppTaskThumbnailSize();
-    public java.util.List getAppTasks();
-    public static int getCurrentUser();
-    public static int getDefaultAppRecentsLimitStatic();
-    public android.content.pm.ConfigurationInfo getDeviceConfigurationInfo();
-    public int getFrontActivityScreenCompatMode();
-    public android.content.pm.ParceledListSlice getGrantedUriPermissions(java.lang.String);
-    public int getLargeMemoryClass();
-    public int getLauncherLargeIconDensity();
-    public int getLauncherLargeIconSize();
-    public int getLockTaskModeState();
-    public static int getMaxAppRecentsLimitStatic();
-    public static int getMaxNumPictureInPictureActions();
-    public static int getMaxRecentTasksStatic();
-    public int getMemoryClass();
-    public void getMemoryInfo(android.app.ActivityManager$MemoryInfo);
-    public static void getMyMemoryState(android.app.ActivityManager$RunningAppProcessInfo);
-    public boolean getPackageAskScreenCompat(java.lang.String);
-    public int getPackageImportance(java.lang.String);
-    public int getPackageScreenCompatMode(java.lang.String);
-    public android.os.Debug$MemoryInfo[] getProcessMemoryInfo(int[]);
-    public java.util.List getProcessesInErrorState();
-    public java.util.List getRecentTasks(int, int);
-    public java.util.List getRunningAppProcesses();
-    public java.util.List getRunningExternalApplications();
-    public android.app.PendingIntent getRunningServiceControlPanel(android.content.ComponentName);
-    public java.util.List getRunningServices(int);
-    public java.util.List getRunningTasks(int);
-    public static android.app.IActivityManager getService();
-    public long getTotalRam();
-    public int getUidImportance(int);
-    public static int handleIncomingUser(int, int, int, boolean, boolean, java.lang.String, java.lang.String);
-    public boolean isBackgroundRestricted();
-    public static boolean isHighEndGfx();
-    public boolean isInLockTaskMode();
-    public boolean isLowRamDevice();
-    public static boolean isLowRamDeviceStatic();
-    public static boolean isProcStateBackground(int);
-    public static boolean isRunningInTestHarness();
-    public static boolean isSmallBatteryDevice();
-    public static boolean isStartResultFatalError(int);
-    public static boolean isStartResultSuccessful(int);
-    public static boolean isSystemReady();
-    public static boolean isUserAMonkey();
-    public boolean isUserRunning(int);
-    public boolean isVrModePackageEnabled(android.content.ComponentName);
-    public void killBackgroundProcesses(java.lang.String);
-    public void killUid(int, java.lang.String);
-    public static void logoutCurrentUser();
-    public void moveTaskToFront(int, int);
-    public void moveTaskToFront(int, int, android.os.Bundle);
-    public static void noteAlarmFinish(android.app.PendingIntent, android.os.WorkSource, int, java.lang.String);
-    public static void noteAlarmStart(android.app.PendingIntent, android.os.WorkSource, int, java.lang.String);
-    public static void noteWakeupAlarm(android.app.PendingIntent, android.os.WorkSource, int, java.lang.String, java.lang.String);
-    public static int processStateAmToProto(int);
-    public void removeOnUidImportanceListener(android.app.ActivityManager$OnUidImportanceListener);
-    public void removeStacksInWindowingModes(int[]);
-    public void removeStacksWithActivityTypes(int[]);
-    public void resizeStack(int, android.graphics.Rect);
-    public void restartPackage(java.lang.String);
-    public void setFrontActivityScreenCompatMode(int);
-    public void setPackageAskScreenCompat(java.lang.String, boolean);
-    public void setPackageScreenCompatMode(java.lang.String, int);
-    public static void setPersistentVrThread(int);
-    public boolean setProcessMemoryTrimLevel(java.lang.String, int, int);
-    public void setTaskWindowingMode(int, int, boolean);
-    public void setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean);
-    public static void setVrThread(int);
-    public void setWatchHeapLimit(long);
-    public static int staticGetLargeMemoryClass();
-    public static int staticGetMemoryClass();
-    public static boolean supportsMultiWindow(android.content.Context);
-    public static boolean supportsSplitScreenMultiWindow(android.content.Context);
-    public boolean switchUser(int);
-
-
-    public static java.lang.String ACTION_REPORT_HEAP_LIMIT;
-    public static int APP_START_MODE_DELAYED;
-    public static int APP_START_MODE_DELAYED_RIGID;
-    public static int APP_START_MODE_DISABLED;
-    public static int APP_START_MODE_NORMAL;
-    public static int ASSIST_CONTEXT_AUTOFILL;
-    public static int ASSIST_CONTEXT_BASIC;
-    public static int ASSIST_CONTEXT_FULL;
-    public static int BROADCAST_FAILED_USER_STOPPED;
-    public static int BROADCAST_STICKY_CANT_HAVE_PERMISSION;
-    public static int BROADCAST_SUCCESS;
-    public static int BUGREPORT_OPTION_FULL;
-    public static int BUGREPORT_OPTION_INTERACTIVE;
-    public static int BUGREPORT_OPTION_REMOTE;
-    public static int BUGREPORT_OPTION_TELEPHONY;
-    public static int BUGREPORT_OPTION_WEAR;
-    public static int BUGREPORT_OPTION_WIFI;
-    public static int COMPAT_MODE_ALWAYS;
-    public static int COMPAT_MODE_DISABLED;
-    public static int COMPAT_MODE_ENABLED;
-    public static int COMPAT_MODE_NEVER;
-    public static int COMPAT_MODE_TOGGLE;
-    public static int COMPAT_MODE_UNKNOWN;
-    public static int FLAG_AND_LOCKED;
-    public static int FLAG_AND_UNLOCKED;
-    public static int FLAG_AND_UNLOCKING_OR_UNLOCKED;
-    public static int FLAG_OR_STOPPED;
-    public static int INTENT_SENDER_ACTIVITY;
-    public static int INTENT_SENDER_ACTIVITY_RESULT;
-    public static int INTENT_SENDER_BROADCAST;
-    public static int INTENT_SENDER_FOREGROUND_SERVICE;
-    public static int INTENT_SENDER_SERVICE;
-    public static int LOCK_TASK_MODE_LOCKED;
-    public static int LOCK_TASK_MODE_NONE;
-    public static int LOCK_TASK_MODE_PINNED;
-    public static int MAX_PROCESS_STATE;
-    public static java.lang.String META_HOME_ALTERNATE;
-    public static int MIN_PROCESS_STATE;
-    public static int MOVE_TASK_NO_USER_ACTION;
-    public static int MOVE_TASK_WITH_HOME;
-    public static int PROCESS_STATE_BACKUP;
-    public static int PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
-    public static int PROCESS_STATE_CACHED_ACTIVITY;
-    public static int PROCESS_STATE_CACHED_ACTIVITY_CLIENT;
-    public static int PROCESS_STATE_CACHED_EMPTY;
-    public static int PROCESS_STATE_CACHED_RECENT;
-    public static int PROCESS_STATE_FOREGROUND_SERVICE;
-    public static int PROCESS_STATE_HEAVY_WEIGHT;
-    public static int PROCESS_STATE_HOME;
-    public static int PROCESS_STATE_IMPORTANT_BACKGROUND;
-    public static int PROCESS_STATE_IMPORTANT_FOREGROUND;
-    public static int PROCESS_STATE_LAST_ACTIVITY;
-    public static int PROCESS_STATE_NONEXISTENT;
-    public static int PROCESS_STATE_PERSISTENT;
-    public static int PROCESS_STATE_PERSISTENT_UI;
-    public static int PROCESS_STATE_RECEIVER;
-    public static int PROCESS_STATE_SERVICE;
-    public static int PROCESS_STATE_TOP;
-    public static int PROCESS_STATE_TOP_SLEEPING;
-    public static int PROCESS_STATE_TRANSIENT_BACKGROUND;
-    public static int PROCESS_STATE_UNKNOWN;
-    public static int RECENT_IGNORE_UNAVAILABLE;
-    public static int RECENT_WITH_EXCLUDED;
-    public static int RESIZE_MODE_FORCED;
-    public static int RESIZE_MODE_PRESERVE_WINDOW;
-    public static int RESIZE_MODE_SYSTEM;
-    public static int RESIZE_MODE_SYSTEM_SCREEN_ROTATION;
-    public static int RESIZE_MODE_USER;
-    public static int RESIZE_MODE_USER_FORCED;
-    public static int SPLIT_SCREEN_CREATE_MODE_BOTTOM_OR_RIGHT;
-    public static int SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT;
-    public static int START_ABORTED;
-    public static int START_ASSISTANT_HIDDEN_SESSION;
-    public static int START_ASSISTANT_NOT_ACTIVE_SESSION;
-    public static int START_CANCELED;
-    public static int START_CLASS_NOT_FOUND;
-    public static int START_DELIVERED_TO_TOP;
-    public static int START_FLAG_DEBUG;
-    public static int START_FLAG_NATIVE_DEBUGGING;
-    public static int START_FLAG_ONLY_IF_NEEDED;
-    public static int START_FLAG_TRACK_ALLOCATION;
-    public static int START_FORWARD_AND_REQUEST_CONFLICT;
-    public static int START_INTENT_NOT_RESOLVED;
-    public static int START_NOT_ACTIVITY;
-    public static int START_NOT_CURRENT_USER_ACTIVITY;
-    public static int START_NOT_VOICE_COMPATIBLE;
-    public static int START_PERMISSION_DENIED;
-    public static int START_RETURN_INTENT_TO_CALLER;
-    public static int START_RETURN_LOCK_TASK_MODE_VIOLATION;
-    public static int START_SUCCESS;
-    public static int START_SWITCHES_CANCELED;
-    public static int START_TASK_TO_FRONT;
-    public static int START_VOICE_HIDDEN_SESSION;
-    public static int START_VOICE_NOT_ACTIVE_SESSION;
-    public static int UID_OBSERVER_ACTIVE;
-    public static int UID_OBSERVER_CACHED;
-    public static int UID_OBSERVER_GONE;
-    public static int UID_OBSERVER_IDLE;
-    public static int UID_OBSERVER_PROCSTATE;
-    public static int USER_OP_ERROR_IS_SYSTEM;
-    public static int USER_OP_ERROR_RELATED_USERS_CANNOT_STOP;
-    public static int USER_OP_IS_CURRENT;
-    public static int USER_OP_SUCCESS;
-    public static int USER_OP_UNKNOWN_USER;
-}
-
--keep class android.app.ActivityManager$AppTask {
-    <init>(android.app.IAppTask);
-
-    public void finishAndRemoveTask();
-    public android.app.ActivityManager$RecentTaskInfo getTaskInfo();
-    public void moveToFront();
-    public void setExcludeFromRecents(boolean);
-    public void startActivity(android.content.Context, android.content.Intent, android.os.Bundle);
-
-
-}
-
--keep class android.app.ActivityManager$MemoryInfo {
-    <init>();
-
-    public int describeContents();
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public long availMem;
-    public long foregroundAppThreshold;
-    public long hiddenAppThreshold;
-    public boolean lowMemory;
-    public long secondaryServerThreshold;
-    public long threshold;
-    public long totalMem;
-    public long visibleAppThreshold;
-}
-
--keep class android.app.ActivityManager$OnUidImportanceListener {
-
-    public abstract void onUidImportance(int, int);
-
-
-}
-
--keep class android.app.ActivityManager$ProcessErrorStateInfo {
-    <init>();
-
-    public int describeContents();
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int CRASHED;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int NOT_RESPONDING;
-    public static int NO_ERROR;
-    public int condition;
-    public byte[] crashData;
-    public java.lang.String longMsg;
-    public int pid;
-    public java.lang.String processName;
-    public java.lang.String shortMsg;
-    public java.lang.String stackTrace;
-    public java.lang.String tag;
-    public int uid;
-}
-
--keep class android.app.ActivityManager$RecentTaskInfo {
-    <init>();
-
-    public int describeContents();
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public int affiliatedTaskColor;
-    public int affiliatedTaskId;
-    public android.content.ComponentName baseActivity;
-    public android.content.Intent baseIntent;
-    public android.graphics.Rect bounds;
-    public android.content.res.Configuration configuration;
-    public java.lang.CharSequence description;
-    public long firstActiveTime;
-    public int id;
-    public long lastActiveTime;
-    public int numActivities;
-    public android.content.ComponentName origActivity;
-    public int persistentId;
-    public android.content.ComponentName realActivity;
-    public int resizeMode;
-    public int stackId;
-    public boolean supportsSplitScreenMultiWindow;
-    public android.app.ActivityManager$TaskDescription taskDescription;
-    public android.content.ComponentName topActivity;
-    public int userId;
-}
-
--keep class android.app.ActivityManager$RunningAppProcessInfo {
-    <init>();
-    <init>(java.lang.String, int, java.lang.String[]);
-
-    public int describeContents();
-    public static int importanceToProcState(int);
-    public static int procStateToImportance(int);
-    public static int procStateToImportanceForClient(int, android.content.Context);
-    public static int procStateToImportanceForTargetSdk(int, int);
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_CANT_SAVE_STATE;
-    public static int FLAG_HAS_ACTIVITIES;
-    public static int FLAG_PERSISTENT;
-    public static int IMPORTANCE_BACKGROUND;
-    public static int IMPORTANCE_CACHED;
-    public static int IMPORTANCE_CANT_SAVE_STATE;
-    public static int IMPORTANCE_CANT_SAVE_STATE_PRE_26;
-    public static int IMPORTANCE_EMPTY;
-    public static int IMPORTANCE_FOREGROUND;
-    public static int IMPORTANCE_FOREGROUND_SERVICE;
-    public static int IMPORTANCE_GONE;
-    public static int IMPORTANCE_PERCEPTIBLE;
-    public static int IMPORTANCE_PERCEPTIBLE_PRE_26;
-    public static int IMPORTANCE_SERVICE;
-    public static int IMPORTANCE_TOP_SLEEPING;
-    public static int IMPORTANCE_TOP_SLEEPING_PRE_28;
-    public static int IMPORTANCE_VISIBLE;
-    public static int REASON_PROVIDER_IN_USE;
-    public static int REASON_SERVICE_IN_USE;
-    public static int REASON_UNKNOWN;
-    public int flags;
-    public int importance;
-    public int importanceReasonCode;
-    public android.content.ComponentName importanceReasonComponent;
-    public int importanceReasonImportance;
-    public int importanceReasonPid;
-    public int lastTrimLevel;
-    public int lru;
-    public int pid;
-    public java.lang.String[] pkgList;
-    public java.lang.String processName;
-    public int processState;
-    public int uid;
-}
-
--keep class android.app.ActivityManager$RunningServiceInfo {
-    <init>();
-
-    public int describeContents();
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_FOREGROUND;
-    public static int FLAG_PERSISTENT_PROCESS;
-    public static int FLAG_STARTED;
-    public static int FLAG_SYSTEM_PROCESS;
-    public long activeSince;
-    public int clientCount;
-    public int clientLabel;
-    public java.lang.String clientPackage;
-    public int crashCount;
-    public int flags;
-    public boolean foreground;
-    public long lastActivityTime;
-    public int pid;
-    public java.lang.String process;
-    public long restarting;
-    public android.content.ComponentName service;
-    public boolean started;
-    public int uid;
-}
-
--keep class android.app.ActivityManager$RunningTaskInfo {
-    <init>();
-
-    public int describeContents();
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.ComponentName baseActivity;
-    public android.content.res.Configuration configuration;
-    public java.lang.CharSequence description;
-    public int id;
-    public long lastActiveTime;
-    public int numActivities;
-    public int numRunning;
-    public int resizeMode;
-    public int stackId;
-    public boolean supportsSplitScreenMultiWindow;
-    public android.graphics.Bitmap thumbnail;
-    public android.content.ComponentName topActivity;
-}
-
--keep class android.app.ActivityManager$StackInfo {
-    <init>();
-
-    public int describeContents();
-    public void readFromParcel(android.os.Parcel);
-    public java.lang.String toString(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.graphics.Rect bounds;
-    public android.content.res.Configuration configuration;
-    public int displayId;
-    public int position;
-    public int stackId;
-    public android.graphics.Rect[] taskBounds;
-    public int[] taskIds;
-    public java.lang.String[] taskNames;
-    public int[] taskUserIds;
-    public android.content.ComponentName topActivity;
-    public int userId;
-    public boolean visible;
-}
-
--keep class android.app.ActivityManager$TaskDescription {
-    <init>(java.lang.String, android.graphics.Bitmap, int);
-    <init>(java.lang.String, int, int);
-    <init>(java.lang.String, android.graphics.Bitmap);
-    <init>(java.lang.String, int);
-    <init>(java.lang.String);
-    <init>();
-    <init>(java.lang.String, android.graphics.Bitmap, int, java.lang.String, int, int, int, int);
-    <init>(android.app.ActivityManager$TaskDescription);
-
-    public void copyFrom(android.app.ActivityManager$TaskDescription);
-    public void copyFromPreserveHiddenFields(android.app.ActivityManager$TaskDescription);
-    public int describeContents();
-    public int getBackgroundColor();
-    public android.graphics.Bitmap getIcon();
-    public java.lang.String getIconFilename();
-    public int getIconResource();
-    public android.graphics.Bitmap getInMemoryIcon();
-    public java.lang.String getLabel();
-    public int getNavigationBarColor();
-    public int getPrimaryColor();
-    public int getStatusBarColor();
-    public static android.graphics.Bitmap loadTaskDescriptionIcon(java.lang.String, int);
-    public void readFromParcel(android.os.Parcel);
-    public void restoreFromXml(java.lang.String, java.lang.String);
-    public void saveToXml(org.xmlpull.v1.XmlSerializer);
-    public void setBackgroundColor(int);
-    public void setIcon(android.graphics.Bitmap);
-    public void setIcon(int);
-    public void setIconFilename(java.lang.String);
-    public void setLabel(java.lang.String);
-    public void setNavigationBarColor(int);
-    public void setPrimaryColor(int);
-    public void setStatusBarColor(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static java.lang.String ATTR_TASKDESCRIPTION_PREFIX;
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.ActivityManager$TaskSnapshot {
-    <init>(android.graphics.GraphicBuffer, int, android.graphics.Rect, boolean, float, boolean, int, int, boolean);
-
-    public int describeContents();
-    public android.graphics.Rect getContentInsets();
-    public int getOrientation();
-    public float getScale();
-    public android.graphics.GraphicBuffer getSnapshot();
-    public int getSystemUiVisibility();
-    public int getWindowingMode();
-    public boolean isRealSnapshot();
-    public boolean isReducedResolution();
-    public boolean isTranslucent();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.ActivityOptions {
-    <init>(android.os.Bundle);
-
-    public void abort();
-    public static void abort(android.app.ActivityOptions);
-    public boolean canTaskOverlayResume();
-    public boolean disallowEnterPictureInPictureWhileLaunching();
-    public android.app.ActivityOptions forTargetActivity();
-    public static android.app.ActivityOptions fromBundle(android.os.Bundle);
-    public android.view.AppTransitionAnimationSpec[] getAnimSpecs();
-    public android.os.IRemoteCallback getAnimationFinishedListener();
-    public int getAnimationType();
-    public boolean getAvoidMoveToFront();
-    public int getCustomEnterResId();
-    public int getCustomExitResId();
-    public int getCustomInPlaceResId();
-    public int getExitCoordinatorKey();
-    public int getHeight();
-    public int getLaunchActivityType();
-    public android.graphics.Rect getLaunchBounds();
-    public int getLaunchDisplayId();
-    public boolean getLaunchTaskBehind();
-    public int getLaunchTaskId();
-    public int getLaunchWindowingMode();
-    public boolean getLockTaskMode();
-    public android.os.IRemoteCallback getOnAnimationStartListener();
-    public java.lang.String getPackageName();
-    public android.view.RemoteAnimationAdapter getRemoteAnimationAdapter();
-    public int getResultCode();
-    public android.content.Intent getResultData();
-    public android.os.ResultReceiver getResultReceiver();
-    public int getRotationAnimationHint();
-    public java.util.ArrayList getSharedElementNames();
-    public android.view.IAppTransitionAnimationSpecsFuture getSpecsFuture();
-    public int getSplitScreenCreateMode();
-    public int getStartX();
-    public int getStartY();
-    public boolean getTaskOverlay();
-    public android.graphics.GraphicBuffer getThumbnail();
-    public android.app.PendingIntent getUsageTimeReport();
-    public int getWidth();
-    public boolean isReturning();
-    public static android.app.ActivityOptions makeBasic();
-    public static android.app.ActivityOptions makeClipRevealAnimation(android.view.View, int, int, int, int);
-    public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int);
-    public static android.app.ActivityOptions makeCustomAnimation(android.content.Context, int, int, android.os.Handler, android.app.ActivityOptions$OnAnimationStartedListener);
-    public static android.app.ActivityOptions makeCustomInPlaceAnimation(android.content.Context, int);
-    public static android.app.ActivityOptions makeMultiThumbFutureAspectScaleAnimation(android.content.Context, android.os.Handler, android.view.IAppTransitionAnimationSpecsFuture, android.app.ActivityOptions$OnAnimationStartedListener, boolean);
-    public static android.app.ActivityOptions makeOpenCrossProfileAppsAnimation();
-    public static android.app.ActivityOptions makeRemoteAnimation(android.view.RemoteAnimationAdapter);
-    public static android.app.ActivityOptions makeScaleUpAnimation(android.view.View, int, int, int, int);
-    public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.view.View, java.lang.String);
-    public static android.app.ActivityOptions makeSceneTransitionAnimation(android.app.Activity, android.util.Pair[]);
-    public static android.app.ActivityOptions makeTaskLaunchBehind();
-    public static android.app.ActivityOptions makeThumbnailAspectScaleDownAnimation(android.view.View, android.graphics.Bitmap, int, int, int, int, android.os.Handler, android.app.ActivityOptions$OnAnimationStartedListener);
-    public static android.app.ActivityOptions makeThumbnailAspectScaleDownAnimation(android.view.View, android.view.AppTransitionAnimationSpec[], android.os.Handler, android.app.ActivityOptions$OnAnimationStartedListener, android.app.ActivityOptions$OnAnimationFinishedListener);
-    public static android.app.ActivityOptions makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
-    public android.os.Bundle popAppVerificationBundle();
-    public void requestUsageTimeReport(android.app.PendingIntent);
-    public android.app.ActivityOptions setAppVerificationBundle(android.os.Bundle);
-    public void setAvoidMoveToFront();
-    public void setDisallowEnterPictureInPictureWhileLaunching(boolean);
-    public void setLaunchActivityType(int);
-    public android.app.ActivityOptions setLaunchBounds(android.graphics.Rect);
-    public android.app.ActivityOptions setLaunchDisplayId(int);
-    public void setLaunchTaskId(int);
-    public void setLaunchWindowingMode(int);
-    public android.app.ActivityOptions setLockTaskEnabled(boolean);
-    public void setRemoteAnimationAdapter(android.view.RemoteAnimationAdapter);
-    public void setRotationAnimationHint(int);
-    public void setSplitScreenCreateMode(int);
-    public void setTaskOverlay(boolean, boolean);
-    public static android.app.ActivityOptions startSharedElementAnimation(android.view.Window, android.util.Pair[]);
-    public static void stopSharedElementAnimation(android.view.Window);
-    public android.os.Bundle toBundle();
-    public java.lang.String toString();
-    public void update(android.app.ActivityOptions);
-
-
-    public static int ANIM_CLIP_REVEAL;
-    public static int ANIM_CUSTOM;
-    public static int ANIM_CUSTOM_IN_PLACE;
-    public static int ANIM_DEFAULT;
-    public static int ANIM_LAUNCH_TASK_BEHIND;
-    public static int ANIM_NONE;
-    public static int ANIM_OPEN_CROSS_PROFILE_APPS;
-    public static int ANIM_REMOTE_ANIMATION;
-    public static int ANIM_SCALE_UP;
-    public static int ANIM_SCENE_TRANSITION;
-    public static int ANIM_THUMBNAIL_ASPECT_SCALE_DOWN;
-    public static int ANIM_THUMBNAIL_ASPECT_SCALE_UP;
-    public static int ANIM_THUMBNAIL_SCALE_DOWN;
-    public static int ANIM_THUMBNAIL_SCALE_UP;
-    public static java.lang.String EXTRA_USAGE_TIME_REPORT;
-    public static java.lang.String EXTRA_USAGE_TIME_REPORT_PACKAGES;
-    public static java.lang.String KEY_ANIM_ENTER_RES_ID;
-    public static java.lang.String KEY_ANIM_EXIT_RES_ID;
-    public static java.lang.String KEY_ANIM_HEIGHT;
-    public static java.lang.String KEY_ANIM_IN_PLACE_RES_ID;
-    public static java.lang.String KEY_ANIM_START_LISTENER;
-    public static java.lang.String KEY_ANIM_START_X;
-    public static java.lang.String KEY_ANIM_START_Y;
-    public static java.lang.String KEY_ANIM_THUMBNAIL;
-    public static java.lang.String KEY_ANIM_TYPE;
-    public static java.lang.String KEY_ANIM_WIDTH;
-    public static java.lang.String KEY_LAUNCH_BOUNDS;
-    public static java.lang.String KEY_PACKAGE_NAME;
-}
-
--keep class android.app.ActivityOptions$OnAnimationFinishedListener {
-
-    public abstract void onAnimationFinished();
-
-
-}
-
--keep class android.app.ActivityOptions$OnAnimationStartedListener {
-
-    public abstract void onAnimationStarted();
-
-
-}
-
--keep class android.app.ActivityThread {
-
-    public android.content.IContentProvider acquireExistingProvider(android.content.Context, java.lang.String, int, boolean);
-    public android.content.IContentProvider acquireProvider(android.content.Context, java.lang.String, int, boolean);
-    public void applyConfigurationToResources(android.content.res.Configuration);
-    public static android.app.ActivityThread currentActivityThread();
-    public static android.app.Application currentApplication();
-    public static java.lang.String currentOpPackageName();
-    public static java.lang.String currentPackageName();
-    public static java.lang.String currentProcessName();
-    public static void dumpMemInfoTable(java.io.PrintWriter, android.os.Debug$MemoryInfo, boolean, boolean, boolean, boolean, int, java.lang.String, long, long, long, long, long, long);
-    public static void dumpMemInfoTable(android.util.proto.ProtoOutputStream, android.os.Debug$MemoryInfo, boolean, boolean, long, long, long, long, long, long);
-    public android.app.Activity getActivity(android.os.IBinder);
-    public android.app.ActivityThread$ActivityClientRecord getActivityClient(android.os.IBinder);
-    public android.app.Application getApplication();
-    public android.app.ActivityThread$ApplicationThread getApplicationThread();
-    public java.util.concurrent.Executor getExecutor();
-    public android.app.Instrumentation getInstrumentation();
-    public int getIntCoreSetting(java.lang.String, int);
-    public static android.content.Intent getIntentBeingBroadcast();
-    public android.os.Looper getLooper();
-    public android.app.LoadedApk getPackageInfo(java.lang.String, android.content.res.CompatibilityInfo, int);
-    public android.app.LoadedApk getPackageInfo(java.lang.String, android.content.res.CompatibilityInfo, int, int);
-    public android.app.LoadedApk getPackageInfo(android.content.pm.ApplicationInfo, android.content.res.CompatibilityInfo, int);
-    public android.app.LoadedApk getPackageInfoNoCheck(android.content.pm.ApplicationInfo, android.content.res.CompatibilityInfo);
-    public static android.content.pm.IPackageManager getPackageManager();
-    public java.lang.String getProcessName();
-    public java.lang.String getProfileFilePath();
-    public android.app.ContextImpl getSystemContext();
-    public android.app.ContextImpl getSystemUiContext();
-    public void handleActivityConfigurationChanged(android.os.IBinder, android.content.res.Configuration, int);
-    public void handleConfigurationChanged(android.content.res.Configuration);
-    public void handleDestroyActivity(android.os.IBinder, boolean, int, boolean, java.lang.String);
-    public void handleInstallProvider(android.content.pm.ProviderInfo);
-    public android.app.Activity handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, android.content.Intent);
-    public void handleMultiWindowModeChanged(android.os.IBinder, boolean, android.content.res.Configuration);
-    public void handleNewIntent(android.os.IBinder, java.util.List, boolean);
-    public void handlePauseActivity(android.os.IBinder, boolean, boolean, int, android.app.servertransaction.PendingTransactionActions, java.lang.String);
-    public void handlePictureInPictureModeChanged(android.os.IBinder, boolean, android.content.res.Configuration);
-    public void handleRelaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions);
-    public void handleRequestAssistContextExtras(android.app.ActivityThread$RequestAssistContextExtras);
-    public void handleResumeActivity(android.os.IBinder, boolean, boolean, java.lang.String);
-    public void handleSendResult(android.os.IBinder, java.util.List, java.lang.String);
-    public void handleStartActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions);
-    public void handleStopActivity(android.os.IBinder, boolean, int, android.app.servertransaction.PendingTransactionActions, boolean, java.lang.String);
-    public void handleTranslucentConversionComplete(android.os.IBinder, boolean);
-    public void handleWindowVisibility(android.os.IBinder, boolean);
-    public void installSystemApplicationInfo(android.content.pm.ApplicationInfo, java.lang.ClassLoader);
-    public void installSystemProviders(java.util.List);
-    public boolean isProfiling();
-    public static boolean isSystem();
-    public static void main(java.lang.String[]);
-    public void onNewActivityOptions(android.os.IBinder, android.app.ActivityOptions);
-    public android.app.LoadedApk peekPackageInfo(java.lang.String, boolean);
-    public void performRestartActivity(android.os.IBinder, boolean);
-    public android.app.ActivityThread$ActivityClientRecord performResumeActivity(android.os.IBinder, boolean, java.lang.String);
-    public android.app.ActivityThread$ActivityClientRecord prepareRelaunchActivity(android.os.IBinder, java.util.List, java.util.List, int, android.util.MergedConfiguration, boolean);
-    public void registerOnActivityPausedListener(android.app.Activity, android.app.OnActivityPausedListener);
-    public boolean releaseProvider(android.content.IContentProvider, boolean);
-    public void reportRelaunch(android.os.IBinder, android.app.servertransaction.PendingTransactionActions);
-    public void reportStop(android.app.servertransaction.PendingTransactionActions);
-    public android.content.pm.ActivityInfo resolveActivityInfo(android.content.Intent);
-    public void sendActivityResult(android.os.IBinder, java.lang.String, int, int, android.content.Intent);
-    public android.app.Activity startActivityNow(android.app.Activity, java.lang.String, android.content.Intent, android.content.pm.ActivityInfo, android.os.IBinder, android.os.Bundle, android.app.Activity$NonConfigurationInstances);
-    public void stopProfiling();
-    public static android.app.ActivityThread systemMain();
-    public void unregisterOnActivityPausedListener(android.app.Activity, android.app.OnActivityPausedListener);
-    public void updatePendingConfiguration(android.content.res.Configuration);
-    public void updateProcessState(int, boolean);
-
-
-    public static boolean DEBUG_BROADCAST;
-    public static boolean DEBUG_CONFIGURATION;
-    public static boolean DEBUG_MEMORY_TRIM;
-    public static boolean DEBUG_ORDER;
-    public static long INVALID_PROC_STATE_SEQ;
-    public static java.lang.String PROC_START_SEQ_IDENT;
-    public static int SERVICE_DONE_EXECUTING_ANON;
-    public static int SERVICE_DONE_EXECUTING_START;
-    public static int SERVICE_DONE_EXECUTING_STOP;
-    public static java.lang.String TAG;
-}
-
--keep class android.app.ActivityThread$ActivityClientRecord {
-    <init>();
-    <init>(android.os.IBinder, android.content.Intent, int, android.content.pm.ActivityInfo, android.content.res.Configuration, android.content.res.CompatibilityInfo, java.lang.String, com.android.internal.app.IVoiceInteractor, android.os.Bundle, android.os.PersistableBundle, java.util.List, java.util.List, boolean, android.app.ProfilerInfo, android.app.ClientTransactionHandler);
-
-    public int getLifecycleState();
-    public java.lang.String getStateString();
-    public boolean isPersistable();
-    public boolean isVisibleFromServer();
-    public void setState(int);
-    public java.lang.String toString();
-
-
-    public boolean isForward;
-    public android.app.LoadedApk packageInfo;
-    public android.os.IBinder token;
-}
-
--keep class android.app.ActivityThread$ApplicationThread {
-
-    public void attachAgent(java.lang.String);
-    public void bindApplication(java.lang.String, android.content.pm.ApplicationInfo, java.util.List, android.content.ComponentName, android.app.ProfilerInfo, android.os.Bundle, android.app.IInstrumentationWatcher, android.app.IUiAutomationConnection, int, boolean, boolean, boolean, boolean, android.content.res.Configuration, android.content.res.CompatibilityInfo, java.util.Map, android.os.Bundle, java.lang.String, boolean);
-    public void clearDnsCache();
-    public void dispatchPackageBroadcast(int, java.lang.String[]);
-    public void dumpActivity(android.os.ParcelFileDescriptor, android.os.IBinder, java.lang.String, java.lang.String[]);
-    public void dumpDbInfo(android.os.ParcelFileDescriptor, java.lang.String[]);
-    public void dumpGfxInfo(android.os.ParcelFileDescriptor, java.lang.String[]);
-    public void dumpHeap(boolean, boolean, boolean, java.lang.String, android.os.ParcelFileDescriptor);
-    public void dumpMemInfo(android.os.ParcelFileDescriptor, android.os.Debug$MemoryInfo, boolean, boolean, boolean, boolean, boolean, java.lang.String[]);
-    public void dumpMemInfoProto(android.os.ParcelFileDescriptor, android.os.Debug$MemoryInfo, boolean, boolean, boolean, boolean, java.lang.String[]);
-    public void dumpProvider(android.os.ParcelFileDescriptor, android.os.IBinder, java.lang.String[]);
-    public void dumpService(android.os.ParcelFileDescriptor, android.os.IBinder, java.lang.String[]);
-    public void handleTrustStorageUpdate();
-    public void notifyCleartextNetwork(byte[]);
-    public void processInBackground();
-    public void profilerControl(boolean, android.app.ProfilerInfo, int);
-    public void requestAssistContextExtras(android.os.IBinder, android.os.IBinder, int, int, int);
-    public void runIsolatedEntryPoint(java.lang.String, java.lang.String[]);
-    public void scheduleApplicationInfoChanged(android.content.pm.ApplicationInfo);
-    public void scheduleBindService(android.os.IBinder, android.content.Intent, boolean, int);
-    public void scheduleCrash(java.lang.String);
-    public void scheduleCreateBackupAgent(android.content.pm.ApplicationInfo, android.content.res.CompatibilityInfo, int);
-    public void scheduleCreateService(android.os.IBinder, android.content.pm.ServiceInfo, android.content.res.CompatibilityInfo, int);
-    public void scheduleDestroyBackupAgent(android.content.pm.ApplicationInfo, android.content.res.CompatibilityInfo);
-    public void scheduleEnterAnimationComplete(android.os.IBinder);
-    public void scheduleExit();
-    public void scheduleInstallProvider(android.content.pm.ProviderInfo);
-    public void scheduleLocalVoiceInteractionStarted(android.os.IBinder, com.android.internal.app.IVoiceInteractor);
-    public void scheduleLowMemory();
-    public void scheduleOnNewActivityOptions(android.os.IBinder, android.os.Bundle);
-    public void scheduleReceiver(android.content.Intent, android.content.pm.ActivityInfo, android.content.res.CompatibilityInfo, int, java.lang.String, android.os.Bundle, boolean, int, int);
-    public void scheduleRegisteredReceiver(android.content.IIntentReceiver, android.content.Intent, int, java.lang.String, android.os.Bundle, boolean, boolean, int, int);
-    public void scheduleServiceArgs(android.os.IBinder, android.content.pm.ParceledListSlice);
-    public void scheduleSleeping(android.os.IBinder, boolean);
-    public void scheduleStopService(android.os.IBinder);
-    public void scheduleSuicide();
-    public void scheduleTransaction(android.app.servertransaction.ClientTransaction);
-    public void scheduleTranslucentConversionComplete(android.os.IBinder, boolean);
-    public void scheduleTrimMemory(int);
-    public void scheduleUnbindService(android.os.IBinder, android.content.Intent);
-    public void setCoreSettings(android.os.Bundle);
-    public void setHttpProxy(java.lang.String, java.lang.String, java.lang.String, android.net.Uri);
-    public void setNetworkBlockSeq(long);
-    public void setProcessState(int);
-    public void setSchedulingGroup(int);
-    public void startBinderTracking();
-    public void stopBinderTrackingAndDump(android.os.ParcelFileDescriptor);
-    public void unstableProviderDied(android.os.IBinder);
-    public void updatePackageCompatibilityInfo(java.lang.String, android.content.res.CompatibilityInfo);
-    public void updateProcessState(int, boolean);
-    public void updateTimePrefs(int);
-    public void updateTimeZone();
-
-
-}
-
--keep class android.app.ActivityThread$RequestAssistContextExtras {
-
-
-
-}
-
--keep class android.app.AppComponentFactory {
-    <init>();
-
-    public android.app.Activity instantiateActivity(java.lang.ClassLoader, java.lang.String, android.content.Intent);
-    public android.app.Application instantiateApplication(java.lang.ClassLoader, java.lang.String);
-    public android.content.ContentProvider instantiateProvider(java.lang.ClassLoader, java.lang.String);
-    public android.content.BroadcastReceiver instantiateReceiver(java.lang.ClassLoader, java.lang.String, android.content.Intent);
-    public android.app.Service instantiateService(java.lang.ClassLoader, java.lang.String, android.content.Intent);
-
-
-    public static android.app.AppComponentFactory DEFAULT;
-}
-
--keep class android.app.AppOpsManager {
-
-    public int checkAudioOp(int, int, int, java.lang.String);
-    public int checkAudioOpNoThrow(int, int, int, java.lang.String);
-    public int checkOp(java.lang.String, int, java.lang.String);
-    public int checkOp(int, int, java.lang.String);
-    public int checkOpNoThrow(java.lang.String, int, java.lang.String);
-    public int checkOpNoThrow(int, int, java.lang.String);
-    public void checkPackage(int, java.lang.String);
-    public void finishOp(java.lang.String, int, java.lang.String);
-    public void finishOp(int, int, java.lang.String);
-    public void finishOp(int);
-    public static java.lang.String[] getOpStrs();
-    public java.util.List getOpsForPackage(int, java.lang.String, int[]);
-    public java.util.List getPackagesForOps(int[]);
-    public static android.os.IBinder getToken(com.android.internal.app.IAppOpsService);
-    public boolean isOperationActive(int, int, java.lang.String);
-    public static long maxTime(long[], int, int);
-    public static java.lang.String modeToName(int);
-    public int noteOp(java.lang.String, int, java.lang.String);
-    public int noteOp(int, int, java.lang.String);
-    public int noteOp(int);
-    public int noteOpNoThrow(java.lang.String, int, java.lang.String);
-    public int noteOpNoThrow(int, int, java.lang.String);
-    public int noteProxyOp(java.lang.String, java.lang.String);
-    public int noteProxyOp(int, java.lang.String);
-    public int noteProxyOpNoThrow(java.lang.String, java.lang.String);
-    public int noteProxyOpNoThrow(int, java.lang.String);
-    public static boolean opAllowSystemBypassRestriction(int);
-    public static boolean opAllowsReset(int);
-    public static int opToDefaultMode(int);
-    public static java.lang.String opToName(int);
-    public static java.lang.String opToPermission(int);
-    public static java.lang.String opToRestriction(int);
-    public static int opToSwitch(int);
-    public static java.lang.String permissionToOp(java.lang.String);
-    public static int permissionToOpCode(java.lang.String);
-    public void resetAllModes();
-    public void setMode(int, int, java.lang.String, int);
-    public void setMode(java.lang.String, int, java.lang.String, int);
-    public void setRestriction(int, int, int, java.lang.String[]);
-    public void setUidMode(int, int, int);
-    public void setUidMode(java.lang.String, int, int);
-    public void setUserRestriction(int, boolean, android.os.IBinder);
-    public void setUserRestriction(int, boolean, android.os.IBinder, java.lang.String[]);
-    public void setUserRestrictionForUser(int, boolean, android.os.IBinder, java.lang.String[], int);
-    public int startOp(java.lang.String, int, java.lang.String);
-    public int startOp(int);
-    public int startOp(int, int, java.lang.String);
-    public int startOp(int, int, java.lang.String, boolean);
-    public int startOpNoThrow(java.lang.String, int, java.lang.String);
-    public int startOpNoThrow(int, int, java.lang.String);
-    public int startOpNoThrow(int, int, java.lang.String, boolean);
-    public void startWatchingActive(int[], android.app.AppOpsManager$OnOpActiveChangedListener);
-    public void startWatchingMode(java.lang.String, java.lang.String, android.app.AppOpsManager$OnOpChangedListener);
-    public void startWatchingMode(java.lang.String, java.lang.String, int, android.app.AppOpsManager$OnOpChangedListener);
-    public void startWatchingMode(int, java.lang.String, android.app.AppOpsManager$OnOpChangedListener);
-    public void startWatchingMode(int, java.lang.String, int, android.app.AppOpsManager$OnOpChangedListener);
-    public void stopWatchingActive(android.app.AppOpsManager$OnOpActiveChangedListener);
-    public void stopWatchingMode(android.app.AppOpsManager$OnOpChangedListener);
-    public static int strDebugOpToOp(java.lang.String);
-    public static int strOpToOp(java.lang.String);
-    public int unsafeCheckOpRaw(java.lang.String, int, java.lang.String);
-
-
-    public static int MODE_ALLOWED;
-    public static int MODE_DEFAULT;
-    public static int MODE_ERRORED;
-    public static int MODE_FOREGROUND;
-    public static int MODE_IGNORED;
-    public static java.lang.String[] MODE_NAMES;
-    public static java.lang.String OPSTR_ACCEPT_HANDOVER;
-    public static java.lang.String OPSTR_ACCESS_NOTIFICATIONS;
-    public static java.lang.String OPSTR_ACTIVATE_VPN;
-    public static java.lang.String OPSTR_ADD_VOICEMAIL;
-    public static java.lang.String OPSTR_ANSWER_PHONE_CALLS;
-    public static java.lang.String OPSTR_ASSIST_SCREENSHOT;
-    public static java.lang.String OPSTR_ASSIST_STRUCTURE;
-    public static java.lang.String OPSTR_AUDIO_ACCESSIBILITY_VOLUME;
-    public static java.lang.String OPSTR_AUDIO_ALARM_VOLUME;
-    public static java.lang.String OPSTR_AUDIO_BLUETOOTH_VOLUME;
-    public static java.lang.String OPSTR_AUDIO_MASTER_VOLUME;
-    public static java.lang.String OPSTR_AUDIO_MEDIA_VOLUME;
-    public static java.lang.String OPSTR_AUDIO_NOTIFICATION_VOLUME;
-    public static java.lang.String OPSTR_AUDIO_RING_VOLUME;
-    public static java.lang.String OPSTR_AUDIO_VOICE_VOLUME;
-    public static java.lang.String OPSTR_BIND_ACCESSIBILITY_SERVICE;
-    public static java.lang.String OPSTR_BLUETOOTH_SCAN;
-    public static java.lang.String OPSTR_BODY_SENSORS;
-    public static java.lang.String OPSTR_CALL_PHONE;
-    public static java.lang.String OPSTR_CAMERA;
-    public static java.lang.String OPSTR_CHANGE_WIFI_STATE;
-    public static java.lang.String OPSTR_COARSE_LOCATION;
-    public static java.lang.String OPSTR_FINE_LOCATION;
-    public static java.lang.String OPSTR_GET_ACCOUNTS;
-    public static java.lang.String OPSTR_GET_USAGE_STATS;
-    public static java.lang.String OPSTR_GPS;
-    public static java.lang.String OPSTR_INSTANT_APP_START_FOREGROUND;
-    public static java.lang.String OPSTR_MANAGE_IPSEC_TUNNELS;
-    public static java.lang.String OPSTR_MOCK_LOCATION;
-    public static java.lang.String OPSTR_MONITOR_HIGH_POWER_LOCATION;
-    public static java.lang.String OPSTR_MONITOR_LOCATION;
-    public static java.lang.String OPSTR_MUTE_MICROPHONE;
-    public static java.lang.String OPSTR_NEIGHBORING_CELLS;
-    public static java.lang.String OPSTR_PICTURE_IN_PICTURE;
-    public static java.lang.String OPSTR_PLAY_AUDIO;
-    public static java.lang.String OPSTR_POST_NOTIFICATION;
-    public static java.lang.String OPSTR_PROCESS_OUTGOING_CALLS;
-    public static java.lang.String OPSTR_PROJECT_MEDIA;
-    public static java.lang.String OPSTR_READ_CALENDAR;
-    public static java.lang.String OPSTR_READ_CALL_LOG;
-    public static java.lang.String OPSTR_READ_CELL_BROADCASTS;
-    public static java.lang.String OPSTR_READ_CLIPBOARD;
-    public static java.lang.String OPSTR_READ_CONTACTS;
-    public static java.lang.String OPSTR_READ_EXTERNAL_STORAGE;
-    public static java.lang.String OPSTR_READ_ICC_SMS;
-    public static java.lang.String OPSTR_READ_PHONE_NUMBERS;
-    public static java.lang.String OPSTR_READ_PHONE_STATE;
-    public static java.lang.String OPSTR_READ_SMS;
-    public static java.lang.String OPSTR_RECEIVE_EMERGENCY_BROADCAST;
-    public static java.lang.String OPSTR_RECEIVE_MMS;
-    public static java.lang.String OPSTR_RECEIVE_SMS;
-    public static java.lang.String OPSTR_RECEIVE_WAP_PUSH;
-    public static java.lang.String OPSTR_RECORD_AUDIO;
-    public static java.lang.String OPSTR_REQUEST_DELETE_PACKAGES;
-    public static java.lang.String OPSTR_REQUEST_INSTALL_PACKAGES;
-    public static java.lang.String OPSTR_RUN_ANY_IN_BACKGROUND;
-    public static java.lang.String OPSTR_RUN_IN_BACKGROUND;
-    public static java.lang.String OPSTR_SEND_SMS;
-    public static java.lang.String OPSTR_START_FOREGROUND;
-    public static java.lang.String OPSTR_SYSTEM_ALERT_WINDOW;
-    public static java.lang.String OPSTR_TAKE_AUDIO_FOCUS;
-    public static java.lang.String OPSTR_TAKE_MEDIA_BUTTONS;
-    public static java.lang.String OPSTR_TOAST_WINDOW;
-    public static java.lang.String OPSTR_TURN_SCREEN_ON;
-    public static java.lang.String OPSTR_USE_FINGERPRINT;
-    public static java.lang.String OPSTR_USE_SIP;
-    public static java.lang.String OPSTR_VIBRATE;
-    public static java.lang.String OPSTR_WAKE_LOCK;
-    public static java.lang.String OPSTR_WIFI_SCAN;
-    public static java.lang.String OPSTR_WRITE_CALENDAR;
-    public static java.lang.String OPSTR_WRITE_CALL_LOG;
-    public static java.lang.String OPSTR_WRITE_CLIPBOARD;
-    public static java.lang.String OPSTR_WRITE_CONTACTS;
-    public static java.lang.String OPSTR_WRITE_EXTERNAL_STORAGE;
-    public static java.lang.String OPSTR_WRITE_ICC_SMS;
-    public static java.lang.String OPSTR_WRITE_SETTINGS;
-    public static java.lang.String OPSTR_WRITE_SMS;
-    public static java.lang.String OPSTR_WRITE_WALLPAPER;
-    public static int OP_ACCEPT_HANDOVER;
-    public static int OP_ACCESS_NOTIFICATIONS;
-    public static int OP_ACTIVATE_VPN;
-    public static int OP_ADD_VOICEMAIL;
-    public static int OP_ANSWER_PHONE_CALLS;
-    public static int OP_ASSIST_SCREENSHOT;
-    public static int OP_ASSIST_STRUCTURE;
-    public static int OP_AUDIO_ACCESSIBILITY_VOLUME;
-    public static int OP_AUDIO_ALARM_VOLUME;
-    public static int OP_AUDIO_BLUETOOTH_VOLUME;
-    public static int OP_AUDIO_MASTER_VOLUME;
-    public static int OP_AUDIO_MEDIA_VOLUME;
-    public static int OP_AUDIO_NOTIFICATION_VOLUME;
-    public static int OP_AUDIO_RING_VOLUME;
-    public static int OP_AUDIO_VOICE_VOLUME;
-    public static int OP_BIND_ACCESSIBILITY_SERVICE;
-    public static int OP_BLUETOOTH_SCAN;
-    public static int OP_BODY_SENSORS;
-    public static int OP_CALL_PHONE;
-    public static int OP_CAMERA;
-    public static int OP_CHANGE_WIFI_STATE;
-    public static int OP_COARSE_LOCATION;
-    public static int OP_FINE_LOCATION;
-    public static int OP_GET_ACCOUNTS;
-    public static int OP_GET_USAGE_STATS;
-    public static int OP_GPS;
-    public static int OP_INSTANT_APP_START_FOREGROUND;
-    public static int OP_MANAGE_IPSEC_TUNNELS;
-    public static int OP_MOCK_LOCATION;
-    public static int OP_MONITOR_HIGH_POWER_LOCATION;
-    public static int OP_MONITOR_LOCATION;
-    public static int OP_MUTE_MICROPHONE;
-    public static int OP_NEIGHBORING_CELLS;
-    public static int OP_NONE;
-    public static int OP_PICTURE_IN_PICTURE;
-    public static int OP_PLAY_AUDIO;
-    public static int OP_POST_NOTIFICATION;
-    public static int OP_PROCESS_OUTGOING_CALLS;
-    public static int OP_PROJECT_MEDIA;
-    public static int OP_READ_CALENDAR;
-    public static int OP_READ_CALL_LOG;
-    public static int OP_READ_CELL_BROADCASTS;
-    public static int OP_READ_CLIPBOARD;
-    public static int OP_READ_CONTACTS;
-    public static int OP_READ_EXTERNAL_STORAGE;
-    public static int OP_READ_ICC_SMS;
-    public static int OP_READ_PHONE_NUMBERS;
-    public static int OP_READ_PHONE_STATE;
-    public static int OP_READ_SMS;
-    public static int OP_RECEIVE_EMERGECY_SMS;
-    public static int OP_RECEIVE_MMS;
-    public static int OP_RECEIVE_SMS;
-    public static int OP_RECEIVE_WAP_PUSH;
-    public static int OP_RECORD_AUDIO;
-    public static int OP_REQUEST_DELETE_PACKAGES;
-    public static int OP_REQUEST_INSTALL_PACKAGES;
-    public static int OP_RUN_ANY_IN_BACKGROUND;
-    public static int OP_RUN_IN_BACKGROUND;
-    public static int OP_SEND_SMS;
-    public static int OP_START_FOREGROUND;
-    public static int OP_SYSTEM_ALERT_WINDOW;
-    public static int OP_TAKE_AUDIO_FOCUS;
-    public static int OP_TAKE_MEDIA_BUTTONS;
-    public static int OP_TOAST_WINDOW;
-    public static int OP_TURN_SCREEN_ON;
-    public static int OP_USE_FINGERPRINT;
-    public static int OP_USE_SIP;
-    public static int OP_VIBRATE;
-    public static int OP_WAKE_LOCK;
-    public static int OP_WIFI_SCAN;
-    public static int OP_WRITE_CALENDAR;
-    public static int OP_WRITE_CALL_LOG;
-    public static int OP_WRITE_CLIPBOARD;
-    public static int OP_WRITE_CONTACTS;
-    public static int OP_WRITE_EXTERNAL_STORAGE;
-    public static int OP_WRITE_ICC_SMS;
-    public static int OP_WRITE_SETTINGS;
-    public static int OP_WRITE_SMS;
-    public static int OP_WRITE_WALLPAPER;
-    public static int UID_STATE_BACKGROUND;
-    public static int UID_STATE_CACHED;
-    public static int UID_STATE_FOREGROUND;
-    public static int UID_STATE_FOREGROUND_SERVICE;
-    public static int UID_STATE_LAST_NON_RESTRICTED;
-    public static int UID_STATE_PERSISTENT;
-    public static int UID_STATE_TOP;
-    public static int WATCH_FOREGROUND_CHANGES;
-    public static int _NUM_OP;
-    public static int _NUM_UID_STATE;
-}
-
--keep class android.app.AppOpsManager$OnOpActiveChangedListener {
-
-    public abstract void onOpActiveChanged(int, int, java.lang.String, boolean);
-
-
-}
-
--keep class android.app.AppOpsManager$OnOpChangedListener {
-
-    public abstract void onOpChanged(java.lang.String, java.lang.String);
-
-
-}
-
--keep class android.app.AppOpsManager$OpEntry {
-    <init>(int, int, long, long, int, int, java.lang.String);
-    <init>(int, int, long[], long[], int, boolean, int, java.lang.String);
-    <init>(int, int, long[], long[], int, int, java.lang.String);
-
-    public int describeContents();
-    public int getDuration();
-    public long getLastAccessBackgroundTime();
-    public long getLastAccessForegroundTime();
-    public long getLastAccessTime();
-    public long getLastRejectBackgroundTime();
-    public long getLastRejectForegroundTime();
-    public long getLastRejectTime();
-    public long getLastRejectTimeFor(int);
-    public long getLastTimeFor(int);
-    public int getMode();
-    public int getOp();
-    public java.lang.String getProxyPackageName();
-    public int getProxyUid();
-    public long getRejectTime();
-    public long getTime();
-    public boolean isRunning();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.AppOpsManager$PackageOps {
-    <init>(java.lang.String, int, java.util.List);
-
-    public int describeContents();
-    public java.util.List getOps();
-    public java.lang.String getPackageName();
-    public int getUid();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.Application {
-    <init>();
-
-    public android.view.autofill.AutofillManager$AutofillClient getAutofillClient();
-    public static java.lang.String getProcessName();
-    public void onConfigurationChanged(android.content.res.Configuration);
-    public void onCreate();
-    public void onLowMemory();
-    public void onTerminate();
-    public void onTrimMemory(int);
-    public void registerActivityLifecycleCallbacks(android.app.Application$ActivityLifecycleCallbacks);
-    public void registerComponentCallbacks(android.content.ComponentCallbacks);
-    public void registerOnProvideAssistDataListener(android.app.Application$OnProvideAssistDataListener);
-    public void unregisterActivityLifecycleCallbacks(android.app.Application$ActivityLifecycleCallbacks);
-    public void unregisterComponentCallbacks(android.content.ComponentCallbacks);
-    public void unregisterOnProvideAssistDataListener(android.app.Application$OnProvideAssistDataListener);
-
-
-    public android.app.LoadedApk mLoadedApk;
-}
-
--keep class android.app.Application$ActivityLifecycleCallbacks {
-
-    public abstract void onActivityCreated(android.app.Activity, android.os.Bundle);
-    public abstract void onActivityDestroyed(android.app.Activity);
-    public abstract void onActivityPaused(android.app.Activity);
-    public abstract void onActivityResumed(android.app.Activity);
-    public abstract void onActivitySaveInstanceState(android.app.Activity, android.os.Bundle);
-    public abstract void onActivityStarted(android.app.Activity);
-    public abstract void onActivityStopped(android.app.Activity);
-
-
-}
-
--keep class android.app.Application$OnProvideAssistDataListener {
-
-    public abstract void onProvideAssistData(android.app.Activity, android.os.Bundle);
-
-
-}
-
--keep class android.app.ApplicationErrorReport {
-    <init>();
-
-    public int describeContents();
-    public void dump(android.util.Printer, java.lang.String);
-    public static android.content.ComponentName getErrorReportReceiver(android.content.Context, java.lang.String, int);
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int TYPE_ANR;
-    public static int TYPE_BATTERY;
-    public static int TYPE_CRASH;
-    public static int TYPE_NONE;
-    public static int TYPE_RUNNING_SERVICE;
-    public android.app.ApplicationErrorReport$AnrInfo anrInfo;
-    public android.app.ApplicationErrorReport$BatteryInfo batteryInfo;
-    public android.app.ApplicationErrorReport$CrashInfo crashInfo;
-    public java.lang.String installerPackageName;
-    public java.lang.String packageName;
-    public java.lang.String processName;
-    public android.app.ApplicationErrorReport$RunningServiceInfo runningServiceInfo;
-    public boolean systemApp;
-    public long time;
-    public int type;
-}
-
--keep class android.app.ApplicationErrorReport$AnrInfo {
-    <init>();
-    <init>(android.os.Parcel);
-
-    public void dump(android.util.Printer, java.lang.String);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public java.lang.String activity;
-    public java.lang.String cause;
-    public java.lang.String info;
-}
-
--keep class android.app.ApplicationErrorReport$BatteryInfo {
-    <init>();
-    <init>(android.os.Parcel);
-
-    public void dump(android.util.Printer, java.lang.String);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public java.lang.String checkinDetails;
-    public long durationMicros;
-    public java.lang.String usageDetails;
-    public int usagePercent;
-}
-
--keep class android.app.ApplicationErrorReport$CrashInfo {
-    <init>();
-    <init>(java.lang.Throwable);
-    <init>(android.os.Parcel);
-
-    public void appendStackTrace(java.lang.String);
-    public void dump(android.util.Printer, java.lang.String);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public java.lang.String exceptionClassName;
-    public java.lang.String exceptionMessage;
-    public java.lang.String stackTrace;
-    public java.lang.String throwClassName;
-    public java.lang.String throwFileName;
-    public int throwLineNumber;
-    public java.lang.String throwMethodName;
-}
-
--keep class android.app.ApplicationErrorReport$ParcelableCrashInfo {
-    <init>();
-    <init>(java.lang.Throwable);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.ApplicationErrorReport$RunningServiceInfo {
-    <init>();
-    <init>(android.os.Parcel);
-
-    public void dump(android.util.Printer, java.lang.String);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public long durationMillis;
-    public java.lang.String serviceDetails;
-}
-
--keep class android.app.ClientTransactionHandler {
-    <init>();
-
-    public void executeTransaction(android.app.servertransaction.ClientTransaction);
-    public abstract android.app.ActivityThread$ActivityClientRecord getActivityClient(android.os.IBinder);
-    public abstract android.app.LoadedApk getPackageInfoNoCheck(android.content.pm.ApplicationInfo, android.content.res.CompatibilityInfo);
-    public abstract void handleActivityConfigurationChanged(android.os.IBinder, android.content.res.Configuration, int);
-    public abstract void handleConfigurationChanged(android.content.res.Configuration);
-    public abstract void handleDestroyActivity(android.os.IBinder, boolean, int, boolean, java.lang.String);
-    public abstract android.app.Activity handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, android.content.Intent);
-    public abstract void handleMultiWindowModeChanged(android.os.IBinder, boolean, android.content.res.Configuration);
-    public abstract void handleNewIntent(android.os.IBinder, java.util.List, boolean);
-    public abstract void handlePauseActivity(android.os.IBinder, boolean, boolean, int, android.app.servertransaction.PendingTransactionActions, java.lang.String);
-    public abstract void handlePictureInPictureModeChanged(android.os.IBinder, boolean, android.content.res.Configuration);
-    public abstract void handleRelaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions);
-    public abstract void handleResumeActivity(android.os.IBinder, boolean, boolean, java.lang.String);
-    public abstract void handleSendResult(android.os.IBinder, java.util.List, java.lang.String);
-    public abstract void handleStartActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions);
-    public abstract void handleStopActivity(android.os.IBinder, boolean, int, android.app.servertransaction.PendingTransactionActions, boolean, java.lang.String);
-    public abstract void handleWindowVisibility(android.os.IBinder, boolean);
-    public abstract void performRestartActivity(android.os.IBinder, boolean);
-    public abstract android.app.ActivityThread$ActivityClientRecord prepareRelaunchActivity(android.os.IBinder, java.util.List, java.util.List, int, android.util.MergedConfiguration, boolean);
-    public abstract void reportRelaunch(android.os.IBinder, android.app.servertransaction.PendingTransactionActions);
-    public abstract void reportStop(android.app.servertransaction.PendingTransactionActions);
-    public abstract void updatePendingConfiguration(android.content.res.Configuration);
-    public abstract void updateProcessState(int, boolean);
-
-
-}
-
--keep class android.app.ContentProviderHolder {
-    <init>(android.content.pm.ProviderInfo);
-
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.os.IBinder connection;
-    public android.content.pm.ProviderInfo info;
-    public boolean noReleaseNeeded;
-    public android.content.IContentProvider provider;
-}
-
--keep class android.app.ContextImpl {
-
-    public boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
-    public boolean bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle);
-    public boolean bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.Handler, android.os.UserHandle);
-    public boolean canLoadUnsafeResources();
-    public int checkCallingOrSelfPermission(java.lang.String);
-    public int checkCallingOrSelfUriPermission(android.net.Uri, int);
-    public int checkCallingPermission(java.lang.String);
-    public int checkCallingUriPermission(android.net.Uri, int);
-    public int checkPermission(java.lang.String, int, int);
-    public int checkPermission(java.lang.String, int, int, android.os.IBinder);
-    public int checkSelfPermission(java.lang.String);
-    public int checkUriPermission(android.net.Uri, int, int, int);
-    public int checkUriPermission(android.net.Uri, int, int, int, android.os.IBinder);
-    public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
-    public void clearWallpaper();
-    public android.content.Context createApplicationContext(android.content.pm.ApplicationInfo, int);
-    public android.content.Context createConfigurationContext(android.content.res.Configuration);
-    public android.content.Context createContextForSplit(java.lang.String);
-    public android.content.Context createCredentialProtectedStorageContext();
-    public android.content.Context createDeviceProtectedStorageContext();
-    public android.content.Context createDisplayContext(android.view.Display);
-    public android.content.Context createPackageContext(java.lang.String, int);
-    public android.content.Context createPackageContextAsUser(java.lang.String, int, android.os.UserHandle);
-    public java.lang.String[] databaseList();
-    public boolean deleteDatabase(java.lang.String);
-    public boolean deleteFile(java.lang.String);
-    public boolean deleteSharedPreferences(java.lang.String);
-    public void enforceCallingOrSelfPermission(java.lang.String, java.lang.String);
-    public void enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String);
-    public void enforceCallingPermission(java.lang.String, java.lang.String);
-    public void enforceCallingUriPermission(android.net.Uri, int, java.lang.String);
-    public void enforcePermission(java.lang.String, int, int, java.lang.String);
-    public void enforceUriPermission(android.net.Uri, int, int, int, java.lang.String);
-    public void enforceUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int, java.lang.String);
-    public java.lang.String[] fileList();
-    public android.os.IBinder getActivityToken();
-    public android.content.Context getApplicationContext();
-    public android.content.pm.ApplicationInfo getApplicationInfo();
-    public android.content.res.AssetManager getAssets();
-    public android.view.autofill.AutofillManager$AutofillClient getAutofillClient();
-    public java.lang.String getBasePackageName();
-    public java.io.File getCacheDir();
-    public java.lang.ClassLoader getClassLoader();
-    public java.io.File getCodeCacheDir();
-    public android.content.ContentResolver getContentResolver();
-    public java.io.File getDataDir();
-    public java.io.File getDatabasePath(java.lang.String);
-    public java.io.File getDir(java.lang.String, int);
-    public android.view.Display getDisplay();
-    public android.view.DisplayAdjustments getDisplayAdjustments(int);
-    public java.io.File getExternalCacheDir();
-    public java.io.File[] getExternalCacheDirs();
-    public java.io.File getExternalFilesDir(java.lang.String);
-    public java.io.File[] getExternalFilesDirs(java.lang.String);
-    public java.io.File[] getExternalMediaDirs();
-    public java.io.File getFileStreamPath(java.lang.String);
-    public java.io.File getFilesDir();
-    public android.app.IApplicationThread getIApplicationThread();
-    public java.util.concurrent.Executor getMainExecutor();
-    public android.os.Looper getMainLooper();
-    public android.os.Handler getMainThreadHandler();
-    public java.io.File getNoBackupFilesDir();
-    public java.io.File getObbDir();
-    public java.io.File[] getObbDirs();
-    public java.lang.String getOpPackageName();
-    public java.lang.String getPackageCodePath();
-    public android.content.pm.PackageManager getPackageManager();
-    public java.lang.String getPackageName();
-    public java.lang.String getPackageResourcePath();
-    public java.io.File getPreloadsFileCache();
-    public android.content.res.Resources getResources();
-    public android.app.IServiceConnection getServiceDispatcher(android.content.ServiceConnection, android.os.Handler, int);
-    public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
-    public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
-    public java.io.File getSharedPreferencesPath(java.lang.String);
-    public java.lang.Object getSystemService(java.lang.String);
-    public java.lang.String getSystemServiceName(java.lang.Class);
-    public android.content.res.Resources$Theme getTheme();
-    public int getThemeResId();
-    public android.os.UserHandle getUser();
-    public int getUserId();
-    public android.graphics.drawable.Drawable getWallpaper();
-    public int getWallpaperDesiredMinimumHeight();
-    public int getWallpaperDesiredMinimumWidth();
-    public void grantUriPermission(java.lang.String, android.net.Uri, int);
-    public boolean isAutofillCompatibilityEnabled();
-    public boolean isCredentialProtectedStorage();
-    public boolean isDeviceProtectedStorage();
-    public boolean isRestricted();
-    public boolean moveDatabaseFrom(android.content.Context, java.lang.String);
-    public boolean moveSharedPreferencesFrom(android.content.Context, java.lang.String);
-    public java.io.FileInputStream openFileInput(java.lang.String);
-    public java.io.FileOutputStream openFileOutput(java.lang.String, int);
-    public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory);
-    public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler);
-    public android.graphics.drawable.Drawable peekWallpaper();
-    public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
-    public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
-    public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler);
-    public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int);
-    public android.content.Intent registerReceiverAsUser(android.content.BroadcastReceiver, android.os.UserHandle, android.content.IntentFilter, java.lang.String, android.os.Handler);
-    public void reloadSharedPreferences();
-    public void removeStickyBroadcast(android.content.Intent);
-    public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public void revokeUriPermission(android.net.Uri, int);
-    public void revokeUriPermission(java.lang.String, android.net.Uri, int);
-    public void sendBroadcast(android.content.Intent);
-    public void sendBroadcast(android.content.Intent, java.lang.String);
-    public void sendBroadcast(android.content.Intent, java.lang.String, android.os.Bundle);
-    public void sendBroadcast(android.content.Intent, java.lang.String, int);
-    public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String);
-    public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.os.Bundle);
-    public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int);
-    public void sendBroadcastAsUserMultiplePermissions(android.content.Intent, android.os.UserHandle, java.lang.String[]);
-    public void sendBroadcastMultiplePermissions(android.content.Intent, java.lang.String[]);
-    public void sendOrderedBroadcast(android.content.Intent, java.lang.String);
-    public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcast(android.content.Intent, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendStickyBroadcast(android.content.Intent);
-    public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.os.Bundle);
-    public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void setAutofillClient(android.view.autofill.AutofillManager$AutofillClient);
-    public void setAutofillCompatibilityEnabled(boolean);
-    public void setTheme(int);
-    public void setWallpaper(android.graphics.Bitmap);
-    public void setWallpaper(java.io.InputStream);
-    public void startActivities(android.content.Intent[]);
-    public void startActivities(android.content.Intent[], android.os.Bundle);
-    public int startActivitiesAsUser(android.content.Intent[], android.os.Bundle, android.os.UserHandle);
-    public void startActivity(android.content.Intent);
-    public void startActivity(android.content.Intent, android.os.Bundle);
-    public void startActivityAsUser(android.content.Intent, android.os.UserHandle);
-    public void startActivityAsUser(android.content.Intent, android.os.Bundle, android.os.UserHandle);
-    public android.content.ComponentName startForegroundService(android.content.Intent);
-    public android.content.ComponentName startForegroundServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle);
-    public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int);
-    public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle);
-    public android.content.ComponentName startService(android.content.Intent);
-    public android.content.ComponentName startServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public boolean stopService(android.content.Intent);
-    public boolean stopServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public void unbindService(android.content.ServiceConnection);
-    public void unregisterReceiver(android.content.BroadcastReceiver);
-    public void updateDisplay(int);
-
-
-}
-
--keep class android.app.Dialog {
-    <init>(android.content.Context);
-    <init>(android.content.Context, int);
-    <init>(android.content.Context, boolean, android.os.Message);
-    <init>(android.content.Context, boolean, android.content.DialogInterface$OnCancelListener);
-
-    public void addContentView(android.view.View, android.view.ViewGroup$LayoutParams);
-    public void cancel();
-    public void closeOptionsMenu();
-    public void create();
-    public void dismiss();
-    public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    public boolean dispatchKeyEvent(android.view.KeyEvent);
-    public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    public boolean dispatchTouchEvent(android.view.MotionEvent);
-    public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    public android.view.View findViewById(int);
-    public android.app.ActionBar getActionBar();
-    public android.content.Context getContext();
-    public android.view.View getCurrentFocus();
-    public android.view.LayoutInflater getLayoutInflater();
-    public android.app.Activity getOwnerActivity();
-    public android.view.SearchEvent getSearchEvent();
-    public int getVolumeControlStream();
-    public android.view.Window getWindow();
-    public void hide();
-    public void invalidateOptionsMenu();
-    public boolean isShowing();
-    public void onActionModeFinished(android.view.ActionMode);
-    public void onActionModeStarted(android.view.ActionMode);
-    public void onAttachedToWindow();
-    public void onBackPressed();
-    public void onContentChanged();
-    public boolean onContextItemSelected(android.view.MenuItem);
-    public void onContextMenuClosed(android.view.Menu);
-    protected void onCreate(android.os.Bundle);
-    public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu$ContextMenuInfo);
-    public boolean onCreateOptionsMenu(android.view.Menu);
-    public boolean onCreatePanelMenu(int, android.view.Menu);
-    public android.view.View onCreatePanelView(int);
-    public void onDetachedFromWindow();
-    public boolean onGenericMotionEvent(android.view.MotionEvent);
-    public boolean onKeyDown(int, android.view.KeyEvent);
-    public boolean onKeyLongPress(int, android.view.KeyEvent);
-    public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    public boolean onKeyShortcut(int, android.view.KeyEvent);
-    public boolean onKeyUp(int, android.view.KeyEvent);
-    public boolean onMenuItemSelected(int, android.view.MenuItem);
-    public boolean onMenuOpened(int, android.view.Menu);
-    public boolean onOptionsItemSelected(android.view.MenuItem);
-    public void onOptionsMenuClosed(android.view.Menu);
-    public void onPanelClosed(int, android.view.Menu);
-    public boolean onPrepareOptionsMenu(android.view.Menu);
-    public boolean onPreparePanel(int, android.view.View, android.view.Menu);
-    public void onRestoreInstanceState(android.os.Bundle);
-    public android.os.Bundle onSaveInstanceState();
-    public boolean onSearchRequested(android.view.SearchEvent);
-    public boolean onSearchRequested();
-    protected void onStart();
-    protected void onStop();
-    public boolean onTouchEvent(android.view.MotionEvent);
-    public boolean onTrackballEvent(android.view.MotionEvent);
-    public void onWindowAttributesChanged(android.view.WindowManager$LayoutParams);
-    public void onWindowDismissed(boolean, boolean);
-    public void onWindowFocusChanged(boolean);
-    public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode$Callback);
-    public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode$Callback, int);
-    public void openContextMenu(android.view.View);
-    public void openOptionsMenu();
-    public void registerForContextMenu(android.view.View);
-    public boolean requestWindowFeature(int);
-    public android.view.View requireViewById(int);
-    public void setCancelMessage(android.os.Message);
-    public void setCancelable(boolean);
-    public void setCanceledOnTouchOutside(boolean);
-    public void setContentView(int);
-    public void setContentView(android.view.View);
-    public void setContentView(android.view.View, android.view.ViewGroup$LayoutParams);
-    public void setDismissMessage(android.os.Message);
-    public void setFeatureDrawable(int, android.graphics.drawable.Drawable);
-    public void setFeatureDrawableAlpha(int, int);
-    public void setFeatureDrawableResource(int, int);
-    public void setFeatureDrawableUri(int, android.net.Uri);
-    public void setOnCancelListener(android.content.DialogInterface$OnCancelListener);
-    public void setOnDismissListener(android.content.DialogInterface$OnDismissListener);
-    public void setOnKeyListener(android.content.DialogInterface$OnKeyListener);
-    public void setOnShowListener(android.content.DialogInterface$OnShowListener);
-    public void setOwnerActivity(android.app.Activity);
-    public void setTitle(java.lang.CharSequence);
-    public void setTitle(int);
-    public void setVolumeControlStream(int);
-    public void show();
-    public boolean takeCancelAndDismissListeners(java.lang.String, android.content.DialogInterface$OnCancelListener, android.content.DialogInterface$OnDismissListener);
-    public void takeKeyEvents(boolean);
-    public void unregisterForContextMenu(android.view.View);
-
-
-    protected boolean mCancelable;
-}
-
--keep class android.app.Fragment {
-    <init>();
-
-    public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public boolean equals(java.lang.Object);
-    public android.app.Activity getActivity();
-    public boolean getAllowEnterTransitionOverlap();
-    public boolean getAllowReturnTransitionOverlap();
-    public android.os.Bundle getArguments();
-    public android.app.FragmentManager getChildFragmentManager();
-    public android.content.Context getContext();
-    public android.transition.Transition getEnterTransition();
-    public android.transition.Transition getExitTransition();
-    public android.app.FragmentManager getFragmentManager();
-    public java.lang.Object getHost();
-    public int getId();
-    public android.view.LayoutInflater getLayoutInflater();
-    public android.app.LoaderManager getLoaderManager();
-    public android.app.Fragment getParentFragment();
-    public android.transition.Transition getReenterTransition();
-    public android.content.res.Resources getResources();
-    public boolean getRetainInstance();
-    public android.transition.Transition getReturnTransition();
-    public android.transition.Transition getSharedElementEnterTransition();
-    public android.transition.Transition getSharedElementReturnTransition();
-    public java.lang.String getString(int);
-    public java.lang.String getString(int, java.lang.Object[]);
-    public java.lang.String getTag();
-    public android.app.Fragment getTargetFragment();
-    public int getTargetRequestCode();
-    public java.lang.CharSequence getText(int);
-    public boolean getUserVisibleHint();
-    public android.view.View getView();
-    public int hashCode();
-    public static android.app.Fragment instantiate(android.content.Context, java.lang.String);
-    public static android.app.Fragment instantiate(android.content.Context, java.lang.String, android.os.Bundle);
-    public boolean isAdded();
-    public boolean isDetached();
-    public boolean isHidden();
-    public boolean isInLayout();
-    public boolean isRemoving();
-    public boolean isResumed();
-    public boolean isStateSaved();
-    public boolean isVisible();
-    public void onActivityCreated(android.os.Bundle);
-    public void onActivityResult(int, int, android.content.Intent);
-    public void onAttach(android.content.Context);
-    public void onAttach(android.app.Activity);
-    public void onAttachFragment(android.app.Fragment);
-    public void onConfigurationChanged(android.content.res.Configuration);
-    public boolean onContextItemSelected(android.view.MenuItem);
-    public void onCreate(android.os.Bundle);
-    public android.animation.Animator onCreateAnimator(int, boolean, int);
-    public void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu$ContextMenuInfo);
-    public void onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater);
-    public android.view.View onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle);
-    public void onDestroy();
-    public void onDestroyOptionsMenu();
-    public void onDestroyView();
-    public void onDetach();
-    public android.view.LayoutInflater onGetLayoutInflater(android.os.Bundle);
-    public void onHiddenChanged(boolean);
-    public void onInflate(android.util.AttributeSet, android.os.Bundle);
-    public void onInflate(android.content.Context, android.util.AttributeSet, android.os.Bundle);
-    public void onInflate(android.app.Activity, android.util.AttributeSet, android.os.Bundle);
-    public void onLowMemory();
-    public void onMultiWindowModeChanged(boolean, android.content.res.Configuration);
-    public void onMultiWindowModeChanged(boolean);
-    public boolean onOptionsItemSelected(android.view.MenuItem);
-    public void onOptionsMenuClosed(android.view.Menu);
-    public void onPause();
-    public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
-    public void onPictureInPictureModeChanged(boolean);
-    public void onPrepareOptionsMenu(android.view.Menu);
-    public void onRequestPermissionsResult(int, java.lang.String[], int[]);
-    public void onResume();
-    public void onSaveInstanceState(android.os.Bundle);
-    public void onStart();
-    public void onStop();
-    public void onTrimMemory(int);
-    public void onViewCreated(android.view.View, android.os.Bundle);
-    public void onViewStateRestored(android.os.Bundle);
-    public void postponeEnterTransition();
-    public void registerForContextMenu(android.view.View);
-    public void requestPermissions(java.lang.String[], int);
-    public void setAllowEnterTransitionOverlap(boolean);
-    public void setAllowReturnTransitionOverlap(boolean);
-    public void setArguments(android.os.Bundle);
-    public void setEnterSharedElementCallback(android.app.SharedElementCallback);
-    public void setEnterTransition(android.transition.Transition);
-    public void setExitSharedElementCallback(android.app.SharedElementCallback);
-    public void setExitTransition(android.transition.Transition);
-    public void setHasOptionsMenu(boolean);
-    public void setInitialSavedState(android.app.Fragment$SavedState);
-    public void setMenuVisibility(boolean);
-    public void setReenterTransition(android.transition.Transition);
-    public void setRetainInstance(boolean);
-    public void setReturnTransition(android.transition.Transition);
-    public void setSharedElementEnterTransition(android.transition.Transition);
-    public void setSharedElementReturnTransition(android.transition.Transition);
-    public void setTargetFragment(android.app.Fragment, int);
-    public void setUserVisibleHint(boolean);
-    public boolean shouldShowRequestPermissionRationale(java.lang.String);
-    public void startActivity(android.content.Intent);
-    public void startActivity(android.content.Intent, android.os.Bundle);
-    public void startActivityForResult(android.content.Intent, int);
-    public void startActivityForResult(android.content.Intent, int, android.os.Bundle);
-    public void startActivityForResultAsUser(android.content.Intent, int, android.os.Bundle, android.os.UserHandle);
-    public void startIntentSenderForResult(android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle);
-    public void startPostponedEnterTransition();
-    public java.lang.String toString();
-    public void unregisterForContextMenu(android.view.View);
-
-
-}
-
--keep class android.app.Fragment$SavedState {
-
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$ClassLoaderCreator CREATOR;
-}
-
--keep class android.app.FragmentContainer {
-    <init>();
-
-    public android.app.Fragment instantiate(android.content.Context, java.lang.String, android.os.Bundle);
-    public abstract android.view.View onFindViewById(int);
-    public abstract boolean onHasView();
-
-
-}
-
--keep class android.app.FragmentHostCallback {
-    <init>(android.content.Context, android.os.Handler, int);
-
-    public void onAttachFragment(android.app.Fragment);
-    public void onDump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public android.view.View onFindViewById(int);
-    public abstract java.lang.Object onGetHost();
-    public android.view.LayoutInflater onGetLayoutInflater();
-    public int onGetWindowAnimations();
-    public boolean onHasView();
-    public boolean onHasWindowAnimations();
-    public void onInvalidateOptionsMenu();
-    public void onRequestPermissionsFromFragment(android.app.Fragment, java.lang.String[], int);
-    public boolean onShouldSaveFragmentState(android.app.Fragment);
-    public void onStartActivityAsUserFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle, android.os.UserHandle);
-    public void onStartActivityFromFragment(android.app.Fragment, android.content.Intent, int, android.os.Bundle);
-    public void onStartIntentSenderFromFragment(android.app.Fragment, android.content.IntentSender, int, android.content.Intent, int, int, int, android.os.Bundle);
-    public boolean onUseFragmentManagerInflaterFactory();
-
-
-}
-
--keep class android.app.FragmentManager {
-    <init>();
-
-    public abstract void addOnBackStackChangedListener(android.app.FragmentManager$OnBackStackChangedListener);
-    public abstract android.app.FragmentTransaction beginTransaction();
-    public abstract void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public static void enableDebugLogging(boolean);
-    public abstract boolean executePendingTransactions();
-    public abstract android.app.Fragment findFragmentById(int);
-    public abstract android.app.Fragment findFragmentByTag(java.lang.String);
-    public abstract android.app.FragmentManager$BackStackEntry getBackStackEntryAt(int);
-    public abstract int getBackStackEntryCount();
-    public abstract android.app.Fragment getFragment(android.os.Bundle, java.lang.String);
-    public abstract java.util.List getFragments();
-    public abstract android.app.Fragment getPrimaryNavigationFragment();
-    public void invalidateOptionsMenu();
-    public abstract boolean isDestroyed();
-    public abstract boolean isStateSaved();
-    public android.app.FragmentTransaction openTransaction();
-    public abstract void popBackStack();
-    public abstract void popBackStack(java.lang.String, int);
-    public abstract void popBackStack(int, int);
-    public abstract boolean popBackStackImmediate();
-    public abstract boolean popBackStackImmediate(java.lang.String, int);
-    public abstract boolean popBackStackImmediate(int, int);
-    public abstract void putFragment(android.os.Bundle, java.lang.String, android.app.Fragment);
-    public abstract void registerFragmentLifecycleCallbacks(android.app.FragmentManager$FragmentLifecycleCallbacks, boolean);
-    public abstract void removeOnBackStackChangedListener(android.app.FragmentManager$OnBackStackChangedListener);
-    public abstract android.app.Fragment$SavedState saveFragmentInstanceState(android.app.Fragment);
-    public abstract void unregisterFragmentLifecycleCallbacks(android.app.FragmentManager$FragmentLifecycleCallbacks);
-
-
-    public static int POP_BACK_STACK_INCLUSIVE;
-}
-
--keep class android.app.FragmentManager$BackStackEntry {
-
-    public abstract java.lang.CharSequence getBreadCrumbShortTitle();
-    public abstract int getBreadCrumbShortTitleRes();
-    public abstract java.lang.CharSequence getBreadCrumbTitle();
-    public abstract int getBreadCrumbTitleRes();
-    public abstract int getId();
-    public abstract java.lang.String getName();
-
-
-}
-
--keep class android.app.FragmentManager$FragmentLifecycleCallbacks {
-    <init>();
-
-    public void onFragmentActivityCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    public void onFragmentAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
-    public void onFragmentCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    public void onFragmentDestroyed(android.app.FragmentManager, android.app.Fragment);
-    public void onFragmentDetached(android.app.FragmentManager, android.app.Fragment);
-    public void onFragmentPaused(android.app.FragmentManager, android.app.Fragment);
-    public void onFragmentPreAttached(android.app.FragmentManager, android.app.Fragment, android.content.Context);
-    public void onFragmentPreCreated(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    public void onFragmentResumed(android.app.FragmentManager, android.app.Fragment);
-    public void onFragmentSaveInstanceState(android.app.FragmentManager, android.app.Fragment, android.os.Bundle);
-    public void onFragmentStarted(android.app.FragmentManager, android.app.Fragment);
-    public void onFragmentStopped(android.app.FragmentManager, android.app.Fragment);
-    public void onFragmentViewCreated(android.app.FragmentManager, android.app.Fragment, android.view.View, android.os.Bundle);
-    public void onFragmentViewDestroyed(android.app.FragmentManager, android.app.Fragment);
-
-
-}
-
--keep class android.app.FragmentManager$OnBackStackChangedListener {
-
-    public abstract void onBackStackChanged();
-
-
-}
-
--keep class android.app.FragmentTransaction {
-    <init>();
-
-    public abstract android.app.FragmentTransaction add(android.app.Fragment, java.lang.String);
-    public abstract android.app.FragmentTransaction add(int, android.app.Fragment);
-    public abstract android.app.FragmentTransaction add(int, android.app.Fragment, java.lang.String);
-    public abstract android.app.FragmentTransaction addSharedElement(android.view.View, java.lang.String);
-    public abstract android.app.FragmentTransaction addToBackStack(java.lang.String);
-    public abstract android.app.FragmentTransaction attach(android.app.Fragment);
-    public abstract int commit();
-    public abstract int commitAllowingStateLoss();
-    public abstract void commitNow();
-    public abstract void commitNowAllowingStateLoss();
-    public abstract android.app.FragmentTransaction detach(android.app.Fragment);
-    public abstract android.app.FragmentTransaction disallowAddToBackStack();
-    public abstract android.app.FragmentTransaction hide(android.app.Fragment);
-    public abstract boolean isAddToBackStackAllowed();
-    public abstract boolean isEmpty();
-    public abstract android.app.FragmentTransaction remove(android.app.Fragment);
-    public abstract android.app.FragmentTransaction replace(int, android.app.Fragment);
-    public abstract android.app.FragmentTransaction replace(int, android.app.Fragment, java.lang.String);
-    public abstract android.app.FragmentTransaction runOnCommit(java.lang.Runnable);
-    public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(int);
-    public abstract android.app.FragmentTransaction setBreadCrumbShortTitle(java.lang.CharSequence);
-    public abstract android.app.FragmentTransaction setBreadCrumbTitle(int);
-    public abstract android.app.FragmentTransaction setBreadCrumbTitle(java.lang.CharSequence);
-    public abstract android.app.FragmentTransaction setCustomAnimations(int, int);
-    public abstract android.app.FragmentTransaction setCustomAnimations(int, int, int, int);
-    public abstract android.app.FragmentTransaction setPrimaryNavigationFragment(android.app.Fragment);
-    public abstract android.app.FragmentTransaction setReorderingAllowed(boolean);
-    public abstract android.app.FragmentTransaction setTransition(int);
-    public abstract android.app.FragmentTransaction setTransitionStyle(int);
-    public abstract android.app.FragmentTransaction show(android.app.Fragment);
-
-
-    public static int TRANSIT_ENTER_MASK;
-    public static int TRANSIT_EXIT_MASK;
-    public static int TRANSIT_FRAGMENT_CLOSE;
-    public static int TRANSIT_FRAGMENT_FADE;
-    public static int TRANSIT_FRAGMENT_OPEN;
-    public static int TRANSIT_NONE;
-    public static int TRANSIT_UNSET;
-}
-
--keep class android.app.GrantedUriPermission {
-    <init>(android.net.Uri, java.lang.String);
-
-    public int describeContents();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String packageName;
-    public android.net.Uri uri;
-}
-
--keep class android.app.IActivityController {
-
-    public abstract boolean activityResuming(java.lang.String);
-    public abstract boolean activityStarting(android.content.Intent, java.lang.String);
-    public abstract boolean appCrashed(java.lang.String, int, java.lang.String, java.lang.String, long, java.lang.String);
-    public abstract int appEarlyNotResponding(java.lang.String, int, java.lang.String);
-    public abstract int appNotResponding(java.lang.String, int, java.lang.String);
-    public abstract int systemNotResponding(java.lang.String);
-
-
-}
-
--keep class android.app.IActivityManager {
-
-    public abstract void activityDestroyed(android.os.IBinder);
-    public abstract void activityIdle(android.os.IBinder, android.content.res.Configuration, boolean);
-    public abstract void activityPaused(android.os.IBinder);
-    public abstract void activityRelaunched(android.os.IBinder);
-    public abstract void activityResumed(android.os.IBinder);
-    public abstract void activitySlept(android.os.IBinder);
-    public abstract void activityStopped(android.os.IBinder, android.os.Bundle, android.os.PersistableBundle, java.lang.CharSequence);
-    public abstract int addAppTask(android.os.IBinder, android.content.Intent, android.app.ActivityManager$TaskDescription, android.graphics.Bitmap);
-    public abstract void addInstrumentationResults(android.app.IApplicationThread, android.os.Bundle);
-    public abstract void addPackageDependency(java.lang.String);
-    public abstract void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
-    public abstract void appNotRespondingViaProvider(android.os.IBinder);
-    public abstract void attachApplication(android.app.IApplicationThread, long);
-    public abstract void backgroundWhitelistUid(int);
-    public abstract void backupAgentCreated(java.lang.String, android.os.IBinder);
-    public abstract boolean bindBackupAgent(java.lang.String, int, int);
-    public abstract int bindService(android.app.IApplicationThread, android.os.IBinder, android.content.Intent, java.lang.String, android.app.IServiceConnection, int, java.lang.String, int);
-    public abstract void bootAnimationComplete();
-    public abstract int broadcastIntent(android.app.IApplicationThread, android.content.Intent, java.lang.String, android.content.IIntentReceiver, int, java.lang.String, android.os.Bundle, java.lang.String[], int, android.os.Bundle, boolean, boolean, int);
-    public abstract void cancelIntentSender(android.content.IIntentSender);
-    public abstract void cancelRecentsAnimation(boolean);
-    public abstract void cancelTaskWindowTransition(int);
-    public abstract int checkGrantUriPermission(int, java.lang.String, android.net.Uri, int, int);
-    public abstract int checkPermission(java.lang.String, int, int);
-    public abstract int checkPermissionWithToken(java.lang.String, int, int, android.os.IBinder);
-    public abstract int checkUriPermission(android.net.Uri, int, int, int, int, android.os.IBinder);
-    public abstract boolean clearApplicationUserData(java.lang.String, boolean, android.content.pm.IPackageDataObserver, int);
-    public abstract void clearGrantedUriPermissions(java.lang.String, int);
-    public abstract void clearPendingBackup();
-    public abstract void closeSystemDialogs(java.lang.String);
-    public abstract boolean convertFromTranslucent(android.os.IBinder);
-    public abstract boolean convertToTranslucent(android.os.IBinder, android.os.Bundle);
-    public abstract void crashApplication(int, int, java.lang.String, int, java.lang.String);
-    public abstract int createStackOnDisplay(int);
-    public abstract void dismissKeyguard(android.os.IBinder, com.android.internal.policy.IKeyguardDismissCallback, java.lang.CharSequence);
-    public abstract void dismissPip(boolean, int);
-    public abstract void dismissSplitScreenMode(boolean);
-    public abstract boolean dumpHeap(java.lang.String, int, boolean, boolean, boolean, java.lang.String, android.os.ParcelFileDescriptor);
-    public abstract void dumpHeapFinished(java.lang.String);
-    public abstract boolean enterPictureInPictureMode(android.os.IBinder, android.app.PictureInPictureParams);
-    public abstract void enterSafeMode();
-    public abstract void exitFreeformMode(android.os.IBinder);
-    public abstract boolean finishActivity(android.os.IBinder, int, android.content.Intent, int);
-    public abstract boolean finishActivityAffinity(android.os.IBinder);
-    public abstract void finishHeavyWeightApp();
-    public abstract void finishInstrumentation(android.app.IApplicationThread, int, android.os.Bundle);
-    public abstract void finishReceiver(android.os.IBinder, int, java.lang.String, android.os.Bundle, boolean, int);
-    public abstract void finishSubActivity(android.os.IBinder, java.lang.String, int);
-    public abstract void finishVoiceTask(android.service.voice.IVoiceInteractionSession);
-    public abstract void forceStopPackage(java.lang.String, int);
-    public abstract android.content.ComponentName getActivityClassForToken(android.os.IBinder);
-    public abstract int getActivityDisplayId(android.os.IBinder);
-    public abstract android.os.Bundle getActivityOptions(android.os.IBinder);
-    public abstract java.util.List getAllStackInfos();
-    public abstract android.graphics.Point getAppTaskThumbnailSize();
-    public abstract java.util.List getAppTasks(java.lang.String);
-    public abstract android.os.Bundle getAssistContextExtras(int);
-    public abstract android.content.ComponentName getCallingActivity(android.os.IBinder);
-    public abstract java.lang.String getCallingPackage(android.os.IBinder);
-    public abstract android.content.res.Configuration getConfiguration();
-    public abstract android.app.ContentProviderHolder getContentProvider(android.app.IApplicationThread, java.lang.String, int, boolean);
-    public abstract android.app.ContentProviderHolder getContentProviderExternal(java.lang.String, int, android.os.IBinder);
-    public abstract android.content.pm.UserInfo getCurrentUser();
-    public abstract android.content.pm.ConfigurationInfo getDeviceConfigurationInfo();
-    public abstract java.util.List getFilteredTasks(int, int, int);
-    public abstract android.app.ActivityManager$StackInfo getFocusedStackInfo();
-    public abstract int getFrontActivityScreenCompatMode();
-    public abstract android.content.pm.ParceledListSlice getGrantedUriPermissions(java.lang.String, int);
-    public abstract android.content.Intent getIntentForIntentSender(android.content.IIntentSender);
-    public abstract android.content.IIntentSender getIntentSender(int, java.lang.String, android.os.IBinder, java.lang.String, int, android.content.Intent[], java.lang.String[], int, android.os.Bundle, int);
-    public abstract int getLastResumedActivityUserId();
-    public abstract java.lang.String getLaunchedFromPackage(android.os.IBinder);
-    public abstract int getLaunchedFromUid(android.os.IBinder);
-    public abstract int getLockTaskModeState();
-    public abstract int getMaxNumPictureInPictureActions(android.os.IBinder);
-    public abstract void getMemoryInfo(android.app.ActivityManager$MemoryInfo);
-    public abstract int getMemoryTrimLevel();
-    public abstract void getMyMemoryState(android.app.ActivityManager$RunningAppProcessInfo);
-    public abstract boolean getPackageAskScreenCompat(java.lang.String);
-    public abstract java.lang.String getPackageForIntentSender(android.content.IIntentSender);
-    public abstract java.lang.String getPackageForToken(android.os.IBinder);
-    public abstract int getPackageProcessState(java.lang.String, java.lang.String);
-    public abstract int getPackageScreenCompatMode(java.lang.String);
-    public abstract android.content.pm.ParceledListSlice getPersistedUriPermissions(java.lang.String, boolean);
-    public abstract int getProcessLimit();
-    public abstract android.os.Debug$MemoryInfo[] getProcessMemoryInfo(int[]);
-    public abstract long[] getProcessPss(int[]);
-    public abstract java.util.List getProcessesInErrorState();
-    public abstract java.lang.String getProviderMimeType(android.net.Uri, int);
-    public abstract android.content.pm.ParceledListSlice getRecentTasks(int, int, int);
-    public abstract int getRequestedOrientation(android.os.IBinder);
-    public abstract java.util.List getRunningAppProcesses();
-    public abstract java.util.List getRunningExternalApplications();
-    public abstract android.app.PendingIntent getRunningServiceControlPanel(android.content.ComponentName);
-    public abstract int[] getRunningUserIds();
-    public abstract java.util.List getServices(int, int);
-    public abstract android.app.ActivityManager$StackInfo getStackInfo(int, int);
-    public abstract java.lang.String getTagForIntentSender(android.content.IIntentSender, java.lang.String);
-    public abstract android.graphics.Rect getTaskBounds(int);
-    public abstract android.app.ActivityManager$TaskDescription getTaskDescription(int);
-    public abstract android.graphics.Bitmap getTaskDescriptionIcon(java.lang.String, int);
-    public abstract int getTaskForActivity(android.os.IBinder, boolean);
-    public abstract android.app.ActivityManager$TaskSnapshot getTaskSnapshot(int, boolean);
-    public abstract java.util.List getTasks(int);
-    public abstract int getUidForIntentSender(android.content.IIntentSender);
-    public abstract int getUidProcessState(int, java.lang.String);
-    public abstract android.os.IBinder getUriPermissionOwnerForActivity(android.os.IBinder);
-    public abstract void grantUriPermission(android.app.IApplicationThread, java.lang.String, android.net.Uri, int, int);
-    public abstract void grantUriPermissionFromOwner(android.os.IBinder, int, java.lang.String, android.net.Uri, int, int, int);
-    public abstract void handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$ParcelableCrashInfo);
-    public abstract void handleApplicationStrictModeViolation(android.os.IBinder, int, android.os.StrictMode$ViolationInfo);
-    public abstract boolean handleApplicationWtf(android.os.IBinder, java.lang.String, boolean, android.app.ApplicationErrorReport$ParcelableCrashInfo);
-    public abstract int handleIncomingUser(int, int, int, boolean, boolean, java.lang.String, java.lang.String);
-    public abstract void hang(android.os.IBinder, boolean);
-    public abstract long inputDispatchingTimedOut(int, boolean, java.lang.String);
-    public abstract boolean isAppForeground(int);
-    public abstract boolean isAppStartModeDisabled(int, java.lang.String);
-    public abstract boolean isAssistDataAllowedOnCurrentActivity();
-    public abstract boolean isBackgroundRestricted(java.lang.String);
-    public abstract boolean isImmersive(android.os.IBinder);
-    public abstract boolean isInLockTaskMode();
-    public abstract boolean isInMultiWindowMode(android.os.IBinder);
-    public abstract boolean isInPictureInPictureMode(android.os.IBinder);
-    public abstract boolean isIntentSenderAForegroundService(android.content.IIntentSender);
-    public abstract boolean isIntentSenderAnActivity(android.content.IIntentSender);
-    public abstract boolean isIntentSenderTargetedToPackage(android.content.IIntentSender);
-    public abstract boolean isRootVoiceInteraction(android.os.IBinder);
-    public abstract boolean isTopActivityImmersive();
-    public abstract boolean isTopOfTask(android.os.IBinder);
-    public abstract boolean isUidActive(int, java.lang.String);
-    public abstract boolean isUserAMonkey();
-    public abstract boolean isUserRunning(int, int);
-    public abstract boolean isVrModePackageEnabled(android.content.ComponentName);
-    public abstract void keyguardGoingAway(int);
-    public abstract void killAllBackgroundProcesses();
-    public abstract void killApplication(java.lang.String, int, int, java.lang.String);
-    public abstract void killApplicationProcess(java.lang.String, int);
-    public abstract void killBackgroundProcesses(java.lang.String, int);
-    public abstract void killPackageDependents(java.lang.String, int);
-    public abstract boolean killPids(int[], java.lang.String, boolean);
-    public abstract boolean killProcessesBelowForeground(java.lang.String);
-    public abstract void killUid(int, int, java.lang.String);
-    public abstract boolean launchAssistIntent(android.content.Intent, int, java.lang.String, int, android.os.Bundle);
-    public abstract void makePackageIdle(java.lang.String, int);
-    public abstract boolean moveActivityTaskToBack(android.os.IBinder, boolean);
-    public abstract void moveStackToDisplay(int, int);
-    public abstract void moveTaskBackwards(int);
-    public abstract void moveTaskToFront(int, int, android.os.Bundle);
-    public abstract void moveTaskToStack(int, int, boolean);
-    public abstract void moveTasksToFullscreenStack(int, boolean);
-    public abstract boolean moveTopActivityToPinnedStack(int, android.graphics.Rect);
-    public abstract boolean navigateUpTo(android.os.IBinder, android.content.Intent, int, android.content.Intent);
-    public abstract android.os.IBinder newUriPermissionOwner(java.lang.String);
-    public abstract void noteAlarmFinish(android.content.IIntentSender, android.os.WorkSource, int, java.lang.String);
-    public abstract void noteAlarmStart(android.content.IIntentSender, android.os.WorkSource, int, java.lang.String);
-    public abstract void noteWakeupAlarm(android.content.IIntentSender, android.os.WorkSource, int, java.lang.String, java.lang.String);
-    public abstract void notifyActivityDrawn(android.os.IBinder);
-    public abstract void notifyCleartextNetwork(int, byte[]);
-    public abstract void notifyEnterAnimationComplete(android.os.IBinder);
-    public abstract void notifyLaunchTaskBehindComplete(android.os.IBinder);
-    public abstract void notifyLockedProfile(int);
-    public abstract void notifyPinnedStackAnimationEnded();
-    public abstract void notifyPinnedStackAnimationStarted();
-    public abstract android.os.ParcelFileDescriptor openContentUri(java.lang.String);
-    public abstract void overridePendingTransition(android.os.IBinder, java.lang.String, int, int);
-    public abstract android.os.IBinder peekService(android.content.Intent, java.lang.String, java.lang.String);
-    public abstract void performIdleMaintenance();
-    public abstract void positionTaskInStack(int, int, int);
-    public abstract boolean profileControl(java.lang.String, int, boolean, android.app.ProfilerInfo, int);
-    public abstract void publishContentProviders(android.app.IApplicationThread, java.util.List);
-    public abstract void publishService(android.os.IBinder, android.content.Intent, android.os.IBinder);
-    public abstract boolean refContentProvider(android.os.IBinder, int, int);
-    public abstract void registerIntentSenderCancelListener(android.content.IIntentSender, com.android.internal.os.IResultReceiver);
-    public abstract void registerProcessObserver(android.app.IProcessObserver);
-    public abstract android.content.Intent registerReceiver(android.app.IApplicationThread, java.lang.String, android.content.IIntentReceiver, android.content.IntentFilter, java.lang.String, int, int);
-    public abstract void registerRemoteAnimationForNextActivityStart(java.lang.String, android.view.RemoteAnimationAdapter);
-    public abstract void registerRemoteAnimations(android.os.IBinder, android.view.RemoteAnimationDefinition);
-    public abstract void registerTaskStackListener(android.app.ITaskStackListener);
-    public abstract void registerUidObserver(android.app.IUidObserver, int, int, java.lang.String);
-    public abstract void registerUserSwitchObserver(android.app.IUserSwitchObserver, java.lang.String);
-    public abstract boolean releaseActivityInstance(android.os.IBinder);
-    public abstract void releasePersistableUriPermission(android.net.Uri, int, java.lang.String, int);
-    public abstract void releaseSomeActivities(android.app.IApplicationThread);
-    public abstract void removeContentProvider(android.os.IBinder, boolean);
-    public abstract void removeContentProviderExternal(java.lang.String, android.os.IBinder);
-    public abstract void removeStack(int);
-    public abstract void removeStacksInWindowingModes(int[]);
-    public abstract void removeStacksWithActivityTypes(int[]);
-    public abstract boolean removeTask(int);
-    public abstract void reportActivityFullyDrawn(android.os.IBinder, boolean);
-    public abstract void reportAssistContextExtras(android.os.IBinder, android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent, android.net.Uri);
-    public abstract void reportSizeConfigurations(android.os.IBinder, int[], int[], int[]);
-    public abstract boolean requestAssistContextExtras(int, android.app.IAssistDataReceiver, android.os.Bundle, android.os.IBinder, boolean, boolean);
-    public abstract boolean requestAutofillData(android.app.IAssistDataReceiver, android.os.Bundle, android.os.IBinder, int);
-    public abstract void requestBugReport(int);
-    public abstract void requestTelephonyBugReport(java.lang.String, java.lang.String);
-    public abstract void requestWifiBugReport(java.lang.String, java.lang.String);
-    public abstract void resizeDockedStack(android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect);
-    public abstract void resizePinnedStack(android.graphics.Rect, android.graphics.Rect);
-    public abstract void resizeStack(int, android.graphics.Rect, boolean, boolean, boolean, int);
-    public abstract void resizeTask(int, android.graphics.Rect, int);
-    public abstract void restart();
-    public abstract int restartUserInBackground(int);
-    public abstract void resumeAppSwitches();
-    public abstract void revokeUriPermission(android.app.IApplicationThread, java.lang.String, android.net.Uri, int, int);
-    public abstract void revokeUriPermissionFromOwner(android.os.IBinder, android.net.Uri, int, int);
-    public abstract void scheduleApplicationInfoChanged(java.util.List, int);
-    public abstract void sendIdleJobTrigger();
-    public abstract int sendIntentSender(android.content.IIntentSender, android.os.IBinder, int, android.content.Intent, java.lang.String, android.content.IIntentReceiver, java.lang.String, android.os.Bundle);
-    public abstract void serviceDoneExecuting(android.os.IBinder, int, int, int);
-    public abstract void setActivityController(android.app.IActivityController, boolean);
-    public abstract void setAgentApp(java.lang.String, java.lang.String);
-    public abstract void setAlwaysFinish(boolean);
-    public abstract void setDebugApp(java.lang.String, boolean, boolean);
-    public abstract void setDisablePreviewScreenshots(android.os.IBinder, boolean);
-    public abstract void setDumpHeapDebugLimit(java.lang.String, int, long, java.lang.String);
-    public abstract void setFocusedStack(int);
-    public abstract void setFocusedTask(int);
-    public abstract void setFrontActivityScreenCompatMode(int);
-    public abstract void setHasTopUi(boolean);
-    public abstract void setImmersive(android.os.IBinder, boolean);
-    public abstract void setLockScreenShown(boolean, boolean, int);
-    public abstract void setPackageAskScreenCompat(java.lang.String, boolean);
-    public abstract void setPackageScreenCompatMode(java.lang.String, int);
-    public abstract void setPersistentVrThread(int);
-    public abstract void setPictureInPictureParams(android.os.IBinder, android.app.PictureInPictureParams);
-    public abstract void setProcessImportant(android.os.IBinder, int, boolean, java.lang.String);
-    public abstract void setProcessLimit(int);
-    public abstract boolean setProcessMemoryTrimLevel(java.lang.String, int, int);
-    public abstract void setRenderThread(int);
-    public abstract void setRequestedOrientation(android.os.IBinder, int);
-    public abstract void setServiceForeground(android.content.ComponentName, android.os.IBinder, int, android.app.Notification, int);
-    public abstract void setShowWhenLocked(android.os.IBinder, boolean);
-    public abstract void setSplitScreenResizing(boolean);
-    public abstract void setTaskDescription(android.os.IBinder, android.app.ActivityManager$TaskDescription);
-    public abstract void setTaskResizeable(int, int);
-    public abstract void setTaskWindowingMode(int, int, boolean);
-    public abstract boolean setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean);
-    public abstract void setTurnScreenOn(android.os.IBinder, boolean);
-    public abstract void setUserIsMonkey(boolean);
-    public abstract void setVoiceKeepAwake(android.service.voice.IVoiceInteractionSession, boolean);
-    public abstract int setVrMode(android.os.IBinder, boolean, android.content.ComponentName);
-    public abstract void setVrThread(int);
-    public abstract boolean shouldUpRecreateTask(android.os.IBinder, java.lang.String);
-    public abstract boolean showAssistFromActivity(android.os.IBinder, android.os.Bundle);
-    public abstract void showBootMessage(java.lang.CharSequence, boolean);
-    public abstract void showLockTaskEscapeMessage(android.os.IBinder);
-    public abstract void showWaitingForDebugger(android.app.IApplicationThread, boolean);
-    public abstract boolean shutdown(int);
-    public abstract void signalPersistentProcesses(int);
-    public abstract int startActivities(android.app.IApplicationThread, java.lang.String, android.content.Intent[], java.lang.String[], android.os.IBinder, android.os.Bundle, int);
-    public abstract int startActivity(android.app.IApplicationThread, java.lang.String, android.content.Intent, java.lang.String, android.os.IBinder, java.lang.String, int, int, android.app.ProfilerInfo, android.os.Bundle);
-    public abstract android.app.WaitResult startActivityAndWait(android.app.IApplicationThread, java.lang.String, android.content.Intent, java.lang.String, android.os.IBinder, java.lang.String, int, int, android.app.ProfilerInfo, android.os.Bundle, int);
-    public abstract int startActivityAsCaller(android.app.IApplicationThread, java.lang.String, android.content.Intent, java.lang.String, android.os.IBinder, java.lang.String, int, int, android.app.ProfilerInfo, android.os.Bundle, boolean, int);
-    public abstract int startActivityAsUser(android.app.IApplicationThread, java.lang.String, android.content.Intent, java.lang.String, android.os.IBinder, java.lang.String, int, int, android.app.ProfilerInfo, android.os.Bundle, int);
-    public abstract int startActivityFromRecents(int, android.os.Bundle);
-    public abstract int startActivityIntentSender(android.app.IApplicationThread, android.content.IIntentSender, android.os.IBinder, android.content.Intent, java.lang.String, android.os.IBinder, java.lang.String, int, int, int, android.os.Bundle);
-    public abstract int startActivityWithConfig(android.app.IApplicationThread, java.lang.String, android.content.Intent, java.lang.String, android.os.IBinder, java.lang.String, int, int, android.content.res.Configuration, android.os.Bundle, int);
-    public abstract int startAssistantActivity(java.lang.String, int, int, android.content.Intent, java.lang.String, android.os.Bundle, int);
-    public abstract boolean startBinderTracking();
-    public abstract void startConfirmDeviceCredentialIntent(android.content.Intent, android.os.Bundle);
-    public abstract void startInPlaceAnimationOnFrontMostApplication(android.os.Bundle);
-    public abstract boolean startInstrumentation(android.content.ComponentName, java.lang.String, int, android.os.Bundle, android.app.IInstrumentationWatcher, android.app.IUiAutomationConnection, int, java.lang.String);
-    public abstract void startLocalVoiceInteraction(android.os.IBinder, android.os.Bundle);
-    public abstract void startLockTaskModeByToken(android.os.IBinder);
-    public abstract boolean startNextMatchingActivity(android.os.IBinder, android.content.Intent, android.os.Bundle);
-    public abstract void startRecentsActivity(android.content.Intent, android.app.IAssistDataReceiver, android.view.IRecentsAnimationRunner);
-    public abstract android.content.ComponentName startService(android.app.IApplicationThread, android.content.Intent, java.lang.String, boolean, java.lang.String, int);
-    public abstract void startSystemLockTaskMode(int);
-    public abstract boolean startUserInBackground(int);
-    public abstract boolean startUserInBackgroundWithListener(int, android.os.IProgressListener);
-    public abstract int startVoiceActivity(java.lang.String, int, int, android.content.Intent, java.lang.String, android.service.voice.IVoiceInteractionSession, com.android.internal.app.IVoiceInteractor, int, android.app.ProfilerInfo, android.os.Bundle, int);
-    public abstract void stopAppSwitches();
-    public abstract boolean stopBinderTrackingAndDump(android.os.ParcelFileDescriptor);
-    public abstract void stopLocalVoiceInteraction(android.os.IBinder);
-    public abstract void stopLockTaskModeByToken(android.os.IBinder);
-    public abstract int stopService(android.app.IApplicationThread, android.content.Intent, java.lang.String, int);
-    public abstract boolean stopServiceToken(android.content.ComponentName, android.os.IBinder, int);
-    public abstract void stopSystemLockTaskMode();
-    public abstract int stopUser(int, boolean, android.app.IStopUserCallback);
-    public abstract boolean supportsLocalVoiceInteraction();
-    public abstract void suppressResizeConfigChanges(boolean);
-    public abstract boolean switchUser(int);
-    public abstract void takePersistableUriPermission(android.net.Uri, int, java.lang.String, int);
-    public abstract void unbindBackupAgent(android.content.pm.ApplicationInfo);
-    public abstract void unbindFinished(android.os.IBinder, android.content.Intent, boolean);
-    public abstract boolean unbindService(android.app.IServiceConnection);
-    public abstract void unbroadcastIntent(android.app.IApplicationThread, android.content.Intent, int);
-    public abstract void unhandledBack();
-    public abstract boolean unlockUser(int, byte[], byte[], android.os.IProgressListener);
-    public abstract void unregisterIntentSenderCancelListener(android.content.IIntentSender, com.android.internal.os.IResultReceiver);
-    public abstract void unregisterProcessObserver(android.app.IProcessObserver);
-    public abstract void unregisterReceiver(android.content.IIntentReceiver);
-    public abstract void unregisterTaskStackListener(android.app.ITaskStackListener);
-    public abstract void unregisterUidObserver(android.app.IUidObserver);
-    public abstract void unregisterUserSwitchObserver(android.app.IUserSwitchObserver);
-    public abstract void unstableProviderDied(android.os.IBinder);
-    public abstract boolean updateConfiguration(android.content.res.Configuration);
-    public abstract void updateDeviceOwner(java.lang.String);
-    public abstract boolean updateDisplayOverrideConfiguration(android.content.res.Configuration, int);
-    public abstract void updateLockTaskFeatures(int, int);
-    public abstract void updateLockTaskPackages(int, java.lang.String[]);
-    public abstract void updatePersistentConfiguration(android.content.res.Configuration);
-    public abstract void waitForNetworkStateUpdate(long);
-    public abstract boolean willActivityBeVisible(android.os.IBinder);
-
-
-}
-
--keep class android.app.IAppTask {
-
-    public abstract void finishAndRemoveTask();
-    public abstract android.app.ActivityManager$RecentTaskInfo getTaskInfo();
-    public abstract void moveToFront();
-    public abstract void setExcludeFromRecents(boolean);
-    public abstract int startActivity(android.os.IBinder, java.lang.String, android.content.Intent, java.lang.String, android.os.Bundle);
-
-
-}
-
--keep class android.app.IApplicationThread {
-
-    public abstract void attachAgent(java.lang.String);
-    public abstract void bindApplication(java.lang.String, android.content.pm.ApplicationInfo, java.util.List, android.content.ComponentName, android.app.ProfilerInfo, android.os.Bundle, android.app.IInstrumentationWatcher, android.app.IUiAutomationConnection, int, boolean, boolean, boolean, boolean, android.content.res.Configuration, android.content.res.CompatibilityInfo, java.util.Map, android.os.Bundle, java.lang.String, boolean);
-    public abstract void clearDnsCache();
-    public abstract void dispatchPackageBroadcast(int, java.lang.String[]);
-    public abstract void dumpActivity(android.os.ParcelFileDescriptor, android.os.IBinder, java.lang.String, java.lang.String[]);
-    public abstract void dumpDbInfo(android.os.ParcelFileDescriptor, java.lang.String[]);
-    public abstract void dumpGfxInfo(android.os.ParcelFileDescriptor, java.lang.String[]);
-    public abstract void dumpHeap(boolean, boolean, boolean, java.lang.String, android.os.ParcelFileDescriptor);
-    public abstract void dumpMemInfo(android.os.ParcelFileDescriptor, android.os.Debug$MemoryInfo, boolean, boolean, boolean, boolean, boolean, java.lang.String[]);
-    public abstract void dumpMemInfoProto(android.os.ParcelFileDescriptor, android.os.Debug$MemoryInfo, boolean, boolean, boolean, boolean, java.lang.String[]);
-    public abstract void dumpProvider(android.os.ParcelFileDescriptor, android.os.IBinder, java.lang.String[]);
-    public abstract void dumpService(android.os.ParcelFileDescriptor, android.os.IBinder, java.lang.String[]);
-    public abstract void handleTrustStorageUpdate();
-    public abstract void notifyCleartextNetwork(byte[]);
-    public abstract void processInBackground();
-    public abstract void profilerControl(boolean, android.app.ProfilerInfo, int);
-    public abstract void requestAssistContextExtras(android.os.IBinder, android.os.IBinder, int, int, int);
-    public abstract void runIsolatedEntryPoint(java.lang.String, java.lang.String[]);
-    public abstract void scheduleApplicationInfoChanged(android.content.pm.ApplicationInfo);
-    public abstract void scheduleBindService(android.os.IBinder, android.content.Intent, boolean, int);
-    public abstract void scheduleCrash(java.lang.String);
-    public abstract void scheduleCreateBackupAgent(android.content.pm.ApplicationInfo, android.content.res.CompatibilityInfo, int);
-    public abstract void scheduleCreateService(android.os.IBinder, android.content.pm.ServiceInfo, android.content.res.CompatibilityInfo, int);
-    public abstract void scheduleDestroyBackupAgent(android.content.pm.ApplicationInfo, android.content.res.CompatibilityInfo);
-    public abstract void scheduleEnterAnimationComplete(android.os.IBinder);
-    public abstract void scheduleExit();
-    public abstract void scheduleInstallProvider(android.content.pm.ProviderInfo);
-    public abstract void scheduleLocalVoiceInteractionStarted(android.os.IBinder, com.android.internal.app.IVoiceInteractor);
-    public abstract void scheduleLowMemory();
-    public abstract void scheduleOnNewActivityOptions(android.os.IBinder, android.os.Bundle);
-    public abstract void scheduleReceiver(android.content.Intent, android.content.pm.ActivityInfo, android.content.res.CompatibilityInfo, int, java.lang.String, android.os.Bundle, boolean, int, int);
-    public abstract void scheduleRegisteredReceiver(android.content.IIntentReceiver, android.content.Intent, int, java.lang.String, android.os.Bundle, boolean, boolean, int, int);
-    public abstract void scheduleServiceArgs(android.os.IBinder, android.content.pm.ParceledListSlice);
-    public abstract void scheduleSleeping(android.os.IBinder, boolean);
-    public abstract void scheduleStopService(android.os.IBinder);
-    public abstract void scheduleSuicide();
-    public abstract void scheduleTransaction(android.app.servertransaction.ClientTransaction);
-    public abstract void scheduleTranslucentConversionComplete(android.os.IBinder, boolean);
-    public abstract void scheduleTrimMemory(int);
-    public abstract void scheduleUnbindService(android.os.IBinder, android.content.Intent);
-    public abstract void setCoreSettings(android.os.Bundle);
-    public abstract void setHttpProxy(java.lang.String, java.lang.String, java.lang.String, android.net.Uri);
-    public abstract void setNetworkBlockSeq(long);
-    public abstract void setProcessState(int);
-    public abstract void setSchedulingGroup(int);
-    public abstract void startBinderTracking();
-    public abstract void stopBinderTrackingAndDump(android.os.ParcelFileDescriptor);
-    public abstract void unstableProviderDied(android.os.IBinder);
-    public abstract void updatePackageCompatibilityInfo(java.lang.String, android.content.res.CompatibilityInfo);
-    public abstract void updateTimePrefs(int);
-    public abstract void updateTimeZone();
-
-
-}
-
--keep class android.app.IApplicationThread$Stub {
-    <init>();
-
-    public android.os.IBinder asBinder();
-    public static android.app.IApplicationThread asInterface(android.os.IBinder);
-    public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int);
-
-
-}
-
--keep class android.app.IAssistDataReceiver {
-
-    public abstract void onHandleAssistData(android.os.Bundle);
-    public abstract void onHandleAssistScreenshot(android.graphics.Bitmap);
-
-
-}
-
--keep class android.app.IInstrumentationWatcher {
-
-    public abstract void instrumentationFinished(android.content.ComponentName, int, android.os.Bundle);
-    public abstract void instrumentationStatus(android.content.ComponentName, int, android.os.Bundle);
-
-
-}
-
--keep class android.app.IProcessObserver {
-
-    public abstract void onForegroundActivitiesChanged(int, int, boolean);
-    public abstract void onProcessDied(int, int);
-
-
-}
-
--keep class android.app.IServiceConnection {
-
-    public abstract void connected(android.content.ComponentName, android.os.IBinder, boolean);
-
-
-}
-
--keep class android.app.IStopUserCallback {
-
-    public abstract void userStopAborted(int);
-    public abstract void userStopped(int);
-
-
-}
-
--keep class android.app.ITaskStackListener {
-
-    public abstract void onActivityDismissingDockedStack();
-    public abstract void onActivityForcedResizable(java.lang.String, int, int);
-    public abstract void onActivityLaunchOnSecondaryDisplayFailed();
-    public abstract void onActivityPinned(java.lang.String, int, int, int);
-    public abstract void onActivityRequestedOrientationChanged(int, int);
-    public abstract void onActivityUnpinned();
-    public abstract void onPinnedActivityRestartAttempt(boolean);
-    public abstract void onPinnedStackAnimationEnded();
-    public abstract void onPinnedStackAnimationStarted();
-    public abstract void onTaskCreated(int, android.content.ComponentName);
-    public abstract void onTaskDescriptionChanged(int, android.app.ActivityManager$TaskDescription);
-    public abstract void onTaskMovedToFront(int);
-    public abstract void onTaskProfileLocked(int, int);
-    public abstract void onTaskRemovalStarted(int);
-    public abstract void onTaskRemoved(int);
-    public abstract void onTaskSnapshotChanged(int, android.app.ActivityManager$TaskSnapshot);
-    public abstract void onTaskStackChanged();
-
-
-    public static int FORCED_RESIZEABLE_REASON_SECONDARY_DISPLAY;
-    public static int FORCED_RESIZEABLE_REASON_SPLIT_SCREEN;
-}
-
--keep class android.app.IUiAutomationConnection {
-
-    public abstract void clearWindowAnimationFrameStats();
-    public abstract boolean clearWindowContentFrameStats(int);
-    public abstract void connect(android.accessibilityservice.IAccessibilityServiceClient, int);
-    public abstract void disconnect();
-    public abstract void executeShellCommand(java.lang.String, android.os.ParcelFileDescriptor, android.os.ParcelFileDescriptor);
-    public abstract android.view.WindowAnimationFrameStats getWindowAnimationFrameStats();
-    public abstract android.view.WindowContentFrameStats getWindowContentFrameStats(int);
-    public abstract void grantRuntimePermission(java.lang.String, java.lang.String, int);
-    public abstract boolean injectInputEvent(android.view.InputEvent, boolean);
-    public abstract void revokeRuntimePermission(java.lang.String, java.lang.String, int);
-    public abstract boolean setRotation(int);
-    public abstract void shutdown();
-    public abstract android.graphics.Bitmap takeScreenshot(android.graphics.Rect, int);
-
-
-}
-
--keep class android.app.IUidObserver {
-
-    public abstract void onUidActive(int);
-    public abstract void onUidCachedChanged(int, boolean);
-    public abstract void onUidGone(int, boolean);
-    public abstract void onUidIdle(int, boolean);
-    public abstract void onUidStateChanged(int, int, long);
-
-
-}
-
--keep class android.app.IUserSwitchObserver {
-
-    public abstract void onForegroundProfileSwitch(int);
-    public abstract void onLockedBootComplete(int);
-    public abstract void onUserSwitchComplete(int);
-    public abstract void onUserSwitching(int, android.os.IRemoteCallback);
-
-
-}
-
--keep class android.app.Instrumentation {
-    <init>();
-
-    public android.os.TestLooperManager acquireLooperManager(android.os.Looper);
-    public void addMonitor(android.app.Instrumentation$ActivityMonitor);
-    public android.app.Instrumentation$ActivityMonitor addMonitor(android.content.IntentFilter, android.app.Instrumentation$ActivityResult, boolean);
-    public android.app.Instrumentation$ActivityMonitor addMonitor(java.lang.String, android.app.Instrumentation$ActivityResult, boolean);
-    public void addResults(android.os.Bundle);
-    public void callActivityOnCreate(android.app.Activity, android.os.Bundle);
-    public void callActivityOnCreate(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
-    public void callActivityOnDestroy(android.app.Activity);
-    public void callActivityOnNewIntent(android.app.Activity, android.content.Intent);
-    public void callActivityOnNewIntent(android.app.Activity, com.android.internal.content.ReferrerIntent);
-    public void callActivityOnPause(android.app.Activity);
-    public void callActivityOnPostCreate(android.app.Activity, android.os.Bundle);
-    public void callActivityOnPostCreate(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
-    public void callActivityOnRestart(android.app.Activity);
-    public void callActivityOnRestoreInstanceState(android.app.Activity, android.os.Bundle);
-    public void callActivityOnRestoreInstanceState(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
-    public void callActivityOnResume(android.app.Activity);
-    public void callActivityOnSaveInstanceState(android.app.Activity, android.os.Bundle);
-    public void callActivityOnSaveInstanceState(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
-    public void callActivityOnStart(android.app.Activity);
-    public void callActivityOnStop(android.app.Activity);
-    public void callActivityOnUserLeaving(android.app.Activity);
-    public void callApplicationOnCreate(android.app.Application);
-    public boolean checkMonitorHit(android.app.Instrumentation$ActivityMonitor, int);
-    public static void checkStartActivityResult(int, java.lang.Object);
-    public void endPerformanceSnapshot();
-    public void execStartActivities(android.content.Context, android.os.IBinder, android.os.IBinder, android.app.Activity, android.content.Intent[], android.os.Bundle);
-    public int execStartActivitiesAsUser(android.content.Context, android.os.IBinder, android.os.IBinder, android.app.Activity, android.content.Intent[], android.os.Bundle, int);
-    public android.app.Instrumentation$ActivityResult execStartActivity(android.content.Context, android.os.IBinder, android.os.IBinder, android.app.Activity, android.content.Intent, int, android.os.Bundle);
-    public android.app.Instrumentation$ActivityResult execStartActivity(android.content.Context, android.os.IBinder, android.os.IBinder, java.lang.String, android.content.Intent, int, android.os.Bundle);
-    public android.app.Instrumentation$ActivityResult execStartActivity(android.content.Context, android.os.IBinder, android.os.IBinder, java.lang.String, android.content.Intent, int, android.os.Bundle, android.os.UserHandle);
-    public android.app.Instrumentation$ActivityResult execStartActivityAsCaller(android.content.Context, android.os.IBinder, android.os.IBinder, android.app.Activity, android.content.Intent, int, android.os.Bundle, boolean, int);
-    public void execStartActivityFromAppTask(android.content.Context, android.os.IBinder, android.app.IAppTask, android.content.Intent, android.os.Bundle);
-    public void finish(int, android.os.Bundle);
-    public android.os.Bundle getAllocCounts();
-    public android.os.Bundle getBinderCounts();
-    public android.content.ComponentName getComponentName();
-    public android.content.Context getContext();
-    public java.lang.String getProcessName();
-    public android.content.Context getTargetContext();
-    public android.app.UiAutomation getUiAutomation();
-    public android.app.UiAutomation getUiAutomation(int);
-    public boolean invokeContextMenuAction(android.app.Activity, int, int);
-    public boolean invokeMenuActionSync(android.app.Activity, int, int);
-    public boolean isProfiling();
-    public android.app.Activity newActivity(java.lang.Class, android.content.Context, android.os.IBinder, android.app.Application, android.content.Intent, android.content.pm.ActivityInfo, java.lang.CharSequence, android.app.Activity, java.lang.String, java.lang.Object);
-    public android.app.Activity newActivity(java.lang.ClassLoader, java.lang.String, android.content.Intent);
-    public android.app.Application newApplication(java.lang.ClassLoader, java.lang.String, android.content.Context);
-    public static android.app.Application newApplication(java.lang.Class, android.content.Context);
-    public void onCreate(android.os.Bundle);
-    public void onDestroy();
-    public boolean onException(java.lang.Object, java.lang.Throwable);
-    public void onStart();
-    public void removeMonitor(android.app.Instrumentation$ActivityMonitor);
-    public void runOnMainSync(java.lang.Runnable);
-    public void sendCharacterSync(int);
-    public void sendKeyDownUpSync(int);
-    public void sendKeySync(android.view.KeyEvent);
-    public void sendPointerSync(android.view.MotionEvent);
-    public void sendStatus(int, android.os.Bundle);
-    public void sendStringSync(java.lang.String);
-    public void sendTrackballEventSync(android.view.MotionEvent);
-    public void setAutomaticPerformanceSnapshots();
-    public void setInTouchMode(boolean);
-    public void start();
-    public android.app.Activity startActivitySync(android.content.Intent);
-    public android.app.Activity startActivitySync(android.content.Intent, android.os.Bundle);
-    public void startAllocCounting();
-    public void startPerformanceSnapshot();
-    public void startProfiling();
-    public void stopAllocCounting();
-    public void stopProfiling();
-    public void waitForIdle(java.lang.Runnable);
-    public void waitForIdleSync();
-    public android.app.Activity waitForMonitor(android.app.Instrumentation$ActivityMonitor);
-    public android.app.Activity waitForMonitorWithTimeout(android.app.Instrumentation$ActivityMonitor, long);
-
-
-    public static java.lang.String REPORT_KEY_IDENTIFIER;
-    public static java.lang.String REPORT_KEY_STREAMRESULT;
-}
-
--keep class android.app.Instrumentation$ActivityMonitor {
-    <init>(android.content.IntentFilter, android.app.Instrumentation$ActivityResult, boolean);
-    <init>(java.lang.String, android.app.Instrumentation$ActivityResult, boolean);
-    <init>();
-
-    public android.content.IntentFilter getFilter();
-    public int getHits();
-    public android.app.Activity getLastActivity();
-    public android.app.Instrumentation$ActivityResult getResult();
-    public boolean isBlocking();
-    public android.app.Instrumentation$ActivityResult onStartActivity(android.content.Intent);
-    public android.app.Activity waitForActivity();
-    public android.app.Activity waitForActivityWithTimeout(long);
-
-
-}
-
--keep class android.app.Instrumentation$ActivityResult {
-    <init>(int, android.content.Intent);
-
-    public int getResultCode();
-    public android.content.Intent getResultData();
-
-
-}
-
--keep class android.app.LoadedApk {
-    <init>(android.app.ActivityThread, android.content.pm.ApplicationInfo, android.content.res.CompatibilityInfo, java.lang.ClassLoader, boolean, boolean, boolean);
-
-    public android.content.IIntentReceiver forgetReceiverDispatcher(android.content.Context, android.content.BroadcastReceiver);
-    public android.app.IServiceConnection forgetServiceDispatcher(android.content.Context, android.content.ServiceConnection);
-    public java.lang.String getAppDir();
-    public android.app.AppComponentFactory getAppFactory();
-    public android.content.pm.ApplicationInfo getApplicationInfo();
-    public android.content.res.AssetManager getAssets();
-    public java.lang.ClassLoader getClassLoader();
-    public android.content.res.CompatibilityInfo getCompatibilityInfo();
-    public java.io.File getCredentialProtectedDataDirFile();
-    public java.lang.String getDataDir();
-    public java.io.File getDataDirFile();
-    public java.io.File getDeviceProtectedDataDirFile();
-    public java.lang.String getLibDir();
-    public java.lang.String[] getOverlayDirs();
-    public java.lang.String getPackageName();
-    public android.content.IIntentReceiver getReceiverDispatcher(android.content.BroadcastReceiver, android.content.Context, android.os.Handler, android.app.Instrumentation, boolean);
-    public java.lang.String getResDir();
-    public android.content.res.Resources getResources();
-    public android.app.IServiceConnection getServiceDispatcher(android.content.ServiceConnection, android.content.Context, android.os.Handler, int);
-    public java.lang.String[] getSplitAppDirs();
-    public java.lang.String[] getSplitResDirs();
-    public int getTargetSdkVersion();
-    public boolean isSecurityViolation();
-    public android.app.Application makeApplication(boolean, android.app.Instrumentation);
-    public static void makePaths(android.app.ActivityThread, android.content.pm.ApplicationInfo, java.util.List);
-    public static void makePaths(android.app.ActivityThread, boolean, android.content.pm.ApplicationInfo, java.util.List, java.util.List);
-    public void removeContextRegistrations(android.content.Context, java.lang.String, java.lang.String);
-    public void setCompatibilityInfo(android.content.res.CompatibilityInfo);
-    public void updateApplicationInfo(android.content.pm.ApplicationInfo, java.util.List);
-
-
-}
-
--keep class android.app.LoaderManager {
-    <init>();
-
-    public abstract void destroyLoader(int);
-    public abstract void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public static void enableDebugLogging(boolean);
-    public android.app.FragmentHostCallback getFragmentHostCallback();
-    public abstract android.content.Loader getLoader(int);
-    public abstract android.content.Loader initLoader(int, android.os.Bundle, android.app.LoaderManager$LoaderCallbacks);
-    public abstract android.content.Loader restartLoader(int, android.os.Bundle, android.app.LoaderManager$LoaderCallbacks);
-
-
-}
-
--keep class android.app.LoaderManager$LoaderCallbacks {
-
-    public abstract android.content.Loader onCreateLoader(int, android.os.Bundle);
-    public abstract void onLoadFinished(android.content.Loader, java.lang.Object);
-    public abstract void onLoaderReset(android.content.Loader);
-
-
-}
-
--keep class android.app.Notification {
-    <init>();
-    <init>(android.content.Context, int, java.lang.CharSequence, long, java.lang.CharSequence, java.lang.CharSequence, android.content.Intent);
-    <init>(int, java.lang.CharSequence, long);
-    <init>(android.os.Parcel);
-
-    public static void addFieldsFromContext(android.content.Context, android.app.Notification);
-    public static void addFieldsFromContext(android.content.pm.ApplicationInfo, android.app.Notification);
-    public static boolean areActionsVisiblyDifferent(android.app.Notification, android.app.Notification);
-    public static boolean areRemoteViewsChanged(android.app.Notification$Builder, android.app.Notification$Builder);
-    public static boolean areStyledNotificationsVisiblyDifferent(android.app.Notification$Builder, android.app.Notification$Builder);
-    public android.app.Notification clone();
-    public java.lang.Object clone();
-    public void cloneInto(android.app.Notification, boolean);
-    public int describeContents();
-    public int getBadgeIconType();
-    public java.lang.String getChannel();
-    public java.lang.String getChannelId();
-    public java.lang.String getGroup();
-    public int getGroupAlertBehavior();
-    public android.graphics.drawable.Icon getLargeIcon();
-    public java.lang.Class getNotificationStyle();
-    public static java.lang.Class getNotificationStyleClass(java.lang.String);
-    public java.lang.CharSequence getSettingsText();
-    public java.lang.String getShortcutId();
-    public android.graphics.drawable.Icon getSmallIcon();
-    public java.lang.String getSortKey();
-    public long getTimeout();
-    public long getTimeoutAfter();
-    public boolean hasCompletedProgress();
-    public boolean hasMediaSession();
-    public boolean isColorized();
-    public boolean isColorizedMedia();
-    public boolean isGroupChild();
-    public boolean isGroupSummary();
-    public boolean isMediaNotification();
-    public void lightenPayload();
-    public static java.lang.String priorityToString(int);
-    public static java.lang.CharSequence safeCharSequence(java.lang.CharSequence);
-    public void setLatestEventInfo(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent);
-    public void setSmallIcon(android.graphics.drawable.Icon);
-    public boolean showsChronometer();
-    public boolean showsTime();
-    public boolean suppressAlertingDueToGrouping();
-    public java.lang.String toString();
-    public static java.lang.String visibilityToString(int);
-    public void visitUris(java.util.function.Consumer);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.media.AudioAttributes AUDIO_ATTRIBUTES_DEFAULT;
-    public static int BADGE_ICON_LARGE;
-    public static int BADGE_ICON_NONE;
-    public static int BADGE_ICON_SMALL;
-    public static java.lang.String CATEGORY_ALARM;
-    public static java.lang.String CATEGORY_CALL;
-    public static java.lang.String CATEGORY_CAR_EMERGENCY;
-    public static java.lang.String CATEGORY_CAR_INFORMATION;
-    public static java.lang.String CATEGORY_CAR_WARNING;
-    public static java.lang.String CATEGORY_EMAIL;
-    public static java.lang.String CATEGORY_ERROR;
-    public static java.lang.String CATEGORY_EVENT;
-    public static java.lang.String CATEGORY_MESSAGE;
-    public static java.lang.String CATEGORY_NAVIGATION;
-    public static java.lang.String CATEGORY_PROGRESS;
-    public static java.lang.String CATEGORY_PROMO;
-    public static java.lang.String CATEGORY_RECOMMENDATION;
-    public static java.lang.String CATEGORY_REMINDER;
-    public static java.lang.String CATEGORY_SERVICE;
-    public static java.lang.String CATEGORY_SOCIAL;
-    public static java.lang.String CATEGORY_STATUS;
-    public static java.lang.String CATEGORY_SYSTEM;
-    public static java.lang.String CATEGORY_TRANSPORT;
-    public static int COLOR_DEFAULT;
-    public static int COLOR_INVALID;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int DEFAULT_ALL;
-    public static int DEFAULT_LIGHTS;
-    public static int DEFAULT_SOUND;
-    public static int DEFAULT_VIBRATE;
-    public static java.lang.String EXTRA_ALLOW_DURING_SETUP;
-    public static java.lang.String EXTRA_AUDIO_CONTENTS_URI;
-    public static java.lang.String EXTRA_BACKGROUND_IMAGE_URI;
-    public static java.lang.String EXTRA_BIG_TEXT;
-    public static java.lang.String EXTRA_BUILDER_APPLICATION_INFO;
-    public static java.lang.String EXTRA_CHANNEL_GROUP_ID;
-    public static java.lang.String EXTRA_CHANNEL_ID;
-    public static java.lang.String EXTRA_CHRONOMETER_COUNT_DOWN;
-    public static java.lang.String EXTRA_COLORIZED;
-    public static java.lang.String EXTRA_COMPACT_ACTIONS;
-    public static java.lang.String EXTRA_CONTAINS_CUSTOM_VIEW;
-    public static java.lang.String EXTRA_CONVERSATION_TITLE;
-    public static java.lang.String EXTRA_FOREGROUND_APPS;
-    public static java.lang.String EXTRA_HIDE_SMART_REPLIES;
-    public static java.lang.String EXTRA_HISTORIC_MESSAGES;
-    public static java.lang.String EXTRA_INFO_TEXT;
-    public static java.lang.String EXTRA_IS_GROUP_CONVERSATION;
-    public static java.lang.String EXTRA_LARGE_ICON;
-    public static java.lang.String EXTRA_LARGE_ICON_BIG;
-    public static java.lang.String EXTRA_MEDIA_SESSION;
-    public static java.lang.String EXTRA_MESSAGES;
-    public static java.lang.String EXTRA_MESSAGING_PERSON;
-    public static java.lang.String EXTRA_NOTIFICATION_ID;
-    public static java.lang.String EXTRA_NOTIFICATION_TAG;
-    public static java.lang.String EXTRA_PEOPLE;
-    public static java.lang.String EXTRA_PEOPLE_LIST;
-    public static java.lang.String EXTRA_PICTURE;
-    public static java.lang.String EXTRA_PROGRESS;
-    public static java.lang.String EXTRA_PROGRESS_INDETERMINATE;
-    public static java.lang.String EXTRA_PROGRESS_MAX;
-    public static java.lang.String EXTRA_REDUCED_IMAGES;
-    public static java.lang.String EXTRA_REMOTE_INPUT_DRAFT;
-    public static java.lang.String EXTRA_REMOTE_INPUT_HISTORY;
-    public static java.lang.String EXTRA_SELF_DISPLAY_NAME;
-    public static java.lang.String EXTRA_SHOW_CHRONOMETER;
-    public static java.lang.String EXTRA_SHOW_REMOTE_INPUT_SPINNER;
-    public static java.lang.String EXTRA_SHOW_WHEN;
-    public static java.lang.String EXTRA_SMALL_ICON;
-    public static java.lang.String EXTRA_SUBSTITUTE_APP_NAME;
-    public static java.lang.String EXTRA_SUB_TEXT;
-    public static java.lang.String EXTRA_SUMMARY_TEXT;
-    public static java.lang.String EXTRA_TEMPLATE;
-    public static java.lang.String EXTRA_TEXT;
-    public static java.lang.String EXTRA_TEXT_LINES;
-    public static java.lang.String EXTRA_TITLE;
-    public static java.lang.String EXTRA_TITLE_BIG;
-    public static int FLAG_AUTOGROUP_SUMMARY;
-    public static int FLAG_AUTO_CANCEL;
-    public static int FLAG_CAN_COLORIZE;
-    public static int FLAG_FOREGROUND_SERVICE;
-    public static int FLAG_GROUP_SUMMARY;
-    public static int FLAG_HIGH_PRIORITY;
-    public static int FLAG_INSISTENT;
-    public static int FLAG_LOCAL_ONLY;
-    public static int FLAG_NO_CLEAR;
-    public static int FLAG_ONGOING_EVENT;
-    public static int FLAG_ONLY_ALERT_ONCE;
-    public static int FLAG_SHOW_LIGHTS;
-    public static int GROUP_ALERT_ALL;
-    public static int GROUP_ALERT_CHILDREN;
-    public static int GROUP_ALERT_SUMMARY;
-    public static java.lang.String INTENT_CATEGORY_NOTIFICATION_PREFERENCES;
-    public static int PRIORITY_DEFAULT;
-    public static int PRIORITY_HIGH;
-    public static int PRIORITY_LOW;
-    public static int PRIORITY_MAX;
-    public static int PRIORITY_MIN;
-    public static int STREAM_DEFAULT;
-    public static int VISIBILITY_PRIVATE;
-    public static int VISIBILITY_PUBLIC;
-    public static int VISIBILITY_SECRET;
-    public android.app.Notification$Action[] actions;
-    public android.util.ArraySet allPendingIntents;
-    public android.media.AudioAttributes audioAttributes;
-    public int audioStreamType;
-    public android.widget.RemoteViews bigContentView;
-    public java.lang.String category;
-    public int color;
-    public android.app.PendingIntent contentIntent;
-    public android.widget.RemoteViews contentView;
-    public int defaults;
-    public android.app.PendingIntent deleteIntent;
-    public android.os.Bundle extras;
-    public int flags;
-    public android.app.PendingIntent fullScreenIntent;
-    public android.widget.RemoteViews headsUpContentView;
-    public int icon;
-    public int iconLevel;
-    public android.graphics.Bitmap largeIcon;
-    public int ledARGB;
-    public int ledOffMS;
-    public int ledOnMS;
-    public int number;
-    public int priority;
-    public static android.os.IBinder processWhitelistToken;
-    public android.app.Notification publicVersion;
-    public android.net.Uri sound;
-    public java.lang.CharSequence tickerText;
-    public android.widget.RemoteViews tickerView;
-    public long[] vibrate;
-    public int visibility;
-    public long when;
-}
-
--keep class android.app.Notification$Action {
-    <init>(int, java.lang.CharSequence, android.app.PendingIntent);
-
-    public android.app.Notification$Action clone();
-    public java.lang.Object clone();
-    public int describeContents();
-    public boolean getAllowGeneratedReplies();
-    public android.app.RemoteInput[] getDataOnlyRemoteInputs();
-    public android.os.Bundle getExtras();
-    public android.graphics.drawable.Icon getIcon();
-    public android.app.RemoteInput[] getRemoteInputs();
-    public int getSemanticAction();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int SEMANTIC_ACTION_ARCHIVE;
-    public static int SEMANTIC_ACTION_CALL;
-    public static int SEMANTIC_ACTION_DELETE;
-    public static int SEMANTIC_ACTION_MARK_AS_READ;
-    public static int SEMANTIC_ACTION_MARK_AS_UNREAD;
-    public static int SEMANTIC_ACTION_MUTE;
-    public static int SEMANTIC_ACTION_NONE;
-    public static int SEMANTIC_ACTION_REPLY;
-    public static int SEMANTIC_ACTION_THUMBS_DOWN;
-    public static int SEMANTIC_ACTION_THUMBS_UP;
-    public static int SEMANTIC_ACTION_UNMUTE;
-    public android.app.PendingIntent actionIntent;
-    public int icon;
-    public java.lang.CharSequence title;
-}
-
--keep class android.app.Notification$Builder {
-    <init>(android.content.Context, java.lang.String);
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.app.Notification);
-
-    public android.app.Notification$Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
-    public android.app.Notification$Builder addAction(android.app.Notification$Action);
-    public android.app.Notification$Builder addExtras(android.os.Bundle);
-    public android.app.Notification$Builder addPerson(java.lang.String);
-    public android.app.Notification$Builder addPerson(android.app.Person);
-    public android.app.Notification build();
-    public android.app.Notification buildInto(android.app.Notification);
-    public android.app.Notification buildUnstyled();
-    public android.widget.RemoteViews createBigContentView();
-    public android.widget.RemoteViews createContentView();
-    public android.widget.RemoteViews createContentView(boolean);
-    public android.widget.RemoteViews createHeadsUpContentView(boolean);
-    public android.widget.RemoteViews createHeadsUpContentView();
-    public android.app.Notification$Builder extend(android.app.Notification$Extender);
-    public android.os.Bundle getExtras();
-    public java.lang.CharSequence getHeadsUpStatusBarText(boolean);
-    public android.app.Notification getNotification();
-    public int getPrimaryTextColor();
-    public int getSecondaryTextColor();
-    public android.app.Notification$Style getStyle();
-    public java.lang.String loadHeaderAppName();
-    public android.widget.RemoteViews makeAmbientNotification();
-    public static void makeHeaderExpanded(android.widget.RemoteViews);
-    public android.widget.RemoteViews makeLowPriorityContentView(boolean);
-    public android.widget.RemoteViews makeNotificationHeader(boolean);
-    public android.widget.RemoteViews makePublicAmbientNotification();
-    public android.widget.RemoteViews makePublicContentView();
-    public static android.app.Notification maybeCloneStrippedForDelivery(android.app.Notification, boolean, android.content.Context);
-    public static android.app.Notification$Builder recoverBuilder(android.content.Context, android.app.Notification);
-    public android.app.Notification$Builder setActions(android.app.Notification$Action[]);
-    public android.app.Notification$Builder setAutoCancel(boolean);
-    public android.app.Notification$Builder setBadgeIconType(int);
-    public android.app.Notification$Builder setCategory(java.lang.String);
-    public android.app.Notification$Builder setChannel(java.lang.String);
-    public android.app.Notification$Builder setChannelId(java.lang.String);
-    public android.app.Notification$Builder setChronometerCountDown(boolean);
-    public android.app.Notification$Builder setColor(int);
-    public void setColorPalette(int, int);
-    public android.app.Notification$Builder setColorized(boolean);
-    public android.app.Notification$Builder setContent(android.widget.RemoteViews);
-    public android.app.Notification$Builder setContentInfo(java.lang.CharSequence);
-    public android.app.Notification$Builder setContentIntent(android.app.PendingIntent);
-    public android.app.Notification$Builder setContentText(java.lang.CharSequence);
-    public android.app.Notification$Builder setContentTitle(java.lang.CharSequence);
-    public android.app.Notification$Builder setCustomBigContentView(android.widget.RemoteViews);
-    public android.app.Notification$Builder setCustomContentView(android.widget.RemoteViews);
-    public android.app.Notification$Builder setCustomHeadsUpContentView(android.widget.RemoteViews);
-    public android.app.Notification$Builder setDefaults(int);
-    public android.app.Notification$Builder setDeleteIntent(android.app.PendingIntent);
-    public android.app.Notification$Builder setExtras(android.os.Bundle);
-    public android.app.Notification$Builder setFlag(int, boolean);
-    public android.app.Notification$Builder setFullScreenIntent(android.app.PendingIntent, boolean);
-    public android.app.Notification$Builder setGroup(java.lang.String);
-    public android.app.Notification$Builder setGroupAlertBehavior(int);
-    public android.app.Notification$Builder setGroupSummary(boolean);
-    public android.app.Notification$Builder setHideSmartReplies(boolean);
-    public android.app.Notification$Builder setLargeIcon(android.graphics.Bitmap);
-    public android.app.Notification$Builder setLargeIcon(android.graphics.drawable.Icon);
-    public android.app.Notification$Builder setLights(int, int, int);
-    public android.app.Notification$Builder setLocalOnly(boolean);
-    public android.app.Notification$Builder setNumber(int);
-    public android.app.Notification$Builder setOngoing(boolean);
-    public android.app.Notification$Builder setOnlyAlertOnce(boolean);
-    public android.app.Notification$Builder setPriority(int);
-    public android.app.Notification$Builder setProgress(int, int, boolean);
-    public android.app.Notification$Builder setPublicVersion(android.app.Notification);
-    public void setRebuildStyledRemoteViews(boolean);
-    public android.app.Notification$Builder setRemoteInputHistory(java.lang.CharSequence[]);
-    public android.app.Notification$Builder setSettingsText(java.lang.CharSequence);
-    public android.app.Notification$Builder setShortcutId(java.lang.String);
-    public android.app.Notification$Builder setShowRemoteInputSpinner(boolean);
-    public android.app.Notification$Builder setShowWhen(boolean);
-    public android.app.Notification$Builder setSmallIcon(int);
-    public android.app.Notification$Builder setSmallIcon(int, int);
-    public android.app.Notification$Builder setSmallIcon(android.graphics.drawable.Icon);
-    public android.app.Notification$Builder setSortKey(java.lang.String);
-    public android.app.Notification$Builder setSound(android.net.Uri);
-    public android.app.Notification$Builder setSound(android.net.Uri, int);
-    public android.app.Notification$Builder setSound(android.net.Uri, android.media.AudioAttributes);
-    public android.app.Notification$Builder setStyle(android.app.Notification$Style);
-    public android.app.Notification$Builder setSubText(java.lang.CharSequence);
-    public android.app.Notification$Builder setTicker(java.lang.CharSequence);
-    public android.app.Notification$Builder setTicker(java.lang.CharSequence, android.widget.RemoteViews);
-    public android.app.Notification$Builder setTimeout(long);
-    public android.app.Notification$Builder setTimeoutAfter(long);
-    public android.app.Notification$Builder setUsesChronometer(boolean);
-    public android.app.Notification$Builder setVibrate(long[]);
-    public android.app.Notification$Builder setVisibility(int);
-    public android.app.Notification$Builder setWhen(long);
-    public boolean usesStandardHeader();
-
-
-    public static java.lang.String EXTRA_REBUILD_BIG_CONTENT_VIEW_ACTION_COUNT;
-    public static java.lang.String EXTRA_REBUILD_CONTENT_VIEW_ACTION_COUNT;
-    public static java.lang.String EXTRA_REBUILD_HEADS_UP_CONTENT_VIEW_ACTION_COUNT;
-}
-
--keep class android.app.Notification$Extender {
-
-    public abstract android.app.Notification$Builder extend(android.app.Notification$Builder);
-
-
-}
-
--keep class android.app.Notification$Style {
-    <init>();
-
-    public void addExtras(android.os.Bundle);
-    public abstract boolean areNotificationsVisiblyDifferent(android.app.Notification$Style);
-    public android.app.Notification build();
-    public android.app.Notification buildStyled(android.app.Notification);
-    protected void checkBuilder();
-    public boolean displayCustomViewInline();
-    public java.lang.CharSequence getHeadsUpStatusBarText();
-    protected android.widget.RemoteViews getStandardView(int);
-    protected android.widget.RemoteViews getStandardView(int, android.app.Notification$TemplateBindResult);
-    protected boolean hasProgress();
-    public boolean hasSummaryInHeader();
-    protected void internalSetBigContentTitle(java.lang.CharSequence);
-    protected void internalSetSummaryText(java.lang.CharSequence);
-    public android.widget.RemoteViews makeBigContentView();
-    public android.widget.RemoteViews makeContentView(boolean);
-    public android.widget.RemoteViews makeHeadsUpContentView(boolean);
-    public void purgeResources();
-    public void reduceImageSizes(android.content.Context);
-    protected void restoreFromExtras(android.os.Bundle);
-    public void setBuilder(android.app.Notification$Builder);
-    public void validate(android.content.Context);
-
-
-    protected android.app.Notification$Builder mBuilder;
-    protected java.lang.CharSequence mSummaryText;
-    protected boolean mSummaryTextSet;
-}
-
--keep class android.app.Notification$TemplateBindResult {
-
-    public int getIconMarginEnd();
-    public void setIconMarginEnd(int);
-
-
-}
-
--keep class android.app.OnActivityPausedListener {
-
-    public abstract void onPaused(android.app.Activity);
-
-
-}
-
--keep class android.app.PendingIntent {
-
-    public void cancel();
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static android.app.PendingIntent getActivities(android.content.Context, int, android.content.Intent[], int);
-    public static android.app.PendingIntent getActivities(android.content.Context, int, android.content.Intent[], int, android.os.Bundle);
-    public static android.app.PendingIntent getActivitiesAsUser(android.content.Context, int, android.content.Intent[], int, android.os.Bundle, android.os.UserHandle);
-    public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int);
-    public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int, android.os.Bundle);
-    public static android.app.PendingIntent getActivityAsUser(android.content.Context, int, android.content.Intent, int, android.os.Bundle, android.os.UserHandle);
-    public static android.app.PendingIntent getBroadcast(android.content.Context, int, android.content.Intent, int);
-    public static android.app.PendingIntent getBroadcastAsUser(android.content.Context, int, android.content.Intent, int, android.os.UserHandle);
-    public java.lang.String getCreatorPackage();
-    public int getCreatorUid();
-    public android.os.UserHandle getCreatorUserHandle();
-    public static android.app.PendingIntent getForegroundService(android.content.Context, int, android.content.Intent, int);
-    public android.content.Intent getIntent();
-    public android.content.IntentSender getIntentSender();
-    public static android.app.PendingIntent getService(android.content.Context, int, android.content.Intent, int);
-    public java.lang.String getTag(java.lang.String);
-    public android.content.IIntentSender getTarget();
-    public java.lang.String getTargetPackage();
-    public android.os.IBinder getWhitelistToken();
-    public int hashCode();
-    public boolean isActivity();
-    public boolean isForegroundService();
-    public boolean isTargetedToPackage();
-    public static android.app.PendingIntent readPendingIntentOrNullFromParcel(android.os.Parcel);
-    public void registerCancelListener(android.app.PendingIntent$CancelListener);
-    public void send();
-    public void send(int);
-    public void send(android.content.Context, int, android.content.Intent);
-    public void send(int, android.app.PendingIntent$OnFinished, android.os.Handler);
-    public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent$OnFinished, android.os.Handler);
-    public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent$OnFinished, android.os.Handler, java.lang.String);
-    public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent$OnFinished, android.os.Handler, java.lang.String, android.os.Bundle);
-    public int sendAndReturnResult(android.content.Context, int, android.content.Intent, android.app.PendingIntent$OnFinished, android.os.Handler, java.lang.String, android.os.Bundle);
-    public static void setOnMarshaledListener(android.app.PendingIntent$OnMarshaledListener);
-    public java.lang.String toString();
-    public void unregisterCancelListener(android.app.PendingIntent$CancelListener);
-    public static void writePendingIntentOrNullToParcel(android.app.PendingIntent, android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_CANCEL_CURRENT;
-    public static int FLAG_IMMUTABLE;
-    public static int FLAG_NO_CREATE;
-    public static int FLAG_ONE_SHOT;
-    public static int FLAG_UPDATE_CURRENT;
-}
-
--keep class android.app.PendingIntent$CancelListener {
-
-    public abstract void onCancelled(android.app.PendingIntent);
-
-
-}
-
--keep class android.app.PendingIntent$CanceledException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.Exception);
-
-
-
-}
-
--keep class android.app.PendingIntent$OnFinished {
-
-    public abstract void onSendFinished(android.app.PendingIntent, android.content.Intent, int, java.lang.String, android.os.Bundle);
-
-
-}
-
--keep class android.app.PendingIntent$OnMarshaledListener {
-
-    public abstract void onMarshaled(android.app.PendingIntent, android.os.Parcel, int);
-
-
-}
-
--keep class android.app.Person {
-
-    public int describeContents();
-    public android.graphics.drawable.Icon getIcon();
-    public java.lang.String getKey();
-    public java.lang.CharSequence getName();
-    public java.lang.String getUri();
-    public boolean isBot();
-    public boolean isImportant();
-    public java.lang.String resolveToLegacyUri();
-    public android.app.Person$Builder toBuilder();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.Person$Builder {
-    <init>();
-
-    public android.app.Person build();
-    public android.app.Person$Builder setBot(boolean);
-    public android.app.Person$Builder setIcon(android.graphics.drawable.Icon);
-    public android.app.Person$Builder setImportant(boolean);
-    public android.app.Person$Builder setKey(java.lang.String);
-    public android.app.Person$Builder setName(java.lang.CharSequence);
-    public android.app.Person$Builder setUri(java.lang.String);
-
-
-}
-
--keep class android.app.PictureInPictureArgs {
-    <init>();
-    <init>(float, java.util.List);
-
-    public static android.app.PictureInPictureArgs convert(android.app.PictureInPictureParams);
-    public static android.app.PictureInPictureParams convert(android.app.PictureInPictureArgs);
-    public void copyOnlySet(android.app.PictureInPictureArgs);
-    public int describeContents();
-    public java.util.List getActions();
-    public float getAspectRatio();
-    public android.util.Rational getAspectRatioRational();
-    public android.graphics.Rect getSourceRectHint();
-    public android.graphics.Rect getSourceRectHintInsets();
-    public boolean hasSetActions();
-    public boolean hasSetAspectRatio();
-    public boolean hasSourceBoundsHint();
-    public boolean hasSourceBoundsHintInsets();
-    public void setActions(java.util.List);
-    public void setAspectRatio(float);
-    public void setSourceRectHint(android.graphics.Rect);
-    public void setSourceRectHintInsets(android.graphics.Rect);
-    public void truncateActions(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.PictureInPictureParams {
-
-    public void copyOnlySet(android.app.PictureInPictureParams);
-    public int describeContents();
-    public java.util.List getActions();
-    public float getAspectRatio();
-    public android.util.Rational getAspectRatioRational();
-    public android.graphics.Rect getSourceRectHint();
-    public boolean hasSetActions();
-    public boolean hasSetAspectRatio();
-    public boolean hasSourceBoundsHint();
-    public void truncateActions(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.ProfilerInfo {
-    <init>(java.lang.String, android.os.ParcelFileDescriptor, int, boolean, boolean, java.lang.String, boolean);
-    <init>(android.app.ProfilerInfo);
-
-    public void closeFd();
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public android.app.ProfilerInfo setAgent(java.lang.String, boolean);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String agent;
-    public boolean attachAgentDuringBind;
-    public boolean autoStopProfiler;
-    public android.os.ParcelFileDescriptor profileFd;
-    public java.lang.String profileFile;
-    public int samplingInterval;
-    public boolean streamingOutput;
-}
-
--keep class android.app.RemoteAction {
-    <init>(android.graphics.drawable.Icon, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent);
-
-    public android.app.RemoteAction clone();
-    public java.lang.Object clone();
-    public int describeContents();
-    public void dump(java.lang.String, java.io.PrintWriter);
-    public android.app.PendingIntent getActionIntent();
-    public java.lang.CharSequence getContentDescription();
-    public android.graphics.drawable.Icon getIcon();
-    public java.lang.CharSequence getTitle();
-    public boolean isEnabled();
-    public void setEnabled(boolean);
-    public void setShouldShowIcon(boolean);
-    public boolean shouldShowIcon();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.RemoteInput {
-
-    public static void addDataResultToIntent(android.app.RemoteInput, android.content.Intent, java.util.Map);
-    public static void addResultsToIntent(android.app.RemoteInput[], android.content.Intent, android.os.Bundle);
-    public int describeContents();
-    public boolean getAllowFreeFormInput();
-    public java.util.Set getAllowedDataTypes();
-    public java.lang.CharSequence[] getChoices();
-    public static java.util.Map getDataResultsFromIntent(android.content.Intent, java.lang.String);
-    public android.os.Bundle getExtras();
-    public java.lang.CharSequence getLabel();
-    public java.lang.String getResultKey();
-    public static android.os.Bundle getResultsFromIntent(android.content.Intent);
-    public static int getResultsSource(android.content.Intent);
-    public boolean isDataOnly();
-    public static void setResultsSource(android.content.Intent, int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String EXTRA_RESULTS_DATA;
-    public static java.lang.String RESULTS_CLIP_LABEL;
-    public static int SOURCE_CHOICE;
-    public static int SOURCE_FREE_FORM_INPUT;
-}
-
--keep class android.app.ResultInfo {
-    <init>(java.lang.String, int, int, android.content.Intent);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.Intent mData;
-    public int mRequestCode;
-    public int mResultCode;
-    public java.lang.String mResultWho;
-}
-
--keep class android.app.Service {
-    <init>();
-
-    public void attach(android.content.Context, android.app.ActivityThread, java.lang.String, android.os.IBinder, android.app.Application, java.lang.Object);
-    public void detachAndCleanUp();
-    protected void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public android.app.Application getApplication();
-    public abstract android.os.IBinder onBind(android.content.Intent);
-    public void onConfigurationChanged(android.content.res.Configuration);
-    public void onCreate();
-    public void onDestroy();
-    public void onLowMemory();
-    public void onRebind(android.content.Intent);
-    public void onStart(android.content.Intent, int);
-    public int onStartCommand(android.content.Intent, int, int);
-    public void onTaskRemoved(android.content.Intent);
-    public void onTrimMemory(int);
-    public boolean onUnbind(android.content.Intent);
-    public void setForeground(boolean);
-    public void startForeground(int, android.app.Notification);
-    public void stopForeground(boolean);
-    public void stopForeground(int);
-    public void stopSelf();
-    public void stopSelf(int);
-    public boolean stopSelfResult(int);
-
-
-    public static int START_CONTINUATION_MASK;
-    public static int START_FLAG_REDELIVERY;
-    public static int START_FLAG_RETRY;
-    public static int START_NOT_STICKY;
-    public static int START_REDELIVER_INTENT;
-    public static int START_STICKY;
-    public static int START_STICKY_COMPATIBILITY;
-    public static int START_TASK_REMOVED_COMPLETE;
-    public static int STOP_FOREGROUND_DETACH;
-    public static int STOP_FOREGROUND_REMOVE;
-}
-
--keep class android.app.SharedElementCallback {
-    <init>();
-
-    public android.os.Parcelable onCaptureSharedElementSnapshot(android.view.View, android.graphics.Matrix, android.graphics.RectF);
-    public android.view.View onCreateSnapshotView(android.content.Context, android.os.Parcelable);
-    public void onMapSharedElements(java.util.List, java.util.Map);
-    public void onRejectSharedElements(java.util.List);
-    public void onSharedElementEnd(java.util.List, java.util.List, java.util.List);
-    public void onSharedElementStart(java.util.List, java.util.List, java.util.List);
-    public void onSharedElementsArrived(java.util.List, java.util.List, android.app.SharedElementCallback$OnSharedElementsReadyListener);
-
-
-}
-
--keep class android.app.SharedElementCallback$OnSharedElementsReadyListener {
-
-    public abstract void onSharedElementsReady();
-
-
-}
-
--keep class android.app.TaskStackBuilder {
-
-    public android.app.TaskStackBuilder addNextIntent(android.content.Intent);
-    public android.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
-    public android.app.TaskStackBuilder addParentStack(android.app.Activity);
-    public android.app.TaskStackBuilder addParentStack(java.lang.Class);
-    public android.app.TaskStackBuilder addParentStack(android.content.ComponentName);
-    public static android.app.TaskStackBuilder create(android.content.Context);
-    public android.content.Intent editIntentAt(int);
-    public int getIntentCount();
-    public android.content.Intent[] getIntents();
-    public android.app.PendingIntent getPendingIntent(int, int);
-    public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle);
-    public android.app.PendingIntent getPendingIntent(int, int, android.os.Bundle, android.os.UserHandle);
-    public void startActivities();
-    public int startActivities(android.os.Bundle, android.os.UserHandle);
-    public void startActivities(android.os.Bundle);
-
-
-}
-
--keep class android.app.UiAutomation {
-    <init>(android.os.Looper, android.app.IUiAutomationConnection);
-
-    public void clearWindowAnimationFrameStats();
-    public boolean clearWindowContentFrameStats(int);
-    public void connect();
-    public void connect(int);
-    public void destroy();
-    public void disconnect();
-    public android.view.accessibility.AccessibilityEvent executeAndWaitForEvent(java.lang.Runnable, android.app.UiAutomation$AccessibilityEventFilter, long);
-    public android.os.ParcelFileDescriptor executeShellCommand(java.lang.String);
-    public android.os.ParcelFileDescriptor[] executeShellCommandRw(java.lang.String);
-    public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    public int getConnectionId();
-    public int getFlags();
-    public android.view.accessibility.AccessibilityNodeInfo getRootInActiveWindow();
-    public android.accessibilityservice.AccessibilityServiceInfo getServiceInfo();
-    public android.view.WindowAnimationFrameStats getWindowAnimationFrameStats();
-    public android.view.WindowContentFrameStats getWindowContentFrameStats(int);
-    public java.util.List getWindows();
-    public void grantRuntimePermission(java.lang.String, java.lang.String);
-    public boolean grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
-    public void grantRuntimePermissionAsUser(java.lang.String, java.lang.String, android.os.UserHandle);
-    public boolean injectInputEvent(android.view.InputEvent, boolean);
-    public boolean isDestroyed();
-    public boolean performGlobalAction(int);
-    public void revokeRuntimePermission(java.lang.String, java.lang.String);
-    public boolean revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
-    public void revokeRuntimePermissionAsUser(java.lang.String, java.lang.String, android.os.UserHandle);
-    public void setOnAccessibilityEventListener(android.app.UiAutomation$OnAccessibilityEventListener);
-    public boolean setRotation(int);
-    public void setRunAsMonkey(boolean);
-    public void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
-    public android.graphics.Bitmap takeScreenshot();
-    public void waitForIdle(long, long);
-
-
-    public static int FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES;
-    public static int ROTATION_FREEZE_0;
-    public static int ROTATION_FREEZE_180;
-    public static int ROTATION_FREEZE_270;
-    public static int ROTATION_FREEZE_90;
-    public static int ROTATION_FREEZE_CURRENT;
-    public static int ROTATION_UNFREEZE;
-}
-
--keep class android.app.UiAutomation$AccessibilityEventFilter {
-
-    public abstract boolean accept(android.view.accessibility.AccessibilityEvent);
-
-
-}
-
--keep class android.app.UiAutomation$OnAccessibilityEventListener {
-
-    public abstract void onAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-
-
-}
-
--keep class android.app.VoiceInteractor {
-
-    public android.app.VoiceInteractor$Request getActiveRequest(java.lang.String);
-    public android.app.VoiceInteractor$Request[] getActiveRequests();
-    public boolean submitRequest(android.app.VoiceInteractor$Request);
-    public boolean submitRequest(android.app.VoiceInteractor$Request, java.lang.String);
-    public boolean[] supportsCommands(java.lang.String[]);
-
-
-}
-
--keep class android.app.VoiceInteractor$PickOptionRequest {
-    <init>(android.app.VoiceInteractor$Prompt, android.app.VoiceInteractor$PickOptionRequest$Option[], android.os.Bundle);
-    <init>(java.lang.CharSequence, android.app.VoiceInteractor$PickOptionRequest$Option[], android.os.Bundle);
-
-    public void onPickOptionResult(boolean, android.app.VoiceInteractor$PickOptionRequest$Option[], android.os.Bundle);
-
-
-}
-
--keep class android.app.VoiceInteractor$PickOptionRequest$Option {
-    <init>(java.lang.CharSequence);
-    <init>(java.lang.CharSequence, int);
-
-    public android.app.VoiceInteractor$PickOptionRequest$Option addSynonym(java.lang.CharSequence);
-    public int countSynonyms();
-    public int describeContents();
-    public android.os.Bundle getExtras();
-    public int getIndex();
-    public java.lang.CharSequence getLabel();
-    public java.lang.CharSequence getSynonymAt(int);
-    public void setExtras(android.os.Bundle);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.VoiceInteractor$Prompt {
-    <init>(java.lang.CharSequence[], java.lang.CharSequence);
-    <init>(java.lang.CharSequence);
-
-    public int countVoicePrompts();
-    public int describeContents();
-    public java.lang.CharSequence getVisualPrompt();
-    public java.lang.CharSequence getVoicePromptAt(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.VoiceInteractor$Request {
-
-    public void cancel();
-    public android.app.Activity getActivity();
-    public android.content.Context getContext();
-    public java.lang.String getName();
-    public void onAttached(android.app.Activity);
-    public void onCancel();
-    public void onDetached();
-    public java.lang.String toString();
-
-
-}
-
--keep class android.app.WaitResult {
-    <init>();
-
-    public int describeContents();
-    public void dump(java.io.PrintWriter, java.lang.String);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public int result;
-    public long thisTime;
-    public boolean timeout;
-    public long totalTime;
-    public android.content.ComponentName who;
-}
-
--keep class android.app.WindowConfiguration {
-    <init>();
-    <init>(android.app.WindowConfiguration);
-
-    public static java.lang.String activityTypeToString(int);
-    public boolean canReceiveKeys();
-    public boolean canResizeTask();
-    public int compareTo(android.app.WindowConfiguration);
-    public int compareTo(java.lang.Object);
-    public int describeContents();
-    public long diff(android.app.WindowConfiguration, boolean);
-    public boolean equals(java.lang.Object);
-    public int getActivityType();
-    public android.graphics.Rect getAppBounds();
-    public android.graphics.Rect getBounds();
-    public int getWindowingMode();
-    public boolean hasMovementAnimations();
-    public boolean hasWindowDecorCaption();
-    public boolean hasWindowShadow();
-    public int hashCode();
-    public boolean isAlwaysOnTop();
-    public static boolean isFloating(int);
-    public boolean keepVisibleDeadAppWindowOnScreen();
-    public boolean persistTaskBounds();
-    public void setActivityType(int);
-    public void setAppBounds(android.graphics.Rect);
-    public void setAppBounds(int, int, int, int);
-    public void setBounds(android.graphics.Rect);
-    public void setTo(android.app.WindowConfiguration);
-    public void setToDefaults();
-    public void setWindowingMode(int);
-    public boolean supportSplitScreenWindowingMode();
-    public static boolean supportSplitScreenWindowingMode(int);
-    public boolean tasksAreFloating();
-    public java.lang.String toString();
-    public void unset();
-    public int updateFrom(android.app.WindowConfiguration);
-    public boolean useWindowFrameForBackdrop();
-    public static java.lang.String windowingModeToString(int);
-    public boolean windowsAreScaleable();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static int ACTIVITY_TYPE_ASSISTANT;
-    public static int ACTIVITY_TYPE_HOME;
-    public static int ACTIVITY_TYPE_RECENTS;
-    public static int ACTIVITY_TYPE_STANDARD;
-    public static int ACTIVITY_TYPE_UNDEFINED;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int PINNED_WINDOWING_MODE_ELEVATION_IN_DIP;
-    public static int WINDOWING_MODE_FREEFORM;
-    public static int WINDOWING_MODE_FULLSCREEN;
-    public static int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY;
-    public static int WINDOWING_MODE_PINNED;
-    public static int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
-    public static int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
-    public static int WINDOWING_MODE_UNDEFINED;
-    public static int WINDOW_CONFIG_ACTIVITY_TYPE;
-    public static int WINDOW_CONFIG_APP_BOUNDS;
-    public static int WINDOW_CONFIG_BOUNDS;
-    public static int WINDOW_CONFIG_WINDOWING_MODE;
-}
-
--keep class android.app.assist.AssistContent {
-    <init>();
-
-    public int describeContents();
-    public android.content.ClipData getClipData();
-    public android.os.Bundle getExtras();
-    public android.content.Intent getIntent();
-    public java.lang.String getStructuredData();
-    public android.net.Uri getWebUri();
-    public boolean isAppProvidedIntent();
-    public boolean isAppProvidedWebUri();
-    public void setClipData(android.content.ClipData);
-    public void setDefaultIntent(android.content.Intent);
-    public void setIntent(android.content.Intent);
-    public void setStructuredData(java.lang.String);
-    public void setWebUri(android.net.Uri);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.assist.AssistStructure {
-    <init>(android.app.Activity, boolean, int);
-    <init>();
-    <init>(android.os.Parcel);
-
-    public void clearSendChannel();
-    public int describeContents();
-    public void dump(boolean);
-    public void ensureData();
-    public void ensureDataForAutofill();
-    public long getAcquisitionEndTime();
-    public long getAcquisitionStartTime();
-    public android.content.ComponentName getActivityComponent();
-    public int getFlags();
-    public android.app.assist.AssistStructure$WindowNode getWindowNodeAt(int);
-    public int getWindowNodeCount();
-    public boolean isHomeActivity();
-    public void sanitizeForParceling(boolean);
-    public void setAcquisitionEndTime(long);
-    public void setAcquisitionStartTime(long);
-    public void setActivityComponent(android.content.ComponentName);
-    public void setHomeActivity(boolean);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.assist.AssistStructure$AutofillOverlay {
-    <init>();
-
-
-
-    public boolean focused;
-    public android.view.autofill.AutofillValue value;
-}
-
--keep class android.app.assist.AssistStructure$ViewNode {
-
-    public float getAlpha();
-    public java.lang.String[] getAutofillHints();
-    public android.view.autofill.AutofillId getAutofillId();
-    public java.lang.CharSequence[] getAutofillOptions();
-    public int getAutofillType();
-    public android.view.autofill.AutofillValue getAutofillValue();
-    public android.app.assist.AssistStructure$ViewNode getChildAt(int);
-    public int getChildCount();
-    public java.lang.String getClassName();
-    public java.lang.CharSequence getContentDescription();
-    public float getElevation();
-    public android.os.Bundle getExtras();
-    public int getHeight();
-    public java.lang.String getHint();
-    public android.view.ViewStructure$HtmlInfo getHtmlInfo();
-    public int getId();
-    public java.lang.String getIdEntry();
-    public java.lang.String getIdPackage();
-    public java.lang.String getIdType();
-    public int getImportantForAutofill();
-    public int getInputType();
-    public int getLeft();
-    public android.os.LocaleList getLocaleList();
-    public int getMaxTextEms();
-    public int getMaxTextLength();
-    public int getMinTextEms();
-    public int getScrollX();
-    public int getScrollY();
-    public java.lang.CharSequence getText();
-    public int getTextBackgroundColor();
-    public int getTextColor();
-    public java.lang.String getTextIdEntry();
-    public int[] getTextLineBaselines();
-    public int[] getTextLineCharOffsets();
-    public int getTextSelectionEnd();
-    public int getTextSelectionStart();
-    public float getTextSize();
-    public int getTextStyle();
-    public int getTop();
-    public android.graphics.Matrix getTransformation();
-    public int getVisibility();
-    public java.lang.String getWebDomain();
-    public java.lang.String getWebScheme();
-    public int getWidth();
-    public boolean isAccessibilityFocused();
-    public boolean isActivated();
-    public boolean isAssistBlocked();
-    public boolean isCheckable();
-    public boolean isChecked();
-    public boolean isClickable();
-    public boolean isContextClickable();
-    public boolean isEnabled();
-    public boolean isFocusable();
-    public boolean isFocused();
-    public boolean isLongClickable();
-    public boolean isOpaque();
-    public boolean isSanitized();
-    public boolean isSelected();
-    public void setAutofillOverlay(android.app.assist.AssistStructure$AutofillOverlay);
-    public void setWebDomain(java.lang.String);
-    public void updateAutofillValue(android.view.autofill.AutofillValue);
-
-
-    public static int TEXT_COLOR_UNDEFINED;
-    public static int TEXT_STYLE_BOLD;
-    public static int TEXT_STYLE_ITALIC;
-    public static int TEXT_STYLE_STRIKE_THRU;
-    public static int TEXT_STYLE_UNDERLINE;
-}
-
--keep class android.app.assist.AssistStructure$WindowNode {
-
-    public int getDisplayId();
-    public int getHeight();
-    public int getLeft();
-    public android.app.assist.AssistStructure$ViewNode getRootViewNode();
-    public java.lang.CharSequence getTitle();
-    public int getTop();
-    public int getWidth();
-
-
-}
-
--keep class android.app.servertransaction.ActivityLifecycleItem {
-    <init>();
-
-    public abstract int getTargetState();
-    public void recycle();
-
-
-    public static int ON_CREATE;
-    public static int ON_DESTROY;
-    public static int ON_PAUSE;
-    public static int ON_RESTART;
-    public static int ON_RESUME;
-    public static int ON_START;
-    public static int ON_STOP;
-    public static int PRE_ON_CREATE;
-    public static int UNDEFINED;
-}
-
--keep class android.app.servertransaction.ClientTransaction {
-
-    public void addCallback(android.app.servertransaction.ClientTransactionItem);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.os.IBinder getActivityToken();
-    public android.app.IApplicationThread getClient();
-    public android.app.servertransaction.ActivityLifecycleItem getLifecycleStateRequest();
-    public int hashCode();
-    public static android.app.servertransaction.ClientTransaction obtain(android.app.IApplicationThread, android.os.IBinder);
-    public void preExecute(android.app.ClientTransactionHandler);
-    public void recycle();
-    public void schedule();
-    public void setLifecycleStateRequest(android.app.servertransaction.ActivityLifecycleItem);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.app.servertransaction.ClientTransactionItem {
-    <init>();
-
-    public int describeContents();
-    public int getPostExecutionState();
-
-
-}
-
--keep class android.app.servertransaction.PendingTransactionActions {
-    <init>();
-
-    public void clear();
-    public android.os.Bundle getOldState();
-    public android.app.servertransaction.PendingTransactionActions$StopInfo getStopInfo();
-    public void setCallOnPostCreate(boolean);
-    public void setOldState(android.os.Bundle);
-    public void setReportRelaunchToWindowManager(boolean);
-    public void setRestoreInstanceState(boolean);
-    public void setStopInfo(android.app.servertransaction.PendingTransactionActions$StopInfo);
-    public boolean shouldCallOnPostCreate();
-    public boolean shouldReportRelaunchToWindowManager();
-    public boolean shouldRestoreInstanceState();
-
-
-}
-
--keep class android.app.servertransaction.PendingTransactionActions$StopInfo {
-    <init>();
-
-    public void run();
-    public void setActivity(android.app.ActivityThread$ActivityClientRecord);
-    public void setDescription(java.lang.CharSequence);
-    public void setPersistentState(android.os.PersistableBundle);
-    public void setState(android.os.Bundle);
-
-
-}
-
--keep class android.content.BroadcastReceiver {
-    <init>();
-
-    public void abortBroadcast();
-    public void clearAbortBroadcast();
-    public boolean getAbortBroadcast();
-    public boolean getDebugUnregister();
-    public android.content.BroadcastReceiver$PendingResult getPendingResult();
-    public int getResultCode();
-    public java.lang.String getResultData();
-    public android.os.Bundle getResultExtras(boolean);
-    public int getSendingUserId();
-    public android.content.BroadcastReceiver$PendingResult goAsync();
-    public boolean isInitialStickyBroadcast();
-    public boolean isOrderedBroadcast();
-    public abstract void onReceive(android.content.Context, android.content.Intent);
-    public android.os.IBinder peekService(android.content.Context, android.content.Intent);
-    public void setDebugUnregister(boolean);
-    public void setOrderedHint(boolean);
-    public void setPendingResult(android.content.BroadcastReceiver$PendingResult);
-    public void setResult(int, java.lang.String, android.os.Bundle);
-    public void setResultCode(int);
-    public void setResultData(java.lang.String);
-    public void setResultExtras(android.os.Bundle);
-
-
-}
-
--keep class android.content.BroadcastReceiver$PendingResult {
-    <init>(int, java.lang.String, android.os.Bundle, int, boolean, boolean, android.os.IBinder, int, int);
-
-    public void abortBroadcast();
-    public void clearAbortBroadcast();
-    public void finish();
-    public boolean getAbortBroadcast();
-    public int getResultCode();
-    public java.lang.String getResultData();
-    public android.os.Bundle getResultExtras(boolean);
-    public int getSendingUserId();
-    public void sendFinished(android.app.IActivityManager);
-    public void setExtrasClassLoader(java.lang.ClassLoader);
-    public void setResult(int, java.lang.String, android.os.Bundle);
-    public void setResultCode(int);
-    public void setResultData(java.lang.String);
-    public void setResultExtras(android.os.Bundle);
-
-
-    public static int TYPE_COMPONENT;
-    public static int TYPE_REGISTERED;
-    public static int TYPE_UNREGISTERED;
-}
-
--keep class android.content.ClipData {
-    <init>(java.lang.CharSequence, java.lang.String[], android.content.ClipData$Item);
-    <init>(android.content.ClipDescription, android.content.ClipData$Item);
-    <init>(android.content.ClipDescription, java.util.ArrayList);
-    <init>(android.content.ClipData);
-
-    public void addItem(android.content.ClipData$Item);
-    public void addItem(android.content.ClipData$Item, android.content.ContentResolver);
-    public void addItem(android.content.ContentResolver, android.content.ClipData$Item);
-    public void collectUris(java.util.List);
-    public int describeContents();
-    public void fixUris(int);
-    public void fixUrisLight(int);
-    public android.content.ClipDescription getDescription();
-    public android.graphics.Bitmap getIcon();
-    public android.content.ClipData$Item getItemAt(int);
-    public int getItemCount();
-    public static android.content.ClipData newHtmlText(java.lang.CharSequence, java.lang.CharSequence, java.lang.String);
-    public static android.content.ClipData newIntent(java.lang.CharSequence, android.content.Intent);
-    public static android.content.ClipData newPlainText(java.lang.CharSequence, java.lang.CharSequence);
-    public static android.content.ClipData newRawUri(java.lang.CharSequence, android.net.Uri);
-    public static android.content.ClipData newUri(android.content.ContentResolver, java.lang.CharSequence, android.net.Uri);
-    public void prepareToEnterProcess();
-    public void prepareToLeaveProcess(boolean);
-    public void prepareToLeaveProcess(boolean, int);
-    public void setItemAt(int, android.content.ClipData$Item);
-    public void toShortString(java.lang.StringBuilder);
-    public void toShortStringShortItems(java.lang.StringBuilder, boolean);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.ClipData$Item {
-    <init>(android.content.ClipData$Item);
-    <init>(java.lang.CharSequence);
-    <init>(java.lang.CharSequence, java.lang.String);
-    <init>(android.content.Intent);
-    <init>(android.net.Uri);
-    <init>(java.lang.CharSequence, android.content.Intent, android.net.Uri);
-    <init>(java.lang.CharSequence, java.lang.String, android.content.Intent, android.net.Uri);
-
-    public java.lang.String coerceToHtmlText(android.content.Context);
-    public java.lang.CharSequence coerceToStyledText(android.content.Context);
-    public java.lang.CharSequence coerceToText(android.content.Context);
-    public java.lang.String getHtmlText();
-    public android.content.Intent getIntent();
-    public java.lang.CharSequence getText();
-    public android.net.Uri getUri();
-    public void toShortString(java.lang.StringBuilder);
-    public void toShortSummaryString(java.lang.StringBuilder);
-    public java.lang.String toString();
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-}
-
--keep class android.content.ClipDescription {
-    <init>(java.lang.CharSequence, java.lang.String[]);
-    <init>(android.content.ClipDescription);
-
-    public static boolean compareMimeTypes(java.lang.String, java.lang.String);
-    public int describeContents();
-    public java.lang.String[] filterMimeTypes(java.lang.String);
-    public android.os.PersistableBundle getExtras();
-    public java.lang.CharSequence getLabel();
-    public java.lang.String getMimeType(int);
-    public int getMimeTypeCount();
-    public long getTimestamp();
-    public boolean hasMimeType(java.lang.String);
-    public void setExtras(android.os.PersistableBundle);
-    public void setTimestamp(long);
-    public boolean toShortString(java.lang.StringBuilder);
-    public boolean toShortStringTypesOnly(java.lang.StringBuilder);
-    public java.lang.String toString();
-    public void validate();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String EXTRA_TARGET_COMPONENT_NAME;
-    public static java.lang.String EXTRA_USER_SERIAL_NUMBER;
-    public static java.lang.String MIMETYPE_TEXT_HTML;
-    public static java.lang.String MIMETYPE_TEXT_INTENT;
-    public static java.lang.String MIMETYPE_TEXT_PLAIN;
-    public static java.lang.String MIMETYPE_TEXT_URILIST;
-}
-
--keep class android.content.ComponentCallbacks {
-
-    public abstract void onConfigurationChanged(android.content.res.Configuration);
-    public abstract void onLowMemory();
-
-
-}
-
--keep class android.content.ComponentName {
-    <init>(java.lang.String, java.lang.String);
-    <init>(android.content.Context, java.lang.String);
-    <init>(android.content.Context, java.lang.Class);
-    <init>(android.os.Parcel);
-
-    public void appendShortString(java.lang.StringBuilder);
-    public static void appendShortString(java.lang.StringBuilder, java.lang.String, java.lang.String);
-    public android.content.ComponentName clone();
-    public java.lang.Object clone();
-    public int compareTo(android.content.ComponentName);
-    public int compareTo(java.lang.Object);
-    public static android.content.ComponentName createRelative(java.lang.String, java.lang.String);
-    public static android.content.ComponentName createRelative(android.content.Context, java.lang.String);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public java.lang.String flattenToShortString();
-    public java.lang.String flattenToString();
-    public java.lang.String getClassName();
-    public java.lang.String getPackageName();
-    public java.lang.String getShortClassName();
-    public int hashCode();
-    public static void printShortString(java.io.PrintWriter, java.lang.String, java.lang.String);
-    public static android.content.ComponentName readFromParcel(android.os.Parcel);
-    public java.lang.String toShortString();
-    public java.lang.String toString();
-    public static android.content.ComponentName unflattenFromString(java.lang.String);
-    public void writeToParcel(android.os.Parcel, int);
-    public static void writeToParcel(android.content.ComponentName, android.os.Parcel);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.ContentProvider {
-    <init>();
-    <init>(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]);
-
-    public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList);
-    public void attachInfo(android.content.Context, android.content.pm.ProviderInfo);
-    public void attachInfoForTesting(android.content.Context, android.content.pm.ProviderInfo);
-    public int bulkInsert(android.net.Uri, android.content.ContentValues[]);
-    public android.os.Bundle call(java.lang.String, java.lang.String, android.os.Bundle);
-    public android.net.Uri canonicalize(android.net.Uri);
-    public static android.content.ContentProvider coerceToLocalContentProvider(android.content.IContentProvider);
-    public abstract int delete(android.net.Uri, java.lang.String, java.lang.String[]);
-    public void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    protected int enforceReadPermissionInner(android.net.Uri, java.lang.String, android.os.IBinder);
-    protected int enforceWritePermissionInner(android.net.Uri, java.lang.String, android.os.IBinder);
-    public android.app.AppOpsManager getAppOpsManager();
-    public static java.lang.String getAuthorityWithoutUserId(java.lang.String);
-    public java.lang.String getCallingPackage();
-    public android.content.Context getContext();
-    public android.content.IContentProvider getIContentProvider();
-    public android.content.pm.PathPermission[] getPathPermissions();
-    public java.lang.String getReadPermission();
-    public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
-    public abstract java.lang.String getType(android.net.Uri);
-    public static android.net.Uri getUriWithoutUserId(android.net.Uri);
-    public static int getUserIdFromAuthority(java.lang.String, int);
-    public static int getUserIdFromAuthority(java.lang.String);
-    public static int getUserIdFromUri(android.net.Uri, int);
-    public static int getUserIdFromUri(android.net.Uri);
-    public java.lang.String getWritePermission();
-    public abstract android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    protected boolean isTemporary();
-    protected boolean matchesOurAuthorities(java.lang.String);
-    public static android.net.Uri maybeAddUserId(android.net.Uri, int);
-    public void onConfigurationChanged(android.content.res.Configuration);
-    public abstract boolean onCreate();
-    public void onLowMemory();
-    public void onTrimMemory(int);
-    public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String);
-    public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal);
-    public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String);
-    public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal);
-    protected android.os.ParcelFileDescriptor openFileHelper(android.net.Uri, java.lang.String);
-    public android.os.ParcelFileDescriptor openPipeHelper(android.net.Uri, java.lang.String, android.os.Bundle, java.lang.Object, android.content.ContentProvider$PipeDataWriter);
-    public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle);
-    public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal);
-    public abstract android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
-    public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
-    public android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal);
-    public boolean refresh(android.net.Uri, android.os.Bundle, android.os.CancellationSignal);
-    public android.net.Uri rejectInsert(android.net.Uri, android.content.ContentValues);
-    public void setAppOps(int, int);
-    protected void setAuthorities(java.lang.String);
-    protected void setPathPermissions(android.content.pm.PathPermission[]);
-    protected void setReadPermission(java.lang.String);
-    protected void setWritePermission(java.lang.String);
-    public void shutdown();
-    public android.net.Uri uncanonicalize(android.net.Uri);
-    public abstract int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
-    public static boolean uriHasUserId(android.net.Uri);
-
-
-}
-
--keep class android.content.ContentProvider$PipeDataWriter {
-
-    public abstract void writeDataToPipe(android.os.ParcelFileDescriptor, android.net.Uri, java.lang.String, android.os.Bundle, java.lang.Object);
-
-
-}
-
--keep class android.content.ContentProviderClient {
-    <init>(android.content.ContentResolver, android.content.IContentProvider, boolean);
-
-    public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList);
-    public int bulkInsert(android.net.Uri, android.content.ContentValues[]);
-    public android.os.Bundle call(java.lang.String, java.lang.String, android.os.Bundle);
-    public android.net.Uri canonicalize(android.net.Uri);
-    public void close();
-    public int delete(android.net.Uri, java.lang.String, java.lang.String[]);
-    protected void finalize();
-    public android.content.ContentProvider getLocalContentProvider();
-    public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
-    public java.lang.String getType(android.net.Uri);
-    public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String);
-    public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal);
-    public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String);
-    public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal);
-    public android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle);
-    public android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal);
-    public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
-    public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
-    public android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal);
-    public boolean refresh(android.net.Uri, android.os.Bundle, android.os.CancellationSignal);
-    public boolean release();
-    public static void releaseQuietly(android.content.ContentProviderClient);
-    public void setDetectNotResponding(long);
-    public android.net.Uri uncanonicalize(android.net.Uri);
-    public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
-
-
-}
-
--keep class android.content.ContentProviderOperation {
-    <init>(android.content.ContentProviderOperation, boolean);
-
-    public android.content.ContentProviderResult apply(android.content.ContentProvider, android.content.ContentProviderResult[], int);
-    public int describeContents();
-    public int getType();
-    public android.net.Uri getUri();
-    public android.content.ContentProviderOperation getWithoutUserIdInUri();
-    public boolean isAssertQuery();
-    public boolean isDelete();
-    public boolean isInsert();
-    public boolean isReadOperation();
-    public boolean isUpdate();
-    public boolean isWriteOperation();
-    public boolean isYieldAllowed();
-    public static android.content.ContentProviderOperation$Builder newAssertQuery(android.net.Uri);
-    public static android.content.ContentProviderOperation$Builder newDelete(android.net.Uri);
-    public static android.content.ContentProviderOperation$Builder newInsert(android.net.Uri);
-    public static android.content.ContentProviderOperation$Builder newUpdate(android.net.Uri);
-    public java.lang.String[] resolveSelectionArgsBackReferences(android.content.ContentProviderResult[], int);
-    public android.content.ContentValues resolveValueBackReferences(android.content.ContentProviderResult[], int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int TYPE_ASSERT;
-    public static int TYPE_DELETE;
-    public static int TYPE_INSERT;
-    public static int TYPE_UPDATE;
-}
-
--keep class android.content.ContentProviderOperation$Builder {
-
-    public android.content.ContentProviderOperation build();
-    public android.content.ContentProviderOperation$Builder withExpectedCount(int);
-    public android.content.ContentProviderOperation$Builder withSelection(java.lang.String, java.lang.String[]);
-    public android.content.ContentProviderOperation$Builder withSelectionBackReference(int, int);
-    public android.content.ContentProviderOperation$Builder withValue(java.lang.String, java.lang.Object);
-    public android.content.ContentProviderOperation$Builder withValueBackReference(java.lang.String, int);
-    public android.content.ContentProviderOperation$Builder withValueBackReferences(android.content.ContentValues);
-    public android.content.ContentProviderOperation$Builder withValues(android.content.ContentValues);
-    public android.content.ContentProviderOperation$Builder withYieldAllowed(boolean);
-
-
-}
-
--keep class android.content.ContentProviderResult {
-    <init>(android.net.Uri);
-    <init>(int);
-    <init>(android.os.Parcel);
-    <init>(android.content.ContentProviderResult, int);
-
-    public int describeContents();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.Integer count;
-    public android.net.Uri uri;
-}
-
--keep class android.content.ContentResolver {
-    <init>(android.content.Context);
-
-    public android.content.ContentProviderClient acquireContentProviderClient(android.net.Uri);
-    public android.content.ContentProviderClient acquireContentProviderClient(java.lang.String);
-    protected android.content.IContentProvider acquireExistingProvider(android.content.Context, java.lang.String);
-    public android.content.IContentProvider acquireExistingProvider(android.net.Uri);
-    protected abstract android.content.IContentProvider acquireProvider(android.content.Context, java.lang.String);
-    public android.content.IContentProvider acquireProvider(android.net.Uri);
-    public android.content.IContentProvider acquireProvider(java.lang.String);
-    public android.content.ContentProviderClient acquireUnstableContentProviderClient(android.net.Uri);
-    public android.content.ContentProviderClient acquireUnstableContentProviderClient(java.lang.String);
-    protected abstract android.content.IContentProvider acquireUnstableProvider(android.content.Context, java.lang.String);
-    public android.content.IContentProvider acquireUnstableProvider(android.net.Uri);
-    public android.content.IContentProvider acquireUnstableProvider(java.lang.String);
-    public static void addPeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle, long);
-    public static java.lang.Object addStatusChangeListener(int, android.content.SyncStatusObserver);
-    public void appNotRespondingViaProvider(android.content.IContentProvider);
-    public android.content.ContentProviderResult[] applyBatch(java.lang.String, java.util.ArrayList);
-    public int bulkInsert(android.net.Uri, android.content.ContentValues[]);
-    public android.os.Bundle call(android.net.Uri, java.lang.String, java.lang.String, android.os.Bundle);
-    public void cancelSync(android.net.Uri);
-    public static void cancelSync(android.accounts.Account, java.lang.String);
-    public static void cancelSync(android.content.SyncRequest);
-    public static void cancelSyncAsUser(android.accounts.Account, java.lang.String, int);
-    public android.net.Uri canonicalize(android.net.Uri);
-    public static android.os.Bundle createSqlQueryBundle(java.lang.String, java.lang.String[], java.lang.String);
-    public static java.lang.String createSqlSortClause(android.os.Bundle);
-    public int delete(android.net.Uri, java.lang.String, java.lang.String[]);
-    public android.os.Bundle getCache(android.net.Uri);
-    public static android.content.IContentService getContentService();
-    public static android.content.SyncInfo getCurrentSync();
-    public static java.util.List getCurrentSyncs();
-    public static java.util.List getCurrentSyncsAsUser(int);
-    public static int getIsSyncable(android.accounts.Account, java.lang.String);
-    public static int getIsSyncableAsUser(android.accounts.Account, java.lang.String, int);
-    public static boolean getMasterSyncAutomatically();
-    public static boolean getMasterSyncAutomaticallyAsUser(int);
-    public java.util.List getOutgoingPersistedUriPermissions();
-    public java.lang.String getPackageName();
-    public static java.util.List getPeriodicSyncs(android.accounts.Account, java.lang.String);
-    public java.util.List getPersistedUriPermissions();
-    public android.content.ContentResolver$OpenResourceIdResult getResourceId(android.net.Uri);
-    public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
-    public static java.lang.String[] getSyncAdapterPackagesForAuthorityAsUser(java.lang.String, int);
-    public static android.content.SyncAdapterType[] getSyncAdapterTypes();
-    public static android.content.SyncAdapterType[] getSyncAdapterTypesAsUser(int);
-    public static boolean getSyncAutomatically(android.accounts.Account, java.lang.String);
-    public static boolean getSyncAutomaticallyAsUser(android.accounts.Account, java.lang.String, int);
-    public static android.content.SyncStatusInfo getSyncStatus(android.accounts.Account, java.lang.String);
-    public static android.content.SyncStatusInfo getSyncStatusAsUser(android.accounts.Account, java.lang.String, int);
-    public int getTargetSdkVersion();
-    public java.lang.String getType(android.net.Uri);
-    public android.graphics.drawable.Drawable getTypeDrawable(java.lang.String);
-    public int getUserId();
-    public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
-    public static boolean invalidPeriodicExtras(android.os.Bundle);
-    public static boolean isSyncActive(android.accounts.Account, java.lang.String);
-    public static boolean isSyncPending(android.accounts.Account, java.lang.String);
-    public static boolean isSyncPendingAsUser(android.accounts.Account, java.lang.String, int);
-    public void notifyChange(android.net.Uri, android.database.ContentObserver);
-    public void notifyChange(android.net.Uri, android.database.ContentObserver, boolean);
-    public void notifyChange(android.net.Uri, android.database.ContentObserver, int);
-    public void notifyChange(android.net.Uri, android.database.ContentObserver, boolean, int);
-    public void notifyChange(android.net.Uri, android.database.ContentObserver, int, int);
-    public android.content.res.AssetFileDescriptor openAssetFileDescriptor(android.net.Uri, java.lang.String);
-    public android.content.res.AssetFileDescriptor openAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.CancellationSignal);
-    public android.os.ParcelFileDescriptor openFileDescriptor(android.net.Uri, java.lang.String);
-    public android.os.ParcelFileDescriptor openFileDescriptor(android.net.Uri, java.lang.String, android.os.CancellationSignal);
-    public java.io.InputStream openInputStream(android.net.Uri);
-    public java.io.OutputStream openOutputStream(android.net.Uri);
-    public java.io.OutputStream openOutputStream(android.net.Uri, java.lang.String);
-    public android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle);
-    public android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal);
-    public void putCache(android.net.Uri, android.os.Bundle);
-    public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
-    public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
-    public android.database.Cursor query(android.net.Uri, java.lang.String[], android.os.Bundle, android.os.CancellationSignal);
-    public boolean refresh(android.net.Uri, android.os.Bundle, android.os.CancellationSignal);
-    public void registerContentObserver(android.net.Uri, boolean, android.database.ContentObserver);
-    public void registerContentObserver(android.net.Uri, boolean, android.database.ContentObserver, int);
-    public void releasePersistableUriPermission(android.net.Uri, int);
-    public abstract boolean releaseProvider(android.content.IContentProvider);
-    public abstract boolean releaseUnstableProvider(android.content.IContentProvider);
-    public static void removePeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle);
-    public static void removeStatusChangeListener(java.lang.Object);
-    public static void requestSync(android.accounts.Account, java.lang.String, android.os.Bundle);
-    public static void requestSync(android.content.SyncRequest);
-    public static void requestSyncAsUser(android.accounts.Account, java.lang.String, int, android.os.Bundle);
-    public int resolveUserId(android.net.Uri);
-    public static void setIsSyncable(android.accounts.Account, java.lang.String, int);
-    public static void setMasterSyncAutomatically(boolean);
-    public static void setMasterSyncAutomaticallyAsUser(boolean, int);
-    public static void setSyncAutomatically(android.accounts.Account, java.lang.String, boolean);
-    public static void setSyncAutomaticallyAsUser(android.accounts.Account, java.lang.String, boolean, int);
-    public void startSync(android.net.Uri, android.os.Bundle);
-    public static int syncErrorStringToInt(java.lang.String);
-    public static java.lang.String syncErrorToString(int);
-    public void takePersistableUriPermission(android.net.Uri, int);
-    public void takePersistableUriPermission(java.lang.String, android.net.Uri, int);
-    public android.net.Uri uncanonicalize(android.net.Uri);
-    public void unregisterContentObserver(android.database.ContentObserver);
-    public abstract void unstableProviderDied(android.content.IContentProvider);
-    public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
-    public static void validateSyncExtrasBundle(android.os.Bundle);
-
-
-    public static android.content.Intent ACTION_SYNC_CONN_STATUS_CHANGED;
-    public static java.lang.String ANY_CURSOR_ITEM_TYPE;
-    public static java.lang.String CONTENT_SERVICE_NAME;
-    public static java.lang.String CURSOR_DIR_BASE_TYPE;
-    public static java.lang.String CURSOR_ITEM_BASE_TYPE;
-    public static java.lang.String EXTRA_HONORED_ARGS;
-    public static java.lang.String EXTRA_REFRESH_SUPPORTED;
-    public static java.lang.String EXTRA_SIZE;
-    public static java.lang.String EXTRA_TOTAL_COUNT;
-    public static int NOTIFY_SKIP_NOTIFY_FOR_DESCENDANTS;
-    public static int NOTIFY_SYNC_TO_NETWORK;
-    public static java.lang.String QUERY_ARG_LIMIT;
-    public static java.lang.String QUERY_ARG_OFFSET;
-    public static java.lang.String QUERY_ARG_SORT_COLLATION;
-    public static java.lang.String QUERY_ARG_SORT_COLUMNS;
-    public static java.lang.String QUERY_ARG_SORT_DIRECTION;
-    public static java.lang.String QUERY_ARG_SQL_SELECTION;
-    public static java.lang.String QUERY_ARG_SQL_SELECTION_ARGS;
-    public static java.lang.String QUERY_ARG_SQL_SORT_ORDER;
-    public static int QUERY_SORT_DIRECTION_ASCENDING;
-    public static int QUERY_SORT_DIRECTION_DESCENDING;
-    public static java.lang.String SCHEME_ANDROID_RESOURCE;
-    public static java.lang.String SCHEME_CONTENT;
-    public static java.lang.String SCHEME_FILE;
-    public static int SYNC_ERROR_AUTHENTICATION;
-    public static int SYNC_ERROR_CONFLICT;
-    public static int SYNC_ERROR_INTERNAL;
-    public static int SYNC_ERROR_IO;
-    public static int SYNC_ERROR_PARSE;
-    public static int SYNC_ERROR_SYNC_ALREADY_IN_PROGRESS;
-    public static int SYNC_ERROR_TOO_MANY_DELETIONS;
-    public static int SYNC_ERROR_TOO_MANY_RETRIES;
-    public static int SYNC_EXEMPTION_NONE;
-    public static int SYNC_EXEMPTION_PROMOTE_BUCKET;
-    public static int SYNC_EXEMPTION_PROMOTE_BUCKET_WITH_TEMP;
-    public static java.lang.String SYNC_EXTRAS_ACCOUNT;
-    public static java.lang.String SYNC_EXTRAS_DISALLOW_METERED;
-    public static java.lang.String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS;
-    public static java.lang.String SYNC_EXTRAS_DO_NOT_RETRY;
-    public static java.lang.String SYNC_EXTRAS_EXPECTED_DOWNLOAD;
-    public static java.lang.String SYNC_EXTRAS_EXPECTED_UPLOAD;
-    public static java.lang.String SYNC_EXTRAS_EXPEDITED;
-    public static java.lang.String SYNC_EXTRAS_FORCE;
-    public static java.lang.String SYNC_EXTRAS_IGNORE_BACKOFF;
-    public static java.lang.String SYNC_EXTRAS_IGNORE_SETTINGS;
-    public static java.lang.String SYNC_EXTRAS_INITIALIZE;
-    public static java.lang.String SYNC_EXTRAS_MANUAL;
-    public static java.lang.String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS;
-    public static java.lang.String SYNC_EXTRAS_PRIORITY;
-    public static java.lang.String SYNC_EXTRAS_REQUIRE_CHARGING;
-    public static java.lang.String SYNC_EXTRAS_UPLOAD;
-    public static int SYNC_OBSERVER_TYPE_ACTIVE;
-    public static int SYNC_OBSERVER_TYPE_ALL;
-    public static int SYNC_OBSERVER_TYPE_PENDING;
-    public static int SYNC_OBSERVER_TYPE_SETTINGS;
-    public static int SYNC_OBSERVER_TYPE_STATUS;
-    public static java.lang.String SYNC_VIRTUAL_EXTRAS_EXEMPTION_FLAG;
-}
-
--keep class android.content.ContentResolver$OpenResourceIdResult {
-    <init>();
-
-
-
-    public int id;
-    public android.content.res.Resources r;
-}
-
--keep class android.content.ContentValues {
-    <init>();
-    <init>(int);
-    <init>(android.content.ContentValues);
-
-    public void clear();
-    public boolean containsKey(java.lang.String);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public java.lang.Object get(java.lang.String);
-    public java.lang.Boolean getAsBoolean(java.lang.String);
-    public java.lang.Byte getAsByte(java.lang.String);
-    public byte[] getAsByteArray(java.lang.String);
-    public java.lang.Double getAsDouble(java.lang.String);
-    public java.lang.Float getAsFloat(java.lang.String);
-    public java.lang.Integer getAsInteger(java.lang.String);
-    public java.lang.Long getAsLong(java.lang.String);
-    public java.lang.Short getAsShort(java.lang.String);
-    public java.lang.String getAsString(java.lang.String);
-    public java.util.ArrayList getStringArrayList(java.lang.String);
-    public int hashCode();
-    public boolean isEmpty();
-    public java.util.Set keySet();
-    public void put(java.lang.String, java.lang.String);
-    public void put(java.lang.String, java.lang.Byte);
-    public void put(java.lang.String, java.lang.Short);
-    public void put(java.lang.String, java.lang.Integer);
-    public void put(java.lang.String, java.lang.Long);
-    public void put(java.lang.String, java.lang.Float);
-    public void put(java.lang.String, java.lang.Double);
-    public void put(java.lang.String, java.lang.Boolean);
-    public void put(java.lang.String, byte[]);
-    public void putAll(android.content.ContentValues);
-    public void putNull(java.lang.String);
-    public void putStringArrayList(java.lang.String, java.util.ArrayList);
-    public void remove(java.lang.String);
-    public int size();
-    public java.lang.String toString();
-    public java.util.Set valueSet();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String TAG;
-}
-
--keep class android.content.Context {
-    <init>();
-
-    public void assertRuntimeOverlayThemable();
-    public abstract boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
-    public boolean bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle);
-    public boolean bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.Handler, android.os.UserHandle);
-    public abstract boolean canLoadUnsafeResources();
-    public boolean canStartActivityForResult();
-    public abstract int checkCallingOrSelfPermission(java.lang.String);
-    public abstract int checkCallingOrSelfUriPermission(android.net.Uri, int);
-    public abstract int checkCallingPermission(java.lang.String);
-    public abstract int checkCallingUriPermission(android.net.Uri, int);
-    public abstract int checkPermission(java.lang.String, int, int);
-    public abstract int checkPermission(java.lang.String, int, int, android.os.IBinder);
-    public abstract int checkSelfPermission(java.lang.String);
-    public abstract int checkUriPermission(android.net.Uri, int, int, int);
-    public abstract int checkUriPermission(android.net.Uri, int, int, int, android.os.IBinder);
-    public abstract int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
-    public abstract void clearWallpaper();
-    public abstract android.content.Context createApplicationContext(android.content.pm.ApplicationInfo, int);
-    public abstract android.content.Context createConfigurationContext(android.content.res.Configuration);
-    public abstract android.content.Context createContextForSplit(java.lang.String);
-    public abstract android.content.Context createCredentialProtectedStorageContext();
-    public abstract android.content.Context createDeviceProtectedStorageContext();
-    public abstract android.content.Context createDisplayContext(android.view.Display);
-    public abstract android.content.Context createPackageContext(java.lang.String, int);
-    public android.content.Context createPackageContextAsUser(java.lang.String, int, android.os.UserHandle);
-    public abstract java.lang.String[] databaseList();
-    public abstract boolean deleteDatabase(java.lang.String);
-    public abstract boolean deleteFile(java.lang.String);
-    public abstract boolean deleteSharedPreferences(java.lang.String);
-    public abstract void enforceCallingOrSelfPermission(java.lang.String, java.lang.String);
-    public abstract void enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String);
-    public abstract void enforceCallingPermission(java.lang.String, java.lang.String);
-    public abstract void enforceCallingUriPermission(android.net.Uri, int, java.lang.String);
-    public abstract void enforcePermission(java.lang.String, int, int, java.lang.String);
-    public abstract void enforceUriPermission(android.net.Uri, int, int, int, java.lang.String);
-    public abstract void enforceUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int, java.lang.String);
-    public abstract java.lang.String[] fileList();
-    public android.os.IBinder getActivityToken();
-    public abstract android.content.Context getApplicationContext();
-    public abstract android.content.pm.ApplicationInfo getApplicationInfo();
-    public abstract android.content.res.AssetManager getAssets();
-    public android.view.autofill.AutofillManager$AutofillClient getAutofillClient();
-    public abstract java.lang.String getBasePackageName();
-    public abstract java.io.File getCacheDir();
-    public abstract java.lang.ClassLoader getClassLoader();
-    public abstract java.io.File getCodeCacheDir();
-    public int getColor(int);
-    public android.content.res.ColorStateList getColorStateList(int);
-    public abstract android.content.ContentResolver getContentResolver();
-    public abstract java.io.File getDataDir();
-    public abstract java.io.File getDatabasePath(java.lang.String);
-    public abstract java.io.File getDir(java.lang.String, int);
-    public abstract android.view.Display getDisplay();
-    public abstract android.view.DisplayAdjustments getDisplayAdjustments(int);
-    public android.graphics.drawable.Drawable getDrawable(int);
-    public abstract java.io.File getExternalCacheDir();
-    public abstract java.io.File[] getExternalCacheDirs();
-    public abstract java.io.File getExternalFilesDir(java.lang.String);
-    public abstract java.io.File[] getExternalFilesDirs(java.lang.String);
-    public abstract java.io.File[] getExternalMediaDirs();
-    public abstract java.io.File getFileStreamPath(java.lang.String);
-    public abstract java.io.File getFilesDir();
-    public android.app.IApplicationThread getIApplicationThread();
-    public java.util.concurrent.Executor getMainExecutor();
-    public abstract android.os.Looper getMainLooper();
-    public android.os.Handler getMainThreadHandler();
-    public int getNextAutofillId();
-    public abstract java.io.File getNoBackupFilesDir();
-    public abstract java.io.File getObbDir();
-    public abstract java.io.File[] getObbDirs();
-    public abstract java.lang.String getOpPackageName();
-    public abstract java.lang.String getPackageCodePath();
-    public abstract android.content.pm.PackageManager getPackageManager();
-    public abstract java.lang.String getPackageName();
-    public abstract java.lang.String getPackageResourcePath();
-    public abstract java.io.File getPreloadsFileCache();
-    public abstract android.content.res.Resources getResources();
-    public android.app.IServiceConnection getServiceDispatcher(android.content.ServiceConnection, android.os.Handler, int);
-    public abstract android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
-    public abstract android.content.SharedPreferences getSharedPreferences(java.io.File, int);
-    public abstract java.io.File getSharedPreferencesPath(java.lang.String);
-    public java.io.File getSharedPrefsFile(java.lang.String);
-    public java.lang.String getString(int);
-    public java.lang.String getString(int, java.lang.Object[]);
-    public abstract java.lang.Object getSystemService(java.lang.String);
-    public java.lang.Object getSystemService(java.lang.Class);
-    public abstract java.lang.String getSystemServiceName(java.lang.Class);
-    public java.lang.CharSequence getText(int);
-    public abstract android.content.res.Resources$Theme getTheme();
-    public int getThemeResId();
-    public android.os.UserHandle getUser();
-    public int getUserId();
-    public abstract android.graphics.drawable.Drawable getWallpaper();
-    public abstract int getWallpaperDesiredMinimumHeight();
-    public abstract int getWallpaperDesiredMinimumWidth();
-    public abstract void grantUriPermission(java.lang.String, android.net.Uri, int);
-    public boolean isAutofillCompatibilityEnabled();
-    public abstract boolean isCredentialProtectedStorage();
-    public abstract boolean isDeviceProtectedStorage();
-    public boolean isRestricted();
-    public abstract boolean moveDatabaseFrom(android.content.Context, java.lang.String);
-    public abstract boolean moveSharedPreferencesFrom(android.content.Context, java.lang.String);
-    public android.content.res.TypedArray obtainStyledAttributes(int[]);
-    public android.content.res.TypedArray obtainStyledAttributes(int, int[]);
-    public android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[]);
-    public android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[], int, int);
-    public abstract java.io.FileInputStream openFileInput(java.lang.String);
-    public abstract java.io.FileOutputStream openFileOutput(java.lang.String, int);
-    public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory);
-    public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler);
-    public abstract android.graphics.drawable.Drawable peekWallpaper();
-    public void registerComponentCallbacks(android.content.ComponentCallbacks);
-    public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
-    public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
-    public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler);
-    public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int);
-    public abstract android.content.Intent registerReceiverAsUser(android.content.BroadcastReceiver, android.os.UserHandle, android.content.IntentFilter, java.lang.String, android.os.Handler);
-    public abstract void reloadSharedPreferences();
-    public abstract void removeStickyBroadcast(android.content.Intent);
-    public abstract void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public abstract void revokeUriPermission(android.net.Uri, int);
-    public abstract void revokeUriPermission(java.lang.String, android.net.Uri, int);
-    public abstract void sendBroadcast(android.content.Intent);
-    public abstract void sendBroadcast(android.content.Intent, java.lang.String);
-    public abstract void sendBroadcast(android.content.Intent, java.lang.String, android.os.Bundle);
-    public abstract void sendBroadcast(android.content.Intent, java.lang.String, int);
-    public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String);
-    public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.os.Bundle);
-    public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int);
-    public abstract void sendBroadcastAsUserMultiplePermissions(android.content.Intent, android.os.UserHandle, java.lang.String[]);
-    public abstract void sendBroadcastMultiplePermissions(android.content.Intent, java.lang.String[]);
-    public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String);
-    public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public abstract void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public abstract void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public abstract void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public abstract void sendStickyBroadcast(android.content.Intent);
-    public abstract void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public abstract void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.os.Bundle);
-    public abstract void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public abstract void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void setAutofillClient(android.view.autofill.AutofillManager$AutofillClient);
-    public void setAutofillCompatibilityEnabled(boolean);
-    public abstract void setTheme(int);
-    public abstract void setWallpaper(android.graphics.Bitmap);
-    public abstract void setWallpaper(java.io.InputStream);
-    public abstract void startActivities(android.content.Intent[]);
-    public abstract void startActivities(android.content.Intent[], android.os.Bundle);
-    public int startActivitiesAsUser(android.content.Intent[], android.os.Bundle, android.os.UserHandle);
-    public abstract void startActivity(android.content.Intent);
-    public abstract void startActivity(android.content.Intent, android.os.Bundle);
-    public void startActivityAsUser(android.content.Intent, android.os.UserHandle);
-    public void startActivityAsUser(android.content.Intent, android.os.Bundle, android.os.UserHandle);
-    public void startActivityForResult(java.lang.String, android.content.Intent, int, android.os.Bundle);
-    public abstract android.content.ComponentName startForegroundService(android.content.Intent);
-    public abstract android.content.ComponentName startForegroundServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public abstract boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle);
-    public abstract void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int);
-    public abstract void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle);
-    public abstract android.content.ComponentName startService(android.content.Intent);
-    public abstract android.content.ComponentName startServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public abstract boolean stopService(android.content.Intent);
-    public abstract boolean stopServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public abstract void unbindService(android.content.ServiceConnection);
-    public void unregisterComponentCallbacks(android.content.ComponentCallbacks);
-    public abstract void unregisterReceiver(android.content.BroadcastReceiver);
-    public abstract void updateDisplay(int);
-
-
-    public static java.lang.String ACCESSIBILITY_SERVICE;
-    public static java.lang.String ACCOUNT_SERVICE;
-    public static java.lang.String ACTIVITY_SERVICE;
-    public static java.lang.String ALARM_SERVICE;
-    public static java.lang.String APPWIDGET_SERVICE;
-    public static java.lang.String APP_OPS_SERVICE;
-    public static java.lang.String AUDIO_SERVICE;
-    public static java.lang.String AUTOFILL_MANAGER_SERVICE;
-    public static java.lang.String BACKUP_SERVICE;
-    public static java.lang.String BATTERY_SERVICE;
-    public static int BIND_ABOVE_CLIENT;
-    public static int BIND_ADJUST_WITH_ACTIVITY;
-    public static int BIND_ALLOW_INSTANT;
-    public static int BIND_ALLOW_OOM_MANAGEMENT;
-    public static int BIND_ALLOW_WHITELIST_MANAGEMENT;
-    public static int BIND_AUTO_CREATE;
-    public static int BIND_DEBUG_UNBIND;
-    public static int BIND_EXTERNAL_SERVICE;
-    public static int BIND_FOREGROUND_SERVICE;
-    public static int BIND_FOREGROUND_SERVICE_WHILE_AWAKE;
-    public static int BIND_IMPORTANT;
-    public static int BIND_IMPORTANT_BACKGROUND;
-    public static int BIND_NOT_FOREGROUND;
-    public static int BIND_NOT_VISIBLE;
-    public static int BIND_SHOWING_UI;
-    public static int BIND_TREAT_LIKE_ACTIVITY;
-    public static int BIND_VISIBLE;
-    public static int BIND_WAIVE_PRIORITY;
-    public static java.lang.String BLUETOOTH_SERVICE;
-    public static java.lang.String CAMERA_SERVICE;
-    public static java.lang.String CAPTIONING_SERVICE;
-    public static java.lang.String CARRIER_CONFIG_SERVICE;
-    public static java.lang.String CLIPBOARD_SERVICE;
-    public static java.lang.String COMPANION_DEVICE_SERVICE;
-    public static java.lang.String CONNECTIVITY_SERVICE;
-    public static java.lang.String CONSUMER_IR_SERVICE;
-    public static java.lang.String CONTEXTHUB_SERVICE;
-    public static int CONTEXT_CREDENTIAL_PROTECTED_STORAGE;
-    public static int CONTEXT_DEVICE_PROTECTED_STORAGE;
-    public static int CONTEXT_IGNORE_SECURITY;
-    public static int CONTEXT_INCLUDE_CODE;
-    public static int CONTEXT_REGISTER_PACKAGE;
-    public static int CONTEXT_RESTRICTED;
-    public static java.lang.String COUNTRY_DETECTOR;
-    public static java.lang.String CROSS_PROFILE_APPS_SERVICE;
-    public static java.lang.String DEVICE_IDENTIFIERS_SERVICE;
-    public static java.lang.String DEVICE_IDLE_CONTROLLER;
-    public static java.lang.String DEVICE_POLICY_SERVICE;
-    public static java.lang.String DISPLAY_SERVICE;
-    public static java.lang.String DOWNLOAD_SERVICE;
-    public static java.lang.String DROPBOX_SERVICE;
-    public static java.lang.String ETHERNET_SERVICE;
-    public static java.lang.String EUICC_CARD_SERVICE;
-    public static java.lang.String EUICC_SERVICE;
-    public static java.lang.String FINGERPRINT_SERVICE;
-    public static java.lang.String GATEKEEPER_SERVICE;
-    public static java.lang.String HARDWARE_PROPERTIES_SERVICE;
-    public static java.lang.String HDMI_CONTROL_SERVICE;
-    public static java.lang.String INCIDENT_SERVICE;
-    public static java.lang.String INPUT_METHOD_SERVICE;
-    public static java.lang.String INPUT_SERVICE;
-    public static java.lang.String IPSEC_SERVICE;
-    public static java.lang.String JOB_SCHEDULER_SERVICE;
-    public static java.lang.String KEYGUARD_SERVICE;
-    public static java.lang.String LAUNCHER_APPS_SERVICE;
-    public static java.lang.String LAYOUT_INFLATER_SERVICE;
-    public static java.lang.String LOCATION_SERVICE;
-    public static java.lang.String LOWPAN_SERVICE;
-    public static java.lang.String MEDIA_PROJECTION_SERVICE;
-    public static java.lang.String MEDIA_ROUTER_SERVICE;
-    public static java.lang.String MEDIA_SESSION_SERVICE;
-    public static java.lang.String MIDI_SERVICE;
-    public static int MODE_APPEND;
-    public static int MODE_ENABLE_WRITE_AHEAD_LOGGING;
-    public static int MODE_MULTI_PROCESS;
-    public static int MODE_NO_LOCALIZED_COLLATORS;
-    public static int MODE_PRIVATE;
-    public static int MODE_WORLD_READABLE;
-    public static int MODE_WORLD_WRITEABLE;
-    public static java.lang.String NETWORKMANAGEMENT_SERVICE;
-    public static java.lang.String NETWORK_POLICY_SERVICE;
-    public static java.lang.String NETWORK_SCORE_SERVICE;
-    public static java.lang.String NETWORK_STATS_SERVICE;
-    public static java.lang.String NETWORK_WATCHLIST_SERVICE;
-    public static java.lang.String NFC_SERVICE;
-    public static java.lang.String NOTIFICATION_SERVICE;
-    public static java.lang.String NSD_SERVICE;
-    public static java.lang.String OEM_LOCK_SERVICE;
-    public static java.lang.String OVERLAY_SERVICE;
-    public static java.lang.String PERSISTENT_DATA_BLOCK_SERVICE;
-    public static java.lang.String POWER_SERVICE;
-    public static java.lang.String PRINT_SERVICE;
-    public static java.lang.String RADIO_SERVICE;
-    public static int RECEIVER_VISIBLE_TO_INSTANT_APPS;
-    public static java.lang.String RECOVERY_SERVICE;
-    public static java.lang.String RESTRICTIONS_SERVICE;
-    public static java.lang.String SEARCH_SERVICE;
-    public static java.lang.String SECURE_ELEMENT_SERVICE;
-    public static java.lang.String SENSOR_SERVICE;
-    public static java.lang.String SERIAL_SERVICE;
-    public static java.lang.String SHORTCUT_SERVICE;
-    public static java.lang.String SIP_SERVICE;
-    public static java.lang.String SLICE_SERVICE;
-    public static java.lang.String SOUND_TRIGGER_SERVICE;
-    public static java.lang.String STATS_COMPANION_SERVICE;
-    public static java.lang.String STATS_MANAGER;
-    public static java.lang.String STATUS_BAR_SERVICE;
-    public static java.lang.String STORAGE_SERVICE;
-    public static java.lang.String STORAGE_STATS_SERVICE;
-    public static java.lang.String SYSTEM_HEALTH_SERVICE;
-    public static java.lang.String SYSTEM_UPDATE_SERVICE;
-    public static java.lang.String TELECOM_SERVICE;
-    public static java.lang.String TELEPHONY_SERVICE;
-    public static java.lang.String TELEPHONY_SUBSCRIPTION_SERVICE;
-    public static java.lang.String TEXT_CLASSIFICATION_SERVICE;
-    public static java.lang.String TEXT_SERVICES_MANAGER_SERVICE;
-    public static java.lang.String TIME_ZONE_RULES_MANAGER_SERVICE;
-    public static java.lang.String TRUST_SERVICE;
-    public static java.lang.String TV_INPUT_SERVICE;
-    public static java.lang.String UI_MODE_SERVICE;
-    public static java.lang.String UPDATE_LOCK_SERVICE;
-    public static java.lang.String USAGE_STATS_SERVICE;
-    public static java.lang.String USB_SERVICE;
-    public static java.lang.String USER_SERVICE;
-    public static java.lang.String VIBRATOR_SERVICE;
-    public static java.lang.String VOICE_INTERACTION_MANAGER_SERVICE;
-    public static java.lang.String VR_SERVICE;
-    public static java.lang.String WALLPAPER_SERVICE;
-    public static java.lang.String WIFI_AWARE_SERVICE;
-    public static java.lang.String WIFI_P2P_SERVICE;
-    public static java.lang.String WIFI_RTT_RANGING_SERVICE;
-    public static java.lang.String WIFI_RTT_SERVICE;
-    public static java.lang.String WIFI_SCANNING_SERVICE;
-    public static java.lang.String WIFI_SERVICE;
-    public static java.lang.String WINDOW_SERVICE;
-}
-
--keep class android.content.ContextWrapper {
-    <init>(android.content.Context);
-
-    protected void attachBaseContext(android.content.Context);
-    public boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
-    public boolean bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle);
-    public boolean bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.Handler, android.os.UserHandle);
-    public boolean canLoadUnsafeResources();
-    public boolean canStartActivityForResult();
-    public int checkCallingOrSelfPermission(java.lang.String);
-    public int checkCallingOrSelfUriPermission(android.net.Uri, int);
-    public int checkCallingPermission(java.lang.String);
-    public int checkCallingUriPermission(android.net.Uri, int);
-    public int checkPermission(java.lang.String, int, int);
-    public int checkPermission(java.lang.String, int, int, android.os.IBinder);
-    public int checkSelfPermission(java.lang.String);
-    public int checkUriPermission(android.net.Uri, int, int, int);
-    public int checkUriPermission(android.net.Uri, int, int, int, android.os.IBinder);
-    public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
-    public void clearWallpaper();
-    public android.content.Context createApplicationContext(android.content.pm.ApplicationInfo, int);
-    public android.content.Context createConfigurationContext(android.content.res.Configuration);
-    public android.content.Context createContextForSplit(java.lang.String);
-    public android.content.Context createCredentialProtectedStorageContext();
-    public android.content.Context createDeviceProtectedStorageContext();
-    public android.content.Context createDisplayContext(android.view.Display);
-    public android.content.Context createPackageContext(java.lang.String, int);
-    public android.content.Context createPackageContextAsUser(java.lang.String, int, android.os.UserHandle);
-    public java.lang.String[] databaseList();
-    public boolean deleteDatabase(java.lang.String);
-    public boolean deleteFile(java.lang.String);
-    public boolean deleteSharedPreferences(java.lang.String);
-    public void enforceCallingOrSelfPermission(java.lang.String, java.lang.String);
-    public void enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String);
-    public void enforceCallingPermission(java.lang.String, java.lang.String);
-    public void enforceCallingUriPermission(android.net.Uri, int, java.lang.String);
-    public void enforcePermission(java.lang.String, int, int, java.lang.String);
-    public void enforceUriPermission(android.net.Uri, int, int, int, java.lang.String);
-    public void enforceUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int, java.lang.String);
-    public java.lang.String[] fileList();
-    public android.os.IBinder getActivityToken();
-    public android.content.Context getApplicationContext();
-    public android.content.pm.ApplicationInfo getApplicationInfo();
-    public android.content.res.AssetManager getAssets();
-    public android.view.autofill.AutofillManager$AutofillClient getAutofillClient();
-    public android.content.Context getBaseContext();
-    public java.lang.String getBasePackageName();
-    public java.io.File getCacheDir();
-    public java.lang.ClassLoader getClassLoader();
-    public java.io.File getCodeCacheDir();
-    public android.content.ContentResolver getContentResolver();
-    public java.io.File getDataDir();
-    public java.io.File getDatabasePath(java.lang.String);
-    public java.io.File getDir(java.lang.String, int);
-    public android.view.Display getDisplay();
-    public android.view.DisplayAdjustments getDisplayAdjustments(int);
-    public java.io.File getExternalCacheDir();
-    public java.io.File[] getExternalCacheDirs();
-    public java.io.File getExternalFilesDir(java.lang.String);
-    public java.io.File[] getExternalFilesDirs(java.lang.String);
-    public java.io.File[] getExternalMediaDirs();
-    public java.io.File getFileStreamPath(java.lang.String);
-    public java.io.File getFilesDir();
-    public android.app.IApplicationThread getIApplicationThread();
-    public java.util.concurrent.Executor getMainExecutor();
-    public android.os.Looper getMainLooper();
-    public android.os.Handler getMainThreadHandler();
-    public int getNextAutofillId();
-    public java.io.File getNoBackupFilesDir();
-    public java.io.File getObbDir();
-    public java.io.File[] getObbDirs();
-    public java.lang.String getOpPackageName();
-    public java.lang.String getPackageCodePath();
-    public android.content.pm.PackageManager getPackageManager();
-    public java.lang.String getPackageName();
-    public java.lang.String getPackageResourcePath();
-    public java.io.File getPreloadsFileCache();
-    public android.content.res.Resources getResources();
-    public android.app.IServiceConnection getServiceDispatcher(android.content.ServiceConnection, android.os.Handler, int);
-    public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
-    public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
-    public java.io.File getSharedPreferencesPath(java.lang.String);
-    public java.lang.Object getSystemService(java.lang.String);
-    public java.lang.String getSystemServiceName(java.lang.Class);
-    public android.content.res.Resources$Theme getTheme();
-    public int getThemeResId();
-    public int getUserId();
-    public android.graphics.drawable.Drawable getWallpaper();
-    public int getWallpaperDesiredMinimumHeight();
-    public int getWallpaperDesiredMinimumWidth();
-    public void grantUriPermission(java.lang.String, android.net.Uri, int);
-    public boolean isAutofillCompatibilityEnabled();
-    public boolean isCredentialProtectedStorage();
-    public boolean isDeviceProtectedStorage();
-    public boolean isRestricted();
-    public boolean moveDatabaseFrom(android.content.Context, java.lang.String);
-    public boolean moveSharedPreferencesFrom(android.content.Context, java.lang.String);
-    public java.io.FileInputStream openFileInput(java.lang.String);
-    public java.io.FileOutputStream openFileOutput(java.lang.String, int);
-    public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory);
-    public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler);
-    public android.graphics.drawable.Drawable peekWallpaper();
-    public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
-    public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int);
-    public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler);
-    public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int);
-    public android.content.Intent registerReceiverAsUser(android.content.BroadcastReceiver, android.os.UserHandle, android.content.IntentFilter, java.lang.String, android.os.Handler);
-    public void reloadSharedPreferences();
-    public void removeStickyBroadcast(android.content.Intent);
-    public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public void revokeUriPermission(android.net.Uri, int);
-    public void revokeUriPermission(java.lang.String, android.net.Uri, int);
-    public void sendBroadcast(android.content.Intent);
-    public void sendBroadcast(android.content.Intent, java.lang.String);
-    public void sendBroadcast(android.content.Intent, java.lang.String, android.os.Bundle);
-    public void sendBroadcast(android.content.Intent, java.lang.String, int);
-    public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String);
-    public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.os.Bundle);
-    public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int);
-    public void sendBroadcastAsUserMultiplePermissions(android.content.Intent, android.os.UserHandle, java.lang.String[]);
-    public void sendBroadcastMultiplePermissions(android.content.Intent, java.lang.String[]);
-    public void sendOrderedBroadcast(android.content.Intent, java.lang.String);
-    public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcast(android.content.Intent, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendStickyBroadcast(android.content.Intent);
-    public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
-    public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.os.Bundle);
-    public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
-    public void setAutofillClient(android.view.autofill.AutofillManager$AutofillClient);
-    public void setAutofillCompatibilityEnabled(boolean);
-    public void setTheme(int);
-    public void setWallpaper(android.graphics.Bitmap);
-    public void setWallpaper(java.io.InputStream);
-    public void startActivities(android.content.Intent[]);
-    public void startActivities(android.content.Intent[], android.os.Bundle);
-    public int startActivitiesAsUser(android.content.Intent[], android.os.Bundle, android.os.UserHandle);
-    public void startActivity(android.content.Intent);
-    public void startActivity(android.content.Intent, android.os.Bundle);
-    public void startActivityAsUser(android.content.Intent, android.os.UserHandle);
-    public void startActivityAsUser(android.content.Intent, android.os.Bundle, android.os.UserHandle);
-    public void startActivityForResult(java.lang.String, android.content.Intent, int, android.os.Bundle);
-    public android.content.ComponentName startForegroundService(android.content.Intent);
-    public android.content.ComponentName startForegroundServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle);
-    public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int);
-    public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle);
-    public android.content.ComponentName startService(android.content.Intent);
-    public android.content.ComponentName startServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public boolean stopService(android.content.Intent);
-    public boolean stopServiceAsUser(android.content.Intent, android.os.UserHandle);
-    public void unbindService(android.content.ServiceConnection);
-    public void unregisterReceiver(android.content.BroadcastReceiver);
-    public void updateDisplay(int);
-
-
-}
-
--keep class android.content.DialogInterface {
-
-    public abstract void cancel();
-    public abstract void dismiss();
-
-
-    public static int BUTTON1;
-    public static int BUTTON2;
-    public static int BUTTON3;
-    public static int BUTTON_NEGATIVE;
-    public static int BUTTON_NEUTRAL;
-    public static int BUTTON_POSITIVE;
-}
-
--keep class android.content.DialogInterface$OnCancelListener {
-
-    public abstract void onCancel(android.content.DialogInterface);
-
-
-}
-
--keep class android.content.DialogInterface$OnDismissListener {
-
-    public abstract void onDismiss(android.content.DialogInterface);
-
-
-}
-
--keep class android.content.DialogInterface$OnKeyListener {
-
-    public abstract boolean onKey(android.content.DialogInterface, int, android.view.KeyEvent);
-
-
-}
-
--keep class android.content.DialogInterface$OnShowListener {
-
-    public abstract void onShow(android.content.DialogInterface);
-
-
-}
-
--keep class android.content.IContentProvider {
-
-    public abstract android.content.ContentProviderResult[] applyBatch(java.lang.String, java.util.ArrayList);
-    public abstract int bulkInsert(java.lang.String, android.net.Uri, android.content.ContentValues[]);
-    public abstract android.os.Bundle call(java.lang.String, java.lang.String, java.lang.String, android.os.Bundle);
-    public abstract android.net.Uri canonicalize(java.lang.String, android.net.Uri);
-    public abstract android.os.ICancellationSignal createCancellationSignal();
-    public abstract int delete(java.lang.String, android.net.Uri, java.lang.String, java.lang.String[]);
-    public abstract java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
-    public abstract java.lang.String getType(android.net.Uri);
-    public abstract android.net.Uri insert(java.lang.String, android.net.Uri, android.content.ContentValues);
-    public abstract android.content.res.AssetFileDescriptor openAssetFile(java.lang.String, android.net.Uri, java.lang.String, android.os.ICancellationSignal);
-    public abstract android.os.ParcelFileDescriptor openFile(java.lang.String, android.net.Uri, java.lang.String, android.os.ICancellationSignal, android.os.IBinder);
-    public abstract android.content.res.AssetFileDescriptor openTypedAssetFile(java.lang.String, android.net.Uri, java.lang.String, android.os.Bundle, android.os.ICancellationSignal);
-    public abstract android.database.Cursor query(java.lang.String, android.net.Uri, java.lang.String[], android.os.Bundle, android.os.ICancellationSignal);
-    public abstract boolean refresh(java.lang.String, android.net.Uri, android.os.Bundle, android.os.ICancellationSignal);
-    public abstract android.net.Uri uncanonicalize(java.lang.String, android.net.Uri);
-    public abstract int update(java.lang.String, android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
-
-
-    public static int APPLY_BATCH_TRANSACTION;
-    public static int BULK_INSERT_TRANSACTION;
-    public static int CALL_TRANSACTION;
-    public static int CANONICALIZE_TRANSACTION;
-    public static int CREATE_CANCELATION_SIGNAL_TRANSACTION;
-    public static int DELETE_TRANSACTION;
-    public static int GET_STREAM_TYPES_TRANSACTION;
-    public static int GET_TYPE_TRANSACTION;
-    public static int INSERT_TRANSACTION;
-    public static int OPEN_ASSET_FILE_TRANSACTION;
-    public static int OPEN_FILE_TRANSACTION;
-    public static int OPEN_TYPED_ASSET_FILE_TRANSACTION;
-    public static int QUERY_TRANSACTION;
-    public static int REFRESH_TRANSACTION;
-    public static int UNCANONICALIZE_TRANSACTION;
-    public static int UPDATE_TRANSACTION;
-    public static java.lang.String descriptor;
-}
-
--keep class android.content.IContentService {
-
-    public abstract void addPeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle, long);
-    public abstract void addStatusChangeListener(int, android.content.ISyncStatusObserver);
-    public abstract void cancelRequest(android.content.SyncRequest);
-    public abstract void cancelSync(android.accounts.Account, java.lang.String, android.content.ComponentName);
-    public abstract void cancelSyncAsUser(android.accounts.Account, java.lang.String, android.content.ComponentName, int);
-    public abstract android.os.Bundle getCache(java.lang.String, android.net.Uri, int);
-    public abstract java.util.List getCurrentSyncs();
-    public abstract java.util.List getCurrentSyncsAsUser(int);
-    public abstract int getIsSyncable(android.accounts.Account, java.lang.String);
-    public abstract int getIsSyncableAsUser(android.accounts.Account, java.lang.String, int);
-    public abstract boolean getMasterSyncAutomatically();
-    public abstract boolean getMasterSyncAutomaticallyAsUser(int);
-    public abstract java.util.List getPeriodicSyncs(android.accounts.Account, java.lang.String, android.content.ComponentName);
-    public abstract java.lang.String[] getSyncAdapterPackagesForAuthorityAsUser(java.lang.String, int);
-    public abstract android.content.SyncAdapterType[] getSyncAdapterTypes();
-    public abstract android.content.SyncAdapterType[] getSyncAdapterTypesAsUser(int);
-    public abstract boolean getSyncAutomatically(android.accounts.Account, java.lang.String);
-    public abstract boolean getSyncAutomaticallyAsUser(android.accounts.Account, java.lang.String, int);
-    public abstract android.content.SyncStatusInfo getSyncStatus(android.accounts.Account, java.lang.String, android.content.ComponentName);
-    public abstract android.content.SyncStatusInfo getSyncStatusAsUser(android.accounts.Account, java.lang.String, android.content.ComponentName, int);
-    public abstract boolean isSyncActive(android.accounts.Account, java.lang.String, android.content.ComponentName);
-    public abstract boolean isSyncPending(android.accounts.Account, java.lang.String, android.content.ComponentName);
-    public abstract boolean isSyncPendingAsUser(android.accounts.Account, java.lang.String, android.content.ComponentName, int);
-    public abstract void notifyChange(android.net.Uri, android.database.IContentObserver, boolean, int, int, int);
-    public abstract void putCache(java.lang.String, android.net.Uri, android.os.Bundle, int);
-    public abstract void registerContentObserver(android.net.Uri, boolean, android.database.IContentObserver, int, int);
-    public abstract void removePeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle);
-    public abstract void removeStatusChangeListener(android.content.ISyncStatusObserver);
-    public abstract void requestSync(android.accounts.Account, java.lang.String, android.os.Bundle);
-    public abstract void resetTodayStats();
-    public abstract void setIsSyncable(android.accounts.Account, java.lang.String, int);
-    public abstract void setMasterSyncAutomatically(boolean);
-    public abstract void setMasterSyncAutomaticallyAsUser(boolean, int);
-    public abstract void setSyncAutomatically(android.accounts.Account, java.lang.String, boolean);
-    public abstract void setSyncAutomaticallyAsUser(android.accounts.Account, java.lang.String, boolean, int);
-    public abstract void sync(android.content.SyncRequest);
-    public abstract void syncAsUser(android.content.SyncRequest, int);
-    public abstract void unregisterContentObserver(android.database.IContentObserver);
-
-
-}
-
--keep class android.content.IIntentReceiver {
-
-    public abstract void performReceive(android.content.Intent, int, java.lang.String, android.os.Bundle, boolean, boolean, int);
-
-
-}
-
--keep class android.content.IIntentSender {
-
-    public abstract void send(int, android.content.Intent, java.lang.String, android.os.IBinder, android.content.IIntentReceiver, java.lang.String, android.os.Bundle);
-
-
-}
-
--keep class android.content.ISyncStatusObserver {
-
-    public abstract void onStatusChanged(int);
-
-
-}
-
--keep class android.content.Intent {
-    <init>();
-    <init>(android.content.Intent);
-    <init>(java.lang.String);
-    <init>(java.lang.String, android.net.Uri);
-    <init>(android.content.Context, java.lang.Class);
-    <init>(java.lang.String, android.net.Uri, android.content.Context, java.lang.Class);
-    <init>(android.os.Parcel);
-
-    public android.content.Intent addCategory(java.lang.String);
-    public android.content.Intent addFlags(int);
-    public boolean canStripForHistory();
-    public java.lang.Object clone();
-    public android.content.Intent cloneFilter();
-    public static android.content.Intent createChooser(android.content.Intent, java.lang.CharSequence);
-    public static android.content.Intent createChooser(android.content.Intent, java.lang.CharSequence, android.content.IntentSender);
-    public int describeContents();
-    public static java.lang.String dockStateToString(int);
-    public int fillIn(android.content.Intent, int);
-    public boolean filterEquals(android.content.Intent);
-    public int filterHashCode();
-    public void fixUris(int);
-    public java.lang.String getAction();
-    public boolean[] getBooleanArrayExtra(java.lang.String);
-    public boolean getBooleanExtra(java.lang.String, boolean);
-    public android.os.Bundle getBundleExtra(java.lang.String);
-    public byte[] getByteArrayExtra(java.lang.String);
-    public byte getByteExtra(java.lang.String, byte);
-    public java.util.Set getCategories();
-    public char[] getCharArrayExtra(java.lang.String);
-    public char getCharExtra(java.lang.String, char);
-    public java.lang.CharSequence[] getCharSequenceArrayExtra(java.lang.String);
-    public java.util.ArrayList getCharSequenceArrayListExtra(java.lang.String);
-    public java.lang.CharSequence getCharSequenceExtra(java.lang.String);
-    public android.content.ClipData getClipData();
-    public android.content.ComponentName getComponent();
-    public int getContentUserHint();
-    public android.net.Uri getData();
-    public java.lang.String getDataString();
-    public double[] getDoubleArrayExtra(java.lang.String);
-    public double getDoubleExtra(java.lang.String, double);
-    public java.lang.Object getExtra(java.lang.String);
-    public java.lang.Object getExtra(java.lang.String, java.lang.Object);
-    public android.os.Bundle getExtras();
-    public int getFlags();
-    public float[] getFloatArrayExtra(java.lang.String);
-    public float getFloatExtra(java.lang.String, float);
-    public android.os.IBinder getIBinderExtra(java.lang.String);
-    public int[] getIntArrayExtra(java.lang.String);
-    public int getIntExtra(java.lang.String, int);
-    public java.util.ArrayList getIntegerArrayListExtra(java.lang.String);
-    public static android.content.Intent getIntent(java.lang.String);
-    public static android.content.Intent getIntentOld(java.lang.String);
-    public java.lang.String getLaunchToken();
-    public long[] getLongArrayExtra(java.lang.String);
-    public long getLongExtra(java.lang.String, long);
-    public java.lang.String getPackage();
-    public android.os.Parcelable[] getParcelableArrayExtra(java.lang.String);
-    public java.util.ArrayList getParcelableArrayListExtra(java.lang.String);
-    public android.os.Parcelable getParcelableExtra(java.lang.String);
-    public java.lang.String getScheme();
-    public android.content.Intent getSelector();
-    public java.io.Serializable getSerializableExtra(java.lang.String);
-    public short[] getShortArrayExtra(java.lang.String);
-    public short getShortExtra(java.lang.String, short);
-    public android.graphics.Rect getSourceBounds();
-    public java.lang.String[] getStringArrayExtra(java.lang.String);
-    public java.util.ArrayList getStringArrayListExtra(java.lang.String);
-    public java.lang.String getStringExtra(java.lang.String);
-    public java.lang.String getType();
-    public boolean hasCategory(java.lang.String);
-    public boolean hasExtra(java.lang.String);
-    public boolean hasFileDescriptors();
-    public boolean hasWebURI();
-    public static boolean isAccessUriMode(int);
-    public boolean isDocument();
-    public boolean isExcludingStopped();
-    public boolean isWebIntent();
-    public static android.content.Intent makeMainActivity(android.content.ComponentName);
-    public static android.content.Intent makeMainSelectorActivity(java.lang.String, java.lang.String);
-    public static android.content.Intent makeRestartActivityTask(android.content.ComponentName);
-    public android.content.Intent maybeStripForHistory();
-    public boolean migrateExtraStreamToClipData();
-    public static java.lang.String normalizeMimeType(java.lang.String);
-    public static android.content.Intent parseCommandArgs(android.os.ShellCommand, android.content.Intent$CommandOptionHandler);
-    public static android.content.Intent parseIntent(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
-    public static android.content.Intent parseUri(java.lang.String, int);
-    public void prepareToEnterProcess();
-    public void prepareToLeaveProcess(android.content.Context);
-    public void prepareToLeaveProcess(boolean);
-    public void prepareToLeaveUser(int);
-    public static void printIntentArgsHelp(java.io.PrintWriter, java.lang.String);
-    public android.content.Intent putCharSequenceArrayListExtra(java.lang.String, java.util.ArrayList);
-    public android.content.Intent putExtra(java.lang.String, boolean);
-    public android.content.Intent putExtra(java.lang.String, byte);
-    public android.content.Intent putExtra(java.lang.String, char);
-    public android.content.Intent putExtra(java.lang.String, short);
-    public android.content.Intent putExtra(java.lang.String, int);
-    public android.content.Intent putExtra(java.lang.String, long);
-    public android.content.Intent putExtra(java.lang.String, float);
-    public android.content.Intent putExtra(java.lang.String, double);
-    public android.content.Intent putExtra(java.lang.String, java.lang.String);
-    public android.content.Intent putExtra(java.lang.String, java.lang.CharSequence);
-    public android.content.Intent putExtra(java.lang.String, android.os.Parcelable);
-    public android.content.Intent putExtra(java.lang.String, android.os.Parcelable[]);
-    public android.content.Intent putExtra(java.lang.String, java.io.Serializable);
-    public android.content.Intent putExtra(java.lang.String, boolean[]);
-    public android.content.Intent putExtra(java.lang.String, byte[]);
-    public android.content.Intent putExtra(java.lang.String, short[]);
-    public android.content.Intent putExtra(java.lang.String, char[]);
-    public android.content.Intent putExtra(java.lang.String, int[]);
-    public android.content.Intent putExtra(java.lang.String, long[]);
-    public android.content.Intent putExtra(java.lang.String, float[]);
-    public android.content.Intent putExtra(java.lang.String, double[]);
-    public android.content.Intent putExtra(java.lang.String, java.lang.String[]);
-    public android.content.Intent putExtra(java.lang.String, java.lang.CharSequence[]);
-    public android.content.Intent putExtra(java.lang.String, android.os.Bundle);
-    public android.content.Intent putExtra(java.lang.String, android.os.IBinder);
-    public android.content.Intent putExtras(android.content.Intent);
-    public android.content.Intent putExtras(android.os.Bundle);
-    public android.content.Intent putIntegerArrayListExtra(java.lang.String, java.util.ArrayList);
-    public android.content.Intent putParcelableArrayListExtra(java.lang.String, java.util.ArrayList);
-    public android.content.Intent putStringArrayListExtra(java.lang.String, java.util.ArrayList);
-    public void readFromParcel(android.os.Parcel);
-    public void removeCategory(java.lang.String);
-    public void removeExtra(java.lang.String);
-    public void removeFlags(int);
-    public void removeUnsafeExtras();
-    public android.content.Intent replaceExtras(android.content.Intent);
-    public android.content.Intent replaceExtras(android.os.Bundle);
-    public android.content.ComponentName resolveActivity(android.content.pm.PackageManager);
-    public android.content.pm.ActivityInfo resolveActivityInfo(android.content.pm.PackageManager, int);
-    public android.content.ComponentName resolveSystemService(android.content.pm.PackageManager, int);
-    public java.lang.String resolveType(android.content.Context);
-    public java.lang.String resolveType(android.content.ContentResolver);
-    public java.lang.String resolveTypeIfNeeded(android.content.ContentResolver);
-    public static android.content.Intent restoreFromXml(org.xmlpull.v1.XmlPullParser);
-    public void saveToXml(org.xmlpull.v1.XmlSerializer);
-    public android.content.Intent setAction(java.lang.String);
-    public void setAllowFds(boolean);
-    public android.content.Intent setClass(android.content.Context, java.lang.Class);
-    public android.content.Intent setClassName(android.content.Context, java.lang.String);
-    public android.content.Intent setClassName(java.lang.String, java.lang.String);
-    public void setClipData(android.content.ClipData);
-    public android.content.Intent setComponent(android.content.ComponentName);
-    public android.content.Intent setData(android.net.Uri);
-    public android.content.Intent setDataAndNormalize(android.net.Uri);
-    public android.content.Intent setDataAndType(android.net.Uri, java.lang.String);
-    public android.content.Intent setDataAndTypeAndNormalize(android.net.Uri, java.lang.String);
-    public void setDefusable(boolean);
-    public void setExtrasClassLoader(java.lang.ClassLoader);
-    public android.content.Intent setFlags(int);
-    public void setLaunchToken(java.lang.String);
-    public android.content.Intent setPackage(java.lang.String);
-    public void setSelector(android.content.Intent);
-    public void setSourceBounds(android.graphics.Rect);
-    public android.content.Intent setType(java.lang.String);
-    public android.content.Intent setTypeAndNormalize(java.lang.String);
-    public java.lang.String toInsecureString();
-    public java.lang.String toInsecureStringWithClip();
-    public java.lang.String toShortString(boolean, boolean, boolean, boolean);
-    public void toShortString(java.lang.StringBuilder, boolean, boolean, boolean, boolean);
-    public java.lang.String toString();
-    public java.lang.String toURI();
-    public java.lang.String toUri(int);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long, boolean, boolean, boolean, boolean);
-
-
-    public static java.lang.String ACTION_ADVANCED_SETTINGS_CHANGED;
-    public static java.lang.String ACTION_AIRPLANE_MODE_CHANGED;
-    public static java.lang.String ACTION_ALARM_CHANGED;
-    public static java.lang.String ACTION_ALL_APPS;
-    public static java.lang.String ACTION_ANSWER;
-    public static java.lang.String ACTION_APPLICATION_PREFERENCES;
-    public static java.lang.String ACTION_APPLICATION_RESTRICTIONS_CHANGED;
-    public static java.lang.String ACTION_APP_ERROR;
-    public static java.lang.String ACTION_ASSIST;
-    public static java.lang.String ACTION_ATTACH_DATA;
-    public static java.lang.String ACTION_BATTERY_CHANGED;
-    public static java.lang.String ACTION_BATTERY_LEVEL_CHANGED;
-    public static java.lang.String ACTION_BATTERY_LOW;
-    public static java.lang.String ACTION_BATTERY_OKAY;
-    public static java.lang.String ACTION_BOOT_COMPLETED;
-    public static java.lang.String ACTION_BUG_REPORT;
-    public static java.lang.String ACTION_CALL;
-    public static java.lang.String ACTION_CALL_BUTTON;
-    public static java.lang.String ACTION_CALL_EMERGENCY;
-    public static java.lang.String ACTION_CALL_PRIVILEGED;
-    public static java.lang.String ACTION_CAMERA_BUTTON;
-    public static java.lang.String ACTION_CARRIER_SETUP;
-    public static java.lang.String ACTION_CHOOSER;
-    public static java.lang.String ACTION_CLEAR_DNS_CACHE;
-    public static java.lang.String ACTION_CLOSE_SYSTEM_DIALOGS;
-    public static java.lang.String ACTION_CONFIGURATION_CHANGED;
-    public static java.lang.String ACTION_CREATE_DOCUMENT;
-    public static java.lang.String ACTION_CREATE_SHORTCUT;
-    public static java.lang.String ACTION_DATE_CHANGED;
-    public static java.lang.String ACTION_DEFAULT;
-    public static java.lang.String ACTION_DELETE;
-    public static java.lang.String ACTION_DEVICE_INITIALIZATION_WIZARD;
-    public static java.lang.String ACTION_DEVICE_LOCKED_CHANGED;
-    public static java.lang.String ACTION_DEVICE_STORAGE_FULL;
-    public static java.lang.String ACTION_DEVICE_STORAGE_LOW;
-    public static java.lang.String ACTION_DEVICE_STORAGE_NOT_FULL;
-    public static java.lang.String ACTION_DEVICE_STORAGE_OK;
-    public static java.lang.String ACTION_DIAL;
-    public static java.lang.String ACTION_DISMISS_KEYBOARD_SHORTCUTS;
-    public static java.lang.String ACTION_DOCK_ACTIVE;
-    public static java.lang.String ACTION_DOCK_EVENT;
-    public static java.lang.String ACTION_DOCK_IDLE;
-    public static java.lang.String ACTION_DREAMING_STARTED;
-    public static java.lang.String ACTION_DREAMING_STOPPED;
-    public static java.lang.String ACTION_DYNAMIC_SENSOR_CHANGED;
-    public static java.lang.String ACTION_EDIT;
-    public static java.lang.String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE;
-    public static java.lang.String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE;
-    public static java.lang.String ACTION_FACTORY_RESET;
-    public static java.lang.String ACTION_FACTORY_TEST;
-    public static java.lang.String ACTION_GET_CONTENT;
-    public static java.lang.String ACTION_GET_RESTRICTION_ENTRIES;
-    public static java.lang.String ACTION_GLOBAL_BUTTON;
-    public static java.lang.String ACTION_GTALK_SERVICE_CONNECTED;
-    public static java.lang.String ACTION_GTALK_SERVICE_DISCONNECTED;
-    public static java.lang.String ACTION_HEADSET_PLUG;
-    public static java.lang.String ACTION_IDLE_MAINTENANCE_END;
-    public static java.lang.String ACTION_IDLE_MAINTENANCE_START;
-    public static java.lang.String ACTION_INPUT_METHOD_CHANGED;
-    public static java.lang.String ACTION_INSERT;
-    public static java.lang.String ACTION_INSERT_OR_EDIT;
-    public static java.lang.String ACTION_INSTALL_FAILURE;
-    public static java.lang.String ACTION_INSTALL_INSTANT_APP_PACKAGE;
-    public static java.lang.String ACTION_INSTALL_PACKAGE;
-    public static java.lang.String ACTION_INSTANT_APP_RESOLVER_SETTINGS;
-    public static java.lang.String ACTION_INTENT_FILTER_NEEDS_VERIFICATION;
-    public static java.lang.String ACTION_LOCALE_CHANGED;
-    public static java.lang.String ACTION_LOCKED_BOOT_COMPLETED;
-    public static java.lang.String ACTION_MAIN;
-    public static java.lang.String ACTION_MANAGED_PROFILE_ADDED;
-    public static java.lang.String ACTION_MANAGED_PROFILE_AVAILABLE;
-    public static java.lang.String ACTION_MANAGED_PROFILE_REMOVED;
-    public static java.lang.String ACTION_MANAGED_PROFILE_UNAVAILABLE;
-    public static java.lang.String ACTION_MANAGED_PROFILE_UNLOCKED;
-    public static java.lang.String ACTION_MANAGE_APP_PERMISSIONS;
-    public static java.lang.String ACTION_MANAGE_NETWORK_USAGE;
-    public static java.lang.String ACTION_MANAGE_PACKAGE_STORAGE;
-    public static java.lang.String ACTION_MANAGE_PERMISSIONS;
-    public static java.lang.String ACTION_MANAGE_PERMISSION_APPS;
-    public static java.lang.String ACTION_MASTER_CLEAR;
-    public static java.lang.String ACTION_MASTER_CLEAR_NOTIFICATION;
-    public static java.lang.String ACTION_MEDIA_BAD_REMOVAL;
-    public static java.lang.String ACTION_MEDIA_BUTTON;
-    public static java.lang.String ACTION_MEDIA_CHECKING;
-    public static java.lang.String ACTION_MEDIA_EJECT;
-    public static java.lang.String ACTION_MEDIA_MOUNTED;
-    public static java.lang.String ACTION_MEDIA_NOFS;
-    public static java.lang.String ACTION_MEDIA_REMOVED;
-    public static java.lang.String ACTION_MEDIA_RESOURCE_GRANTED;
-    public static java.lang.String ACTION_MEDIA_SCANNER_FINISHED;
-    public static java.lang.String ACTION_MEDIA_SCANNER_SCAN_FILE;
-    public static java.lang.String ACTION_MEDIA_SCANNER_STARTED;
-    public static java.lang.String ACTION_MEDIA_SHARED;
-    public static java.lang.String ACTION_MEDIA_UNMOUNTABLE;
-    public static java.lang.String ACTION_MEDIA_UNMOUNTED;
-    public static java.lang.String ACTION_MEDIA_UNSHARED;
-    public static java.lang.String ACTION_MY_PACKAGE_REPLACED;
-    public static java.lang.String ACTION_MY_PACKAGE_SUSPENDED;
-    public static java.lang.String ACTION_MY_PACKAGE_UNSUSPENDED;
-    public static java.lang.String ACTION_NEW_OUTGOING_CALL;
-    public static java.lang.String ACTION_OPEN_DOCUMENT;
-    public static java.lang.String ACTION_OPEN_DOCUMENT_TREE;
-    public static java.lang.String ACTION_OVERLAY_CHANGED;
-    public static java.lang.String ACTION_PACKAGES_SUSPENDED;
-    public static java.lang.String ACTION_PACKAGES_UNSUSPENDED;
-    public static java.lang.String ACTION_PACKAGE_ADDED;
-    public static java.lang.String ACTION_PACKAGE_CHANGED;
-    public static java.lang.String ACTION_PACKAGE_DATA_CLEARED;
-    public static java.lang.String ACTION_PACKAGE_FIRST_LAUNCH;
-    public static java.lang.String ACTION_PACKAGE_FULLY_REMOVED;
-    public static java.lang.String ACTION_PACKAGE_INSTALL;
-    public static java.lang.String ACTION_PACKAGE_NEEDS_VERIFICATION;
-    public static java.lang.String ACTION_PACKAGE_REMOVED;
-    public static java.lang.String ACTION_PACKAGE_REPLACED;
-    public static java.lang.String ACTION_PACKAGE_RESTARTED;
-    public static java.lang.String ACTION_PACKAGE_VERIFIED;
-    public static java.lang.String ACTION_PASTE;
-    public static java.lang.String ACTION_PICK;
-    public static java.lang.String ACTION_PICK_ACTIVITY;
-    public static java.lang.String ACTION_POWER_CONNECTED;
-    public static java.lang.String ACTION_POWER_DISCONNECTED;
-    public static java.lang.String ACTION_POWER_USAGE_SUMMARY;
-    public static java.lang.String ACTION_PREFERRED_ACTIVITY_CHANGED;
-    public static java.lang.String ACTION_PRE_BOOT_COMPLETED;
-    public static java.lang.String ACTION_PROCESS_TEXT;
-    public static java.lang.String ACTION_PROVIDER_CHANGED;
-    public static java.lang.String ACTION_QUERY_PACKAGE_RESTART;
-    public static java.lang.String ACTION_QUICK_CLOCK;
-    public static java.lang.String ACTION_QUICK_VIEW;
-    public static java.lang.String ACTION_REBOOT;
-    public static java.lang.String ACTION_REMOTE_INTENT;
-    public static java.lang.String ACTION_REQUEST_SHUTDOWN;
-    public static java.lang.String ACTION_RESOLVE_INSTANT_APP_PACKAGE;
-    public static java.lang.String ACTION_REVIEW_PERMISSIONS;
-    public static java.lang.String ACTION_RUN;
-    public static java.lang.String ACTION_SCREEN_OFF;
-    public static java.lang.String ACTION_SCREEN_ON;
-    public static java.lang.String ACTION_SEARCH;
-    public static java.lang.String ACTION_SEARCH_LONG_PRESS;
-    public static java.lang.String ACTION_SEND;
-    public static java.lang.String ACTION_SENDTO;
-    public static java.lang.String ACTION_SEND_MULTIPLE;
-    public static java.lang.String ACTION_SERVICE_STATE;
-    public static java.lang.String ACTION_SETTING_RESTORED;
-    public static java.lang.String ACTION_SET_WALLPAPER;
-    public static java.lang.String ACTION_SHOW_APP_INFO;
-    public static java.lang.String ACTION_SHOW_BRIGHTNESS_DIALOG;
-    public static java.lang.String ACTION_SHOW_KEYBOARD_SHORTCUTS;
-    public static java.lang.String ACTION_SHOW_SUSPENDED_APP_DETAILS;
-    public static java.lang.String ACTION_SHUTDOWN;
-    public static java.lang.String ACTION_SIM_STATE_CHANGED;
-    public static java.lang.String ACTION_SPLIT_CONFIGURATION_CHANGED;
-    public static java.lang.String ACTION_SYNC;
-    public static java.lang.String ACTION_SYSTEM_TUTORIAL;
-    public static java.lang.String ACTION_THERMAL_EVENT;
-    public static java.lang.String ACTION_TIMEZONE_CHANGED;
-    public static java.lang.String ACTION_TIME_CHANGED;
-    public static java.lang.String ACTION_TIME_TICK;
-    public static java.lang.String ACTION_UID_REMOVED;
-    public static java.lang.String ACTION_UMS_CONNECTED;
-    public static java.lang.String ACTION_UMS_DISCONNECTED;
-    public static java.lang.String ACTION_UNINSTALL_PACKAGE;
-    public static java.lang.String ACTION_UPGRADE_SETUP;
-    public static java.lang.String ACTION_USER_ADDED;
-    public static java.lang.String ACTION_USER_BACKGROUND;
-    public static java.lang.String ACTION_USER_FOREGROUND;
-    public static java.lang.String ACTION_USER_INFO_CHANGED;
-    public static java.lang.String ACTION_USER_INITIALIZE;
-    public static java.lang.String ACTION_USER_PRESENT;
-    public static java.lang.String ACTION_USER_REMOVED;
-    public static java.lang.String ACTION_USER_STARTED;
-    public static java.lang.String ACTION_USER_STARTING;
-    public static java.lang.String ACTION_USER_STOPPED;
-    public static java.lang.String ACTION_USER_STOPPING;
-    public static java.lang.String ACTION_USER_SWITCHED;
-    public static java.lang.String ACTION_USER_UNLOCKED;
-    public static java.lang.String ACTION_VIEW;
-    public static java.lang.String ACTION_VOICE_ASSIST;
-    public static java.lang.String ACTION_VOICE_COMMAND;
-    public static java.lang.String ACTION_WALLPAPER_CHANGED;
-    public static java.lang.String ACTION_WEB_SEARCH;
-    public static java.lang.String CATEGORY_ALTERNATIVE;
-    public static java.lang.String CATEGORY_APP_BROWSER;
-    public static java.lang.String CATEGORY_APP_CALCULATOR;
-    public static java.lang.String CATEGORY_APP_CALENDAR;
-    public static java.lang.String CATEGORY_APP_CONTACTS;
-    public static java.lang.String CATEGORY_APP_EMAIL;
-    public static java.lang.String CATEGORY_APP_GALLERY;
-    public static java.lang.String CATEGORY_APP_MAPS;
-    public static java.lang.String CATEGORY_APP_MARKET;
-    public static java.lang.String CATEGORY_APP_MESSAGING;
-    public static java.lang.String CATEGORY_APP_MUSIC;
-    public static java.lang.String CATEGORY_BROWSABLE;
-    public static java.lang.String CATEGORY_CAR_DOCK;
-    public static java.lang.String CATEGORY_CAR_LAUNCHER;
-    public static java.lang.String CATEGORY_CAR_MODE;
-    public static java.lang.String CATEGORY_DEFAULT;
-    public static java.lang.String CATEGORY_DESK_DOCK;
-    public static java.lang.String CATEGORY_DEVELOPMENT_PREFERENCE;
-    public static java.lang.String CATEGORY_EMBED;
-    public static java.lang.String CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST;
-    public static java.lang.String CATEGORY_HE_DESK_DOCK;
-    public static java.lang.String CATEGORY_HOME;
-    public static java.lang.String CATEGORY_HOME_MAIN;
-    public static java.lang.String CATEGORY_INFO;
-    public static java.lang.String CATEGORY_LAUNCHER;
-    public static java.lang.String CATEGORY_LAUNCHER_APP;
-    public static java.lang.String CATEGORY_LEANBACK_LAUNCHER;
-    public static java.lang.String CATEGORY_LEANBACK_SETTINGS;
-    public static java.lang.String CATEGORY_LE_DESK_DOCK;
-    public static java.lang.String CATEGORY_MONKEY;
-    public static java.lang.String CATEGORY_OPENABLE;
-    public static java.lang.String CATEGORY_PREFERENCE;
-    public static java.lang.String CATEGORY_SAMPLE_CODE;
-    public static java.lang.String CATEGORY_SELECTED_ALTERNATIVE;
-    public static java.lang.String CATEGORY_SETUP_WIZARD;
-    public static java.lang.String CATEGORY_TAB;
-    public static java.lang.String CATEGORY_TEST;
-    public static java.lang.String CATEGORY_TYPED_OPENABLE;
-    public static java.lang.String CATEGORY_UNIT_TEST;
-    public static java.lang.String CATEGORY_VOICE;
-    public static java.lang.String CATEGORY_VR_HOME;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String EXTRA_ALARM_COUNT;
-    public static java.lang.String EXTRA_ALLOW_MULTIPLE;
-    public static java.lang.String EXTRA_ALLOW_REPLACE;
-    public static java.lang.String EXTRA_ALTERNATE_INTENTS;
-    public static java.lang.String EXTRA_ASSIST_CONTEXT;
-    public static java.lang.String EXTRA_ASSIST_INPUT_DEVICE_ID;
-    public static java.lang.String EXTRA_ASSIST_INPUT_HINT_KEYBOARD;
-    public static java.lang.String EXTRA_ASSIST_PACKAGE;
-    public static java.lang.String EXTRA_ASSIST_UID;
-    public static java.lang.String EXTRA_AUTO_LAUNCH_SINGLE_CHOICE;
-    public static java.lang.String EXTRA_BCC;
-    public static java.lang.String EXTRA_BUG_REPORT;
-    public static java.lang.String EXTRA_CALLING_PACKAGE;
-    public static java.lang.String EXTRA_CC;
-    public static java.lang.String EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR;
-    public static java.lang.String EXTRA_CDMA_ROAMING_INDICATOR;
-    public static java.lang.String EXTRA_CHANGED_COMPONENT_NAME;
-    public static java.lang.String EXTRA_CHANGED_COMPONENT_NAME_LIST;
-    public static java.lang.String EXTRA_CHANGED_PACKAGE_LIST;
-    public static java.lang.String EXTRA_CHANGED_UID_LIST;
-    public static java.lang.String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER;
-    public static java.lang.String EXTRA_CHOOSER_TARGETS;
-    public static java.lang.String EXTRA_CHOSEN_COMPONENT;
-    public static java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER;
-    public static java.lang.String EXTRA_CLIENT_INTENT;
-    public static java.lang.String EXTRA_CLIENT_LABEL;
-    public static java.lang.String EXTRA_COMPONENT_NAME;
-    public static java.lang.String EXTRA_CONTENT_ANNOTATIONS;
-    public static java.lang.String EXTRA_CSS_INDICATOR;
-    public static java.lang.String EXTRA_DATA_OPERATOR_ALPHA_LONG;
-    public static java.lang.String EXTRA_DATA_OPERATOR_ALPHA_SHORT;
-    public static java.lang.String EXTRA_DATA_OPERATOR_NUMERIC;
-    public static java.lang.String EXTRA_DATA_RADIO_TECH;
-    public static java.lang.String EXTRA_DATA_REG_STATE;
-    public static java.lang.String EXTRA_DATA_REMOVED;
-    public static java.lang.String EXTRA_DATA_ROAMING_TYPE;
-    public static java.lang.String EXTRA_DOCK_STATE;
-    public static int EXTRA_DOCK_STATE_CAR;
-    public static int EXTRA_DOCK_STATE_DESK;
-    public static int EXTRA_DOCK_STATE_HE_DESK;
-    public static int EXTRA_DOCK_STATE_LE_DESK;
-    public static int EXTRA_DOCK_STATE_UNDOCKED;
-    public static java.lang.String EXTRA_DONT_KILL_APP;
-    public static java.lang.String EXTRA_EMAIL;
-    public static java.lang.String EXTRA_EMERGENCY_ONLY;
-    public static java.lang.String EXTRA_EPHEMERAL_FAILURE;
-    public static java.lang.String EXTRA_EPHEMERAL_HOSTNAME;
-    public static java.lang.String EXTRA_EPHEMERAL_SUCCESS;
-    public static java.lang.String EXTRA_EPHEMERAL_TOKEN;
-    public static java.lang.String EXTRA_EXCLUDE_COMPONENTS;
-    public static java.lang.String EXTRA_FORCE_FACTORY_RESET;
-    public static java.lang.String EXTRA_FORCE_MASTER_CLEAR;
-    public static java.lang.String EXTRA_FROM_STORAGE;
-    public static java.lang.String EXTRA_HTML_TEXT;
-    public static java.lang.String EXTRA_INDEX;
-    public static java.lang.String EXTRA_INITIAL_INTENTS;
-    public static java.lang.String EXTRA_INSTALLER_PACKAGE_NAME;
-    public static java.lang.String EXTRA_INSTALL_RESULT;
-    public static java.lang.String EXTRA_INSTANT_APP_ACTION;
-    public static java.lang.String EXTRA_INSTANT_APP_BUNDLES;
-    public static java.lang.String EXTRA_INSTANT_APP_EXTRAS;
-    public static java.lang.String EXTRA_INSTANT_APP_FAILURE;
-    public static java.lang.String EXTRA_INSTANT_APP_HOSTNAME;
-    public static java.lang.String EXTRA_INSTANT_APP_SUCCESS;
-    public static java.lang.String EXTRA_INSTANT_APP_TOKEN;
-    public static java.lang.String EXTRA_INTENT;
-    public static java.lang.String EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION;
-    public static java.lang.String EXTRA_IS_USING_CARRIER_AGGREGATION;
-    public static java.lang.String EXTRA_KEY_CONFIRM;
-    public static java.lang.String EXTRA_KEY_EVENT;
-    public static java.lang.String EXTRA_LAUNCHER_EXTRAS;
-    public static java.lang.String EXTRA_LOCAL_ONLY;
-    public static java.lang.String EXTRA_LONG_VERSION_CODE;
-    public static java.lang.String EXTRA_LTE_EARFCN_RSRP_BOOST;
-    public static java.lang.String EXTRA_MANUAL;
-    public static java.lang.String EXTRA_MEDIA_RESOURCE_TYPE;
-    public static int EXTRA_MEDIA_RESOURCE_TYPE_AUDIO_CODEC;
-    public static int EXTRA_MEDIA_RESOURCE_TYPE_VIDEO_CODEC;
-    public static java.lang.String EXTRA_MIME_TYPES;
-    public static java.lang.String EXTRA_NETWORK_ID;
-    public static java.lang.String EXTRA_NOT_UNKNOWN_SOURCE;
-    public static java.lang.String EXTRA_OPERATOR_ALPHA_LONG;
-    public static java.lang.String EXTRA_OPERATOR_ALPHA_SHORT;
-    public static java.lang.String EXTRA_OPERATOR_NUMERIC;
-    public static java.lang.String EXTRA_ORIGINATING_UID;
-    public static java.lang.String EXTRA_ORIGINATING_URI;
-    public static java.lang.String EXTRA_PACKAGES;
-    public static java.lang.String EXTRA_PACKAGE_NAME;
-    public static java.lang.String EXTRA_PERMISSION_NAME;
-    public static java.lang.String EXTRA_PHONE_NUMBER;
-    public static java.lang.String EXTRA_PROCESS_TEXT;
-    public static java.lang.String EXTRA_PROCESS_TEXT_READONLY;
-    public static java.lang.String EXTRA_QUICK_VIEW_ADVANCED;
-    public static java.lang.String EXTRA_QUICK_VIEW_FEATURES;
-    public static java.lang.String EXTRA_QUIET_MODE;
-    public static java.lang.String EXTRA_REASON;
-    public static java.lang.String EXTRA_REFERRER;
-    public static java.lang.String EXTRA_REFERRER_NAME;
-    public static java.lang.String EXTRA_REMOTE_CALLBACK;
-    public static java.lang.String EXTRA_REMOTE_INTENT_TOKEN;
-    public static java.lang.String EXTRA_REMOVED_FOR_ALL_USERS;
-    public static java.lang.String EXTRA_REPLACEMENT_EXTRAS;
-    public static java.lang.String EXTRA_REPLACING;
-    public static java.lang.String EXTRA_RESTRICTIONS_BUNDLE;
-    public static java.lang.String EXTRA_RESTRICTIONS_INTENT;
-    public static java.lang.String EXTRA_RESTRICTIONS_LIST;
-    public static java.lang.String EXTRA_RESULT_NEEDED;
-    public static java.lang.String EXTRA_RESULT_RECEIVER;
-    public static java.lang.String EXTRA_RETURN_RESULT;
-    public static java.lang.String EXTRA_SETTING_NAME;
-    public static java.lang.String EXTRA_SETTING_NEW_VALUE;
-    public static java.lang.String EXTRA_SETTING_PREVIOUS_VALUE;
-    public static java.lang.String EXTRA_SETTING_RESTORED_FROM_SDK_INT;
-    public static java.lang.String EXTRA_SHORTCUT_ICON;
-    public static java.lang.String EXTRA_SHORTCUT_ICON_RESOURCE;
-    public static java.lang.String EXTRA_SHORTCUT_INTENT;
-    public static java.lang.String EXTRA_SHORTCUT_NAME;
-    public static java.lang.String EXTRA_SHUTDOWN_USERSPACE_ONLY;
-    public static java.lang.String EXTRA_SIM_ACTIVATION_RESPONSE;
-    public static java.lang.String EXTRA_SPLIT_NAME;
-    public static java.lang.String EXTRA_STREAM;
-    public static java.lang.String EXTRA_SUBJECT;
-    public static java.lang.String EXTRA_SUSPENDED_PACKAGE_EXTRAS;
-    public static java.lang.String EXTRA_SYSTEM_ID;
-    public static java.lang.String EXTRA_TASK_ID;
-    public static java.lang.String EXTRA_TEMPLATE;
-    public static java.lang.String EXTRA_TEXT;
-    public static java.lang.String EXTRA_THERMAL_STATE;
-    public static int EXTRA_THERMAL_STATE_EXCEEDED;
-    public static int EXTRA_THERMAL_STATE_NORMAL;
-    public static int EXTRA_THERMAL_STATE_WARNING;
-    public static java.lang.String EXTRA_TIME_PREF_24_HOUR_FORMAT;
-    public static int EXTRA_TIME_PREF_VALUE_USE_12_HOUR;
-    public static int EXTRA_TIME_PREF_VALUE_USE_24_HOUR;
-    public static int EXTRA_TIME_PREF_VALUE_USE_LOCALE_DEFAULT;
-    public static java.lang.String EXTRA_TITLE;
-    public static java.lang.String EXTRA_UID;
-    public static java.lang.String EXTRA_UNINSTALL_ALL_USERS;
-    public static java.lang.String EXTRA_UNKNOWN_INSTANT_APP;
-    public static java.lang.String EXTRA_USER;
-    public static java.lang.String EXTRA_USER_HANDLE;
-    public static java.lang.String EXTRA_USER_ID;
-    public static java.lang.String EXTRA_USER_REQUESTED_SHUTDOWN;
-    public static java.lang.String EXTRA_VERIFICATION_BUNDLE;
-    public static java.lang.String EXTRA_VERSION_CODE;
-    public static java.lang.String EXTRA_VOICE_RADIO_TECH;
-    public static java.lang.String EXTRA_VOICE_REG_STATE;
-    public static java.lang.String EXTRA_VOICE_ROAMING_TYPE;
-    public static java.lang.String EXTRA_WIPE_ESIMS;
-    public static java.lang.String EXTRA_WIPE_EXTERNAL_STORAGE;
-    public static int FILL_IN_ACTION;
-    public static int FILL_IN_CATEGORIES;
-    public static int FILL_IN_CLIP_DATA;
-    public static int FILL_IN_COMPONENT;
-    public static int FILL_IN_DATA;
-    public static int FILL_IN_PACKAGE;
-    public static int FILL_IN_SELECTOR;
-    public static int FILL_IN_SOURCE_BOUNDS;
-    public static int FLAG_ACTIVITY_BROUGHT_TO_FRONT;
-    public static int FLAG_ACTIVITY_CLEAR_TASK;
-    public static int FLAG_ACTIVITY_CLEAR_TOP;
-    public static int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
-    public static int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
-    public static int FLAG_ACTIVITY_FORWARD_RESULT;
-    public static int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY;
-    public static int FLAG_ACTIVITY_LAUNCH_ADJACENT;
-    public static int FLAG_ACTIVITY_MATCH_EXTERNAL;
-    public static int FLAG_ACTIVITY_MULTIPLE_TASK;
-    public static int FLAG_ACTIVITY_NEW_DOCUMENT;
-    public static int FLAG_ACTIVITY_NEW_TASK;
-    public static int FLAG_ACTIVITY_NO_ANIMATION;
-    public static int FLAG_ACTIVITY_NO_HISTORY;
-    public static int FLAG_ACTIVITY_NO_USER_ACTION;
-    public static int FLAG_ACTIVITY_PREVIOUS_IS_TOP;
-    public static int FLAG_ACTIVITY_REORDER_TO_FRONT;
-    public static int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED;
-    public static int FLAG_ACTIVITY_RETAIN_IN_RECENTS;
-    public static int FLAG_ACTIVITY_SINGLE_TOP;
-    public static int FLAG_ACTIVITY_TASK_ON_HOME;
-    public static int FLAG_DEBUG_LOG_RESOLUTION;
-    public static int FLAG_DEBUG_TRIAGED_MISSING;
-    public static int FLAG_EXCLUDE_STOPPED_PACKAGES;
-    public static int FLAG_FROM_BACKGROUND;
-    public static int FLAG_GRANT_PERSISTABLE_URI_PERMISSION;
-    public static int FLAG_GRANT_PREFIX_URI_PERMISSION;
-    public static int FLAG_GRANT_READ_URI_PERMISSION;
-    public static int FLAG_GRANT_WRITE_URI_PERMISSION;
-    public static int FLAG_IGNORE_EPHEMERAL;
-    public static int FLAG_INCLUDE_STOPPED_PACKAGES;
-    public static int FLAG_RECEIVER_BOOT_UPGRADE;
-    public static int FLAG_RECEIVER_EXCLUDE_BACKGROUND;
-    public static int FLAG_RECEIVER_FOREGROUND;
-    public static int FLAG_RECEIVER_FROM_SHELL;
-    public static int FLAG_RECEIVER_INCLUDE_BACKGROUND;
-    public static int FLAG_RECEIVER_NO_ABORT;
-    public static int FLAG_RECEIVER_REGISTERED_ONLY;
-    public static int FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT;
-    public static int FLAG_RECEIVER_REPLACE_PENDING;
-    public static int FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS;
-    public static int IMMUTABLE_FLAGS;
-    public static java.lang.String METADATA_DOCK_HOME;
-    public static java.lang.String METADATA_SETUP_VERSION;
-    public static int URI_ALLOW_UNSAFE;
-    public static int URI_ANDROID_APP_SCHEME;
-    public static int URI_INTENT_SCHEME;
-}
-
--keep class android.content.Intent$CommandOptionHandler {
-
-    public abstract boolean handleOption(java.lang.String, android.os.ShellCommand);
-
-
-}
-
--keep class android.content.IntentFilter {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.String);
-    <init>(android.content.IntentFilter);
-    <init>(android.os.Parcel);
-
-    public java.util.Iterator actionsIterator();
-    public void addAction(java.lang.String);
-    public void addCategory(java.lang.String);
-    public void addDataAuthority(java.lang.String, java.lang.String);
-    public void addDataAuthority(android.content.IntentFilter$AuthorityEntry);
-    public void addDataPath(java.lang.String, int);
-    public void addDataPath(android.os.PatternMatcher);
-    public void addDataScheme(java.lang.String);
-    public void addDataSchemeSpecificPart(java.lang.String, int);
-    public void addDataSchemeSpecificPart(android.os.PatternMatcher);
-    public void addDataType(java.lang.String);
-    public java.util.Iterator authoritiesIterator();
-    public java.util.Iterator categoriesIterator();
-    public int countActions();
-    public int countCategories();
-    public int countDataAuthorities();
-    public int countDataPaths();
-    public int countDataSchemeSpecificParts();
-    public int countDataSchemes();
-    public int countDataTypes();
-    public static android.content.IntentFilter create(java.lang.String, java.lang.String);
-    public boolean debugCheck();
-    public int describeContents();
-    public void dump(android.util.Printer, java.lang.String);
-    public java.lang.String getAction(int);
-    public boolean getAutoVerify();
-    public java.lang.String getCategory(int);
-    public android.content.IntentFilter$AuthorityEntry getDataAuthority(int);
-    public android.os.PatternMatcher getDataPath(int);
-    public java.lang.String getDataScheme(int);
-    public android.os.PatternMatcher getDataSchemeSpecificPart(int);
-    public java.lang.String getDataType(int);
-    public java.lang.String[] getHosts();
-    public java.util.ArrayList getHostsList();
-    public int getOrder();
-    public int getPriority();
-    public int getVisibilityToInstantApp();
-    public boolean handleAllWebDataURI();
-    public boolean handlesWebUris(boolean);
-    public boolean hasAction(java.lang.String);
-    public boolean hasCategory(java.lang.String);
-    public boolean hasDataAuthority(android.net.Uri);
-    public boolean hasDataAuthority(android.content.IntentFilter$AuthorityEntry);
-    public boolean hasDataPath(java.lang.String);
-    public boolean hasDataPath(android.os.PatternMatcher);
-    public boolean hasDataScheme(java.lang.String);
-    public boolean hasDataSchemeSpecificPart(java.lang.String);
-    public boolean hasDataSchemeSpecificPart(android.os.PatternMatcher);
-    public boolean hasDataType(java.lang.String);
-    public boolean hasExactDataType(java.lang.String);
-    public boolean isExplicitlyVisibleToInstantApp();
-    public boolean isImplicitlyVisibleToInstantApp();
-    public boolean isVerified();
-    public boolean isVisibleToInstantApp();
-    public int match(android.content.ContentResolver, android.content.Intent, boolean, java.lang.String);
-    public int match(java.lang.String, java.lang.String, java.lang.String, android.net.Uri, java.util.Set, java.lang.String);
-    public boolean matchAction(java.lang.String);
-    public java.lang.String matchCategories(java.util.Set);
-    public int matchData(java.lang.String, java.lang.String, android.net.Uri);
-    public int matchDataAuthority(android.net.Uri);
-    public boolean needsVerification();
-    public java.util.Iterator pathsIterator();
-    public void readFromXml(org.xmlpull.v1.XmlPullParser);
-    public java.util.Iterator schemeSpecificPartsIterator();
-    public java.util.Iterator schemesIterator();
-    public void setAutoVerify(boolean);
-    public void setOrder(int);
-    public void setPriority(int);
-    public void setVerified(boolean);
-    public void setVisibilityToInstantApp(int);
-    public java.util.Iterator typesIterator();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-    public void writeToXml(org.xmlpull.v1.XmlSerializer);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int MATCH_ADJUSTMENT_MASK;
-    public static int MATCH_ADJUSTMENT_NORMAL;
-    public static int MATCH_CATEGORY_EMPTY;
-    public static int MATCH_CATEGORY_HOST;
-    public static int MATCH_CATEGORY_MASK;
-    public static int MATCH_CATEGORY_PATH;
-    public static int MATCH_CATEGORY_PORT;
-    public static int MATCH_CATEGORY_SCHEME;
-    public static int MATCH_CATEGORY_SCHEME_SPECIFIC_PART;
-    public static int MATCH_CATEGORY_TYPE;
-    public static int NO_MATCH_ACTION;
-    public static int NO_MATCH_CATEGORY;
-    public static int NO_MATCH_DATA;
-    public static int NO_MATCH_TYPE;
-    public static java.lang.String SCHEME_HTTP;
-    public static java.lang.String SCHEME_HTTPS;
-    public static int SYSTEM_HIGH_PRIORITY;
-    public static int SYSTEM_LOW_PRIORITY;
-    public static int VISIBILITY_EXPLICIT;
-    public static int VISIBILITY_IMPLICIT;
-    public static int VISIBILITY_NONE;
-}
-
--keep class android.content.IntentFilter$AuthorityEntry {
-    <init>(java.lang.String, java.lang.String);
-
-    public boolean equals(java.lang.Object);
-    public java.lang.String getHost();
-    public int getPort();
-    public boolean match(android.content.IntentFilter$AuthorityEntry);
-    public int match(android.net.Uri);
-
-
-}
-
--keep class android.content.IntentFilter$MalformedMimeTypeException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class android.content.IntentSender {
-    <init>(android.content.IIntentSender);
-    <init>(android.content.IIntentSender, android.os.IBinder);
-    <init>(android.os.IBinder);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public java.lang.String getCreatorPackage();
-    public int getCreatorUid();
-    public android.os.UserHandle getCreatorUserHandle();
-    public android.content.IIntentSender getTarget();
-    public java.lang.String getTargetPackage();
-    public android.os.IBinder getWhitelistToken();
-    public int hashCode();
-    public static android.content.IntentSender readIntentSenderOrNullFromParcel(android.os.Parcel);
-    public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender$OnFinished, android.os.Handler);
-    public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender$OnFinished, android.os.Handler, java.lang.String);
-    public java.lang.String toString();
-    public static void writeIntentSenderOrNullToParcel(android.content.IntentSender, android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.IntentSender$OnFinished {
-
-    public abstract void onSendFinished(android.content.IntentSender, android.content.Intent, int, java.lang.String, android.os.Bundle);
-
-
-}
-
--keep class android.content.IntentSender$SendIntentException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.Exception);
-
-
-
-}
-
--keep class android.content.Loader {
-    <init>(android.content.Context);
-
-    public void abandon();
-    public boolean cancelLoad();
-    public void commitContentChanged();
-    public java.lang.String dataToString(java.lang.Object);
-    public void deliverCancellation();
-    public void deliverResult(java.lang.Object);
-    public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public void forceLoad();
-    public android.content.Context getContext();
-    public int getId();
-    public boolean isAbandoned();
-    public boolean isReset();
-    public boolean isStarted();
-    protected void onAbandon();
-    protected boolean onCancelLoad();
-    public void onContentChanged();
-    protected void onForceLoad();
-    protected void onReset();
-    protected void onStartLoading();
-    protected void onStopLoading();
-    public void registerListener(int, android.content.Loader$OnLoadCompleteListener);
-    public void registerOnLoadCanceledListener(android.content.Loader$OnLoadCanceledListener);
-    public void reset();
-    public void rollbackContentChanged();
-    public void startLoading();
-    public void stopLoading();
-    public boolean takeContentChanged();
-    public java.lang.String toString();
-    public void unregisterListener(android.content.Loader$OnLoadCompleteListener);
-    public void unregisterOnLoadCanceledListener(android.content.Loader$OnLoadCanceledListener);
-
-
-}
-
--keep class android.content.Loader$OnLoadCanceledListener {
-
-    public abstract void onLoadCanceled(android.content.Loader);
-
-
-}
-
--keep class android.content.Loader$OnLoadCompleteListener {
-
-    public abstract void onLoadComplete(android.content.Loader, java.lang.Object);
-
-
-}
-
--keep class android.content.OperationApplicationException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-    <init>(int);
-    <init>(java.lang.String, int);
-
-    public int getNumSuccessfulYieldPoints();
-
-
-}
-
--keep class android.content.PeriodicSync {
-    <init>(android.accounts.Account, java.lang.String, android.os.Bundle, long);
-    <init>(android.content.PeriodicSync);
-    <init>(android.accounts.Account, java.lang.String, android.os.Bundle, long, long);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static boolean syncExtrasEquals(android.os.Bundle, android.os.Bundle);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.accounts.Account account;
-    public java.lang.String authority;
-    public android.os.Bundle extras;
-    public long flexTime;
-    public long period;
-}
-
--keep class android.content.ServiceConnection {
-
-    public void onBindingDied(android.content.ComponentName);
-    public void onNullBinding(android.content.ComponentName);
-    public abstract void onServiceConnected(android.content.ComponentName, android.os.IBinder);
-    public abstract void onServiceDisconnected(android.content.ComponentName);
-
-
-}
-
--keep class android.content.SharedPreferences {
-
-    public abstract boolean contains(java.lang.String);
-    public abstract android.content.SharedPreferences$Editor edit();
-    public abstract java.util.Map getAll();
-    public abstract boolean getBoolean(java.lang.String, boolean);
-    public abstract float getFloat(java.lang.String, float);
-    public abstract int getInt(java.lang.String, int);
-    public abstract long getLong(java.lang.String, long);
-    public abstract java.lang.String getString(java.lang.String, java.lang.String);
-    public abstract java.util.Set getStringSet(java.lang.String, java.util.Set);
-    public abstract void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences$OnSharedPreferenceChangeListener);
-    public abstract void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences$OnSharedPreferenceChangeListener);
-
-
-}
-
--keep class android.content.SharedPreferences$Editor {
-
-    public abstract void apply();
-    public abstract android.content.SharedPreferences$Editor clear();
-    public abstract boolean commit();
-    public abstract android.content.SharedPreferences$Editor putBoolean(java.lang.String, boolean);
-    public abstract android.content.SharedPreferences$Editor putFloat(java.lang.String, float);
-    public abstract android.content.SharedPreferences$Editor putInt(java.lang.String, int);
-    public abstract android.content.SharedPreferences$Editor putLong(java.lang.String, long);
-    public abstract android.content.SharedPreferences$Editor putString(java.lang.String, java.lang.String);
-    public abstract android.content.SharedPreferences$Editor putStringSet(java.lang.String, java.util.Set);
-    public abstract android.content.SharedPreferences$Editor remove(java.lang.String);
-
-
-}
-
--keep class android.content.SharedPreferences$OnSharedPreferenceChangeListener {
-
-    public abstract void onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String);
-
-
-}
-
--keep class android.content.SyncAdapterType {
-    <init>(java.lang.String, java.lang.String, boolean, boolean);
-    <init>(java.lang.String, java.lang.String, boolean, boolean, boolean, boolean, java.lang.String, java.lang.String);
-    <init>(android.os.Parcel);
-
-    public boolean allowParallelSyncs();
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public java.lang.String getPackageName();
-    public java.lang.String getSettingsActivity();
-    public int hashCode();
-    public boolean isAlwaysSyncable();
-    public boolean isUserVisible();
-    public static android.content.SyncAdapterType newKey(java.lang.String, java.lang.String);
-    public boolean supportsUploading();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String accountType;
-    public java.lang.String authority;
-    public boolean isKey;
-}
-
--keep class android.content.SyncInfo {
-    <init>(int, android.accounts.Account, java.lang.String, long);
-    <init>(android.content.SyncInfo);
-
-    public static android.content.SyncInfo createAccountRedacted(int, java.lang.String, long);
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.accounts.Account account;
-    public java.lang.String authority;
-    public int authorityId;
-    public long startTime;
-}
-
--keep class android.content.SyncRequest {
-    <init>(android.content.SyncRequest$Builder);
-
-    public int describeContents();
-    public android.accounts.Account getAccount();
-    public android.os.Bundle getBundle();
-    public java.lang.String getProvider();
-    public long getSyncFlexTime();
-    public long getSyncRunTime();
-    public boolean isExpedited();
-    public boolean isPeriodic();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.SyncRequest$Builder {
-    <init>();
-
-    public android.content.SyncRequest build();
-    public android.content.SyncRequest$Builder setDisallowMetered(boolean);
-    public android.content.SyncRequest$Builder setExpedited(boolean);
-    public android.content.SyncRequest$Builder setExtras(android.os.Bundle);
-    public android.content.SyncRequest$Builder setIgnoreBackoff(boolean);
-    public android.content.SyncRequest$Builder setIgnoreSettings(boolean);
-    public android.content.SyncRequest$Builder setManual(boolean);
-    public android.content.SyncRequest$Builder setNoRetry(boolean);
-    public android.content.SyncRequest$Builder setRequiresCharging(boolean);
-    public android.content.SyncRequest$Builder setSyncAdapter(android.accounts.Account, java.lang.String);
-    public android.content.SyncRequest$Builder syncOnce();
-    public android.content.SyncRequest$Builder syncPeriodic(long, long);
-
-
-}
-
--keep class android.content.SyncStatusInfo {
-    <init>(int);
-    <init>(android.os.Parcel);
-    <init>(android.content.SyncStatusInfo);
-
-    public void addEvent(java.lang.String);
-    public int describeContents();
-    public java.lang.String getEvent(int);
-    public int getEventCount();
-    public long getEventTime(int);
-    public int getLastFailureMesgAsInt(int);
-    public long getPeriodicSyncTime(int);
-    public void maybeResetTodayStats(boolean, boolean);
-    public void removePeriodicSyncTime(int);
-    public void setLastFailure(int, long, java.lang.String);
-    public void setLastSuccess(int, long);
-    public void setPeriodicSyncTime(int, long);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public int authorityId;
-    public long initialFailureTime;
-    public boolean initialize;
-    public java.lang.String lastFailureMesg;
-    public int lastFailureSource;
-    public long lastFailureTime;
-    public int lastSuccessSource;
-    public long lastSuccessTime;
-    public long lastTodayResetTime;
-    public boolean pending;
-    public long[] perSourceLastFailureTimes;
-    public long[] perSourceLastSuccessTimes;
-    public android.content.SyncStatusInfo$Stats todayStats;
-    public android.content.SyncStatusInfo$Stats totalStats;
-    public android.content.SyncStatusInfo$Stats yesterdayStats;
-}
-
--keep class android.content.SyncStatusInfo$Stats {
-    <init>();
-
-    public void clear();
-    public void copyTo(android.content.SyncStatusInfo$Stats);
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel);
-
-
-    public int numCancels;
-    public int numFailures;
-    public int numSourceFeed;
-    public int numSourceLocal;
-    public int numSourceOther;
-    public int numSourcePeriodic;
-    public int numSourcePoll;
-    public int numSourceUser;
-    public int numSyncs;
-    public long totalElapsedTime;
-}
-
--keep class android.content.SyncStatusObserver {
-
-    public abstract void onStatusChanged(int);
-
-
-}
-
--keep class android.content.UriPermission {
-    <init>(android.net.Uri, int, long);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public long getPersistedTime();
-    public android.net.Uri getUri();
-    public boolean isReadPermission();
-    public boolean isWritePermission();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static long INVALID_TIME;
-}
-
--keep class android.content.pm.ActivityInfo {
-    <init>();
-    <init>(android.content.pm.ActivityInfo);
-
-    public static int activityInfoConfigJavaToNative(int);
-    public static int activityInfoConfigNativeToJava(int);
-    public static java.lang.String colorModeToString(int);
-    public int describeContents();
-    public void dump(android.util.Printer, java.lang.String);
-    public void dump(android.util.Printer, java.lang.String, int);
-    public int getRealConfigChanged();
-    public int getThemeResource();
-    public static boolean isFixedOrientationLandscape(int);
-    public static boolean isFixedOrientationPortrait(int);
-    public static boolean isPreserveOrientationMode(int);
-    public static boolean isResizeableMode(int);
-    public static boolean isTranslucentOrFloating(android.content.res.TypedArray);
-    public static java.lang.String lockTaskLaunchModeToString(int);
-    public static java.lang.String resizeModeToString(int);
-    public static java.lang.String screenOrientationToString(int);
-    public boolean supportsPictureInPicture();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int COLOR_MODE_DEFAULT;
-    public static int COLOR_MODE_HDR;
-    public static int COLOR_MODE_WIDE_COLOR_GAMUT;
-    public static int CONFIG_ASSETS_PATHS;
-    public static int CONFIG_COLOR_MODE;
-    public static int CONFIG_DENSITY;
-    public static int CONFIG_FONT_SCALE;
-    public static int CONFIG_KEYBOARD;
-    public static int CONFIG_KEYBOARD_HIDDEN;
-    public static int CONFIG_LAYOUT_DIRECTION;
-    public static int CONFIG_LOCALE;
-    public static int CONFIG_MCC;
-    public static int CONFIG_MNC;
-    public static int[] CONFIG_NATIVE_BITS;
-    public static int CONFIG_NAVIGATION;
-    public static int CONFIG_ORIENTATION;
-    public static int CONFIG_SCREEN_LAYOUT;
-    public static int CONFIG_SCREEN_SIZE;
-    public static int CONFIG_SMALLEST_SCREEN_SIZE;
-    public static int CONFIG_TOUCHSCREEN;
-    public static int CONFIG_UI_MODE;
-    public static int CONFIG_WINDOW_CONFIGURATION;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int DOCUMENT_LAUNCH_ALWAYS;
-    public static int DOCUMENT_LAUNCH_INTO_EXISTING;
-    public static int DOCUMENT_LAUNCH_NEVER;
-    public static int DOCUMENT_LAUNCH_NONE;
-    public static int FLAG_ALLOW_EMBEDDED;
-    public static int FLAG_ALLOW_TASK_REPARENTING;
-    public static int FLAG_ALWAYS_FOCUSABLE;
-    public static int FLAG_ALWAYS_RETAIN_TASK_STATE;
-    public static int FLAG_AUTO_REMOVE_FROM_RECENTS;
-    public static int FLAG_CLEAR_TASK_ON_LAUNCH;
-    public static int FLAG_ENABLE_VR_MODE;
-    public static int FLAG_EXCLUDE_FROM_RECENTS;
-    public static int FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS;
-    public static int FLAG_FINISH_ON_TASK_LAUNCH;
-    public static int FLAG_HARDWARE_ACCELERATED;
-    public static int FLAG_IMMERSIVE;
-    public static int FLAG_IMPLICITLY_VISIBLE_TO_INSTANT_APP;
-    public static int FLAG_MULTIPROCESS;
-    public static int FLAG_NO_HISTORY;
-    public static int FLAG_RELINQUISH_TASK_IDENTITY;
-    public static int FLAG_RESUME_WHILE_PAUSING;
-    public static int FLAG_SHOW_FOR_ALL_USERS;
-    public static int FLAG_SHOW_WHEN_LOCKED;
-    public static int FLAG_SINGLE_USER;
-    public static int FLAG_STATE_NOT_NEEDED;
-    public static int FLAG_SUPPORTS_PICTURE_IN_PICTURE;
-    public static int FLAG_SYSTEM_USER_ONLY;
-    public static int FLAG_TURN_SCREEN_ON;
-    public static int FLAG_VISIBLE_TO_INSTANT_APP;
-    public static int LAUNCH_MULTIPLE;
-    public static int LAUNCH_SINGLE_INSTANCE;
-    public static int LAUNCH_SINGLE_TASK;
-    public static int LAUNCH_SINGLE_TOP;
-    public static int LOCK_TASK_LAUNCH_MODE_ALWAYS;
-    public static int LOCK_TASK_LAUNCH_MODE_DEFAULT;
-    public static int LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED;
-    public static int LOCK_TASK_LAUNCH_MODE_NEVER;
-    public static int PERSIST_ACROSS_REBOOTS;
-    public static int PERSIST_NEVER;
-    public static int PERSIST_ROOT_ONLY;
-    public static int RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY;
-    public static int RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY;
-    public static int RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION;
-    public static int RESIZE_MODE_FORCE_RESIZEABLE;
-    public static int RESIZE_MODE_RESIZEABLE;
-    public static int RESIZE_MODE_RESIZEABLE_AND_PIPABLE_DEPRECATED;
-    public static int RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION;
-    public static int RESIZE_MODE_UNRESIZEABLE;
-    public static int SCREEN_ORIENTATION_BEHIND;
-    public static int SCREEN_ORIENTATION_FULL_SENSOR;
-    public static int SCREEN_ORIENTATION_FULL_USER;
-    public static int SCREEN_ORIENTATION_LANDSCAPE;
-    public static int SCREEN_ORIENTATION_LOCKED;
-    public static int SCREEN_ORIENTATION_NOSENSOR;
-    public static int SCREEN_ORIENTATION_PORTRAIT;
-    public static int SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
-    public static int SCREEN_ORIENTATION_REVERSE_PORTRAIT;
-    public static int SCREEN_ORIENTATION_SENSOR;
-    public static int SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
-    public static int SCREEN_ORIENTATION_SENSOR_PORTRAIT;
-    public static int SCREEN_ORIENTATION_UNSET;
-    public static int SCREEN_ORIENTATION_UNSPECIFIED;
-    public static int SCREEN_ORIENTATION_USER;
-    public static int SCREEN_ORIENTATION_USER_LANDSCAPE;
-    public static int SCREEN_ORIENTATION_USER_PORTRAIT;
-    public static int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW;
-    public int colorMode;
-    public int configChanges;
-    public int documentLaunchMode;
-    public int flags;
-    public int launchMode;
-    public java.lang.String launchToken;
-    public int lockTaskLaunchMode;
-    public float maxAspectRatio;
-    public int maxRecents;
-    public java.lang.String parentActivityName;
-    public java.lang.String permission;
-    public int persistableMode;
-    public java.lang.String requestedVrComponent;
-    public int resizeMode;
-    public int rotationAnimation;
-    public int screenOrientation;
-    public int softInputMode;
-    public java.lang.String targetActivity;
-    public java.lang.String taskAffinity;
-    public int theme;
-    public int uiOptions;
-    public android.content.pm.ActivityInfo$WindowLayout windowLayout;
-}
-
--keep class android.content.pm.ActivityInfo$WindowLayout {
-    <init>(int, float, int, float, int, int, int);
-
-
-
-    public int gravity;
-    public int height;
-    public float heightFraction;
-    public int minHeight;
-    public int minWidth;
-    public int width;
-    public float widthFraction;
-}
-
--keep class android.content.pm.ApplicationInfo {
-    <init>();
-    <init>(android.content.pm.ApplicationInfo);
-
-    public int describeContents();
-    public void disableCompatibilityMode();
-    public void dump(android.util.Printer, java.lang.String);
-    public void dump(android.util.Printer, java.lang.String, int);
-    protected android.content.pm.ApplicationInfo getApplicationInfo();
-    public java.lang.String getBaseCodePath();
-    public java.lang.String getBaseResourcePath();
-    public static java.lang.CharSequence getCategoryTitle(android.content.Context, int);
-    public java.lang.String getCodePath();
-    public int getHiddenApiEnforcementPolicy();
-    public java.lang.String getResourcePath();
-    public java.lang.String[] getSplitCodePaths();
-    public java.lang.String[] getSplitResourcePaths();
-    public boolean hasCode();
-    public boolean hasRtlSupport();
-    public void initForUser(int);
-    public boolean isDefaultToDeviceProtectedStorage();
-    public boolean isDirectBootAware();
-    public boolean isEncryptionAware();
-    public boolean isExternal();
-    public boolean isExternalAsec();
-    public boolean isForwardLocked();
-    public boolean isInstantApp();
-    public boolean isInternal();
-    public boolean isOem();
-    public boolean isPartiallyDirectBootAware();
-    public boolean isPrivilegedApp();
-    public boolean isProduct();
-    public boolean isRequiredForSystemUser();
-    public boolean isSignedWithPlatformKey();
-    public boolean isStaticSharedLibrary();
-    public boolean isSystemApp();
-    public boolean isUpdatedSystemApp();
-    public static boolean isValidHiddenApiEnforcementPolicy(int);
-    public boolean isVendor();
-    public boolean isVirtualPreload();
-    public android.graphics.drawable.Drawable loadDefaultIcon(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
-    public void maybeUpdateHiddenApiEnforcementPolicy(int, int);
-    public boolean requestsIsolatedSplitLoading();
-    public void setBaseCodePath(java.lang.String);
-    public void setBaseResourcePath(java.lang.String);
-    public void setCodePath(java.lang.String);
-    public void setHiddenApiEnforcementPolicy(int);
-    public void setResourcePath(java.lang.String);
-    public void setSplitCodePaths(java.lang.String[]);
-    public void setSplitResourcePaths(java.lang.String[]);
-    public void setVersionCode(long);
-    public java.lang.String toString();
-    public boolean usesCompatibilityMode();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long, int);
-
-
-    public static int CATEGORY_AUDIO;
-    public static int CATEGORY_GAME;
-    public static int CATEGORY_IMAGE;
-    public static int CATEGORY_MAPS;
-    public static int CATEGORY_NEWS;
-    public static int CATEGORY_PRODUCTIVITY;
-    public static int CATEGORY_SOCIAL;
-    public static int CATEGORY_UNDEFINED;
-    public static int CATEGORY_VIDEO;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_ALLOW_BACKUP;
-    public static int FLAG_ALLOW_CLEAR_USER_DATA;
-    public static int FLAG_ALLOW_TASK_REPARENTING;
-    public static int FLAG_DEBUGGABLE;
-    public static int FLAG_EXTERNAL_STORAGE;
-    public static int FLAG_EXTRACT_NATIVE_LIBS;
-    public static int FLAG_FACTORY_TEST;
-    public static int FLAG_FULL_BACKUP_ONLY;
-    public static int FLAG_HARDWARE_ACCELERATED;
-    public static int FLAG_HAS_CODE;
-    public static int FLAG_INSTALLED;
-    public static int FLAG_IS_DATA_ONLY;
-    public static int FLAG_IS_GAME;
-    public static int FLAG_KILL_AFTER_RESTORE;
-    public static int FLAG_LARGE_HEAP;
-    public static int FLAG_MULTIARCH;
-    public static int FLAG_PERSISTENT;
-    public static int FLAG_RESIZEABLE_FOR_SCREENS;
-    public static int FLAG_RESTORE_ANY_VERSION;
-    public static int FLAG_STOPPED;
-    public static int FLAG_SUPPORTS_LARGE_SCREENS;
-    public static int FLAG_SUPPORTS_NORMAL_SCREENS;
-    public static int FLAG_SUPPORTS_RTL;
-    public static int FLAG_SUPPORTS_SCREEN_DENSITIES;
-    public static int FLAG_SUPPORTS_SMALL_SCREENS;
-    public static int FLAG_SUPPORTS_XLARGE_SCREENS;
-    public static int FLAG_SUSPENDED;
-    public static int FLAG_SYSTEM;
-    public static int FLAG_TEST_ONLY;
-    public static int FLAG_UPDATED_SYSTEM_APP;
-    public static int FLAG_USES_CLEARTEXT_TRAFFIC;
-    public static int FLAG_VM_SAFE_MODE;
-    public static int HIDDEN_API_ENFORCEMENT_BLACK;
-    public static int HIDDEN_API_ENFORCEMENT_DARK_GREY_AND_BLACK;
-    public static int HIDDEN_API_ENFORCEMENT_DEFAULT;
-    public static int HIDDEN_API_ENFORCEMENT_JUST_WARN;
-    public static int HIDDEN_API_ENFORCEMENT_NONE;
-    public static java.lang.String METADATA_PRELOADED_FONTS;
-    public static int PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE;
-    public static int PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION;
-    public static int PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE;
-    public static int PRIVATE_FLAG_BACKUP_IN_FOREGROUND;
-    public static int PRIVATE_FLAG_CANT_SAVE_STATE;
-    public static int PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE;
-    public static int PRIVATE_FLAG_DIRECT_BOOT_AWARE;
-    public static int PRIVATE_FLAG_FORWARD_LOCK;
-    public static int PRIVATE_FLAG_HAS_DOMAIN_URLS;
-    public static int PRIVATE_FLAG_HIDDEN;
-    public static int PRIVATE_FLAG_INSTANT;
-    public static int PRIVATE_FLAG_ISOLATED_SPLIT_LOADING;
-    public static int PRIVATE_FLAG_OEM;
-    public static int PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE;
-    public static int PRIVATE_FLAG_PRIVILEGED;
-    public static int PRIVATE_FLAG_PRODUCT;
-    public static int PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER;
-    public static int PRIVATE_FLAG_SIGNED_WITH_PLATFORM_KEY;
-    public static int PRIVATE_FLAG_STATIC_SHARED_LIBRARY;
-    public static int PRIVATE_FLAG_VENDOR;
-    public static int PRIVATE_FLAG_VIRTUAL_PRELOAD;
-    public java.lang.String appComponentFactory;
-    public java.lang.String backupAgentName;
-    public int category;
-    public java.lang.String classLoaderName;
-    public java.lang.String className;
-    public int compatibleWidthLimitDp;
-    public int compileSdkVersion;
-    public java.lang.String compileSdkVersionCodename;
-    public java.lang.String credentialProtectedDataDir;
-    public java.lang.String dataDir;
-    public int descriptionRes;
-    public java.lang.String deviceProtectedDataDir;
-    public boolean enabled;
-    public int enabledSetting;
-    public int flags;
-    public int fullBackupContent;
-    public boolean hiddenUntilInstalled;
-    public int installLocation;
-    public int largestWidthLimitDp;
-    public long longVersionCode;
-    public java.lang.String manageSpaceActivityName;
-    public float maxAspectRatio;
-    public int minSdkVersion;
-    public java.lang.String nativeLibraryDir;
-    public java.lang.String nativeLibraryRootDir;
-    public boolean nativeLibraryRootRequiresIsa;
-    public int networkSecurityConfigRes;
-    public java.lang.String permission;
-    public java.lang.String primaryCpuAbi;
-    public int privateFlags;
-    public java.lang.String processName;
-    public java.lang.String publicSourceDir;
-    public int requiresSmallestWidthDp;
-    public java.lang.String[] resourceDirs;
-    public java.lang.String scanPublicSourceDir;
-    public java.lang.String scanSourceDir;
-    public java.lang.String seInfo;
-    public java.lang.String seInfoUser;
-    public java.lang.String secondaryCpuAbi;
-    public java.lang.String secondaryNativeLibraryDir;
-    public java.lang.String[] sharedLibraryFiles;
-    public java.lang.String sourceDir;
-    public java.lang.String[] splitClassLoaderNames;
-    public android.util.SparseArray splitDependencies;
-    public java.lang.String[] splitNames;
-    public java.lang.String[] splitPublicSourceDirs;
-    public java.lang.String[] splitSourceDirs;
-    public java.util.UUID storageUuid;
-    public int targetSandboxVersion;
-    public int targetSdkVersion;
-    public java.lang.String taskAffinity;
-    public int theme;
-    public int uiOptions;
-    public int uid;
-    public int versionCode;
-    public java.lang.String volumeUuid;
-}
-
--keep class android.content.pm.AuxiliaryResolveInfo {
-    <init>(java.lang.String, boolean, android.content.Intent, java.util.List);
-    <init>(android.content.ComponentName, android.content.Intent, java.util.List);
-    <init>(android.content.ComponentName, java.lang.String, long, java.lang.String);
-
-
-
-    public android.content.Intent failureIntent;
-    public java.util.List filters;
-    public android.content.ComponentName installFailureActivity;
-    public boolean needsPhaseTwo;
-    public java.lang.String token;
-}
-
--keep class android.content.pm.AuxiliaryResolveInfo$AuxiliaryFilter {
-    <init>(android.content.IntentFilter, android.content.pm.InstantAppResolveInfo, java.lang.String, android.os.Bundle);
-    <init>(android.content.pm.InstantAppResolveInfo, java.lang.String, android.os.Bundle);
-    <init>(java.lang.String, long, java.lang.String);
-
-    public java.lang.String toString();
-
-
-    public android.os.Bundle extras;
-    public java.lang.String packageName;
-    public android.content.pm.InstantAppResolveInfo resolveInfo;
-    public java.lang.String splitName;
-    public long versionCode;
-}
-
--keep class android.content.pm.BaseParceledListSlice {
-    <init>(java.util.List);
-
-    public java.util.List getList();
-    protected abstract android.os.Parcelable$Creator readParcelableCreator(android.os.Parcel, java.lang.ClassLoader);
-    public void setInlineCountLimit(int);
-    protected abstract void writeElement(java.lang.Object, android.os.Parcel, int);
-    protected abstract void writeParcelableCreator(java.lang.Object, android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-}
-
--keep class android.content.pm.ChangedPackages {
-    <init>(int, java.util.List);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public java.util.List getPackageNames();
-    public int getSequenceNumber();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.ComponentInfo {
-    <init>();
-    <init>(android.content.pm.ComponentInfo);
-    <init>(android.os.Parcel);
-
-    protected void dumpBack(android.util.Printer, java.lang.String);
-    protected void dumpFront(android.util.Printer, java.lang.String);
-    protected android.content.pm.ApplicationInfo getApplicationInfo();
-    public int getBannerResource();
-    public android.content.ComponentName getComponentName();
-    public int getIconResource();
-    public int getLogoResource();
-    public boolean isEnabled();
-    protected android.graphics.drawable.Drawable loadDefaultBanner(android.content.pm.PackageManager);
-    public android.graphics.drawable.Drawable loadDefaultIcon(android.content.pm.PackageManager);
-    protected android.graphics.drawable.Drawable loadDefaultLogo(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadUnsafeLabel(android.content.pm.PackageManager);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public android.content.pm.ApplicationInfo applicationInfo;
-    public int descriptionRes;
-    public boolean directBootAware;
-    public boolean enabled;
-    public boolean encryptionAware;
-    public boolean exported;
-    public java.lang.String processName;
-    public java.lang.String splitName;
-}
-
--keep class android.content.pm.ConfigurationInfo {
-    <init>();
-    <init>(android.content.pm.ConfigurationInfo);
-
-    public int describeContents();
-    public java.lang.String getGlEsVersion();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int GL_ES_VERSION_UNDEFINED;
-    public static int INPUT_FEATURE_FIVE_WAY_NAV;
-    public static int INPUT_FEATURE_HARD_KEYBOARD;
-    public int reqGlEsVersion;
-    public int reqInputFeatures;
-    public int reqKeyboardType;
-    public int reqNavigation;
-    public int reqTouchScreen;
-}
-
--keep class android.content.pm.FeatureGroupInfo {
-    <init>();
-    <init>(android.content.pm.FeatureGroupInfo);
-
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.FeatureInfo[] features;
-}
-
--keep class android.content.pm.FeatureInfo {
-    <init>();
-    <init>(android.content.pm.FeatureInfo);
-
-    public int describeContents();
-    public java.lang.String getGlEsVersion();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_REQUIRED;
-    public static int GL_ES_VERSION_UNDEFINED;
-    public int flags;
-    public java.lang.String name;
-    public int reqGlEsVersion;
-    public int version;
-}
-
--keep class android.content.pm.IDexModuleRegisterCallback {
-
-    public abstract void onDexModuleRegistered(java.lang.String, boolean, java.lang.String);
-
-
-}
-
--keep class android.content.pm.IOnPermissionsChangeListener {
-
-    public abstract void onPermissionsChanged(int);
-
-
-}
-
--keep class android.content.pm.IPackageDataObserver {
-
-    public abstract void onRemoveCompleted(java.lang.String, boolean);
-
-
-}
-
--keep class android.content.pm.IPackageDeleteObserver {
-
-    public abstract void packageDeleted(java.lang.String, int);
-
-
-}
-
--keep class android.content.pm.IPackageDeleteObserver2 {
-
-    public abstract void onPackageDeleted(java.lang.String, int, java.lang.String);
-    public abstract void onUserActionRequired(android.content.Intent);
-
-
-}
-
--keep class android.content.pm.IPackageInstaller {
-
-    public abstract void abandonSession(int);
-    public abstract int createSession(android.content.pm.PackageInstaller$SessionParams, java.lang.String, int);
-    public abstract android.content.pm.ParceledListSlice getAllSessions(int);
-    public abstract android.content.pm.ParceledListSlice getMySessions(java.lang.String, int);
-    public abstract android.content.pm.PackageInstaller$SessionInfo getSessionInfo(int);
-    public abstract android.content.pm.IPackageInstallerSession openSession(int);
-    public abstract void registerCallback(android.content.pm.IPackageInstallerCallback, int);
-    public abstract void setPermissionsResult(int, boolean);
-    public abstract void uninstall(android.content.pm.VersionedPackage, java.lang.String, int, android.content.IntentSender, int);
-    public abstract void unregisterCallback(android.content.pm.IPackageInstallerCallback);
-    public abstract void updateSessionAppIcon(int, android.graphics.Bitmap);
-    public abstract void updateSessionAppLabel(int, java.lang.String);
-
-
-}
-
--keep class android.content.pm.IPackageInstallerCallback {
-
-    public abstract void onSessionActiveChanged(int, boolean);
-    public abstract void onSessionBadgingChanged(int);
-    public abstract void onSessionCreated(int);
-    public abstract void onSessionFinished(int, boolean);
-    public abstract void onSessionProgressChanged(int, float);
-
-
-}
-
--keep class android.content.pm.IPackageInstallerSession {
-
-    public abstract void abandon();
-    public abstract void addClientProgress(float);
-    public abstract void close();
-    public abstract void commit(android.content.IntentSender, boolean);
-    public abstract java.lang.String[] getNames();
-    public abstract android.os.ParcelFileDescriptor openRead(java.lang.String);
-    public abstract android.os.ParcelFileDescriptor openWrite(java.lang.String, long, long);
-    public abstract void removeSplit(java.lang.String);
-    public abstract void setClientProgress(float);
-    public abstract void transfer(java.lang.String);
-    public abstract void write(java.lang.String, long, long, android.os.ParcelFileDescriptor);
-
-
-}
-
--keep class android.content.pm.IPackageManager {
-
-    public abstract boolean activitySupportsIntent(android.content.ComponentName, android.content.Intent, java.lang.String);
-    public abstract void addCrossProfileIntentFilter(android.content.IntentFilter, java.lang.String, int, int, int);
-    public abstract void addOnPermissionsChangeListener(android.content.pm.IOnPermissionsChangeListener);
-    public abstract boolean addPermission(android.content.pm.PermissionInfo);
-    public abstract boolean addPermissionAsync(android.content.pm.PermissionInfo);
-    public abstract void addPersistentPreferredActivity(android.content.IntentFilter, android.content.ComponentName, int);
-    public abstract void addPreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName, int);
-    public abstract boolean canForwardTo(android.content.Intent, java.lang.String, int, int);
-    public abstract boolean canRequestPackageInstalls(java.lang.String, int);
-    public abstract java.lang.String[] canonicalToCurrentPackageNames(java.lang.String[]);
-    public abstract void checkPackageStartable(java.lang.String, int);
-    public abstract int checkPermission(java.lang.String, java.lang.String, int);
-    public abstract int checkSignatures(java.lang.String, java.lang.String);
-    public abstract int checkUidPermission(java.lang.String, int);
-    public abstract int checkUidSignatures(int, int);
-    public abstract void clearApplicationProfileData(java.lang.String);
-    public abstract void clearApplicationUserData(java.lang.String, android.content.pm.IPackageDataObserver, int);
-    public abstract void clearCrossProfileIntentFilters(int, java.lang.String);
-    public abstract void clearPackagePersistentPreferredActivities(java.lang.String, int);
-    public abstract void clearPackagePreferredActivities(java.lang.String);
-    public abstract java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]);
-    public abstract void deleteApplicationCacheFiles(java.lang.String, android.content.pm.IPackageDataObserver);
-    public abstract void deleteApplicationCacheFilesAsUser(java.lang.String, int, android.content.pm.IPackageDataObserver);
-    public abstract void deletePackageAsUser(java.lang.String, int, android.content.pm.IPackageDeleteObserver, int, int);
-    public abstract void deletePackageVersioned(android.content.pm.VersionedPackage, android.content.pm.IPackageDeleteObserver2, int, int);
-    public abstract void deletePreloadsFileCache();
-    public abstract void dumpProfiles(java.lang.String);
-    public abstract void enterSafeMode();
-    public abstract void extendVerificationTimeout(int, int, long);
-    public abstract android.content.pm.ResolveInfo findPersistentPreferredActivity(android.content.Intent, int);
-    public abstract void finishPackageInstall(int, boolean);
-    public abstract void flushPackageRestrictionsAsUser(int);
-    public abstract void forceDexOpt(java.lang.String);
-    public abstract void freeStorage(java.lang.String, long, int, android.content.IntentSender);
-    public abstract void freeStorageAndNotify(java.lang.String, long, int, android.content.pm.IPackageDataObserver);
-    public abstract android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int, int);
-    public abstract android.content.pm.ParceledListSlice getAllIntentFilters(java.lang.String);
-    public abstract java.util.List getAllPackages();
-    public abstract android.content.pm.ParceledListSlice getAllPermissionGroups(int);
-    public abstract java.lang.String[] getAppOpPermissionPackages(java.lang.String);
-    public abstract int getApplicationEnabledSetting(java.lang.String, int);
-    public abstract boolean getApplicationHiddenSettingAsUser(java.lang.String, int);
-    public abstract android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, int);
-    public abstract android.content.pm.dex.IArtManager getArtManager();
-    public abstract boolean getBlockUninstallForUser(java.lang.String, int);
-    public abstract android.content.pm.ChangedPackages getChangedPackages(int, int);
-    public abstract int getComponentEnabledSetting(android.content.ComponentName, int);
-    public abstract byte[] getDefaultAppsBackup(int);
-    public abstract java.lang.String getDefaultBrowserPackageName(int);
-    public abstract int getFlagsForUid(int);
-    public abstract java.lang.CharSequence getHarmfulAppWarning(java.lang.String, int);
-    public abstract android.content.ComponentName getHomeActivities(java.util.List);
-    public abstract int getInstallLocation();
-    public abstract int getInstallReason(java.lang.String, int);
-    public abstract android.content.pm.ParceledListSlice getInstalledApplications(int, int);
-    public abstract android.content.pm.ParceledListSlice getInstalledPackages(int, int);
-    public abstract java.lang.String getInstallerPackageName(java.lang.String);
-    public abstract java.lang.String getInstantAppAndroidId(java.lang.String, int);
-    public abstract byte[] getInstantAppCookie(java.lang.String, int);
-    public abstract android.graphics.Bitmap getInstantAppIcon(java.lang.String, int);
-    public abstract android.content.ComponentName getInstantAppInstallerComponent();
-    public abstract android.content.ComponentName getInstantAppResolverComponent();
-    public abstract android.content.ComponentName getInstantAppResolverSettingsComponent();
-    public abstract android.content.pm.ParceledListSlice getInstantApps(int);
-    public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int);
-    public abstract byte[] getIntentFilterVerificationBackup(int);
-    public abstract android.content.pm.ParceledListSlice getIntentFilterVerifications(java.lang.String);
-    public abstract int getIntentVerificationStatus(java.lang.String, int);
-    public abstract android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String);
-    public abstract android.content.pm.ResolveInfo getLastChosenActivity(android.content.Intent, java.lang.String, int);
-    public abstract int getMoveStatus(int);
-    public abstract java.lang.String getNameForUid(int);
-    public abstract java.lang.String[] getNamesForUids(int[]);
-    public abstract int[] getPackageGids(java.lang.String, int, int);
-    public abstract android.content.pm.PackageInfo getPackageInfo(java.lang.String, int, int);
-    public abstract android.content.pm.PackageInfo getPackageInfoVersioned(android.content.pm.VersionedPackage, int, int);
-    public abstract android.content.pm.IPackageInstaller getPackageInstaller();
-    public abstract void getPackageSizeInfo(java.lang.String, int, android.content.pm.IPackageStatsObserver);
-    public abstract int getPackageUid(java.lang.String, int, int);
-    public abstract java.lang.String[] getPackagesForUid(int);
-    public abstract android.content.pm.ParceledListSlice getPackagesHoldingPermissions(java.lang.String[], int, int);
-    public abstract java.lang.String getPermissionControllerPackageName();
-    public abstract int getPermissionFlags(java.lang.String, java.lang.String, int);
-    public abstract byte[] getPermissionGrantBackup(int);
-    public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int);
-    public abstract android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, java.lang.String, int);
-    public abstract android.content.pm.ParceledListSlice getPersistentApplications(int);
-    public abstract int getPreferredActivities(java.util.List, java.util.List, java.lang.String);
-    public abstract byte[] getPreferredActivityBackup(int);
-    public abstract int getPrivateFlagsForUid(int);
-    public abstract android.content.pm.ProviderInfo getProviderInfo(android.content.ComponentName, int, int);
-    public abstract android.content.pm.ActivityInfo getReceiverInfo(android.content.ComponentName, int, int);
-    public abstract android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int, int);
-    public abstract java.lang.String getServicesSystemSharedLibraryPackageName();
-    public abstract android.content.pm.ParceledListSlice getSharedLibraries(java.lang.String, int, int);
-    public abstract java.lang.String getSharedSystemSharedLibraryPackageName();
-    public abstract android.content.pm.KeySet getSigningKeySet(java.lang.String);
-    public abstract android.os.PersistableBundle getSuspendedPackageAppExtras(java.lang.String, int);
-    public abstract android.content.pm.ParceledListSlice getSystemAvailableFeatures();
-    public abstract java.lang.String[] getSystemSharedLibraryNames();
-    public abstract java.lang.String getSystemTextClassifierPackageName();
-    public abstract int getUidForSharedUser(java.lang.String);
-    public abstract android.content.pm.VerifierDeviceIdentity getVerifierDeviceIdentity();
-    public abstract void grantDefaultPermissionsToActiveLuiApp(java.lang.String, int);
-    public abstract void grantDefaultPermissionsToEnabledCarrierApps(java.lang.String[], int);
-    public abstract void grantDefaultPermissionsToEnabledImsServices(java.lang.String[], int);
-    public abstract void grantDefaultPermissionsToEnabledTelephonyDataServices(java.lang.String[], int);
-    public abstract void grantRuntimePermission(java.lang.String, java.lang.String, int);
-    public abstract boolean hasSigningCertificate(java.lang.String, byte[], int);
-    public abstract boolean hasSystemFeature(java.lang.String, int);
-    public abstract boolean hasSystemUidErrors();
-    public abstract boolean hasUidSigningCertificate(int, byte[], int);
-    public abstract int installExistingPackageAsUser(java.lang.String, int, int, int);
-    public abstract boolean isFirstBoot();
-    public abstract boolean isInstantApp(java.lang.String, int);
-    public abstract boolean isOnlyCoreApps();
-    public abstract boolean isPackageAvailable(java.lang.String, int);
-    public abstract boolean isPackageDeviceAdminOnAnyUser(java.lang.String);
-    public abstract boolean isPackageSignedByKeySet(java.lang.String, android.content.pm.KeySet);
-    public abstract boolean isPackageSignedByKeySetExactly(java.lang.String, android.content.pm.KeySet);
-    public abstract boolean isPackageStateProtected(java.lang.String, int);
-    public abstract boolean isPackageSuspendedForUser(java.lang.String, int);
-    public abstract boolean isPermissionEnforced(java.lang.String);
-    public abstract boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String, int);
-    public abstract boolean isProtectedBroadcast(java.lang.String);
-    public abstract boolean isSafeMode();
-    public abstract boolean isStorageLow();
-    public abstract boolean isUidPrivileged(int);
-    public abstract boolean isUpgrade();
-    public abstract void logAppProcessStartIfNeeded(java.lang.String, int, java.lang.String, java.lang.String, int);
-    public abstract int movePackage(java.lang.String, java.lang.String);
-    public abstract int movePrimaryStorage(java.lang.String);
-    public abstract android.content.pm.PackageCleanItem nextPackageToClean(android.content.pm.PackageCleanItem);
-    public abstract void notifyDexLoad(java.lang.String, java.util.List, java.util.List, java.lang.String);
-    public abstract void notifyPackageUse(java.lang.String, int);
-    public abstract boolean performDexOptMode(java.lang.String, boolean, java.lang.String, boolean, boolean, java.lang.String);
-    public abstract boolean performDexOptSecondary(java.lang.String, java.lang.String, boolean);
-    public abstract void performFstrimIfNeeded();
-    public abstract android.content.pm.ParceledListSlice queryContentProviders(java.lang.String, int, int, java.lang.String);
-    public abstract android.content.pm.ParceledListSlice queryInstrumentation(java.lang.String, int);
-    public abstract android.content.pm.ParceledListSlice queryIntentActivities(android.content.Intent, java.lang.String, int, int);
-    public abstract android.content.pm.ParceledListSlice queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], java.lang.String[], android.content.Intent, java.lang.String, int, int);
-    public abstract android.content.pm.ParceledListSlice queryIntentContentProviders(android.content.Intent, java.lang.String, int, int);
-    public abstract android.content.pm.ParceledListSlice queryIntentReceivers(android.content.Intent, java.lang.String, int, int);
-    public abstract android.content.pm.ParceledListSlice queryIntentServices(android.content.Intent, java.lang.String, int, int);
-    public abstract android.content.pm.ParceledListSlice queryPermissionsByGroup(java.lang.String, int);
-    public abstract void querySyncProviders(java.util.List, java.util.List);
-    public abstract void reconcileSecondaryDexFiles(java.lang.String);
-    public abstract void registerDexModule(java.lang.String, java.lang.String, boolean, android.content.pm.IDexModuleRegisterCallback);
-    public abstract void registerMoveCallback(android.content.pm.IPackageMoveObserver);
-    public abstract void removeOnPermissionsChangeListener(android.content.pm.IOnPermissionsChangeListener);
-    public abstract void removePermission(java.lang.String);
-    public abstract void replacePreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName, int);
-    public abstract void resetApplicationPreferences(int);
-    public abstract void resetRuntimePermissions();
-    public abstract android.content.pm.ProviderInfo resolveContentProvider(java.lang.String, int, int);
-    public abstract android.content.pm.ResolveInfo resolveIntent(android.content.Intent, java.lang.String, int, int);
-    public abstract android.content.pm.ResolveInfo resolveService(android.content.Intent, java.lang.String, int, int);
-    public abstract void restoreDefaultApps(byte[], int);
-    public abstract void restoreIntentFilterVerification(byte[], int);
-    public abstract void restorePermissionGrants(byte[], int);
-    public abstract void restorePreferredActivities(byte[], int);
-    public abstract void revokeDefaultPermissionsFromDisabledTelephonyDataServices(java.lang.String[], int);
-    public abstract void revokeDefaultPermissionsFromLuiApps(java.lang.String[], int);
-    public abstract void revokeRuntimePermission(java.lang.String, java.lang.String, int);
-    public abstract boolean runBackgroundDexoptJob(java.util.List);
-    public abstract void setApplicationCategoryHint(java.lang.String, int, java.lang.String);
-    public abstract void setApplicationEnabledSetting(java.lang.String, int, int, int, java.lang.String);
-    public abstract boolean setApplicationHiddenSettingAsUser(java.lang.String, boolean, int);
-    public abstract boolean setBlockUninstallForUser(java.lang.String, boolean, int);
-    public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int, int);
-    public abstract boolean setDefaultBrowserPackageName(java.lang.String, int);
-    public abstract void setHarmfulAppWarning(java.lang.String, java.lang.CharSequence, int);
-    public abstract void setHomeActivity(android.content.ComponentName, int);
-    public abstract boolean setInstallLocation(int);
-    public abstract void setInstallerPackageName(java.lang.String, java.lang.String);
-    public abstract boolean setInstantAppCookie(java.lang.String, byte[], int);
-    public abstract void setLastChosenActivity(android.content.Intent, java.lang.String, int, android.content.IntentFilter, int, android.content.ComponentName);
-    public abstract void setPackageStoppedState(java.lang.String, boolean, int);
-    public abstract java.lang.String[] setPackagesSuspendedAsUser(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, java.lang.String, java.lang.String, int);
-    public abstract void setPermissionEnforced(java.lang.String, boolean);
-    public abstract boolean setRequiredForSystemUser(java.lang.String, boolean);
-    public abstract void setSystemAppHiddenUntilInstalled(java.lang.String, boolean);
-    public abstract boolean setSystemAppInstallState(java.lang.String, boolean, int);
-    public abstract void setUpdateAvailable(java.lang.String, boolean);
-    public abstract boolean shouldShowRequestPermissionRationale(java.lang.String, java.lang.String, int);
-    public abstract void systemReady();
-    public abstract void unregisterMoveCallback(android.content.pm.IPackageMoveObserver);
-    public abstract boolean updateIntentVerificationStatus(java.lang.String, int, int);
-    public abstract void updatePackagesIfNeeded();
-    public abstract void updatePermissionFlags(java.lang.String, java.lang.String, int, int, int);
-    public abstract void updatePermissionFlagsForAllApps(int, int, int);
-    public abstract void verifyIntentFilter(int, int, java.util.List);
-    public abstract void verifyPendingInstall(int, int);
-
-
-}
-
--keep class android.content.pm.IPackageMoveObserver {
-
-    public abstract void onCreated(int, android.os.Bundle);
-    public abstract void onStatusChanged(int, int, long);
-
-
-}
-
--keep class android.content.pm.IPackageStatsObserver {
-
-    public abstract void onGetStatsCompleted(android.content.pm.PackageStats, boolean);
-
-
-}
-
--keep class android.content.pm.InstantAppInfo {
-    <init>(android.content.pm.ApplicationInfo, java.lang.String[], java.lang.String[]);
-    <init>(java.lang.String, java.lang.CharSequence, java.lang.String[], java.lang.String[]);
-
-    public int describeContents();
-    public android.content.pm.ApplicationInfo getApplicationInfo();
-    public java.lang.String[] getGrantedPermissions();
-    public java.lang.String getPackageName();
-    public java.lang.String[] getRequestedPermissions();
-    public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.InstantAppIntentFilter {
-    <init>(java.lang.String, java.util.List);
-
-    public int describeContents();
-    public java.util.List getFilters();
-    public java.lang.String getSplitName();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.InstantAppResolveInfo {
-    <init>(android.content.pm.InstantAppResolveInfo$InstantAppDigest, java.lang.String, java.util.List, int);
-    <init>(android.content.pm.InstantAppResolveInfo$InstantAppDigest, java.lang.String, java.util.List, long, android.os.Bundle);
-    <init>(java.lang.String, java.lang.String, java.util.List);
-    <init>(android.os.Bundle);
-
-    public int describeContents();
-    public byte[] getDigestBytes();
-    public int getDigestPrefix();
-    public android.os.Bundle getExtras();
-    public java.util.List getIntentFilters();
-    public long getLongVersionCode();
-    public java.lang.String getPackageName();
-    public int getVersionCode();
-    public boolean shouldLetInstallerDecide();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.InstantAppResolveInfo$InstantAppDigest {
-    <init>(java.lang.String);
-    <init>(java.lang.String, int);
-
-    public int describeContents();
-    public byte[][] getDigestBytes();
-    public int[] getDigestPrefix();
-    public int[] getDigestPrefixSecure();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.content.pm.InstantAppResolveInfo$InstantAppDigest UNDEFINED;
-}
-
--keep class android.content.pm.InstrumentationInfo {
-    <init>();
-    <init>(android.content.pm.InstrumentationInfo);
-
-    public void copyTo(android.content.pm.ApplicationInfo);
-    public int describeContents();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String credentialProtectedDataDir;
-    public java.lang.String dataDir;
-    public java.lang.String deviceProtectedDataDir;
-    public boolean functionalTest;
-    public boolean handleProfiling;
-    public java.lang.String nativeLibraryDir;
-    public java.lang.String primaryCpuAbi;
-    public java.lang.String publicSourceDir;
-    public java.lang.String secondaryCpuAbi;
-    public java.lang.String secondaryNativeLibraryDir;
-    public java.lang.String sourceDir;
-    public android.util.SparseArray splitDependencies;
-    public java.lang.String[] splitNames;
-    public java.lang.String[] splitPublicSourceDirs;
-    public java.lang.String[] splitSourceDirs;
-    public java.lang.String targetPackage;
-    public java.lang.String targetProcesses;
-}
-
--keep class android.content.pm.IntentFilterVerificationInfo {
-    <init>();
-    <init>(java.lang.String, android.util.ArraySet);
-    <init>(org.xmlpull.v1.XmlPullParser);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public java.util.Set getDomains();
-    public java.lang.String getDomainsString();
-    public java.lang.String getPackageName();
-    public int getStatus();
-    public java.lang.String getStatusString();
-    public static java.lang.String getStatusStringFromValue(long);
-    public void readFromXml(org.xmlpull.v1.XmlPullParser);
-    public void setDomains(android.util.ArraySet);
-    public void setStatus(int);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToXml(org.xmlpull.v1.XmlSerializer);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.KeySet {
-    <init>(android.os.IBinder);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.os.IBinder getToken();
-    public int hashCode();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.PackageCleanItem {
-    <init>(int, java.lang.String, boolean);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public boolean andCode;
-    public java.lang.String packageName;
-    public int userId;
-}
-
--keep class android.content.pm.PackageInfo {
-    <init>();
-
-    public static long composeLongVersionCode(int, int);
-    public int describeContents();
-    public long getLongVersionCode();
-    public boolean isOverlayPackage();
-    public boolean isStaticOverlayPackage();
-    public void setLongVersionCode(long);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int INSTALL_LOCATION_AUTO;
-    public static int INSTALL_LOCATION_INTERNAL_ONLY;
-    public static int INSTALL_LOCATION_PREFER_EXTERNAL;
-    public static int INSTALL_LOCATION_UNSPECIFIED;
-    public static int REQUESTED_PERMISSION_GRANTED;
-    public static int REQUESTED_PERMISSION_REQUIRED;
-    public android.content.pm.ActivityInfo[] activities;
-    public android.content.pm.ApplicationInfo applicationInfo;
-    public int baseRevisionCode;
-    public int compileSdkVersion;
-    public java.lang.String compileSdkVersionCodename;
-    public android.content.pm.ConfigurationInfo[] configPreferences;
-    public boolean coreApp;
-    public android.content.pm.FeatureGroupInfo[] featureGroups;
-    public long firstInstallTime;
-    public int[] gids;
-    public int installLocation;
-    public android.content.pm.InstrumentationInfo[] instrumentation;
-    public boolean isStub;
-    public long lastUpdateTime;
-    public java.lang.String overlayCategory;
-    public int overlayPriority;
-    public java.lang.String overlayTarget;
-    public java.lang.String packageName;
-    public android.content.pm.PermissionInfo[] permissions;
-    public android.content.pm.ProviderInfo[] providers;
-    public android.content.pm.ActivityInfo[] receivers;
-    public android.content.pm.FeatureInfo[] reqFeatures;
-    public java.lang.String[] requestedPermissions;
-    public int[] requestedPermissionsFlags;
-    public java.lang.String requiredAccountType;
-    public boolean requiredForAllUsers;
-    public java.lang.String restrictedAccountType;
-    public android.content.pm.ServiceInfo[] services;
-    public java.lang.String sharedUserId;
-    public int sharedUserLabel;
-    public android.content.pm.Signature[] signatures;
-    public android.content.pm.SigningInfo signingInfo;
-    public java.lang.String[] splitNames;
-    public int[] splitRevisionCodes;
-    public int versionCode;
-    public int versionCodeMajor;
-    public java.lang.String versionName;
-}
-
--keep class android.content.pm.PackageInstaller {
-    <init>(android.content.pm.IPackageInstaller, java.lang.String, int);
-
-    public void abandonSession(int);
-    public void addSessionCallback(android.content.pm.PackageInstaller$SessionCallback);
-    public void addSessionCallback(android.content.pm.PackageInstaller$SessionCallback, android.os.Handler);
-    public int createSession(android.content.pm.PackageInstaller$SessionParams);
-    public java.util.List getAllSessions();
-    public java.util.List getMySessions();
-    public android.content.pm.PackageInstaller$SessionInfo getSessionInfo(int);
-    public android.content.pm.PackageInstaller$Session openSession(int);
-    public void registerSessionCallback(android.content.pm.PackageInstaller$SessionCallback);
-    public void registerSessionCallback(android.content.pm.PackageInstaller$SessionCallback, android.os.Handler);
-    public void removeSessionCallback(android.content.pm.PackageInstaller$SessionCallback);
-    public void setPermissionsResult(int, boolean);
-    public void uninstall(java.lang.String, android.content.IntentSender);
-    public void uninstall(java.lang.String, int, android.content.IntentSender);
-    public void uninstall(android.content.pm.VersionedPackage, android.content.IntentSender);
-    public void uninstall(android.content.pm.VersionedPackage, int, android.content.IntentSender);
-    public void unregisterSessionCallback(android.content.pm.PackageInstaller$SessionCallback);
-    public void updateSessionAppIcon(int, android.graphics.Bitmap);
-    public void updateSessionAppLabel(int, java.lang.CharSequence);
-
-
-    public static java.lang.String ACTION_CONFIRM_PERMISSIONS;
-    public static java.lang.String ACTION_SESSION_COMMITTED;
-    public static java.lang.String ACTION_SESSION_DETAILS;
-    public static boolean ENABLE_REVOCABLE_FD;
-    public static java.lang.String EXTRA_CALLBACK;
-    public static java.lang.String EXTRA_LEGACY_BUNDLE;
-    public static java.lang.String EXTRA_LEGACY_STATUS;
-    public static java.lang.String EXTRA_OTHER_PACKAGE_NAME;
-    public static java.lang.String EXTRA_PACKAGE_NAME;
-    public static java.lang.String EXTRA_PACKAGE_NAMES;
-    public static java.lang.String EXTRA_SESSION;
-    public static java.lang.String EXTRA_SESSION_ID;
-    public static java.lang.String EXTRA_STATUS;
-    public static java.lang.String EXTRA_STATUS_MESSAGE;
-    public static java.lang.String EXTRA_STORAGE_PATH;
-    public static int STATUS_FAILURE;
-    public static int STATUS_FAILURE_ABORTED;
-    public static int STATUS_FAILURE_BLOCKED;
-    public static int STATUS_FAILURE_CONFLICT;
-    public static int STATUS_FAILURE_INCOMPATIBLE;
-    public static int STATUS_FAILURE_INVALID;
-    public static int STATUS_FAILURE_STORAGE;
-    public static int STATUS_PENDING_USER_ACTION;
-    public static int STATUS_SUCCESS;
-}
-
--keep class android.content.pm.PackageInstaller$Session {
-    <init>(android.content.pm.IPackageInstallerSession);
-
-    public void abandon();
-    public void addProgress(float);
-    public void close();
-    public void commit(android.content.IntentSender);
-    public void commitTransferred(android.content.IntentSender);
-    public void fsync(java.io.OutputStream);
-    public java.lang.String[] getNames();
-    public java.io.InputStream openRead(java.lang.String);
-    public java.io.OutputStream openWrite(java.lang.String, long, long);
-    public void removeSplit(java.lang.String);
-    public void setProgress(float);
-    public void setStagingProgress(float);
-    public void transfer(java.lang.String);
-    public void write(java.lang.String, long, long, android.os.ParcelFileDescriptor);
-
-
-}
-
--keep class android.content.pm.PackageInstaller$SessionCallback {
-    <init>();
-
-    public abstract void onActiveChanged(int, boolean);
-    public abstract void onBadgingChanged(int);
-    public abstract void onCreated(int);
-    public abstract void onFinished(int, boolean);
-    public abstract void onProgressChanged(int, float);
-
-
-}
-
--keep class android.content.pm.PackageInstaller$SessionInfo {
-    <init>();
-    <init>(android.os.Parcel);
-
-    public android.content.Intent createDetailsIntent();
-    public int describeContents();
-    public boolean getAllocateAggressive();
-    public boolean getAllowDowngrade();
-    public android.graphics.Bitmap getAppIcon();
-    public java.lang.CharSequence getAppLabel();
-    public java.lang.String getAppPackageName();
-    public android.content.Intent getDetailsIntent();
-    public boolean getDontKillApp();
-    public java.lang.String[] getGrantedRuntimePermissions();
-    public boolean getInstallAsFullApp(boolean);
-    public boolean getInstallAsInstantApp(boolean);
-    public boolean getInstallAsVirtualPreload();
-    public int getInstallLocation();
-    public int getInstallReason();
-    public java.lang.String getInstallerPackageName();
-    public int getMode();
-    public int getOriginatingUid();
-    public android.net.Uri getOriginatingUri();
-    public float getProgress();
-    public android.net.Uri getReferrerUri();
-    public int getSessionId();
-    public long getSize();
-    public boolean isActive();
-    public boolean isOpen();
-    public boolean isSealed();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public boolean active;
-    public android.graphics.Bitmap appIcon;
-    public java.lang.CharSequence appLabel;
-    public java.lang.String appPackageName;
-    public java.lang.String[] grantedRuntimePermissions;
-    public int installFlags;
-    public int installLocation;
-    public int installReason;
-    public java.lang.String installerPackageName;
-    public int mode;
-    public int originatingUid;
-    public android.net.Uri originatingUri;
-    public float progress;
-    public android.net.Uri referrerUri;
-    public java.lang.String resolvedBaseCodePath;
-    public boolean sealed;
-    public int sessionId;
-    public long sizeBytes;
-}
-
--keep class android.content.pm.PackageInstaller$SessionParams {
-    <init>(int);
-    <init>(android.os.Parcel);
-
-    public boolean areHiddenOptionsSet();
-    public int describeContents();
-    public void dump(com.android.internal.util.IndentingPrintWriter);
-    public void setAllocateAggressive(boolean);
-    public void setAllowDowngrade(boolean);
-    public void setAppIcon(android.graphics.Bitmap);
-    public void setAppLabel(java.lang.CharSequence);
-    public void setAppPackageName(java.lang.String);
-    public void setDontKillApp(boolean);
-    public void setGrantedRuntimePermissions(java.lang.String[]);
-    public void setInstallAsInstantApp(boolean);
-    public void setInstallAsVirtualPreload();
-    public void setInstallFlagsExternal();
-    public void setInstallFlagsForcePermissionPrompt();
-    public void setInstallFlagsInternal();
-    public void setInstallLocation(int);
-    public void setInstallReason(int);
-    public void setInstallerPackageName(java.lang.String);
-    public void setOriginatingUid(int);
-    public void setOriginatingUri(android.net.Uri);
-    public void setReferrerUri(android.net.Uri);
-    public void setSize(long);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int MODE_FULL_INSTALL;
-    public static int MODE_INHERIT_EXISTING;
-    public static int MODE_INVALID;
-    public static int UID_UNKNOWN;
-    public java.lang.String abiOverride;
-    public android.graphics.Bitmap appIcon;
-    public long appIconLastModified;
-    public java.lang.String appLabel;
-    public java.lang.String appPackageName;
-    public java.lang.String[] grantedRuntimePermissions;
-    public int installFlags;
-    public int installLocation;
-    public int installReason;
-    public java.lang.String installerPackageName;
-    public int mode;
-    public int originatingUid;
-    public android.net.Uri originatingUri;
-    public android.net.Uri referrerUri;
-    public long sizeBytes;
-    public java.lang.String volumeUuid;
-}
-
--keep class android.content.pm.PackageItemInfo {
-    <init>();
-    <init>(android.content.pm.PackageItemInfo);
-    <init>(android.os.Parcel);
-
-    protected void dumpBack(android.util.Printer, java.lang.String);
-    protected void dumpFront(android.util.Printer, java.lang.String);
-    protected android.content.pm.ApplicationInfo getApplicationInfo();
-    public android.graphics.drawable.Drawable loadBanner(android.content.pm.PackageManager);
-    protected android.graphics.drawable.Drawable loadDefaultBanner(android.content.pm.PackageManager);
-    public android.graphics.drawable.Drawable loadDefaultIcon(android.content.pm.PackageManager);
-    protected android.graphics.drawable.Drawable loadDefaultLogo(android.content.pm.PackageManager);
-    public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
-    public android.graphics.drawable.Drawable loadLogo(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadSafeLabel(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadSafeLabel(android.content.pm.PackageManager, float, int);
-    public android.graphics.drawable.Drawable loadUnbadgedIcon(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadUnsafeLabel(android.content.pm.PackageManager);
-    public android.content.res.XmlResourceParser loadXmlMetaData(android.content.pm.PackageManager, java.lang.String);
-    public static void setForceSafeLabels(boolean);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static int DUMP_FLAG_ALL;
-    public static int DUMP_FLAG_APPLICATION;
-    public static int DUMP_FLAG_DETAILS;
-    public static int SAFE_LABEL_FLAG_FIRST_LINE;
-    public static int SAFE_LABEL_FLAG_SINGLE_LINE;
-    public static int SAFE_LABEL_FLAG_TRIM;
-    public int banner;
-    public int icon;
-    public int labelRes;
-    public int logo;
-    public android.os.Bundle metaData;
-    public java.lang.String name;
-    public java.lang.CharSequence nonLocalizedLabel;
-    public java.lang.String packageName;
-    public int showUserIcon;
-}
-
--keep class android.content.pm.PackageManager {
-    <init>();
-
-    public abstract void addCrossProfileIntentFilter(android.content.IntentFilter, int, int, int);
-    public abstract void addOnPermissionsChangeListener(android.content.pm.PackageManager$OnPermissionsChangedListener);
-    public abstract void addPackageToPreferred(java.lang.String);
-    public abstract boolean addPermission(android.content.pm.PermissionInfo);
-    public abstract boolean addPermissionAsync(android.content.pm.PermissionInfo);
-    public abstract void addPreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName);
-    public void addPreferredActivityAsUser(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName, int);
-    public android.content.Intent buildRequestPermissionsIntent(java.lang.String[]);
-    public abstract boolean canRequestPackageInstalls();
-    public abstract java.lang.String[] canonicalToCurrentPackageNames(java.lang.String[]);
-    public abstract int checkPermission(java.lang.String, java.lang.String);
-    public abstract int checkSignatures(java.lang.String, java.lang.String);
-    public abstract int checkSignatures(int, int);
-    public abstract void clearApplicationUserData(java.lang.String, android.content.pm.IPackageDataObserver);
-    public abstract void clearCrossProfileIntentFilters(int);
-    public abstract void clearInstantAppCookie();
-    public abstract void clearPackagePreferredActivities(java.lang.String);
-    public abstract java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]);
-    public abstract void deleteApplicationCacheFiles(java.lang.String, android.content.pm.IPackageDataObserver);
-    public abstract void deleteApplicationCacheFilesAsUser(java.lang.String, int, android.content.pm.IPackageDataObserver);
-    public abstract void deletePackage(java.lang.String, android.content.pm.IPackageDeleteObserver, int);
-    public abstract void deletePackageAsUser(java.lang.String, android.content.pm.IPackageDeleteObserver, int, int);
-    public static int deleteStatusToPublicStatus(int);
-    public static java.lang.String deleteStatusToString(int, java.lang.String);
-    public static java.lang.String deleteStatusToString(int);
-    public abstract void extendVerificationTimeout(int, int, long);
-    public abstract void flushPackageRestrictionsAsUser(int);
-    public void freeStorage(long, android.content.IntentSender);
-    public abstract void freeStorage(java.lang.String, long, android.content.IntentSender);
-    public void freeStorageAndNotify(long, android.content.pm.IPackageDataObserver);
-    public abstract void freeStorageAndNotify(java.lang.String, long, android.content.pm.IPackageDataObserver);
-    public abstract android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName);
-    public abstract android.graphics.drawable.Drawable getActivityBanner(android.content.Intent);
-    public abstract android.graphics.drawable.Drawable getActivityIcon(android.content.ComponentName);
-    public abstract android.graphics.drawable.Drawable getActivityIcon(android.content.Intent);
-    public abstract android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int);
-    public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.ComponentName);
-    public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.Intent);
-    public abstract java.util.List getAllIntentFilters(java.lang.String);
-    public abstract java.util.List getAllPermissionGroups(int);
-    public abstract android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo);
-    public abstract android.graphics.drawable.Drawable getApplicationBanner(java.lang.String);
-    public abstract int getApplicationEnabledSetting(java.lang.String);
-    public abstract boolean getApplicationHiddenSettingAsUser(java.lang.String, android.os.UserHandle);
-    public abstract android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo);
-    public abstract android.graphics.drawable.Drawable getApplicationIcon(java.lang.String);
-    public abstract android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int);
-    public abstract android.content.pm.ApplicationInfo getApplicationInfoAsUser(java.lang.String, int, int);
-    public abstract java.lang.CharSequence getApplicationLabel(android.content.pm.ApplicationInfo);
-    public abstract android.graphics.drawable.Drawable getApplicationLogo(android.content.pm.ApplicationInfo);
-    public abstract android.graphics.drawable.Drawable getApplicationLogo(java.lang.String);
-    public android.content.pm.dex.ArtManager getArtManager();
-    public abstract android.content.Intent getCarLaunchIntentForPackage(java.lang.String);
-    public abstract android.content.pm.ChangedPackages getChangedPackages(int);
-    public abstract int getComponentEnabledSetting(android.content.ComponentName);
-    public abstract android.graphics.drawable.Drawable getDefaultActivityIcon();
-    public abstract java.lang.String getDefaultBrowserPackageNameAsUser(int);
-    public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo);
-    public java.lang.CharSequence getHarmfulAppWarning(java.lang.String);
-    public abstract android.content.ComponentName getHomeActivities(java.util.List);
-    public abstract int getInstallReason(java.lang.String, android.os.UserHandle);
-    public abstract java.util.List getInstalledApplications(int);
-    public abstract java.util.List getInstalledApplicationsAsUser(int, int);
-    public abstract java.util.List getInstalledPackages(int);
-    public abstract java.util.List getInstalledPackagesAsUser(int, int);
-    public abstract java.lang.String getInstallerPackageName(java.lang.String);
-    public abstract java.lang.String getInstantAppAndroidId(java.lang.String, android.os.UserHandle);
-    public abstract byte[] getInstantAppCookie();
-    public abstract int getInstantAppCookieMaxBytes();
-    public abstract int getInstantAppCookieMaxSize();
-    public abstract android.graphics.drawable.Drawable getInstantAppIcon(java.lang.String);
-    public abstract android.content.ComponentName getInstantAppInstallerComponent();
-    public abstract android.content.ComponentName getInstantAppResolverSettingsComponent();
-    public abstract java.util.List getInstantApps();
-    public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int);
-    public abstract java.util.List getIntentFilterVerifications(java.lang.String);
-    public abstract int getIntentVerificationStatusAsUser(java.lang.String, int);
-    public abstract android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String);
-    public abstract android.content.Intent getLaunchIntentForPackage(java.lang.String);
-    public abstract android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String);
-    public abstract int getMoveStatus(int);
-    public abstract java.lang.String getNameForUid(int);
-    public abstract java.lang.String[] getNamesForUids(int[]);
-    public android.content.pm.PackageInfo getPackageArchiveInfo(java.lang.String, int);
-    public abstract java.util.List getPackageCandidateVolumes(android.content.pm.ApplicationInfo);
-    public abstract android.os.storage.VolumeInfo getPackageCurrentVolume(android.content.pm.ApplicationInfo);
-    public abstract int[] getPackageGids(java.lang.String);
-    public abstract int[] getPackageGids(java.lang.String, int);
-    public abstract android.content.pm.PackageInfo getPackageInfo(java.lang.String, int);
-    public abstract android.content.pm.PackageInfo getPackageInfo(android.content.pm.VersionedPackage, int);
-    public abstract android.content.pm.PackageInfo getPackageInfoAsUser(java.lang.String, int, int);
-    public abstract android.content.pm.PackageInstaller getPackageInstaller();
-    public void getPackageSizeInfo(java.lang.String, android.content.pm.IPackageStatsObserver);
-    public abstract void getPackageSizeInfoAsUser(java.lang.String, int, android.content.pm.IPackageStatsObserver);
-    public abstract int getPackageUid(java.lang.String, int);
-    public abstract int getPackageUidAsUser(java.lang.String, int);
-    public abstract int getPackageUidAsUser(java.lang.String, int, int);
-    public abstract java.lang.String[] getPackagesForUid(int);
-    public abstract java.util.List getPackagesHoldingPermissions(java.lang.String[], int);
-    public abstract java.lang.String getPermissionControllerPackageName();
-    public abstract int getPermissionFlags(java.lang.String, java.lang.String, android.os.UserHandle);
-    public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int);
-    public abstract android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, int);
-    public abstract int getPreferredActivities(java.util.List, java.util.List, java.lang.String);
-    public abstract java.util.List getPreferredPackages(int);
-    public abstract java.util.List getPrimaryStorageCandidateVolumes();
-    public abstract android.os.storage.VolumeInfo getPrimaryStorageCurrentVolume();
-    public abstract android.content.pm.ProviderInfo getProviderInfo(android.content.ComponentName, int);
-    public abstract android.content.pm.ActivityInfo getReceiverInfo(android.content.ComponentName, int);
-    public abstract android.content.res.Resources getResourcesForActivity(android.content.ComponentName);
-    public abstract android.content.res.Resources getResourcesForApplication(android.content.pm.ApplicationInfo);
-    public abstract android.content.res.Resources getResourcesForApplication(java.lang.String);
-    public abstract android.content.res.Resources getResourcesForApplicationAsUser(java.lang.String, int);
-    public abstract android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int);
-    public abstract java.lang.String getServicesSystemSharedLibraryPackageName();
-    public abstract java.util.List getSharedLibraries(int);
-    public abstract java.util.List getSharedLibrariesAsUser(int, int);
-    public abstract java.lang.String getSharedSystemSharedLibraryPackageName();
-    public abstract android.content.pm.KeySet getSigningKeySet(java.lang.String);
-    public android.os.Bundle getSuspendedPackageAppExtras();
-    public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
-    public abstract java.lang.String[] getSystemSharedLibraryNames();
-    public java.lang.String getSystemTextClassifierPackageName();
-    public abstract java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo);
-    public abstract int getUidForSharedUser(java.lang.String);
-    public abstract android.graphics.drawable.Drawable getUserBadgeForDensity(android.os.UserHandle, int);
-    public abstract android.graphics.drawable.Drawable getUserBadgeForDensityNoBackground(android.os.UserHandle, int);
-    public abstract android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
-    public abstract android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle);
-    public abstract java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle);
-    public int getUserId();
-    public abstract android.content.pm.VerifierDeviceIdentity getVerifierDeviceIdentity();
-    public abstract android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo);
-    public abstract void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
-    public boolean hasSigningCertificate(java.lang.String, byte[], int);
-    public boolean hasSigningCertificate(int, byte[], int);
-    public abstract boolean hasSystemFeature(java.lang.String);
-    public abstract boolean hasSystemFeature(java.lang.String, int);
-    public abstract int installExistingPackage(java.lang.String);
-    public abstract int installExistingPackage(java.lang.String, int);
-    public abstract int installExistingPackageAsUser(java.lang.String, int);
-    public static int installStatusToPublicStatus(int);
-    public static java.lang.String installStatusToString(int, java.lang.String);
-    public static java.lang.String installStatusToString(int);
-    public abstract boolean isInstantApp();
-    public abstract boolean isInstantApp(java.lang.String);
-    public static boolean isMoveStatusFinished(int);
-    public abstract boolean isPackageAvailable(java.lang.String);
-    public boolean isPackageStateProtected(java.lang.String, int);
-    public boolean isPackageSuspended(java.lang.String);
-    public boolean isPackageSuspended();
-    public abstract boolean isPackageSuspendedForUser(java.lang.String, int);
-    public abstract boolean isPermissionReviewModeEnabled();
-    public abstract boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String);
-    public abstract boolean isSafeMode();
-    public abstract boolean isSignedBy(java.lang.String, android.content.pm.KeySet);
-    public abstract boolean isSignedByExactly(java.lang.String, android.content.pm.KeySet);
-    public abstract boolean isUpgrade();
-    public abstract android.graphics.drawable.Drawable loadItemIcon(android.content.pm.PackageItemInfo, android.content.pm.ApplicationInfo);
-    public abstract android.graphics.drawable.Drawable loadUnbadgedItemIcon(android.content.pm.PackageItemInfo, android.content.pm.ApplicationInfo);
-    public abstract int movePackage(java.lang.String, android.os.storage.VolumeInfo);
-    public abstract int movePrimaryStorage(android.os.storage.VolumeInfo);
-    public static java.lang.String permissionFlagToString(int);
-    public abstract java.util.List queryBroadcastReceivers(android.content.Intent, int);
-    public java.util.List queryBroadcastReceivers(android.content.Intent, int, int);
-    public java.util.List queryBroadcastReceiversAsUser(android.content.Intent, int, android.os.UserHandle);
-    public abstract java.util.List queryBroadcastReceiversAsUser(android.content.Intent, int, int);
-    public abstract java.util.List queryContentProviders(java.lang.String, int, int);
-    public java.util.List queryContentProviders(java.lang.String, int, int, java.lang.String);
-    public abstract java.util.List queryInstrumentation(java.lang.String, int);
-    public abstract java.util.List queryIntentActivities(android.content.Intent, int);
-    public abstract java.util.List queryIntentActivitiesAsUser(android.content.Intent, int, int);
-    public abstract java.util.List queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int);
-    public abstract java.util.List queryIntentContentProviders(android.content.Intent, int);
-    public abstract java.util.List queryIntentContentProvidersAsUser(android.content.Intent, int, int);
-    public abstract java.util.List queryIntentServices(android.content.Intent, int);
-    public abstract java.util.List queryIntentServicesAsUser(android.content.Intent, int, int);
-    public abstract java.util.List queryPermissionsByGroup(java.lang.String, int);
-    public abstract void registerDexModule(java.lang.String, android.content.pm.PackageManager$DexModuleRegisterCallback);
-    public abstract void registerMoveCallback(android.content.pm.PackageManager$MoveCallback, android.os.Handler);
-    public abstract void removeOnPermissionsChangeListener(android.content.pm.PackageManager$OnPermissionsChangedListener);
-    public abstract void removePackageFromPreferred(java.lang.String);
-    public abstract void removePermission(java.lang.String);
-    public abstract void replacePreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName);
-    public void replacePreferredActivityAsUser(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName, int);
-    public abstract android.content.pm.ResolveInfo resolveActivity(android.content.Intent, int);
-    public abstract android.content.pm.ResolveInfo resolveActivityAsUser(android.content.Intent, int, int);
-    public abstract android.content.pm.ProviderInfo resolveContentProvider(java.lang.String, int);
-    public abstract android.content.pm.ProviderInfo resolveContentProviderAsUser(java.lang.String, int, int);
-    public abstract android.content.pm.ResolveInfo resolveService(android.content.Intent, int);
-    public abstract android.content.pm.ResolveInfo resolveServiceAsUser(android.content.Intent, int, int);
-    public abstract void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle);
-    public abstract void setApplicationCategoryHint(java.lang.String, int);
-    public abstract void setApplicationEnabledSetting(java.lang.String, int, int);
-    public abstract boolean setApplicationHiddenSettingAsUser(java.lang.String, boolean, android.os.UserHandle);
-    public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int);
-    public abstract boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int);
-    public void setHarmfulAppWarning(java.lang.String, java.lang.CharSequence);
-    public abstract void setInstallerPackageName(java.lang.String, java.lang.String);
-    public abstract boolean setInstantAppCookie(byte[]);
-    public java.lang.String[] setPackagesSuspended(java.lang.String[], boolean, android.os.PersistableBundle, android.os.PersistableBundle, java.lang.String);
-    public abstract void setUpdateAvailable(java.lang.String, boolean);
-    public abstract boolean shouldShowRequestPermissionRationale(java.lang.String);
-    public abstract void unregisterMoveCallback(android.content.pm.PackageManager$MoveCallback);
-    public abstract void updateInstantAppCookie(byte[]);
-    public abstract boolean updateIntentVerificationStatusAsUser(java.lang.String, int, int);
-    public abstract void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle);
-    public abstract void verifyIntentFilter(int, int, java.util.List);
-    public abstract void verifyPendingInstall(int, int);
-
-
-    public static java.lang.String ACTION_CLEAN_EXTERNAL_STORAGE;
-    public static java.lang.String ACTION_REQUEST_PERMISSIONS;
-    public static boolean APPLY_DEFAULT_TO_DEVICE_PROTECTED_STORAGE;
-    public static int CERT_INPUT_RAW_X509;
-    public static int CERT_INPUT_SHA256;
-    public static int COMPONENT_ENABLED_STATE_DEFAULT;
-    public static int COMPONENT_ENABLED_STATE_DISABLED;
-    public static int COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
-    public static int COMPONENT_ENABLED_STATE_DISABLED_USER;
-    public static int COMPONENT_ENABLED_STATE_ENABLED;
-    public static int DELETE_ALL_USERS;
-    public static int DELETE_CHATTY;
-    public static int DELETE_DONT_KILL_APP;
-    public static int DELETE_FAILED_ABORTED;
-    public static int DELETE_FAILED_DEVICE_POLICY_MANAGER;
-    public static int DELETE_FAILED_INTERNAL_ERROR;
-    public static int DELETE_FAILED_OWNER_BLOCKED;
-    public static int DELETE_FAILED_USED_SHARED_LIBRARY;
-    public static int DELETE_FAILED_USER_RESTRICTED;
-    public static int DELETE_KEEP_DATA;
-    public static int DELETE_SUCCEEDED;
-    public static int DELETE_SYSTEM_APP;
-    public static int DONT_KILL_APP;
-    public static java.lang.String EXTRA_FAILURE_EXISTING_PACKAGE;
-    public static java.lang.String EXTRA_FAILURE_EXISTING_PERMISSION;
-    public static java.lang.String EXTRA_INTENT_FILTER_VERIFICATION_HOSTS;
-    public static java.lang.String EXTRA_INTENT_FILTER_VERIFICATION_ID;
-    public static java.lang.String EXTRA_INTENT_FILTER_VERIFICATION_PACKAGE_NAME;
-    public static java.lang.String EXTRA_INTENT_FILTER_VERIFICATION_URI_SCHEME;
-    public static java.lang.String EXTRA_MOVE_ID;
-    public static java.lang.String EXTRA_REQUEST_PERMISSIONS_NAMES;
-    public static java.lang.String EXTRA_REQUEST_PERMISSIONS_RESULTS;
-    public static java.lang.String EXTRA_VERIFICATION_ID;
-    public static java.lang.String EXTRA_VERIFICATION_INSTALLER_PACKAGE;
-    public static java.lang.String EXTRA_VERIFICATION_INSTALLER_UID;
-    public static java.lang.String EXTRA_VERIFICATION_INSTALL_FLAGS;
-    public static java.lang.String EXTRA_VERIFICATION_LONG_VERSION_CODE;
-    public static java.lang.String EXTRA_VERIFICATION_PACKAGE_NAME;
-    public static java.lang.String EXTRA_VERIFICATION_RESULT;
-    public static java.lang.String EXTRA_VERIFICATION_URI;
-    public static java.lang.String EXTRA_VERIFICATION_VERSION_CODE;
-    public static java.lang.String FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS;
-    public static java.lang.String FEATURE_ADOPTABLE_STORAGE;
-    public static java.lang.String FEATURE_APP_WIDGETS;
-    public static java.lang.String FEATURE_ASSIST_GESTURE;
-    public static java.lang.String FEATURE_AUDIO_LOW_LATENCY;
-    public static java.lang.String FEATURE_AUDIO_OUTPUT;
-    public static java.lang.String FEATURE_AUDIO_PRO;
-    public static java.lang.String FEATURE_AUTOFILL;
-    public static java.lang.String FEATURE_AUTOMOTIVE;
-    public static java.lang.String FEATURE_BACKUP;
-    public static java.lang.String FEATURE_BLUETOOTH;
-    public static java.lang.String FEATURE_BLUETOOTH_LE;
-    public static java.lang.String FEATURE_BROADCAST_RADIO;
-    public static java.lang.String FEATURE_CAMERA;
-    public static java.lang.String FEATURE_CAMERA_ANY;
-    public static java.lang.String FEATURE_CAMERA_AR;
-    public static java.lang.String FEATURE_CAMERA_AUTOFOCUS;
-    public static java.lang.String FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING;
-    public static java.lang.String FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR;
-    public static java.lang.String FEATURE_CAMERA_CAPABILITY_RAW;
-    public static java.lang.String FEATURE_CAMERA_EXTERNAL;
-    public static java.lang.String FEATURE_CAMERA_FLASH;
-    public static java.lang.String FEATURE_CAMERA_FRONT;
-    public static java.lang.String FEATURE_CAMERA_LEVEL_FULL;
-    public static java.lang.String FEATURE_CANT_SAVE_STATE;
-    public static java.lang.String FEATURE_COMPANION_DEVICE_SETUP;
-    public static java.lang.String FEATURE_CONNECTION_SERVICE;
-    public static java.lang.String FEATURE_CONSUMER_IR;
-    public static java.lang.String FEATURE_CTS;
-    public static java.lang.String FEATURE_DEVICE_ADMIN;
-    public static java.lang.String FEATURE_DEVICE_ID_ATTESTATION;
-    public static java.lang.String FEATURE_EMBEDDED;
-    public static java.lang.String FEATURE_ETHERNET;
-    public static java.lang.String FEATURE_FAKETOUCH;
-    public static java.lang.String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT;
-    public static java.lang.String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND;
-    public static java.lang.String FEATURE_FILE_BASED_ENCRYPTION;
-    public static java.lang.String FEATURE_FINGERPRINT;
-    public static java.lang.String FEATURE_FREEFORM_WINDOW_MANAGEMENT;
-    public static java.lang.String FEATURE_GAMEPAD;
-    public static java.lang.String FEATURE_HDMI_CEC;
-    public static java.lang.String FEATURE_HIFI_SENSORS;
-    public static java.lang.String FEATURE_HOME_SCREEN;
-    public static java.lang.String FEATURE_INPUT_METHODS;
-    public static java.lang.String FEATURE_LEANBACK;
-    public static java.lang.String FEATURE_LEANBACK_ONLY;
-    public static java.lang.String FEATURE_LIVE_TV;
-    public static java.lang.String FEATURE_LIVE_WALLPAPER;
-    public static java.lang.String FEATURE_LOCATION;
-    public static java.lang.String FEATURE_LOCATION_GPS;
-    public static java.lang.String FEATURE_LOCATION_NETWORK;
-    public static java.lang.String FEATURE_LOWPAN;
-    public static java.lang.String FEATURE_MANAGED_PROFILES;
-    public static java.lang.String FEATURE_MANAGED_USERS;
-    public static java.lang.String FEATURE_MICROPHONE;
-    public static java.lang.String FEATURE_MIDI;
-    public static java.lang.String FEATURE_NFC;
-    public static java.lang.String FEATURE_NFC_ANY;
-    public static java.lang.String FEATURE_NFC_HCE;
-    public static java.lang.String FEATURE_NFC_HOST_CARD_EMULATION;
-    public static java.lang.String FEATURE_NFC_HOST_CARD_EMULATION_NFCF;
-    public static java.lang.String FEATURE_OPENGLES_EXTENSION_PACK;
-    public static java.lang.String FEATURE_PC;
-    public static java.lang.String FEATURE_PICTURE_IN_PICTURE;
-    public static java.lang.String FEATURE_PRINTING;
-    public static java.lang.String FEATURE_RAM_LOW;
-    public static java.lang.String FEATURE_RAM_NORMAL;
-    public static java.lang.String FEATURE_SCREEN_LANDSCAPE;
-    public static java.lang.String FEATURE_SCREEN_PORTRAIT;
-    public static java.lang.String FEATURE_SECURELY_REMOVES_USERS;
-    public static java.lang.String FEATURE_SENSOR_ACCELEROMETER;
-    public static java.lang.String FEATURE_SENSOR_AMBIENT_TEMPERATURE;
-    public static java.lang.String FEATURE_SENSOR_BAROMETER;
-    public static java.lang.String FEATURE_SENSOR_COMPASS;
-    public static java.lang.String FEATURE_SENSOR_GYROSCOPE;
-    public static java.lang.String FEATURE_SENSOR_HEART_RATE;
-    public static java.lang.String FEATURE_SENSOR_HEART_RATE_ECG;
-    public static java.lang.String FEATURE_SENSOR_LIGHT;
-    public static java.lang.String FEATURE_SENSOR_PROXIMITY;
-    public static java.lang.String FEATURE_SENSOR_RELATIVE_HUMIDITY;
-    public static java.lang.String FEATURE_SENSOR_STEP_COUNTER;
-    public static java.lang.String FEATURE_SENSOR_STEP_DETECTOR;
-    public static java.lang.String FEATURE_SIP;
-    public static java.lang.String FEATURE_SIP_VOIP;
-    public static java.lang.String FEATURE_STRONGBOX_KEYSTORE;
-    public static java.lang.String FEATURE_TELEPHONY;
-    public static java.lang.String FEATURE_TELEPHONY_CARRIERLOCK;
-    public static java.lang.String FEATURE_TELEPHONY_CDMA;
-    public static java.lang.String FEATURE_TELEPHONY_EUICC;
-    public static java.lang.String FEATURE_TELEPHONY_GSM;
-    public static java.lang.String FEATURE_TELEPHONY_MBMS;
-    public static java.lang.String FEATURE_TELEVISION;
-    public static java.lang.String FEATURE_TOUCHSCREEN;
-    public static java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH;
-    public static java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT;
-    public static java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND;
-    public static java.lang.String FEATURE_USB_ACCESSORY;
-    public static java.lang.String FEATURE_USB_HOST;
-    public static java.lang.String FEATURE_VERIFIED_BOOT;
-    public static java.lang.String FEATURE_VOICE_RECOGNIZERS;
-    public static java.lang.String FEATURE_VR_HEADTRACKING;
-    public static java.lang.String FEATURE_VR_MODE;
-    public static java.lang.String FEATURE_VR_MODE_HIGH_PERFORMANCE;
-    public static java.lang.String FEATURE_VULKAN_HARDWARE_COMPUTE;
-    public static java.lang.String FEATURE_VULKAN_HARDWARE_LEVEL;
-    public static java.lang.String FEATURE_VULKAN_HARDWARE_VERSION;
-    public static java.lang.String FEATURE_WATCH;
-    public static java.lang.String FEATURE_WEBVIEW;
-    public static java.lang.String FEATURE_WIFI;
-    public static java.lang.String FEATURE_WIFI_AWARE;
-    public static java.lang.String FEATURE_WIFI_DIRECT;
-    public static java.lang.String FEATURE_WIFI_PASSPOINT;
-    public static java.lang.String FEATURE_WIFI_RTT;
-    public static int FLAG_PERMISSION_GRANTED_BY_DEFAULT;
-    public static int FLAG_PERMISSION_POLICY_FIXED;
-    public static int FLAG_PERMISSION_REVIEW_REQUIRED;
-    public static int FLAG_PERMISSION_REVOKE_ON_UPGRADE;
-    public static int FLAG_PERMISSION_SYSTEM_FIXED;
-    public static int FLAG_PERMISSION_USER_FIXED;
-    public static int FLAG_PERMISSION_USER_SET;
-    public static int GET_ACTIVITIES;
-    public static int GET_CONFIGURATIONS;
-    public static int GET_DISABLED_COMPONENTS;
-    public static int GET_DISABLED_UNTIL_USED_COMPONENTS;
-    public static int GET_GIDS;
-    public static int GET_INSTRUMENTATION;
-    public static int GET_INTENT_FILTERS;
-    public static int GET_META_DATA;
-    public static int GET_PERMISSIONS;
-    public static int GET_PROVIDERS;
-    public static int GET_RECEIVERS;
-    public static int GET_RESOLVED_FILTER;
-    public static int GET_SERVICES;
-    public static int GET_SHARED_LIBRARY_FILES;
-    public static int GET_SIGNATURES;
-    public static int GET_SIGNING_CERTIFICATES;
-    public static int GET_UNINSTALLED_PACKAGES;
-    public static int GET_URI_PERMISSION_PATTERNS;
-    public static int INSTALL_ALLOCATE_AGGRESSIVE;
-    public static int INSTALL_ALLOW_DOWNGRADE;
-    public static int INSTALL_ALLOW_TEST;
-    public static int INSTALL_ALL_USERS;
-    public static int INSTALL_DONT_KILL_APP;
-    public static int INSTALL_EXTERNAL;
-    public static int INSTALL_FAILED_ABORTED;
-    public static int INSTALL_FAILED_ALREADY_EXISTS;
-    public static int INSTALL_FAILED_BAD_DEX_METADATA;
-    public static int INSTALL_FAILED_CONFLICTING_PROVIDER;
-    public static int INSTALL_FAILED_CONTAINER_ERROR;
-    public static int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE;
-    public static int INSTALL_FAILED_DEXOPT;
-    public static int INSTALL_FAILED_DUPLICATE_PACKAGE;
-    public static int INSTALL_FAILED_DUPLICATE_PERMISSION;
-    public static int INSTALL_FAILED_INSTANT_APP_INVALID;
-    public static int INSTALL_FAILED_INSUFFICIENT_STORAGE;
-    public static int INSTALL_FAILED_INTERNAL_ERROR;
-    public static int INSTALL_FAILED_INVALID_APK;
-    public static int INSTALL_FAILED_INVALID_INSTALL_LOCATION;
-    public static int INSTALL_FAILED_INVALID_URI;
-    public static int INSTALL_FAILED_MEDIA_UNAVAILABLE;
-    public static int INSTALL_FAILED_MISSING_FEATURE;
-    public static int INSTALL_FAILED_MISSING_SHARED_LIBRARY;
-    public static int INSTALL_FAILED_NEWER_SDK;
-    public static int INSTALL_FAILED_NO_MATCHING_ABIS;
-    public static int INSTALL_FAILED_NO_SHARED_USER;
-    public static int INSTALL_FAILED_OLDER_SDK;
-    public static int INSTALL_FAILED_PACKAGE_CHANGED;
-    public static int INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE;
-    public static int INSTALL_FAILED_REPLACE_COULDNT_DELETE;
-    public static int INSTALL_FAILED_SANDBOX_VERSION_DOWNGRADE;
-    public static int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE;
-    public static int INSTALL_FAILED_TEST_ONLY;
-    public static int INSTALL_FAILED_UID_CHANGED;
-    public static int INSTALL_FAILED_UPDATE_INCOMPATIBLE;
-    public static int INSTALL_FAILED_USER_RESTRICTED;
-    public static int INSTALL_FAILED_VERIFICATION_FAILURE;
-    public static int INSTALL_FAILED_VERIFICATION_TIMEOUT;
-    public static int INSTALL_FAILED_VERSION_DOWNGRADE;
-    public static int INSTALL_FORCE_PERMISSION_PROMPT;
-    public static int INSTALL_FORCE_SDK;
-    public static int INSTALL_FORCE_VOLUME_UUID;
-    public static int INSTALL_FORWARD_LOCK;
-    public static int INSTALL_FROM_ADB;
-    public static int INSTALL_FULL_APP;
-    public static int INSTALL_GRANT_RUNTIME_PERMISSIONS;
-    public static int INSTALL_INSTANT_APP;
-    public static int INSTALL_INTERNAL;
-    public static int INSTALL_PARSE_FAILED_BAD_MANIFEST;
-    public static int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME;
-    public static int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID;
-    public static int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING;
-    public static int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES;
-    public static int INSTALL_PARSE_FAILED_MANIFEST_EMPTY;
-    public static int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
-    public static int INSTALL_PARSE_FAILED_NOT_APK;
-    public static int INSTALL_PARSE_FAILED_NO_CERTIFICATES;
-    public static int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION;
-    public static int INSTALL_REASON_DEVICE_RESTORE;
-    public static int INSTALL_REASON_DEVICE_SETUP;
-    public static int INSTALL_REASON_POLICY;
-    public static int INSTALL_REASON_UNKNOWN;
-    public static int INSTALL_REASON_USER;
-    public static int INSTALL_REPLACE_EXISTING;
-    public static int INSTALL_SUCCEEDED;
-    public static int INSTALL_VIRTUAL_PRELOAD;
-    public static int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
-    public static int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
-    public static int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
-    public static int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
-    public static int INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
-    public static int INTENT_FILTER_VERIFICATION_FAILURE;
-    public static int INTENT_FILTER_VERIFICATION_SUCCESS;
-    public static int MASK_PERMISSION_FLAGS;
-    public static int MATCH_ALL;
-    public static int MATCH_ANY_USER;
-    public static int MATCH_DEBUG_TRIAGED_MISSING;
-    public static int MATCH_DEFAULT_ONLY;
-    public static int MATCH_DIRECT_BOOT_AWARE;
-    public static int MATCH_DIRECT_BOOT_UNAWARE;
-    public static int MATCH_DISABLED_COMPONENTS;
-    public static int MATCH_DISABLED_UNTIL_USED_COMPONENTS;
-    public static int MATCH_EXPLICITLY_VISIBLE_ONLY;
-    public static int MATCH_FACTORY_ONLY;
-    public static int MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS;
-    public static int MATCH_INSTANT;
-    public static int MATCH_KNOWN_PACKAGES;
-    public static int MATCH_STATIC_SHARED_LIBRARIES;
-    public static int MATCH_SYSTEM_ONLY;
-    public static int MATCH_UNINSTALLED_PACKAGES;
-    public static int MATCH_VISIBLE_TO_INSTANT_APP_ONLY;
-    public static long MAXIMUM_VERIFICATION_TIMEOUT;
-    public static int MOVE_EXTERNAL_MEDIA;
-    public static int MOVE_FAILED_3RD_PARTY_NOT_ALLOWED_ON_INTERNAL;
-    public static int MOVE_FAILED_DEVICE_ADMIN;
-    public static int MOVE_FAILED_DOESNT_EXIST;
-    public static int MOVE_FAILED_FORWARD_LOCKED;
-    public static int MOVE_FAILED_INSUFFICIENT_STORAGE;
-    public static int MOVE_FAILED_INTERNAL_ERROR;
-    public static int MOVE_FAILED_INVALID_LOCATION;
-    public static int MOVE_FAILED_LOCKED_USER;
-    public static int MOVE_FAILED_OPERATION_PENDING;
-    public static int MOVE_FAILED_SYSTEM_PACKAGE;
-    public static int MOVE_INTERNAL;
-    public static int MOVE_SUCCEEDED;
-    public static int NOTIFY_PACKAGE_USE_ACTIVITY;
-    public static int NOTIFY_PACKAGE_USE_BACKUP;
-    public static int NOTIFY_PACKAGE_USE_BROADCAST_RECEIVER;
-    public static int NOTIFY_PACKAGE_USE_CONTENT_PROVIDER;
-    public static int NOTIFY_PACKAGE_USE_CROSS_PACKAGE;
-    public static int NOTIFY_PACKAGE_USE_FOREGROUND_SERVICE;
-    public static int NOTIFY_PACKAGE_USE_INSTRUMENTATION;
-    public static int NOTIFY_PACKAGE_USE_REASONS_COUNT;
-    public static int NOTIFY_PACKAGE_USE_SERVICE;
-    public static int NO_NATIVE_LIBRARIES;
-    public static int ONLY_IF_NO_MATCH_FOUND;
-    public static int PERMISSION_DENIED;
-    public static int PERMISSION_GRANTED;
-    public static int SIGNATURE_FIRST_NOT_SIGNED;
-    public static int SIGNATURE_MATCH;
-    public static int SIGNATURE_NEITHER_SIGNED;
-    public static int SIGNATURE_NO_MATCH;
-    public static int SIGNATURE_SECOND_NOT_SIGNED;
-    public static int SIGNATURE_UNKNOWN_PACKAGE;
-    public static int SKIP_CURRENT_PROFILE;
-    public static java.lang.String SYSTEM_SHARED_LIBRARY_SERVICES;
-    public static java.lang.String SYSTEM_SHARED_LIBRARY_SHARED;
-    public static int VERIFICATION_ALLOW;
-    public static int VERIFICATION_ALLOW_WITHOUT_SUFFICIENT;
-    public static int VERIFICATION_REJECT;
-    public static int VERSION_CODE_HIGHEST;
-}
-
--keep class android.content.pm.PackageManager$DexModuleRegisterCallback {
-    <init>();
-
-    public abstract void onDexModuleRegistered(java.lang.String, boolean, java.lang.String);
-
-
-}
-
--keep class android.content.pm.PackageManager$MoveCallback {
-    <init>();
-
-    public void onCreated(int, android.os.Bundle);
-    public abstract void onStatusChanged(int, int, long);
-
-
-}
-
--keep class android.content.pm.PackageManager$NameNotFoundException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class android.content.pm.PackageManager$OnPermissionsChangedListener {
-
-    public abstract void onPermissionsChanged(int);
-
-
-}
-
--keep class android.content.pm.PackageParser {
-    <init>();
-
-    public static void collectCertificates(android.content.pm.PackageParser$Package, boolean);
-    public static int computeMinSdkVersion(int, java.lang.String, int, java.lang.String[], java.lang.String[]);
-    public static int computeTargetSdkVersion(int, java.lang.String, java.lang.String[], java.lang.String[], boolean);
-    protected android.content.pm.PackageParser$Package fromCacheEntry(byte[]);
-    public static android.content.pm.PackageParser$Package fromCacheEntryStatic(byte[]);
-    public static android.content.pm.ActivityInfo generateActivityInfo(android.content.pm.PackageParser$Activity, int, android.content.pm.PackageUserState, int);
-    public static android.content.pm.ActivityInfo generateActivityInfo(android.content.pm.ActivityInfo, int, android.content.pm.PackageUserState, int);
-    public static android.content.pm.ApplicationInfo generateApplicationInfo(android.content.pm.PackageParser$Package, int, android.content.pm.PackageUserState);
-    public static android.content.pm.ApplicationInfo generateApplicationInfo(android.content.pm.PackageParser$Package, int, android.content.pm.PackageUserState, int);
-    public static android.content.pm.ApplicationInfo generateApplicationInfo(android.content.pm.ApplicationInfo, int, android.content.pm.PackageUserState, int);
-    public static android.content.pm.InstrumentationInfo generateInstrumentationInfo(android.content.pm.PackageParser$Instrumentation, int);
-    public static android.content.pm.PackageInfo generatePackageInfo(android.content.pm.PackageParser$Package, int[], int, long, long, java.util.Set, android.content.pm.PackageUserState);
-    public static android.content.pm.PackageInfo generatePackageInfo(android.content.pm.PackageParser$Package, int[], int, long, long, java.util.Set, android.content.pm.PackageUserState, int);
-    public static android.content.pm.PermissionGroupInfo generatePermissionGroupInfo(android.content.pm.PackageParser$PermissionGroup, int);
-    public static android.content.pm.PermissionInfo generatePermissionInfo(android.content.pm.PackageParser$Permission, int);
-    public static android.content.pm.ProviderInfo generateProviderInfo(android.content.pm.PackageParser$Provider, int, android.content.pm.PackageUserState, int);
-    public static android.content.pm.ServiceInfo generateServiceInfo(android.content.pm.PackageParser$Service, int, android.content.pm.PackageUserState, int);
-    public static int getActivityConfigChanges(int, int);
-    public static boolean isApkFile(java.io.File);
-    public static boolean isApkPath(java.lang.String);
-    public static boolean isAvailable(android.content.pm.PackageUserState);
-    public static android.content.pm.PackageParser$ApkLite parseApkLite(java.io.File, int);
-    public static android.content.pm.PackageParser$ApkLite parseApkLite(java.io.FileDescriptor, java.lang.String, int);
-    public android.content.pm.PackageParser$Package parseMonolithicPackage(java.io.File, int);
-    public android.content.pm.PackageParser$Package parsePackage(java.io.File, int, boolean);
-    public android.content.pm.PackageParser$Package parsePackage(java.io.File, int);
-    public static android.content.pm.PackageParser$PackageLite parsePackageLite(java.io.File, int);
-    public static java.security.PublicKey parsePublicKey(java.lang.String);
-    public void setCacheDir(java.io.File);
-    public void setCallback(android.content.pm.PackageParser$Callback);
-    public static void setCompatibilityModeEnabled(boolean);
-    public void setDisplayMetrics(android.util.DisplayMetrics);
-    public void setOnlyCoreApps(boolean);
-    public void setSeparateProcesses(java.lang.String[]);
-    protected byte[] toCacheEntry(android.content.pm.PackageParser$Package);
-    public static byte[] toCacheEntryStatic(android.content.pm.PackageParser$Package);
-    public static android.util.ArraySet toSigningKeys(android.content.pm.Signature[]);
-
-
-    public static java.lang.String ANDROID_MANIFEST_FILENAME;
-    public static java.lang.String APK_FILE_EXTENSION;
-    public static android.content.pm.PackageParser$NewPermissionInfo[] NEW_PERMISSIONS;
-    public static int PARSE_CHATTY;
-    public static int PARSE_COLLECT_CERTIFICATES;
-    public static int PARSE_ENFORCE_CODE;
-    public static int PARSE_EXTERNAL_STORAGE;
-    public static int PARSE_FORCE_SDK;
-    public static int PARSE_FORWARD_LOCK;
-    public static int PARSE_IGNORE_PROCESSES;
-    public static int PARSE_IS_SYSTEM_DIR;
-    public static int PARSE_MUST_BE_APK;
-    public static android.content.pm.PackageParser$SplitPermissionInfo[] SPLIT_PERMISSIONS;
-    public static java.util.concurrent.atomic.AtomicInteger sCachedPackageReadCount;
-}
-
--keep class android.content.pm.PackageParser$Activity {
-    <init>(android.content.pm.PackageParser$ParseComponentArgs, android.content.pm.ActivityInfo);
-
-    public int describeContents();
-    public void setPackageName(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.ActivityInfo info;
-}
-
--keep class android.content.pm.PackageParser$ActivityIntentInfo {
-    <init>(android.content.pm.PackageParser$Activity);
-    <init>(android.os.Parcel);
-
-    public java.lang.String toString();
-
-
-    public android.content.pm.PackageParser$Activity activity;
-}
-
--keep class android.content.pm.PackageParser$ApkLite {
-    <init>(java.lang.String, java.lang.String, java.lang.String, boolean, java.lang.String, java.lang.String, int, int, int, int, java.util.List, android.content.pm.PackageParser$SigningDetails, boolean, boolean, boolean, boolean, boolean, boolean);
-
-    public long getLongVersionCode();
-
-
-    public java.lang.String codePath;
-    public java.lang.String configForSplit;
-    public boolean coreApp;
-    public boolean debuggable;
-    public boolean extractNativeLibs;
-    public int installLocation;
-    public boolean isFeatureSplit;
-    public boolean isolatedSplits;
-    public boolean multiArch;
-    public java.lang.String packageName;
-    public int revisionCode;
-    public android.content.pm.PackageParser$SigningDetails signingDetails;
-    public java.lang.String splitName;
-    public boolean use32bitAbi;
-    public java.lang.String usesSplitName;
-    public android.content.pm.VerifierInfo[] verifiers;
-    public int versionCode;
-    public int versionCodeMajor;
-}
-
--keep class android.content.pm.PackageParser$Callback {
-
-    public abstract java.lang.String[] getOverlayApks(java.lang.String);
-    public abstract java.lang.String[] getOverlayPaths(java.lang.String, java.lang.String);
-    public abstract boolean hasFeature(java.lang.String);
-
-
-}
-
--keep class android.content.pm.PackageParser$Component {
-    <init>(android.content.pm.PackageParser$Package);
-    <init>(android.content.pm.PackageParser$ParsePackageItemArgs, android.content.pm.PackageItemInfo);
-    <init>(android.content.pm.PackageParser$ParseComponentArgs, android.content.pm.ComponentInfo);
-    <init>(android.content.pm.PackageParser$Component);
-    <init>(android.os.Parcel);
-
-    public void appendComponentShortName(java.lang.StringBuilder);
-    public android.content.ComponentName getComponentName();
-    public void printComponentShortName(java.io.PrintWriter);
-    public void setPackageName(java.lang.String);
-    protected void writeToParcel(android.os.Parcel, int);
-
-
-    public java.lang.String className;
-    public java.util.ArrayList intents;
-    public android.os.Bundle metaData;
-    public int order;
-    public android.content.pm.PackageParser$Package owner;
-}
-
--keep class android.content.pm.PackageParser$Instrumentation {
-    <init>(android.content.pm.PackageParser$ParsePackageItemArgs, android.content.pm.InstrumentationInfo);
-
-    public int describeContents();
-    public void setPackageName(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.InstrumentationInfo info;
-}
-
--keep class android.content.pm.PackageParser$IntentInfo {
-    <init>();
-    <init>(android.os.Parcel);
-
-    public void writeIntentInfoToParcel(android.os.Parcel, int);
-
-
-    public int banner;
-    public boolean hasDefault;
-    public int icon;
-    public int labelRes;
-    public int logo;
-    public java.lang.CharSequence nonLocalizedLabel;
-    public int preferred;
-}
-
--keep class android.content.pm.PackageParser$NewPermissionInfo {
-    <init>(java.lang.String, int, int);
-
-
-
-    public int fileVersion;
-    public java.lang.String name;
-    public int sdkVersion;
-}
-
--keep class android.content.pm.PackageParser$Package {
-    <init>(java.lang.String);
-    <init>(android.os.Parcel);
-
-    public boolean canHaveOatDir();
-    public int describeContents();
-    public java.util.List getAllCodePaths();
-    public java.util.List getAllCodePathsExcludingResourceOnly();
-    public java.util.List getChildPackageNames();
-    public long getLatestForegroundPackageUseTimeInMills();
-    public long getLatestPackageUseTimeInMills();
-    public long getLongVersionCode();
-    public boolean hasChildPackage(java.lang.String);
-    public boolean hasComponentClassName(java.lang.String);
-    public boolean isExternal();
-    public boolean isForwardLocked();
-    public boolean isLibrary();
-    public boolean isMatch(int);
-    public boolean isOem();
-    public boolean isPrivileged();
-    public boolean isProduct();
-    public boolean isSystem();
-    public boolean isUpdatedSystemApp();
-    public boolean isVendor();
-    public void setApplicationInfoBaseCodePath(java.lang.String);
-    public void setApplicationInfoBaseResourcePath(java.lang.String);
-    public void setApplicationInfoCodePath(java.lang.String);
-    public void setApplicationInfoFlags(int, int);
-    public void setApplicationInfoResourcePath(java.lang.String);
-    public void setApplicationInfoSplitCodePaths(java.lang.String[]);
-    public void setApplicationInfoSplitResourcePaths(java.lang.String[]);
-    public void setApplicationVolumeUuid(java.lang.String);
-    public void setBaseCodePath(java.lang.String);
-    public void setCodePath(java.lang.String);
-    public void setPackageName(java.lang.String);
-    public void setSigningDetails(android.content.pm.PackageParser$SigningDetails);
-    public void setSplitCodePaths(java.lang.String[]);
-    public void setUse32bitAbi(boolean);
-    public void setVolumeUuid(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.util.ArrayList activities;
-    public android.content.pm.ApplicationInfo applicationInfo;
-    public java.lang.String baseCodePath;
-    public boolean baseHardwareAccelerated;
-    public int baseRevisionCode;
-    public java.util.ArrayList childPackages;
-    public java.lang.String codePath;
-    public java.util.ArrayList configPreferences;
-    public boolean coreApp;
-    public java.lang.String cpuAbiOverride;
-    public java.util.ArrayList featureGroups;
-    public int installLocation;
-    public java.util.ArrayList instrumentation;
-    public boolean isStub;
-    public java.util.ArrayList libraryNames;
-    public java.util.ArrayList mAdoptPermissions;
-    public android.os.Bundle mAppMetaData;
-    public int mCompileSdkVersion;
-    public java.lang.String mCompileSdkVersionCodename;
-    public java.lang.Object mExtras;
-    public android.util.ArrayMap mKeySetMapping;
-    public long[] mLastPackageUsageTimeInMills;
-    public java.util.ArrayList mOriginalPackages;
-    public java.lang.String mOverlayCategory;
-    public boolean mOverlayIsStatic;
-    public int mOverlayPriority;
-    public java.lang.String mOverlayTarget;
-    public int mPreferredOrder;
-    public java.lang.String mRealPackage;
-    public java.lang.String mRequiredAccountType;
-    public boolean mRequiredForAllUsers;
-    public java.lang.String mRestrictedAccountType;
-    public java.lang.String mSharedUserId;
-    public int mSharedUserLabel;
-    public android.content.pm.PackageParser$SigningDetails mSigningDetails;
-    public android.util.ArraySet mUpgradeKeySets;
-    public int mVersionCode;
-    public int mVersionCodeMajor;
-    public java.lang.String mVersionName;
-    public java.lang.String manifestPackageName;
-    public java.lang.String packageName;
-    public android.content.pm.PackageParser$Package parentPackage;
-    public java.util.ArrayList permissionGroups;
-    public java.util.ArrayList permissions;
-    public java.util.ArrayList preferredActivityFilters;
-    public java.util.ArrayList protectedBroadcasts;
-    public java.util.ArrayList providers;
-    public java.util.ArrayList receivers;
-    public java.util.ArrayList reqFeatures;
-    public java.util.ArrayList requestedPermissions;
-    public byte[] restrictUpdateHash;
-    public java.util.ArrayList services;
-    public java.lang.String[] splitCodePaths;
-    public int[] splitFlags;
-    public java.lang.String[] splitNames;
-    public int[] splitPrivateFlags;
-    public int[] splitRevisionCodes;
-    public java.lang.String staticSharedLibName;
-    public long staticSharedLibVersion;
-    public boolean use32bitAbi;
-    public java.util.ArrayList usesLibraries;
-    public java.lang.String[] usesLibraryFiles;
-    public java.util.ArrayList usesOptionalLibraries;
-    public java.util.ArrayList usesStaticLibraries;
-    public java.lang.String[][] usesStaticLibrariesCertDigests;
-    public long[] usesStaticLibrariesVersions;
-    public boolean visibleToInstantApps;
-    public java.lang.String volumeUuid;
-}
-
--keep class android.content.pm.PackageParser$PackageLite {
-    <init>(java.lang.String, android.content.pm.PackageParser$ApkLite, java.lang.String[], boolean[], java.lang.String[], java.lang.String[], java.lang.String[], int[]);
-
-    public java.util.List getAllCodePaths();
-
-
-    public java.lang.String baseCodePath;
-    public int baseRevisionCode;
-    public java.lang.String codePath;
-    public java.lang.String[] configForSplit;
-    public boolean coreApp;
-    public boolean debuggable;
-    public boolean extractNativeLibs;
-    public int installLocation;
-    public boolean[] isFeatureSplits;
-    public boolean isolatedSplits;
-    public boolean multiArch;
-    public java.lang.String packageName;
-    public java.lang.String[] splitCodePaths;
-    public java.lang.String[] splitNames;
-    public int[] splitRevisionCodes;
-    public boolean use32bitAbi;
-    public java.lang.String[] usesSplitNames;
-    public android.content.pm.VerifierInfo[] verifiers;
-    public int versionCode;
-    public int versionCodeMajor;
-}
-
--keep class android.content.pm.PackageParser$PackageParserException {
-    <init>(int, java.lang.String);
-    <init>(int, java.lang.String, java.lang.Throwable);
-
-
-
-    public int error;
-}
-
--keep class android.content.pm.PackageParser$ParseComponentArgs {
-    <init>(android.content.pm.PackageParser$Package, java.lang.String[], int, int, int, int, int, int, java.lang.String[], int, int, int);
-
-
-
-}
-
--keep class android.content.pm.PackageParser$ParsePackageItemArgs {
-
-
-
-}
-
--keep class android.content.pm.PackageParser$Permission {
-    <init>(android.content.pm.PackageParser$Package);
-    <init>(android.content.pm.PackageParser$Package, android.content.pm.PermissionInfo);
-
-    public int describeContents();
-    public boolean isAppOp();
-    public void setPackageName(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.PackageParser$PermissionGroup group;
-    public android.content.pm.PermissionInfo info;
-    public boolean tree;
-}
-
--keep class android.content.pm.PackageParser$PermissionGroup {
-    <init>(android.content.pm.PackageParser$Package);
-    <init>(android.content.pm.PackageParser$Package, android.content.pm.PermissionGroupInfo);
-
-    public int describeContents();
-    public void setPackageName(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.PermissionGroupInfo info;
-}
-
--keep class android.content.pm.PackageParser$Provider {
-    <init>(android.content.pm.PackageParser$ParseComponentArgs, android.content.pm.ProviderInfo);
-    <init>(android.content.pm.PackageParser$Provider);
-
-    public int describeContents();
-    public void setPackageName(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.ProviderInfo info;
-    public boolean syncable;
-}
-
--keep class android.content.pm.PackageParser$Service {
-    <init>(android.content.pm.PackageParser$ParseComponentArgs, android.content.pm.ServiceInfo);
-
-    public int describeContents();
-    public void setPackageName(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.ServiceInfo info;
-}
-
--keep class android.content.pm.PackageParser$SigningDetails {
-    <init>(android.content.pm.Signature[], int, android.util.ArraySet, android.content.pm.Signature[], int[]);
-    <init>(android.content.pm.Signature[], int, android.content.pm.Signature[], int[]);
-    <init>(android.content.pm.Signature[], int);
-    <init>(android.content.pm.PackageParser$SigningDetails);
-    <init>(android.os.Parcel);
-
-    public boolean checkCapability(android.content.pm.PackageParser$SigningDetails, int);
-    public boolean checkCapability(java.lang.String, int);
-    public boolean checkCapabilityRecover(android.content.pm.PackageParser$SigningDetails, int);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public boolean hasAncestor(android.content.pm.PackageParser$SigningDetails);
-    public boolean hasAncestorOrSelf(android.content.pm.PackageParser$SigningDetails);
-    public boolean hasCertificate(android.content.pm.Signature);
-    public boolean hasCertificate(android.content.pm.Signature, int);
-    public boolean hasCertificate(byte[]);
-    public boolean hasPastSigningCertificates();
-    public boolean hasSha256Certificate(byte[]);
-    public boolean hasSha256Certificate(byte[], int);
-    public boolean hasSignatures();
-    public int hashCode();
-    public boolean signaturesMatchExactly(android.content.pm.PackageParser$SigningDetails);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.content.pm.PackageParser$SigningDetails UNKNOWN;
-    public android.content.pm.Signature[] pastSigningCertificates;
-    public int[] pastSigningCertificatesFlags;
-    public android.util.ArraySet publicKeys;
-    public int signatureSchemeVersion;
-    public android.content.pm.Signature[] signatures;
-}
-
--keep class android.content.pm.PackageParser$SplitPermissionInfo {
-    <init>(java.lang.String, java.lang.String[], int);
-
-
-
-    public java.lang.String[] newPerms;
-    public java.lang.String rootPerm;
-    public int targetSdk;
-}
-
--keep class android.content.pm.PackageStats {
-    <init>(java.lang.String);
-    <init>(java.lang.String, int);
-    <init>(android.os.Parcel);
-    <init>(android.content.pm.PackageStats);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public long cacheSize;
-    public long codeSize;
-    public long dataSize;
-    public long externalCacheSize;
-    public long externalCodeSize;
-    public long externalDataSize;
-    public long externalMediaSize;
-    public long externalObbSize;
-    public java.lang.String packageName;
-    public int userHandle;
-}
-
--keep class android.content.pm.PackageUserState {
-    <init>();
-    <init>(android.content.pm.PackageUserState);
-
-    public boolean equals(java.lang.Object);
-    public boolean isAvailable(int);
-    public boolean isEnabled(android.content.pm.ComponentInfo, int);
-    public boolean isMatch(android.content.pm.ComponentInfo, int);
-
-
-    public int appLinkGeneration;
-    public int categoryHint;
-    public long ceDataInode;
-    public java.lang.String dialogMessage;
-    public android.util.ArraySet disabledComponents;
-    public int domainVerificationStatus;
-    public int enabled;
-    public android.util.ArraySet enabledComponents;
-    public java.lang.String harmfulAppWarning;
-    public boolean hidden;
-    public int installReason;
-    public boolean installed;
-    public boolean instantApp;
-    public java.lang.String lastDisableAppCaller;
-    public boolean notLaunched;
-    public java.lang.String[] overlayPaths;
-    public boolean stopped;
-    public boolean suspended;
-    public android.os.PersistableBundle suspendedAppExtras;
-    public android.os.PersistableBundle suspendedLauncherExtras;
-    public java.lang.String suspendingPackage;
-    public boolean virtualPreload;
-}
-
--keep class android.content.pm.ParceledListSlice {
-    <init>(java.util.List);
-
-    public int describeContents();
-    public static android.content.pm.ParceledListSlice emptyList();
-    public java.util.List getList();
-    protected android.os.Parcelable$Creator readParcelableCreator(android.os.Parcel, java.lang.ClassLoader);
-    public void setInlineCountLimit(int);
-    protected void writeElement(android.os.Parcelable, android.os.Parcel, int);
-    protected void writeElement(java.lang.Object, android.os.Parcel, int);
-    protected void writeParcelableCreator(android.os.Parcelable, android.os.Parcel);
-    protected void writeParcelableCreator(java.lang.Object, android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$ClassLoaderCreator CREATOR;
-}
-
--keep class android.content.pm.PathPermission {
-    <init>(java.lang.String, int, java.lang.String, java.lang.String);
-    <init>(android.os.Parcel);
-
-    public java.lang.String getReadPermission();
-    public java.lang.String getWritePermission();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.PermissionGroupInfo {
-    <init>();
-    <init>(android.content.pm.PermissionGroupInfo);
-
-    public int describeContents();
-    public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_PERSONAL_INFO;
-    public int descriptionRes;
-    public int flags;
-    public java.lang.CharSequence nonLocalizedDescription;
-    public int priority;
-    public int requestRes;
-}
-
--keep class android.content.pm.PermissionInfo {
-    <init>();
-    <init>(android.content.pm.PermissionInfo);
-
-    public int calculateFootprint();
-    public int describeContents();
-    public static int fixProtectionLevel(int);
-    public int getProtection();
-    public int getProtectionFlags();
-    public boolean isAppOp();
-    public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
-    public static java.lang.String protectionToString(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_COSTS_MONEY;
-    public static int FLAG_INSTALLED;
-    public static int FLAG_REMOVED;
-    public static int PROTECTION_DANGEROUS;
-    public static int PROTECTION_FLAG_APPOP;
-    public static int PROTECTION_FLAG_DEVELOPMENT;
-    public static int PROTECTION_FLAG_INSTALLER;
-    public static int PROTECTION_FLAG_INSTANT;
-    public static int PROTECTION_FLAG_OEM;
-    public static int PROTECTION_FLAG_PRE23;
-    public static int PROTECTION_FLAG_PREINSTALLED;
-    public static int PROTECTION_FLAG_PRIVILEGED;
-    public static int PROTECTION_FLAG_RUNTIME_ONLY;
-    public static int PROTECTION_FLAG_SETUP;
-    public static int PROTECTION_FLAG_SYSTEM;
-    public static int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER;
-    public static int PROTECTION_FLAG_VENDOR_PRIVILEGED;
-    public static int PROTECTION_FLAG_VERIFIER;
-    public static int PROTECTION_MASK_BASE;
-    public static int PROTECTION_MASK_FLAGS;
-    public static int PROTECTION_NORMAL;
-    public static int PROTECTION_SIGNATURE;
-    public static int PROTECTION_SIGNATURE_OR_SYSTEM;
-    public int descriptionRes;
-    public int flags;
-    public java.lang.String group;
-    public java.lang.CharSequence nonLocalizedDescription;
-    public int protectionLevel;
-    public int requestRes;
-}
-
--keep class android.content.pm.ProviderInfo {
-    <init>();
-    <init>(android.content.pm.ProviderInfo);
-
-    public int describeContents();
-    public void dump(android.util.Printer, java.lang.String);
-    public void dump(android.util.Printer, java.lang.String, int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_SINGLE_USER;
-    public static int FLAG_VISIBLE_TO_INSTANT_APP;
-    public java.lang.String authority;
-    public int flags;
-    public boolean grantUriPermissions;
-    public int initOrder;
-    public boolean isSyncable;
-    public boolean multiprocess;
-    public android.content.pm.PathPermission[] pathPermissions;
-    public java.lang.String readPermission;
-    public android.os.PatternMatcher[] uriPermissionPatterns;
-    public java.lang.String writePermission;
-}
-
--keep class android.content.pm.ResolveInfo {
-    <init>();
-    <init>(android.content.pm.ResolveInfo);
-
-    public int describeContents();
-    public void dump(android.util.Printer, java.lang.String);
-    public void dump(android.util.Printer, java.lang.String, int);
-    public android.content.pm.ComponentInfo getComponentInfo();
-    public int getIconResource();
-    public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-    public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
-    public int resolveIconResId();
-    public int resolveLabelResId();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.ActivityInfo activityInfo;
-    public android.content.pm.AuxiliaryResolveInfo auxiliaryInfo;
-    public android.content.IntentFilter filter;
-    public boolean handleAllWebDataURI;
-    public int icon;
-    public int iconResourceId;
-    public boolean instantAppAvailable;
-    public boolean isDefault;
-    public boolean isInstantAppAvailable;
-    public int labelRes;
-    public int match;
-    public boolean noResourceId;
-    public java.lang.CharSequence nonLocalizedLabel;
-    public int preferredOrder;
-    public int priority;
-    public android.content.pm.ProviderInfo providerInfo;
-    public java.lang.String resolvePackageName;
-    public android.content.pm.ServiceInfo serviceInfo;
-    public int specificIndex;
-    public boolean system;
-    public int targetUserId;
-}
-
--keep class android.content.pm.ServiceInfo {
-    <init>();
-    <init>(android.content.pm.ServiceInfo);
-
-    public int describeContents();
-    public void dump(android.util.Printer, java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_EXTERNAL_SERVICE;
-    public static int FLAG_ISOLATED_PROCESS;
-    public static int FLAG_SINGLE_USER;
-    public static int FLAG_STOP_WITH_TASK;
-    public static int FLAG_VISIBLE_TO_INSTANT_APP;
-    public int flags;
-    public java.lang.String permission;
-}
-
--keep class android.content.pm.SharedLibraryInfo {
-    <init>(java.lang.String, long, int, android.content.pm.VersionedPackage, java.util.List);
-
-    public int describeContents();
-    public android.content.pm.VersionedPackage getDeclaringPackage();
-    public java.util.List getDependentPackages();
-    public long getLongVersion();
-    public java.lang.String getName();
-    public int getType();
-    public int getVersion();
-    public boolean isBuiltin();
-    public boolean isDynamic();
-    public boolean isStatic();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int TYPE_BUILTIN;
-    public static int TYPE_DYNAMIC;
-    public static int TYPE_STATIC;
-    public static int VERSION_UNDEFINED;
-}
-
--keep class android.content.pm.Signature {
-    <init>(byte[]);
-    <init>(java.security.cert.Certificate[]);
-    <init>(java.lang.String);
-
-    public static boolean areEffectiveMatch(android.content.pm.Signature[], android.content.pm.Signature[]);
-    public static boolean areEffectiveMatch(android.content.pm.Signature, android.content.pm.Signature);
-    public static boolean areExactMatch(android.content.pm.Signature[], android.content.pm.Signature[]);
-    public static android.content.pm.Signature bounce(java.security.cert.CertificateFactory, android.content.pm.Signature);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.content.pm.Signature[] getChainSignatures();
-    public java.security.PublicKey getPublicKey();
-    public int hashCode();
-    public byte[] toByteArray();
-    public char[] toChars();
-    public char[] toChars(char[], int[]);
-    public java.lang.String toCharsString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.SigningInfo {
-    <init>();
-    <init>(android.content.pm.PackageParser$SigningDetails);
-    <init>(android.content.pm.SigningInfo);
-
-    public int describeContents();
-    public android.content.pm.Signature[] getApkContentsSigners();
-    public android.content.pm.Signature[] getSigningCertificateHistory();
-    public boolean hasMultipleSigners();
-    public boolean hasPastSigningCertificates();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.UserInfo {
-    <init>(int, java.lang.String, int);
-    <init>(int, java.lang.String, java.lang.String, int);
-    <init>();
-    <init>(android.content.pm.UserInfo);
-
-    public boolean canHaveProfile();
-    public int describeContents();
-    public android.os.UserHandle getUserHandle();
-    public boolean isAdmin();
-    public boolean isDemo();
-    public boolean isEnabled();
-    public boolean isEphemeral();
-    public boolean isGuest();
-    public boolean isInitialized();
-    public boolean isManagedProfile();
-    public boolean isPrimary();
-    public boolean isQuietModeEnabled();
-    public boolean isRestricted();
-    public boolean isSystemOnly();
-    public static boolean isSystemOnly(int);
-    public boolean supportsSwitchTo();
-    public boolean supportsSwitchToByUser();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_ADMIN;
-    public static int FLAG_DEMO;
-    public static int FLAG_DISABLED;
-    public static int FLAG_EPHEMERAL;
-    public static int FLAG_GUEST;
-    public static int FLAG_INITIALIZED;
-    public static int FLAG_MANAGED_PROFILE;
-    public static int FLAG_MASK_USER_TYPE;
-    public static int FLAG_PRIMARY;
-    public static int FLAG_QUIET_MODE;
-    public static int FLAG_RESTRICTED;
-    public static int NO_PROFILE_GROUP_ID;
-    public long creationTime;
-    public int flags;
-    public boolean guestToRemove;
-    public java.lang.String iconPath;
-    public int id;
-    public java.lang.String lastLoggedInFingerprint;
-    public long lastLoggedInTime;
-    public java.lang.String name;
-    public boolean partial;
-    public int profileBadge;
-    public int profileGroupId;
-    public int restrictedProfileParentId;
-    public int serialNumber;
-}
-
--keep class android.content.pm.VerifierDeviceIdentity {
-    <init>(long);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static android.content.pm.VerifierDeviceIdentity generate();
-    public int hashCode();
-    public static android.content.pm.VerifierDeviceIdentity parse(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.VerifierInfo {
-    <init>(java.lang.String, java.security.PublicKey);
-
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String packageName;
-    public java.security.PublicKey publicKey;
-}
-
--keep class android.content.pm.VersionedPackage {
-    <init>(java.lang.String, int);
-    <init>(java.lang.String, long);
-
-    public int describeContents();
-    public long getLongVersionCode();
-    public java.lang.String getPackageName();
-    public int getVersionCode();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.pm.dex.ArtManager {
-    <init>(android.content.Context, android.content.pm.dex.IArtManager);
-
-    public static java.lang.String getCurrentProfilePath(java.lang.String, int, java.lang.String);
-    public static java.lang.String getProfileName(java.lang.String);
-    public static java.io.File getProfileSnapshotFileForName(java.lang.String, java.lang.String);
-    public boolean isRuntimeProfilingEnabled(int);
-    public void snapshotRuntimeProfile(int, java.lang.String, java.lang.String, java.util.concurrent.Executor, android.content.pm.dex.ArtManager$SnapshotRuntimeProfileCallback);
-
-
-    public static int PROFILE_APPS;
-    public static int PROFILE_BOOT_IMAGE;
-    public static int SNAPSHOT_FAILED_CODE_PATH_NOT_FOUND;
-    public static int SNAPSHOT_FAILED_INTERNAL_ERROR;
-    public static int SNAPSHOT_FAILED_PACKAGE_NOT_FOUND;
-}
-
--keep class android.content.pm.dex.ArtManager$SnapshotRuntimeProfileCallback {
-    <init>();
-
-    public abstract void onError(int);
-    public abstract void onSuccess(android.os.ParcelFileDescriptor);
-
-
-}
-
--keep class android.content.pm.dex.IArtManager {
-
-    public abstract boolean isRuntimeProfilingEnabled(int, java.lang.String);
-    public abstract void snapshotRuntimeProfile(int, java.lang.String, java.lang.String, android.content.pm.dex.ISnapshotRuntimeProfileCallback, java.lang.String);
-
-
-}
-
--keep class android.content.pm.dex.ISnapshotRuntimeProfileCallback {
-
-    public abstract void onError(int);
-    public abstract void onSuccess(android.os.ParcelFileDescriptor);
-
-
-}
-
--keep class android.content.res.ApkAssets {
-
-    protected void finalize();
-    public java.lang.String getAssetPath();
-    public boolean isUpToDate();
-    public static android.content.res.ApkAssets loadFromFd(java.io.FileDescriptor, java.lang.String, boolean, boolean);
-    public static android.content.res.ApkAssets loadFromPath(java.lang.String);
-    public static android.content.res.ApkAssets loadFromPath(java.lang.String, boolean);
-    public static android.content.res.ApkAssets loadFromPath(java.lang.String, boolean, boolean);
-    public static android.content.res.ApkAssets loadOverlayFromPath(java.lang.String, boolean);
-    public android.content.res.XmlResourceParser openXml(java.lang.String);
-    public java.lang.String toString();
-
-
-}
-
--keep class android.content.res.AssetFileDescriptor {
-    <init>(android.os.ParcelFileDescriptor, long, long);
-    <init>(android.os.ParcelFileDescriptor, long, long, android.os.Bundle);
-
-    public void close();
-    public java.io.FileInputStream createInputStream();
-    public java.io.FileOutputStream createOutputStream();
-    public int describeContents();
-    public long getDeclaredLength();
-    public android.os.Bundle getExtras();
-    public java.io.FileDescriptor getFileDescriptor();
-    public long getLength();
-    public android.os.ParcelFileDescriptor getParcelFileDescriptor();
-    public long getStartOffset();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static long UNKNOWN_LENGTH;
-}
-
--keep class android.content.res.AssetManager {
-    <init>();
-
-    public int addAssetPath(java.lang.String);
-    public int addAssetPathAsSharedLibrary(java.lang.String);
-    public int addOverlayPath(java.lang.String);
-    public void close();
-    protected void finalize();
-    public int findCookieForPath(java.lang.String);
-    public android.content.res.ApkAssets[] getApkAssets();
-    public static java.lang.String getAssetAllocations();
-    public android.util.SparseArray getAssignedPackageIdentifiers();
-    public static int getGlobalAssetCount();
-    public static int getGlobalAssetManagerCount();
-    public java.lang.String[] getLocales();
-    public java.lang.String[] getNonSystemLocales();
-    public static android.content.res.AssetManager getSystem();
-    public boolean isUpToDate();
-    public java.lang.String[] list(java.lang.String);
-    public java.io.InputStream open(java.lang.String);
-    public java.io.InputStream open(java.lang.String, int);
-    public android.content.res.AssetFileDescriptor openFd(java.lang.String);
-    public java.io.InputStream openNonAsset(java.lang.String);
-    public java.io.InputStream openNonAsset(java.lang.String, int);
-    public java.io.InputStream openNonAsset(int, java.lang.String);
-    public java.io.InputStream openNonAsset(int, java.lang.String, int);
-    public android.content.res.AssetFileDescriptor openNonAssetFd(java.lang.String);
-    public android.content.res.AssetFileDescriptor openNonAssetFd(int, java.lang.String);
-    public android.content.res.XmlResourceParser openXmlResourceParser(java.lang.String);
-    public android.content.res.XmlResourceParser openXmlResourceParser(int, java.lang.String);
-    public void setApkAssets(android.content.res.ApkAssets[], boolean);
-    public void setConfiguration(int, int, java.lang.String, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int);
-
-
-    public static int ACCESS_BUFFER;
-    public static int ACCESS_RANDOM;
-    public static int ACCESS_STREAMING;
-    public static int ACCESS_UNKNOWN;
-}
-
--keep class android.content.res.ColorStateList {
-    <init>(int[][], int[]);
-
-    public boolean canApplyTheme();
-    public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser);
-    public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources$Theme);
-    public int describeContents();
-    public int getChangingConfigurations();
-    public int getColorForState(int[], int);
-    public int[] getColors();
-    public android.content.res.ConstantState getConstantState();
-    public int getDefaultColor();
-    public int[][] getStates();
-    public boolean hasFocusStateSpecified();
-    public boolean hasState(int);
-    public boolean isOpaque();
-    public boolean isStateful();
-    public android.content.res.ColorStateList obtainForTheme(android.content.res.Resources$Theme);
-    public android.content.res.ComplexColor obtainForTheme(android.content.res.Resources$Theme);
-    public java.lang.String toString();
-    public static android.content.res.ColorStateList valueOf(int);
-    public android.content.res.ColorStateList withAlpha(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.content.res.CompatibilityInfo {
-    <init>(android.content.pm.ApplicationInfo, int, int, boolean);
-
-    public boolean alwaysSupportsScreen();
-    public void applyToConfiguration(int, android.content.res.Configuration);
-    public void applyToDisplayMetrics(android.util.DisplayMetrics);
-    public static float computeCompatibleScaling(android.util.DisplayMetrics, android.util.DisplayMetrics);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.content.res.CompatibilityInfo$Translator getTranslator();
-    public int hashCode();
-    public boolean isScalingRequired();
-    public boolean needsCompatResources();
-    public boolean neverSupportsScreen();
-    public boolean supportsScreen();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.content.res.CompatibilityInfo DEFAULT_COMPATIBILITY_INFO;
-    public static int DEFAULT_NORMAL_SHORT_DIMENSION;
-    public static float MAXIMUM_ASPECT_RATIO;
-    public int applicationDensity;
-    public float applicationInvertedScale;
-    public float applicationScale;
-}
-
--keep class android.content.res.CompatibilityInfo$Translator {
-
-    public android.graphics.Rect getTranslatedContentInsets(android.graphics.Rect);
-    public android.graphics.Region getTranslatedTouchableArea(android.graphics.Region);
-    public android.graphics.Rect getTranslatedVisibleInsets(android.graphics.Rect);
-    public void translateCanvas(android.graphics.Canvas);
-    public void translateEventInScreenToAppWindow(android.view.MotionEvent);
-    public void translateLayoutParamsInAppWindowToScreen(android.view.WindowManager$LayoutParams);
-    public void translatePointInScreenToAppWindow(android.graphics.PointF);
-    public void translateRectInAppWindowToScreen(android.graphics.Rect);
-    public void translateRectInScreenToAppWinFrame(android.graphics.Rect);
-    public void translateRectInScreenToAppWindow(android.graphics.Rect);
-    public void translateRegionInWindowToScreen(android.graphics.Region);
-    public void translateWindowLayout(android.view.WindowManager$LayoutParams);
-
-
-    public float applicationInvertedScale;
-    public float applicationScale;
-}
-
--keep class android.content.res.ComplexColor {
-    <init>();
-
-    public abstract boolean canApplyTheme();
-    public int getChangingConfigurations();
-    public abstract android.content.res.ConstantState getConstantState();
-    public abstract int getDefaultColor();
-    public boolean isStateful();
-    public abstract android.content.res.ComplexColor obtainForTheme(android.content.res.Resources$Theme);
-
-
-}
-
--keep class android.content.res.Configuration {
-    <init>();
-    <init>(android.content.res.Configuration);
-
-    public void clearLocales();
-    public int compareTo(android.content.res.Configuration);
-    public int compareTo(java.lang.Object);
-    public static java.lang.String configurationDiffToString(int);
-    public int describeContents();
-    public int diff(android.content.res.Configuration);
-    public int diff(android.content.res.Configuration, boolean, boolean);
-    public int diffPublicOnly(android.content.res.Configuration);
-    public boolean equals(android.content.res.Configuration);
-    public boolean equals(java.lang.Object);
-    public static android.content.res.Configuration generateDelta(android.content.res.Configuration, android.content.res.Configuration);
-    public int getLayoutDirection();
-    public android.os.LocaleList getLocales();
-    public int hashCode();
-    public boolean isLayoutSizeAtLeast(int);
-    public boolean isOtherSeqNewer(android.content.res.Configuration);
-    public boolean isScreenHdr();
-    public boolean isScreenRound();
-    public boolean isScreenWideColorGamut();
-    public static java.lang.String localesToResourceQualifier(android.os.LocaleList);
-    public void makeDefault();
-    public static boolean needNewResources(int, int);
-    public void readFromParcel(android.os.Parcel);
-    public static void readXmlAttrs(org.xmlpull.v1.XmlPullParser, android.content.res.Configuration);
-    public static int reduceScreenLayout(int, int, int);
-    public static int resetScreenLayout(int);
-    public static java.lang.String resourceQualifierString(android.content.res.Configuration);
-    public static java.lang.String resourceQualifierString(android.content.res.Configuration, android.util.DisplayMetrics);
-    public void setLayoutDirection(java.util.Locale);
-    public void setLocale(java.util.Locale);
-    public void setLocales(android.os.LocaleList);
-    public void setTo(android.content.res.Configuration);
-    public void setToDefaults();
-    public java.lang.String toString();
-    public static java.lang.String uiModeToString(int);
-    public void unset();
-    public int updateFrom(android.content.res.Configuration);
-    public void writeResConfigToProto(android.util.proto.ProtoOutputStream, long, android.util.DisplayMetrics);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-    public static void writeXmlAttrs(org.xmlpull.v1.XmlSerializer, android.content.res.Configuration);
-
-
-    public static int ASSETS_SEQ_UNDEFINED;
-    public static int COLOR_MODE_HDR_MASK;
-    public static int COLOR_MODE_HDR_NO;
-    public static int COLOR_MODE_HDR_SHIFT;
-    public static int COLOR_MODE_HDR_UNDEFINED;
-    public static int COLOR_MODE_HDR_YES;
-    public static int COLOR_MODE_UNDEFINED;
-    public static int COLOR_MODE_WIDE_COLOR_GAMUT_MASK;
-    public static int COLOR_MODE_WIDE_COLOR_GAMUT_NO;
-    public static int COLOR_MODE_WIDE_COLOR_GAMUT_UNDEFINED;
-    public static int COLOR_MODE_WIDE_COLOR_GAMUT_YES;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int DENSITY_DPI_ANY;
-    public static int DENSITY_DPI_NONE;
-    public static int DENSITY_DPI_UNDEFINED;
-    public static android.content.res.Configuration EMPTY;
-    public static int HARDKEYBOARDHIDDEN_NO;
-    public static int HARDKEYBOARDHIDDEN_UNDEFINED;
-    public static int HARDKEYBOARDHIDDEN_YES;
-    public static int KEYBOARDHIDDEN_NO;
-    public static int KEYBOARDHIDDEN_SOFT;
-    public static int KEYBOARDHIDDEN_UNDEFINED;
-    public static int KEYBOARDHIDDEN_YES;
-    public static int KEYBOARD_12KEY;
-    public static int KEYBOARD_NOKEYS;
-    public static int KEYBOARD_QWERTY;
-    public static int KEYBOARD_UNDEFINED;
-    public static int MNC_ZERO;
-    public static int NATIVE_CONFIG_COLOR_MODE;
-    public static int NATIVE_CONFIG_DENSITY;
-    public static int NATIVE_CONFIG_KEYBOARD;
-    public static int NATIVE_CONFIG_KEYBOARD_HIDDEN;
-    public static int NATIVE_CONFIG_LAYOUTDIR;
-    public static int NATIVE_CONFIG_LOCALE;
-    public static int NATIVE_CONFIG_MCC;
-    public static int NATIVE_CONFIG_MNC;
-    public static int NATIVE_CONFIG_NAVIGATION;
-    public static int NATIVE_CONFIG_ORIENTATION;
-    public static int NATIVE_CONFIG_SCREEN_LAYOUT;
-    public static int NATIVE_CONFIG_SCREEN_SIZE;
-    public static int NATIVE_CONFIG_SMALLEST_SCREEN_SIZE;
-    public static int NATIVE_CONFIG_TOUCHSCREEN;
-    public static int NATIVE_CONFIG_UI_MODE;
-    public static int NATIVE_CONFIG_VERSION;
-    public static int NAVIGATIONHIDDEN_NO;
-    public static int NAVIGATIONHIDDEN_UNDEFINED;
-    public static int NAVIGATIONHIDDEN_YES;
-    public static int NAVIGATION_DPAD;
-    public static int NAVIGATION_NONAV;
-    public static int NAVIGATION_TRACKBALL;
-    public static int NAVIGATION_UNDEFINED;
-    public static int NAVIGATION_WHEEL;
-    public static int ORIENTATION_LANDSCAPE;
-    public static int ORIENTATION_PORTRAIT;
-    public static int ORIENTATION_SQUARE;
-    public static int ORIENTATION_UNDEFINED;
-    public static int SCREENLAYOUT_COMPAT_NEEDED;
-    public static int SCREENLAYOUT_LAYOUTDIR_LTR;
-    public static int SCREENLAYOUT_LAYOUTDIR_MASK;
-    public static int SCREENLAYOUT_LAYOUTDIR_RTL;
-    public static int SCREENLAYOUT_LAYOUTDIR_SHIFT;
-    public static int SCREENLAYOUT_LAYOUTDIR_UNDEFINED;
-    public static int SCREENLAYOUT_LONG_MASK;
-    public static int SCREENLAYOUT_LONG_NO;
-    public static int SCREENLAYOUT_LONG_UNDEFINED;
-    public static int SCREENLAYOUT_LONG_YES;
-    public static int SCREENLAYOUT_ROUND_MASK;
-    public static int SCREENLAYOUT_ROUND_NO;
-    public static int SCREENLAYOUT_ROUND_SHIFT;
-    public static int SCREENLAYOUT_ROUND_UNDEFINED;
-    public static int SCREENLAYOUT_ROUND_YES;
-    public static int SCREENLAYOUT_SIZE_LARGE;
-    public static int SCREENLAYOUT_SIZE_MASK;
-    public static int SCREENLAYOUT_SIZE_NORMAL;
-    public static int SCREENLAYOUT_SIZE_SMALL;
-    public static int SCREENLAYOUT_SIZE_UNDEFINED;
-    public static int SCREENLAYOUT_SIZE_XLARGE;
-    public static int SCREENLAYOUT_UNDEFINED;
-    public static int SCREEN_HEIGHT_DP_UNDEFINED;
-    public static int SCREEN_WIDTH_DP_UNDEFINED;
-    public static int SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
-    public static int TOUCHSCREEN_FINGER;
-    public static int TOUCHSCREEN_NOTOUCH;
-    public static int TOUCHSCREEN_STYLUS;
-    public static int TOUCHSCREEN_UNDEFINED;
-    public static int UI_MODE_NIGHT_MASK;
-    public static int UI_MODE_NIGHT_NO;
-    public static int UI_MODE_NIGHT_UNDEFINED;
-    public static int UI_MODE_NIGHT_YES;
-    public static int UI_MODE_TYPE_APPLIANCE;
-    public static int UI_MODE_TYPE_CAR;
-    public static int UI_MODE_TYPE_DESK;
-    public static int UI_MODE_TYPE_MASK;
-    public static int UI_MODE_TYPE_NORMAL;
-    public static int UI_MODE_TYPE_TELEVISION;
-    public static int UI_MODE_TYPE_UNDEFINED;
-    public static int UI_MODE_TYPE_VR_HEADSET;
-    public static int UI_MODE_TYPE_WATCH;
-    public int assetsSeq;
-    public int colorMode;
-    public int compatScreenHeightDp;
-    public int compatScreenWidthDp;
-    public int compatSmallestScreenWidthDp;
-    public int densityDpi;
-    public float fontScale;
-    public int hardKeyboardHidden;
-    public int keyboard;
-    public int keyboardHidden;
-    public java.util.Locale locale;
-    public int mcc;
-    public int mnc;
-    public int navigation;
-    public int navigationHidden;
-    public int orientation;
-    public int screenHeightDp;
-    public int screenLayout;
-    public int screenWidthDp;
-    public int seq;
-    public int smallestScreenWidthDp;
-    public int touchscreen;
-    public int uiMode;
-    public boolean userSetLocale;
-    public android.app.WindowConfiguration windowConfiguration;
-}
-
--keep class android.content.res.ConfigurationBoundResourceCache {
-    <init>();
-
-    public java.lang.Object getInstance(long, android.content.res.Resources, android.content.res.Resources$Theme);
-    public void onConfigurationChange(int);
-    public boolean shouldInvalidateEntry(android.content.res.ConstantState, int);
-    public boolean shouldInvalidateEntry(java.lang.Object, int);
-
-
-}
-
--keep class android.content.res.ConstantState {
-    <init>();
-
-    public abstract int getChangingConfigurations();
-    public abstract java.lang.Object newInstance();
-    public java.lang.Object newInstance(android.content.res.Resources);
-    public java.lang.Object newInstance(android.content.res.Resources, android.content.res.Resources$Theme);
-
-
-}
-
--keep class android.content.res.FontResourcesParser {
-    <init>();
-
-    public static android.content.res.FontResourcesParser$FamilyResourceEntry parse(org.xmlpull.v1.XmlPullParser, android.content.res.Resources);
-
-
-}
-
--keep class android.content.res.FontResourcesParser$FamilyResourceEntry {
-
-
-
-}
-
--keep class android.content.res.Resources {
-    <init>(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
-    <init>(java.lang.ClassLoader);
-
-    public int calcConfigChanges(android.content.res.Configuration);
-    public void finishPreloading();
-    public void flushLayoutCache();
-    public android.content.res.XmlResourceParser getAnimation(int);
-    public android.content.res.ConfigurationBoundResourceCache getAnimatorCache();
-    public android.content.res.AssetManager getAssets();
-    public boolean getBoolean(int);
-    public java.lang.ClassLoader getClassLoader();
-    public int getColor(int);
-    public int getColor(int, android.content.res.Resources$Theme);
-    public android.content.res.ColorStateList getColorStateList(int);
-    public android.content.res.ColorStateList getColorStateList(int, android.content.res.Resources$Theme);
-    public android.content.res.CompatibilityInfo getCompatibilityInfo();
-    public android.content.res.Configuration getConfiguration();
-    public float getDimension(int);
-    public int getDimensionPixelOffset(int);
-    public int getDimensionPixelSize(int);
-    public android.view.DisplayAdjustments getDisplayAdjustments();
-    public android.util.DisplayMetrics getDisplayMetrics();
-    public android.graphics.drawable.Drawable getDrawable(int);
-    public android.graphics.drawable.Drawable getDrawable(int, android.content.res.Resources$Theme);
-    public android.graphics.drawable.Drawable getDrawableForDensity(int, int);
-    public android.graphics.drawable.Drawable getDrawableForDensity(int, int, android.content.res.Resources$Theme);
-    public android.graphics.drawable.DrawableInflater getDrawableInflater();
-    public float getFloat(int);
-    public android.graphics.Typeface getFont(int);
-    public float getFraction(int, int, int);
-    public int getIdentifier(java.lang.String, java.lang.String, java.lang.String);
-    public android.content.res.ResourcesImpl getImpl();
-    public int[] getIntArray(int);
-    public int getInteger(int);
-    public android.content.res.XmlResourceParser getLayout(int);
-    public android.graphics.Movie getMovie(int);
-    public android.util.LongSparseArray getPreloadedDrawables();
-    public java.lang.String getQuantityString(int, int, java.lang.Object[]);
-    public java.lang.String getQuantityString(int, int);
-    public java.lang.CharSequence getQuantityText(int, int);
-    public java.lang.String getResourceEntryName(int);
-    public java.lang.String getResourceName(int);
-    public java.lang.String getResourcePackageName(int);
-    public java.lang.String getResourceTypeName(int);
-    public android.content.res.Configuration[] getSizeConfigurations();
-    public android.content.res.ConfigurationBoundResourceCache getStateListAnimatorCache();
-    public java.lang.String getString(int);
-    public java.lang.String getString(int, java.lang.Object[]);
-    public java.lang.String[] getStringArray(int);
-    public static android.content.res.Resources getSystem();
-    public java.lang.CharSequence getText(int);
-    public java.lang.CharSequence getText(int, java.lang.CharSequence);
-    public java.lang.CharSequence[] getTextArray(int);
-    public void getValue(int, android.util.TypedValue, boolean);
-    public void getValue(java.lang.String, android.util.TypedValue, boolean);
-    public void getValueForDensity(int, int, android.util.TypedValue, boolean);
-    public android.content.res.XmlResourceParser getXml(int);
-    public android.content.res.ComplexColor loadComplexColor(android.util.TypedValue, int, android.content.res.Resources$Theme);
-    public android.content.res.Resources$Theme newTheme();
-    public android.content.res.TypedArray obtainAttributes(android.util.AttributeSet, int[]);
-    public static android.content.res.TypedArray obtainAttributes(android.content.res.Resources, android.content.res.Resources$Theme, android.util.AttributeSet, int[]);
-    public android.content.res.TypedArray obtainTypedArray(int);
-    public java.io.InputStream openRawResource(int);
-    public java.io.InputStream openRawResource(int, android.util.TypedValue);
-    public android.content.res.AssetFileDescriptor openRawResourceFd(int);
-    public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle);
-    public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle);
-    public void preloadFonts(int);
-    public static boolean resourceHasPackage(int);
-    public static int selectDefaultTheme(int, int);
-    public static int selectSystemTheme(int, int, int, int, int, int);
-    public void setCompatibilityInfo(android.content.res.CompatibilityInfo);
-    public void setImpl(android.content.res.ResourcesImpl);
-    public void startPreloading();
-    public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
-    public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics, android.content.res.CompatibilityInfo);
-    public static void updateSystemConfiguration(android.content.res.Configuration, android.util.DisplayMetrics, android.content.res.CompatibilityInfo);
-
-
-}
-
--keep class android.content.res.Resources$NotFoundException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Exception);
-
-
-
-}
-
--keep class android.content.res.Resources$Theme {
-
-    public void applyStyle(int, boolean);
-    public void dump(int, java.lang.String, java.lang.String);
-    public void encode(android.view.ViewHierarchyEncoder);
-    public int[] getAllAttributes();
-    public int getChangingConfigurations();
-    public android.graphics.drawable.Drawable getDrawable(int);
-    public android.content.res.Resources$ThemeKey getKey();
-    public android.content.res.Resources getResources();
-    public java.lang.String[] getTheme();
-    public android.content.res.TypedArray obtainStyledAttributes(int[]);
-    public android.content.res.TypedArray obtainStyledAttributes(int, int[]);
-    public android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[], int, int);
-    public void rebase();
-    public boolean resolveAttribute(int, android.util.TypedValue, boolean);
-    public android.content.res.TypedArray resolveAttributes(int[], int[]);
-    public void setTo(android.content.res.Resources$Theme);
-
-
-}
-
--keep class android.content.res.Resources$ThemeKey {
-
-    public void append(int, boolean);
-    public android.content.res.Resources$ThemeKey clone();
-    public java.lang.Object clone();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public void setTo(android.content.res.Resources$ThemeKey);
-
-
-}
-
--keep class android.content.res.ResourcesImpl {
-    <init>(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration, android.view.DisplayAdjustments);
-
-    public int calcConfigChanges(android.content.res.Configuration);
-    public void flushLayoutCache();
-    public android.content.res.AssetManager getAssets();
-    public android.view.DisplayAdjustments getDisplayAdjustments();
-    public android.graphics.Typeface loadFont(android.content.res.Resources, android.util.TypedValue, int);
-    public void startPreloading();
-    public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics, android.content.res.CompatibilityInfo);
-
-
-    public static boolean TRACE_FOR_DETAILED_PRELOAD;
-}
-
--keep class android.content.res.ThemedResourceCache {
-
-    public java.lang.Object get(long, android.content.res.Resources$Theme);
-    public void onConfigurationChange(int);
-    public void put(long, android.content.res.Resources$Theme, java.lang.Object);
-    public void put(long, android.content.res.Resources$Theme, java.lang.Object, boolean);
-    protected abstract boolean shouldInvalidateEntry(java.lang.Object, int);
-
-
-}
-
--keep class android.content.res.TypedArray {
-    <init>(android.content.res.Resources);
-
-    public int[] extractThemeAttrs();
-    public int[] extractThemeAttrs(int[]);
-    public boolean getBoolean(int, boolean);
-    public int getChangingConfigurations();
-    public int getColor(int, int);
-    public android.content.res.ColorStateList getColorStateList(int);
-    public android.content.res.ComplexColor getComplexColor(int);
-    public float getDimension(int, float);
-    public int getDimensionPixelOffset(int, int);
-    public int getDimensionPixelSize(int, int);
-    public android.graphics.drawable.Drawable getDrawable(int);
-    public android.graphics.drawable.Drawable getDrawableForDensity(int, int);
-    public float getFloat(int, float);
-    public android.graphics.Typeface getFont(int);
-    public float getFraction(int, int, int, float);
-    public int getIndex(int);
-    public int getIndexCount();
-    public int getInt(int, int);
-    public int getInteger(int, int);
-    public int getLayoutDimension(int, java.lang.String);
-    public int getLayoutDimension(int, int);
-    public java.lang.String getNonConfigurationString(int, int);
-    public java.lang.String getNonResourceString(int);
-    public java.lang.String getPositionDescription();
-    public int getResourceId(int, int);
-    public android.content.res.Resources getResources();
-    public java.lang.String getString(int);
-    public java.lang.CharSequence getText(int);
-    public java.lang.CharSequence[] getTextArray(int);
-    public int getThemeAttributeId(int, int);
-    public int getType(int);
-    public boolean getValue(int, android.util.TypedValue);
-    public boolean hasValue(int);
-    public boolean hasValueOrEmpty(int);
-    public int length();
-    public android.util.TypedValue peekValue(int);
-    public void recycle();
-    public java.lang.String toString();
-
-
-}
-
--keep class android.content.res.XmlResourceParser {
-
-    public abstract void close();
-    public abstract java.lang.String getAttributeNamespace(int);
-
-
-}
-
--keep class android.database.CharArrayBuffer {
-    <init>(int);
-    <init>(char[]);
-
-
-
-    public char[] data;
-    public int sizeCopied;
-}
-
--keep class android.database.ContentObserver {
-    <init>(android.os.Handler);
-
-    public boolean deliverSelfNotifications();
-    public void dispatchChange(boolean);
-    public void dispatchChange(boolean, android.net.Uri);
-    public android.database.IContentObserver getContentObserver();
-    public void onChange(boolean);
-    public void onChange(boolean, android.net.Uri);
-    public void onChange(boolean, android.net.Uri, int);
-    public android.database.IContentObserver releaseContentObserver();
-
-
-}
-
--keep class android.database.Cursor {
-
-    public abstract void close();
-    public abstract void copyStringToBuffer(int, android.database.CharArrayBuffer);
-    public abstract void deactivate();
-    public abstract byte[] getBlob(int);
-    public abstract int getColumnCount();
-    public abstract int getColumnIndex(java.lang.String);
-    public abstract int getColumnIndexOrThrow(java.lang.String);
-    public abstract java.lang.String getColumnName(int);
-    public abstract java.lang.String[] getColumnNames();
-    public abstract int getCount();
-    public abstract double getDouble(int);
-    public abstract android.os.Bundle getExtras();
-    public abstract float getFloat(int);
-    public abstract int getInt(int);
-    public abstract long getLong(int);
-    public abstract android.net.Uri getNotificationUri();
-    public abstract int getPosition();
-    public abstract short getShort(int);
-    public abstract java.lang.String getString(int);
-    public abstract int getType(int);
-    public abstract boolean getWantsAllOnMoveCalls();
-    public abstract boolean isAfterLast();
-    public abstract boolean isBeforeFirst();
-    public abstract boolean isClosed();
-    public abstract boolean isFirst();
-    public abstract boolean isLast();
-    public abstract boolean isNull(int);
-    public abstract boolean move(int);
-    public abstract boolean moveToFirst();
-    public abstract boolean moveToLast();
-    public abstract boolean moveToNext();
-    public abstract boolean moveToPosition(int);
-    public abstract boolean moveToPrevious();
-    public abstract void registerContentObserver(android.database.ContentObserver);
-    public abstract void registerDataSetObserver(android.database.DataSetObserver);
-    public abstract boolean requery();
-    public abstract android.os.Bundle respond(android.os.Bundle);
-    public abstract void setExtras(android.os.Bundle);
-    public abstract void setNotificationUri(android.content.ContentResolver, android.net.Uri);
-    public abstract void unregisterContentObserver(android.database.ContentObserver);
-    public abstract void unregisterDataSetObserver(android.database.DataSetObserver);
-
-
-    public static int FIELD_TYPE_BLOB;
-    public static int FIELD_TYPE_FLOAT;
-    public static int FIELD_TYPE_INTEGER;
-    public static int FIELD_TYPE_NULL;
-    public static int FIELD_TYPE_STRING;
-}
-
--keep class android.database.CursorWindow {
-    <init>(java.lang.String);
-    <init>(java.lang.String, long);
-    <init>(boolean);
-
-    public boolean allocRow();
-    public void clear();
-    public void copyStringToBuffer(int, int, android.database.CharArrayBuffer);
-    public int describeContents();
-    protected void finalize();
-    public void freeLastRow();
-    public byte[] getBlob(int, int);
-    public double getDouble(int, int);
-    public float getFloat(int, int);
-    public int getInt(int, int);
-    public long getLong(int, int);
-    public java.lang.String getName();
-    public int getNumRows();
-    public short getShort(int, int);
-    public int getStartPosition();
-    public java.lang.String getString(int, int);
-    public int getType(int, int);
-    public boolean isBlob(int, int);
-    public boolean isFloat(int, int);
-    public boolean isLong(int, int);
-    public boolean isNull(int, int);
-    public boolean isString(int, int);
-    public static android.database.CursorWindow newFromParcel(android.os.Parcel);
-    protected void onAllReferencesReleased();
-    public boolean putBlob(byte[], int, int);
-    public boolean putDouble(double, int, int);
-    public boolean putLong(long, int, int);
-    public boolean putNull(int, int);
-    public boolean putString(java.lang.String, int, int);
-    public boolean setNumColumns(int);
-    public void setStartPosition(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public long mWindowPtr;
-}
-
--keep class android.database.DataSetObserver {
-    <init>();
-
-    public void onChanged();
-    public void onInvalidated();
-
-
-}
-
--keep class android.database.DatabaseErrorHandler {
-
-    public abstract void onCorruption(android.database.sqlite.SQLiteDatabase);
-
-
-}
-
--keep class android.database.IContentObserver {
-
-    public abstract void onChange(boolean, android.net.Uri, int);
-
-
-}
-
--keep class android.database.SQLException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-
-
-
-}
-
--keep class android.database.sqlite.SQLiteClosable {
-    <init>();
-
-    public void acquireReference();
-    public void close();
-    protected abstract void onAllReferencesReleased();
-    protected void onAllReferencesReleasedFromContainer();
-    public void releaseReference();
-    public void releaseReferenceFromContainer();
-
-
-}
-
--keep class android.database.sqlite.SQLiteConnection {
-
-    public void dump(android.util.Printer, boolean);
-    public void execute(java.lang.String, java.lang.Object[], android.os.CancellationSignal);
-    public android.os.ParcelFileDescriptor executeForBlobFileDescriptor(java.lang.String, java.lang.Object[], android.os.CancellationSignal);
-    public int executeForChangedRowCount(java.lang.String, java.lang.Object[], android.os.CancellationSignal);
-    public int executeForCursorWindow(java.lang.String, java.lang.Object[], android.database.CursorWindow, int, int, boolean, android.os.CancellationSignal);
-    public long executeForLastInsertedRowId(java.lang.String, java.lang.Object[], android.os.CancellationSignal);
-    public long executeForLong(java.lang.String, java.lang.Object[], android.os.CancellationSignal);
-    public java.lang.String executeForString(java.lang.String, java.lang.Object[], android.os.CancellationSignal);
-    protected void finalize();
-    public int getConnectionId();
-    public boolean isPrimaryConnection();
-    public void onCancel();
-    public void prepare(java.lang.String, android.database.sqlite.SQLiteStatementInfo);
-    public java.lang.String toString();
-
-
-}
-
--keep class android.database.sqlite.SQLiteConnectionPool {
-
-    public android.database.sqlite.SQLiteConnection acquireConnection(java.lang.String, int, android.os.CancellationSignal);
-    public void close();
-    public void collectDbStats(java.util.ArrayList);
-    public void dump(android.util.Printer, boolean);
-    protected void finalize();
-    public static android.database.sqlite.SQLiteConnectionPool open(android.database.sqlite.SQLiteDatabaseConfiguration);
-    public void reconfigure(android.database.sqlite.SQLiteDatabaseConfiguration);
-    public void releaseConnection(android.database.sqlite.SQLiteConnection);
-    public void setupIdleConnectionHandler(android.os.Looper, long);
-    public boolean shouldYieldConnection(android.database.sqlite.SQLiteConnection, int);
-    public java.lang.String toString();
-
-
-    public static int CONNECTION_FLAG_INTERACTIVE;
-    public static int CONNECTION_FLAG_PRIMARY_CONNECTION_AFFINITY;
-    public static int CONNECTION_FLAG_READ_ONLY;
-}
-
--keep class android.database.sqlite.SQLiteCursorDriver {
-
-    public abstract void cursorClosed();
-    public abstract void cursorDeactivated();
-    public abstract void cursorRequeried(android.database.Cursor);
-    public abstract android.database.Cursor query(android.database.sqlite.SQLiteDatabase$CursorFactory, java.lang.String[]);
-    public abstract void setBindArguments(java.lang.String[]);
-
-
-}
-
--keep class android.database.sqlite.SQLiteCustomFunction {
-    <init>(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CustomFunction);
-
-
-
-    public android.database.sqlite.SQLiteDatabase$CustomFunction callback;
-    public java.lang.String name;
-    public int numArgs;
-}
-
--keep class android.database.sqlite.SQLiteDatabase {
-
-    public void addCustomFunction(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CustomFunction);
-    public void beginTransaction();
-    public void beginTransactionNonExclusive();
-    public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener);
-    public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener);
-    public android.database.sqlite.SQLiteStatement compileStatement(java.lang.String);
-    public static android.database.sqlite.SQLiteDatabase create(android.database.sqlite.SQLiteDatabase$CursorFactory);
-    public static android.database.sqlite.SQLiteDatabase createInMemory(android.database.sqlite.SQLiteDatabase$OpenParams);
-    public int delete(java.lang.String, java.lang.String, java.lang.String[]);
-    public static boolean deleteDatabase(java.io.File);
-    public void disableWriteAheadLogging();
-    public boolean enableWriteAheadLogging();
-    public void endTransaction();
-    public void execSQL(java.lang.String);
-    public void execSQL(java.lang.String, java.lang.Object[]);
-    protected void finalize();
-    public static java.lang.String findEditTable(java.lang.String);
-    public java.util.List getAttachedDbs();
-    public long getMaximumSize();
-    public long getPageSize();
-    public java.lang.String getPath();
-    public java.util.Map getSyncedTables();
-    public int getVersion();
-    public boolean inTransaction();
-    public long insert(java.lang.String, java.lang.String, android.content.ContentValues);
-    public long insertOrThrow(java.lang.String, java.lang.String, android.content.ContentValues);
-    public long insertWithOnConflict(java.lang.String, java.lang.String, android.content.ContentValues, int);
-    public boolean isDatabaseIntegrityOk();
-    public boolean isDbLockedByCurrentThread();
-    public boolean isDbLockedByOtherThreads();
-    public boolean isInMemoryDatabase();
-    public boolean isOpen();
-    public boolean isReadOnly();
-    public boolean isWriteAheadLoggingEnabled();
-    public void markTableSyncable(java.lang.String, java.lang.String);
-    public void markTableSyncable(java.lang.String, java.lang.String, java.lang.String);
-    public boolean needUpgrade(int);
-    protected void onAllReferencesReleased();
-    public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase$CursorFactory, int);
-    public static android.database.sqlite.SQLiteDatabase openDatabase(java.io.File, android.database.sqlite.SQLiteDatabase$OpenParams);
-    public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase$CursorFactory, int, android.database.DatabaseErrorHandler);
-    public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.io.File, android.database.sqlite.SQLiteDatabase$CursorFactory);
-    public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase$CursorFactory);
-    public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler);
-    public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
-    public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
-    public android.database.Cursor query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String);
-    public android.database.Cursor query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
-    public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase$CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
-    public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase$CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
-    public android.database.Cursor rawQuery(java.lang.String, java.lang.String[]);
-    public android.database.Cursor rawQuery(java.lang.String, java.lang.String[], android.os.CancellationSignal);
-    public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase$CursorFactory, java.lang.String, java.lang.String[], java.lang.String);
-    public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase$CursorFactory, java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
-    public static int releaseMemory();
-    public void reopenReadWrite();
-    public long replace(java.lang.String, java.lang.String, android.content.ContentValues);
-    public long replaceOrThrow(java.lang.String, java.lang.String, android.content.ContentValues);
-    public void setForeignKeyConstraintsEnabled(boolean);
-    public void setLocale(java.util.Locale);
-    public void setLockingEnabled(boolean);
-    public void setMaxSqlCacheSize(int);
-    public long setMaximumSize(long);
-    public void setPageSize(long);
-    public void setTransactionSuccessful();
-    public void setVersion(int);
-    public java.lang.String toString();
-    public int update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[]);
-    public int updateWithOnConflict(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[], int);
-    public void validateSql(java.lang.String, android.os.CancellationSignal);
-    public boolean yieldIfContended();
-    public boolean yieldIfContendedSafely();
-    public boolean yieldIfContendedSafely(long);
-
-
-    public static int CONFLICT_ABORT;
-    public static int CONFLICT_FAIL;
-    public static int CONFLICT_IGNORE;
-    public static int CONFLICT_NONE;
-    public static int CONFLICT_REPLACE;
-    public static int CONFLICT_ROLLBACK;
-    public static int CREATE_IF_NECESSARY;
-    public static int DISABLE_COMPATIBILITY_WAL;
-    public static int ENABLE_WRITE_AHEAD_LOGGING;
-    public static int MAX_SQL_CACHE_SIZE;
-    public static int NO_LOCALIZED_COLLATORS;
-    public static int OPEN_READONLY;
-    public static int OPEN_READWRITE;
-    public static int SQLITE_MAX_LIKE_PATTERN_LENGTH;
-}
-
--keep class android.database.sqlite.SQLiteDatabase$CursorFactory {
-
-    public abstract android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery);
-
-
-}
-
--keep class android.database.sqlite.SQLiteDatabase$CustomFunction {
-
-    public abstract void callback(java.lang.String[]);
-
-
-}
-
--keep class android.database.sqlite.SQLiteDatabase$OpenParams {
-
-    public android.database.sqlite.SQLiteDatabase$CursorFactory getCursorFactory();
-    public android.database.DatabaseErrorHandler getErrorHandler();
-    public long getIdleConnectionTimeout();
-    public java.lang.String getJournalMode();
-    public int getLookasideSlotCount();
-    public int getLookasideSlotSize();
-    public int getOpenFlags();
-    public java.lang.String getSynchronousMode();
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder toBuilder();
-
-
-}
-
--keep class android.database.sqlite.SQLiteDatabase$OpenParams$Builder {
-    <init>();
-    <init>(android.database.sqlite.SQLiteDatabase$OpenParams);
-
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder addOpenFlags(int);
-    public android.database.sqlite.SQLiteDatabase$OpenParams build();
-    public boolean isWriteAheadLoggingEnabled();
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder removeOpenFlags(int);
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder setCursorFactory(android.database.sqlite.SQLiteDatabase$CursorFactory);
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder setErrorHandler(android.database.DatabaseErrorHandler);
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder setIdleConnectionTimeout(long);
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder setJournalMode(java.lang.String);
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder setLookasideConfig(int, int);
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder setOpenFlags(int);
-    public android.database.sqlite.SQLiteDatabase$OpenParams$Builder setSynchronousMode(java.lang.String);
-    public void setWriteAheadLoggingEnabled(boolean);
-
-
-}
-
--keep class android.database.sqlite.SQLiteDatabaseConfiguration {
-    <init>(java.lang.String, int);
-    <init>(android.database.sqlite.SQLiteDatabaseConfiguration);
-
-    public boolean isInMemoryDb();
-    public void updateParametersFrom(android.database.sqlite.SQLiteDatabaseConfiguration);
-
-
-    public static java.lang.String MEMORY_DB_PATH;
-    public java.util.ArrayList customFunctions;
-    public boolean foreignKeyConstraintsEnabled;
-    public long idleConnectionTimeoutMs;
-    public java.lang.String journalMode;
-    public java.lang.String label;
-    public java.util.Locale locale;
-    public int lookasideSlotCount;
-    public int lookasideSlotSize;
-    public int maxSqlCacheSize;
-    public int openFlags;
-    public java.lang.String path;
-    public java.lang.String syncMode;
-}
-
--keep class android.database.sqlite.SQLiteDebug {
-
-    public static void dump(android.util.Printer, java.lang.String[]);
-    public static android.database.sqlite.SQLiteDebug$PagerStats getDatabaseInfo();
-    public static boolean shouldLogSlowQuery(long);
-
-
-    public static boolean DEBUG_LOG_SLOW_QUERIES;
-    public static boolean DEBUG_SQL_LOG;
-    public static boolean DEBUG_SQL_STATEMENTS;
-    public static boolean DEBUG_SQL_TIME;
-}
-
--keep class android.database.sqlite.SQLiteDebug$DbStats {
-    <init>(java.lang.String, long, long, int, int, int, int);
-
-
-
-    public java.lang.String cache;
-    public java.lang.String dbName;
-    public long dbSize;
-    public int lookaside;
-    public long pageSize;
-}
-
--keep class android.database.sqlite.SQLiteDebug$PagerStats {
-    <init>();
-
-
-
-    public java.util.ArrayList dbStats;
-    public int largestMemAlloc;
-    public int memoryUsed;
-    public int pageCacheOverflow;
-}
-
--keep class android.database.sqlite.SQLiteProgram {
-
-    public void bindAllArgsAsStrings(java.lang.String[]);
-    public void bindBlob(int, byte[]);
-    public void bindDouble(int, double);
-    public void bindLong(int, long);
-    public void bindNull(int);
-    public void bindString(int, java.lang.String);
-    public void clearBindings();
-    protected int getConnectionFlags();
-    protected android.database.sqlite.SQLiteSession getSession();
-    public int getUniqueId();
-    protected void onAllReferencesReleased();
-    protected void onCorruption();
-
-
-}
-
--keep class android.database.sqlite.SQLiteQuery {
-
-    public java.lang.String toString();
-
-
-}
-
--keep class android.database.sqlite.SQLiteSession {
-    <init>(android.database.sqlite.SQLiteConnectionPool);
-
-    public void beginTransaction(int, android.database.sqlite.SQLiteTransactionListener, int, android.os.CancellationSignal);
-    public void endTransaction(android.os.CancellationSignal);
-    public void execute(java.lang.String, java.lang.Object[], int, android.os.CancellationSignal);
-    public android.os.ParcelFileDescriptor executeForBlobFileDescriptor(java.lang.String, java.lang.Object[], int, android.os.CancellationSignal);
-    public int executeForChangedRowCount(java.lang.String, java.lang.Object[], int, android.os.CancellationSignal);
-    public int executeForCursorWindow(java.lang.String, java.lang.Object[], android.database.CursorWindow, int, int, boolean, int, android.os.CancellationSignal);
-    public long executeForLastInsertedRowId(java.lang.String, java.lang.Object[], int, android.os.CancellationSignal);
-    public long executeForLong(java.lang.String, java.lang.Object[], int, android.os.CancellationSignal);
-    public java.lang.String executeForString(java.lang.String, java.lang.Object[], int, android.os.CancellationSignal);
-    public boolean hasConnection();
-    public boolean hasNestedTransaction();
-    public boolean hasTransaction();
-    public void prepare(java.lang.String, int, android.os.CancellationSignal, android.database.sqlite.SQLiteStatementInfo);
-    public void setTransactionSuccessful();
-    public boolean yieldTransaction(long, boolean, android.os.CancellationSignal);
-
-
-    public static int TRANSACTION_MODE_DEFERRED;
-    public static int TRANSACTION_MODE_EXCLUSIVE;
-    public static int TRANSACTION_MODE_IMMEDIATE;
-}
-
--keep class android.database.sqlite.SQLiteStatement {
-
-    public void execute();
-    public long executeInsert();
-    public int executeUpdateDelete();
-    public android.os.ParcelFileDescriptor simpleQueryForBlobFileDescriptor();
-    public long simpleQueryForLong();
-    public java.lang.String simpleQueryForString();
-    public java.lang.String toString();
-
-
-}
-
--keep class android.database.sqlite.SQLiteStatementInfo {
-    <init>();
-
-
-
-    public java.lang.String[] columnNames;
-    public int numParameters;
-    public boolean readOnly;
-}
-
--keep class android.database.sqlite.SQLiteTransactionListener {
-
-    public abstract void onBegin();
-    public abstract void onCommit();
-    public abstract void onRollback();
-
-
-}
-
--keep class android.graphics.BaseCanvas {
-    <init>();
-
-    protected static void checkRange(int, int, int);
-    public void drawARGB(int, int, int, int);
-    public void drawArc(float, float, float, float, float, float, boolean, android.graphics.Paint);
-    public void drawArc(android.graphics.RectF, float, float, boolean, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, float, float, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Matrix, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Rect, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.RectF, android.graphics.Paint);
-    public void drawBitmap(int[], int, int, float, float, int, int, boolean, android.graphics.Paint);
-    public void drawBitmap(int[], int, int, int, int, int, int, boolean, android.graphics.Paint);
-    public void drawBitmapMesh(android.graphics.Bitmap, int, int, float[], int, int[], int, android.graphics.Paint);
-    public void drawCircle(float, float, float, android.graphics.Paint);
-    public void drawColor(int);
-    public void drawColor(int, android.graphics.PorterDuff$Mode);
-    public void drawLine(float, float, float, float, android.graphics.Paint);
-    public void drawLines(float[], int, int, android.graphics.Paint);
-    public void drawLines(float[], android.graphics.Paint);
-    public void drawOval(float, float, float, float, android.graphics.Paint);
-    public void drawOval(android.graphics.RectF, android.graphics.Paint);
-    public void drawPaint(android.graphics.Paint);
-    public void drawPatch(android.graphics.NinePatch, android.graphics.Rect, android.graphics.Paint);
-    public void drawPatch(android.graphics.NinePatch, android.graphics.RectF, android.graphics.Paint);
-    public void drawPath(android.graphics.Path, android.graphics.Paint);
-    public void drawPoint(float, float, android.graphics.Paint);
-    public void drawPoints(float[], int, int, android.graphics.Paint);
-    public void drawPoints(float[], android.graphics.Paint);
-    public void drawPosText(char[], int, int, float[], android.graphics.Paint);
-    public void drawPosText(java.lang.String, float[], android.graphics.Paint);
-    public void drawRGB(int, int, int);
-    public void drawRect(float, float, float, float, android.graphics.Paint);
-    public void drawRect(android.graphics.Rect, android.graphics.Paint);
-    public void drawRect(android.graphics.RectF, android.graphics.Paint);
-    public void drawRoundRect(float, float, float, float, float, float, android.graphics.Paint);
-    public void drawRoundRect(android.graphics.RectF, float, float, android.graphics.Paint);
-    public void drawText(char[], int, int, float, float, android.graphics.Paint);
-    public void drawText(java.lang.CharSequence, int, int, float, float, android.graphics.Paint);
-    public void drawText(java.lang.String, float, float, android.graphics.Paint);
-    public void drawText(java.lang.String, int, int, float, float, android.graphics.Paint);
-    public void drawTextOnPath(char[], int, int, android.graphics.Path, float, float, android.graphics.Paint);
-    public void drawTextOnPath(java.lang.String, android.graphics.Path, float, float, android.graphics.Paint);
-    public void drawTextRun(char[], int, int, int, int, float, float, boolean, android.graphics.Paint);
-    public void drawTextRun(java.lang.CharSequence, int, int, int, int, float, float, boolean, android.graphics.Paint);
-    public void drawVertices(android.graphics.Canvas$VertexMode, int, float[], int, float[], int, int[], int, short[], int, int, android.graphics.Paint);
-    public boolean isHardwareAccelerated();
-    public boolean isHwBitmapsInSwModeEnabled();
-    protected void onHwBitmapInSwMode();
-    public void setHwBitmapsInSwModeEnabled(boolean);
-    protected void throwIfCannotDraw(android.graphics.Bitmap);
-
-
-    protected int mDensity;
-    protected long mNativeCanvasWrapper;
-    protected int mScreenDensity;
-}
-
--keep class android.graphics.Bitmap {
-
-    public boolean compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream);
-    public android.graphics.Bitmap copy(android.graphics.Bitmap$Config, boolean);
-    public void copyPixelsFromBuffer(java.nio.Buffer);
-    public void copyPixelsToBuffer(java.nio.Buffer);
-    public android.graphics.Bitmap createAshmemBitmap();
-    public android.graphics.Bitmap createAshmemBitmap(android.graphics.Bitmap$Config);
-    public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap);
-    public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap, int, int, int, int);
-    public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap, int, int, int, int, android.graphics.Matrix, boolean);
-    public static android.graphics.Bitmap createBitmap(int, int, android.graphics.Bitmap$Config);
-    public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int, int, android.graphics.Bitmap$Config);
-    public static android.graphics.Bitmap createBitmap(int, int, android.graphics.Bitmap$Config, boolean);
-    public static android.graphics.Bitmap createBitmap(int, int, android.graphics.Bitmap$Config, boolean, android.graphics.ColorSpace);
-    public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int, int, android.graphics.Bitmap$Config, boolean);
-    public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int, int, android.graphics.Bitmap$Config, boolean, android.graphics.ColorSpace);
-    public static android.graphics.Bitmap createBitmap(int[], int, int, int, int, android.graphics.Bitmap$Config);
-    public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int[], int, int, int, int, android.graphics.Bitmap$Config);
-    public static android.graphics.Bitmap createBitmap(int[], int, int, android.graphics.Bitmap$Config);
-    public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int[], int, int, android.graphics.Bitmap$Config);
-    public static android.graphics.Bitmap createBitmap(android.graphics.Picture);
-    public static android.graphics.Bitmap createBitmap(android.graphics.Picture, int, int, android.graphics.Bitmap$Config);
-    public android.graphics.GraphicBuffer createGraphicBufferHandle();
-    public static android.graphics.Bitmap createHardwareBitmap(android.graphics.GraphicBuffer);
-    public static android.graphics.Bitmap createScaledBitmap(android.graphics.Bitmap, int, int, boolean);
-    public int describeContents();
-    public void eraseColor(int);
-    public android.graphics.Bitmap extractAlpha();
-    public android.graphics.Bitmap extractAlpha(android.graphics.Paint, int[]);
-    public int getAllocationByteCount();
-    public int getByteCount();
-    public android.graphics.ColorSpace getColorSpace();
-    public android.graphics.Bitmap$Config getConfig();
-    public int getDensity();
-    public int getGenerationId();
-    public int getHeight();
-    public long getNativeInstance();
-    public byte[] getNinePatchChunk();
-    public android.graphics.NinePatch$InsetStruct getNinePatchInsets();
-    public void getOpticalInsets(android.graphics.Rect);
-    public int getPixel(int, int);
-    public void getPixels(int[], int, int, int, int, int, int);
-    public int getRowBytes();
-    public int getScaledHeight(android.graphics.Canvas);
-    public int getScaledHeight(android.util.DisplayMetrics);
-    public int getScaledHeight(int);
-    public int getScaledWidth(android.graphics.Canvas);
-    public int getScaledWidth(android.util.DisplayMetrics);
-    public int getScaledWidth(int);
-    public int getWidth();
-    public boolean hasAlpha();
-    public boolean hasMipMap();
-    public boolean isMutable();
-    public boolean isPremultiplied();
-    public boolean isRecycled();
-    public void makeImmutable();
-    public void prepareToDraw();
-    public void reconfigure(int, int, android.graphics.Bitmap$Config);
-    public void recycle();
-    public boolean sameAs(android.graphics.Bitmap);
-    public static int scaleFromDensity(int, int, int);
-    public void setConfig(android.graphics.Bitmap$Config);
-    public static void setDefaultDensity(int);
-    public void setDensity(int);
-    public void setHasAlpha(boolean);
-    public void setHasMipMap(boolean);
-    public void setHeight(int);
-    public void setNinePatchChunk(byte[]);
-    public void setPixel(int, int, int);
-    public void setPixels(int[], int, int, int, int, int, int);
-    public void setPremultiplied(boolean);
-    public void setWidth(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int DENSITY_NONE;
-    public int mDensity;
-    public static volatile int sPreloadTracingNumInstantiatedBitmaps;
-    public static volatile long sPreloadTracingTotalBitmapsSize;
-}
-
--keep class android.graphics.Bitmap$CompressFormat {
-
-    public static android.graphics.Bitmap$CompressFormat valueOf(java.lang.String);
-    public static android.graphics.Bitmap$CompressFormat[] values();
-
-    public static android.graphics.Bitmap$CompressFormat JPEG;
-    public static android.graphics.Bitmap$CompressFormat PNG;
-    public static android.graphics.Bitmap$CompressFormat WEBP;
-
-}
-
--keep class android.graphics.Bitmap$Config {
-
-    public static android.graphics.Bitmap$Config valueOf(java.lang.String);
-    public static android.graphics.Bitmap$Config[] values();
-
-    public static android.graphics.Bitmap$Config ALPHA_8;
-    public static android.graphics.Bitmap$Config ARGB_4444;
-    public static android.graphics.Bitmap$Config ARGB_8888;
-    public static android.graphics.Bitmap$Config HARDWARE;
-    public static android.graphics.Bitmap$Config RGBA_F16;
-    public static android.graphics.Bitmap$Config RGB_565;
-
-}
-
--keep class android.graphics.BitmapFactory {
-    <init>();
-
-    public static android.graphics.Bitmap decodeByteArray(byte[], int, int, android.graphics.BitmapFactory$Options);
-    public static android.graphics.Bitmap decodeByteArray(byte[], int, int);
-    public static android.graphics.Bitmap decodeFile(java.lang.String, android.graphics.BitmapFactory$Options);
-    public static android.graphics.Bitmap decodeFile(java.lang.String);
-    public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor, android.graphics.Rect, android.graphics.BitmapFactory$Options);
-    public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor);
-    public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int, android.graphics.BitmapFactory$Options);
-    public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int);
-    public static android.graphics.Bitmap decodeResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, android.graphics.Rect, android.graphics.BitmapFactory$Options);
-    public static android.graphics.Bitmap decodeStream(java.io.InputStream, android.graphics.Rect, android.graphics.BitmapFactory$Options);
-    public static android.graphics.Bitmap decodeStream(java.io.InputStream);
-
-
-}
-
--keep class android.graphics.BitmapFactory$Options {
-    <init>();
-
-    public void requestCancelDecode();
-
-
-    public android.graphics.Bitmap inBitmap;
-    public int inDensity;
-    public boolean inDither;
-    public boolean inInputShareable;
-    public boolean inJustDecodeBounds;
-    public boolean inMutable;
-    public boolean inPreferQualityOverSpeed;
-    public android.graphics.ColorSpace inPreferredColorSpace;
-    public android.graphics.Bitmap$Config inPreferredConfig;
-    public boolean inPremultiplied;
-    public boolean inPurgeable;
-    public int inSampleSize;
-    public boolean inScaled;
-    public int inScreenDensity;
-    public int inTargetDensity;
-    public byte[] inTempStorage;
-    public boolean mCancel;
-    public android.graphics.ColorSpace outColorSpace;
-    public android.graphics.Bitmap$Config outConfig;
-    public int outHeight;
-    public java.lang.String outMimeType;
-    public int outWidth;
-}
-
--keep class android.graphics.Canvas {
-    <init>();
-    <init>(android.graphics.Bitmap);
-    <init>(long);
-
-    public boolean clipOutPath(android.graphics.Path);
-    public boolean clipOutRect(android.graphics.RectF);
-    public boolean clipOutRect(android.graphics.Rect);
-    public boolean clipOutRect(float, float, float, float);
-    public boolean clipOutRect(int, int, int, int);
-    public boolean clipPath(android.graphics.Path, android.graphics.Region$Op);
-    public boolean clipPath(android.graphics.Path);
-    public boolean clipRect(android.graphics.RectF, android.graphics.Region$Op);
-    public boolean clipRect(android.graphics.Rect, android.graphics.Region$Op);
-    public boolean clipRect(android.graphics.RectF);
-    public boolean clipRect(android.graphics.Rect);
-    public boolean clipRect(float, float, float, float, android.graphics.Region$Op);
-    public boolean clipRect(float, float, float, float);
-    public boolean clipRect(int, int, int, int);
-    public boolean clipRectUnion(android.graphics.Rect);
-    public boolean clipRegion(android.graphics.Region, android.graphics.Region$Op);
-    public boolean clipRegion(android.graphics.Region);
-    public void concat(android.graphics.Matrix);
-    public void drawARGB(int, int, int, int);
-    public void drawArc(android.graphics.RectF, float, float, boolean, android.graphics.Paint);
-    public void drawArc(float, float, float, float, float, float, boolean, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, float, float, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.RectF, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Rect, android.graphics.Paint);
-    public void drawBitmap(int[], int, int, float, float, int, int, boolean, android.graphics.Paint);
-    public void drawBitmap(int[], int, int, int, int, int, int, boolean, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Matrix, android.graphics.Paint);
-    public void drawBitmapMesh(android.graphics.Bitmap, int, int, float[], int, int[], int, android.graphics.Paint);
-    public void drawCircle(float, float, float, android.graphics.Paint);
-    public void drawColor(int);
-    public void drawColor(int, android.graphics.PorterDuff$Mode);
-    public void drawLine(float, float, float, float, android.graphics.Paint);
-    public void drawLines(float[], int, int, android.graphics.Paint);
-    public void drawLines(float[], android.graphics.Paint);
-    public void drawOval(android.graphics.RectF, android.graphics.Paint);
-    public void drawOval(float, float, float, float, android.graphics.Paint);
-    public void drawPaint(android.graphics.Paint);
-    public void drawPatch(android.graphics.NinePatch, android.graphics.Rect, android.graphics.Paint);
-    public void drawPatch(android.graphics.NinePatch, android.graphics.RectF, android.graphics.Paint);
-    public void drawPath(android.graphics.Path, android.graphics.Paint);
-    public void drawPicture(android.graphics.Picture);
-    public void drawPicture(android.graphics.Picture, android.graphics.RectF);
-    public void drawPicture(android.graphics.Picture, android.graphics.Rect);
-    public void drawPoint(float, float, android.graphics.Paint);
-    public void drawPoints(float[], int, int, android.graphics.Paint);
-    public void drawPoints(float[], android.graphics.Paint);
-    public void drawPosText(char[], int, int, float[], android.graphics.Paint);
-    public void drawPosText(java.lang.String, float[], android.graphics.Paint);
-    public void drawRGB(int, int, int);
-    public void drawRect(android.graphics.RectF, android.graphics.Paint);
-    public void drawRect(android.graphics.Rect, android.graphics.Paint);
-    public void drawRect(float, float, float, float, android.graphics.Paint);
-    public void drawRoundRect(android.graphics.RectF, float, float, android.graphics.Paint);
-    public void drawRoundRect(float, float, float, float, float, float, android.graphics.Paint);
-    public void drawText(char[], int, int, float, float, android.graphics.Paint);
-    public void drawText(java.lang.String, float, float, android.graphics.Paint);
-    public void drawText(java.lang.String, int, int, float, float, android.graphics.Paint);
-    public void drawText(java.lang.CharSequence, int, int, float, float, android.graphics.Paint);
-    public void drawTextOnPath(char[], int, int, android.graphics.Path, float, float, android.graphics.Paint);
-    public void drawTextOnPath(java.lang.String, android.graphics.Path, float, float, android.graphics.Paint);
-    public void drawTextRun(char[], int, int, int, int, float, float, boolean, android.graphics.Paint);
-    public void drawTextRun(java.lang.CharSequence, int, int, int, int, float, float, boolean, android.graphics.Paint);
-    public void drawVertices(android.graphics.Canvas$VertexMode, int, float[], int, float[], int, int[], int, short[], int, int, android.graphics.Paint);
-    public static void freeCaches();
-    public static void freeTextLayoutCaches();
-    public boolean getClipBounds(android.graphics.Rect);
-    public android.graphics.Rect getClipBounds();
-    public int getDensity();
-    public android.graphics.DrawFilter getDrawFilter();
-    protected javax.microedition.khronos.opengles.GL getGL();
-    public int getHeight();
-    public void getMatrix(android.graphics.Matrix);
-    public android.graphics.Matrix getMatrix();
-    public int getMaximumBitmapHeight();
-    public int getMaximumBitmapWidth();
-    public long getNativeCanvasWrapper();
-    public int getSaveCount();
-    public int getWidth();
-    public void insertInorderBarrier();
-    public void insertReorderBarrier();
-    public boolean isHardwareAccelerated();
-    public boolean isOpaque();
-    public boolean isRecordingFor(java.lang.Object);
-    public boolean quickReject(android.graphics.RectF, android.graphics.Canvas$EdgeType);
-    public boolean quickReject(android.graphics.Path, android.graphics.Canvas$EdgeType);
-    public boolean quickReject(float, float, float, float, android.graphics.Canvas$EdgeType);
-    public void release();
-    public void restore();
-    public void restoreToCount(int);
-    public void rotate(float);
-    public void rotate(float, float, float);
-    public int save();
-    public int save(int);
-    public int saveLayer(android.graphics.RectF, android.graphics.Paint, int);
-    public int saveLayer(android.graphics.RectF, android.graphics.Paint);
-    public int saveLayer(float, float, float, float, android.graphics.Paint, int);
-    public int saveLayer(float, float, float, float, android.graphics.Paint);
-    public int saveLayerAlpha(android.graphics.RectF, int, int);
-    public int saveLayerAlpha(android.graphics.RectF, int);
-    public int saveLayerAlpha(float, float, float, float, int, int);
-    public int saveLayerAlpha(float, float, float, float, int);
-    public int saveUnclippedLayer(int, int, int, int);
-    public void scale(float, float);
-    public void scale(float, float, float, float);
-    public void setBitmap(android.graphics.Bitmap);
-    public static void setCompatibilityVersion(int);
-    public void setDensity(int);
-    public void setDrawFilter(android.graphics.DrawFilter);
-    public void setMatrix(android.graphics.Matrix);
-    public void setScreenDensity(int);
-    public void skew(float, float);
-    public void translate(float, float);
-
-
-    public static int ALL_SAVE_FLAG;
-    public static int CLIP_SAVE_FLAG;
-    public static int CLIP_TO_LAYER_SAVE_FLAG;
-    public static int FULL_COLOR_LAYER_SAVE_FLAG;
-    public static int HAS_ALPHA_LAYER_SAVE_FLAG;
-    public static int MATRIX_SAVE_FLAG;
-    public static boolean sCompatibilityRestore;
-    public static boolean sCompatibilitySetBitmap;
-}
-
--keep class android.graphics.Canvas$EdgeType {
-
-    public static android.graphics.Canvas$EdgeType valueOf(java.lang.String);
-    public static android.graphics.Canvas$EdgeType[] values();
-
-    public static android.graphics.Canvas$EdgeType AA;
-    public static android.graphics.Canvas$EdgeType BW;
-
-    public int nativeInt;
-}
-
--keep class android.graphics.Canvas$VertexMode {
-
-    public static android.graphics.Canvas$VertexMode valueOf(java.lang.String);
-    public static android.graphics.Canvas$VertexMode[] values();
-
-    public static android.graphics.Canvas$VertexMode TRIANGLES;
-    public static android.graphics.Canvas$VertexMode TRIANGLE_FAN;
-    public static android.graphics.Canvas$VertexMode TRIANGLE_STRIP;
-
-    public int nativeInt;
-}
-
--keep class android.graphics.CanvasProperty {
-
-    public static android.graphics.CanvasProperty createFloat(float);
-    public static android.graphics.CanvasProperty createPaint(android.graphics.Paint);
-    public long getNativeContainer();
-
-
-}
-
--keep class android.graphics.ColorFilter {
-    <init>();
-
-    public long getNativeInstance();
-
-
-}
-
--keep class android.graphics.ColorSpace {
-
-    public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[]);
-    public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[], android.graphics.ColorSpace$Adaptation);
-    public static android.graphics.ColorSpace$Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace);
-    public static android.graphics.ColorSpace$Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace, android.graphics.ColorSpace$RenderIntent);
-    public static android.graphics.ColorSpace$Connector connect(android.graphics.ColorSpace);
-    public static android.graphics.ColorSpace$Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace$RenderIntent);
-    public static android.graphics.ColorSpace$Renderer createRenderer();
-    public boolean equals(java.lang.Object);
-    public float[] fromXyz(float, float, float);
-    public abstract float[] fromXyz(float[]);
-    public static android.graphics.ColorSpace get(android.graphics.ColorSpace$Named);
-    public int getComponentCount();
-    public int getId();
-    public abstract float getMaxValue(int);
-    public abstract float getMinValue(int);
-    public android.graphics.ColorSpace$Model getModel();
-    public java.lang.String getName();
-    public int hashCode();
-    public boolean isSrgb();
-    public abstract boolean isWideGamut();
-    public static android.graphics.ColorSpace match(float[], android.graphics.ColorSpace$Rgb$TransferParameters);
-    public java.lang.String toString();
-    public float[] toXyz(float, float, float);
-    public abstract float[] toXyz(float[]);
-
-
-    public static float[] ILLUMINANT_A;
-    public static float[] ILLUMINANT_B;
-    public static float[] ILLUMINANT_C;
-    public static float[] ILLUMINANT_D50;
-    public static float[] ILLUMINANT_D55;
-    public static float[] ILLUMINANT_D60;
-    public static float[] ILLUMINANT_D65;
-    public static float[] ILLUMINANT_D75;
-    public static float[] ILLUMINANT_E;
-    public static int MAX_ID;
-    public static int MIN_ID;
-}
-
--keep class android.graphics.ColorSpace$Adaptation {
-
-    public static android.graphics.ColorSpace$Adaptation valueOf(java.lang.String);
-    public static android.graphics.ColorSpace$Adaptation[] values();
-
-    public static android.graphics.ColorSpace$Adaptation BRADFORD;
-    public static android.graphics.ColorSpace$Adaptation CIECAT02;
-    public static android.graphics.ColorSpace$Adaptation VON_KRIES;
-
-}
-
--keep class android.graphics.ColorSpace$Connector {
-
-    public android.graphics.ColorSpace getDestination();
-    public android.graphics.ColorSpace$RenderIntent getRenderIntent();
-    public android.graphics.ColorSpace getSource();
-    public float[] transform(float, float, float);
-    public float[] transform(float[]);
-
-
-}
-
--keep class android.graphics.ColorSpace$Model {
-
-    public int getComponentCount();
-    public static android.graphics.ColorSpace$Model valueOf(java.lang.String);
-    public static android.graphics.ColorSpace$Model[] values();
-
-    public static android.graphics.ColorSpace$Model CMYK;
-    public static android.graphics.ColorSpace$Model LAB;
-    public static android.graphics.ColorSpace$Model RGB;
-    public static android.graphics.ColorSpace$Model XYZ;
-
-}
-
--keep class android.graphics.ColorSpace$Named {
-
-    public static android.graphics.ColorSpace$Named valueOf(java.lang.String);
-    public static android.graphics.ColorSpace$Named[] values();
-
-    public static android.graphics.ColorSpace$Named ACES;
-    public static android.graphics.ColorSpace$Named ACESCG;
-    public static android.graphics.ColorSpace$Named ADOBE_RGB;
-    public static android.graphics.ColorSpace$Named BT2020;
-    public static android.graphics.ColorSpace$Named BT709;
-    public static android.graphics.ColorSpace$Named CIE_LAB;
-    public static android.graphics.ColorSpace$Named CIE_XYZ;
-    public static android.graphics.ColorSpace$Named DCI_P3;
-    public static android.graphics.ColorSpace$Named DISPLAY_P3;
-    public static android.graphics.ColorSpace$Named EXTENDED_SRGB;
-    public static android.graphics.ColorSpace$Named LINEAR_EXTENDED_SRGB;
-    public static android.graphics.ColorSpace$Named LINEAR_SRGB;
-    public static android.graphics.ColorSpace$Named NTSC_1953;
-    public static android.graphics.ColorSpace$Named PRO_PHOTO_RGB;
-    public static android.graphics.ColorSpace$Named SMPTE_C;
-    public static android.graphics.ColorSpace$Named SRGB;
-
-}
-
--keep class android.graphics.ColorSpace$RenderIntent {
-
-    public static android.graphics.ColorSpace$RenderIntent valueOf(java.lang.String);
-    public static android.graphics.ColorSpace$RenderIntent[] values();
-
-    public static android.graphics.ColorSpace$RenderIntent ABSOLUTE;
-    public static android.graphics.ColorSpace$RenderIntent PERCEPTUAL;
-    public static android.graphics.ColorSpace$RenderIntent RELATIVE;
-    public static android.graphics.ColorSpace$RenderIntent SATURATION;
-
-}
-
--keep class android.graphics.ColorSpace$Renderer {
-
-    public android.graphics.ColorSpace$Renderer add(android.graphics.ColorSpace, int);
-    public android.graphics.ColorSpace$Renderer add(android.graphics.ColorSpace, float, float, float, int);
-    public android.graphics.ColorSpace$Renderer clip(boolean);
-    public android.graphics.Bitmap render();
-    public android.graphics.ColorSpace$Renderer showWhitePoint(boolean);
-    public android.graphics.ColorSpace$Renderer size(int);
-    public android.graphics.ColorSpace$Renderer uniformChromaticityScale(boolean);
-
-
-}
-
--keep class android.graphics.ColorSpace$Rgb {
-    <init>(java.lang.String, float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator);
-    <init>(java.lang.String, float[], float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator, float, float);
-    <init>(java.lang.String, float[], android.graphics.ColorSpace$Rgb$TransferParameters);
-    <init>(java.lang.String, float[], float[], android.graphics.ColorSpace$Rgb$TransferParameters);
-    <init>(java.lang.String, float[], double);
-    <init>(java.lang.String, float[], float[], double);
-
-    public boolean equals(java.lang.Object);
-    public float[] fromLinear(float, float, float);
-    public float[] fromLinear(float[]);
-    public float[] fromXyz(float[]);
-    public java.util.function.DoubleUnaryOperator getEotf();
-    public float[] getInverseTransform(float[]);
-    public float[] getInverseTransform();
-    public float getMaxValue(int);
-    public float getMinValue(int);
-    public java.util.function.DoubleUnaryOperator getOetf();
-    public float[] getPrimaries(float[]);
-    public float[] getPrimaries();
-    public android.graphics.ColorSpace$Rgb$TransferParameters getTransferParameters();
-    public float[] getTransform(float[]);
-    public float[] getTransform();
-    public float[] getWhitePoint(float[]);
-    public float[] getWhitePoint();
-    public int hashCode();
-    public boolean isSrgb();
-    public boolean isWideGamut();
-    public float[] toLinear(float, float, float);
-    public float[] toLinear(float[]);
-    public float[] toXyz(float[]);
-
-
-}
-
--keep class android.graphics.ColorSpace$Rgb$TransferParameters {
-    <init>(double, double, double, double, double);
-    <init>(double, double, double, double, double, double, double);
-
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-
-
-    public double a;
-    public double b;
-    public double c;
-    public double d;
-    public double e;
-    public double f;
-    public double g;
-}
-
--keep class android.graphics.DrawFilter {
-    <init>();
-
-    protected void finalize();
-
-
-    public long mNativeInt;
-}
-
--keep class android.graphics.FontFamily {
-    <init>();
-    <init>(java.lang.String[], int);
-
-    public void abortCreation();
-    public boolean addFont(java.lang.String, int, android.graphics.fonts.FontVariationAxis[], int, int);
-    public boolean addFontFromAssetManager(android.content.res.AssetManager, java.lang.String, int, boolean, int, int, int, android.graphics.fonts.FontVariationAxis[]);
-    public boolean addFontFromBuffer(java.nio.ByteBuffer, int, android.graphics.fonts.FontVariationAxis[], int, int);
-    public boolean freeze();
-
-
-    public long mNativePtr;
-}
-
--keep class android.graphics.GraphicBuffer {
-
-    public static android.graphics.GraphicBuffer create(int, int, int, int);
-    public static android.graphics.GraphicBuffer createFromExisting(int, int, int, int, long);
-    public int describeContents();
-    public void destroy();
-    protected void finalize();
-    public int getFormat();
-    public int getHeight();
-    public int getUsage();
-    public int getWidth();
-    public boolean isDestroyed();
-    public android.graphics.Canvas lockCanvas();
-    public android.graphics.Canvas lockCanvas(android.graphics.Rect);
-    public void unlockCanvasAndPost(android.graphics.Canvas);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int USAGE_HW_2D;
-    public static int USAGE_HW_COMPOSER;
-    public static int USAGE_HW_MASK;
-    public static int USAGE_HW_RENDER;
-    public static int USAGE_HW_TEXTURE;
-    public static int USAGE_HW_VIDEO_ENCODER;
-    public static int USAGE_PROTECTED;
-    public static int USAGE_SOFTWARE_MASK;
-    public static int USAGE_SW_READ_MASK;
-    public static int USAGE_SW_READ_NEVER;
-    public static int USAGE_SW_READ_OFTEN;
-    public static int USAGE_SW_READ_RARELY;
-    public static int USAGE_SW_WRITE_MASK;
-    public static int USAGE_SW_WRITE_NEVER;
-    public static int USAGE_SW_WRITE_OFTEN;
-    public static int USAGE_SW_WRITE_RARELY;
-}
-
--keep class android.graphics.Insets {
-
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public static android.graphics.Insets of(int, int, int, int);
-    public static android.graphics.Insets of(android.graphics.Rect);
-    public java.lang.String toString();
-
-
-    public static android.graphics.Insets NONE;
-    public int bottom;
-    public int left;
-    public int right;
-    public int top;
-}
-
--keep class android.graphics.MaskFilter {
-    <init>();
-
-    protected void finalize();
-
-
-}
-
--keep class android.graphics.Matrix {
-    <init>();
-    <init>(android.graphics.Matrix);
-
-    public boolean equals(java.lang.Object);
-    public void getValues(float[]);
-    public int hashCode();
-    public boolean invert(android.graphics.Matrix);
-    public boolean isAffine();
-    public boolean isIdentity();
-    public void mapPoints(float[], int, float[], int, int);
-    public void mapPoints(float[], float[]);
-    public void mapPoints(float[]);
-    public float mapRadius(float);
-    public boolean mapRect(android.graphics.RectF, android.graphics.RectF);
-    public boolean mapRect(android.graphics.RectF);
-    public void mapVectors(float[], int, float[], int, int);
-    public void mapVectors(float[], float[]);
-    public void mapVectors(float[]);
-    public long ni();
-    public boolean postConcat(android.graphics.Matrix);
-    public boolean postRotate(float, float, float);
-    public boolean postRotate(float);
-    public boolean postScale(float, float, float, float);
-    public boolean postScale(float, float);
-    public boolean postSkew(float, float, float, float);
-    public boolean postSkew(float, float);
-    public boolean postTranslate(float, float);
-    public boolean preConcat(android.graphics.Matrix);
-    public boolean preRotate(float, float, float);
-    public boolean preRotate(float);
-    public boolean preScale(float, float, float, float);
-    public boolean preScale(float, float);
-    public boolean preSkew(float, float, float, float);
-    public boolean preSkew(float, float);
-    public boolean preTranslate(float, float);
-    public void printShortString(java.io.PrintWriter);
-    public boolean rectStaysRect();
-    public void reset();
-    public void set(android.graphics.Matrix);
-    public boolean setConcat(android.graphics.Matrix, android.graphics.Matrix);
-    public boolean setPolyToPoly(float[], int, float[], int, int);
-    public boolean setRectToRect(android.graphics.RectF, android.graphics.RectF, android.graphics.Matrix$ScaleToFit);
-    public void setRotate(float, float, float);
-    public void setRotate(float);
-    public void setScale(float, float, float, float);
-    public void setScale(float, float);
-    public void setSinCos(float, float, float, float);
-    public void setSinCos(float, float);
-    public void setSkew(float, float, float, float);
-    public void setSkew(float, float);
-    public void setTranslate(float, float);
-    public void setValues(float[]);
-    public java.lang.String toShortString();
-    public void toShortString(java.lang.StringBuilder);
-    public java.lang.String toString();
-
-
-    public static android.graphics.Matrix IDENTITY_MATRIX;
-    public static int MPERSP_0;
-    public static int MPERSP_1;
-    public static int MPERSP_2;
-    public static int MSCALE_X;
-    public static int MSCALE_Y;
-    public static int MSKEW_X;
-    public static int MSKEW_Y;
-    public static int MTRANS_X;
-    public static int MTRANS_Y;
-    public long native_instance;
-}
-
--keep class android.graphics.Matrix$ScaleToFit {
-
-    public static android.graphics.Matrix$ScaleToFit valueOf(java.lang.String);
-    public static android.graphics.Matrix$ScaleToFit[] values();
-
-    public static android.graphics.Matrix$ScaleToFit CENTER;
-    public static android.graphics.Matrix$ScaleToFit END;
-    public static android.graphics.Matrix$ScaleToFit FILL;
-    public static android.graphics.Matrix$ScaleToFit START;
-
-}
-
--keep class android.graphics.Movie {
-
-    public static android.graphics.Movie decodeByteArray(byte[], int, int);
-    public static android.graphics.Movie decodeFile(java.lang.String);
-    public static android.graphics.Movie decodeStream(java.io.InputStream);
-    public void draw(android.graphics.Canvas, float, float, android.graphics.Paint);
-    public void draw(android.graphics.Canvas, float, float);
-    public int duration();
-    protected void finalize();
-    public int height();
-    public boolean isOpaque();
-    public boolean setTime(int);
-    public int width();
-
-
-}
-
--keep class android.graphics.NinePatch {
-    <init>(android.graphics.Bitmap, byte[]);
-    <init>(android.graphics.Bitmap, byte[], java.lang.String);
-    <init>(android.graphics.NinePatch);
-
-    public void draw(android.graphics.Canvas, android.graphics.RectF);
-    public void draw(android.graphics.Canvas, android.graphics.Rect);
-    public void draw(android.graphics.Canvas, android.graphics.Rect, android.graphics.Paint);
-    protected void finalize();
-    public android.graphics.Bitmap getBitmap();
-    public int getDensity();
-    public int getHeight();
-    public java.lang.String getName();
-    public android.graphics.Paint getPaint();
-    public android.graphics.Region getTransparentRegion(android.graphics.Rect);
-    public int getWidth();
-    public boolean hasAlpha();
-    public static boolean isNinePatchChunk(byte[]);
-    public void setPaint(android.graphics.Paint);
-
-
-    public long mNativeChunk;
-}
-
--keep class android.graphics.NinePatch$InsetStruct {
-
-    public static android.graphics.Rect scaleInsets(int, int, int, int, float);
-
-
-    public android.graphics.Rect opticalRect;
-    public float outlineAlpha;
-    public float outlineRadius;
-    public android.graphics.Rect outlineRect;
-}
-
--keep class android.graphics.Outline {
-    <init>();
-    <init>(android.graphics.Outline);
-
-    public boolean canClip();
-    public float getAlpha();
-    public float getRadius();
-    public boolean getRect(android.graphics.Rect);
-    public boolean isEmpty();
-    public void offset(int, int);
-    public void set(android.graphics.Outline);
-    public void setAlpha(float);
-    public void setConvexPath(android.graphics.Path);
-    public void setEmpty();
-    public void setOval(int, int, int, int);
-    public void setOval(android.graphics.Rect);
-    public void setRect(int, int, int, int);
-    public void setRect(android.graphics.Rect);
-    public void setRoundRect(int, int, int, int, float);
-    public void setRoundRect(android.graphics.Rect, float);
-
-
-    public static int MODE_CONVEX_PATH;
-    public static int MODE_EMPTY;
-    public static int MODE_ROUND_RECT;
-    public float mAlpha;
-    public int mMode;
-    public android.graphics.Path mPath;
-    public float mRadius;
-    public android.graphics.Rect mRect;
-}
-
--keep class android.graphics.Paint {
-    <init>();
-    <init>(int);
-    <init>(android.graphics.Paint);
-
-    public float ascent();
-    public int breakText(char[], int, int, float, float[]);
-    public int breakText(java.lang.CharSequence, int, int, boolean, float, float[]);
-    public int breakText(java.lang.String, boolean, float, float[]);
-    public void clearShadowLayer();
-    public float descent();
-    public boolean equalsForTextMeasurement(android.graphics.Paint);
-    public int getAlpha();
-    public int getBidiFlags();
-    public int getColor();
-    public android.graphics.ColorFilter getColorFilter();
-    public boolean getFillPath(android.graphics.Path, android.graphics.Path);
-    public int getFlags();
-    public java.lang.String getFontFeatureSettings();
-    public float getFontMetrics(android.graphics.Paint$FontMetrics);
-    public android.graphics.Paint$FontMetrics getFontMetrics();
-    public int getFontMetricsInt(android.graphics.Paint$FontMetricsInt);
-    public android.graphics.Paint$FontMetricsInt getFontMetricsInt();
-    public float getFontSpacing();
-    public java.lang.String getFontVariationSettings();
-    public int getHinting();
-    public int getHyphenEdit();
-    public float getLetterSpacing();
-    public android.graphics.MaskFilter getMaskFilter();
-    public long getNativeInstance();
-    public int getOffsetForAdvance(char[], int, int, int, int, boolean, float);
-    public int getOffsetForAdvance(java.lang.CharSequence, int, int, int, int, boolean, float);
-    public android.graphics.PathEffect getPathEffect();
-    public android.graphics.Rasterizer getRasterizer();
-    public float getRunAdvance(char[], int, int, int, int, boolean, int);
-    public float getRunAdvance(java.lang.CharSequence, int, int, int, int, boolean, int);
-    public android.graphics.Shader getShader();
-    public float getStrikeThruPosition();
-    public float getStrikeThruThickness();
-    public android.graphics.Paint$Cap getStrokeCap();
-    public android.graphics.Paint$Join getStrokeJoin();
-    public float getStrokeMiter();
-    public float getStrokeWidth();
-    public android.graphics.Paint$Style getStyle();
-    public android.graphics.Paint$Align getTextAlign();
-    public void getTextBounds(java.lang.String, int, int, android.graphics.Rect);
-    public void getTextBounds(java.lang.CharSequence, int, int, android.graphics.Rect);
-    public void getTextBounds(char[], int, int, android.graphics.Rect);
-    public java.util.Locale getTextLocale();
-    public android.os.LocaleList getTextLocales();
-    public void getTextPath(char[], int, int, float, float, android.graphics.Path);
-    public void getTextPath(java.lang.String, int, int, float, float, android.graphics.Path);
-    public float getTextRunAdvances(char[], int, int, int, int, boolean, float[], int);
-    public float getTextRunAdvances(java.lang.CharSequence, int, int, int, int, boolean, float[], int);
-    public float getTextRunAdvances(java.lang.String, int, int, int, int, boolean, float[], int);
-    public int getTextRunCursor(char[], int, int, int, int, int);
-    public int getTextRunCursor(java.lang.CharSequence, int, int, int, int, int);
-    public int getTextRunCursor(java.lang.String, int, int, int, int, int);
-    public float getTextScaleX();
-    public float getTextSize();
-    public float getTextSkewX();
-    public int getTextWidths(char[], int, int, float[]);
-    public int getTextWidths(java.lang.CharSequence, int, int, float[]);
-    public int getTextWidths(java.lang.String, int, int, float[]);
-    public int getTextWidths(java.lang.String, float[]);
-    public android.graphics.Typeface getTypeface();
-    public float getUnderlinePosition();
-    public float getUnderlineThickness();
-    public float getWordSpacing();
-    public android.graphics.Xfermode getXfermode();
-    public boolean hasEqualAttributes(android.graphics.Paint);
-    public boolean hasGlyph(java.lang.String);
-    public boolean hasShadowLayer();
-    public boolean isAntiAlias();
-    public boolean isDither();
-    public boolean isElegantTextHeight();
-    public boolean isFakeBoldText();
-    public boolean isFilterBitmap();
-    public boolean isLinearText();
-    public boolean isStrikeThruText();
-    public boolean isSubpixelText();
-    public boolean isUnderlineText();
-    public float measureText(char[], int, int);
-    public float measureText(java.lang.String, int, int);
-    public float measureText(java.lang.String);
-    public float measureText(java.lang.CharSequence, int, int);
-    public void reset();
-    public void set(android.graphics.Paint);
-    public void setARGB(int, int, int, int);
-    public void setAlpha(int);
-    public void setAntiAlias(boolean);
-    public void setBidiFlags(int);
-    public void setColor(int);
-    public android.graphics.ColorFilter setColorFilter(android.graphics.ColorFilter);
-    public void setCompatibilityScaling(float);
-    public void setDither(boolean);
-    public void setElegantTextHeight(boolean);
-    public void setFakeBoldText(boolean);
-    public void setFilterBitmap(boolean);
-    public void setFlags(int);
-    public void setFontFeatureSettings(java.lang.String);
-    public boolean setFontVariationSettings(java.lang.String);
-    public void setHinting(int);
-    public void setHyphenEdit(int);
-    public void setLetterSpacing(float);
-    public void setLinearText(boolean);
-    public android.graphics.MaskFilter setMaskFilter(android.graphics.MaskFilter);
-    public android.graphics.PathEffect setPathEffect(android.graphics.PathEffect);
-    public android.graphics.Rasterizer setRasterizer(android.graphics.Rasterizer);
-    public android.graphics.Shader setShader(android.graphics.Shader);
-    public void setShadowLayer(float, float, float, int);
-    public void setStrikeThruText(boolean);
-    public void setStrokeCap(android.graphics.Paint$Cap);
-    public void setStrokeJoin(android.graphics.Paint$Join);
-    public void setStrokeMiter(float);
-    public void setStrokeWidth(float);
-    public void setStyle(android.graphics.Paint$Style);
-    public void setSubpixelText(boolean);
-    public void setTextAlign(android.graphics.Paint$Align);
-    public void setTextLocale(java.util.Locale);
-    public void setTextLocales(android.os.LocaleList);
-    public void setTextScaleX(float);
-    public void setTextSize(float);
-    public void setTextSkewX(float);
-    public android.graphics.Typeface setTypeface(android.graphics.Typeface);
-    public void setUnderlineText(boolean);
-    public void setWordSpacing(float);
-    public android.graphics.Xfermode setXfermode(android.graphics.Xfermode);
-
-
-    public static int ANTI_ALIAS_FLAG;
-    public static int AUTO_HINTING_TEXT_FLAG;
-    public static int BIDI_DEFAULT_LTR;
-    public static int BIDI_DEFAULT_RTL;
-    public static int BIDI_FORCE_LTR;
-    public static int BIDI_FORCE_RTL;
-    public static int BIDI_LTR;
-    public static int BIDI_RTL;
-    public static int CURSOR_AFTER;
-    public static int CURSOR_AT;
-    public static int CURSOR_AT_OR_AFTER;
-    public static int CURSOR_AT_OR_BEFORE;
-    public static int CURSOR_BEFORE;
-    public static int DEV_KERN_TEXT_FLAG;
-    public static int DIRECTION_LTR;
-    public static int DIRECTION_RTL;
-    public static int DITHER_FLAG;
-    public static int EMBEDDED_BITMAP_TEXT_FLAG;
-    public static int FAKE_BOLD_TEXT_FLAG;
-    public static int FILTER_BITMAP_FLAG;
-    public static int HINTING_OFF;
-    public static int HINTING_ON;
-    public static int HYPHENEDIT_MASK_END_OF_LINE;
-    public static int HYPHENEDIT_MASK_START_OF_LINE;
-    public static int LCD_RENDER_TEXT_FLAG;
-    public static int LINEAR_TEXT_FLAG;
-    public static int STRIKE_THRU_TEXT_FLAG;
-    public static int SUBPIXEL_TEXT_FLAG;
-    public static int UNDERLINE_TEXT_FLAG;
-    public static int VERTICAL_TEXT_FLAG;
-    public int mBidiFlags;
-}
-
--keep class android.graphics.Paint$Align {
-
-    public static android.graphics.Paint$Align valueOf(java.lang.String);
-    public static android.graphics.Paint$Align[] values();
-
-    public static android.graphics.Paint$Align CENTER;
-    public static android.graphics.Paint$Align LEFT;
-    public static android.graphics.Paint$Align RIGHT;
-
-}
-
--keep class android.graphics.Paint$Cap {
-
-    public static android.graphics.Paint$Cap valueOf(java.lang.String);
-    public static android.graphics.Paint$Cap[] values();
-
-    public static android.graphics.Paint$Cap BUTT;
-    public static android.graphics.Paint$Cap ROUND;
-    public static android.graphics.Paint$Cap SQUARE;
-
-}
-
--keep class android.graphics.Paint$FontMetrics {
-    <init>();
-
-
-
-    public float ascent;
-    public float bottom;
-    public float descent;
-    public float leading;
-    public float top;
-}
-
--keep class android.graphics.Paint$FontMetricsInt {
-    <init>();
-
-    public java.lang.String toString();
-
-
-    public int ascent;
-    public int bottom;
-    public int descent;
-    public int leading;
-    public int top;
-}
-
--keep class android.graphics.Paint$Join {
-
-    public static android.graphics.Paint$Join valueOf(java.lang.String);
-    public static android.graphics.Paint$Join[] values();
-
-    public static android.graphics.Paint$Join BEVEL;
-    public static android.graphics.Paint$Join MITER;
-    public static android.graphics.Paint$Join ROUND;
-
-}
-
--keep class android.graphics.Paint$Style {
-
-    public static android.graphics.Paint$Style valueOf(java.lang.String);
-    public static android.graphics.Paint$Style[] values();
-
-    public static android.graphics.Paint$Style FILL;
-    public static android.graphics.Paint$Style FILL_AND_STROKE;
-    public static android.graphics.Paint$Style STROKE;
-
-}
-
--keep class android.graphics.Path {
-    <init>();
-    <init>(android.graphics.Path);
-
-    public void addArc(android.graphics.RectF, float, float);
-    public void addArc(float, float, float, float, float, float);
-    public void addCircle(float, float, float, android.graphics.Path$Direction);
-    public void addOval(android.graphics.RectF, android.graphics.Path$Direction);
-    public void addOval(float, float, float, float, android.graphics.Path$Direction);
-    public void addPath(android.graphics.Path, float, float);
-    public void addPath(android.graphics.Path);
-    public void addPath(android.graphics.Path, android.graphics.Matrix);
-    public void addRect(android.graphics.RectF, android.graphics.Path$Direction);
-    public void addRect(float, float, float, float, android.graphics.Path$Direction);
-    public void addRoundRect(android.graphics.RectF, float, float, android.graphics.Path$Direction);
-    public void addRoundRect(float, float, float, float, float, float, android.graphics.Path$Direction);
-    public void addRoundRect(android.graphics.RectF, float[], android.graphics.Path$Direction);
-    public void addRoundRect(float, float, float, float, float[], android.graphics.Path$Direction);
-    public float[] approximate(float);
-    public void arcTo(android.graphics.RectF, float, float, boolean);
-    public void arcTo(android.graphics.RectF, float, float);
-    public void arcTo(float, float, float, float, float, float, boolean);
-    public void close();
-    public void computeBounds(android.graphics.RectF, boolean);
-    public void cubicTo(float, float, float, float, float, float);
-    public android.graphics.Path$FillType getFillType();
-    public void incReserve(int);
-    public boolean isConvex();
-    public boolean isEmpty();
-    public boolean isInverseFillType();
-    public boolean isRect(android.graphics.RectF);
-    public void lineTo(float, float);
-    public void moveTo(float, float);
-    public void offset(float, float, android.graphics.Path);
-    public void offset(float, float);
-    public boolean op(android.graphics.Path, android.graphics.Path$Op);
-    public boolean op(android.graphics.Path, android.graphics.Path, android.graphics.Path$Op);
-    public void quadTo(float, float, float, float);
-    public void rCubicTo(float, float, float, float, float, float);
-    public void rLineTo(float, float);
-    public void rMoveTo(float, float);
-    public void rQuadTo(float, float, float, float);
-    public long readOnlyNI();
-    public void reset();
-    public void rewind();
-    public void set(android.graphics.Path);
-    public void setFillType(android.graphics.Path$FillType);
-    public void setLastPoint(float, float);
-    public void toggleInverseFillType();
-    public void transform(android.graphics.Matrix, android.graphics.Path);
-    public void transform(android.graphics.Matrix);
-
-
-    public boolean isSimplePath;
-    public long mNativePath;
-    public android.graphics.Region rects;
-}
-
--keep class android.graphics.Path$Direction {
-
-    public static android.graphics.Path$Direction valueOf(java.lang.String);
-    public static android.graphics.Path$Direction[] values();
-
-    public static android.graphics.Path$Direction CCW;
-    public static android.graphics.Path$Direction CW;
-
-}
-
--keep class android.graphics.Path$FillType {
-
-    public static android.graphics.Path$FillType valueOf(java.lang.String);
-    public static android.graphics.Path$FillType[] values();
-
-    public static android.graphics.Path$FillType EVEN_ODD;
-    public static android.graphics.Path$FillType INVERSE_EVEN_ODD;
-    public static android.graphics.Path$FillType INVERSE_WINDING;
-    public static android.graphics.Path$FillType WINDING;
-
-}
-
--keep class android.graphics.Path$Op {
-
-    public static android.graphics.Path$Op valueOf(java.lang.String);
-    public static android.graphics.Path$Op[] values();
-
-    public static android.graphics.Path$Op DIFFERENCE;
-    public static android.graphics.Path$Op INTERSECT;
-    public static android.graphics.Path$Op REVERSE_DIFFERENCE;
-    public static android.graphics.Path$Op UNION;
-    public static android.graphics.Path$Op XOR;
-
-}
-
--keep class android.graphics.PathEffect {
-    <init>();
-
-    protected void finalize();
-
-
-}
-
--keep class android.graphics.Picture {
-    <init>();
-    <init>(android.graphics.Picture);
-
-    public android.graphics.Canvas beginRecording(int, int);
-    public static android.graphics.Picture createFromStream(java.io.InputStream);
-    public void draw(android.graphics.Canvas);
-    public void endRecording();
-    protected void finalize();
-    public int getHeight();
-    public int getWidth();
-    public boolean requiresHardwareAcceleration();
-    public void writeToStream(java.io.OutputStream);
-
-
-}
-
--keep class android.graphics.Point {
-    <init>();
-    <init>(int, int);
-    <init>(android.graphics.Point);
-
-    public int describeContents();
-    public boolean equals(int, int);
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public void negate();
-    public void offset(int, int);
-    public void printShortString(java.io.PrintWriter);
-    public void readFromParcel(android.os.Parcel);
-    public void set(int, int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public int x;
-    public int y;
-}
-
--keep class android.graphics.PointF {
-    <init>();
-    <init>(float, float);
-    <init>(android.graphics.Point);
-
-    public int describeContents();
-    public boolean equals(float, float);
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public float length();
-    public static float length(float, float);
-    public void negate();
-    public void offset(float, float);
-    public void readFromParcel(android.os.Parcel);
-    public void set(float, float);
-    public void set(android.graphics.PointF);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public float x;
-    public float y;
-}
-
--keep class android.graphics.PorterDuff {
-    <init>();
-
-    public static android.graphics.PorterDuff$Mode intToMode(int);
-    public static int modeToInt(android.graphics.PorterDuff$Mode);
-
-
-}
-
--keep class android.graphics.PorterDuff$Mode {
-
-    public static android.graphics.PorterDuff$Mode valueOf(java.lang.String);
-    public static android.graphics.PorterDuff$Mode[] values();
-
-    public static android.graphics.PorterDuff$Mode ADD;
-    public static android.graphics.PorterDuff$Mode CLEAR;
-    public static android.graphics.PorterDuff$Mode DARKEN;
-    public static android.graphics.PorterDuff$Mode DST;
-    public static android.graphics.PorterDuff$Mode DST_ATOP;
-    public static android.graphics.PorterDuff$Mode DST_IN;
-    public static android.graphics.PorterDuff$Mode DST_OUT;
-    public static android.graphics.PorterDuff$Mode DST_OVER;
-    public static android.graphics.PorterDuff$Mode LIGHTEN;
-    public static android.graphics.PorterDuff$Mode MULTIPLY;
-    public static android.graphics.PorterDuff$Mode OVERLAY;
-    public static android.graphics.PorterDuff$Mode SCREEN;
-    public static android.graphics.PorterDuff$Mode SRC;
-    public static android.graphics.PorterDuff$Mode SRC_ATOP;
-    public static android.graphics.PorterDuff$Mode SRC_IN;
-    public static android.graphics.PorterDuff$Mode SRC_OUT;
-    public static android.graphics.PorterDuff$Mode SRC_OVER;
-    public static android.graphics.PorterDuff$Mode XOR;
-
-    public int nativeInt;
-}
-
--keep class android.graphics.Rasterizer {
-    <init>();
-
-    protected void finalize();
-
-
-}
-
--keep class android.graphics.Rect {
-    <init>();
-    <init>(int, int, int, int);
-    <init>(android.graphics.Rect);
-
-    public int centerX();
-    public int centerY();
-    public boolean contains(int, int);
-    public boolean contains(int, int, int, int);
-    public boolean contains(android.graphics.Rect);
-    public static android.graphics.Rect copyOrNull(android.graphics.Rect);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public float exactCenterX();
-    public float exactCenterY();
-    public java.lang.String flattenToString();
-    public int hashCode();
-    public int height();
-    public void inset(int, int);
-    public void inset(android.graphics.Rect);
-    public void inset(int, int, int, int);
-    public boolean intersect(int, int, int, int);
-    public boolean intersect(android.graphics.Rect);
-    public void intersectUnchecked(android.graphics.Rect);
-    public boolean intersects(int, int, int, int);
-    public static boolean intersects(android.graphics.Rect, android.graphics.Rect);
-    public boolean isEmpty();
-    public void offset(int, int);
-    public void offsetTo(int, int);
-    public void printShortString(java.io.PrintWriter);
-    public void readFromParcel(android.os.Parcel);
-    public void scale(float);
-    public void set(int, int, int, int);
-    public void set(android.graphics.Rect);
-    public void setEmpty();
-    public boolean setIntersect(android.graphics.Rect, android.graphics.Rect);
-    public void sort();
-    public java.lang.String toShortString();
-    public java.lang.String toShortString(java.lang.StringBuilder);
-    public java.lang.String toString();
-    public static android.graphics.Rect unflattenFromString(java.lang.String);
-    public void union(int, int, int, int);
-    public void union(android.graphics.Rect);
-    public void union(int, int);
-    public int width();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public int bottom;
-    public int left;
-    public int right;
-    public int top;
-}
-
--keep class android.graphics.RectF {
-    <init>();
-    <init>(float, float, float, float);
-    <init>(android.graphics.RectF);
-    <init>(android.graphics.Rect);
-
-    public float centerX();
-    public float centerY();
-    public boolean contains(float, float);
-    public boolean contains(float, float, float, float);
-    public boolean contains(android.graphics.RectF);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public float height();
-    public void inset(float, float);
-    public boolean intersect(float, float, float, float);
-    public boolean intersect(android.graphics.RectF);
-    public boolean intersects(float, float, float, float);
-    public static boolean intersects(android.graphics.RectF, android.graphics.RectF);
-    public boolean isEmpty();
-    public void offset(float, float);
-    public void offsetTo(float, float);
-    public void printShortString(java.io.PrintWriter);
-    public void readFromParcel(android.os.Parcel);
-    public void round(android.graphics.Rect);
-    public void roundOut(android.graphics.Rect);
-    public void scale(float);
-    public void set(float, float, float, float);
-    public void set(android.graphics.RectF);
-    public void set(android.graphics.Rect);
-    public void setEmpty();
-    public boolean setIntersect(android.graphics.RectF, android.graphics.RectF);
-    public void sort();
-    public java.lang.String toShortString();
-    public java.lang.String toShortString(java.lang.StringBuilder);
-    public java.lang.String toString();
-    public void union(float, float, float, float);
-    public void union(android.graphics.RectF);
-    public void union(float, float);
-    public float width();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public float bottom;
-    public float left;
-    public float right;
-    public float top;
-}
-
--keep class android.graphics.Region {
-    <init>();
-    <init>(android.graphics.Region);
-    <init>(android.graphics.Rect);
-    <init>(int, int, int, int);
-
-    public boolean contains(int, int);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    protected void finalize();
-    public android.graphics.Path getBoundaryPath();
-    public boolean getBoundaryPath(android.graphics.Path);
-    public android.graphics.Rect getBounds();
-    public boolean getBounds(android.graphics.Rect);
-    public boolean isComplex();
-    public boolean isEmpty();
-    public boolean isRect();
-    public static android.graphics.Region obtain();
-    public static android.graphics.Region obtain(android.graphics.Region);
-    public boolean op(android.graphics.Rect, android.graphics.Region$Op);
-    public boolean op(int, int, int, int, android.graphics.Region$Op);
-    public boolean op(android.graphics.Region, android.graphics.Region$Op);
-    public boolean op(android.graphics.Rect, android.graphics.Region, android.graphics.Region$Op);
-    public boolean op(android.graphics.Region, android.graphics.Region, android.graphics.Region$Op);
-    public boolean quickContains(android.graphics.Rect);
-    public boolean quickContains(int, int, int, int);
-    public boolean quickReject(android.graphics.Rect);
-    public boolean quickReject(int, int, int, int);
-    public boolean quickReject(android.graphics.Region);
-    public void recycle();
-    public void scale(float);
-    public void scale(float, android.graphics.Region);
-    public boolean set(android.graphics.Region);
-    public boolean set(android.graphics.Rect);
-    public boolean set(int, int, int, int);
-    public void setEmpty();
-    public boolean setPath(android.graphics.Path, android.graphics.Region);
-    public java.lang.String toString();
-    public void translate(int, int);
-    public void translate(int, int, android.graphics.Region);
-    public boolean union(android.graphics.Rect);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public long mNativeRegion;
-}
-
--keep class android.graphics.Region$Op {
-
-    public static android.graphics.Region$Op valueOf(java.lang.String);
-    public static android.graphics.Region$Op[] values();
-
-    public static android.graphics.Region$Op DIFFERENCE;
-    public static android.graphics.Region$Op INTERSECT;
-    public static android.graphics.Region$Op REPLACE;
-    public static android.graphics.Region$Op REVERSE_DIFFERENCE;
-    public static android.graphics.Region$Op UNION;
-    public static android.graphics.Region$Op XOR;
-
-    public int nativeInt;
-}
-
--keep class android.graphics.Shader {
-    <init>();
-
-    protected android.graphics.Shader copy();
-    protected void copyLocalMatrix(android.graphics.Shader);
-    protected void discardNativeInstance();
-    public boolean getLocalMatrix(android.graphics.Matrix);
-    public long getNativeInstance();
-    public void setLocalMatrix(android.graphics.Matrix);
-    protected void verifyNativeInstance();
-
-
-}
-
--keep class android.graphics.SurfaceTexture {
-    <init>(int);
-    <init>(int, boolean);
-    <init>(boolean);
-
-    public void attachToGLContext(int);
-    public void detachFromGLContext();
-    protected void finalize();
-    public long getTimestamp();
-    public void getTransformMatrix(float[]);
-    public boolean isReleased();
-    public boolean isSingleBuffered();
-    public void release();
-    public void releaseTexImage();
-    public void setDefaultBufferSize(int, int);
-    public void setOnFrameAvailableListener(android.graphics.SurfaceTexture$OnFrameAvailableListener);
-    public void setOnFrameAvailableListener(android.graphics.SurfaceTexture$OnFrameAvailableListener, android.os.Handler);
-    public void updateTexImage();
-
-
-}
-
--keep class android.graphics.SurfaceTexture$OnFrameAvailableListener {
-
-    public abstract void onFrameAvailable(android.graphics.SurfaceTexture);
-
-
-}
-
--keep class android.graphics.Typeface {
-
-    public static void buildSystemFallback(java.lang.String, java.lang.String, android.util.ArrayMap, android.util.ArrayMap);
-    public static android.graphics.Typeface create(java.lang.String, int);
-    public static android.graphics.Typeface create(android.graphics.Typeface, int);
-    public static android.graphics.Typeface create(android.graphics.Typeface, int, boolean);
-    public static android.graphics.Typeface createFromAsset(android.content.res.AssetManager, java.lang.String);
-    public static android.graphics.Typeface createFromFile(java.io.File);
-    public static android.graphics.Typeface createFromFile(java.lang.String);
-    public static android.graphics.Typeface createFromResources(android.content.res.AssetManager, java.lang.String, int);
-    public static android.graphics.Typeface createFromResources(android.content.res.FontResourcesParser$FamilyResourceEntry, android.content.res.AssetManager, java.lang.String);
-    public static android.graphics.Typeface createFromTypefaceWithVariation(android.graphics.Typeface, java.util.List);
-    public static android.graphics.Typeface defaultFromStyle(int);
-    public boolean equals(java.lang.Object);
-    public static android.graphics.Typeface findFromCache(android.content.res.AssetManager, java.lang.String);
-    public int getStyle();
-    public int getWeight();
-    public int hashCode();
-    public boolean isBold();
-    public boolean isItalic();
-    public boolean isSupportedAxes(int);
-
-
-    public static int BOLD;
-    public static int BOLD_ITALIC;
-    public static android.graphics.Typeface DEFAULT;
-    public static android.graphics.Typeface DEFAULT_BOLD;
-    public static int ITALIC;
-    public static int MAX_WEIGHT;
-    public static android.graphics.Typeface MONOSPACE;
-    public static int NORMAL;
-    public static int RESOLVE_BY_FONT_TABLE;
-    public static android.graphics.Typeface SANS_SERIF;
-    public static android.graphics.Typeface SERIF;
-    public static int STYLE_MASK;
-    public long native_instance;
-}
-
--keep class android.graphics.Xfermode {
-    <init>();
-
-
-
-}
-
--keep class android.graphics.drawable.Animatable2 {
-
-    public abstract void clearAnimationCallbacks();
-    public abstract void registerAnimationCallback(android.graphics.drawable.Animatable2$AnimationCallback);
-    public abstract boolean unregisterAnimationCallback(android.graphics.drawable.Animatable2$AnimationCallback);
-
-
-}
-
--keep class android.graphics.drawable.Animatable2$AnimationCallback {
-    <init>();
-
-    public void onAnimationEnd(android.graphics.drawable.Drawable);
-    public void onAnimationStart(android.graphics.drawable.Drawable);
-
-
-}
-
--keep class android.graphics.drawable.AnimatedVectorDrawable {
-    <init>();
-
-    public void applyTheme(android.content.res.Resources$Theme);
-    public boolean canApplyTheme();
-    public boolean canReverse();
-    public void clearAnimationCallbacks();
-    public void clearMutated();
-    public void draw(android.graphics.Canvas);
-    public void forceAnimationOnUI();
-    public int getAlpha();
-    public int getChangingConfigurations();
-    public android.graphics.ColorFilter getColorFilter();
-    public android.graphics.drawable.Drawable$ConstantState getConstantState();
-    public int getIntrinsicHeight();
-    public int getIntrinsicWidth();
-    public int getOpacity();
-    public android.graphics.Insets getOpticalInsets();
-    public void getOutline(android.graphics.Outline);
-    public void inflate(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources$Theme);
-    public boolean isRunning();
-    public boolean isStateful();
-    public android.graphics.drawable.Drawable mutate();
-    protected void onBoundsChange(android.graphics.Rect);
-    public boolean onLayoutDirectionChanged(int);
-    protected boolean onLevelChange(int);
-    protected boolean onStateChange(int[]);
-    public void registerAnimationCallback(android.graphics.drawable.Animatable2$AnimationCallback);
-    public void reset();
-    public void reverse();
-    public void setAlpha(int);
-    public void setColorFilter(android.graphics.ColorFilter);
-    public void setHotspot(float, float);
-    public void setHotspotBounds(int, int, int, int);
-    public void setTintList(android.content.res.ColorStateList);
-    public void setTintMode(android.graphics.PorterDuff$Mode);
-    public boolean setVisible(boolean, boolean);
-    public void start();
-    public void stop();
-    public boolean unregisterAnimationCallback(android.graphics.drawable.Animatable2$AnimationCallback);
-
-
-}
-
--keep class android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT {
-
-    public boolean canReverse();
-    public void end();
-    public long getAnimatorNativePtr();
-    public void init(android.animation.AnimatorSet);
-    public boolean isInfinite();
-    public boolean isRunning();
-    public boolean isStarted();
-    public void onDraw(android.graphics.Canvas);
-    public void pause();
-    protected void recordLastSeenTarget(android.view.DisplayListCanvas);
-    public void removeListener(android.animation.Animator$AnimatorListener);
-    public void reset();
-    public void resume();
-    public void reverse();
-    public void setListener(android.animation.Animator$AnimatorListener);
-    public void start();
-
-
-}
-
--keep class android.graphics.drawable.Drawable {
-    <init>();
-
-    public void applyTheme(android.content.res.Resources$Theme);
-    public boolean canApplyTheme();
-    public void clearColorFilter();
-    public void clearMutated();
-    public void copyBounds(android.graphics.Rect);
-    public android.graphics.Rect copyBounds();
-    public static android.graphics.drawable.Drawable createFromPath(java.lang.String);
-    public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, java.lang.String);
-    public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, java.lang.String, android.graphics.BitmapFactory$Options);
-    public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, java.lang.String);
-    public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser);
-    public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources$Theme);
-    public static android.graphics.drawable.Drawable createFromXmlForDensity(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, int, android.content.res.Resources$Theme);
-    public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
-    public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources$Theme);
-    public abstract void draw(android.graphics.Canvas);
-    public int getAlpha();
-    public android.graphics.Rect getBounds();
-    public android.graphics.drawable.Drawable$Callback getCallback();
-    public int getChangingConfigurations();
-    public android.graphics.ColorFilter getColorFilter();
-    public android.graphics.drawable.Drawable$ConstantState getConstantState();
-    public android.graphics.drawable.Drawable getCurrent();
-    public android.graphics.Rect getDirtyBounds();
-    public void getHotspotBounds(android.graphics.Rect);
-    public int getIntrinsicHeight();
-    public int getIntrinsicWidth();
-    public int getLayoutDirection();
-    public int getLevel();
-    public int getMinimumHeight();
-    public int getMinimumWidth();
-    public abstract int getOpacity();
-    public android.graphics.Insets getOpticalInsets();
-    public void getOutline(android.graphics.Outline);
-    public boolean getPadding(android.graphics.Rect);
-    public int[] getState();
-    public android.graphics.Region getTransparentRegion();
-    public boolean hasFocusStateSpecified();
-    public void inflate(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
-    public void inflate(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources$Theme);
-    public void invalidateSelf();
-    public boolean isAutoMirrored();
-    public boolean isFilterBitmap();
-    public boolean isProjected();
-    public boolean isStateful();
-    public boolean isVisible();
-    public void jumpToCurrentState();
-    public android.graphics.drawable.Drawable mutate();
-    protected static android.content.res.TypedArray obtainAttributes(android.content.res.Resources, android.content.res.Resources$Theme, android.util.AttributeSet, int[]);
-    protected void onBoundsChange(android.graphics.Rect);
-    public boolean onLayoutDirectionChanged(int);
-    protected boolean onLevelChange(int);
-    protected boolean onStateChange(int[]);
-    public static android.graphics.PorterDuff$Mode parseTintMode(int, android.graphics.PorterDuff$Mode);
-    public static int resolveOpacity(int, int);
-    public void scheduleSelf(java.lang.Runnable, long);
-    public abstract void setAlpha(int);
-    public void setAutoMirrored(boolean);
-    public void setBounds(int, int, int, int);
-    public void setBounds(android.graphics.Rect);
-    public void setCallback(android.graphics.drawable.Drawable$Callback);
-    public void setChangingConfigurations(int);
-    public abstract void setColorFilter(android.graphics.ColorFilter);
-    public void setColorFilter(int, android.graphics.PorterDuff$Mode);
-    public void setDither(boolean);
-    public void setFilterBitmap(boolean);
-    public void setHotspot(float, float);
-    public void setHotspotBounds(int, int, int, int);
-    public boolean setLayoutDirection(int);
-    public boolean setLevel(int);
-    public boolean setState(int[]);
-    public void setTint(int);
-    public void setTintList(android.content.res.ColorStateList);
-    public void setTintMode(android.graphics.PorterDuff$Mode);
-    public boolean setVisible(boolean, boolean);
-    public void setXfermode(android.graphics.Xfermode);
-    public void unscheduleSelf(java.lang.Runnable);
-
-
-    protected int mSrcDensityOverride;
-}
-
--keep class android.graphics.drawable.Drawable$Callback {
-
-    public abstract void invalidateDrawable(android.graphics.drawable.Drawable);
-    public abstract void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
-    public abstract void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
-
-
-}
-
--keep class android.graphics.drawable.Drawable$ConstantState {
-    <init>();
-
-    public boolean canApplyTheme();
-    public abstract int getChangingConfigurations();
-    public abstract android.graphics.drawable.Drawable newDrawable();
-    public android.graphics.drawable.Drawable newDrawable(android.content.res.Resources);
-    public android.graphics.drawable.Drawable newDrawable(android.content.res.Resources, android.content.res.Resources$Theme);
-
-
-}
-
--keep class android.graphics.drawable.DrawableInflater {
-    <init>(android.content.res.Resources, java.lang.ClassLoader);
-
-    public android.graphics.drawable.Drawable inflateFromXml(java.lang.String, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources$Theme);
-    public static android.graphics.drawable.Drawable loadDrawable(android.content.Context, int);
-    public static android.graphics.drawable.Drawable loadDrawable(android.content.res.Resources, android.content.res.Resources$Theme, int);
-
-
-}
-
--keep class android.graphics.drawable.Icon {
-
-    public void convertToAshmem();
-    public static android.graphics.drawable.Icon createFromStream(java.io.InputStream);
-    public static android.graphics.drawable.Icon createWithAdaptiveBitmap(android.graphics.Bitmap);
-    public static android.graphics.drawable.Icon createWithBitmap(android.graphics.Bitmap);
-    public static android.graphics.drawable.Icon createWithContentUri(java.lang.String);
-    public static android.graphics.drawable.Icon createWithContentUri(android.net.Uri);
-    public static android.graphics.drawable.Icon createWithData(byte[], int, int);
-    public static android.graphics.drawable.Icon createWithFilePath(java.lang.String);
-    public static android.graphics.drawable.Icon createWithResource(android.content.Context, int);
-    public static android.graphics.drawable.Icon createWithResource(android.content.res.Resources, int);
-    public static android.graphics.drawable.Icon createWithResource(java.lang.String, int);
-    public int describeContents();
-    public android.graphics.Bitmap getBitmap();
-    public byte[] getDataBytes();
-    public int getDataLength();
-    public int getDataOffset();
-    public int getResId();
-    public java.lang.String getResPackage();
-    public android.content.res.Resources getResources();
-    public int getType();
-    public android.net.Uri getUri();
-    public java.lang.String getUriString();
-    public boolean hasTint();
-    public android.graphics.drawable.Drawable loadDrawable(android.content.Context);
-    public android.graphics.drawable.Drawable loadDrawableAsUser(android.content.Context, int);
-    public void loadDrawableAsync(android.content.Context, android.os.Message);
-    public void loadDrawableAsync(android.content.Context, android.graphics.drawable.Icon$OnDrawableLoadedListener, android.os.Handler);
-    public boolean sameAs(android.graphics.drawable.Icon);
-    public static android.graphics.Bitmap scaleDownIfNecessary(android.graphics.Bitmap, int, int);
-    public void scaleDownIfNecessary(int, int);
-    public android.graphics.drawable.Icon setTint(int);
-    public android.graphics.drawable.Icon setTintList(android.content.res.ColorStateList);
-    public android.graphics.drawable.Icon setTintMode(android.graphics.PorterDuff$Mode);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToStream(java.io.OutputStream);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int MIN_ASHMEM_ICON_SIZE;
-    public static int TYPE_ADAPTIVE_BITMAP;
-    public static int TYPE_BITMAP;
-    public static int TYPE_DATA;
-    public static int TYPE_RESOURCE;
-    public static int TYPE_URI;
-}
-
--keep class android.graphics.drawable.Icon$OnDrawableLoadedListener {
-
-    public abstract void onDrawableLoaded(android.graphics.drawable.Drawable);
-
-
-}
-
--keep class android.graphics.fonts.FontVariationAxis {
-    <init>(java.lang.String, float);
-
-    public static android.graphics.fonts.FontVariationAxis[] fromFontVariationSettings(java.lang.String);
-    public int getOpenTypeTagValue();
-    public float getStyleValue();
-    public java.lang.String getTag();
-    public static int makeTag(java.lang.String);
-    public static java.lang.String toFontVariationSettings(android.graphics.fonts.FontVariationAxis[]);
-    public java.lang.String toString();
-
-
-}
-
--keep class android.hardware.display.AmbientBrightnessDayStats {
-    <init>(java.time.LocalDate, float[]);
-    <init>(java.time.LocalDate, float[], float[]);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public float[] getBucketBoundaries();
-    public java.time.LocalDate getLocalDate();
-    public float[] getStats();
-    public int hashCode();
-    public void log(float, float);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.hardware.display.BrightnessChangeEvent {
-    <init>(android.hardware.display.BrightnessChangeEvent, boolean);
-
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public float batteryLevel;
-    public float brightness;
-    public int colorTemperature;
-    public boolean isDefaultBrightnessConfig;
-    public boolean isUserSetBrightness;
-    public float lastBrightness;
-    public long[] luxTimestamps;
-    public float[] luxValues;
-    public boolean nightMode;
-    public java.lang.String packageName;
-    public float powerBrightnessFactor;
-    public long timeStamp;
-    public int userId;
-}
-
--keep class android.hardware.display.BrightnessConfiguration {
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.util.Pair getCurve();
-    public java.lang.String getDescription();
-    public int hashCode();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.hardware.display.DisplayManager {
-    <init>(android.content.Context);
-
-    public void connectWifiDisplay(java.lang.String);
-    public android.hardware.display.VirtualDisplay createVirtualDisplay(java.lang.String, int, int, int, android.view.Surface, int);
-    public android.hardware.display.VirtualDisplay createVirtualDisplay(java.lang.String, int, int, int, android.view.Surface, int, android.hardware.display.VirtualDisplay$Callback, android.os.Handler);
-    public android.hardware.display.VirtualDisplay createVirtualDisplay(android.media.projection.MediaProjection, java.lang.String, int, int, int, android.view.Surface, int, android.hardware.display.VirtualDisplay$Callback, android.os.Handler, java.lang.String);
-    public void disconnectWifiDisplay();
-    public void forgetWifiDisplay(java.lang.String);
-    public java.util.List getAmbientBrightnessStats();
-    public android.hardware.display.BrightnessConfiguration getBrightnessConfiguration();
-    public android.hardware.display.BrightnessConfiguration getBrightnessConfigurationForUser(int);
-    public java.util.List getBrightnessEvents();
-    public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
-    public android.view.Display getDisplay(int);
-    public android.view.Display[] getDisplays();
-    public android.view.Display[] getDisplays(java.lang.String);
-    public android.util.Pair getMinimumBrightnessCurve();
-    public android.graphics.Point getStableDisplaySize();
-    public android.hardware.display.WifiDisplayStatus getWifiDisplayStatus();
-    public void pauseWifiDisplay();
-    public void registerDisplayListener(android.hardware.display.DisplayManager$DisplayListener, android.os.Handler);
-    public void renameWifiDisplay(java.lang.String, java.lang.String);
-    public void resumeWifiDisplay();
-    public void setBrightnessConfiguration(android.hardware.display.BrightnessConfiguration);
-    public void setBrightnessConfigurationForUser(android.hardware.display.BrightnessConfiguration, int, java.lang.String);
-    public void setSaturationLevel(float);
-    public void setTemporaryAutoBrightnessAdjustment(float);
-    public void setTemporaryBrightness(int);
-    public void startWifiDisplayScan();
-    public void stopWifiDisplayScan();
-    public void unregisterDisplayListener(android.hardware.display.DisplayManager$DisplayListener);
-
-
-    public static java.lang.String ACTION_WIFI_DISPLAY_STATUS_CHANGED;
-    public static java.lang.String DISPLAY_CATEGORY_PRESENTATION;
-    public static java.lang.String EXTRA_WIFI_DISPLAY_STATUS;
-    public static int VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR;
-    public static int VIRTUAL_DISPLAY_FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD;
-    public static int VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL;
-    public static int VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY;
-    public static int VIRTUAL_DISPLAY_FLAG_PRESENTATION;
-    public static int VIRTUAL_DISPLAY_FLAG_PUBLIC;
-    public static int VIRTUAL_DISPLAY_FLAG_ROTATES_WITH_CONTENT;
-    public static int VIRTUAL_DISPLAY_FLAG_SECURE;
-    public static int VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH;
-}
-
--keep class android.hardware.display.DisplayManager$DisplayListener {
-
-    public abstract void onDisplayAdded(int);
-    public abstract void onDisplayChanged(int);
-    public abstract void onDisplayRemoved(int);
-
-
-}
-
--keep class android.hardware.display.DisplayManagerGlobal {
-
-    public void connectWifiDisplay(java.lang.String);
-    public android.hardware.display.VirtualDisplay createVirtualDisplay(android.content.Context, android.media.projection.MediaProjection, java.lang.String, int, int, int, android.view.Surface, int, android.hardware.display.VirtualDisplay$Callback, android.os.Handler, java.lang.String);
-    public void disconnectWifiDisplay();
-    public void forgetWifiDisplay(java.lang.String);
-    public java.util.List getAmbientBrightnessStats();
-    public android.hardware.display.BrightnessConfiguration getBrightnessConfigurationForUser(int);
-    public java.util.List getBrightnessEvents(java.lang.String);
-    public android.view.Display getCompatibleDisplay(int, android.view.DisplayAdjustments);
-    public android.view.Display getCompatibleDisplay(int, android.content.res.Resources);
-    public android.hardware.display.BrightnessConfiguration getDefaultBrightnessConfiguration();
-    public int[] getDisplayIds();
-    public android.view.DisplayInfo getDisplayInfo(int);
-    public static android.hardware.display.DisplayManagerGlobal getInstance();
-    public android.util.Pair getMinimumBrightnessCurve();
-    public android.view.Display getRealDisplay(int);
-    public android.graphics.Point getStableDisplaySize();
-    public android.hardware.display.WifiDisplayStatus getWifiDisplayStatus();
-    public void pauseWifiDisplay();
-    public void registerDisplayListener(android.hardware.display.DisplayManager$DisplayListener, android.os.Handler);
-    public void releaseVirtualDisplay(android.hardware.display.IVirtualDisplayCallback);
-    public void renameWifiDisplay(java.lang.String, java.lang.String);
-    public void requestColorMode(int, int);
-    public void resizeVirtualDisplay(android.hardware.display.IVirtualDisplayCallback, int, int, int);
-    public void resumeWifiDisplay();
-    public void setBrightnessConfigurationForUser(android.hardware.display.BrightnessConfiguration, int, java.lang.String);
-    public void setSaturationLevel(float);
-    public void setTemporaryAutoBrightnessAdjustment(float);
-    public void setTemporaryBrightness(int);
-    public void setVirtualDisplaySurface(android.hardware.display.IVirtualDisplayCallback, android.view.Surface);
-    public void startWifiDisplayScan();
-    public void stopWifiDisplayScan();
-    public void unregisterDisplayListener(android.hardware.display.DisplayManager$DisplayListener);
-
-
-    public static int EVENT_DISPLAY_ADDED;
-    public static int EVENT_DISPLAY_CHANGED;
-    public static int EVENT_DISPLAY_REMOVED;
-}
-
--keep class android.hardware.display.IVirtualDisplayCallback {
-
-    public abstract void onPaused();
-    public abstract void onResumed();
-    public abstract void onStopped();
-
-
-}
-
--keep class android.hardware.display.VirtualDisplay {
-
-    public android.view.Display getDisplay();
-    public android.view.Surface getSurface();
-    public void release();
-    public void resize(int, int, int);
-    public void setSurface(android.view.Surface);
-    public java.lang.String toString();
-
-
-}
-
--keep class android.hardware.display.VirtualDisplay$Callback {
-    <init>();
-
-    public void onPaused();
-    public void onResumed();
-    public void onStopped();
-
-
-}
-
--keep class android.hardware.display.WifiDisplay {
-    <init>(java.lang.String, java.lang.String, java.lang.String, boolean, boolean, boolean);
-
-    public boolean canConnect();
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public boolean equals(android.hardware.display.WifiDisplay);
-    public java.lang.String getDeviceAddress();
-    public java.lang.String getDeviceAlias();
-    public java.lang.String getDeviceName();
-    public java.lang.String getFriendlyDisplayName();
-    public boolean hasSameAddress(android.hardware.display.WifiDisplay);
-    public int hashCode();
-    public boolean isAvailable();
-    public boolean isRemembered();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.hardware.display.WifiDisplay[] EMPTY_ARRAY;
-}
-
--keep class android.hardware.display.WifiDisplaySessionInfo {
-    <init>();
-    <init>(boolean, int, java.lang.String, java.lang.String, java.lang.String);
-
-    public int describeContents();
-    public java.lang.String getGroupId();
-    public java.lang.String getIP();
-    public java.lang.String getPassphrase();
-    public int getSessionId();
-    public boolean isClient();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.hardware.display.WifiDisplayStatus {
-    <init>();
-    <init>(int, int, int, android.hardware.display.WifiDisplay, android.hardware.display.WifiDisplay[], android.hardware.display.WifiDisplaySessionInfo);
-
-    public int describeContents();
-    public android.hardware.display.WifiDisplay getActiveDisplay();
-    public int getActiveDisplayState();
-    public android.hardware.display.WifiDisplay[] getDisplays();
-    public int getFeatureState();
-    public int getScanState();
-    public android.hardware.display.WifiDisplaySessionInfo getSessionInfo();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int DISPLAY_STATE_CONNECTED;
-    public static int DISPLAY_STATE_CONNECTING;
-    public static int DISPLAY_STATE_NOT_CONNECTED;
-    public static int FEATURE_STATE_DISABLED;
-    public static int FEATURE_STATE_OFF;
-    public static int FEATURE_STATE_ON;
-    public static int FEATURE_STATE_UNAVAILABLE;
-    public static int SCAN_STATE_NOT_SCANNING;
-    public static int SCAN_STATE_SCANNING;
-}
-
--keep class android.hardware.input.InputDeviceIdentifier {
-    <init>(java.lang.String, int, int);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public java.lang.String getDescriptor();
-    public int getProductId();
-    public int getVendorId();
-    public int hashCode();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.media.AudioAttributes {
-
-    public java.lang.String contentTypeToString();
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int getAllFlags();
-    public android.os.Bundle getBundle();
-    public int getCapturePreset();
-    public int getContentType();
-    public int getFlags();
-    public java.util.Set getTags();
-    public int getUsage();
-    public int getVolumeControlStream();
-    public int hashCode();
-    public static int toLegacyStreamType(android.media.AudioAttributes);
-    public java.lang.String toString();
-    public java.lang.String usageToString();
-    public static java.lang.String usageToString(int);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static int CONTENT_TYPE_MOVIE;
-    public static int CONTENT_TYPE_MUSIC;
-    public static int CONTENT_TYPE_SONIFICATION;
-    public static int CONTENT_TYPE_SPEECH;
-    public static int CONTENT_TYPE_UNKNOWN;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_AUDIBILITY_ENFORCED;
-    public static int FLAG_BEACON;
-    public static int FLAG_BYPASS_INTERRUPTION_POLICY;
-    public static int FLAG_BYPASS_MUTE;
-    public static int FLAG_DEEP_BUFFER;
-    public static int FLAG_HW_AV_SYNC;
-    public static int FLAG_HW_HOTWORD;
-    public static int FLAG_LOW_LATENCY;
-    public static int FLAG_SCO;
-    public static int FLAG_SECURE;
-    public static int FLATTEN_TAGS;
-    public static int[] SDK_USAGES;
-    public static int SUPPRESSIBLE_ALARM;
-    public static int SUPPRESSIBLE_CALL;
-    public static int SUPPRESSIBLE_MEDIA;
-    public static int SUPPRESSIBLE_NEVER;
-    public static int SUPPRESSIBLE_NOTIFICATION;
-    public static int SUPPRESSIBLE_SYSTEM;
-    public static android.util.SparseIntArray SUPPRESSIBLE_USAGES;
-    public static int USAGE_ALARM;
-    public static int USAGE_ASSISTANCE_ACCESSIBILITY;
-    public static int USAGE_ASSISTANCE_NAVIGATION_GUIDANCE;
-    public static int USAGE_ASSISTANCE_SONIFICATION;
-    public static int USAGE_ASSISTANT;
-    public static int USAGE_GAME;
-    public static int USAGE_MEDIA;
-    public static int USAGE_NOTIFICATION;
-    public static int USAGE_NOTIFICATION_COMMUNICATION_DELAYED;
-    public static int USAGE_NOTIFICATION_COMMUNICATION_INSTANT;
-    public static int USAGE_NOTIFICATION_COMMUNICATION_REQUEST;
-    public static int USAGE_NOTIFICATION_EVENT;
-    public static int USAGE_NOTIFICATION_RINGTONE;
-    public static int USAGE_UNKNOWN;
-    public static int USAGE_VIRTUAL_SOURCE;
-    public static int USAGE_VOICE_COMMUNICATION;
-    public static int USAGE_VOICE_COMMUNICATION_SIGNALLING;
-}
-
--keep class android.media.AudioDeviceInfo {
-
-    public static int convertDeviceTypeToInternalDevice(int);
-    public static int convertInternalDeviceToDeviceType(int);
-    public boolean equals(java.lang.Object);
-    public java.lang.String getAddress();
-    public int[] getChannelCounts();
-    public int[] getChannelIndexMasks();
-    public int[] getChannelMasks();
-    public int[] getEncodings();
-    public int getId();
-    public android.media.AudioDevicePort getPort();
-    public java.lang.CharSequence getProductName();
-    public int[] getSampleRates();
-    public int getType();
-    public int hashCode();
-    public boolean isSink();
-    public boolean isSource();
-
-
-    public static int TYPE_AUX_LINE;
-    public static int TYPE_BLUETOOTH_A2DP;
-    public static int TYPE_BLUETOOTH_SCO;
-    public static int TYPE_BUILTIN_EARPIECE;
-    public static int TYPE_BUILTIN_MIC;
-    public static int TYPE_BUILTIN_SPEAKER;
-    public static int TYPE_BUS;
-    public static int TYPE_DOCK;
-    public static int TYPE_FM;
-    public static int TYPE_FM_TUNER;
-    public static int TYPE_HDMI;
-    public static int TYPE_HDMI_ARC;
-    public static int TYPE_HEARING_AID;
-    public static int TYPE_IP;
-    public static int TYPE_LINE_ANALOG;
-    public static int TYPE_LINE_DIGITAL;
-    public static int TYPE_TELEPHONY;
-    public static int TYPE_TV_TUNER;
-    public static int TYPE_UNKNOWN;
-    public static int TYPE_USB_ACCESSORY;
-    public static int TYPE_USB_DEVICE;
-    public static int TYPE_USB_HEADSET;
-    public static int TYPE_WIRED_HEADPHONES;
-    public static int TYPE_WIRED_HEADSET;
-}
-
--keep class android.media.AudioDevicePort {
-
-    public java.lang.String address();
-    public android.media.AudioDevicePortConfig buildConfig(int, int, int, android.media.AudioGainConfig);
-    public android.media.AudioPortConfig buildConfig(int, int, int, android.media.AudioGainConfig);
-    public boolean equals(java.lang.Object);
-    public java.lang.String toString();
-    public int type();
-
-
-}
-
--keep class android.media.AudioDevicePortConfig {
-
-    public android.media.AudioDevicePort port();
-    public android.media.AudioPort port();
-
-
-}
-
--keep class android.media.AudioFormat {
-    <init>();
-
-    public static int channelCountFromInChannelMask(int);
-    public static int channelCountFromOutChannelMask(int);
-    public static int convertChannelOutMaskToNativeMask(int);
-    public static int convertNativeChannelMaskToOutMask(int);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static int[] filterPublicFormats(int[]);
-    public static int getBytesPerSample(int);
-    public int getChannelCount();
-    public int getChannelIndexMask();
-    public int getChannelMask();
-    public int getEncoding();
-    public int getPropertySetMask();
-    public int getSampleRate();
-    public int hashCode();
-    public static int inChannelMaskFromOutChannelMask(int);
-    public static boolean isEncodingLinearFrames(int);
-    public static boolean isEncodingLinearPcm(int);
-    public static boolean isPublicEncoding(int);
-    public static boolean isValidEncoding(int);
-    public static java.lang.String toDisplayName(int);
-    public static java.lang.String toLogFriendlyEncoding(int);
-    public java.lang.String toLogFriendlyString();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK;
-    public static int AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK;
-    public static int AUDIO_FORMAT_HAS_PROPERTY_ENCODING;
-    public static int AUDIO_FORMAT_HAS_PROPERTY_NONE;
-    public static int AUDIO_FORMAT_HAS_PROPERTY_SAMPLE_RATE;
-    public static int CHANNEL_CONFIGURATION_DEFAULT;
-    public static int CHANNEL_CONFIGURATION_INVALID;
-    public static int CHANNEL_CONFIGURATION_MONO;
-    public static int CHANNEL_CONFIGURATION_STEREO;
-    public static int CHANNEL_INVALID;
-    public static int CHANNEL_IN_BACK;
-    public static int CHANNEL_IN_BACK_PROCESSED;
-    public static int CHANNEL_IN_DEFAULT;
-    public static int CHANNEL_IN_FRONT;
-    public static int CHANNEL_IN_FRONT_BACK;
-    public static int CHANNEL_IN_FRONT_PROCESSED;
-    public static int CHANNEL_IN_LEFT;
-    public static int CHANNEL_IN_LEFT_PROCESSED;
-    public static int CHANNEL_IN_MONO;
-    public static int CHANNEL_IN_PRESSURE;
-    public static int CHANNEL_IN_RIGHT;
-    public static int CHANNEL_IN_RIGHT_PROCESSED;
-    public static int CHANNEL_IN_STEREO;
-    public static int CHANNEL_IN_VOICE_DNLINK;
-    public static int CHANNEL_IN_VOICE_UPLINK;
-    public static int CHANNEL_IN_X_AXIS;
-    public static int CHANNEL_IN_Y_AXIS;
-    public static int CHANNEL_IN_Z_AXIS;
-    public static int CHANNEL_OUT_5POINT1;
-    public static int CHANNEL_OUT_5POINT1_SIDE;
-    public static int CHANNEL_OUT_7POINT1;
-    public static int CHANNEL_OUT_7POINT1_SURROUND;
-    public static int CHANNEL_OUT_BACK_CENTER;
-    public static int CHANNEL_OUT_BACK_LEFT;
-    public static int CHANNEL_OUT_BACK_RIGHT;
-    public static int CHANNEL_OUT_DEFAULT;
-    public static int CHANNEL_OUT_FRONT_CENTER;
-    public static int CHANNEL_OUT_FRONT_LEFT;
-    public static int CHANNEL_OUT_FRONT_LEFT_OF_CENTER;
-    public static int CHANNEL_OUT_FRONT_RIGHT;
-    public static int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER;
-    public static int CHANNEL_OUT_LOW_FREQUENCY;
-    public static int CHANNEL_OUT_MONO;
-    public static int CHANNEL_OUT_QUAD;
-    public static int CHANNEL_OUT_QUAD_SIDE;
-    public static int CHANNEL_OUT_SIDE_LEFT;
-    public static int CHANNEL_OUT_SIDE_RIGHT;
-    public static int CHANNEL_OUT_STEREO;
-    public static int CHANNEL_OUT_SURROUND;
-    public static int CHANNEL_OUT_TOP_BACK_CENTER;
-    public static int CHANNEL_OUT_TOP_BACK_LEFT;
-    public static int CHANNEL_OUT_TOP_BACK_RIGHT;
-    public static int CHANNEL_OUT_TOP_CENTER;
-    public static int CHANNEL_OUT_TOP_FRONT_CENTER;
-    public static int CHANNEL_OUT_TOP_FRONT_LEFT;
-    public static int CHANNEL_OUT_TOP_FRONT_RIGHT;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int ENCODING_AAC_ELD;
-    public static int ENCODING_AAC_HE_V1;
-    public static int ENCODING_AAC_HE_V2;
-    public static int ENCODING_AAC_LC;
-    public static int ENCODING_AAC_XHE;
-    public static int ENCODING_AC3;
-    public static int ENCODING_AC4;
-    public static int ENCODING_DEFAULT;
-    public static int ENCODING_DOLBY_TRUEHD;
-    public static int ENCODING_DTS;
-    public static int ENCODING_DTS_HD;
-    public static int ENCODING_E_AC3;
-    public static int ENCODING_E_AC3_JOC;
-    public static int ENCODING_IEC61937;
-    public static int ENCODING_INVALID;
-    public static int ENCODING_MP3;
-    public static int ENCODING_PCM_16BIT;
-    public static int ENCODING_PCM_8BIT;
-    public static int ENCODING_PCM_FLOAT;
-    public static int SAMPLE_RATE_HZ_MAX;
-    public static int SAMPLE_RATE_HZ_MIN;
-    public static int SAMPLE_RATE_UNSPECIFIED;
-    public static int[] SURROUND_SOUND_ENCODING;
-}
-
--keep class android.media.AudioGain {
-
-    public android.media.AudioGainConfig buildConfig(int, int, int[], int);
-    public int channelMask();
-    public int defaultValue();
-    public int maxValue();
-    public int minValue();
-    public int mode();
-    public int rampDurationMaxMs();
-    public int rampDurationMinMs();
-    public int stepValue();
-
-
-    public static int MODE_CHANNELS;
-    public static int MODE_JOINT;
-    public static int MODE_RAMP;
-}
-
--keep class android.media.AudioGainConfig {
-
-    public int channelMask();
-    public int mode();
-    public int rampDurationMs();
-    public int[] values();
-
-
-}
-
--keep class android.media.AudioPort {
-
-    public android.media.AudioPortConfig activeConfig();
-    public android.media.AudioPortConfig buildConfig(int, int, int, android.media.AudioGainConfig);
-    public int[] channelIndexMasks();
-    public int[] channelMasks();
-    public boolean equals(java.lang.Object);
-    public int[] formats();
-    public android.media.AudioGain[] gains();
-    public int hashCode();
-    public int id();
-    public java.lang.String name();
-    public int role();
-    public int[] samplingRates();
-    public java.lang.String toString();
-
-
-    public static int ROLE_NONE;
-    public static int ROLE_SINK;
-    public static int ROLE_SOURCE;
-    public static int TYPE_DEVICE;
-    public static int TYPE_NONE;
-    public static int TYPE_SESSION;
-    public static int TYPE_SUBMIX;
-    protected int mRole;
-}
-
--keep class android.media.AudioPortConfig {
-
-    public int channelMask();
-    public int format();
-    public android.media.AudioGainConfig gain();
-    public android.media.AudioPort port();
-    public int samplingRate();
-    public java.lang.String toString();
-
-
-}
-
--keep class android.media.AudioRecord {
-    <init>(int, int, int, int, int);
-    <init>(android.media.AudioAttributes, android.media.AudioFormat, int, int);
-
-    public void addOnRoutingChangedListener(android.media.AudioRouting$OnRoutingChangedListener, android.os.Handler);
-    public void addOnRoutingChangedListener(android.media.AudioRecord$OnRoutingChangedListener, android.os.Handler);
-    protected void finalize();
-    public java.util.List getActiveMicrophones();
-    public int getAudioFormat();
-    public int getAudioSessionId();
-    public int getAudioSource();
-    public int getBufferSizeInFrames();
-    public int getChannelConfiguration();
-    public int getChannelCount();
-    public android.media.AudioFormat getFormat();
-    public android.os.PersistableBundle getMetrics();
-    public static int getMinBufferSize(int, int, int);
-    public int getNotificationMarkerPosition();
-    public int getPositionNotificationPeriod();
-    public android.media.AudioDeviceInfo getPreferredDevice();
-    public int getRecordingState();
-    public android.media.AudioDeviceInfo getRoutedDevice();
-    public int getSampleRate();
-    public int getState();
-    public int getTimestamp(android.media.AudioTimestamp, int);
-    public void native_release();
-    public int read(byte[], int, int);
-    public int read(byte[], int, int, int);
-    public int read(short[], int, int);
-    public int read(short[], int, int, int);
-    public int read(float[], int, int, int);
-    public int read(java.nio.ByteBuffer, int);
-    public int read(java.nio.ByteBuffer, int, int);
-    public void release();
-    public void removeOnRoutingChangedListener(android.media.AudioRouting$OnRoutingChangedListener);
-    public void removeOnRoutingChangedListener(android.media.AudioRecord$OnRoutingChangedListener);
-    public int setNotificationMarkerPosition(int);
-    public int setPositionNotificationPeriod(int);
-    public boolean setPreferredDevice(android.media.AudioDeviceInfo);
-    public void setRecordPositionUpdateListener(android.media.AudioRecord$OnRecordPositionUpdateListener);
-    public void setRecordPositionUpdateListener(android.media.AudioRecord$OnRecordPositionUpdateListener, android.os.Handler);
-    public void startRecording();
-    public void startRecording(android.media.MediaSyncEvent);
-    public void stop();
-
-
-    public static int ERROR;
-    public static int ERROR_BAD_VALUE;
-    public static int ERROR_DEAD_OBJECT;
-    public static int ERROR_INVALID_OPERATION;
-    public static int READ_BLOCKING;
-    public static int READ_NON_BLOCKING;
-    public static int RECORDSTATE_RECORDING;
-    public static int RECORDSTATE_STOPPED;
-    public static int STATE_INITIALIZED;
-    public static int STATE_UNINITIALIZED;
-    public static java.lang.String SUBMIX_FIXED_VOLUME;
-    public static int SUCCESS;
-}
-
--keep class android.media.AudioRecord$OnRecordPositionUpdateListener {
-
-    public abstract void onMarkerReached(android.media.AudioRecord);
-    public abstract void onPeriodicNotification(android.media.AudioRecord);
-
-
-}
-
--keep class android.media.AudioRecord$OnRoutingChangedListener {
-
-    public abstract void onRoutingChanged(android.media.AudioRecord);
-    public void onRoutingChanged(android.media.AudioRouting);
-
-
-}
-
--keep class android.media.AudioRouting {
-
-    public abstract void addOnRoutingChangedListener(android.media.AudioRouting$OnRoutingChangedListener, android.os.Handler);
-    public abstract android.media.AudioDeviceInfo getPreferredDevice();
-    public abstract android.media.AudioDeviceInfo getRoutedDevice();
-    public abstract void removeOnRoutingChangedListener(android.media.AudioRouting$OnRoutingChangedListener);
-    public abstract boolean setPreferredDevice(android.media.AudioDeviceInfo);
-
-
-}
-
--keep class android.media.AudioRouting$OnRoutingChangedListener {
-
-    public abstract void onRoutingChanged(android.media.AudioRouting);
-
-
-}
-
--keep class android.media.AudioTimestamp {
-    <init>();
-
-
-
-    public static int TIMEBASE_BOOTTIME;
-    public static int TIMEBASE_MONOTONIC;
-    public long framePosition;
-    public long nanoTime;
-}
-
--keep class android.media.IRemoteVolumeController {
-
-    public abstract void remoteVolumeChanged(android.media.session.ISessionController, int);
-    public abstract void updateRemoteController(android.media.session.ISessionController);
-
-
-}
-
--keep class android.media.MediaDescription {
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public java.lang.CharSequence getDescription();
-    public android.os.Bundle getExtras();
-    public android.graphics.Bitmap getIconBitmap();
-    public android.net.Uri getIconUri();
-    public java.lang.String getMediaId();
-    public android.net.Uri getMediaUri();
-    public java.lang.CharSequence getSubtitle();
-    public java.lang.CharSequence getTitle();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static long BT_FOLDER_TYPE_ALBUMS;
-    public static long BT_FOLDER_TYPE_ARTISTS;
-    public static long BT_FOLDER_TYPE_GENRES;
-    public static long BT_FOLDER_TYPE_MIXED;
-    public static long BT_FOLDER_TYPE_PLAYLISTS;
-    public static long BT_FOLDER_TYPE_TITLES;
-    public static long BT_FOLDER_TYPE_YEARS;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String EXTRA_BT_FOLDER_TYPE;
-}
-
--keep class android.media.MediaMetadata {
-
-    public boolean containsKey(java.lang.String);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.graphics.Bitmap getBitmap(java.lang.String);
-    public android.media.MediaDescription getDescription();
-    public static java.lang.String getKeyFromMetadataEditorKey(int);
-    public long getLong(java.lang.String);
-    public android.media.Rating getRating(java.lang.String);
-    public java.lang.String getString(java.lang.String);
-    public java.lang.CharSequence getText(java.lang.String);
-    public int hashCode();
-    public java.util.Set keySet();
-    public int size();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String METADATA_KEY_ALBUM;
-    public static java.lang.String METADATA_KEY_ALBUM_ART;
-    public static java.lang.String METADATA_KEY_ALBUM_ARTIST;
-    public static java.lang.String METADATA_KEY_ALBUM_ART_URI;
-    public static java.lang.String METADATA_KEY_ART;
-    public static java.lang.String METADATA_KEY_ARTIST;
-    public static java.lang.String METADATA_KEY_ART_URI;
-    public static java.lang.String METADATA_KEY_AUTHOR;
-    public static java.lang.String METADATA_KEY_BT_FOLDER_TYPE;
-    public static java.lang.String METADATA_KEY_COMPILATION;
-    public static java.lang.String METADATA_KEY_COMPOSER;
-    public static java.lang.String METADATA_KEY_DATE;
-    public static java.lang.String METADATA_KEY_DISC_NUMBER;
-    public static java.lang.String METADATA_KEY_DISPLAY_DESCRIPTION;
-    public static java.lang.String METADATA_KEY_DISPLAY_ICON;
-    public static java.lang.String METADATA_KEY_DISPLAY_ICON_URI;
-    public static java.lang.String METADATA_KEY_DISPLAY_SUBTITLE;
-    public static java.lang.String METADATA_KEY_DISPLAY_TITLE;
-    public static java.lang.String METADATA_KEY_DURATION;
-    public static java.lang.String METADATA_KEY_GENRE;
-    public static java.lang.String METADATA_KEY_MEDIA_ID;
-    public static java.lang.String METADATA_KEY_MEDIA_URI;
-    public static java.lang.String METADATA_KEY_NUM_TRACKS;
-    public static java.lang.String METADATA_KEY_RATING;
-    public static java.lang.String METADATA_KEY_TITLE;
-    public static java.lang.String METADATA_KEY_TRACK_NUMBER;
-    public static java.lang.String METADATA_KEY_USER_RATING;
-    public static java.lang.String METADATA_KEY_WRITER;
-    public static java.lang.String METADATA_KEY_YEAR;
-}
-
--keep class android.media.MediaSyncEvent {
-
-    public static android.media.MediaSyncEvent createEvent(int);
-    public int getAudioSessionId();
-    public int getType();
-    public android.media.MediaSyncEvent setAudioSessionId(int);
-
-
-    public static int SYNC_EVENT_NONE;
-    public static int SYNC_EVENT_PRESENTATION_COMPLETE;
-}
-
--keep class android.media.MicrophoneInfo {
-
-    public java.lang.String getAddress();
-    public java.util.List getChannelMapping();
-    public java.lang.String getDescription();
-    public int getDirectionality();
-    public java.util.List getFrequencyResponse();
-    public int getGroup();
-    public int getId();
-    public int getIndexInTheGroup();
-    public int getInternalDeviceType();
-    public int getLocation();
-    public float getMaxSpl();
-    public float getMinSpl();
-    public android.media.MicrophoneInfo$Coordinate3F getOrientation();
-    public android.media.MicrophoneInfo$Coordinate3F getPosition();
-    public float getSensitivity();
-    public int getType();
-    public void setChannelMapping(java.util.List);
-    public void setId(int);
-
-
-    public static int CHANNEL_MAPPING_DIRECT;
-    public static int CHANNEL_MAPPING_PROCESSED;
-    public static int DIRECTIONALITY_BI_DIRECTIONAL;
-    public static int DIRECTIONALITY_CARDIOID;
-    public static int DIRECTIONALITY_HYPER_CARDIOID;
-    public static int DIRECTIONALITY_OMNI;
-    public static int DIRECTIONALITY_SUPER_CARDIOID;
-    public static int DIRECTIONALITY_UNKNOWN;
-    public static int GROUP_UNKNOWN;
-    public static int INDEX_IN_THE_GROUP_UNKNOWN;
-    public static int LOCATION_MAINBODY;
-    public static int LOCATION_MAINBODY_MOVABLE;
-    public static int LOCATION_PERIPHERAL;
-    public static int LOCATION_UNKNOWN;
-    public static android.media.MicrophoneInfo$Coordinate3F ORIENTATION_UNKNOWN;
-    public static android.media.MicrophoneInfo$Coordinate3F POSITION_UNKNOWN;
-    public static float SENSITIVITY_UNKNOWN;
-    public static float SPL_UNKNOWN;
-}
-
--keep class android.media.MicrophoneInfo$Coordinate3F {
-
-    public boolean equals(java.lang.Object);
-
-
-    public float x;
-    public float y;
-    public float z;
-}
-
--keep class android.media.Rating {
-
-    public int describeContents();
-    public float getPercentRating();
-    public int getRatingStyle();
-    public float getStarRating();
-    public boolean hasHeart();
-    public boolean isRated();
-    public boolean isThumbUp();
-    public static android.media.Rating newHeartRating(boolean);
-    public static android.media.Rating newPercentageRating(float);
-    public static android.media.Rating newStarRating(int, float);
-    public static android.media.Rating newThumbRating(boolean);
-    public static android.media.Rating newUnratedRating(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int RATING_3_STARS;
-    public static int RATING_4_STARS;
-    public static int RATING_5_STARS;
-    public static int RATING_HEART;
-    public static int RATING_NONE;
-    public static int RATING_PERCENTAGE;
-    public static int RATING_THUMB_UP_DOWN;
-}
-
--keep class android.media.SessionToken2 {
-    <init>(android.content.Context, java.lang.String, java.lang.String);
-    <init>(android.content.Context, java.lang.String, java.lang.String, int);
-    <init>(android.media.update.SessionToken2Provider);
-
-    public boolean equals(java.lang.Object);
-    public static android.media.SessionToken2 fromBundle(android.os.Bundle);
-    public java.lang.String getId();
-    public java.lang.String getPackageName();
-    public android.media.update.SessionToken2Provider getProvider();
-    public int getType();
-    public int getUid();
-    public int hashCode();
-    public android.os.Bundle toBundle();
-    public java.lang.String toString();
-
-
-    public static int TYPE_LIBRARY_SERVICE;
-    public static int TYPE_SESSION;
-    public static int TYPE_SESSION_SERVICE;
-}
-
--keep class android.media.VolumeProvider {
-    <init>(int, int, int);
-
-    public int getCurrentVolume();
-    public int getMaxVolume();
-    public int getVolumeControl();
-    public void onAdjustVolume(int);
-    public void onSetVolumeTo(int);
-    public void setCallback(android.media.VolumeProvider$Callback);
-    public void setCurrentVolume(int);
-
-
-    public static int VOLUME_CONTROL_ABSOLUTE;
-    public static int VOLUME_CONTROL_FIXED;
-    public static int VOLUME_CONTROL_RELATIVE;
-}
-
--keep class android.media.VolumeProvider$Callback {
-    <init>();
-
-    public abstract void onVolumeChanged(android.media.VolumeProvider);
-
-
-}
-
--keep class android.media.projection.IMediaProjection {
-
-    public abstract int applyVirtualDisplayFlags(int);
-    public abstract boolean canProjectAudio();
-    public abstract boolean canProjectSecureVideo();
-    public abstract boolean canProjectVideo();
-    public abstract void registerCallback(android.media.projection.IMediaProjectionCallback);
-    public abstract void start(android.media.projection.IMediaProjectionCallback);
-    public abstract void stop();
-    public abstract void unregisterCallback(android.media.projection.IMediaProjectionCallback);
-
-
-}
-
--keep class android.media.projection.IMediaProjectionCallback {
-
-    public abstract void onStop();
-
-
-}
-
--keep class android.media.projection.MediaProjection {
-    <init>(android.content.Context, android.media.projection.IMediaProjection);
-
-    public android.media.AudioRecord createAudioRecord(int, int, int, int);
-    public android.hardware.display.VirtualDisplay createVirtualDisplay(java.lang.String, int, int, int, boolean, android.view.Surface, android.hardware.display.VirtualDisplay$Callback, android.os.Handler);
-    public android.hardware.display.VirtualDisplay createVirtualDisplay(java.lang.String, int, int, int, int, android.view.Surface, android.hardware.display.VirtualDisplay$Callback, android.os.Handler);
-    public android.media.projection.IMediaProjection getProjection();
-    public void registerCallback(android.media.projection.MediaProjection$Callback, android.os.Handler);
-    public void stop();
-    public void unregisterCallback(android.media.projection.MediaProjection$Callback);
-
-
-}
-
--keep class android.media.projection.MediaProjection$Callback {
-    <init>();
-
-    public void onStop();
-
-
-}
-
--keep class android.media.session.ISession {
-
-    public abstract void destroy();
-    public abstract android.media.session.ISessionController getController();
-    public abstract void sendEvent(java.lang.String, android.os.Bundle);
-    public abstract void setActive(boolean);
-    public abstract void setCurrentVolume(int);
-    public abstract void setExtras(android.os.Bundle);
-    public abstract void setFlags(int);
-    public abstract void setLaunchPendingIntent(android.app.PendingIntent);
-    public abstract void setMediaButtonReceiver(android.app.PendingIntent);
-    public abstract void setMetadata(android.media.MediaMetadata);
-    public abstract void setPlaybackState(android.media.session.PlaybackState);
-    public abstract void setPlaybackToLocal(android.media.AudioAttributes);
-    public abstract void setPlaybackToRemote(int, int);
-    public abstract void setQueue(android.content.pm.ParceledListSlice);
-    public abstract void setQueueTitle(java.lang.CharSequence);
-    public abstract void setRatingType(int);
-
-
-}
-
--keep class android.media.session.ISessionCallback {
-
-    public abstract void onAdjustVolume(java.lang.String, int, int, android.media.session.ISessionControllerCallback, int);
-    public abstract void onCommand(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle, android.os.ResultReceiver);
-    public abstract void onCustomAction(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void onFastForward(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public abstract void onMediaButton(java.lang.String, int, int, android.content.Intent, int, android.os.ResultReceiver);
-    public abstract void onMediaButtonFromController(java.lang.String, int, int, android.media.session.ISessionControllerCallback, android.content.Intent);
-    public abstract void onNext(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public abstract void onPause(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public abstract void onPlay(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public abstract void onPlayFromMediaId(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void onPlayFromSearch(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void onPlayFromUri(java.lang.String, int, int, android.media.session.ISessionControllerCallback, android.net.Uri, android.os.Bundle);
-    public abstract void onPrepare(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public abstract void onPrepareFromMediaId(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void onPrepareFromSearch(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void onPrepareFromUri(java.lang.String, int, int, android.media.session.ISessionControllerCallback, android.net.Uri, android.os.Bundle);
-    public abstract void onPrevious(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public abstract void onRate(java.lang.String, int, int, android.media.session.ISessionControllerCallback, android.media.Rating);
-    public abstract void onRewind(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public abstract void onSeekTo(java.lang.String, int, int, android.media.session.ISessionControllerCallback, long);
-    public abstract void onSetVolumeTo(java.lang.String, int, int, android.media.session.ISessionControllerCallback, int);
-    public abstract void onSkipToTrack(java.lang.String, int, int, android.media.session.ISessionControllerCallback, long);
-    public abstract void onStop(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-
-
-}
-
--keep class android.media.session.ISessionCallback$Stub {
-    <init>();
-
-    public android.os.IBinder asBinder();
-    public static android.media.session.ISessionCallback asInterface(android.os.IBinder);
-    public boolean onTransact(int, android.os.Parcel, android.os.Parcel, int);
-
-
-}
-
--keep class android.media.session.ISessionController {
-
-    public abstract void adjustVolume(java.lang.String, android.media.session.ISessionControllerCallback, boolean, int, int);
-    public abstract void fastForward(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract android.os.Bundle getExtras();
-    public abstract long getFlags();
-    public abstract android.app.PendingIntent getLaunchPendingIntent();
-    public abstract android.media.MediaMetadata getMetadata();
-    public abstract java.lang.String getPackageName();
-    public abstract android.media.session.PlaybackState getPlaybackState();
-    public abstract android.content.pm.ParceledListSlice getQueue();
-    public abstract java.lang.CharSequence getQueueTitle();
-    public abstract int getRatingType();
-    public abstract java.lang.String getTag();
-    public abstract android.media.session.ParcelableVolumeInfo getVolumeAttributes();
-    public abstract boolean isTransportControlEnabled();
-    public abstract void next(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract void pause(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract void play(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract void playFromMediaId(java.lang.String, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void playFromSearch(java.lang.String, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void playFromUri(java.lang.String, android.media.session.ISessionControllerCallback, android.net.Uri, android.os.Bundle);
-    public abstract void prepare(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract void prepareFromMediaId(java.lang.String, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void prepareFromSearch(java.lang.String, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract void prepareFromUri(java.lang.String, android.media.session.ISessionControllerCallback, android.net.Uri, android.os.Bundle);
-    public abstract void previous(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract void rate(java.lang.String, android.media.session.ISessionControllerCallback, android.media.Rating);
-    public abstract void registerCallbackListener(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract void rewind(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract void seekTo(java.lang.String, android.media.session.ISessionControllerCallback, long);
-    public abstract void sendCommand(java.lang.String, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle, android.os.ResultReceiver);
-    public abstract void sendCustomAction(java.lang.String, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public abstract boolean sendMediaButton(java.lang.String, android.media.session.ISessionControllerCallback, boolean, android.view.KeyEvent);
-    public abstract void setVolumeTo(java.lang.String, android.media.session.ISessionControllerCallback, int, int);
-    public abstract void skipToQueueItem(java.lang.String, android.media.session.ISessionControllerCallback, long);
-    public abstract void stop(java.lang.String, android.media.session.ISessionControllerCallback);
-    public abstract void unregisterCallbackListener(android.media.session.ISessionControllerCallback);
-
-
-}
-
--keep class android.media.session.ISessionControllerCallback {
-
-    public abstract void onEvent(java.lang.String, android.os.Bundle);
-    public abstract void onExtrasChanged(android.os.Bundle);
-    public abstract void onMetadataChanged(android.media.MediaMetadata);
-    public abstract void onPlaybackStateChanged(android.media.session.PlaybackState);
-    public abstract void onQueueChanged(android.content.pm.ParceledListSlice);
-    public abstract void onQueueTitleChanged(java.lang.CharSequence);
-    public abstract void onSessionDestroyed();
-    public abstract void onVolumeInfoChanged(android.media.session.ParcelableVolumeInfo);
-
-
-}
-
--keep class android.media.session.MediaController {
-    <init>(android.content.Context, android.media.session.ISessionController);
-    <init>(android.content.Context, android.media.session.MediaSession$Token);
-
-    public void adjustVolume(int, int);
-    public boolean controlsSameSession(android.media.session.MediaController);
-    public boolean dispatchMediaButtonEvent(android.view.KeyEvent);
-    public boolean dispatchMediaButtonEventAsSystemService(android.view.KeyEvent);
-    public void dispatchVolumeButtonEventAsSystemService(android.view.KeyEvent);
-    public android.os.Bundle getExtras();
-    public long getFlags();
-    public android.media.MediaMetadata getMetadata();
-    public java.lang.String getPackageName();
-    public android.media.session.MediaController$PlaybackInfo getPlaybackInfo();
-    public android.media.session.PlaybackState getPlaybackState();
-    public java.util.List getQueue();
-    public java.lang.CharSequence getQueueTitle();
-    public int getRatingType();
-    public android.app.PendingIntent getSessionActivity();
-    public android.media.session.MediaSession$Token getSessionToken();
-    public java.lang.String getTag();
-    public android.media.session.MediaController$TransportControls getTransportControls();
-    public void registerCallback(android.media.session.MediaController$Callback);
-    public void registerCallback(android.media.session.MediaController$Callback, android.os.Handler);
-    public void sendCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
-    public void setVolumeTo(int, int);
-    public void unregisterCallback(android.media.session.MediaController$Callback);
-
-
-}
-
--keep class android.media.session.MediaController$Callback {
-    <init>();
-
-    public void onAudioInfoChanged(android.media.session.MediaController$PlaybackInfo);
-    public void onExtrasChanged(android.os.Bundle);
-    public void onMetadataChanged(android.media.MediaMetadata);
-    public void onPlaybackStateChanged(android.media.session.PlaybackState);
-    public void onQueueChanged(java.util.List);
-    public void onQueueTitleChanged(java.lang.CharSequence);
-    public void onSessionDestroyed();
-    public void onSessionEvent(java.lang.String, android.os.Bundle);
-
-
-}
-
--keep class android.media.session.MediaController$PlaybackInfo {
-    <init>(int, android.media.AudioAttributes, int, int, int);
-
-    public android.media.AudioAttributes getAudioAttributes();
-    public int getCurrentVolume();
-    public int getMaxVolume();
-    public int getPlaybackType();
-    public int getVolumeControl();
-
-
-    public static int PLAYBACK_TYPE_LOCAL;
-    public static int PLAYBACK_TYPE_REMOTE;
-}
-
--keep class android.media.session.MediaController$TransportControls {
-
-    public void fastForward();
-    public void pause();
-    public void play();
-    public void playFromMediaId(java.lang.String, android.os.Bundle);
-    public void playFromSearch(java.lang.String, android.os.Bundle);
-    public void playFromUri(android.net.Uri, android.os.Bundle);
-    public void prepare();
-    public void prepareFromMediaId(java.lang.String, android.os.Bundle);
-    public void prepareFromSearch(java.lang.String, android.os.Bundle);
-    public void prepareFromUri(android.net.Uri, android.os.Bundle);
-    public void rewind();
-    public void seekTo(long);
-    public void sendCustomAction(android.media.session.PlaybackState$CustomAction, android.os.Bundle);
-    public void sendCustomAction(java.lang.String, android.os.Bundle);
-    public void setRating(android.media.Rating);
-    public void skipToNext();
-    public void skipToPrevious();
-    public void skipToQueueItem(long);
-    public void stop();
-
-
-}
-
--keep class android.media.session.MediaSession {
-    <init>(android.content.Context, java.lang.String);
-    <init>(android.content.Context, java.lang.String, int);
-
-    public java.lang.String getCallingPackage();
-    public android.media.session.MediaController getController();
-    public android.media.session.MediaSessionManager$RemoteUserInfo getCurrentControllerInfo();
-    public android.media.session.MediaSession$Token getSessionToken();
-    public boolean isActive();
-    public static boolean isActiveState(int);
-    public void notifyRemoteVolumeChanged(android.media.VolumeProvider);
-    public void release();
-    public void sendSessionEvent(java.lang.String, android.os.Bundle);
-    public void setActive(boolean);
-    public void setCallback(android.media.session.MediaSession$Callback);
-    public void setCallback(android.media.session.MediaSession$Callback, android.os.Handler);
-    public void setExtras(android.os.Bundle);
-    public void setFlags(int);
-    public void setMediaButtonReceiver(android.app.PendingIntent);
-    public void setMetadata(android.media.MediaMetadata);
-    public void setPlaybackState(android.media.session.PlaybackState);
-    public void setPlaybackToLocal(android.media.AudioAttributes);
-    public void setPlaybackToRemote(android.media.VolumeProvider);
-    public void setQueue(java.util.List);
-    public void setQueueTitle(java.lang.CharSequence);
-    public void setRatingType(int);
-    public void setSessionActivity(android.app.PendingIntent);
-
-
-    public static int FLAG_EXCLUSIVE_GLOBAL_PRIORITY;
-    public static int FLAG_HANDLES_MEDIA_BUTTONS;
-    public static int FLAG_HANDLES_TRANSPORT_CONTROLS;
-    public static int INVALID_PID;
-    public static int INVALID_UID;
-}
-
--keep class android.media.session.MediaSession$Callback {
-    <init>();
-
-    public void onCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
-    public void onCustomAction(java.lang.String, android.os.Bundle);
-    public void onFastForward();
-    public boolean onMediaButtonEvent(android.content.Intent);
-    public void onPause();
-    public void onPlay();
-    public void onPlayFromMediaId(java.lang.String, android.os.Bundle);
-    public void onPlayFromSearch(java.lang.String, android.os.Bundle);
-    public void onPlayFromUri(android.net.Uri, android.os.Bundle);
-    public void onPrepare();
-    public void onPrepareFromMediaId(java.lang.String, android.os.Bundle);
-    public void onPrepareFromSearch(java.lang.String, android.os.Bundle);
-    public void onPrepareFromUri(android.net.Uri, android.os.Bundle);
-    public void onRewind();
-    public void onSeekTo(long);
-    public void onSetRating(android.media.Rating);
-    public void onSkipToNext();
-    public void onSkipToPrevious();
-    public void onSkipToQueueItem(long);
-    public void onStop();
-
-
-}
-
--keep class android.media.session.MediaSession$CallbackStub {
-    <init>(android.media.session.MediaSession);
-
-    public void onAdjustVolume(java.lang.String, int, int, android.media.session.ISessionControllerCallback, int);
-    public void onCommand(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle, android.os.ResultReceiver);
-    public void onCustomAction(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public void onFastForward(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public void onMediaButton(java.lang.String, int, int, android.content.Intent, int, android.os.ResultReceiver);
-    public void onMediaButtonFromController(java.lang.String, int, int, android.media.session.ISessionControllerCallback, android.content.Intent);
-    public void onNext(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public void onPause(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public void onPlay(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public void onPlayFromMediaId(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public void onPlayFromSearch(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public void onPlayFromUri(java.lang.String, int, int, android.media.session.ISessionControllerCallback, android.net.Uri, android.os.Bundle);
-    public void onPrepare(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public void onPrepareFromMediaId(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public void onPrepareFromSearch(java.lang.String, int, int, android.media.session.ISessionControllerCallback, java.lang.String, android.os.Bundle);
-    public void onPrepareFromUri(java.lang.String, int, int, android.media.session.ISessionControllerCallback, android.net.Uri, android.os.Bundle);
-    public void onPrevious(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public void onRate(java.lang.String, int, int, android.media.session.ISessionControllerCallback, android.media.Rating);
-    public void onRewind(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-    public void onSeekTo(java.lang.String, int, int, android.media.session.ISessionControllerCallback, long);
-    public void onSetVolumeTo(java.lang.String, int, int, android.media.session.ISessionControllerCallback, int);
-    public void onSkipToTrack(java.lang.String, int, int, android.media.session.ISessionControllerCallback, long);
-    public void onStop(java.lang.String, int, int, android.media.session.ISessionControllerCallback);
-
-
-}
-
--keep class android.media.session.MediaSession$QueueItem {
-    <init>(android.media.MediaDescription, long);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.media.MediaDescription getDescription();
-    public long getQueueId();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int UNKNOWN_ID;
-}
-
--keep class android.media.session.MediaSession$Token {
-    <init>(android.media.session.ISessionController);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.media.session.MediaSessionManager {
-    <init>(android.content.Context);
-
-    public void addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager$OnActiveSessionsChangedListener, android.content.ComponentName);
-    public void addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager$OnActiveSessionsChangedListener, android.content.ComponentName, android.os.Handler);
-    public void addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager$OnActiveSessionsChangedListener, android.content.ComponentName, int, android.os.Handler);
-    public void addOnSessionTokensChangedListener(java.util.concurrent.Executor, android.media.session.MediaSessionManager$OnSessionTokensChangedListener);
-    public void addOnSessionTokensChangedListener(int, java.util.concurrent.Executor, android.media.session.MediaSessionManager$OnSessionTokensChangedListener);
-    public android.media.session.ISession createSession(android.media.session.MediaSession$CallbackStub, java.lang.String, int);
-    public boolean createSession2(android.media.SessionToken2);
-    public void destroySession2(android.media.SessionToken2);
-    public void dispatchAdjustVolume(int, int, int);
-    public void dispatchMediaKeyEvent(android.view.KeyEvent);
-    public void dispatchMediaKeyEvent(android.view.KeyEvent, boolean);
-    public void dispatchMediaKeyEventAsSystemService(android.view.KeyEvent);
-    public void dispatchVolumeKeyEvent(android.view.KeyEvent, int, boolean);
-    public void dispatchVolumeKeyEventAsSystemService(android.view.KeyEvent, int);
-    public java.util.List getActiveSessionTokens();
-    public java.util.List getActiveSessions(android.content.ComponentName);
-    public java.util.List getActiveSessionsForUser(android.content.ComponentName, int);
-    public java.util.List getAllSessionTokens();
-    public java.util.List getSessionServiceTokens();
-    public boolean isGlobalPriorityActive();
-    public boolean isTrustedForMediaControl(android.media.session.MediaSessionManager$RemoteUserInfo);
-    public void removeOnActiveSessionsChangedListener(android.media.session.MediaSessionManager$OnActiveSessionsChangedListener);
-    public void removeOnSessionTokensChangedListener(android.media.session.MediaSessionManager$OnSessionTokensChangedListener);
-    public void setCallback(android.media.session.MediaSessionManager$Callback, android.os.Handler);
-    public void setOnMediaKeyListener(android.media.session.MediaSessionManager$OnMediaKeyListener, android.os.Handler);
-    public void setOnVolumeKeyLongPressListener(android.media.session.MediaSessionManager$OnVolumeKeyLongPressListener, android.os.Handler);
-    public void setRemoteVolumeController(android.media.IRemoteVolumeController);
-
-
-    public static int RESULT_MEDIA_KEY_HANDLED;
-    public static int RESULT_MEDIA_KEY_NOT_HANDLED;
-}
-
--keep class android.media.session.MediaSessionManager$Callback {
-    <init>();
-
-    public abstract void onAddressedPlayerChanged(android.media.session.MediaSession$Token);
-    public abstract void onAddressedPlayerChanged(android.content.ComponentName);
-    public abstract void onMediaKeyEventDispatched(android.view.KeyEvent, android.media.session.MediaSession$Token);
-    public abstract void onMediaKeyEventDispatched(android.view.KeyEvent, android.content.ComponentName);
-
-
-}
-
--keep class android.media.session.MediaSessionManager$OnActiveSessionsChangedListener {
-
-    public abstract void onActiveSessionsChanged(java.util.List);
-
-
-}
-
--keep class android.media.session.MediaSessionManager$OnMediaKeyListener {
-
-    public abstract boolean onMediaKey(android.view.KeyEvent);
-
-
-}
-
--keep class android.media.session.MediaSessionManager$OnSessionTokensChangedListener {
-
-    public abstract void onSessionTokensChanged(java.util.List);
-
-
-}
-
--keep class android.media.session.MediaSessionManager$OnVolumeKeyLongPressListener {
-
-    public abstract void onVolumeKeyLongPress(android.view.KeyEvent);
-
-
-}
-
--keep class android.media.session.MediaSessionManager$RemoteUserInfo {
-    <init>(java.lang.String, int, int);
-    <init>(java.lang.String, int, int, android.os.IBinder);
-
-    public boolean equals(java.lang.Object);
-    public java.lang.String getPackageName();
-    public int getPid();
-    public int getUid();
-    public int hashCode();
-
-
-}
-
--keep class android.media.session.ParcelableVolumeInfo {
-    <init>(int, android.media.AudioAttributes, int, int, int);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.media.AudioAttributes audioAttrs;
-    public int controlType;
-    public int currentVolume;
-    public int maxVolume;
-    public int volumeType;
-}
-
--keep class android.media.session.PlaybackState {
-
-    public int describeContents();
-    public long getActions();
-    public static long getActionsFromRccControlFlags(int);
-    public long getActiveQueueItemId();
-    public long getBufferedPosition();
-    public java.util.List getCustomActions();
-    public java.lang.CharSequence getErrorMessage();
-    public android.os.Bundle getExtras();
-    public long getLastPositionUpdateTime();
-    public float getPlaybackSpeed();
-    public long getPosition();
-    public static int getRccControlFlagsFromActions(long);
-    public static int getRccStateFromState(int);
-    public int getState();
-    public static int getStateFromRccState(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static long ACTION_FAST_FORWARD;
-    public static long ACTION_PAUSE;
-    public static long ACTION_PLAY;
-    public static long ACTION_PLAY_FROM_MEDIA_ID;
-    public static long ACTION_PLAY_FROM_SEARCH;
-    public static long ACTION_PLAY_FROM_URI;
-    public static long ACTION_PLAY_PAUSE;
-    public static long ACTION_PREPARE;
-    public static long ACTION_PREPARE_FROM_MEDIA_ID;
-    public static long ACTION_PREPARE_FROM_SEARCH;
-    public static long ACTION_PREPARE_FROM_URI;
-    public static long ACTION_REWIND;
-    public static long ACTION_SEEK_TO;
-    public static long ACTION_SET_RATING;
-    public static long ACTION_SKIP_TO_NEXT;
-    public static long ACTION_SKIP_TO_PREVIOUS;
-    public static long ACTION_SKIP_TO_QUEUE_ITEM;
-    public static long ACTION_STOP;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static long PLAYBACK_POSITION_UNKNOWN;
-    public static int STATE_BUFFERING;
-    public static int STATE_CONNECTING;
-    public static int STATE_ERROR;
-    public static int STATE_FAST_FORWARDING;
-    public static int STATE_NONE;
-    public static int STATE_PAUSED;
-    public static int STATE_PLAYING;
-    public static int STATE_REWINDING;
-    public static int STATE_SKIPPING_TO_NEXT;
-    public static int STATE_SKIPPING_TO_PREVIOUS;
-    public static int STATE_SKIPPING_TO_QUEUE_ITEM;
-    public static int STATE_STOPPED;
-}
-
--keep class android.media.session.PlaybackState$CustomAction {
-
-    public int describeContents();
-    public java.lang.String getAction();
-    public android.os.Bundle getExtras();
-    public int getIcon();
-    public java.lang.CharSequence getName();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.media.update.SessionToken2Provider {
-
-    public abstract boolean equals_impl(java.lang.Object);
-    public abstract java.lang.String getId_imp();
-    public abstract java.lang.String getPackageName_impl();
-    public abstract int getType_impl();
-    public abstract int getUid_impl();
-    public abstract int hashCode_impl();
-    public abstract android.os.Bundle toBundle_impl();
-    public abstract java.lang.String toString_impl();
-
-
-}
-
--keep class android.net.Uri {
-
-    public abstract android.net.Uri$Builder buildUpon();
-    public void checkContentUriWithoutPermission(java.lang.String, int);
-    public void checkFileUriExposed(java.lang.String);
-    public int compareTo(android.net.Uri);
-    public int compareTo(java.lang.Object);
-    public static java.lang.String decode(java.lang.String);
-    public static java.lang.String encode(java.lang.String);
-    public static java.lang.String encode(java.lang.String, java.lang.String);
-    public boolean equals(java.lang.Object);
-    public static android.net.Uri fromFile(java.io.File);
-    public static android.net.Uri fromParts(java.lang.String, java.lang.String, java.lang.String);
-    public abstract java.lang.String getAuthority();
-    public boolean getBooleanQueryParameter(java.lang.String, boolean);
-    public android.net.Uri getCanonicalUri();
-    public abstract java.lang.String getEncodedAuthority();
-    public abstract java.lang.String getEncodedFragment();
-    public abstract java.lang.String getEncodedPath();
-    public abstract java.lang.String getEncodedQuery();
-    public abstract java.lang.String getEncodedSchemeSpecificPart();
-    public abstract java.lang.String getEncodedUserInfo();
-    public abstract java.lang.String getFragment();
-    public abstract java.lang.String getHost();
-    public abstract java.lang.String getLastPathSegment();
-    public abstract java.lang.String getPath();
-    public abstract java.util.List getPathSegments();
-    public abstract int getPort();
-    public abstract java.lang.String getQuery();
-    public java.lang.String getQueryParameter(java.lang.String);
-    public java.util.Set getQueryParameterNames();
-    public java.util.List getQueryParameters(java.lang.String);
-    public abstract java.lang.String getScheme();
-    public abstract java.lang.String getSchemeSpecificPart();
-    public abstract java.lang.String getUserInfo();
-    public int hashCode();
-    public boolean isAbsolute();
-    public abstract boolean isHierarchical();
-    public boolean isOpaque();
-    public boolean isPathPrefixMatch(android.net.Uri);
-    public abstract boolean isRelative();
-    public android.net.Uri normalizeScheme();
-    public static android.net.Uri parse(java.lang.String);
-    public java.lang.String toSafeString();
-    public abstract java.lang.String toString();
-    public static android.net.Uri withAppendedPath(android.net.Uri, java.lang.String);
-    public static void writeToParcel(android.os.Parcel, android.net.Uri);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.net.Uri EMPTY;
-}
-
--keep class android.net.Uri$Builder {
-    <init>();
-
-    public android.net.Uri$Builder appendEncodedPath(java.lang.String);
-    public android.net.Uri$Builder appendPath(java.lang.String);
-    public android.net.Uri$Builder appendQueryParameter(java.lang.String, java.lang.String);
-    public android.net.Uri$Builder authority(java.lang.String);
-    public android.net.Uri build();
-    public android.net.Uri$Builder clearQuery();
-    public android.net.Uri$Builder encodedAuthority(java.lang.String);
-    public android.net.Uri$Builder encodedFragment(java.lang.String);
-    public android.net.Uri$Builder encodedOpaquePart(java.lang.String);
-    public android.net.Uri$Builder encodedPath(java.lang.String);
-    public android.net.Uri$Builder encodedQuery(java.lang.String);
-    public android.net.Uri$Builder fragment(java.lang.String);
-    public android.net.Uri$Builder opaquePart(java.lang.String);
-    public android.net.Uri$Builder path(java.lang.String);
-    public android.net.Uri$Builder query(java.lang.String);
-    public android.net.Uri$Builder scheme(java.lang.String);
-    public java.lang.String toString();
-
-
-}
-
--keep class android.os.BaseBundle {
-
-    public void clear();
-    public boolean containsKey(java.lang.String);
-    public static void dumpStats(com.android.internal.util.IndentingPrintWriter, java.lang.String, java.lang.Object);
-    public static void dumpStats(com.android.internal.util.IndentingPrintWriter, android.util.SparseArray);
-    public static void dumpStats(com.android.internal.util.IndentingPrintWriter, android.os.BaseBundle);
-    public java.lang.Object get(java.lang.String);
-    public boolean getBoolean(java.lang.String);
-    public boolean getBoolean(java.lang.String, boolean);
-    public boolean[] getBooleanArray(java.lang.String);
-    public double getDouble(java.lang.String);
-    public double getDouble(java.lang.String, double);
-    public double[] getDoubleArray(java.lang.String);
-    public int getInt(java.lang.String);
-    public int getInt(java.lang.String, int);
-    public int[] getIntArray(java.lang.String);
-    public long getLong(java.lang.String);
-    public long getLong(java.lang.String, long);
-    public long[] getLongArray(java.lang.String);
-    public java.lang.String getPairValue();
-    public java.lang.String getString(java.lang.String);
-    public java.lang.String getString(java.lang.String, java.lang.String);
-    public java.lang.String[] getStringArray(java.lang.String);
-    public boolean isEmpty();
-    public boolean isEmptyParcel();
-    public boolean isParcelled();
-    public java.util.Set keySet();
-    public static boolean kindofEquals(android.os.BaseBundle, android.os.BaseBundle);
-    public boolean kindofEquals(android.os.BaseBundle);
-    public boolean maybeIsEmpty();
-    public void putAll(android.os.PersistableBundle);
-    public void putBoolean(java.lang.String, boolean);
-    public void putBooleanArray(java.lang.String, boolean[]);
-    public void putDouble(java.lang.String, double);
-    public void putDoubleArray(java.lang.String, double[]);
-    public void putInt(java.lang.String, int);
-    public void putIntArray(java.lang.String, int[]);
-    public void putLong(java.lang.String, long);
-    public void putLongArray(java.lang.String, long[]);
-    public void putString(java.lang.String, java.lang.String);
-    public void putStringArray(java.lang.String, java.lang.String[]);
-    public void remove(java.lang.String);
-    public static void setShouldDefuse(boolean);
-    public int size();
-
-
-    public int mFlags;
-}
-
--keep class android.os.Binder {
-    <init>();
-
-    public static android.os.IBinder allowBlocking(android.os.IBinder);
-    public void attachInterface(android.os.IInterface, java.lang.String);
-    public static void blockUntilThreadAvailable();
-    public static long clearCallingIdentity();
-    public static void copyAllowBlocking(android.os.IBinder, android.os.IBinder);
-    public static android.os.IBinder defaultBlocking(android.os.IBinder);
-    public static void disableTracing();
-    public void dump(java.io.FileDescriptor, java.lang.String[]);
-    protected void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public void dumpAsync(java.io.FileDescriptor, java.lang.String[]);
-    public static void enableTracing();
-    public static void flushPendingCommands();
-    public static int getCallingPid();
-    public static int getCallingUid();
-    public static android.os.UserHandle getCallingUserHandle();
-    public java.lang.String getInterfaceDescriptor();
-    public static int getThreadStrictModePolicy();
-    public static synchronized android.os.TransactionTracker getTransactionTracker();
-    public boolean isBinderAlive();
-    public static boolean isProxy(android.os.IInterface);
-    public static boolean isTracingEnabled();
-    public static void joinThreadPool();
-    public void linkToDeath(android.os.IBinder$DeathRecipient, int);
-    public void onShellCommand(java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor, java.lang.String[], android.os.ShellCallback, android.os.ResultReceiver);
-    protected boolean onTransact(int, android.os.Parcel, android.os.Parcel, int);
-    public boolean pingBinder();
-    public android.os.IInterface queryLocalInterface(java.lang.String);
-    public static void restoreCallingIdentity(long);
-    public static void setDumpDisabled(java.lang.String);
-    public static void setThreadStrictModePolicy(int);
-    public static void setWarnOnBlocking(boolean);
-    public void shellCommand(java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor, java.lang.String[], android.os.ShellCallback, android.os.ResultReceiver);
-    public boolean transact(int, android.os.Parcel, android.os.Parcel, int);
-    public boolean unlinkToDeath(android.os.IBinder$DeathRecipient, int);
-    public static void withCleanCallingIdentity(com.android.internal.util.FunctionalUtils$ThrowingRunnable);
-    public static java.lang.Object withCleanCallingIdentity(com.android.internal.util.FunctionalUtils$ThrowingSupplier);
-
-
-    public static boolean CHECK_PARCEL_SIZE;
-    public static boolean LOG_RUNTIME_EXCEPTION;
-}
-
--keep class android.os.Bundle {
-    <init>();
-    <init>(android.os.Parcel);
-    <init>(android.os.Parcel, int);
-    <init>(java.lang.ClassLoader);
-    <init>(int);
-    <init>(android.os.Bundle);
-    <init>(android.os.PersistableBundle);
-
-    public void clear();
-    public java.lang.Object clone();
-    public android.os.Bundle deepCopy();
-    public int describeContents();
-    public android.os.Bundle filterValues();
-    public static android.os.Bundle forPair(java.lang.String, java.lang.String);
-    public android.os.IBinder getBinder(java.lang.String);
-    public android.os.Bundle getBundle(java.lang.String);
-    public byte getByte(java.lang.String);
-    public java.lang.Byte getByte(java.lang.String, byte);
-    public byte[] getByteArray(java.lang.String);
-    public char getChar(java.lang.String);
-    public char getChar(java.lang.String, char);
-    public char[] getCharArray(java.lang.String);
-    public java.lang.CharSequence getCharSequence(java.lang.String);
-    public java.lang.CharSequence getCharSequence(java.lang.String, java.lang.CharSequence);
-    public java.lang.CharSequence[] getCharSequenceArray(java.lang.String);
-    public java.util.ArrayList getCharSequenceArrayList(java.lang.String);
-    public java.lang.ClassLoader getClassLoader();
-    public float getFloat(java.lang.String);
-    public float getFloat(java.lang.String, float);
-    public float[] getFloatArray(java.lang.String);
-    public android.os.IBinder getIBinder(java.lang.String);
-    public java.util.ArrayList getIntegerArrayList(java.lang.String);
-    public android.os.Parcelable getParcelable(java.lang.String);
-    public android.os.Parcelable[] getParcelableArray(java.lang.String);
-    public java.util.ArrayList getParcelableArrayList(java.lang.String);
-    public java.io.Serializable getSerializable(java.lang.String);
-    public short getShort(java.lang.String);
-    public short getShort(java.lang.String, short);
-    public short[] getShortArray(java.lang.String);
-    public int getSize();
-    public android.util.Size getSize(java.lang.String);
-    public android.util.SizeF getSizeF(java.lang.String);
-    public android.util.SparseArray getSparseParcelableArray(java.lang.String);
-    public java.util.ArrayList getStringArrayList(java.lang.String);
-    public boolean hasFileDescriptors();
-    public void putAll(android.os.Bundle);
-    public void putBinder(java.lang.String, android.os.IBinder);
-    public void putBundle(java.lang.String, android.os.Bundle);
-    public void putByte(java.lang.String, byte);
-    public void putByteArray(java.lang.String, byte[]);
-    public void putChar(java.lang.String, char);
-    public void putCharArray(java.lang.String, char[]);
-    public void putCharSequence(java.lang.String, java.lang.CharSequence);
-    public void putCharSequenceArray(java.lang.String, java.lang.CharSequence[]);
-    public void putCharSequenceArrayList(java.lang.String, java.util.ArrayList);
-    public void putFloat(java.lang.String, float);
-    public void putFloatArray(java.lang.String, float[]);
-    public void putIBinder(java.lang.String, android.os.IBinder);
-    public void putIntegerArrayList(java.lang.String, java.util.ArrayList);
-    public void putParcelable(java.lang.String, android.os.Parcelable);
-    public void putParcelableArray(java.lang.String, android.os.Parcelable[]);
-    public void putParcelableArrayList(java.lang.String, java.util.ArrayList);
-    public void putParcelableList(java.lang.String, java.util.List);
-    public void putSerializable(java.lang.String, java.io.Serializable);
-    public void putShort(java.lang.String, short);
-    public void putShortArray(java.lang.String, short[]);
-    public void putSize(java.lang.String, android.util.Size);
-    public void putSizeF(java.lang.String, android.util.SizeF);
-    public void putSparseParcelableArray(java.lang.String, android.util.SparseArray);
-    public void putStringArrayList(java.lang.String, java.util.ArrayList);
-    public void readFromParcel(android.os.Parcel);
-    public void remove(java.lang.String);
-    public boolean setAllowFds(boolean);
-    public void setClassLoader(java.lang.ClassLoader);
-    public void setDefusable(boolean);
-    public static android.os.Bundle setDefusable(android.os.Bundle, boolean);
-    public synchronized java.lang.String toShortString();
-    public synchronized java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.os.Bundle EMPTY;
-    public static android.os.Bundle STRIPPED;
-}
-
--keep class android.os.CancellationSignal {
-    <init>();
-
-    public void cancel();
-    public static android.os.ICancellationSignal createTransport();
-    public static android.os.CancellationSignal fromTransport(android.os.ICancellationSignal);
-    public boolean isCanceled();
-    public void setOnCancelListener(android.os.CancellationSignal$OnCancelListener);
-    public void setRemote(android.os.ICancellationSignal);
-    public void throwIfCanceled();
-
-
-}
-
--keep class android.os.CancellationSignal$OnCancelListener {
-
-    public abstract void onCancel();
-
-
-}
-
--keep class android.os.Debug {
-
-    public static void attachJvmtiAgent(java.lang.String, java.lang.String, java.lang.ClassLoader);
-    public static boolean cacheRegisterMap(java.lang.String);
-    public static void changeDebugPort(int);
-    public static long countInstancesOfClass(java.lang.Class);
-    public static void dumpHprofData(java.lang.String);
-    public static void dumpHprofData(java.lang.String, java.io.FileDescriptor);
-    public static void dumpHprofDataDdms();
-    public static boolean dumpJavaBacktraceToFileTimeout(int, java.lang.String, int);
-    public static boolean dumpNativeBacktraceToFileTimeout(int, java.lang.String, int);
-    public static void dumpNativeHeap(java.io.FileDescriptor);
-    public static void dumpNativeMallocInfo(java.io.FileDescriptor);
-    public static void dumpReferenceTables();
-    public static boolean dumpService(java.lang.String, java.io.FileDescriptor, java.lang.String[]);
-    public static void enableEmulatorTraceOutput();
-    public static int getBinderDeathObjectCount();
-    public static int getBinderLocalObjectCount();
-    public static int getBinderProxyObjectCount();
-    public static int getBinderReceivedTransactions();
-    public static int getBinderSentTransactions();
-    public static java.lang.String getCaller();
-    public static java.lang.String getCallers(int);
-    public static java.lang.String getCallers(int, int);
-    public static java.lang.String getCallers(int, java.lang.String);
-    public static int getGlobalAllocCount();
-    public static int getGlobalAllocSize();
-    public static int getGlobalClassInitCount();
-    public static int getGlobalClassInitTime();
-    public static int getGlobalExternalAllocCount();
-    public static int getGlobalExternalAllocSize();
-    public static int getGlobalExternalFreedCount();
-    public static int getGlobalExternalFreedSize();
-    public static int getGlobalFreedCount();
-    public static int getGlobalFreedSize();
-    public static int getGlobalGcInvocationCount();
-    public static int getLoadedClassCount();
-    public static void getMemInfo(long[]);
-    public static void getMemoryInfo(android.os.Debug$MemoryInfo);
-    public static void getMemoryInfo(int, android.os.Debug$MemoryInfo);
-    public static int getMethodTracingMode();
-    public static long getNativeHeapAllocatedSize();
-    public static long getNativeHeapFreeSize();
-    public static long getNativeHeapSize();
-    public static long getPss();
-    public static long getPss(int, long[], long[]);
-    public static java.lang.String getRuntimeStat(java.lang.String);
-    public static java.util.Map getRuntimeStats();
-    public static int getThreadAllocCount();
-    public static int getThreadAllocSize();
-    public static int getThreadExternalAllocCount();
-    public static int getThreadExternalAllocSize();
-    public static int getThreadGcInvocationCount();
-    public static java.lang.String getUnreachableMemory(int, boolean);
-    public static java.lang.String[] getVmFeatureList();
-    public static boolean isDebuggerConnected();
-    public static void printLoadedClasses(int);
-    public static void resetAllCounts();
-    public static void resetGlobalAllocCount();
-    public static void resetGlobalAllocSize();
-    public static void resetGlobalClassInitCount();
-    public static void resetGlobalClassInitTime();
-    public static void resetGlobalExternalAllocCount();
-    public static void resetGlobalExternalAllocSize();
-    public static void resetGlobalExternalFreedCount();
-    public static void resetGlobalExternalFreedSize();
-    public static void resetGlobalFreedCount();
-    public static void resetGlobalFreedSize();
-    public static void resetGlobalGcInvocationCount();
-    public static void resetThreadAllocCount();
-    public static void resetThreadAllocSize();
-    public static void resetThreadExternalAllocCount();
-    public static void resetThreadExternalAllocSize();
-    public static void resetThreadGcInvocationCount();
-    public static int setAllocationLimit(int);
-    public static void setFieldsOn(java.lang.Class);
-    public static void setFieldsOn(java.lang.Class, boolean);
-    public static int setGlobalAllocationLimit(int);
-    public static void startAllocCounting();
-    public static void startMethodTracing();
-    public static void startMethodTracing(java.lang.String);
-    public static void startMethodTracing(java.lang.String, int);
-    public static void startMethodTracing(java.lang.String, int, int);
-    public static void startMethodTracing(java.lang.String, java.io.FileDescriptor, int, int, boolean);
-    public static void startMethodTracingDdms(int, int, boolean, int);
-    public static void startMethodTracingSampling(java.lang.String, int, int);
-    public static void startNativeTracing();
-    public static void stopAllocCounting();
-    public static void stopMethodTracing();
-    public static void stopNativeTracing();
-    public static long threadCpuTimeNanos();
-    public static void waitForDebugger();
-    public static boolean waitingForDebugger();
-
-
-    public static int MEMINFO_BUFFERS;
-    public static int MEMINFO_CACHED;
-    public static int MEMINFO_COUNT;
-    public static int MEMINFO_FREE;
-    public static int MEMINFO_KERNEL_STACK;
-    public static int MEMINFO_MAPPED;
-    public static int MEMINFO_PAGE_TABLES;
-    public static int MEMINFO_SHMEM;
-    public static int MEMINFO_SLAB;
-    public static int MEMINFO_SLAB_RECLAIMABLE;
-    public static int MEMINFO_SLAB_UNRECLAIMABLE;
-    public static int MEMINFO_SWAP_FREE;
-    public static int MEMINFO_SWAP_TOTAL;
-    public static int MEMINFO_TOTAL;
-    public static int MEMINFO_VM_ALLOC_USED;
-    public static int MEMINFO_ZRAM_TOTAL;
-    public static int SHOW_CLASSLOADER;
-    public static int SHOW_FULL_DETAIL;
-    public static int SHOW_INITIALIZED;
-    public static int TRACE_COUNT_ALLOCS;
-}
-
--keep class android.os.Debug$MemoryInfo {
-    <init>();
-
-    public int describeContents();
-    public java.lang.String getMemoryStat(java.lang.String);
-    public java.util.Map getMemoryStats();
-    public static java.lang.String getOtherLabel(int);
-    public int getOtherPrivate(int);
-    public int getOtherPrivateClean(int);
-    public int getOtherPrivateDirty(int);
-    public int getOtherPss(int);
-    public int getOtherRss(int);
-    public int getOtherSharedClean(int);
-    public int getOtherSharedDirty(int);
-    public int getOtherSwappablePss(int);
-    public int getOtherSwappedOut(int);
-    public int getOtherSwappedOutPss(int);
-    public int getSummaryCode();
-    public int getSummaryGraphics();
-    public int getSummaryJavaHeap();
-    public int getSummaryNativeHeap();
-    public int getSummaryPrivateOther();
-    public int getSummaryStack();
-    public int getSummarySystem();
-    public int getSummaryTotalPss();
-    public int getSummaryTotalSwap();
-    public int getSummaryTotalSwapPss();
-    public int getTotalPrivateClean();
-    public int getTotalPrivateDirty();
-    public int getTotalPss();
-    public int getTotalRss();
-    public int getTotalSharedClean();
-    public int getTotalSharedDirty();
-    public int getTotalSwappablePss();
-    public int getTotalSwappedOut();
-    public int getTotalSwappedOutPss();
-    public int getTotalUss();
-    public boolean hasSwappedOutPss();
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int HEAP_DALVIK;
-    public static int HEAP_NATIVE;
-    public static int HEAP_UNKNOWN;
-    public static int NUM_CATEGORIES;
-    public static int NUM_DVK_STATS;
-    public static int NUM_OTHER_STATS;
-    public static int OFFSET_PRIVATE_CLEAN;
-    public static int OFFSET_PRIVATE_DIRTY;
-    public static int OFFSET_PSS;
-    public static int OFFSET_RSS;
-    public static int OFFSET_SHARED_CLEAN;
-    public static int OFFSET_SHARED_DIRTY;
-    public static int OFFSET_SWAPPABLE_PSS;
-    public static int OFFSET_SWAPPED_OUT;
-    public static int OFFSET_SWAPPED_OUT_PSS;
-    public static int OTHER_APK;
-    public static int OTHER_ART;
-    public static int OTHER_ART_APP;
-    public static int OTHER_ART_BOOT;
-    public static int OTHER_ASHMEM;
-    public static int OTHER_CURSOR;
-    public static int OTHER_DALVIK_LARGE;
-    public static int OTHER_DALVIK_NON_MOVING;
-    public static int OTHER_DALVIK_NORMAL;
-    public static int OTHER_DALVIK_OTHER;
-    public static int OTHER_DALVIK_OTHER_ACCOUNTING;
-    public static int OTHER_DALVIK_OTHER_CODE_CACHE;
-    public static int OTHER_DALVIK_OTHER_COMPILER_METADATA;
-    public static int OTHER_DALVIK_OTHER_INDIRECT_REFERENCE_TABLE;
-    public static int OTHER_DALVIK_OTHER_LINEARALLOC;
-    public static int OTHER_DALVIK_ZYGOTE;
-    public static int OTHER_DEX;
-    public static int OTHER_DEX_APP_DEX;
-    public static int OTHER_DEX_APP_VDEX;
-    public static int OTHER_DEX_BOOT_VDEX;
-    public static int OTHER_DVK_STAT_ART_END;
-    public static int OTHER_DVK_STAT_ART_START;
-    public static int OTHER_DVK_STAT_DALVIK_END;
-    public static int OTHER_DVK_STAT_DALVIK_OTHER_END;
-    public static int OTHER_DVK_STAT_DALVIK_OTHER_START;
-    public static int OTHER_DVK_STAT_DALVIK_START;
-    public static int OTHER_DVK_STAT_DEX_END;
-    public static int OTHER_DVK_STAT_DEX_START;
-    public static int OTHER_GL;
-    public static int OTHER_GL_DEV;
-    public static int OTHER_GRAPHICS;
-    public static int OTHER_JAR;
-    public static int OTHER_OAT;
-    public static int OTHER_OTHER_MEMTRACK;
-    public static int OTHER_SO;
-    public static int OTHER_STACK;
-    public static int OTHER_TTF;
-    public static int OTHER_UNKNOWN_DEV;
-    public static int OTHER_UNKNOWN_MAP;
-    public int dalvikPrivateClean;
-    public int dalvikPrivateDirty;
-    public int dalvikPss;
-    public int dalvikRss;
-    public int dalvikSharedClean;
-    public int dalvikSharedDirty;
-    public int dalvikSwappablePss;
-    public int dalvikSwappedOut;
-    public int dalvikSwappedOutPss;
-    public boolean hasSwappedOutPss;
-    public int nativePrivateClean;
-    public int nativePrivateDirty;
-    public int nativePss;
-    public int nativeRss;
-    public int nativeSharedClean;
-    public int nativeSharedDirty;
-    public int nativeSwappablePss;
-    public int nativeSwappedOut;
-    public int nativeSwappedOutPss;
-    public int otherPrivateClean;
-    public int otherPrivateDirty;
-    public int otherPss;
-    public int otherRss;
-    public int otherSharedClean;
-    public int otherSharedDirty;
-    public int otherSwappablePss;
-    public int otherSwappedOut;
-    public int otherSwappedOutPss;
-}
-
--keep class android.os.Handler {
-    <init>();
-    <init>(android.os.Handler$Callback);
-    <init>(android.os.Looper);
-    <init>(android.os.Looper, android.os.Handler$Callback);
-    <init>(boolean);
-    <init>(android.os.Handler$Callback, boolean);
-    <init>(android.os.Looper, android.os.Handler$Callback, boolean);
-
-    public static android.os.Handler createAsync(android.os.Looper);
-    public static android.os.Handler createAsync(android.os.Looper, android.os.Handler$Callback);
-    public void dispatchMessage(android.os.Message);
-    public void dump(android.util.Printer, java.lang.String);
-    public void dumpMine(android.util.Printer, java.lang.String);
-    public boolean executeOrSendMessage(android.os.Message);
-    public android.os.Looper getLooper();
-    public static android.os.Handler getMain();
-    public java.lang.String getMessageName(android.os.Message);
-    public java.lang.String getTraceName(android.os.Message);
-    public void handleMessage(android.os.Message);
-    public boolean hasCallbacks(java.lang.Runnable);
-    public boolean hasMessages(int);
-    public boolean hasMessages(int, java.lang.Object);
-    public boolean hasMessagesOrCallbacks();
-    public static android.os.Handler mainIfNull(android.os.Handler);
-    public android.os.Message obtainMessage();
-    public android.os.Message obtainMessage(int);
-    public android.os.Message obtainMessage(int, java.lang.Object);
-    public android.os.Message obtainMessage(int, int, int);
-    public android.os.Message obtainMessage(int, int, int, java.lang.Object);
-    public boolean post(java.lang.Runnable);
-    public boolean postAtFrontOfQueue(java.lang.Runnable);
-    public boolean postAtTime(java.lang.Runnable, long);
-    public boolean postAtTime(java.lang.Runnable, java.lang.Object, long);
-    public boolean postDelayed(java.lang.Runnable, long);
-    public boolean postDelayed(java.lang.Runnable, java.lang.Object, long);
-    public void removeCallbacks(java.lang.Runnable);
-    public void removeCallbacks(java.lang.Runnable, java.lang.Object);
-    public void removeCallbacksAndMessages(java.lang.Object);
-    public void removeMessages(int);
-    public void removeMessages(int, java.lang.Object);
-    public boolean runWithScissors(java.lang.Runnable, long);
-    public boolean sendEmptyMessage(int);
-    public boolean sendEmptyMessageAtTime(int, long);
-    public boolean sendEmptyMessageDelayed(int, long);
-    public boolean sendMessage(android.os.Message);
-    public boolean sendMessageAtFrontOfQueue(android.os.Message);
-    public boolean sendMessageAtTime(android.os.Message, long);
-    public boolean sendMessageDelayed(android.os.Message, long);
-    public java.lang.String toString();
-
-
-}
-
--keep class android.os.Handler$Callback {
-
-    public abstract boolean handleMessage(android.os.Message);
-
-
-}
-
--keep class android.os.IBinder {
-
-    public abstract void dump(java.io.FileDescriptor, java.lang.String[]);
-    public abstract void dumpAsync(java.io.FileDescriptor, java.lang.String[]);
-    public abstract java.lang.String getInterfaceDescriptor();
-    public abstract boolean isBinderAlive();
-    public abstract void linkToDeath(android.os.IBinder$DeathRecipient, int);
-    public abstract boolean pingBinder();
-    public abstract android.os.IInterface queryLocalInterface(java.lang.String);
-    public abstract void shellCommand(java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor, java.lang.String[], android.os.ShellCallback, android.os.ResultReceiver);
-    public abstract boolean transact(int, android.os.Parcel, android.os.Parcel, int);
-    public abstract boolean unlinkToDeath(android.os.IBinder$DeathRecipient, int);
-
-
-    public static int DUMP_TRANSACTION;
-    public static int FIRST_CALL_TRANSACTION;
-    public static int FLAG_ONEWAY;
-    public static int INTERFACE_TRANSACTION;
-    public static int LAST_CALL_TRANSACTION;
-    public static int LIKE_TRANSACTION;
-    public static int MAX_IPC_SIZE;
-    public static int PING_TRANSACTION;
-    public static int SHELL_COMMAND_TRANSACTION;
-    public static int SYSPROPS_TRANSACTION;
-    public static int TWEET_TRANSACTION;
-}
-
--keep class android.os.IBinder$DeathRecipient {
-
-    public abstract void binderDied();
-
-
-}
-
--keep class android.os.ICancellationSignal {
-
-    public abstract void cancel();
-
-
-}
-
--keep class android.os.IInterface {
-
-    public abstract android.os.IBinder asBinder();
-
-
-}
-
--keep class android.os.IProgressListener {
-
-    public abstract void onFinished(int, android.os.Bundle);
-    public abstract void onProgress(int, int, android.os.Bundle);
-    public abstract void onStarted(int, android.os.Bundle);
-
-
-}
-
--keep class android.os.IRemoteCallback {
-
-    public abstract void sendResult(android.os.Bundle);
-
-
-}
-
--keep class android.os.LocaleList {
-    <init>(java.util.Locale[]);
-    <init>(java.util.Locale, android.os.LocaleList);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static android.os.LocaleList forLanguageTags(java.lang.String);
-    public java.util.Locale get(int);
-    public static android.os.LocaleList getAdjustedDefault();
-    public static android.os.LocaleList getDefault();
-    public static android.os.LocaleList getEmptyLocaleList();
-    public java.util.Locale getFirstMatch(java.lang.String[]);
-    public int getFirstMatchIndex(java.lang.String[]);
-    public int getFirstMatchIndexWithEnglishSupported(java.util.Collection);
-    public int getFirstMatchIndexWithEnglishSupported(java.lang.String[]);
-    public java.util.Locale getFirstMatchWithEnglishSupported(java.lang.String[]);
-    public int hashCode();
-    public int indexOf(java.util.Locale);
-    public boolean isEmpty();
-    public static boolean isPseudoLocale(java.util.Locale);
-    public static boolean isPseudoLocalesOnly(java.lang.String[]);
-    public static void setDefault(android.os.LocaleList);
-    public static void setDefault(android.os.LocaleList, int);
-    public int size();
-    public java.lang.String toLanguageTags();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.os.Looper {
-
-    public void dump(android.util.Printer, java.lang.String);
-    public void dump(android.util.Printer, java.lang.String, android.os.Handler);
-    public static android.os.Looper getMainLooper();
-    public android.os.MessageQueue getQueue();
-    public java.lang.Thread getThread();
-    public boolean isCurrentThread();
-    public static void loop();
-    public static android.os.Looper myLooper();
-    public static android.os.MessageQueue myQueue();
-    public static void prepare();
-    public static void prepareMainLooper();
-    public void quit();
-    public void quitSafely();
-    public void setMessageLogging(android.util.Printer);
-    public void setSlowLogThresholdMs(long, long);
-    public void setTraceTag(long);
-    public java.lang.String toString();
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-}
-
--keep class android.os.Message {
-    <init>();
-
-    public void copyFrom(android.os.Message);
-    public int describeContents();
-    public java.lang.Runnable getCallback();
-    public android.os.Bundle getData();
-    public android.os.Handler getTarget();
-    public long getWhen();
-    public boolean isAsynchronous();
-    public static android.os.Message obtain();
-    public static android.os.Message obtain(android.os.Message);
-    public static android.os.Message obtain(android.os.Handler);
-    public static android.os.Message obtain(android.os.Handler, java.lang.Runnable);
-    public static android.os.Message obtain(android.os.Handler, int);
-    public static android.os.Message obtain(android.os.Handler, int, java.lang.Object);
-    public static android.os.Message obtain(android.os.Handler, int, int, int);
-    public static android.os.Message obtain(android.os.Handler, int, int, int, java.lang.Object);
-    public android.os.Bundle peekData();
-    public void recycle();
-    public void sendToTarget();
-    public void setAsynchronous(boolean);
-    public android.os.Message setCallback(java.lang.Runnable);
-    public void setData(android.os.Bundle);
-    public void setTarget(android.os.Handler);
-    public android.os.Message setWhat(int);
-    public java.lang.String toString();
-    public static void updateCheckRecycle(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public int arg1;
-    public int arg2;
-    public java.lang.Object obj;
-    public android.os.Messenger replyTo;
-    public static java.lang.Object sPoolSync;
-    public int sendingUid;
-    public int what;
-}
-
--keep class android.os.MessageQueue {
-
-    public void addIdleHandler(android.os.MessageQueue$IdleHandler);
-    public void addOnFileDescriptorEventListener(java.io.FileDescriptor, int, android.os.MessageQueue$OnFileDescriptorEventListener);
-    protected void finalize();
-    public boolean isIdle();
-    public boolean isPolling();
-    public int postSyncBarrier();
-    public void removeIdleHandler(android.os.MessageQueue$IdleHandler);
-    public void removeOnFileDescriptorEventListener(java.io.FileDescriptor);
-    public void removeSyncBarrier(int);
-
-
-}
-
--keep class android.os.MessageQueue$IdleHandler {
-
-    public abstract boolean queueIdle();
-
-
-}
-
--keep class android.os.MessageQueue$OnFileDescriptorEventListener {
-
-    public abstract int onFileDescriptorEvents(java.io.FileDescriptor, int);
-
-
-    public static int EVENT_ERROR;
-    public static int EVENT_INPUT;
-    public static int EVENT_OUTPUT;
-}
-
--keep class android.os.Messenger {
-    <init>(android.os.Handler);
-    <init>(android.os.IBinder);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.os.IBinder getBinder();
-    public int hashCode();
-    public static android.os.Messenger readMessengerOrNullFromParcel(android.os.Parcel);
-    public void send(android.os.Message);
-    public static void writeMessengerOrNullToParcel(android.os.Messenger, android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.os.Parcel {
-
-    public void adoptClassCookies(android.os.Parcel);
-    public void appendFrom(android.os.Parcel, int, int);
-    public int compareData(android.os.Parcel);
-    public java.util.Map copyClassCookies();
-    public android.os.IBinder[] createBinderArray();
-    public java.util.ArrayList createBinderArrayList();
-    public boolean[] createBooleanArray();
-    public byte[] createByteArray();
-    public char[] createCharArray();
-    public double[] createDoubleArray();
-    public float[] createFloatArray();
-    public int[] createIntArray();
-    public long[] createLongArray();
-    public java.io.FileDescriptor[] createRawFileDescriptorArray();
-    public java.lang.String[] createStringArray();
-    public java.util.ArrayList createStringArrayList();
-    public java.lang.Object[] createTypedArray(android.os.Parcelable$Creator);
-    public java.util.ArrayList createTypedArrayList(android.os.Parcelable$Creator);
-    public int dataAvail();
-    public int dataCapacity();
-    public int dataPosition();
-    public int dataSize();
-    public void enforceInterface(java.lang.String);
-    protected void finalize();
-    public long getBlobAshmemSize();
-    public java.lang.Object getClassCookie(java.lang.Class);
-    public static long getGlobalAllocCount();
-    public static long getGlobalAllocSize();
-    public boolean hasFileDescriptors();
-    public boolean hasReadWriteHelper();
-    public byte[] marshall();
-    public static android.os.Parcel obtain();
-    protected static android.os.Parcel obtain(int);
-    protected static android.os.Parcel obtain(long);
-    public boolean pushAllowFds(boolean);
-    public void putClassCookies(java.util.Map);
-    public java.lang.Object[] readArray(java.lang.ClassLoader);
-    public java.util.ArrayList readArrayList(java.lang.ClassLoader);
-    public void readArrayMap(android.util.ArrayMap, java.lang.ClassLoader);
-    public android.util.ArraySet readArraySet(java.lang.ClassLoader);
-    public void readBinderArray(android.os.IBinder[]);
-    public void readBinderList(java.util.List);
-    public byte[] readBlob();
-    public boolean readBoolean();
-    public void readBooleanArray(boolean[]);
-    public android.os.Bundle readBundle();
-    public android.os.Bundle readBundle(java.lang.ClassLoader);
-    public byte readByte();
-    public void readByteArray(byte[]);
-    public void readCharArray(char[]);
-    public java.lang.CharSequence readCharSequence();
-    public java.lang.CharSequence[] readCharSequenceArray();
-    public java.util.ArrayList readCharSequenceList();
-    public android.os.Parcelable readCreator(android.os.Parcelable$Creator, java.lang.ClassLoader);
-    public double readDouble();
-    public void readDoubleArray(double[]);
-    public void readException();
-    public void readException(int, java.lang.String);
-    public int readExceptionCode();
-    public android.os.ParcelFileDescriptor readFileDescriptor();
-    public float readFloat();
-    public void readFloatArray(float[]);
-    public java.util.HashMap readHashMap(java.lang.ClassLoader);
-    public int readInt();
-    public void readIntArray(int[]);
-    public void readList(java.util.List, java.lang.ClassLoader);
-    public long readLong();
-    public void readLongArray(long[]);
-    public void readMap(java.util.Map, java.lang.ClassLoader);
-    public android.os.Parcelable readParcelable(java.lang.ClassLoader);
-    public android.os.Parcelable[] readParcelableArray(java.lang.ClassLoader);
-    public android.os.Parcelable[] readParcelableArray(java.lang.ClassLoader, java.lang.Class);
-    public android.os.Parcelable$Creator readParcelableCreator(java.lang.ClassLoader);
-    public java.util.List readParcelableList(java.util.List, java.lang.ClassLoader);
-    public android.os.PersistableBundle readPersistableBundle();
-    public android.os.PersistableBundle readPersistableBundle(java.lang.ClassLoader);
-    public java.io.FileDescriptor readRawFileDescriptor();
-    public void readRawFileDescriptorArray(java.io.FileDescriptor[]);
-    public java.io.Serializable readSerializable();
-    public android.util.Size readSize();
-    public android.util.SizeF readSizeF();
-    public android.util.SparseArray readSparseArray(java.lang.ClassLoader);
-    public android.util.SparseBooleanArray readSparseBooleanArray();
-    public android.util.SparseIntArray readSparseIntArray();
-    public java.lang.String readString();
-    public void readStringArray(java.lang.String[]);
-    public java.lang.String[] readStringArray();
-    public void readStringList(java.util.List);
-    public java.lang.String readStringNoHelper();
-    public android.os.IBinder readStrongBinder();
-    public void readTypedArray(java.lang.Object[], android.os.Parcelable$Creator);
-    public java.lang.Object[] readTypedArray(android.os.Parcelable$Creator);
-    public void readTypedList(java.util.List, android.os.Parcelable$Creator);
-    public java.lang.Object readTypedObject(android.os.Parcelable$Creator);
-    public java.lang.Object readValue(java.lang.ClassLoader);
-    public void recycle();
-    public void restoreAllowFds(boolean);
-    public void setClassCookie(java.lang.Class, java.lang.Object);
-    public void setDataCapacity(int);
-    public void setDataPosition(int);
-    public void setDataSize(int);
-    public void setReadWriteHelper(android.os.Parcel$ReadWriteHelper);
-    public static void setStackTraceParceling(boolean);
-    public void unmarshall(byte[], int, int);
-    public void writeArray(java.lang.Object[]);
-    public void writeArrayMap(android.util.ArrayMap);
-    public void writeArraySet(android.util.ArraySet);
-    public void writeBinderArray(android.os.IBinder[]);
-    public void writeBinderList(java.util.List);
-    public void writeBlob(byte[]);
-    public void writeBlob(byte[], int, int);
-    public void writeBoolean(boolean);
-    public void writeBooleanArray(boolean[]);
-    public void writeBundle(android.os.Bundle);
-    public void writeByte(byte);
-    public void writeByteArray(byte[]);
-    public void writeByteArray(byte[], int, int);
-    public void writeCharArray(char[]);
-    public void writeCharSequence(java.lang.CharSequence);
-    public void writeCharSequenceArray(java.lang.CharSequence[]);
-    public void writeCharSequenceList(java.util.ArrayList);
-    public void writeDouble(double);
-    public void writeDoubleArray(double[]);
-    public void writeException(java.lang.Exception);
-    public void writeFileDescriptor(java.io.FileDescriptor);
-    public void writeFloat(float);
-    public void writeFloatArray(float[]);
-    public void writeInt(int);
-    public void writeIntArray(int[]);
-    public void writeInterfaceToken(java.lang.String);
-    public void writeList(java.util.List);
-    public void writeLong(long);
-    public void writeLongArray(long[]);
-    public void writeMap(java.util.Map);
-    public void writeNoException();
-    public void writeParcelable(android.os.Parcelable, int);
-    public void writeParcelableArray(android.os.Parcelable[], int);
-    public void writeParcelableCreator(android.os.Parcelable);
-    public void writeParcelableList(java.util.List, int);
-    public void writePersistableBundle(android.os.PersistableBundle);
-    public void writeRawFileDescriptor(java.io.FileDescriptor);
-    public void writeRawFileDescriptorArray(java.io.FileDescriptor[]);
-    public void writeSerializable(java.io.Serializable);
-    public void writeSize(android.util.Size);
-    public void writeSizeF(android.util.SizeF);
-    public void writeSparseArray(android.util.SparseArray);
-    public void writeSparseBooleanArray(android.util.SparseBooleanArray);
-    public void writeSparseIntArray(android.util.SparseIntArray);
-    public void writeString(java.lang.String);
-    public void writeStringArray(java.lang.String[]);
-    public void writeStringList(java.util.List);
-    public void writeStringNoHelper(java.lang.String);
-    public void writeStrongBinder(android.os.IBinder);
-    public void writeStrongInterface(android.os.IInterface);
-    public void writeTypedArray(android.os.Parcelable[], int);
-    public void writeTypedList(java.util.List);
-    public void writeTypedList(java.util.List, int);
-    public void writeTypedObject(android.os.Parcelable, int);
-    public void writeValue(java.lang.Object);
-
-
-    public static android.os.Parcelable$Creator STRING_CREATOR;
-}
-
--keep class android.os.Parcel$ReadWriteHelper {
-    <init>();
-
-    public java.lang.String readString(android.os.Parcel);
-    public void writeString(android.os.Parcel, java.lang.String);
-
-
-    public static android.os.Parcel$ReadWriteHelper DEFAULT;
-}
-
--keep class android.os.ParcelFileDescriptor {
-    <init>(android.os.ParcelFileDescriptor);
-    <init>(java.io.FileDescriptor);
-    <init>(java.io.FileDescriptor, java.io.FileDescriptor);
-
-    public static android.os.ParcelFileDescriptor adoptFd(int);
-    public boolean canDetectErrors();
-    public void checkError();
-    public void close();
-    public void closeWithError(java.lang.String);
-    public static android.os.ParcelFileDescriptor[] createPipe();
-    public static android.os.ParcelFileDescriptor[] createReliablePipe();
-    public static android.os.ParcelFileDescriptor[] createReliableSocketPair();
-    public static android.os.ParcelFileDescriptor[] createReliableSocketPair(int);
-    public static android.os.ParcelFileDescriptor[] createSocketPair();
-    public static android.os.ParcelFileDescriptor[] createSocketPair(int);
-    public int describeContents();
-    public int detachFd();
-    public static android.os.ParcelFileDescriptor dup(java.io.FileDescriptor);
-    public android.os.ParcelFileDescriptor dup();
-    protected void finalize();
-    public static android.os.ParcelFileDescriptor fromData(byte[], java.lang.String);
-    public static android.os.ParcelFileDescriptor fromDatagramSocket(java.net.DatagramSocket);
-    public static android.os.ParcelFileDescriptor fromFd(java.io.FileDescriptor, android.os.Handler, android.os.ParcelFileDescriptor$OnCloseListener);
-    public static android.os.ParcelFileDescriptor fromFd(int);
-    public static android.os.ParcelFileDescriptor fromSocket(java.net.Socket);
-    public int getFd();
-    public static java.io.File getFile(java.io.FileDescriptor);
-    public java.io.FileDescriptor getFileDescriptor();
-    public long getStatSize();
-    public static android.os.ParcelFileDescriptor open(java.io.File, int);
-    public static android.os.ParcelFileDescriptor open(java.io.File, int, android.os.Handler, android.os.ParcelFileDescriptor$OnCloseListener);
-    public static int parseMode(java.lang.String);
-    public void releaseResources();
-    public long seekTo(long);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int MODE_APPEND;
-    public static int MODE_CREATE;
-    public static int MODE_READ_ONLY;
-    public static int MODE_READ_WRITE;
-    public static int MODE_TRUNCATE;
-    public static int MODE_WORLD_READABLE;
-    public static int MODE_WORLD_WRITEABLE;
-    public static int MODE_WRITE_ONLY;
-}
-
--keep class android.os.ParcelFileDescriptor$OnCloseListener {
-
-    public abstract void onClose(java.io.IOException);
-
-
-}
-
--keep class android.os.Parcelable {
-
-    public abstract int describeContents();
-    public abstract void writeToParcel(android.os.Parcel, int);
-
-
-    public static int CONTENTS_FILE_DESCRIPTOR;
-    public static int PARCELABLE_ELIDE_DUPLICATES;
-    public static int PARCELABLE_WRITE_RETURN_VALUE;
-}
-
--keep class android.os.Parcelable$ClassLoaderCreator {
-
-    public abstract java.lang.Object createFromParcel(android.os.Parcel, java.lang.ClassLoader);
-
-
-}
-
--keep class android.os.Parcelable$Creator {
-
-    public abstract java.lang.Object createFromParcel(android.os.Parcel);
-    public abstract java.lang.Object[] newArray(int);
-
-
-}
-
--keep class android.os.PatternMatcher {
-    <init>(java.lang.String, int);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public java.lang.String getPath();
-    public int getType();
-    public boolean match(java.lang.String);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int PATTERN_ADVANCED_GLOB;
-    public static int PATTERN_LITERAL;
-    public static int PATTERN_PREFIX;
-    public static int PATTERN_SIMPLE_GLOB;
-}
-
--keep class android.os.PersistableBundle {
-    <init>();
-    <init>(int);
-    <init>(android.os.PersistableBundle);
-    <init>(android.os.Bundle);
-
-    public java.lang.Object clone();
-    public android.os.PersistableBundle deepCopy();
-    public int describeContents();
-    public static android.os.PersistableBundle forPair(java.lang.String, java.lang.String);
-    public android.os.PersistableBundle getPersistableBundle(java.lang.String);
-    public static boolean isValidType(java.lang.Object);
-    public void putPersistableBundle(java.lang.String, android.os.PersistableBundle);
-    public static android.os.PersistableBundle restoreFromXml(org.xmlpull.v1.XmlPullParser);
-    public void saveToXml(org.xmlpull.v1.XmlSerializer);
-    public synchronized java.lang.String toShortString();
-    public synchronized java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-    public void writeUnknownObject(java.lang.Object, java.lang.String, org.xmlpull.v1.XmlSerializer);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.os.PersistableBundle EMPTY;
-}
-
--keep class android.os.RemoteException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable, boolean, boolean);
-
-    public java.lang.RuntimeException rethrowAsRuntimeException();
-    public java.lang.RuntimeException rethrowFromSystemServer();
-
-
-}
-
--keep class android.os.ResultReceiver {
-    <init>(android.os.Handler);
-
-    public int describeContents();
-    protected void onReceiveResult(int, android.os.Bundle);
-    public void send(int, android.os.Bundle);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.os.ShellCallback {
-    <init>();
-
-    public int describeContents();
-    public android.os.ParcelFileDescriptor onOpenFile(java.lang.String, java.lang.String, java.lang.String);
-    public android.os.ParcelFileDescriptor openFile(java.lang.String, java.lang.String, java.lang.String);
-    public static void writeToParcel(android.os.ShellCallback, android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.os.ShellCommand {
-    <init>();
-
-    public android.os.ResultReceiver adoptResultReceiver();
-    public int exec(android.os.Binder, java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor, java.lang.String[], android.os.ShellCallback, android.os.ResultReceiver);
-    public java.io.InputStream getBufferedInputStream();
-    public java.io.FileDescriptor getErrFileDescriptor();
-    public java.io.PrintWriter getErrPrintWriter();
-    public java.io.FileDescriptor getInFileDescriptor();
-    public java.lang.String getNextArg();
-    public java.lang.String getNextArgRequired();
-    public java.lang.String getNextOption();
-    public java.io.FileDescriptor getOutFileDescriptor();
-    public java.io.PrintWriter getOutPrintWriter();
-    public java.io.OutputStream getRawErrorStream();
-    public java.io.InputStream getRawInputStream();
-    public java.io.OutputStream getRawOutputStream();
-    public android.os.ShellCallback getShellCallback();
-    public int handleDefaultCommands(java.lang.String);
-    public void init(android.os.Binder, java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor, java.lang.String[], android.os.ShellCallback, int);
-    public abstract int onCommand(java.lang.String);
-    public abstract void onHelp();
-    public android.os.ParcelFileDescriptor openFileForSystem(java.lang.String, java.lang.String);
-    public java.lang.String peekNextArg();
-
-
-}
-
--keep class android.os.StrictMode {
-
-    public static android.os.StrictMode$ThreadPolicy allowThreadDiskReads();
-    public static int allowThreadDiskReadsMask();
-    public static android.os.StrictMode$ThreadPolicy allowThreadDiskWrites();
-    public static int allowThreadDiskWritesMask();
-    public static void conditionallyCheckInstanceCounts();
-    public static void decrementExpectedActivityCount(java.lang.Class);
-    public static void disableDeathOnFileUriExposure();
-    public static void enableDeathOnFileUriExposure();
-    public static void enableDefaults();
-    public static android.os.StrictMode$Span enterCriticalSpan(java.lang.String);
-    public static android.os.StrictMode$ThreadPolicy getThreadPolicy();
-    public static int getThreadPolicyMask();
-    public static android.os.StrictMode$VmPolicy getVmPolicy();
-    public static void incrementExpectedActivityCount(java.lang.Class);
-    public static void initThreadDefaults(android.content.pm.ApplicationInfo);
-    public static void initVmDefaults(android.content.pm.ApplicationInfo);
-    public static boolean isBundledSystemApp(android.content.pm.ApplicationInfo);
-    public static void noteDiskRead();
-    public static void noteDiskWrite();
-    public static void noteResourceMismatch(java.lang.Object);
-    public static void noteSlowCall(java.lang.String);
-    public static void noteUnbufferedIO();
-    public static void onCleartextNetworkDetected(byte[]);
-    public static void onContentUriWithoutPermission(android.net.Uri, java.lang.String);
-    public static void onFileUriExposed(android.net.Uri, java.lang.String);
-    public static void onIntentReceiverLeaked(java.lang.Throwable);
-    public static void onServiceConnectionLeaked(java.lang.Throwable);
-    public static void onSqliteObjectLeaked(java.lang.String, java.lang.Throwable);
-    public static void onUntaggedSocket();
-    public static void onVmPolicyViolation(android.os.strictmode.Violation);
-    public static void onVmPolicyViolation(android.os.strictmode.Violation, boolean);
-    public static void onWebViewMethodCalledOnWrongThread(java.lang.Throwable);
-    public static void setThreadPolicy(android.os.StrictMode$ThreadPolicy);
-    public static void setThreadPolicyMask(int);
-    public static void setViolationLogger(android.os.StrictMode$ViolationLogger);
-    public static void setVmPolicy(android.os.StrictMode$VmPolicy);
-    public static java.lang.Object trackActivity(java.lang.Object);
-    public static boolean vmCleartextNetworkEnabled();
-    public static boolean vmClosableObjectLeaksEnabled();
-    public static boolean vmContentUriWithoutPermissionEnabled();
-    public static boolean vmFileUriExposureEnabled();
-    public static boolean vmRegistrationLeaksEnabled();
-    public static boolean vmSqliteObjectLeaksEnabled();
-    public static boolean vmUntaggedSocketEnabled();
-
-
-    public static java.lang.String CLEARTEXT_DETECTED_MSG;
-    public static int DETECT_CUSTOM;
-    public static int DETECT_DISK_READ;
-    public static int DETECT_DISK_WRITE;
-    public static int DETECT_NETWORK;
-    public static int DETECT_RESOURCE_MISMATCH;
-    public static int DETECT_UNBUFFERED_IO;
-    public static int DETECT_VM_ACTIVITY_LEAKS;
-    public static int DETECT_VM_CLEARTEXT_NETWORK;
-    public static int DETECT_VM_CLOSABLE_LEAKS;
-    public static int DETECT_VM_CONTENT_URI_WITHOUT_PERMISSION;
-    public static int DETECT_VM_CURSOR_LEAKS;
-    public static int DETECT_VM_FILE_URI_EXPOSURE;
-    public static int DETECT_VM_INSTANCE_LEAKS;
-    public static int DETECT_VM_NON_SDK_API_USAGE;
-    public static int DETECT_VM_REGISTRATION_LEAKS;
-    public static int DETECT_VM_UNTAGGED_SOCKET;
-    public static java.lang.String DISABLE_PROPERTY;
-    public static int NETWORK_POLICY_ACCEPT;
-    public static int NETWORK_POLICY_LOG;
-    public static int NETWORK_POLICY_REJECT;
-    public static int PENALTY_DEATH;
-    public static int PENALTY_DEATH_ON_CLEARTEXT_NETWORK;
-    public static int PENALTY_DEATH_ON_FILE_URI_EXPOSURE;
-    public static int PENALTY_DEATH_ON_NETWORK;
-    public static int PENALTY_DIALOG;
-    public static int PENALTY_DROPBOX;
-    public static int PENALTY_FLASH;
-    public static int PENALTY_GATHER;
-    public static int PENALTY_LOG;
-    public static java.lang.String VISUAL_PROPERTY;
-}
-
--keep class android.os.StrictMode$Span {
-    <init>();
-
-    public void finish();
-
-
-}
-
--keep class android.os.StrictMode$ThreadPolicy {
-
-    public java.lang.String toString();
-
-
-    public static android.os.StrictMode$ThreadPolicy LAX;
-}
-
--keep class android.os.StrictMode$ViolationInfo {
-    <init>(android.os.Parcel);
-    <init>(android.os.Parcel, boolean);
-
-    public int describeContents();
-    public void dump(android.util.Printer, java.lang.String);
-    public int getPolicyMask();
-    public java.lang.String getStackTrace();
-    public int getViolationBit();
-    public java.lang.String getViolationDetails();
-    public int hashCode();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String broadcastIntentAction;
-    public int durationMillis;
-    public int numAnimationsRunning;
-    public long numInstances;
-    public java.lang.String[] tags;
-    public int violationNumThisLoop;
-    public long violationUptimeMillis;
-}
-
--keep class android.os.StrictMode$ViolationLogger {
-
-    public abstract void log(android.os.StrictMode$ViolationInfo);
-
-
-}
-
--keep class android.os.StrictMode$VmPolicy {
-
-    public java.lang.String toString();
-
-
-    public static android.os.StrictMode$VmPolicy LAX;
-}
-
--keep class android.os.TestLooperManager {
-    <init>(android.os.Looper);
-
-    public void execute(android.os.Message);
-    public android.os.MessageQueue getMessageQueue();
-    public android.os.MessageQueue getQueue();
-    public boolean hasMessages(android.os.Handler, java.lang.Object, int);
-    public boolean hasMessages(android.os.Handler, java.lang.Object, java.lang.Runnable);
-    public android.os.Message next();
-    public void recycle(android.os.Message);
-    public void release();
-
-
-}
-
--keep class android.os.TransactionTracker {
-
-    public void addTrace(java.lang.Throwable);
-    public void clearTraces();
-    public void writeTracesToFile(android.os.ParcelFileDescriptor);
-
-
-}
-
--keep class android.os.UserHandle {
-    <init>(int);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static void formatUid(java.lang.StringBuilder, int);
-    public static java.lang.String formatUid(int);
-    public static void formatUid(java.io.PrintWriter, int);
-    public static int getAppId(int);
-    public static int getAppIdFromSharedAppGid(int);
-    public static int getCacheAppGid(int);
-    public static int getCacheAppGid(int, int);
-    public static int getCallingAppId();
-    public static int getCallingUserId();
-    public int getIdentifier();
-    public static int getSharedAppGid(int);
-    public static int getSharedAppGid(int, int);
-    public static int getUid(int, int);
-    public static int getUserGid(int);
-    public static android.os.UserHandle getUserHandleForUid(int);
-    public static int getUserId(int);
-    public int hashCode();
-    public static boolean isApp(int);
-    public static boolean isCore(int);
-    public static boolean isIsolated(int);
-    public boolean isOwner();
-    public static boolean isSameApp(int, int);
-    public static boolean isSameUser(int, int);
-    public boolean isSystem();
-    public static int myUserId();
-    public static android.os.UserHandle of(int);
-    public static int parseUserArg(java.lang.String);
-    public static android.os.UserHandle readFromParcel(android.os.Parcel);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public static void writeToParcel(android.os.UserHandle, android.os.Parcel);
-
-
-    public static int AID_APP_END;
-    public static int AID_APP_START;
-    public static int AID_CACHE_GID_START;
-    public static int AID_ROOT;
-    public static int AID_SHARED_GID_START;
-    public static android.os.UserHandle ALL;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.os.UserHandle CURRENT;
-    public static android.os.UserHandle CURRENT_OR_SELF;
-    public static int ERR_GID;
-    public static boolean MU_ENABLED;
-    public static android.os.UserHandle OWNER;
-    public static int PER_USER_RANGE;
-    public static android.os.UserHandle SYSTEM;
-    public static int USER_ALL;
-    public static int USER_CURRENT;
-    public static int USER_CURRENT_OR_SELF;
-    public static int USER_NULL;
-    public static int USER_OWNER;
-    public static int USER_SERIAL_SYSTEM;
-    public static int USER_SYSTEM;
-}
-
--keep class android.os.VibrationEffect {
-    <init>();
-
-    public static android.os.VibrationEffect createOneShot(long, int);
-    public static android.os.VibrationEffect createWaveform(long[], int);
-    public static android.os.VibrationEffect createWaveform(long[], int[], int);
-    public int describeContents();
-    public static android.os.VibrationEffect get(int);
-    public static android.os.VibrationEffect get(int, boolean);
-    public static android.os.VibrationEffect get(android.net.Uri, android.content.Context);
-    public abstract long getDuration();
-    protected static int scale(int, float, int);
-    public abstract void validate();
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int DEFAULT_AMPLITUDE;
-    public static int EFFECT_CLICK;
-    public static int EFFECT_DOUBLE_CLICK;
-    public static int EFFECT_HEAVY_CLICK;
-    public static int EFFECT_POP;
-    public static int EFFECT_THUD;
-    public static int EFFECT_TICK;
-    public static int MAX_AMPLITUDE;
-    public static int[] RINGTONES;
-}
-
--keep class android.os.Vibrator {
-    <init>();
-    <init>(android.content.Context);
-
-    public abstract void cancel();
-    public int getDefaultHapticFeedbackIntensity();
-    public int getDefaultNotificationVibrationIntensity();
-    public abstract boolean hasAmplitudeControl();
-    public abstract boolean hasVibrator();
-    public void vibrate(long);
-    public void vibrate(long, android.media.AudioAttributes);
-    public void vibrate(long[], int);
-    public void vibrate(long[], int, android.media.AudioAttributes);
-    public void vibrate(android.os.VibrationEffect);
-    public void vibrate(android.os.VibrationEffect, android.media.AudioAttributes);
-    public abstract void vibrate(int, java.lang.String, android.os.VibrationEffect, android.media.AudioAttributes);
-
-
-    public static int VIBRATION_INTENSITY_HIGH;
-    public static int VIBRATION_INTENSITY_LOW;
-    public static int VIBRATION_INTENSITY_MEDIUM;
-    public static int VIBRATION_INTENSITY_OFF;
-}
-
--keep class android.os.WorkSource {
-    <init>();
-    <init>(android.os.WorkSource);
-    <init>(int);
-    <init>(int, java.lang.String);
-
-    public boolean add(android.os.WorkSource);
-    public boolean add(int);
-    public boolean add(int, java.lang.String);
-    public android.os.WorkSource addReturningNewbs(android.os.WorkSource);
-    public void clear();
-    public void clearNames();
-    public android.os.WorkSource$WorkChain createWorkChain();
-    public int describeContents();
-    public boolean diff(android.os.WorkSource);
-    public static java.util.ArrayList[] diffChains(android.os.WorkSource, android.os.WorkSource);
-    public boolean equals(java.lang.Object);
-    public int get(int);
-    public java.lang.String getName(int);
-    public java.util.ArrayList getWorkChains();
-    public int hashCode();
-    public static boolean isChainedBatteryAttributionEnabled(android.content.Context);
-    public boolean isEmpty();
-    public boolean remove(android.os.WorkSource);
-    public void set(android.os.WorkSource);
-    public void set(int);
-    public void set(int, java.lang.String);
-    public android.os.WorkSource[] setReturningDiffs(android.os.WorkSource);
-    public int size();
-    public java.lang.String toString();
-    public void transferWorkChains(android.os.WorkSource);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.os.WorkSource$WorkChain {
-    <init>();
-    <init>(android.os.WorkSource$WorkChain);
-
-    public android.os.WorkSource$WorkChain addNode(int, java.lang.String);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public java.lang.String getAttributionTag();
-    public int getAttributionUid();
-    public int getSize();
-    public java.lang.String[] getTags();
-    public int[] getUids();
-    public int hashCode();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.os.storage.DiskInfo {
-    <init>(java.lang.String, int);
-    <init>(android.os.Parcel);
-
-    public android.os.storage.DiskInfo clone();
-    public java.lang.Object clone();
-    public int describeContents();
-    public void dump(com.android.internal.util.IndentingPrintWriter);
-    public boolean equals(java.lang.Object);
-    public java.lang.String getDescription();
-    public java.lang.String getId();
-    public java.lang.String getShortDescription();
-    public int hashCode();
-    public boolean isAdoptable();
-    public boolean isDefaultPrimary();
-    public boolean isSd();
-    public boolean isUsb();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static java.lang.String ACTION_DISK_SCANNED;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String EXTRA_DISK_ID;
-    public static java.lang.String EXTRA_VOLUME_COUNT;
-    public static int FLAG_ADOPTABLE;
-    public static int FLAG_DEFAULT_PRIMARY;
-    public static int FLAG_SD;
-    public static int FLAG_USB;
-    public int flags;
-    public java.lang.String id;
-    public java.lang.String label;
-    public long size;
-    public java.lang.String sysPath;
-    public int volumeCount;
-}
-
--keep class android.os.storage.StorageVolume {
-    <init>(java.lang.String, java.io.File, java.io.File, java.lang.String, boolean, boolean, boolean, boolean, long, android.os.UserHandle, java.lang.String, java.lang.String);
-
-    public boolean allowMassStorage();
-    public android.content.Intent createAccessIntent(java.lang.String);
-    public int describeContents();
-    public java.lang.String dump();
-    public void dump(com.android.internal.util.IndentingPrintWriter);
-    public boolean equals(java.lang.Object);
-    public java.lang.String getDescription(android.content.Context);
-    public int getFatVolumeId();
-    public java.lang.String getId();
-    public java.lang.String getInternalPath();
-    public long getMaxFileSize();
-    public android.os.UserHandle getOwner();
-    public java.lang.String getPath();
-    public java.io.File getPathFile();
-    public java.lang.String getState();
-    public java.lang.String getUserLabel();
-    public java.lang.String getUuid();
-    public int hashCode();
-    public boolean isEmulated();
-    public boolean isPrimary();
-    public boolean isRemovable();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String EXTRA_DIRECTORY_NAME;
-    public static java.lang.String EXTRA_STORAGE_VOLUME;
-    public static int STORAGE_ID_INVALID;
-    public static int STORAGE_ID_PRIMARY;
-}
-
--keep class android.os.storage.VolumeInfo {
-    <init>(java.lang.String, int, android.os.storage.DiskInfo, java.lang.String);
-    <init>(android.os.Parcel);
-
-    public android.content.Intent buildBrowseIntent();
-    public android.content.Intent buildBrowseIntentForUser(int);
-    public static int buildStableMtpStorageId(java.lang.String);
-    public android.os.storage.StorageVolume buildStorageVolume(android.content.Context, int, boolean);
-    public android.os.storage.VolumeInfo clone();
-    public java.lang.Object clone();
-    public int describeContents();
-    public void dump(com.android.internal.util.IndentingPrintWriter);
-    public boolean equals(java.lang.Object);
-    public static java.lang.String getBroadcastForEnvironment(java.lang.String);
-    public static java.lang.String getBroadcastForState(int);
-    public java.lang.String getDescription();
-    public static java.util.Comparator getDescriptionComparator();
-    public android.os.storage.DiskInfo getDisk();
-    public java.lang.String getDiskId();
-    public static java.lang.String getEnvironmentForState(int);
-    public java.lang.String getFsUuid();
-    public java.lang.String getId();
-    public java.io.File getInternalPath();
-    public java.io.File getInternalPathForUser(int);
-    public int getMountUserId();
-    public java.io.File getPath();
-    public java.io.File getPathForUser(int);
-    public int getState();
-    public int getStateDescription();
-    public int getType();
-    public int hashCode();
-    public boolean isMountedReadable();
-    public boolean isMountedWritable();
-    public boolean isPrimary();
-    public boolean isPrimaryPhysical();
-    public boolean isVisible();
-    public boolean isVisibleForRead(int);
-    public boolean isVisibleForUser(int);
-    public boolean isVisibleForWrite(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static java.lang.String ACTION_VOLUME_STATE_CHANGED;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String EXTRA_VOLUME_ID;
-    public static java.lang.String EXTRA_VOLUME_STATE;
-    public static java.lang.String ID_EMULATED_INTERNAL;
-    public static java.lang.String ID_PRIVATE_INTERNAL;
-    public static int MOUNT_FLAG_PRIMARY;
-    public static int MOUNT_FLAG_VISIBLE;
-    public static int STATE_BAD_REMOVAL;
-    public static int STATE_CHECKING;
-    public static int STATE_EJECTING;
-    public static int STATE_FORMATTING;
-    public static int STATE_MOUNTED;
-    public static int STATE_MOUNTED_READ_ONLY;
-    public static int STATE_REMOVED;
-    public static int STATE_UNMOUNTABLE;
-    public static int STATE_UNMOUNTED;
-    public static int TYPE_ASEC;
-    public static int TYPE_EMULATED;
-    public static int TYPE_OBB;
-    public static int TYPE_PRIVATE;
-    public static int TYPE_PUBLIC;
-    public android.os.storage.DiskInfo disk;
-    public java.lang.String fsLabel;
-    public java.lang.String fsType;
-    public java.lang.String fsUuid;
-    public java.lang.String id;
-    public java.lang.String internalPath;
-    public int mountFlags;
-    public int mountUserId;
-    public java.lang.String partGuid;
-    public java.lang.String path;
-    public int state;
-    public int type;
-}
-
--keep class android.os.strictmode.Violation {
-
-
-
-}
-
--keep class android.service.autofill.FieldClassification {
-    <init>(java.util.ArrayList);
-
-    public java.util.List getMatches();
-    public java.lang.String toString();
-
-
-}
-
--keep class android.service.autofill.FieldClassification$Match {
-    <init>(java.lang.String, float);
-
-    public java.lang.String getCategoryId();
-    public float getScore();
-    public java.lang.String toString();
-
-
-}
-
--keep class android.service.autofill.FillEventHistory {
-    <init>(int, android.os.Bundle);
-
-    public void addEvent(android.service.autofill.FillEventHistory$Event);
-    public int describeContents();
-    public android.os.Bundle getClientState();
-    public java.util.List getEvents();
-    public int getSessionId();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.service.autofill.FillEventHistory$Event {
-    <init>(int, java.lang.String, android.os.Bundle, java.util.List, android.util.ArraySet, java.util.ArrayList, java.util.ArrayList, java.util.ArrayList, java.util.ArrayList, android.view.autofill.AutofillId[], android.service.autofill.FieldClassification[]);
-
-    public java.util.Map getChangedFields();
-    public android.os.Bundle getClientState();
-    public java.lang.String getDatasetId();
-    public java.util.Map getFieldsClassification();
-    public java.util.Set getIgnoredDatasetIds();
-    public java.util.Map getManuallyEnteredField();
-    public java.util.Set getSelectedDatasetIds();
-    public int getType();
-    public java.lang.String toString();
-
-
-    public static int TYPE_AUTHENTICATION_SELECTED;
-    public static int TYPE_CONTEXT_COMMITTED;
-    public static int TYPE_DATASET_AUTHENTICATION_SELECTED;
-    public static int TYPE_DATASET_SELECTED;
-    public static int TYPE_SAVE_SHOWN;
-}
-
--keep class android.service.autofill.UserData {
-
-    public int describeContents();
-    public void dump(java.lang.String, java.io.PrintWriter);
-    public static void dumpConstraints(java.lang.String, java.io.PrintWriter);
-    public android.os.Bundle getAlgorithmArgs();
-    public java.lang.String[] getCategoryIds();
-    public java.lang.String getFieldClassificationAlgorithm();
-    public java.lang.String getId();
-    public static int getMaxCategoryCount();
-    public static int getMaxFieldClassificationIdsSize();
-    public static int getMaxUserDataSize();
-    public static int getMaxValueLength();
-    public static int getMinValueLength();
-    public java.lang.String[] getValues();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.service.voice.IVoiceInteractionSession {
-
-    public abstract void closeSystemDialogs();
-    public abstract void destroy();
-    public abstract void handleAssist(android.os.Bundle, android.app.assist.AssistStructure, android.app.assist.AssistContent, int, int);
-    public abstract void handleScreenshot(android.graphics.Bitmap);
-    public abstract void hide();
-    public abstract void onLockscreenShown();
-    public abstract void show(android.os.Bundle, int, com.android.internal.app.IVoiceInteractionSessionShowCallback);
-    public abstract void taskFinished(android.content.Intent, int);
-    public abstract void taskStarted(android.content.Intent, int);
-
-
-}
-
--keep class android.support.car.Car {
-
-    public void connect();
-    public static android.support.car.Car createCar(android.content.Context, android.support.car.CarConnectionCallback, android.os.Handler);
-    public static android.support.car.Car createCar(android.content.Context, android.support.car.CarConnectionCallback);
-    public void disconnect();
-    public java.lang.Object getCarManager(java.lang.String);
-    public java.lang.Object getCarManager(java.lang.Class);
-    public boolean isConnected();
-    public boolean isConnecting();
-
-
-    public static java.lang.String APP_FOCUS_SERVICE;
-    public static java.lang.String AUDIO_SERVICE;
-    public static java.lang.String INFO_SERVICE;
-    public static java.lang.String NAVIGATION_STATUS_SERVICE;
-    public static java.lang.String PERMISSION_CAR_NAVIGATION_MANAGER;
-    public static java.lang.String PERMISSION_VENDOR_EXTENSION;
-    public static java.lang.String SENSOR_SERVICE;
-}
-
--keep class android.support.car.CarAppFocusManager {
-    <init>();
-
-    public abstract void abandonAppFocus(android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback, int);
-    public abstract void abandonAppFocus(android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback);
-    public abstract void addFocusListener(android.support.car.CarAppFocusManager$OnAppFocusChangedListener, int);
-    public abstract boolean isOwningFocus(int, android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback);
-    public abstract void removeFocusListener(android.support.car.CarAppFocusManager$OnAppFocusChangedListener, int);
-    public abstract void removeFocusListener(android.support.car.CarAppFocusManager$OnAppFocusChangedListener);
-    public abstract int requestAppFocus(int, android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback);
-
-
-    public static int APP_FOCUS_REQUEST_FAILED;
-    public static int APP_FOCUS_REQUEST_SUCCEEDED;
-    public static int APP_FOCUS_TYPE_NAVIGATION;
-}
-
--keep class android.support.car.CarAppFocusManager$OnAppFocusChangedListener {
-
-    public abstract void onAppFocusChanged(android.support.car.CarAppFocusManager, int, boolean);
-
-
-}
-
--keep class android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback {
-
-    public abstract void onAppFocusOwnershipGranted(android.support.car.CarAppFocusManager, int);
-    public abstract void onAppFocusOwnershipLost(android.support.car.CarAppFocusManager, int);
-
-
-}
-
--keep class android.support.car.CarConnectionCallback {
-    <init>();
-
-    public abstract void onConnected(android.support.car.Car);
-    public abstract void onDisconnected(android.support.car.Car);
-
-
-}
-
--keep class android.support.car.CarInfoManager {
-    <init>();
-
-    public abstract int getDriverPosition();
-    public abstract float getEvBatteryCapacity();
-    public abstract int[] getEvConnectorTypes();
-    public abstract float getFuelCapacity();
-    public abstract int[] getFuelTypes();
-    public abstract java.lang.String getHeadunitManufacturer();
-    public abstract java.lang.String getHeadunitModel();
-    public abstract java.lang.String getHeadunitSoftwareBuild();
-    public abstract java.lang.String getHeadunitSoftwareVersion();
-    public abstract java.lang.String getManufacturer();
-    public abstract java.lang.String getModel();
-    public abstract java.lang.String getModelYear();
-    public abstract java.lang.String getVehicleId();
-
-
-    public static int DRIVER_SIDE_CENTER;
-    public static int DRIVER_SIDE_LEFT;
-    public static int DRIVER_SIDE_RIGHT;
-    public static int DRIVER_SIDE_UNKNOWN;
-}
-
--keep class android.support.car.CarNotConnectedException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Exception);
-
-
-
-}
-
--keep class android.support.car.annotation.ValueTypeDef {
-
-
-
-}
-
--keep class android.support.car.annotation.VersionDef {
-
-
-
-}
-
--keep class android.support.car.hardware.CarSensorEvent {
-
-    public android.support.car.hardware.CarSensorEvent$CompassData getCompassData();
-    public android.support.car.hardware.CarSensorEvent$DrivingStatusData getDrivingStatusData();
-    public android.support.car.hardware.CarSensorEvent$NightData getNightData();
-    public android.support.car.hardware.CarSensorEvent$ParkingBrakeData getParkingBrakeData();
-
-
-    public static int DRIVE_STATUS_FULLY_RESTRICTED;
-    public static int DRIVE_STATUS_LIMIT_MESSAGE_LEN;
-    public static int DRIVE_STATUS_NO_CONFIG;
-    public static int DRIVE_STATUS_NO_KEYBOARD_INPUT;
-    public static int DRIVE_STATUS_NO_VIDEO;
-    public static int DRIVE_STATUS_NO_VOICE_INPUT;
-    public static int DRIVE_STATUS_UNRESTRICTED;
-    public static int INDEX_COMPASS_BEARING;
-    public static int INDEX_COMPASS_PITCH;
-    public static int INDEX_COMPASS_ROLL;
-    public static int INDEX_WHEEL_DISTANCE_FRONT_LEFT;
-    public static int INDEX_WHEEL_DISTANCE_FRONT_RIGHT;
-    public static int INDEX_WHEEL_DISTANCE_REAR_LEFT;
-    public static int INDEX_WHEEL_DISTANCE_REAR_RIGHT;
-    public static int INDEX_WHEEL_DISTANCE_RESET_COUNT;
-    public float[] floatValues;
-    public int[] intValues;
-    public long[] longValues;
-    public int sensorType;
-    public long timestamp;
-}
-
--keep class android.support.car.hardware.CarSensorEvent$CompassData {
-
-
-
-    public float bearing;
-    public float pitch;
-    public float roll;
-    public long timestamp;
-}
-
--keep class android.support.car.hardware.CarSensorEvent$DrivingStatusData {
-
-    public boolean isConfigurationRestricted();
-    public boolean isFullyRestricted();
-    public boolean isKeyboardRestricted();
-    public boolean isMessageLengthRestricted();
-    public boolean isVideoRestricted();
-    public boolean isVoiceRestricted();
-
-
-    public int status;
-    public long timestamp;
-}
-
--keep class android.support.car.hardware.CarSensorEvent$NightData {
-
-
-
-    public boolean isNightMode;
-    public long timestamp;
-}
-
--keep class android.support.car.hardware.CarSensorEvent$ParkingBrakeData {
-
-
-
-    public boolean isEngaged;
-    public long timestamp;
-}
-
--keep class android.support.car.hardware.CarSensorManager {
-    <init>();
-
-    public abstract boolean addListener(android.support.car.hardware.CarSensorManager$OnSensorChangedListener, int, int);
-    public abstract android.support.car.hardware.CarSensorEvent getLatestSensorEvent(int);
-    public abstract int[] getSupportedSensors();
-    public abstract boolean isSensorSupported(int);
-    public abstract void removeListener(android.support.car.hardware.CarSensorManager$OnSensorChangedListener);
-    public abstract void removeListener(android.support.car.hardware.CarSensorManager$OnSensorChangedListener, int);
-
-
-    public static int SENSOR_RATE_FASTEST;
-    public static int SENSOR_RATE_NORMAL;
-    public static int SENSOR_TYPE_ABS_ACTIVE;
-    public static int SENSOR_TYPE_COMPASS;
-    public static int SENSOR_TYPE_DRIVING_STATUS;
-    public static int SENSOR_TYPE_EV_BATTERY_CHARGE_RATE;
-    public static int SENSOR_TYPE_EV_BATTERY_LEVEL;
-    public static int SENSOR_TYPE_EV_CHARGE_PORT_CONNECTED;
-    public static int SENSOR_TYPE_EV_CHARGE_PORT_OPEN;
-    public static int SENSOR_TYPE_FUEL_DOOR_OPEN;
-    public static int SENSOR_TYPE_NIGHT;
-    public static int SENSOR_TYPE_PARKING_BRAKE;
-    public static int SENSOR_TYPE_TRACTION_CONTROL_ACTIVE;
-    public static int SENSOR_TYPE_WHEEL_TICK_DISTANCE;
-}
-
--keep class android.support.car.hardware.CarSensorManager$OnSensorChangedListener {
-
-    public abstract void onSensorChanged(android.support.car.hardware.CarSensorManager, android.support.car.hardware.CarSensorEvent);
-
-
-}
-
--keep class android.support.car.media.CarAudioManager {
-    <init>();
-
-    public abstract android.support.car.media.CarAudioRecord createCarAudioRecord(int);
-    public abstract android.media.AudioFormat getAudioRecordAudioFormat();
-    public abstract int getAudioRecordMaxBufferSize();
-    public abstract int getAudioRecordMinBufferSize();
-    public abstract boolean isAudioRecordSupported();
-
-
-}
-
--keep class android.support.car.media.CarAudioRecord {
-    <init>();
-
-    public abstract int getAudioSessionId();
-    public abstract int getBufferSize();
-    public abstract int getRecordingState();
-    public abstract int getState();
-    public abstract int read(byte[], int, int);
-    public abstract void release();
-    public abstract void startRecording();
-    public abstract void stop();
-
-
-}
-
--keep class android.support.car.navigation.CarNavigationInstrumentCluster {
-
-    public int getImageColorDepthBits();
-    public int getImageHeight();
-    public int getImageWidth();
-    public int getMinIntervalMillis();
-    public int getType();
-    public boolean supportsCustomImages();
-    public java.lang.String toString();
-
-
-    public static int CLUSTER_TYPE_CUSTOM_IMAGES_SUPPORTED;
-    public static int CLUSTER_TYPE_IMAGE_CODES_ONLY;
-}
-
--keep class android.support.car.navigation.CarNavigationStatusManager {
-    <init>();
-
-    public abstract void addListener(android.support.car.navigation.CarNavigationStatusManager$CarNavigationCallback);
-    public abstract void removeListener();
-    public abstract void sendEvent(int, android.os.Bundle);
-
-
-}
-
--keep class android.support.car.navigation.CarNavigationStatusManager$CarNavigationCallback {
-
-    public abstract void onInstrumentClusterStarted(android.support.car.navigation.CarNavigationStatusManager, android.support.car.navigation.CarNavigationInstrumentCluster);
-    public abstract void onInstrumentClusterStopped(android.support.car.navigation.CarNavigationStatusManager);
-
-
-}
-
--keep class android.transition.PathMotion {
-    <init>();
-    <init>(android.content.Context, android.util.AttributeSet);
-
-    public abstract android.graphics.Path getPath(float, float, float, float);
-
-
-}
-
--keep class android.transition.Scene {
-    <init>(android.view.ViewGroup);
-    <init>(android.view.ViewGroup, android.view.View);
-    <init>(android.view.ViewGroup, android.view.ViewGroup);
-
-    public void enter();
-    public void exit();
-    public static android.transition.Scene getSceneForLayout(android.view.ViewGroup, int, android.content.Context);
-    public android.view.ViewGroup getSceneRoot();
-    public void setEnterAction(java.lang.Runnable);
-    public void setExitAction(java.lang.Runnable);
-
-
-}
-
--keep class android.transition.Transition {
-    <init>();
-    <init>(android.content.Context, android.util.AttributeSet);
-
-    public android.transition.Transition addListener(android.transition.Transition$TransitionListener);
-    public android.transition.Transition addTarget(int);
-    public android.transition.Transition addTarget(java.lang.String);
-    public android.transition.Transition addTarget(java.lang.Class);
-    public android.transition.Transition addTarget(android.view.View);
-    protected void animate(android.animation.Animator);
-    public boolean canRemoveViews();
-    protected void cancel();
-    public abstract void captureEndValues(android.transition.TransitionValues);
-    public abstract void captureStartValues(android.transition.TransitionValues);
-    public android.transition.Transition clone();
-    public java.lang.Object clone();
-    public android.animation.Animator createAnimator(android.view.ViewGroup, android.transition.TransitionValues, android.transition.TransitionValues);
-    protected void createAnimators(android.view.ViewGroup, android.transition.TransitionValuesMaps, android.transition.TransitionValuesMaps, java.util.ArrayList, java.util.ArrayList);
-    protected void end();
-    public android.transition.Transition excludeChildren(int, boolean);
-    public android.transition.Transition excludeChildren(android.view.View, boolean);
-    public android.transition.Transition excludeChildren(java.lang.Class, boolean);
-    public android.transition.Transition excludeTarget(int, boolean);
-    public android.transition.Transition excludeTarget(java.lang.String, boolean);
-    public android.transition.Transition excludeTarget(android.view.View, boolean);
-    public android.transition.Transition excludeTarget(java.lang.Class, boolean);
-    public long getDuration();
-    public android.graphics.Rect getEpicenter();
-    public android.transition.Transition$EpicenterCallback getEpicenterCallback();
-    public android.animation.TimeInterpolator getInterpolator();
-    public java.lang.String getName();
-    public android.util.ArrayMap getNameOverrides();
-    public android.transition.PathMotion getPathMotion();
-    public android.transition.TransitionPropagation getPropagation();
-    public long getStartDelay();
-    public java.util.List getTargetIds();
-    public java.util.List getTargetNames();
-    public java.util.List getTargetTypes();
-    public java.util.List getTargetViewNames();
-    public java.util.List getTargets();
-    public java.lang.String[] getTransitionProperties();
-    public android.transition.TransitionValues getTransitionValues(android.view.View, boolean);
-    public boolean isTransitionRequired(android.transition.TransitionValues, android.transition.TransitionValues);
-    public boolean isValidTarget(android.view.View);
-    public void pause(android.view.View);
-    public android.transition.Transition removeListener(android.transition.Transition$TransitionListener);
-    public android.transition.Transition removeTarget(int);
-    public android.transition.Transition removeTarget(java.lang.String);
-    public android.transition.Transition removeTarget(android.view.View);
-    public android.transition.Transition removeTarget(java.lang.Class);
-    public void resume(android.view.View);
-    protected void runAnimators();
-    public android.transition.Transition setDuration(long);
-    public void setEpicenterCallback(android.transition.Transition$EpicenterCallback);
-    public android.transition.Transition setInterpolator(android.animation.TimeInterpolator);
-    public void setMatchOrder(int[]);
-    public void setNameOverrides(android.util.ArrayMap);
-    public void setPathMotion(android.transition.PathMotion);
-    public void setPropagation(android.transition.TransitionPropagation);
-    public android.transition.Transition setStartDelay(long);
-    protected void start();
-    public java.lang.String toString();
-
-
-    public static int MATCH_ID;
-    public static int MATCH_INSTANCE;
-    public static int MATCH_ITEM_ID;
-    public static int MATCH_NAME;
-}
-
--keep class android.transition.Transition$EpicenterCallback {
-    <init>();
-
-    public abstract android.graphics.Rect onGetEpicenter(android.transition.Transition);
-
-
-}
-
--keep class android.transition.Transition$TransitionListener {
-
-    public abstract void onTransitionCancel(android.transition.Transition);
-    public abstract void onTransitionEnd(android.transition.Transition);
-    public abstract void onTransitionPause(android.transition.Transition);
-    public abstract void onTransitionResume(android.transition.Transition);
-    public abstract void onTransitionStart(android.transition.Transition);
-
-
-}
-
--keep class android.transition.TransitionManager {
-    <init>();
-
-    public static void beginDelayedTransition(android.view.ViewGroup);
-    public static void beginDelayedTransition(android.view.ViewGroup, android.transition.Transition);
-    public static void endTransitions(android.view.ViewGroup);
-    public static android.transition.Transition getDefaultTransition();
-    public android.transition.Transition getTransition(android.transition.Scene);
-    public static void go(android.transition.Scene);
-    public static void go(android.transition.Scene, android.transition.Transition);
-    public void setDefaultTransition(android.transition.Transition);
-    public void setTransition(android.transition.Scene, android.transition.Transition);
-    public void setTransition(android.transition.Scene, android.transition.Scene, android.transition.Transition);
-    public void transitionTo(android.transition.Scene);
-
-
-}
-
--keep class android.transition.TransitionPropagation {
-    <init>();
-
-    public abstract void captureValues(android.transition.TransitionValues);
-    public abstract java.lang.String[] getPropagationProperties();
-    public abstract long getStartDelay(android.view.ViewGroup, android.transition.Transition, android.transition.TransitionValues, android.transition.TransitionValues);
-
-
-}
-
--keep class android.transition.TransitionValues {
-    <init>();
-
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public java.lang.String toString();
-
-
-    public java.util.Map values;
-    public android.view.View view;
-}
-
--keep class android.transition.TransitionValuesMaps {
-
-
-
-}
-
--keep class android.util.AndroidException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Exception);
-    <init>(java.lang.String, java.lang.Throwable, boolean, boolean);
-
-
-
-}
-
--keep class android.util.ArrayMap {
-    <init>();
-    <init>(int);
-    <init>(int, boolean);
-    <init>(android.util.ArrayMap);
-
-    public void append(java.lang.Object, java.lang.Object);
-    public void clear();
-    public boolean containsAll(java.util.Collection);
-    public boolean containsKey(java.lang.Object);
-    public boolean containsValue(java.lang.Object);
-    public void ensureCapacity(int);
-    public java.util.Set entrySet();
-    public boolean equals(java.lang.Object);
-    public void erase();
-    public java.lang.Object get(java.lang.Object);
-    public int hashCode();
-    public int indexOfKey(java.lang.Object);
-    public boolean isEmpty();
-    public java.lang.Object keyAt(int);
-    public java.util.Set keySet();
-    public java.lang.Object put(java.lang.Object, java.lang.Object);
-    public void putAll(android.util.ArrayMap);
-    public void putAll(java.util.Map);
-    public java.lang.Object remove(java.lang.Object);
-    public boolean removeAll(java.util.Collection);
-    public java.lang.Object removeAt(int);
-    public boolean retainAll(java.util.Collection);
-    public java.lang.Object setValueAt(int, java.lang.Object);
-    public int size();
-    public java.lang.String toString();
-    public void validate();
-    public java.lang.Object valueAt(int);
-    public java.util.Collection values();
-
-
-    public static android.util.ArrayMap EMPTY;
-}
-
--keep class android.util.ArraySet {
-    <init>();
-    <init>(int);
-    <init>(int, boolean);
-    <init>(android.util.ArraySet);
-    <init>(java.util.Collection);
-
-    public boolean add(java.lang.Object);
-    public void addAll(android.util.ArraySet);
-    public boolean addAll(java.util.Collection);
-    public void append(java.lang.Object);
-    public void clear();
-    public boolean contains(java.lang.Object);
-    public boolean containsAll(java.util.Collection);
-    public void ensureCapacity(int);
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public int indexOf(java.lang.Object);
-    public boolean isEmpty();
-    public java.util.Iterator iterator();
-    public boolean remove(java.lang.Object);
-    public boolean removeAll(android.util.ArraySet);
-    public boolean removeAll(java.util.Collection);
-    public java.lang.Object removeAt(int);
-    public boolean retainAll(java.util.Collection);
-    public int size();
-    public java.lang.Object[] toArray();
-    public java.lang.Object[] toArray(java.lang.Object[]);
-    public java.lang.String toString();
-    public java.lang.Object valueAt(int);
-
-
-}
-
--keep class android.util.AttributeSet {
-
-    public abstract boolean getAttributeBooleanValue(java.lang.String, java.lang.String, boolean);
-    public abstract boolean getAttributeBooleanValue(int, boolean);
-    public abstract int getAttributeCount();
-    public abstract float getAttributeFloatValue(java.lang.String, java.lang.String, float);
-    public abstract float getAttributeFloatValue(int, float);
-    public abstract int getAttributeIntValue(java.lang.String, java.lang.String, int);
-    public abstract int getAttributeIntValue(int, int);
-    public abstract int getAttributeListValue(java.lang.String, java.lang.String, java.lang.String[], int);
-    public abstract int getAttributeListValue(int, java.lang.String[], int);
-    public abstract java.lang.String getAttributeName(int);
-    public abstract int getAttributeNameResource(int);
-    public java.lang.String getAttributeNamespace(int);
-    public abstract int getAttributeResourceValue(java.lang.String, java.lang.String, int);
-    public abstract int getAttributeResourceValue(int, int);
-    public abstract int getAttributeUnsignedIntValue(java.lang.String, java.lang.String, int);
-    public abstract int getAttributeUnsignedIntValue(int, int);
-    public abstract java.lang.String getAttributeValue(int);
-    public abstract java.lang.String getAttributeValue(java.lang.String, java.lang.String);
-    public abstract java.lang.String getClassAttribute();
-    public abstract java.lang.String getIdAttribute();
-    public abstract int getIdAttributeResourceValue(int);
-    public abstract java.lang.String getPositionDescription();
-    public abstract int getStyleAttribute();
-
-
-}
-
--keep class android.util.DisplayMetrics {
-    <init>();
-
-    public boolean equals(java.lang.Object);
-    public boolean equals(android.util.DisplayMetrics);
-    public boolean equalsPhysical(android.util.DisplayMetrics);
-    public int hashCode();
-    public void setTo(android.util.DisplayMetrics);
-    public void setToDefaults();
-    public java.lang.String toString();
-
-
-    public static int DENSITY_260;
-    public static int DENSITY_280;
-    public static int DENSITY_300;
-    public static int DENSITY_340;
-    public static int DENSITY_360;
-    public static int DENSITY_400;
-    public static int DENSITY_420;
-    public static int DENSITY_440;
-    public static int DENSITY_560;
-    public static int DENSITY_DEFAULT;
-    public static float DENSITY_DEFAULT_SCALE;
-    public static int DENSITY_DEVICE;
-    public static int DENSITY_DEVICE_STABLE;
-    public static int DENSITY_HIGH;
-    public static int DENSITY_LOW;
-    public static int DENSITY_MEDIUM;
-    public static int DENSITY_TV;
-    public static int DENSITY_XHIGH;
-    public static int DENSITY_XXHIGH;
-    public static int DENSITY_XXXHIGH;
-    public float density;
-    public int densityDpi;
-    public int heightPixels;
-    public float noncompatDensity;
-    public int noncompatDensityDpi;
-    public int noncompatHeightPixels;
-    public float noncompatScaledDensity;
-    public int noncompatWidthPixels;
-    public float noncompatXdpi;
-    public float noncompatYdpi;
-    public float scaledDensity;
-    public int widthPixels;
-    public float xdpi;
-    public float ydpi;
-}
-
--keep class android.util.LongArray {
-    <init>();
-    <init>(int);
-
-    public void add(long);
-    public void add(int, long);
-    public void addAll(android.util.LongArray);
-    public void clear();
-    public android.util.LongArray clone();
-    public java.lang.Object clone();
-    public static boolean elementsEqual(android.util.LongArray, android.util.LongArray);
-    public static android.util.LongArray fromArray(long[], int);
-    public long get(int);
-    public int indexOf(long);
-    public void remove(int);
-    public void resize(int);
-    public void set(int, long);
-    public int size();
-    public long[] toArray();
-    public static android.util.LongArray wrap(long[]);
-
-
-}
-
--keep class android.util.LongSparseArray {
-    <init>();
-    <init>(int);
-
-    public void append(long, java.lang.Object);
-    public void clear();
-    public android.util.LongSparseArray clone();
-    public java.lang.Object clone();
-    public void delete(long);
-    public java.lang.Object get(long);
-    public java.lang.Object get(long, java.lang.Object);
-    public int indexOfKey(long);
-    public int indexOfValue(java.lang.Object);
-    public int indexOfValueByValue(java.lang.Object);
-    public long keyAt(int);
-    public void put(long, java.lang.Object);
-    public void remove(long);
-    public void removeAt(int);
-    public void setValueAt(int, java.lang.Object);
-    public int size();
-    public java.lang.String toString();
-    public java.lang.Object valueAt(int);
-
-
-}
-
--keep class android.util.MergedConfiguration {
-    <init>();
-    <init>(android.content.res.Configuration, android.content.res.Configuration);
-    <init>(android.content.res.Configuration);
-    <init>(android.util.MergedConfiguration);
-
-    public int describeContents();
-    public void dump(java.io.PrintWriter, java.lang.String);
-    public boolean equals(java.lang.Object);
-    public android.content.res.Configuration getGlobalConfiguration();
-    public android.content.res.Configuration getMergedConfiguration();
-    public android.content.res.Configuration getOverrideConfiguration();
-    public int hashCode();
-    public void readFromParcel(android.os.Parcel);
-    public void setConfiguration(android.content.res.Configuration, android.content.res.Configuration);
-    public void setGlobalConfiguration(android.content.res.Configuration);
-    public void setOverrideConfiguration(android.content.res.Configuration);
-    public void setTo(android.util.MergedConfiguration);
-    public java.lang.String toString();
-    public void unset();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.util.Pair {
-    <init>(java.lang.Object, java.lang.Object);
-
-    public static android.util.Pair create(java.lang.Object, java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public java.lang.String toString();
-
-
-    public java.lang.Object first;
-    public java.lang.Object second;
-}
-
--keep class android.util.Printer {
-
-    public abstract void println(java.lang.String);
-
-
-}
-
--keep class android.util.Property {
-    <init>(java.lang.Class, java.lang.String);
-
-    public abstract java.lang.Object get(java.lang.Object);
-    public java.lang.String getName();
-    public java.lang.Class getType();
-    public boolean isReadOnly();
-    public static android.util.Property of(java.lang.Class, java.lang.Class, java.lang.String);
-    public void set(java.lang.Object, java.lang.Object);
-
-
-}
-
--keep class android.util.Rational {
-    <init>(int, int);
-
-    public int compareTo(android.util.Rational);
-    public int compareTo(java.lang.Object);
-    public double doubleValue();
-    public boolean equals(java.lang.Object);
-    public float floatValue();
-    public static int gcd(int, int);
-    public int getDenominator();
-    public int getNumerator();
-    public int hashCode();
-    public int intValue();
-    public boolean isFinite();
-    public boolean isInfinite();
-    public boolean isNaN();
-    public boolean isZero();
-    public long longValue();
-    public static android.util.Rational parseRational(java.lang.String);
-    public short shortValue();
-    public float toFloat();
-    public java.lang.String toString();
-
-
-    public static android.util.Rational NEGATIVE_INFINITY;
-    public static android.util.Rational NaN;
-    public static android.util.Rational POSITIVE_INFINITY;
-    public static android.util.Rational ZERO;
-}
-
--keep class android.util.Size {
-    <init>(int, int);
-
-    public boolean equals(java.lang.Object);
-    public int getHeight();
-    public int getWidth();
-    public int hashCode();
-    public static android.util.Size parseSize(java.lang.String);
-    public java.lang.String toString();
-
-
-}
-
--keep class android.util.SizeF {
-    <init>(float, float);
-
-    public boolean equals(java.lang.Object);
-    public float getHeight();
-    public float getWidth();
-    public int hashCode();
-    public static android.util.SizeF parseSizeF(java.lang.String);
-    public java.lang.String toString();
-
-
-}
-
--keep class android.util.SparseArray {
-    <init>();
-    <init>(int);
-
-    public void append(int, java.lang.Object);
-    public void clear();
-    public android.util.SparseArray clone();
-    public java.lang.Object clone();
-    public void delete(int);
-    public java.lang.Object get(int);
-    public java.lang.Object get(int, java.lang.Object);
-    public int indexOfKey(int);
-    public int indexOfValue(java.lang.Object);
-    public int indexOfValueByValue(java.lang.Object);
-    public int keyAt(int);
-    public void put(int, java.lang.Object);
-    public void remove(int);
-    public void removeAt(int);
-    public void removeAtRange(int, int);
-    public java.lang.Object removeReturnOld(int);
-    public void setValueAt(int, java.lang.Object);
-    public int size();
-    public java.lang.String toString();
-    public java.lang.Object valueAt(int);
-
-
-}
-
--keep class android.util.SparseBooleanArray {
-    <init>();
-    <init>(int);
-
-    public void append(int, boolean);
-    public void clear();
-    public android.util.SparseBooleanArray clone();
-    public java.lang.Object clone();
-    public void delete(int);
-    public boolean equals(java.lang.Object);
-    public boolean get(int);
-    public boolean get(int, boolean);
-    public int hashCode();
-    public int indexOfKey(int);
-    public int indexOfValue(boolean);
-    public int keyAt(int);
-    public void put(int, boolean);
-    public void removeAt(int);
-    public void setKeyAt(int, int);
-    public void setValueAt(int, boolean);
-    public int size();
-    public java.lang.String toString();
-    public boolean valueAt(int);
-
-
-}
-
--keep class android.util.SparseIntArray {
-    <init>();
-    <init>(int);
-
-    public void append(int, int);
-    public void clear();
-    public android.util.SparseIntArray clone();
-    public java.lang.Object clone();
-    public int[] copyKeys();
-    public void delete(int);
-    public int get(int);
-    public int get(int, int);
-    public int indexOfKey(int);
-    public int indexOfValue(int);
-    public int keyAt(int);
-    public void put(int, int);
-    public void removeAt(int);
-    public void setValueAt(int, int);
-    public int size();
-    public java.lang.String toString();
-    public int valueAt(int);
-
-
-}
-
--keep class android.util.TypedValue {
-    <init>();
-
-    public static float applyDimension(int, float, android.util.DisplayMetrics);
-    public java.lang.CharSequence coerceToString();
-    public static java.lang.String coerceToString(int, int);
-    public static float complexToDimension(int, android.util.DisplayMetrics);
-    public static float complexToDimensionNoisy(int, android.util.DisplayMetrics);
-    public static int complexToDimensionPixelOffset(int, android.util.DisplayMetrics);
-    public static int complexToDimensionPixelSize(int, android.util.DisplayMetrics);
-    public static float complexToFloat(int);
-    public static float complexToFraction(int, float, float);
-    public int getComplexUnit();
-    public float getDimension(android.util.DisplayMetrics);
-    public float getFloat();
-    public float getFraction(float, float);
-    public void setTo(android.util.TypedValue);
-    public java.lang.String toString();
-
-
-    public static int COMPLEX_MANTISSA_MASK;
-    public static int COMPLEX_MANTISSA_SHIFT;
-    public static int COMPLEX_RADIX_0p23;
-    public static int COMPLEX_RADIX_16p7;
-    public static int COMPLEX_RADIX_23p0;
-    public static int COMPLEX_RADIX_8p15;
-    public static int COMPLEX_RADIX_MASK;
-    public static int COMPLEX_RADIX_SHIFT;
-    public static int COMPLEX_UNIT_DIP;
-    public static int COMPLEX_UNIT_FRACTION;
-    public static int COMPLEX_UNIT_FRACTION_PARENT;
-    public static int COMPLEX_UNIT_IN;
-    public static int COMPLEX_UNIT_MASK;
-    public static int COMPLEX_UNIT_MM;
-    public static int COMPLEX_UNIT_PT;
-    public static int COMPLEX_UNIT_PX;
-    public static int COMPLEX_UNIT_SHIFT;
-    public static int COMPLEX_UNIT_SP;
-    public static int DATA_NULL_EMPTY;
-    public static int DATA_NULL_UNDEFINED;
-    public static int DENSITY_DEFAULT;
-    public static int DENSITY_NONE;
-    public static int TYPE_ATTRIBUTE;
-    public static int TYPE_DIMENSION;
-    public static int TYPE_FIRST_COLOR_INT;
-    public static int TYPE_FIRST_INT;
-    public static int TYPE_FLOAT;
-    public static int TYPE_FRACTION;
-    public static int TYPE_INT_BOOLEAN;
-    public static int TYPE_INT_COLOR_ARGB4;
-    public static int TYPE_INT_COLOR_ARGB8;
-    public static int TYPE_INT_COLOR_RGB4;
-    public static int TYPE_INT_COLOR_RGB8;
-    public static int TYPE_INT_DEC;
-    public static int TYPE_INT_HEX;
-    public static int TYPE_LAST_COLOR_INT;
-    public static int TYPE_LAST_INT;
-    public static int TYPE_NULL;
-    public static int TYPE_REFERENCE;
-    public static int TYPE_STRING;
-    public int assetCookie;
-    public int changingConfigurations;
-    public int data;
-    public int density;
-    public int resourceId;
-    public java.lang.CharSequence string;
-    public int type;
-}
-
--keep class android.util.proto.ProtoOutputStream {
-    <init>();
-    <init>(int);
-    <init>(java.io.OutputStream);
-    <init>(java.io.FileDescriptor);
-
-    public static int checkFieldId(long, long);
-    public static int convertObjectIdToOrdinal(int);
-    public void dump(java.lang.String);
-    public void end(long);
-    public void endObject(long);
-    public void endRepeatedObject(long);
-    public void flush();
-    public byte[] getBytes();
-    public static int getDepthFromToken(long);
-    public static int getObjectIdFromToken(long);
-    public static boolean getRepeatedFromToken(long);
-    public static int getSizePosFromToken(long);
-    public static int getTagSizeFromToken(long);
-    public static long makeFieldId(int, long);
-    public static long makeToken(int, boolean, int, int, int);
-    public long start(long);
-    public long startObject(long);
-    public long startRepeatedObject(long);
-    public static java.lang.String token2String(long);
-    public void write(long, double);
-    public void write(long, float);
-    public void write(long, int);
-    public void write(long, long);
-    public void write(long, boolean);
-    public void write(long, java.lang.String);
-    public void write(long, byte[]);
-    public void writeBool(long, boolean);
-    public void writeBytes(long, byte[]);
-    public void writeDouble(long, double);
-    public void writeEnum(long, int);
-    public void writeFixed32(long, int);
-    public void writeFixed64(long, long);
-    public void writeFloat(long, float);
-    public void writeInt32(long, int);
-    public void writeInt64(long, long);
-    public void writeObject(long, byte[]);
-    public void writePackedBool(long, boolean[]);
-    public void writePackedDouble(long, double[]);
-    public void writePackedEnum(long, int[]);
-    public void writePackedFixed32(long, int[]);
-    public void writePackedFixed64(long, long[]);
-    public void writePackedFloat(long, float[]);
-    public void writePackedInt32(long, int[]);
-    public void writePackedInt64(long, long[]);
-    public void writePackedSFixed32(long, int[]);
-    public void writePackedSFixed64(long, long[]);
-    public void writePackedSInt32(long, int[]);
-    public void writePackedSInt64(long, long[]);
-    public void writePackedUInt32(long, int[]);
-    public void writePackedUInt64(long, long[]);
-    public void writeRepeatedBool(long, boolean);
-    public void writeRepeatedBytes(long, byte[]);
-    public void writeRepeatedDouble(long, double);
-    public void writeRepeatedEnum(long, int);
-    public void writeRepeatedFixed32(long, int);
-    public void writeRepeatedFixed64(long, long);
-    public void writeRepeatedFloat(long, float);
-    public void writeRepeatedInt32(long, int);
-    public void writeRepeatedInt64(long, long);
-    public void writeRepeatedObject(long, byte[]);
-    public void writeRepeatedSFixed32(long, int);
-    public void writeRepeatedSFixed64(long, long);
-    public void writeRepeatedSInt32(long, int);
-    public void writeRepeatedSInt64(long, long);
-    public void writeRepeatedString(long, java.lang.String);
-    public void writeRepeatedUInt32(long, int);
-    public void writeRepeatedUInt64(long, long);
-    public void writeSFixed32(long, int);
-    public void writeSFixed64(long, long);
-    public void writeSInt32(long, int);
-    public void writeSInt64(long, long);
-    public void writeString(long, java.lang.String);
-    public void writeTag(int, int);
-    public void writeUInt32(long, int);
-    public void writeUInt64(long, long);
-
-
-    public static long FIELD_COUNT_MASK;
-    public static long FIELD_COUNT_PACKED;
-    public static long FIELD_COUNT_REPEATED;
-    public static int FIELD_COUNT_SHIFT;
-    public static long FIELD_COUNT_SINGLE;
-    public static long FIELD_COUNT_UNKNOWN;
-    public static int FIELD_ID_MASK;
-    public static int FIELD_ID_SHIFT;
-    public static long FIELD_TYPE_BOOL;
-    public static long FIELD_TYPE_BYTES;
-    public static long FIELD_TYPE_DOUBLE;
-    public static long FIELD_TYPE_ENUM;
-    public static long FIELD_TYPE_FIXED32;
-    public static long FIELD_TYPE_FIXED64;
-    public static long FIELD_TYPE_FLOAT;
-    public static long FIELD_TYPE_INT32;
-    public static long FIELD_TYPE_INT64;
-    public static long FIELD_TYPE_MASK;
-    public static long FIELD_TYPE_MESSAGE;
-    public static long FIELD_TYPE_SFIXED32;
-    public static long FIELD_TYPE_SFIXED64;
-    public static int FIELD_TYPE_SHIFT;
-    public static long FIELD_TYPE_SINT32;
-    public static long FIELD_TYPE_SINT64;
-    public static long FIELD_TYPE_STRING;
-    public static long FIELD_TYPE_UINT32;
-    public static long FIELD_TYPE_UINT64;
-    public static long FIELD_TYPE_UNKNOWN;
-    public static java.lang.String TAG;
-    public static int WIRE_TYPE_END_GROUP;
-    public static int WIRE_TYPE_FIXED32;
-    public static int WIRE_TYPE_FIXED64;
-    public static int WIRE_TYPE_LENGTH_DELIMITED;
-    public static int WIRE_TYPE_MASK;
-    public static int WIRE_TYPE_START_GROUP;
-    public static int WIRE_TYPE_VARINT;
-}
-
--keep class android.view.AccessibilityInteractionController {
-    <init>(android.view.ViewRootImpl);
-
-    public void findAccessibilityNodeInfoByAccessibilityIdClientThread(long, android.graphics.Region, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, int, int, long, android.view.MagnificationSpec, android.os.Bundle);
-    public void findAccessibilityNodeInfosByTextClientThread(long, java.lang.String, android.graphics.Region, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, int, int, long, android.view.MagnificationSpec);
-    public void findAccessibilityNodeInfosByViewIdClientThread(long, java.lang.String, android.graphics.Region, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, int, int, long, android.view.MagnificationSpec);
-    public void findFocusClientThread(long, int, android.graphics.Region, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, int, int, long, android.view.MagnificationSpec);
-    public void focusSearchClientThread(long, int, android.graphics.Region, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, int, int, long, android.view.MagnificationSpec);
-    public void performAccessibilityActionClientThread(long, int, android.os.Bundle, int, android.view.accessibility.IAccessibilityInteractionConnectionCallback, int, int, long);
-
-
-}
-
--keep class android.view.AccessibilityIterators {
-    <init>();
-
-
-
-}
-
--keep class android.view.AccessibilityIterators$TextSegmentIterator {
-
-    public abstract int[] following(int);
-    public abstract int[] preceding(int);
-
-
-}
-
--keep class android.view.ActionMode {
-    <init>();
-
-    public abstract void finish();
-    public abstract android.view.View getCustomView();
-    public abstract android.view.Menu getMenu();
-    public abstract android.view.MenuInflater getMenuInflater();
-    public abstract java.lang.CharSequence getSubtitle();
-    public java.lang.Object getTag();
-    public abstract java.lang.CharSequence getTitle();
-    public boolean getTitleOptionalHint();
-    public int getType();
-    public void hide(long);
-    public abstract void invalidate();
-    public void invalidateContentRect();
-    public boolean isTitleOptional();
-    public boolean isUiFocusable();
-    public void onWindowFocusChanged(boolean);
-    public abstract void setCustomView(android.view.View);
-    public abstract void setSubtitle(java.lang.CharSequence);
-    public abstract void setSubtitle(int);
-    public void setTag(java.lang.Object);
-    public abstract void setTitle(java.lang.CharSequence);
-    public abstract void setTitle(int);
-    public void setTitleOptionalHint(boolean);
-    public void setType(int);
-
-
-    public static int DEFAULT_HIDE_DURATION;
-    public static int TYPE_FLOATING;
-    public static int TYPE_PRIMARY;
-}
-
--keep class android.view.ActionMode$Callback {
-
-    public abstract boolean onActionItemClicked(android.view.ActionMode, android.view.MenuItem);
-    public abstract boolean onCreateActionMode(android.view.ActionMode, android.view.Menu);
-    public abstract void onDestroyActionMode(android.view.ActionMode);
-    public abstract boolean onPrepareActionMode(android.view.ActionMode, android.view.Menu);
-
-
-}
-
--keep class android.view.ActionProvider {
-    <init>(android.content.Context);
-
-    public boolean hasSubMenu();
-    public boolean isVisible();
-    public abstract android.view.View onCreateActionView();
-    public android.view.View onCreateActionView(android.view.MenuItem);
-    public boolean onPerformDefaultAction();
-    public void onPrepareSubMenu(android.view.SubMenu);
-    public boolean overridesItemVisibility();
-    public void refreshVisibility();
-    public void reset();
-    public void setSubUiVisibilityListener(android.view.ActionProvider$SubUiVisibilityListener);
-    public void setVisibilityListener(android.view.ActionProvider$VisibilityListener);
-    public void subUiVisibilityChanged(boolean);
-
-
-}
-
--keep class android.view.ActionProvider$SubUiVisibilityListener {
-
-    public abstract void onSubUiVisibilityChanged(boolean);
-
-
-}
-
--keep class android.view.ActionProvider$VisibilityListener {
-
-    public abstract void onActionProviderVisibilityChanged(boolean);
-
-
-}
-
--keep class android.view.AppTransitionAnimationSpec {
-    <init>(int, android.graphics.GraphicBuffer, android.graphics.Rect);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.graphics.GraphicBuffer buffer;
-    public android.graphics.Rect rect;
-    public int taskId;
-}
-
--keep class android.view.Choreographer {
-
-    public static long getFrameDelay();
-    public long getFrameIntervalNanos();
-    public long getFrameTime();
-    public long getFrameTimeNanos();
-    public static android.view.Choreographer getInstance();
-    public long getLastFrameTimeNanos();
-    public static android.view.Choreographer getMainThreadInstance();
-    public static android.view.Choreographer getSfInstance();
-    public void postCallback(int, java.lang.Runnable, java.lang.Object);
-    public void postCallbackDelayed(int, java.lang.Runnable, java.lang.Object, long);
-    public void postFrameCallback(android.view.Choreographer$FrameCallback);
-    public void postFrameCallbackDelayed(android.view.Choreographer$FrameCallback, long);
-    public static void releaseInstance();
-    public void removeCallbacks(int, java.lang.Runnable, java.lang.Object);
-    public void removeFrameCallback(android.view.Choreographer$FrameCallback);
-    public static void setFrameDelay(long);
-    public static long subtractFrameDelay(long);
-
-
-    public static int CALLBACK_ANIMATION;
-    public static int CALLBACK_COMMIT;
-    public static int CALLBACK_INPUT;
-    public static int CALLBACK_TRAVERSAL;
-}
-
--keep class android.view.Choreographer$FrameCallback {
-
-    public abstract void doFrame(long);
-
-
-}
-
--keep class android.view.ContextMenu {
-
-    public abstract void clearHeader();
-    public abstract android.view.ContextMenu setHeaderIcon(int);
-    public abstract android.view.ContextMenu setHeaderIcon(android.graphics.drawable.Drawable);
-    public abstract android.view.ContextMenu setHeaderTitle(int);
-    public abstract android.view.ContextMenu setHeaderTitle(java.lang.CharSequence);
-    public abstract android.view.ContextMenu setHeaderView(android.view.View);
-
-
-}
-
--keep class android.view.ContextMenu$ContextMenuInfo {
-
-
-
-}
-
--keep class android.view.ContextThemeWrapper {
-    <init>();
-    <init>(android.content.Context, int);
-    <init>(android.content.Context, android.content.res.Resources$Theme);
-
-    public void applyOverrideConfiguration(android.content.res.Configuration);
-    protected void attachBaseContext(android.content.Context);
-    public android.content.res.AssetManager getAssets();
-    public android.content.res.Configuration getOverrideConfiguration();
-    public android.content.res.Resources getResources();
-    public java.lang.Object getSystemService(java.lang.String);
-    public android.content.res.Resources$Theme getTheme();
-    public int getThemeResId();
-    protected void onApplyThemeResource(android.content.res.Resources$Theme, int, boolean);
-    public void setTheme(int);
-
-
-}
-
--keep class android.view.Display {
-    <init>(android.hardware.display.DisplayManagerGlobal, int, android.view.DisplayInfo, android.view.DisplayAdjustments);
-    <init>(android.hardware.display.DisplayManagerGlobal, int, android.view.DisplayInfo, android.content.res.Resources);
-
-    public java.lang.String getAddress();
-    public long getAppVsyncOffsetNanos();
-    public int getColorMode();
-    public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
-    public android.view.DisplayAdjustments getDisplayAdjustments();
-    public int getDisplayId();
-    public boolean getDisplayInfo(android.view.DisplayInfo);
-    public int getFlags();
-    public android.view.Display$HdrCapabilities getHdrCapabilities();
-    public int getHeight();
-    public int getLayerStack();
-    public int getMaximumSizeDimension();
-    public void getMetrics(android.util.DisplayMetrics);
-    public android.view.Display$Mode getMode();
-    public java.lang.String getName();
-    public int getOrientation();
-    public void getOverscanInsets(android.graphics.Rect);
-    public java.lang.String getOwnerPackageName();
-    public int getOwnerUid();
-    public int getPixelFormat();
-    public long getPresentationDeadlineNanos();
-    public void getRealMetrics(android.util.DisplayMetrics);
-    public void getRealSize(android.graphics.Point);
-    public void getRectSize(android.graphics.Rect);
-    public float getRefreshRate();
-    public int getRemoveMode();
-    public int getRotation();
-    public void getSize(android.graphics.Point);
-    public int getState();
-    public int[] getSupportedColorModes();
-    public android.view.Display$Mode[] getSupportedModes();
-    public float[] getSupportedRefreshRates();
-    public int getType();
-    public int getWidth();
-    public boolean hasAccess(int);
-    public static boolean hasAccess(int, int, int);
-    public static boolean isDozeState(int);
-    public boolean isHdr();
-    public boolean isPublicPresentation();
-    public static boolean isSuspendedState(int);
-    public boolean isValid();
-    public boolean isWideColorGamut();
-    public void requestColorMode(int);
-    public static java.lang.String stateToString(int);
-    public java.lang.String toString();
-    public static java.lang.String typeToString(int);
-
-
-    public static int COLOR_MODE_ADOBE_RGB;
-    public static int COLOR_MODE_BT601_525;
-    public static int COLOR_MODE_BT601_525_UNADJUSTED;
-    public static int COLOR_MODE_BT601_625;
-    public static int COLOR_MODE_BT601_625_UNADJUSTED;
-    public static int COLOR_MODE_BT709;
-    public static int COLOR_MODE_DCI_P3;
-    public static int COLOR_MODE_DEFAULT;
-    public static int COLOR_MODE_DISPLAY_P3;
-    public static int COLOR_MODE_INVALID;
-    public static int COLOR_MODE_SRGB;
-    public static int DEFAULT_DISPLAY;
-    public static int FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD;
-    public static int FLAG_PRESENTATION;
-    public static int FLAG_PRIVATE;
-    public static int FLAG_ROUND;
-    public static int FLAG_SCALING_DISABLED;
-    public static int FLAG_SECURE;
-    public static int FLAG_SUPPORTS_PROTECTED_BUFFERS;
-    public static int INVALID_DISPLAY;
-    public static int REMOVE_MODE_DESTROY_CONTENT;
-    public static int REMOVE_MODE_MOVE_CONTENT_TO_PRIMARY;
-    public static int STATE_DOZE;
-    public static int STATE_DOZE_SUSPEND;
-    public static int STATE_OFF;
-    public static int STATE_ON;
-    public static int STATE_ON_SUSPEND;
-    public static int STATE_UNKNOWN;
-    public static int STATE_VR;
-    public static int TYPE_BUILT_IN;
-    public static int TYPE_HDMI;
-    public static int TYPE_OVERLAY;
-    public static int TYPE_UNKNOWN;
-    public static int TYPE_VIRTUAL;
-    public static int TYPE_WIFI;
-}
-
--keep class android.view.Display$HdrCapabilities {
-    <init>();
-    <init>(int[], float, float, float);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public float getDesiredMaxAverageLuminance();
-    public float getDesiredMaxLuminance();
-    public float getDesiredMinLuminance();
-    public int[] getSupportedHdrTypes();
-    public int hashCode();
-    public void readFromParcel(android.os.Parcel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int HDR_TYPE_DOLBY_VISION;
-    public static int HDR_TYPE_HDR10;
-    public static int HDR_TYPE_HLG;
-    public static float INVALID_LUMINANCE;
-}
-
--keep class android.view.Display$Mode {
-    <init>(int, int, int, float);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int getModeId();
-    public int getPhysicalHeight();
-    public int getPhysicalWidth();
-    public float getRefreshRate();
-    public int hashCode();
-    public boolean matches(int, int, float);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static android.view.Display$Mode[] EMPTY_ARRAY;
-}
-
--keep class android.view.DisplayAdjustments {
-    <init>();
-    <init>(android.content.res.Configuration);
-    <init>(android.view.DisplayAdjustments);
-
-    public boolean equals(java.lang.Object);
-    public android.content.res.CompatibilityInfo getCompatibilityInfo();
-    public android.content.res.Configuration getConfiguration();
-    public int hashCode();
-    public void setCompatibilityInfo(android.content.res.CompatibilityInfo);
-    public void setConfiguration(android.content.res.Configuration);
-
-
-    public static android.view.DisplayAdjustments DEFAULT_DISPLAY_ADJUSTMENTS;
-}
-
--keep class android.view.DisplayCutout {
-    <init>(android.graphics.Rect, java.util.List);
-
-    public boolean equals(java.lang.Object);
-    public static android.view.DisplayCutout fromBoundingRect(int, int, int, int);
-    public static android.view.DisplayCutout fromBounds(android.graphics.Region);
-    public static android.view.DisplayCutout fromResourcesRectApproximation(android.content.res.Resources, int, int);
-    public static android.view.DisplayCutout fromSpec(java.lang.String, int, int, float);
-    public java.util.List getBoundingRects();
-    public android.graphics.Region getBounds();
-    public int getSafeInsetBottom();
-    public int getSafeInsetLeft();
-    public int getSafeInsetRight();
-    public int getSafeInsetTop();
-    public android.graphics.Rect getSafeInsets();
-    public int hashCode();
-    public android.view.DisplayCutout inset(int, int, int, int);
-    public boolean isBoundsEmpty();
-    public boolean isEmpty();
-    public static android.graphics.Path pathFromResources(android.content.res.Resources, int, int);
-    public android.view.DisplayCutout replaceSafeInsets(android.graphics.Rect);
-    public java.lang.String toString();
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static java.lang.String EMULATION_OVERLAY_CATEGORY;
-    public static android.view.DisplayCutout NO_CUTOUT;
-}
-
--keep class android.view.DisplayCutout$ParcelableWrapper {
-    <init>();
-    <init>(android.view.DisplayCutout);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.view.DisplayCutout get();
-    public int hashCode();
-    public static android.view.DisplayCutout readCutoutFromParcel(android.os.Parcel);
-    public void readFromParcel(android.os.Parcel);
-    public void set(android.view.DisplayCutout$ParcelableWrapper);
-    public void set(android.view.DisplayCutout);
-    public java.lang.String toString();
-    public static void writeCutoutToParcel(android.view.DisplayCutout, android.os.Parcel, int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.DisplayInfo {
-    <init>();
-    <init>(android.view.DisplayInfo);
-
-    public void copyFrom(android.view.DisplayInfo);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public boolean equals(android.view.DisplayInfo);
-    public int findDefaultModeByRefreshRate(float);
-    public void getAppMetrics(android.util.DisplayMetrics);
-    public void getAppMetrics(android.util.DisplayMetrics, android.view.DisplayAdjustments);
-    public void getAppMetrics(android.util.DisplayMetrics, android.content.res.CompatibilityInfo, android.content.res.Configuration);
-    public android.view.Display$Mode getDefaultMode();
-    public float[] getDefaultRefreshRates();
-    public void getLogicalMetrics(android.util.DisplayMetrics, android.content.res.CompatibilityInfo, android.content.res.Configuration);
-    public android.view.Display$Mode getMode();
-    public int getNaturalHeight();
-    public int getNaturalWidth();
-    public boolean hasAccess(int);
-    public int hashCode();
-    public boolean isHdr();
-    public boolean isWideColorGamut();
-    public void readFromParcel(android.os.Parcel);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String address;
-    public int appHeight;
-    public long appVsyncOffsetNanos;
-    public int appWidth;
-    public int colorMode;
-    public int defaultModeId;
-    public android.view.DisplayCutout displayCutout;
-    public int flags;
-    public android.view.Display$HdrCapabilities hdrCapabilities;
-    public int largestNominalAppHeight;
-    public int largestNominalAppWidth;
-    public int layerStack;
-    public int logicalDensityDpi;
-    public int logicalHeight;
-    public int logicalWidth;
-    public int modeId;
-    public java.lang.String name;
-    public int overscanBottom;
-    public int overscanLeft;
-    public int overscanRight;
-    public int overscanTop;
-    public java.lang.String ownerPackageName;
-    public int ownerUid;
-    public float physicalXDpi;
-    public float physicalYDpi;
-    public long presentationDeadlineNanos;
-    public int removeMode;
-    public int rotation;
-    public int smallestNominalAppHeight;
-    public int smallestNominalAppWidth;
-    public int state;
-    public int[] supportedColorModes;
-    public android.view.Display$Mode[] supportedModes;
-    public int type;
-    public java.lang.String uniqueId;
-}
-
--keep class android.view.DisplayListCanvas {
-
-    public void callDrawGLFunction2(long);
-    public void drawCircle(android.graphics.CanvasProperty, android.graphics.CanvasProperty, android.graphics.CanvasProperty, android.graphics.CanvasProperty);
-    public void drawGLFunctor2(long, java.lang.Runnable);
-    public void drawRenderNode(android.view.RenderNode);
-    public void drawRoundRect(android.graphics.CanvasProperty, android.graphics.CanvasProperty, android.graphics.CanvasProperty, android.graphics.CanvasProperty, android.graphics.CanvasProperty, android.graphics.CanvasProperty, android.graphics.CanvasProperty);
-    public int getHeight();
-    public int getMaximumBitmapHeight();
-    public int getMaximumBitmapWidth();
-    public int getWidth();
-    public void insertInorderBarrier();
-    public void insertReorderBarrier();
-    public boolean isHardwareAccelerated();
-    public boolean isOpaque();
-    public boolean isRecordingFor(java.lang.Object);
-    public void setBitmap(android.graphics.Bitmap);
-    public void setDensity(int);
-    protected void throwIfCannotDraw(android.graphics.Bitmap);
-
-
-}
-
--keep class android.view.DragAndDropPermissions {
-
-    public int describeContents();
-    public static android.view.DragAndDropPermissions obtain(android.view.DragEvent);
-    public void release();
-    public boolean take(android.os.IBinder);
-    public boolean takeTransient();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.DragEvent {
-
-    public int describeContents();
-    public int getAction();
-    public android.content.ClipData getClipData();
-    public android.content.ClipDescription getClipDescription();
-    public com.android.internal.view.IDragAndDropPermissions getDragAndDropPermissions();
-    public java.lang.Object getLocalState();
-    public boolean getResult();
-    public float getX();
-    public float getY();
-    public static android.view.DragEvent obtain(int, float, float, java.lang.Object, android.content.ClipDescription, android.content.ClipData, com.android.internal.view.IDragAndDropPermissions, boolean);
-    public static android.view.DragEvent obtain(android.view.DragEvent);
-    public void recycle();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int ACTION_DRAG_ENDED;
-    public static int ACTION_DRAG_ENTERED;
-    public static int ACTION_DRAG_EXITED;
-    public static int ACTION_DRAG_LOCATION;
-    public static int ACTION_DRAG_STARTED;
-    public static int ACTION_DROP;
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.FrameMetrics {
-    <init>(android.view.FrameMetrics);
-
-    public long getMetric(int);
-
-
-    public static int ANIMATION_DURATION;
-    public static int COMMAND_ISSUE_DURATION;
-    public static int DRAW_DURATION;
-    public static int FIRST_DRAW_FRAME;
-    public static int INPUT_HANDLING_DURATION;
-    public static int INTENDED_VSYNC_TIMESTAMP;
-    public static int LAYOUT_MEASURE_DURATION;
-    public static int SWAP_BUFFERS_DURATION;
-    public static int SYNC_DURATION;
-    public static int TOTAL_DURATION;
-    public static int UNKNOWN_DELAY_DURATION;
-    public static int VSYNC_TIMESTAMP;
-}
-
--keep class android.view.FrameStats {
-    <init>();
-
-    public long getEndTimeNano();
-    public int getFrameCount();
-    public long getFramePresentedTimeNano(int);
-    public long getRefreshPeriodNano();
-    public long getStartTimeNano();
-
-
-    public static long UNDEFINED_TIME_NANO;
-    protected long[] mFramesPresentedTimeNano;
-    protected long mRefreshPeriodNano;
-}
-
--keep class android.view.IAppTransitionAnimationSpecsFuture {
-
-    public abstract android.view.AppTransitionAnimationSpec[] get();
-
-
-}
-
--keep class android.view.IRecentsAnimationController {
-
-    public abstract void finish(boolean);
-    public abstract void hideCurrentInputMethod();
-    public abstract android.app.ActivityManager$TaskSnapshot screenshotTask(int);
-    public abstract void setAnimationTargetsBehindSystemBars(boolean);
-    public abstract void setInputConsumerEnabled(boolean);
-    public abstract void setSplitScreenMinimized(boolean);
-
-
-}
-
--keep class android.view.IRecentsAnimationRunner {
-
-    public abstract void onAnimationCanceled();
-    public abstract void onAnimationStart(android.view.IRecentsAnimationController, android.view.RemoteAnimationTarget[], android.graphics.Rect, android.graphics.Rect);
-
-
-}
-
--keep class android.view.IRemoteAnimationFinishedCallback {
-
-    public abstract void onAnimationFinished();
-
-
-}
-
--keep class android.view.IRemoteAnimationRunner {
-
-    public abstract void onAnimationCancelled();
-    public abstract void onAnimationStart(android.view.RemoteAnimationTarget[], android.view.IRemoteAnimationFinishedCallback);
-
-
-}
-
--keep class android.view.IWindow {
-
-    public abstract void closeSystemDialogs(java.lang.String);
-    public abstract void dispatchAppVisibility(boolean);
-    public abstract void dispatchDragEvent(android.view.DragEvent);
-    public abstract void dispatchGetNewSurface();
-    public abstract void dispatchPointerCaptureChanged(boolean);
-    public abstract void dispatchSystemUiVisibilityChanged(int, int, int, int);
-    public abstract void dispatchWallpaperCommand(java.lang.String, int, int, int, android.os.Bundle, boolean);
-    public abstract void dispatchWallpaperOffsets(float, float, float, float, boolean);
-    public abstract void dispatchWindowShown();
-    public abstract void executeCommand(java.lang.String, java.lang.String, android.os.ParcelFileDescriptor);
-    public abstract void moved(int, int);
-    public abstract void requestAppKeyboardShortcuts(com.android.internal.os.IResultReceiver, int);
-    public abstract void resized(android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, boolean, android.util.MergedConfiguration, android.graphics.Rect, boolean, boolean, int, android.view.DisplayCutout$ParcelableWrapper);
-    public abstract void updatePointerIcon(float, float);
-    public abstract void windowFocusChanged(boolean, boolean);
-
-
-}
-
--keep class android.view.IWindowFocusObserver {
-
-    public abstract void focusGained(android.os.IBinder);
-    public abstract void focusLost(android.os.IBinder);
-
-
-}
-
--keep class android.view.IWindowId {
-
-    public abstract boolean isFocused();
-    public abstract void registerFocusObserver(android.view.IWindowFocusObserver);
-    public abstract void unregisterFocusObserver(android.view.IWindowFocusObserver);
-
-
-}
-
--keep class android.view.InflateException {
-    <init>();
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.String);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class android.view.InputChannel {
-    <init>();
-
-    public int describeContents();
-    public void dispose();
-    public android.view.InputChannel dup();
-    protected void finalize();
-    public java.lang.String getName();
-    public static android.view.InputChannel[] openInputChannelPair(java.lang.String);
-    public void readFromParcel(android.os.Parcel);
-    public java.lang.String toString();
-    public void transferTo(android.view.InputChannel);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.InputDevice {
-
-    public int describeContents();
-    public void disable();
-    public void enable();
-    public int getControllerNumber();
-    public java.lang.String getDescriptor();
-    public static android.view.InputDevice getDevice(int);
-    public static int[] getDeviceIds();
-    public int getGeneration();
-    public int getId();
-    public android.hardware.input.InputDeviceIdentifier getIdentifier();
-    public android.view.KeyCharacterMap getKeyCharacterMap();
-    public int getKeyboardType();
-    public android.view.InputDevice$MotionRange getMotionRange(int);
-    public android.view.InputDevice$MotionRange getMotionRange(int, int);
-    public java.util.List getMotionRanges();
-    public java.lang.String getName();
-    public int getProductId();
-    public int getSources();
-    public int getVendorId();
-    public android.os.Vibrator getVibrator();
-    public boolean hasButtonUnderPad();
-    public boolean[] hasKeys(int[]);
-    public boolean hasMicrophone();
-    public boolean isEnabled();
-    public boolean isExternal();
-    public boolean isFullKeyboard();
-    public boolean isVirtual();
-    public void setCustomPointerIcon(android.view.PointerIcon);
-    public void setPointerType(int);
-    public boolean supportsSource(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int KEYBOARD_TYPE_ALPHABETIC;
-    public static int KEYBOARD_TYPE_NONE;
-    public static int KEYBOARD_TYPE_NON_ALPHABETIC;
-    public static int MOTION_RANGE_ORIENTATION;
-    public static int MOTION_RANGE_PRESSURE;
-    public static int MOTION_RANGE_SIZE;
-    public static int MOTION_RANGE_TOOL_MAJOR;
-    public static int MOTION_RANGE_TOOL_MINOR;
-    public static int MOTION_RANGE_TOUCH_MAJOR;
-    public static int MOTION_RANGE_TOUCH_MINOR;
-    public static int MOTION_RANGE_X;
-    public static int MOTION_RANGE_Y;
-    public static int SOURCE_ANY;
-    public static int SOURCE_BLUETOOTH_STYLUS;
-    public static int SOURCE_CLASS_BUTTON;
-    public static int SOURCE_CLASS_JOYSTICK;
-    public static int SOURCE_CLASS_MASK;
-    public static int SOURCE_CLASS_NONE;
-    public static int SOURCE_CLASS_POINTER;
-    public static int SOURCE_CLASS_POSITION;
-    public static int SOURCE_CLASS_TRACKBALL;
-    public static int SOURCE_DPAD;
-    public static int SOURCE_GAMEPAD;
-    public static int SOURCE_HDMI;
-    public static int SOURCE_JOYSTICK;
-    public static int SOURCE_KEYBOARD;
-    public static int SOURCE_MOUSE;
-    public static int SOURCE_MOUSE_RELATIVE;
-    public static int SOURCE_ROTARY_ENCODER;
-    public static int SOURCE_STYLUS;
-    public static int SOURCE_TOUCHPAD;
-    public static int SOURCE_TOUCHSCREEN;
-    public static int SOURCE_TOUCH_NAVIGATION;
-    public static int SOURCE_TRACKBALL;
-    public static int SOURCE_UNKNOWN;
-}
-
--keep class android.view.InputDevice$MotionRange {
-
-    public int getAxis();
-    public float getFlat();
-    public float getFuzz();
-    public float getMax();
-    public float getMin();
-    public float getRange();
-    public float getResolution();
-    public int getSource();
-    public boolean isFromSource(int);
-
-
-}
-
--keep class android.view.InputEvent {
-
-    public abstract void cancel();
-    public abstract android.view.InputEvent copy();
-    public int describeContents();
-    public android.view.InputDevice getDevice();
-    public abstract int getDeviceId();
-    public abstract long getEventTime();
-    public abstract long getEventTimeNano();
-    public int getSequenceNumber();
-    public abstract int getSource();
-    public boolean isFromSource(int);
-    public abstract boolean isTainted();
-    protected void prepareForReuse();
-    public void recycle();
-    public void recycleIfNeededAfterDispatch();
-    public abstract void setSource(int);
-    public abstract void setTainted(boolean);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    protected static int PARCEL_TOKEN_KEY_EVENT;
-    protected static int PARCEL_TOKEN_MOTION_EVENT;
-    protected boolean mRecycled;
-    protected int mSeq;
-}
-
--keep class android.view.InputEventConsistencyVerifier {
-    <init>(java.lang.Object, int);
-    <init>(java.lang.Object, int, java.lang.String);
-
-    public static boolean isInstrumentationEnabled();
-    public void onGenericMotionEvent(android.view.MotionEvent, int);
-    public void onInputEvent(android.view.InputEvent, int);
-    public void onKeyEvent(android.view.KeyEvent, int);
-    public void onTouchEvent(android.view.MotionEvent, int);
-    public void onTrackballEvent(android.view.MotionEvent, int);
-    public void onUnhandledEvent(android.view.InputEvent, int);
-    public void reset();
-
-
-    public static int FLAG_RAW_DEVICE_INPUT;
-}
-
--keep class android.view.InputEventReceiver {
-    <init>(android.view.InputChannel, android.os.Looper);
-
-    public boolean consumeBatchedInputEvents(long);
-    public void dispose();
-    protected void finalize();
-    public void finishInputEvent(android.view.InputEvent, boolean);
-    public void onBatchedInputEventPending();
-    public void onInputEvent(android.view.InputEvent, int);
-
-
-}
-
--keep class android.view.InputQueue {
-    <init>();
-
-    public void dispose();
-    public void dispose(boolean);
-    protected void finalize();
-    public long getNativePtr();
-    public void sendInputEvent(android.view.InputEvent, java.lang.Object, boolean, android.view.InputQueue$FinishedInputEventCallback);
-
-
-}
-
--keep class android.view.InputQueue$Callback {
-
-    public abstract void onInputQueueCreated(android.view.InputQueue);
-    public abstract void onInputQueueDestroyed(android.view.InputQueue);
-
-
-}
-
--keep class android.view.InputQueue$FinishedInputEventCallback {
-
-    public abstract void onFinishedInputEvent(java.lang.Object, boolean);
-
-
-}
-
--keep class android.view.KeyCharacterMap {
-
-    public int describeContents();
-    public static boolean deviceHasKey(int);
-    public static boolean[] deviceHasKeys(int[]);
-    protected void finalize();
-    public int get(int, int);
-    public static int getDeadChar(int, int);
-    public char getDisplayLabel(int);
-    public android.view.KeyEvent[] getEvents(char[]);
-    public android.view.KeyCharacterMap$FallbackAction getFallbackAction(int, int);
-    public boolean getKeyData(int, android.view.KeyCharacterMap$KeyData);
-    public int getKeyboardType();
-    public char getMatch(int, char[]);
-    public char getMatch(int, char[], int);
-    public int getModifierBehavior();
-    public char getNumber(int);
-    public boolean isPrintingKey(int);
-    public static android.view.KeyCharacterMap load(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int ALPHA;
-    public static int BUILT_IN_KEYBOARD;
-    public static int COMBINING_ACCENT;
-    public static int COMBINING_ACCENT_MASK;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FULL;
-    public static char HEX_INPUT;
-    public static int MODIFIER_BEHAVIOR_CHORDED;
-    public static int MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED;
-    public static int NUMERIC;
-    public static char PICKER_DIALOG_INPUT;
-    public static int PREDICTIVE;
-    public static int SPECIAL_FUNCTION;
-    public static int VIRTUAL_KEYBOARD;
-}
-
--keep class android.view.KeyCharacterMap$FallbackAction {
-
-    public static android.view.KeyCharacterMap$FallbackAction obtain();
-    public void recycle();
-
-
-    public int keyCode;
-    public int metaState;
-}
-
--keep class android.view.KeyCharacterMap$KeyData {
-    <init>();
-
-
-
-    public static int META_LENGTH;
-    public char displayLabel;
-    public char[] meta;
-    public char number;
-}
-
--keep class android.view.KeyEvent {
-    <init>(int, int);
-    <init>(long, long, int, int, int);
-    <init>(long, long, int, int, int, int);
-    <init>(long, long, int, int, int, int, int, int);
-    <init>(long, long, int, int, int, int, int, int, int);
-    <init>(long, long, int, int, int, int, int, int, int, int);
-    <init>(long, java.lang.String, int, int);
-    <init>(android.view.KeyEvent);
-    <init>(android.view.KeyEvent, long, int);
-
-    public static java.lang.String actionToString(int);
-    public void cancel();
-    public static android.view.KeyEvent changeAction(android.view.KeyEvent, int);
-    public static android.view.KeyEvent changeFlags(android.view.KeyEvent, int);
-    public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int);
-    public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int, int);
-    public android.view.KeyEvent copy();
-    public android.view.InputEvent copy();
-    public static android.view.KeyEvent createFromParcelBody(android.os.Parcel);
-    public boolean dispatch(android.view.KeyEvent$Callback);
-    public boolean dispatch(android.view.KeyEvent$Callback, android.view.KeyEvent$DispatcherState, java.lang.Object);
-    public int getAction();
-    public java.lang.String getCharacters();
-    public static int getDeadChar(int, int);
-    public int getDeviceId();
-    public char getDisplayLabel();
-    public long getDownTime();
-    public long getEventTime();
-    public long getEventTimeNano();
-    public int getFlags();
-    public android.view.KeyCharacterMap getKeyCharacterMap();
-    public int getKeyCode();
-    public boolean getKeyData(android.view.KeyCharacterMap$KeyData);
-    public int getKeyboardDevice();
-    public char getMatch(char[]);
-    public char getMatch(char[], int);
-    public static int getMaxKeyCode();
-    public int getMetaState();
-    public static int getModifierMetaStateMask();
-    public int getModifiers();
-    public char getNumber();
-    public int getRepeatCount();
-    public int getScanCode();
-    public int getSource();
-    public int getUnicodeChar();
-    public int getUnicodeChar(int);
-    public boolean hasModifiers(int);
-    public boolean hasNoModifiers();
-    public static boolean isAltKey(int);
-    public boolean isAltPressed();
-    public boolean isCanceled();
-    public boolean isCapsLockOn();
-    public static boolean isConfirmKey(int);
-    public boolean isCtrlPressed();
-    public boolean isDown();
-    public boolean isFunctionPressed();
-    public static boolean isGamepadButton(int);
-    public boolean isLongPress();
-    public static boolean isMediaKey(int);
-    public static boolean isMetaKey(int);
-    public boolean isMetaPressed();
-    public static boolean isModifierKey(int);
-    public boolean isNumLockOn();
-    public boolean isPrintingKey();
-    public boolean isScrollLockOn();
-    public boolean isShiftPressed();
-    public boolean isSymPressed();
-    public boolean isSystem();
-    public static boolean isSystemKey(int);
-    public boolean isTainted();
-    public boolean isTracking();
-    public boolean isWakeKey();
-    public static boolean isWakeKey(int);
-    public static int keyCodeFromString(java.lang.String);
-    public static java.lang.String keyCodeToString(int);
-    public static boolean metaStateHasModifiers(int, int);
-    public static boolean metaStateHasNoModifiers(int);
-    public static java.lang.String metaStateToString(int);
-    public static int normalizeMetaState(int);
-    public static android.view.KeyEvent obtain(long, long, int, int, int, int, int, int, int, int, java.lang.String);
-    public static android.view.KeyEvent obtain(android.view.KeyEvent);
-    public void recycle();
-    public void recycleIfNeededAfterDispatch();
-    public void setSource(int);
-    public void setTainted(boolean);
-    public void startTracking();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int ACTION_DOWN;
-    public static int ACTION_MULTIPLE;
-    public static int ACTION_UP;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_CANCELED;
-    public static int FLAG_CANCELED_LONG_PRESS;
-    public static int FLAG_EDITOR_ACTION;
-    public static int FLAG_FALLBACK;
-    public static int FLAG_FROM_SYSTEM;
-    public static int FLAG_KEEP_TOUCH_MODE;
-    public static int FLAG_LONG_PRESS;
-    public static int FLAG_PREDISPATCH;
-    public static int FLAG_SOFT_KEYBOARD;
-    public static int FLAG_START_TRACKING;
-    public static int FLAG_TAINTED;
-    public static int FLAG_TRACKING;
-    public static int FLAG_VIRTUAL_HARD_KEY;
-    public static int FLAG_WOKE_HERE;
-    public static int KEYCODE_0;
-    public static int KEYCODE_1;
-    public static int KEYCODE_11;
-    public static int KEYCODE_12;
-    public static int KEYCODE_2;
-    public static int KEYCODE_3;
-    public static int KEYCODE_3D_MODE;
-    public static int KEYCODE_4;
-    public static int KEYCODE_5;
-    public static int KEYCODE_6;
-    public static int KEYCODE_7;
-    public static int KEYCODE_8;
-    public static int KEYCODE_9;
-    public static int KEYCODE_A;
-    public static int KEYCODE_ALL_APPS;
-    public static int KEYCODE_ALT_LEFT;
-    public static int KEYCODE_ALT_RIGHT;
-    public static int KEYCODE_APOSTROPHE;
-    public static int KEYCODE_APP_SWITCH;
-    public static int KEYCODE_ASSIST;
-    public static int KEYCODE_AT;
-    public static int KEYCODE_AVR_INPUT;
-    public static int KEYCODE_AVR_POWER;
-    public static int KEYCODE_B;
-    public static int KEYCODE_BACK;
-    public static int KEYCODE_BACKSLASH;
-    public static int KEYCODE_BOOKMARK;
-    public static int KEYCODE_BREAK;
-    public static int KEYCODE_BRIGHTNESS_DOWN;
-    public static int KEYCODE_BRIGHTNESS_UP;
-    public static int KEYCODE_BUTTON_1;
-    public static int KEYCODE_BUTTON_10;
-    public static int KEYCODE_BUTTON_11;
-    public static int KEYCODE_BUTTON_12;
-    public static int KEYCODE_BUTTON_13;
-    public static int KEYCODE_BUTTON_14;
-    public static int KEYCODE_BUTTON_15;
-    public static int KEYCODE_BUTTON_16;
-    public static int KEYCODE_BUTTON_2;
-    public static int KEYCODE_BUTTON_3;
-    public static int KEYCODE_BUTTON_4;
-    public static int KEYCODE_BUTTON_5;
-    public static int KEYCODE_BUTTON_6;
-    public static int KEYCODE_BUTTON_7;
-    public static int KEYCODE_BUTTON_8;
-    public static int KEYCODE_BUTTON_9;
-    public static int KEYCODE_BUTTON_A;
-    public static int KEYCODE_BUTTON_B;
-    public static int KEYCODE_BUTTON_C;
-    public static int KEYCODE_BUTTON_L1;
-    public static int KEYCODE_BUTTON_L2;
-    public static int KEYCODE_BUTTON_MODE;
-    public static int KEYCODE_BUTTON_R1;
-    public static int KEYCODE_BUTTON_R2;
-    public static int KEYCODE_BUTTON_SELECT;
-    public static int KEYCODE_BUTTON_START;
-    public static int KEYCODE_BUTTON_THUMBL;
-    public static int KEYCODE_BUTTON_THUMBR;
-    public static int KEYCODE_BUTTON_X;
-    public static int KEYCODE_BUTTON_Y;
-    public static int KEYCODE_BUTTON_Z;
-    public static int KEYCODE_C;
-    public static int KEYCODE_CALCULATOR;
-    public static int KEYCODE_CALENDAR;
-    public static int KEYCODE_CALL;
-    public static int KEYCODE_CAMERA;
-    public static int KEYCODE_CAPS_LOCK;
-    public static int KEYCODE_CAPTIONS;
-    public static int KEYCODE_CHANNEL_DOWN;
-    public static int KEYCODE_CHANNEL_UP;
-    public static int KEYCODE_CLEAR;
-    public static int KEYCODE_COMMA;
-    public static int KEYCODE_CONTACTS;
-    public static int KEYCODE_COPY;
-    public static int KEYCODE_CTRL_LEFT;
-    public static int KEYCODE_CTRL_RIGHT;
-    public static int KEYCODE_CUT;
-    public static int KEYCODE_D;
-    public static int KEYCODE_DEL;
-    public static int KEYCODE_DPAD_CENTER;
-    public static int KEYCODE_DPAD_DOWN;
-    public static int KEYCODE_DPAD_DOWN_LEFT;
-    public static int KEYCODE_DPAD_DOWN_RIGHT;
-    public static int KEYCODE_DPAD_LEFT;
-    public static int KEYCODE_DPAD_RIGHT;
-    public static int KEYCODE_DPAD_UP;
-    public static int KEYCODE_DPAD_UP_LEFT;
-    public static int KEYCODE_DPAD_UP_RIGHT;
-    public static int KEYCODE_DVR;
-    public static int KEYCODE_E;
-    public static int KEYCODE_EISU;
-    public static int KEYCODE_ENDCALL;
-    public static int KEYCODE_ENTER;
-    public static int KEYCODE_ENVELOPE;
-    public static int KEYCODE_EQUALS;
-    public static int KEYCODE_ESCAPE;
-    public static int KEYCODE_EXPLORER;
-    public static int KEYCODE_F;
-    public static int KEYCODE_F1;
-    public static int KEYCODE_F10;
-    public static int KEYCODE_F11;
-    public static int KEYCODE_F12;
-    public static int KEYCODE_F2;
-    public static int KEYCODE_F3;
-    public static int KEYCODE_F4;
-    public static int KEYCODE_F5;
-    public static int KEYCODE_F6;
-    public static int KEYCODE_F7;
-    public static int KEYCODE_F8;
-    public static int KEYCODE_F9;
-    public static int KEYCODE_FOCUS;
-    public static int KEYCODE_FORWARD;
-    public static int KEYCODE_FORWARD_DEL;
-    public static int KEYCODE_FUNCTION;
-    public static int KEYCODE_G;
-    public static int KEYCODE_GRAVE;
-    public static int KEYCODE_GUIDE;
-    public static int KEYCODE_H;
-    public static int KEYCODE_HEADSETHOOK;
-    public static int KEYCODE_HELP;
-    public static int KEYCODE_HENKAN;
-    public static int KEYCODE_HOME;
-    public static int KEYCODE_I;
-    public static int KEYCODE_INFO;
-    public static int KEYCODE_INSERT;
-    public static int KEYCODE_J;
-    public static int KEYCODE_K;
-    public static int KEYCODE_KANA;
-    public static int KEYCODE_KATAKANA_HIRAGANA;
-    public static int KEYCODE_L;
-    public static int KEYCODE_LANGUAGE_SWITCH;
-    public static int KEYCODE_LAST_CHANNEL;
-    public static int KEYCODE_LEFT_BRACKET;
-    public static int KEYCODE_M;
-    public static int KEYCODE_MANNER_MODE;
-    public static int KEYCODE_MEDIA_AUDIO_TRACK;
-    public static int KEYCODE_MEDIA_CLOSE;
-    public static int KEYCODE_MEDIA_EJECT;
-    public static int KEYCODE_MEDIA_FAST_FORWARD;
-    public static int KEYCODE_MEDIA_NEXT;
-    public static int KEYCODE_MEDIA_PAUSE;
-    public static int KEYCODE_MEDIA_PLAY;
-    public static int KEYCODE_MEDIA_PLAY_PAUSE;
-    public static int KEYCODE_MEDIA_PREVIOUS;
-    public static int KEYCODE_MEDIA_RECORD;
-    public static int KEYCODE_MEDIA_REWIND;
-    public static int KEYCODE_MEDIA_SKIP_BACKWARD;
-    public static int KEYCODE_MEDIA_SKIP_FORWARD;
-    public static int KEYCODE_MEDIA_STEP_BACKWARD;
-    public static int KEYCODE_MEDIA_STEP_FORWARD;
-    public static int KEYCODE_MEDIA_STOP;
-    public static int KEYCODE_MEDIA_TOP_MENU;
-    public static int KEYCODE_MENU;
-    public static int KEYCODE_META_LEFT;
-    public static int KEYCODE_META_RIGHT;
-    public static int KEYCODE_MINUS;
-    public static int KEYCODE_MOVE_END;
-    public static int KEYCODE_MOVE_HOME;
-    public static int KEYCODE_MUHENKAN;
-    public static int KEYCODE_MUSIC;
-    public static int KEYCODE_MUTE;
-    public static int KEYCODE_N;
-    public static int KEYCODE_NAVIGATE_IN;
-    public static int KEYCODE_NAVIGATE_NEXT;
-    public static int KEYCODE_NAVIGATE_OUT;
-    public static int KEYCODE_NAVIGATE_PREVIOUS;
-    public static int KEYCODE_NOTIFICATION;
-    public static int KEYCODE_NUM;
-    public static int KEYCODE_NUMPAD_0;
-    public static int KEYCODE_NUMPAD_1;
-    public static int KEYCODE_NUMPAD_2;
-    public static int KEYCODE_NUMPAD_3;
-    public static int KEYCODE_NUMPAD_4;
-    public static int KEYCODE_NUMPAD_5;
-    public static int KEYCODE_NUMPAD_6;
-    public static int KEYCODE_NUMPAD_7;
-    public static int KEYCODE_NUMPAD_8;
-    public static int KEYCODE_NUMPAD_9;
-    public static int KEYCODE_NUMPAD_ADD;
-    public static int KEYCODE_NUMPAD_COMMA;
-    public static int KEYCODE_NUMPAD_DIVIDE;
-    public static int KEYCODE_NUMPAD_DOT;
-    public static int KEYCODE_NUMPAD_ENTER;
-    public static int KEYCODE_NUMPAD_EQUALS;
-    public static int KEYCODE_NUMPAD_LEFT_PAREN;
-    public static int KEYCODE_NUMPAD_MULTIPLY;
-    public static int KEYCODE_NUMPAD_RIGHT_PAREN;
-    public static int KEYCODE_NUMPAD_SUBTRACT;
-    public static int KEYCODE_NUM_LOCK;
-    public static int KEYCODE_O;
-    public static int KEYCODE_P;
-    public static int KEYCODE_PAGE_DOWN;
-    public static int KEYCODE_PAGE_UP;
-    public static int KEYCODE_PAIRING;
-    public static int KEYCODE_PASTE;
-    public static int KEYCODE_PERIOD;
-    public static int KEYCODE_PICTSYMBOLS;
-    public static int KEYCODE_PLUS;
-    public static int KEYCODE_POUND;
-    public static int KEYCODE_POWER;
-    public static int KEYCODE_PROG_BLUE;
-    public static int KEYCODE_PROG_GREEN;
-    public static int KEYCODE_PROG_RED;
-    public static int KEYCODE_PROG_YELLOW;
-    public static int KEYCODE_Q;
-    public static int KEYCODE_R;
-    public static int KEYCODE_REFRESH;
-    public static int KEYCODE_RIGHT_BRACKET;
-    public static int KEYCODE_RO;
-    public static int KEYCODE_S;
-    public static int KEYCODE_SCROLL_LOCK;
-    public static int KEYCODE_SEARCH;
-    public static int KEYCODE_SEMICOLON;
-    public static int KEYCODE_SETTINGS;
-    public static int KEYCODE_SHIFT_LEFT;
-    public static int KEYCODE_SHIFT_RIGHT;
-    public static int KEYCODE_SLASH;
-    public static int KEYCODE_SLEEP;
-    public static int KEYCODE_SOFT_LEFT;
-    public static int KEYCODE_SOFT_RIGHT;
-    public static int KEYCODE_SOFT_SLEEP;
-    public static int KEYCODE_SPACE;
-    public static int KEYCODE_STAR;
-    public static int KEYCODE_STB_INPUT;
-    public static int KEYCODE_STB_POWER;
-    public static int KEYCODE_STEM_1;
-    public static int KEYCODE_STEM_2;
-    public static int KEYCODE_STEM_3;
-    public static int KEYCODE_STEM_PRIMARY;
-    public static int KEYCODE_SWITCH_CHARSET;
-    public static int KEYCODE_SYM;
-    public static int KEYCODE_SYSRQ;
-    public static int KEYCODE_SYSTEM_NAVIGATION_DOWN;
-    public static int KEYCODE_SYSTEM_NAVIGATION_LEFT;
-    public static int KEYCODE_SYSTEM_NAVIGATION_RIGHT;
-    public static int KEYCODE_SYSTEM_NAVIGATION_UP;
-    public static int KEYCODE_T;
-    public static int KEYCODE_TAB;
-    public static int KEYCODE_TV;
-    public static int KEYCODE_TV_ANTENNA_CABLE;
-    public static int KEYCODE_TV_AUDIO_DESCRIPTION;
-    public static int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN;
-    public static int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP;
-    public static int KEYCODE_TV_CONTENTS_MENU;
-    public static int KEYCODE_TV_DATA_SERVICE;
-    public static int KEYCODE_TV_INPUT;
-    public static int KEYCODE_TV_INPUT_COMPONENT_1;
-    public static int KEYCODE_TV_INPUT_COMPONENT_2;
-    public static int KEYCODE_TV_INPUT_COMPOSITE_1;
-    public static int KEYCODE_TV_INPUT_COMPOSITE_2;
-    public static int KEYCODE_TV_INPUT_HDMI_1;
-    public static int KEYCODE_TV_INPUT_HDMI_2;
-    public static int KEYCODE_TV_INPUT_HDMI_3;
-    public static int KEYCODE_TV_INPUT_HDMI_4;
-    public static int KEYCODE_TV_INPUT_VGA_1;
-    public static int KEYCODE_TV_MEDIA_CONTEXT_MENU;
-    public static int KEYCODE_TV_NETWORK;
-    public static int KEYCODE_TV_NUMBER_ENTRY;
-    public static int KEYCODE_TV_POWER;
-    public static int KEYCODE_TV_RADIO_SERVICE;
-    public static int KEYCODE_TV_SATELLITE;
-    public static int KEYCODE_TV_SATELLITE_BS;
-    public static int KEYCODE_TV_SATELLITE_CS;
-    public static int KEYCODE_TV_SATELLITE_SERVICE;
-    public static int KEYCODE_TV_TELETEXT;
-    public static int KEYCODE_TV_TERRESTRIAL_ANALOG;
-    public static int KEYCODE_TV_TERRESTRIAL_DIGITAL;
-    public static int KEYCODE_TV_TIMER_PROGRAMMING;
-    public static int KEYCODE_TV_ZOOM_MODE;
-    public static int KEYCODE_U;
-    public static int KEYCODE_UNKNOWN;
-    public static int KEYCODE_V;
-    public static int KEYCODE_VOICE_ASSIST;
-    public static int KEYCODE_VOLUME_DOWN;
-    public static int KEYCODE_VOLUME_MUTE;
-    public static int KEYCODE_VOLUME_UP;
-    public static int KEYCODE_W;
-    public static int KEYCODE_WAKEUP;
-    public static int KEYCODE_WINDOW;
-    public static int KEYCODE_X;
-    public static int KEYCODE_Y;
-    public static int KEYCODE_YEN;
-    public static int KEYCODE_Z;
-    public static int KEYCODE_ZENKAKU_HANKAKU;
-    public static int KEYCODE_ZOOM_IN;
-    public static int KEYCODE_ZOOM_OUT;
-    public static int MAX_KEYCODE;
-    public static int META_ALT_LEFT_ON;
-    public static int META_ALT_LOCKED;
-    public static int META_ALT_MASK;
-    public static int META_ALT_ON;
-    public static int META_ALT_RIGHT_ON;
-    public static int META_CAPS_LOCK_ON;
-    public static int META_CAP_LOCKED;
-    public static int META_CTRL_LEFT_ON;
-    public static int META_CTRL_MASK;
-    public static int META_CTRL_ON;
-    public static int META_CTRL_RIGHT_ON;
-    public static int META_FUNCTION_ON;
-    public static int META_META_LEFT_ON;
-    public static int META_META_MASK;
-    public static int META_META_ON;
-    public static int META_META_RIGHT_ON;
-    public static int META_NUM_LOCK_ON;
-    public static int META_SCROLL_LOCK_ON;
-    public static int META_SELECTING;
-    public static int META_SHIFT_LEFT_ON;
-    public static int META_SHIFT_MASK;
-    public static int META_SHIFT_ON;
-    public static int META_SHIFT_RIGHT_ON;
-    public static int META_SYM_LOCKED;
-    public static int META_SYM_ON;
-}
-
--keep class android.view.KeyEvent$Callback {
-
-    public abstract boolean onKeyDown(int, android.view.KeyEvent);
-    public abstract boolean onKeyLongPress(int, android.view.KeyEvent);
-    public abstract boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    public abstract boolean onKeyUp(int, android.view.KeyEvent);
-
-
-}
-
--keep class android.view.KeyEvent$DispatcherState {
-    <init>();
-
-    public void handleUpEvent(android.view.KeyEvent);
-    public boolean isTracking(android.view.KeyEvent);
-    public void performedLongPress(android.view.KeyEvent);
-    public void reset();
-    public void reset(java.lang.Object);
-    public void startTracking(android.view.KeyEvent, java.lang.Object);
-
-
-}
-
--keep class android.view.KeyboardShortcutGroup {
-    <init>(java.lang.CharSequence, java.util.List);
-    <init>(java.lang.CharSequence);
-    <init>(java.lang.CharSequence, java.util.List, boolean);
-    <init>(java.lang.CharSequence, boolean);
-
-    public void addItem(android.view.KeyboardShortcutInfo);
-    public int describeContents();
-    public java.util.List getItems();
-    public java.lang.CharSequence getLabel();
-    public boolean isSystemGroup();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.KeyboardShortcutInfo {
-    <init>(java.lang.CharSequence, android.graphics.drawable.Icon, int, int);
-    <init>(java.lang.CharSequence, int, int);
-    <init>(java.lang.CharSequence, char, int);
-
-    public int describeContents();
-    public char getBaseCharacter();
-    public android.graphics.drawable.Icon getIcon();
-    public int getKeycode();
-    public java.lang.CharSequence getLabel();
-    public int getModifiers();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.LayoutInflater {
-    <init>(android.content.Context);
-    <init>(android.view.LayoutInflater, android.content.Context);
-
-    public abstract android.view.LayoutInflater cloneInContext(android.content.Context);
-    public android.view.View createView(java.lang.String, java.lang.String, android.util.AttributeSet);
-    public static android.view.LayoutInflater from(android.content.Context);
-    public android.content.Context getContext();
-    public android.view.LayoutInflater$Factory getFactory();
-    public android.view.LayoutInflater$Factory2 getFactory2();
-    public android.view.LayoutInflater$Filter getFilter();
-    public android.view.View inflate(int, android.view.ViewGroup);
-    public android.view.View inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup);
-    public android.view.View inflate(int, android.view.ViewGroup, boolean);
-    public android.view.View inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean);
-    protected android.view.View onCreateView(java.lang.String, android.util.AttributeSet);
-    protected android.view.View onCreateView(android.view.View, java.lang.String, android.util.AttributeSet);
-    public void setFactory(android.view.LayoutInflater$Factory);
-    public void setFactory2(android.view.LayoutInflater$Factory2);
-    public void setFilter(android.view.LayoutInflater$Filter);
-    public void setPrivateFactory(android.view.LayoutInflater$Factory2);
-
-
-    protected android.content.Context mContext;
-}
-
--keep class android.view.LayoutInflater$Factory {
-
-    public abstract android.view.View onCreateView(java.lang.String, android.content.Context, android.util.AttributeSet);
-
-
-}
-
--keep class android.view.LayoutInflater$Factory2 {
-
-    public abstract android.view.View onCreateView(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet);
-
-
-}
-
--keep class android.view.LayoutInflater$Filter {
-
-    public abstract boolean onLoadClass(java.lang.Class);
-
-
-}
-
--keep class android.view.MagnificationSpec {
-
-    public void clear();
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public void initialize(float, float, float);
-    public boolean isNop();
-    public static android.view.MagnificationSpec obtain(android.view.MagnificationSpec);
-    public static android.view.MagnificationSpec obtain();
-    public void recycle();
-    public void setTo(android.view.MagnificationSpec);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public float offsetX;
-    public float offsetY;
-    public float scale;
-}
-
--keep class android.view.Menu {
-
-    public abstract android.view.MenuItem add(java.lang.CharSequence);
-    public abstract android.view.MenuItem add(int);
-    public abstract android.view.MenuItem add(int, int, int, java.lang.CharSequence);
-    public abstract android.view.MenuItem add(int, int, int, int);
-    public abstract int addIntentOptions(int, int, int, android.content.ComponentName, android.content.Intent[], android.content.Intent, int, android.view.MenuItem[]);
-    public abstract android.view.SubMenu addSubMenu(java.lang.CharSequence);
-    public abstract android.view.SubMenu addSubMenu(int);
-    public abstract android.view.SubMenu addSubMenu(int, int, int, java.lang.CharSequence);
-    public abstract android.view.SubMenu addSubMenu(int, int, int, int);
-    public abstract void clear();
-    public abstract void close();
-    public abstract android.view.MenuItem findItem(int);
-    public abstract android.view.MenuItem getItem(int);
-    public abstract boolean hasVisibleItems();
-    public abstract boolean isShortcutKey(int, android.view.KeyEvent);
-    public abstract boolean performIdentifierAction(int, int);
-    public abstract boolean performShortcut(int, android.view.KeyEvent, int);
-    public abstract void removeGroup(int);
-    public abstract void removeItem(int);
-    public abstract void setGroupCheckable(int, boolean, boolean);
-    public void setGroupDividerEnabled(boolean);
-    public abstract void setGroupEnabled(int, boolean);
-    public abstract void setGroupVisible(int, boolean);
-    public abstract void setQwertyMode(boolean);
-    public abstract int size();
-
-
-    public static int CATEGORY_ALTERNATIVE;
-    public static int CATEGORY_CONTAINER;
-    public static int CATEGORY_MASK;
-    public static int CATEGORY_SECONDARY;
-    public static int CATEGORY_SHIFT;
-    public static int CATEGORY_SYSTEM;
-    public static int FIRST;
-    public static int FLAG_ALWAYS_PERFORM_CLOSE;
-    public static int FLAG_APPEND_TO_GROUP;
-    public static int FLAG_PERFORM_NO_CLOSE;
-    public static int NONE;
-    public static int SUPPORTED_MODIFIERS_MASK;
-    public static int USER_MASK;
-    public static int USER_SHIFT;
-}
-
--keep class android.view.MenuInflater {
-    <init>(android.content.Context);
-    <init>(android.content.Context, java.lang.Object);
-
-    public void inflate(int, android.view.Menu);
-
-
-}
-
--keep class android.view.MenuItem {
-
-    public abstract boolean collapseActionView();
-    public abstract boolean expandActionView();
-    public abstract android.view.ActionProvider getActionProvider();
-    public abstract android.view.View getActionView();
-    public int getAlphabeticModifiers();
-    public abstract char getAlphabeticShortcut();
-    public java.lang.CharSequence getContentDescription();
-    public abstract int getGroupId();
-    public abstract android.graphics.drawable.Drawable getIcon();
-    public android.content.res.ColorStateList getIconTintList();
-    public android.graphics.PorterDuff$Mode getIconTintMode();
-    public abstract android.content.Intent getIntent();
-    public abstract int getItemId();
-    public abstract android.view.ContextMenu$ContextMenuInfo getMenuInfo();
-    public int getNumericModifiers();
-    public abstract char getNumericShortcut();
-    public abstract int getOrder();
-    public abstract android.view.SubMenu getSubMenu();
-    public abstract java.lang.CharSequence getTitle();
-    public abstract java.lang.CharSequence getTitleCondensed();
-    public java.lang.CharSequence getTooltipText();
-    public abstract boolean hasSubMenu();
-    public abstract boolean isActionViewExpanded();
-    public abstract boolean isCheckable();
-    public abstract boolean isChecked();
-    public abstract boolean isEnabled();
-    public abstract boolean isVisible();
-    public boolean requiresActionButton();
-    public boolean requiresOverflow();
-    public abstract android.view.MenuItem setActionProvider(android.view.ActionProvider);
-    public abstract android.view.MenuItem setActionView(android.view.View);
-    public abstract android.view.MenuItem setActionView(int);
-    public abstract android.view.MenuItem setAlphabeticShortcut(char);
-    public android.view.MenuItem setAlphabeticShortcut(char, int);
-    public abstract android.view.MenuItem setCheckable(boolean);
-    public abstract android.view.MenuItem setChecked(boolean);
-    public android.view.MenuItem setContentDescription(java.lang.CharSequence);
-    public abstract android.view.MenuItem setEnabled(boolean);
-    public abstract android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
-    public abstract android.view.MenuItem setIcon(int);
-    public android.view.MenuItem setIconTintList(android.content.res.ColorStateList);
-    public android.view.MenuItem setIconTintMode(android.graphics.PorterDuff$Mode);
-    public abstract android.view.MenuItem setIntent(android.content.Intent);
-    public abstract android.view.MenuItem setNumericShortcut(char);
-    public android.view.MenuItem setNumericShortcut(char, int);
-    public abstract android.view.MenuItem setOnActionExpandListener(android.view.MenuItem$OnActionExpandListener);
-    public abstract android.view.MenuItem setOnMenuItemClickListener(android.view.MenuItem$OnMenuItemClickListener);
-    public abstract android.view.MenuItem setShortcut(char, char);
-    public android.view.MenuItem setShortcut(char, char, int, int);
-    public abstract void setShowAsAction(int);
-    public abstract android.view.MenuItem setShowAsActionFlags(int);
-    public abstract android.view.MenuItem setTitle(java.lang.CharSequence);
-    public abstract android.view.MenuItem setTitle(int);
-    public abstract android.view.MenuItem setTitleCondensed(java.lang.CharSequence);
-    public android.view.MenuItem setTooltipText(java.lang.CharSequence);
-    public abstract android.view.MenuItem setVisible(boolean);
-
-
-    public static int SHOW_AS_ACTION_ALWAYS;
-    public static int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW;
-    public static int SHOW_AS_ACTION_IF_ROOM;
-    public static int SHOW_AS_ACTION_NEVER;
-    public static int SHOW_AS_ACTION_WITH_TEXT;
-}
-
--keep class android.view.MenuItem$OnActionExpandListener {
-
-    public abstract boolean onMenuItemActionCollapse(android.view.MenuItem);
-    public abstract boolean onMenuItemActionExpand(android.view.MenuItem);
-
-
-}
-
--keep class android.view.MenuItem$OnMenuItemClickListener {
-
-    public abstract boolean onMenuItemClick(android.view.MenuItem);
-
-
-}
-
--keep class android.view.MotionEvent {
-
-    public static java.lang.String actionToString(int);
-    public void addBatch(long, float, float, float, float, int);
-    public void addBatch(long, android.view.MotionEvent$PointerCoords[], int);
-    public boolean addBatch(android.view.MotionEvent);
-    public static int axisFromString(java.lang.String);
-    public static java.lang.String axisToString(int);
-    public static java.lang.String buttonStateToString(int);
-    public void cancel();
-    public android.view.MotionEvent clampNoHistory(float, float, float, float);
-    public android.view.MotionEvent copy();
-    public android.view.InputEvent copy();
-    public static android.view.MotionEvent createFromParcelBody(android.os.Parcel);
-    protected void finalize();
-    public int findPointerIndex(int);
-    public int getAction();
-    public int getActionButton();
-    public int getActionIndex();
-    public int getActionMasked();
-    public float getAxisValue(int);
-    public float getAxisValue(int, int);
-    public int getButtonState();
-    public int getDeviceId();
-    public long getDownTime();
-    public int getEdgeFlags();
-    public long getEventTime();
-    public long getEventTimeNano();
-    public int getFlags();
-    public float getHistoricalAxisValue(int, int);
-    public float getHistoricalAxisValue(int, int, int);
-    public long getHistoricalEventTime(int);
-    public long getHistoricalEventTimeNano(int);
-    public float getHistoricalOrientation(int);
-    public float getHistoricalOrientation(int, int);
-    public void getHistoricalPointerCoords(int, int, android.view.MotionEvent$PointerCoords);
-    public float getHistoricalPressure(int);
-    public float getHistoricalPressure(int, int);
-    public float getHistoricalSize(int);
-    public float getHistoricalSize(int, int);
-    public float getHistoricalToolMajor(int);
-    public float getHistoricalToolMajor(int, int);
-    public float getHistoricalToolMinor(int);
-    public float getHistoricalToolMinor(int, int);
-    public float getHistoricalTouchMajor(int);
-    public float getHistoricalTouchMajor(int, int);
-    public float getHistoricalTouchMinor(int);
-    public float getHistoricalTouchMinor(int, int);
-    public float getHistoricalX(int);
-    public float getHistoricalX(int, int);
-    public float getHistoricalY(int);
-    public float getHistoricalY(int, int);
-    public int getHistorySize();
-    public int getMetaState();
-    public float getOrientation();
-    public float getOrientation(int);
-    public void getPointerCoords(int, android.view.MotionEvent$PointerCoords);
-    public int getPointerCount();
-    public int getPointerId(int);
-    public int getPointerIdBits();
-    public void getPointerProperties(int, android.view.MotionEvent$PointerProperties);
-    public float getPressure();
-    public float getPressure(int);
-    public float getRawX();
-    public float getRawY();
-    public float getSize();
-    public float getSize(int);
-    public int getSource();
-    public float getToolMajor();
-    public float getToolMajor(int);
-    public float getToolMinor();
-    public float getToolMinor(int);
-    public int getToolType(int);
-    public float getTouchMajor();
-    public float getTouchMajor(int);
-    public float getTouchMinor();
-    public float getTouchMinor(int);
-    public float getX();
-    public float getX(int);
-    public float getXPrecision();
-    public float getY();
-    public float getY(int);
-    public float getYPrecision();
-    public boolean isButtonPressed(int);
-    public boolean isHoverExitPending();
-    public boolean isTainted();
-    public boolean isTargetAccessibilityFocus();
-    public boolean isTouchEvent();
-    public boolean isWithinBoundsNoHistory(float, float, float, float);
-    public static android.view.MotionEvent obtain(long, long, int, int, android.view.MotionEvent$PointerProperties[], android.view.MotionEvent$PointerCoords[], int, int, float, float, int, int, int, int);
-    public static android.view.MotionEvent obtain(long, long, int, int, int[], android.view.MotionEvent$PointerCoords[], int, float, float, int, int, int, int);
-    public static android.view.MotionEvent obtain(long, long, int, float, float, float, float, int, float, float, int, int);
-    public static android.view.MotionEvent obtain(long, long, int, int, float, float, float, float, int, float, float, int, int);
-    public static android.view.MotionEvent obtain(long, long, int, float, float, int);
-    public static android.view.MotionEvent obtain(android.view.MotionEvent);
-    public static android.view.MotionEvent obtainNoHistory(android.view.MotionEvent);
-    public void offsetLocation(float, float);
-    public void recycle();
-    public void scale(float);
-    public void setAction(int);
-    public void setActionButton(int);
-    public void setButtonState(int);
-    public void setDownTime(long);
-    public void setEdgeFlags(int);
-    public void setHoverExitPending(boolean);
-    public void setLocation(float, float);
-    public void setSource(int);
-    public void setTainted(boolean);
-    public void setTargetAccessibilityFocus(boolean);
-    public android.view.MotionEvent split(int);
-    public java.lang.String toString();
-    public static java.lang.String toolTypeToString(int);
-    public void transform(android.graphics.Matrix);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int ACTION_BUTTON_PRESS;
-    public static int ACTION_BUTTON_RELEASE;
-    public static int ACTION_CANCEL;
-    public static int ACTION_DOWN;
-    public static int ACTION_HOVER_ENTER;
-    public static int ACTION_HOVER_EXIT;
-    public static int ACTION_HOVER_MOVE;
-    public static int ACTION_MASK;
-    public static int ACTION_MOVE;
-    public static int ACTION_OUTSIDE;
-    public static int ACTION_POINTER_1_DOWN;
-    public static int ACTION_POINTER_1_UP;
-    public static int ACTION_POINTER_2_DOWN;
-    public static int ACTION_POINTER_2_UP;
-    public static int ACTION_POINTER_3_DOWN;
-    public static int ACTION_POINTER_3_UP;
-    public static int ACTION_POINTER_DOWN;
-    public static int ACTION_POINTER_ID_MASK;
-    public static int ACTION_POINTER_ID_SHIFT;
-    public static int ACTION_POINTER_INDEX_MASK;
-    public static int ACTION_POINTER_INDEX_SHIFT;
-    public static int ACTION_POINTER_UP;
-    public static int ACTION_SCROLL;
-    public static int ACTION_UP;
-    public static int AXIS_BRAKE;
-    public static int AXIS_DISTANCE;
-    public static int AXIS_GAS;
-    public static int AXIS_GENERIC_1;
-    public static int AXIS_GENERIC_10;
-    public static int AXIS_GENERIC_11;
-    public static int AXIS_GENERIC_12;
-    public static int AXIS_GENERIC_13;
-    public static int AXIS_GENERIC_14;
-    public static int AXIS_GENERIC_15;
-    public static int AXIS_GENERIC_16;
-    public static int AXIS_GENERIC_2;
-    public static int AXIS_GENERIC_3;
-    public static int AXIS_GENERIC_4;
-    public static int AXIS_GENERIC_5;
-    public static int AXIS_GENERIC_6;
-    public static int AXIS_GENERIC_7;
-    public static int AXIS_GENERIC_8;
-    public static int AXIS_GENERIC_9;
-    public static int AXIS_HAT_X;
-    public static int AXIS_HAT_Y;
-    public static int AXIS_HSCROLL;
-    public static int AXIS_LTRIGGER;
-    public static int AXIS_ORIENTATION;
-    public static int AXIS_PRESSURE;
-    public static int AXIS_RELATIVE_X;
-    public static int AXIS_RELATIVE_Y;
-    public static int AXIS_RTRIGGER;
-    public static int AXIS_RUDDER;
-    public static int AXIS_RX;
-    public static int AXIS_RY;
-    public static int AXIS_RZ;
-    public static int AXIS_SCROLL;
-    public static int AXIS_SIZE;
-    public static int AXIS_THROTTLE;
-    public static int AXIS_TILT;
-    public static int AXIS_TOOL_MAJOR;
-    public static int AXIS_TOOL_MINOR;
-    public static int AXIS_TOUCH_MAJOR;
-    public static int AXIS_TOUCH_MINOR;
-    public static int AXIS_VSCROLL;
-    public static int AXIS_WHEEL;
-    public static int AXIS_X;
-    public static int AXIS_Y;
-    public static int AXIS_Z;
-    public static int BUTTON_BACK;
-    public static int BUTTON_FORWARD;
-    public static int BUTTON_PRIMARY;
-    public static int BUTTON_SECONDARY;
-    public static int BUTTON_STYLUS_PRIMARY;
-    public static int BUTTON_STYLUS_SECONDARY;
-    public static int BUTTON_TERTIARY;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int EDGE_BOTTOM;
-    public static int EDGE_LEFT;
-    public static int EDGE_RIGHT;
-    public static int EDGE_TOP;
-    public static int FLAG_HOVER_EXIT_PENDING;
-    public static int FLAG_IS_GENERATED_GESTURE;
-    public static int FLAG_TAINTED;
-    public static int FLAG_TARGET_ACCESSIBILITY_FOCUS;
-    public static int FLAG_WINDOW_IS_OBSCURED;
-    public static int FLAG_WINDOW_IS_PARTIALLY_OBSCURED;
-    public static int INVALID_POINTER_ID;
-    public static int TOOL_TYPE_ERASER;
-    public static int TOOL_TYPE_FINGER;
-    public static int TOOL_TYPE_MOUSE;
-    public static int TOOL_TYPE_STYLUS;
-    public static int TOOL_TYPE_UNKNOWN;
-}
-
--keep class android.view.MotionEvent$PointerCoords {
-    <init>();
-    <init>(android.view.MotionEvent$PointerCoords);
-
-    public void clear();
-    public void copyFrom(android.view.MotionEvent$PointerCoords);
-    public static android.view.MotionEvent$PointerCoords[] createArray(int);
-    public float getAxisValue(int);
-    public void setAxisValue(int, float);
-
-
-    public float orientation;
-    public float pressure;
-    public float size;
-    public float toolMajor;
-    public float toolMinor;
-    public float touchMajor;
-    public float touchMinor;
-    public float x;
-    public float y;
-}
-
--keep class android.view.MotionEvent$PointerProperties {
-    <init>();
-    <init>(android.view.MotionEvent$PointerProperties);
-
-    public void clear();
-    public void copyFrom(android.view.MotionEvent$PointerProperties);
-    public static android.view.MotionEvent$PointerProperties[] createArray(int);
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-
-
-    public int id;
-    public int toolType;
-}
-
--keep class android.view.PointerIcon {
-
-    public static android.view.PointerIcon create(android.graphics.Bitmap, float, float);
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static android.view.PointerIcon getDefaultIcon(android.content.Context);
-    public static android.view.PointerIcon getNullIcon();
-    public static android.view.PointerIcon getSystemIcon(android.content.Context, int);
-    public int getType();
-    public static android.view.PointerIcon load(android.content.res.Resources, int);
-    public android.view.PointerIcon load(android.content.Context);
-    public static void setUseLargeIcons(boolean);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int TYPE_ALIAS;
-    public static int TYPE_ALL_SCROLL;
-    public static int TYPE_ARROW;
-    public static int TYPE_CELL;
-    public static int TYPE_CONTEXT_MENU;
-    public static int TYPE_COPY;
-    public static int TYPE_CROSSHAIR;
-    public static int TYPE_CUSTOM;
-    public static int TYPE_DEFAULT;
-    public static int TYPE_GRAB;
-    public static int TYPE_GRABBING;
-    public static int TYPE_HAND;
-    public static int TYPE_HELP;
-    public static int TYPE_HORIZONTAL_DOUBLE_ARROW;
-    public static int TYPE_NOT_SPECIFIED;
-    public static int TYPE_NO_DROP;
-    public static int TYPE_NULL;
-    public static int TYPE_SPOT_ANCHOR;
-    public static int TYPE_SPOT_HOVER;
-    public static int TYPE_SPOT_TOUCH;
-    public static int TYPE_TEXT;
-    public static int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW;
-    public static int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW;
-    public static int TYPE_VERTICAL_DOUBLE_ARROW;
-    public static int TYPE_VERTICAL_TEXT;
-    public static int TYPE_WAIT;
-    public static int TYPE_ZOOM_IN;
-    public static int TYPE_ZOOM_OUT;
-}
-
--keep class android.view.RecordingCanvas {
-    <init>(long);
-
-    public void drawARGB(int, int, int, int);
-    public void drawArc(float, float, float, float, float, float, boolean, android.graphics.Paint);
-    public void drawArc(android.graphics.RectF, float, float, boolean, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, float, float, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Matrix, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Rect, android.graphics.Paint);
-    public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.RectF, android.graphics.Paint);
-    public void drawBitmap(int[], int, int, float, float, int, int, boolean, android.graphics.Paint);
-    public void drawBitmap(int[], int, int, int, int, int, int, boolean, android.graphics.Paint);
-    public void drawBitmapMesh(android.graphics.Bitmap, int, int, float[], int, int[], int, android.graphics.Paint);
-    public void drawCircle(float, float, float, android.graphics.Paint);
-    public void drawColor(int);
-    public void drawColor(int, android.graphics.PorterDuff$Mode);
-    public void drawLine(float, float, float, float, android.graphics.Paint);
-    public void drawLines(float[], int, int, android.graphics.Paint);
-    public void drawLines(float[], android.graphics.Paint);
-    public void drawOval(float, float, float, float, android.graphics.Paint);
-    public void drawOval(android.graphics.RectF, android.graphics.Paint);
-    public void drawPaint(android.graphics.Paint);
-    public void drawPatch(android.graphics.NinePatch, android.graphics.Rect, android.graphics.Paint);
-    public void drawPatch(android.graphics.NinePatch, android.graphics.RectF, android.graphics.Paint);
-    public void drawPath(android.graphics.Path, android.graphics.Paint);
-    public void drawPicture(android.graphics.Picture);
-    public void drawPicture(android.graphics.Picture, android.graphics.Rect);
-    public void drawPicture(android.graphics.Picture, android.graphics.RectF);
-    public void drawPoint(float, float, android.graphics.Paint);
-    public void drawPoints(float[], int, int, android.graphics.Paint);
-    public void drawPoints(float[], android.graphics.Paint);
-    public void drawPosText(char[], int, int, float[], android.graphics.Paint);
-    public void drawPosText(java.lang.String, float[], android.graphics.Paint);
-    public void drawRGB(int, int, int);
-    public void drawRect(float, float, float, float, android.graphics.Paint);
-    public void drawRect(android.graphics.Rect, android.graphics.Paint);
-    public void drawRect(android.graphics.RectF, android.graphics.Paint);
-    public void drawRoundRect(float, float, float, float, float, float, android.graphics.Paint);
-    public void drawRoundRect(android.graphics.RectF, float, float, android.graphics.Paint);
-    public void drawText(char[], int, int, float, float, android.graphics.Paint);
-    public void drawText(java.lang.CharSequence, int, int, float, float, android.graphics.Paint);
-    public void drawText(java.lang.String, float, float, android.graphics.Paint);
-    public void drawText(java.lang.String, int, int, float, float, android.graphics.Paint);
-    public void drawTextOnPath(char[], int, int, android.graphics.Path, float, float, android.graphics.Paint);
-    public void drawTextOnPath(java.lang.String, android.graphics.Path, float, float, android.graphics.Paint);
-    public void drawTextRun(char[], int, int, int, int, float, float, boolean, android.graphics.Paint);
-    public void drawTextRun(java.lang.CharSequence, int, int, int, int, float, float, boolean, android.graphics.Paint);
-    public void drawVertices(android.graphics.Canvas$VertexMode, int, float[], int, float[], int, int[], int, short[], int, int, android.graphics.Paint);
-
-
-}
-
--keep class android.view.RemoteAnimationAdapter {
-    <init>(android.view.IRemoteAnimationRunner, long, long);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public int getCallingPid();
-    public long getDuration();
-    public android.view.IRemoteAnimationRunner getRunner();
-    public long getStatusBarTransitionDelay();
-    public void setCallingPid(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.RemoteAnimationDefinition {
-    <init>();
-    <init>(android.os.Parcel);
-
-    public void addRemoteAnimation(int, int, android.view.RemoteAnimationAdapter);
-    public void addRemoteAnimation(int, android.view.RemoteAnimationAdapter);
-    public int describeContents();
-    public android.view.RemoteAnimationAdapter getAdapter(int, android.util.ArraySet);
-    public boolean hasTransition(int, android.util.ArraySet);
-    public void setCallingPid(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.RemoteAnimationTarget {
-    <init>(int, int, android.view.SurfaceControl, boolean, android.graphics.Rect, android.graphics.Rect, int, android.graphics.Point, android.graphics.Rect, android.app.WindowConfiguration, boolean);
-    <init>(android.os.Parcel);
-
-    public int describeContents();
-    public void dump(java.io.PrintWriter, java.lang.String);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int MODE_CLOSING;
-    public static int MODE_OPENING;
-    public android.graphics.Rect clipRect;
-    public android.graphics.Rect contentInsets;
-    public boolean isNotInRecents;
-    public boolean isTranslucent;
-    public android.view.SurfaceControl leash;
-    public int mode;
-    public android.graphics.Point position;
-    public int prefixOrderIndex;
-    public android.graphics.Rect sourceContainerBounds;
-    public int taskId;
-    public android.app.WindowConfiguration windowConfiguration;
-}
-
--keep class android.view.RenderNode {
-
-    public void addAnimator(android.view.RenderNodeAnimator);
-    public static android.view.RenderNode adopt(long);
-    public static android.view.RenderNode create(java.lang.String, android.view.View);
-    public void destroy();
-    public void discardDisplayList();
-    public void end(android.view.DisplayListCanvas);
-    public void endAllAnimators();
-    public float getAlpha();
-    public int getAmbientShadowColor();
-    public float getCameraDistance();
-    public boolean getClipToOutline();
-    public int getDebugSize();
-    public float getElevation();
-    public void getInverseMatrix(android.graphics.Matrix);
-    public void getMatrix(android.graphics.Matrix);
-    public float getPivotX();
-    public float getPivotY();
-    public float getRotation();
-    public float getRotationX();
-    public float getRotationY();
-    public float getScaleX();
-    public float getScaleY();
-    public int getSpotShadowColor();
-    public float getTranslationX();
-    public float getTranslationY();
-    public float getTranslationZ();
-    public boolean hasIdentityMatrix();
-    public boolean hasOverlappingRendering();
-    public boolean hasShadow();
-    public boolean isAttached();
-    public boolean isPivotExplicitlySet();
-    public boolean isValid();
-    public boolean offsetLeftAndRight(int);
-    public boolean offsetTopAndBottom(int);
-    public void output();
-    public void registerVectorDrawableAnimator(android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT);
-    public void requestPositionUpdates(android.view.SurfaceView);
-    public boolean resetPivot();
-    public boolean setAlpha(float);
-    public boolean setAmbientShadowColor(int);
-    public boolean setAnimationMatrix(android.graphics.Matrix);
-    public boolean setBottom(int);
-    public boolean setCameraDistance(float);
-    public boolean setClipBounds(android.graphics.Rect);
-    public boolean setClipToBounds(boolean);
-    public boolean setClipToOutline(boolean);
-    public boolean setElevation(float);
-    public boolean setHasOverlappingRendering(boolean);
-    public boolean setLayerPaint(android.graphics.Paint);
-    public boolean setLayerType(int);
-    public boolean setLeft(int);
-    public boolean setLeftTopRightBottom(int, int, int, int);
-    public boolean setOutline(android.graphics.Outline);
-    public boolean setPivotX(float);
-    public boolean setPivotY(float);
-    public boolean setProjectBackwards(boolean);
-    public boolean setProjectionReceiver(boolean);
-    public boolean setRevealClip(boolean, float, float, float);
-    public boolean setRight(int);
-    public boolean setRotation(float);
-    public boolean setRotationX(float);
-    public boolean setRotationY(float);
-    public boolean setScaleX(float);
-    public boolean setScaleY(float);
-    public boolean setSpotShadowColor(int);
-    public boolean setStaticMatrix(android.graphics.Matrix);
-    public boolean setTop(int);
-    public boolean setTranslationX(float);
-    public boolean setTranslationY(float);
-    public boolean setTranslationZ(float);
-    public android.view.DisplayListCanvas start(int, int);
-
-
-}
-
--keep class android.view.RenderNodeAnimator {
-    <init>(int, float);
-    <init>(android.graphics.CanvasProperty, float);
-    <init>(android.graphics.CanvasProperty, int, float);
-    <init>(int, int, float, float);
-
-    public void cancel();
-    public android.animation.Animator clone();
-    public java.lang.Object clone();
-    public void end();
-    public long getDuration();
-    public android.animation.TimeInterpolator getInterpolator();
-    public long getStartDelay();
-    public long getTotalDuration();
-    public boolean isRunning();
-    public boolean isStarted();
-    public static int mapViewPropertyToRenderProperty(int);
-    protected void onFinished();
-    public void pause();
-    public void resume();
-    public void setAllowRunningAsynchronously(boolean);
-    public android.view.RenderNodeAnimator setDuration(long);
-    public android.animation.Animator setDuration(long);
-    public void setInterpolator(android.animation.TimeInterpolator);
-    public void setStartDelay(long);
-    public void setStartValue(float);
-    public void setTarget(android.view.View);
-    public void setTarget(android.view.DisplayListCanvas);
-    public void start();
-
-
-    public static int ALPHA;
-    public static int LAST_VALUE;
-    public static int PAINT_ALPHA;
-    public static int PAINT_STROKE_WIDTH;
-    public static int ROTATION;
-    public static int ROTATION_X;
-    public static int ROTATION_Y;
-    public static int SCALE_X;
-    public static int SCALE_Y;
-    public static int TRANSLATION_X;
-    public static int TRANSLATION_Y;
-    public static int TRANSLATION_Z;
-    public static int X;
-    public static int Y;
-    public static int Z;
-}
-
--keep class android.view.SearchEvent {
-    <init>(android.view.InputDevice);
-
-    public android.view.InputDevice getInputDevice();
-
-
-}
-
--keep class android.view.SubMenu {
-
-    public abstract void clearHeader();
-    public abstract android.view.MenuItem getItem();
-    public abstract android.view.SubMenu setHeaderIcon(int);
-    public abstract android.view.SubMenu setHeaderIcon(android.graphics.drawable.Drawable);
-    public abstract android.view.SubMenu setHeaderTitle(int);
-    public abstract android.view.SubMenu setHeaderTitle(java.lang.CharSequence);
-    public abstract android.view.SubMenu setHeaderView(android.view.View);
-    public abstract android.view.SubMenu setIcon(int);
-    public abstract android.view.SubMenu setIcon(android.graphics.drawable.Drawable);
-
-
-}
-
--keep class android.view.Surface {
-    <init>();
-    <init>(android.graphics.SurfaceTexture);
-
-    public void allocateBuffers();
-    public void attachAndQueueBuffer(android.graphics.GraphicBuffer);
-    public void copyFrom(android.view.SurfaceControl);
-    public void createFrom(android.view.SurfaceControl);
-    public int describeContents();
-    public void destroy();
-    protected void finalize();
-    public int getGenerationId();
-    public long getNextFrameNumber();
-    public void hwuiDestroy();
-    public boolean isAutoRefreshEnabled();
-    public boolean isConsumerRunningBehind();
-    public boolean isSharedBufferModeEnabled();
-    public boolean isSingleBuffered();
-    public boolean isValid();
-    public android.graphics.Canvas lockCanvas(android.graphics.Rect);
-    public android.graphics.Canvas lockHardwareCanvas();
-    public android.graphics.Canvas lockHardwareWideColorGamutCanvas();
-    public void readFromParcel(android.os.Parcel);
-    public void release();
-    public static java.lang.String rotationToString(int);
-    public void setAutoRefreshEnabled(boolean);
-    public void setSharedBufferModeEnabled(boolean);
-    public java.lang.String toString();
-    public void transferFrom(android.view.Surface);
-    public void unlockCanvas(android.graphics.Canvas);
-    public void unlockCanvasAndPost(android.graphics.Canvas);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int ROTATION_0;
-    public static int ROTATION_180;
-    public static int ROTATION_270;
-    public static int ROTATION_90;
-    public static int SCALING_MODE_FREEZE;
-    public static int SCALING_MODE_NO_SCALE_CROP;
-    public static int SCALING_MODE_SCALE_CROP;
-    public static int SCALING_MODE_SCALE_TO_WINDOW;
-}
-
--keep class android.view.Surface$OutOfResourcesException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class android.view.SurfaceControl {
-    <init>(android.view.SurfaceControl);
-
-    public static android.graphics.GraphicBuffer captureLayers(android.os.IBinder, android.graphics.Rect, float);
-    public static boolean clearAnimationFrameStats();
-    public boolean clearContentFrameStats();
-    public static void closeTransaction();
-    public static void closeTransactionSync();
-    public static android.os.IBinder createDisplay(java.lang.String, boolean);
-    public void deferTransactionUntil(android.os.IBinder, long);
-    public void deferTransactionUntil(android.view.Surface, long);
-    public int describeContents();
-    public void destroy();
-    public static void destroyDisplay(android.os.IBinder);
-    public void detachChildren();
-    public void disconnect();
-    protected void finalize();
-    public static int getActiveColorMode(android.os.IBinder);
-    public static int getActiveConfig(android.os.IBinder);
-    public static boolean getAnimationFrameStats(android.view.WindowAnimationFrameStats);
-    public static android.os.IBinder getBuiltInDisplay(int);
-    public boolean getContentFrameStats(android.view.WindowContentFrameStats);
-    public static int[] getDisplayColorModes(android.os.IBinder);
-    public static android.view.SurfaceControl$PhysicalDisplayInfo[] getDisplayConfigs(android.os.IBinder);
-    public android.os.IBinder getHandle();
-    public static android.view.Display$HdrCapabilities getHdrCapabilities(android.os.IBinder);
-    public int getHeight();
-    public int getWidth();
-    public void hide();
-    public static void mergeToGlobalTransaction(android.view.SurfaceControl$Transaction);
-    public static void openTransaction();
-    public void release();
-    public void reparent(android.os.IBinder);
-    public void reparentChildren(android.os.IBinder);
-    public static void screenshot(android.os.IBinder, android.view.Surface, int, int, int, int, boolean);
-    public static void screenshot(android.os.IBinder, android.view.Surface, int, int);
-    public static void screenshot(android.os.IBinder, android.view.Surface);
-    public static android.graphics.Bitmap screenshot(android.graphics.Rect, int, int, int, int, boolean, int);
-    public static android.graphics.Bitmap screenshot(android.graphics.Rect, int, int, int);
-    public static android.graphics.GraphicBuffer screenshotToBuffer(android.graphics.Rect, int, int, int, int, boolean, int);
-    public static boolean setActiveColorMode(android.os.IBinder, int);
-    public static boolean setActiveConfig(android.os.IBinder, int);
-    public void setAlpha(float);
-    public static void setAnimationTransaction();
-    public void setColor(float[]);
-    public static void setDisplayLayerStack(android.os.IBinder, int);
-    public static void setDisplayPowerMode(android.os.IBinder, int);
-    public static void setDisplayProjection(android.os.IBinder, int, android.graphics.Rect, android.graphics.Rect);
-    public static void setDisplaySize(android.os.IBinder, int, int);
-    public static void setDisplaySurface(android.os.IBinder, android.view.Surface);
-    public void setFinalCrop(android.graphics.Rect);
-    public void setGeometryAppliesWithResize();
-    public void setLayer(int);
-    public void setLayerStack(int);
-    public void setMatrix(float, float, float, float);
-    public void setMatrix(android.graphics.Matrix, float[]);
-    public void setOpaque(boolean);
-    public void setOverrideScalingMode(int);
-    public void setPosition(float, float);
-    public void setRelativeLayer(android.view.SurfaceControl, int);
-    public void setSecure(boolean);
-    public void setSize(int, int);
-    public void setTransparentRegionHint(android.graphics.Region);
-    public void setWindowCrop(android.graphics.Rect);
-    public void show();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static int BUILT_IN_DISPLAY_ID_HDMI;
-    public static int BUILT_IN_DISPLAY_ID_MAIN;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int CURSOR_WINDOW;
-    public static int FX_SURFACE_DIM;
-    public static int FX_SURFACE_MASK;
-    public static int FX_SURFACE_NORMAL;
-    public static int HIDDEN;
-    public static int NON_PREMULTIPLIED;
-    public static int OPAQUE;
-    public static int POWER_MODE_DOZE;
-    public static int POWER_MODE_DOZE_SUSPEND;
-    public static int POWER_MODE_NORMAL;
-    public static int POWER_MODE_OFF;
-    public static int POWER_MODE_ON_SUSPEND;
-    public static int PROTECTED_APP;
-    public static int SECURE;
-    public static int WINDOW_TYPE_DONT_SCREENSHOT;
-}
-
--keep class android.view.SurfaceControl$PhysicalDisplayInfo {
-    <init>();
-    <init>(android.view.SurfaceControl$PhysicalDisplayInfo);
-
-    public void copyFrom(android.view.SurfaceControl$PhysicalDisplayInfo);
-    public boolean equals(java.lang.Object);
-    public boolean equals(android.view.SurfaceControl$PhysicalDisplayInfo);
-    public int hashCode();
-    public java.lang.String toString();
-
-
-    public long appVsyncOffsetNanos;
-    public float density;
-    public int height;
-    public long presentationDeadlineNanos;
-    public float refreshRate;
-    public boolean secure;
-    public int width;
-    public float xDpi;
-    public float yDpi;
-}
-
--keep class android.view.SurfaceControl$Transaction {
-    <init>();
-
-    public void apply();
-    public void apply(boolean);
-    public void close();
-    public android.view.SurfaceControl$Transaction deferTransactionUntil(android.view.SurfaceControl, android.os.IBinder, long);
-    public android.view.SurfaceControl$Transaction deferTransactionUntilSurface(android.view.SurfaceControl, android.view.Surface, long);
-    public android.view.SurfaceControl$Transaction destroy(android.view.SurfaceControl);
-    public android.view.SurfaceControl$Transaction detachChildren(android.view.SurfaceControl);
-    public android.view.SurfaceControl$Transaction hide(android.view.SurfaceControl);
-    public android.view.SurfaceControl$Transaction merge(android.view.SurfaceControl$Transaction);
-    public android.view.SurfaceControl$Transaction reparent(android.view.SurfaceControl, android.os.IBinder);
-    public android.view.SurfaceControl$Transaction reparentChildren(android.view.SurfaceControl, android.os.IBinder);
-    public android.view.SurfaceControl$Transaction setAlpha(android.view.SurfaceControl, float);
-    public android.view.SurfaceControl$Transaction setAnimationTransaction();
-    public android.view.SurfaceControl$Transaction setColor(android.view.SurfaceControl, float[]);
-    public android.view.SurfaceControl$Transaction setDisplayLayerStack(android.os.IBinder, int);
-    public android.view.SurfaceControl$Transaction setDisplayProjection(android.os.IBinder, int, android.graphics.Rect, android.graphics.Rect);
-    public android.view.SurfaceControl$Transaction setDisplaySize(android.os.IBinder, int, int);
-    public android.view.SurfaceControl$Transaction setDisplaySurface(android.os.IBinder, android.view.Surface);
-    public android.view.SurfaceControl$Transaction setEarlyWakeup();
-    public android.view.SurfaceControl$Transaction setFinalCrop(android.view.SurfaceControl, android.graphics.Rect);
-    public android.view.SurfaceControl$Transaction setGeometryAppliesWithResize(android.view.SurfaceControl);
-    public android.view.SurfaceControl$Transaction setLayer(android.view.SurfaceControl, int);
-    public android.view.SurfaceControl$Transaction setLayerStack(android.view.SurfaceControl, int);
-    public android.view.SurfaceControl$Transaction setMatrix(android.view.SurfaceControl, float, float, float, float);
-    public android.view.SurfaceControl$Transaction setMatrix(android.view.SurfaceControl, android.graphics.Matrix, float[]);
-    public android.view.SurfaceControl$Transaction setOpaque(android.view.SurfaceControl, boolean);
-    public android.view.SurfaceControl$Transaction setOverrideScalingMode(android.view.SurfaceControl, int);
-    public android.view.SurfaceControl$Transaction setPosition(android.view.SurfaceControl, float, float);
-    public android.view.SurfaceControl$Transaction setRelativeLayer(android.view.SurfaceControl, android.view.SurfaceControl, int);
-    public android.view.SurfaceControl$Transaction setSecure(android.view.SurfaceControl, boolean);
-    public android.view.SurfaceControl$Transaction setSize(android.view.SurfaceControl, int, int);
-    public android.view.SurfaceControl$Transaction setTransparentRegionHint(android.view.SurfaceControl, android.graphics.Region);
-    public android.view.SurfaceControl$Transaction setWindowCrop(android.view.SurfaceControl, android.graphics.Rect);
-    public android.view.SurfaceControl$Transaction show(android.view.SurfaceControl);
-
-
-    public static libcore.util.NativeAllocationRegistry sRegistry;
-}
-
--keep class android.view.SurfaceHolder {
-
-    public abstract void addCallback(android.view.SurfaceHolder$Callback);
-    public abstract android.view.Surface getSurface();
-    public abstract android.graphics.Rect getSurfaceFrame();
-    public abstract boolean isCreating();
-    public abstract android.graphics.Canvas lockCanvas();
-    public abstract android.graphics.Canvas lockCanvas(android.graphics.Rect);
-    public android.graphics.Canvas lockHardwareCanvas();
-    public abstract void removeCallback(android.view.SurfaceHolder$Callback);
-    public abstract void setFixedSize(int, int);
-    public abstract void setFormat(int);
-    public abstract void setKeepScreenOn(boolean);
-    public abstract void setSizeFromLayout();
-    public abstract void setType(int);
-    public abstract void unlockCanvasAndPost(android.graphics.Canvas);
-
-
-    public static int SURFACE_TYPE_GPU;
-    public static int SURFACE_TYPE_HARDWARE;
-    public static int SURFACE_TYPE_NORMAL;
-    public static int SURFACE_TYPE_PUSH_BUFFERS;
-}
-
--keep class android.view.SurfaceHolder$Callback {
-
-    public abstract void surfaceChanged(android.view.SurfaceHolder, int, int, int);
-    public abstract void surfaceCreated(android.view.SurfaceHolder);
-    public abstract void surfaceDestroyed(android.view.SurfaceHolder);
-
-
-}
-
--keep class android.view.SurfaceHolder$Callback2 {
-
-    public abstract void surfaceRedrawNeeded(android.view.SurfaceHolder);
-    public void surfaceRedrawNeededAsync(android.view.SurfaceHolder, java.lang.Runnable);
-
-
-}
-
--keep class android.view.SurfaceView {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.content.Context, android.util.AttributeSet, int);
-    <init>(android.content.Context, android.util.AttributeSet, int, int);
-
-    protected void applyChildSurfaceTransaction_renderWorker(android.view.SurfaceControl$Transaction, android.view.Surface, long);
-    protected void dispatchDraw(android.graphics.Canvas);
-    public void draw(android.graphics.Canvas);
-    public boolean gatherTransparentRegion(android.graphics.Region);
-    public android.view.SurfaceHolder getHolder();
-    public boolean isFixedSize();
-    protected void onAttachedToWindow();
-    protected void onDetachedFromWindow();
-    protected void onMeasure(int, int);
-    protected void onWindowVisibilityChanged(int);
-    protected boolean setFrame(int, int, int, int);
-    public void setResizeBackgroundColor(int);
-    public void setSecure(boolean);
-    public void setVisibility(int);
-    public void setZOrderMediaOverlay(boolean);
-    public void setZOrderOnTop(boolean);
-    public void surfacePositionLost_uiRtSync(long);
-    protected void updateSurface();
-    public void updateSurfacePosition_renderWorker(long, int, int, int, int);
-    public void windowStopped(boolean);
-
-
-}
-
--keep class android.view.ThreadedRenderer {
-
-    public void addRenderNode(android.view.RenderNode, boolean);
-    public static int copySurfaceInto(android.view.Surface, android.graphics.Rect, android.graphics.Bitmap);
-    public static android.view.ThreadedRenderer create(android.content.Context, boolean, java.lang.String);
-    public static android.graphics.Bitmap createHardwareBitmap(android.view.RenderNode, int, int);
-    public static void disable(boolean);
-    public static void disableVsync();
-    public void drawRenderNode(android.view.RenderNode);
-    public static void enableForegroundTrimming();
-    protected void finalize();
-    public static boolean isAvailable();
-    public void notifyFramePending();
-    public static void overrideProperty(java.lang.String, java.lang.String);
-    public void removeRenderNode(android.view.RenderNode);
-    public void serializeDisplayListTree();
-    public void setContentDrawBounds(int, int, int, int);
-    public static void setContextPriority(int);
-    public static void setDebuggingEnabled(boolean);
-    public static void setFPSDivisor(int);
-    public static void setHighContrastText(boolean);
-    public static void setIsolatedProcess(boolean);
-    public static void setupDiskCache(java.io.File);
-    public static void trimMemory(int);
-
-
-    public static java.lang.String DEBUG_DIRTY_REGIONS_PROPERTY;
-    public static java.lang.String DEBUG_FPS_DIVISOR;
-    public static java.lang.String DEBUG_OVERDRAW_PROPERTY;
-    public static java.lang.String DEBUG_SHOW_LAYERS_UPDATES_PROPERTY;
-    public static java.lang.String DEBUG_SHOW_NON_RECTANGULAR_CLIP_PROPERTY;
-    public static int EGL_CONTEXT_PRIORITY_HIGH_IMG;
-    public static int EGL_CONTEXT_PRIORITY_LOW_IMG;
-    public static int EGL_CONTEXT_PRIORITY_MEDIUM_IMG;
-    public static java.lang.String OVERDRAW_PROPERTY_SHOW;
-    public static java.lang.String PROFILE_PROPERTY;
-    public static java.lang.String PROFILE_PROPERTY_VISUALIZE_BARS;
-    public static boolean sRendererDisabled;
-    public static boolean sSystemRendererDisabled;
-    public static boolean sTrimForeground;
-}
-
--keep class android.view.ThreadedRenderer$FrameDrawingCallback {
-
-    public abstract void onFrameDraw(long);
-
-
-}
-
--keep class android.view.TouchDelegate {
-    <init>(android.graphics.Rect, android.view.View);
-
-    public boolean onTouchEvent(android.view.MotionEvent);
-
-
-    public static int ABOVE;
-    public static int BELOW;
-    public static int TO_LEFT;
-    public static int TO_RIGHT;
-}
-
--keep class android.view.View {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.content.Context, android.util.AttributeSet, int);
-    <init>(android.content.Context, android.util.AttributeSet, int, int);
-
-    public void addChildrenForAccessibility(java.util.ArrayList);
-    public void addExtraDataToAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo, java.lang.String, android.os.Bundle);
-    public void addFocusables(java.util.ArrayList, int);
-    public void addFocusables(java.util.ArrayList, int, int);
-    public void addFrameMetricsListener(android.view.Window, android.view.Window$OnFrameMetricsAvailableListener, android.os.Handler);
-    public void addKeyboardNavigationClusters(java.util.Collection, int);
-    public void addOnAttachStateChangeListener(android.view.View$OnAttachStateChangeListener);
-    public void addOnLayoutChangeListener(android.view.View$OnLayoutChangeListener);
-    public void addOnUnhandledKeyEventListener(android.view.View$OnUnhandledKeyEventListener);
-    public void addTouchables(java.util.ArrayList);
-    public android.view.ViewPropertyAnimator animate();
-    public void announceForAccessibility(java.lang.CharSequence);
-    public void applyDrawableToTransparentRegion(android.graphics.drawable.Drawable, android.graphics.Region);
-    public void autofill(android.view.autofill.AutofillValue);
-    public void autofill(android.util.SparseArray);
-    protected boolean awakenScrollBars();
-    protected boolean awakenScrollBars(int);
-    protected boolean awakenScrollBars(int, boolean);
-    public void bringToFront();
-    public void buildDrawingCache();
-    public void buildDrawingCache(boolean);
-    public void buildLayer();
-    public boolean callOnClick();
-    public boolean canHaveDisplayList();
-    public boolean canNotifyAutofillEnterExitEvent();
-    public boolean canResolveLayoutDirection();
-    public boolean canResolveTextAlignment();
-    public boolean canResolveTextDirection();
-    public boolean canScrollHorizontally(int);
-    public boolean canScrollVertically(int);
-    public void cancelDragAndDrop();
-    public void cancelLongPress();
-    public void cancelPendingInputEvents();
-    public void captureTransitioningViews(java.util.List);
-    public boolean checkInputConnectionProxy(android.view.View);
-    public void clearAccessibilityFocus();
-    public void clearAnimation();
-    public void clearFocus();
-    public static int combineMeasuredStates(int, int);
-    protected boolean computeFitSystemWindows(android.graphics.Rect, android.graphics.Rect);
-    protected int computeHorizontalScrollExtent();
-    protected int computeHorizontalScrollOffset();
-    protected int computeHorizontalScrollRange();
-    protected void computeOpaqueFlags();
-    public void computeScroll();
-    public android.view.WindowInsets computeSystemWindowInsets(android.view.WindowInsets, android.graphics.Rect);
-    protected int computeVerticalScrollExtent();
-    protected int computeVerticalScrollOffset();
-    protected int computeVerticalScrollRange();
-    public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo();
-    public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfoInternal();
-    public void createContextMenu(android.view.ContextMenu);
-    public android.graphics.Bitmap createSnapshot(android.view.ViewDebug$CanvasProvider, boolean);
-    protected void damageInParent();
-    public void debug();
-    protected void debug(int);
-    protected static java.lang.String debugIndent(int);
-    public void destroyDrawingCache();
-    protected void destroyHardwareResources();
-    public boolean dispatchActivityResult(java.lang.String, int, int, android.content.Intent);
-    public android.view.WindowInsets dispatchApplyWindowInsets(android.view.WindowInsets);
-    public boolean dispatchCapturedPointerEvent(android.view.MotionEvent);
-    public void dispatchConfigurationChanged(android.content.res.Configuration);
-    public void dispatchDisplayHint(int);
-    public boolean dispatchDragEvent(android.view.DragEvent);
-    protected void dispatchDraw(android.graphics.Canvas);
-    public void dispatchDrawableHotspotChanged(float, float);
-    public void dispatchFinishTemporaryDetach();
-    protected boolean dispatchGenericFocusedEvent(android.view.MotionEvent);
-    public boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    protected boolean dispatchGenericPointerEvent(android.view.MotionEvent);
-    protected void dispatchGetDisplayList();
-    protected boolean dispatchHoverEvent(android.view.MotionEvent);
-    public boolean dispatchKeyEvent(android.view.KeyEvent);
-    public boolean dispatchKeyEventPreIme(android.view.KeyEvent);
-    public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    public boolean dispatchNestedFling(float, float, boolean);
-    public boolean dispatchNestedPreFling(float, float);
-    public boolean dispatchNestedPrePerformAccessibilityAction(int, android.os.Bundle);
-    public boolean dispatchNestedPreScroll(int, int, int[], int[]);
-    public boolean dispatchNestedScroll(int, int, int, int, int[]);
-    public void dispatchPointerCaptureChanged(boolean);
-    public boolean dispatchPointerEvent(android.view.MotionEvent);
-    public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    public boolean dispatchPopulateAccessibilityEventInternal(android.view.accessibility.AccessibilityEvent);
-    public void dispatchProvideAutofillStructure(android.view.ViewStructure, int);
-    public void dispatchProvideStructure(android.view.ViewStructure);
-    protected void dispatchRestoreInstanceState(android.util.SparseArray);
-    protected void dispatchSaveInstanceState(android.util.SparseArray);
-    protected void dispatchSetActivated(boolean);
-    protected void dispatchSetPressed(boolean);
-    protected void dispatchSetSelected(boolean);
-    public void dispatchStartTemporaryDetach();
-    public void dispatchSystemUiVisibilityChanged(int);
-    public boolean dispatchTouchEvent(android.view.MotionEvent);
-    public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    public boolean dispatchUnhandledMove(android.view.View, int);
-    protected void dispatchVisibilityChanged(android.view.View, int);
-    public void dispatchWindowFocusChanged(boolean);
-    public void dispatchWindowSystemUiVisiblityChanged(int);
-    public void dispatchWindowVisibilityChanged(int);
-    public void draw(android.graphics.Canvas);
-    public void drawableHotspotChanged(float, float);
-    protected void drawableStateChanged();
-    public void encode(android.view.ViewHierarchyEncoder);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    public android.view.View findFocus();
-    public void findNamedViews(java.util.Map);
-    public android.view.View findViewByAccessibilityIdTraversal(int);
-    public android.view.View findViewByAutofillIdTraversal(int);
-    public android.view.View findViewById(int);
-    public android.view.View findViewByPredicate(java.util.function.Predicate);
-    public android.view.View findViewByPredicateInsideOut(android.view.View, java.util.function.Predicate);
-    protected android.view.View findViewByPredicateTraversal(java.util.function.Predicate, android.view.View);
-    protected android.view.View findViewTraversal(int);
-    public android.view.View findViewWithTag(java.lang.Object);
-    protected android.view.View findViewWithTagTraversal(java.lang.Object);
-    public void findViewsWithText(java.util.ArrayList, java.lang.CharSequence, int);
-    protected boolean fitSystemWindows(android.graphics.Rect);
-    public boolean fitsSystemWindows();
-    public android.view.View focusSearch(int);
-    public void forceHasOverlappingRendering(boolean);
-    public void forceLayout();
-    public boolean gatherTransparentRegion(android.graphics.Region);
-    public static int generateViewId();
-    public java.lang.CharSequence getAccessibilityClassName();
-    public android.view.View$AccessibilityDelegate getAccessibilityDelegate();
-    public int getAccessibilityLiveRegion();
-    public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();
-    public java.lang.CharSequence getAccessibilityPaneTitle();
-    public int getAccessibilitySelectionEnd();
-    public int getAccessibilitySelectionStart();
-    public int getAccessibilityTraversalAfter();
-    public int getAccessibilityTraversalBefore();
-    public int getAccessibilityViewId();
-    public int getAccessibilityWindowId();
-    public float getAlpha();
-    public android.view.animation.Animation getAnimation();
-    public android.os.IBinder getApplicationWindowToken();
-    public java.lang.String[] getAutofillHints();
-    public android.view.autofill.AutofillId getAutofillId();
-    public int getAutofillType();
-    public android.view.autofill.AutofillValue getAutofillValue();
-    public int getAutofillViewId();
-    public android.graphics.drawable.Drawable getBackground();
-    public android.content.res.ColorStateList getBackgroundTintList();
-    public android.graphics.PorterDuff$Mode getBackgroundTintMode();
-    public int getBaseline();
-    public int getBottom();
-    protected float getBottomFadingEdgeStrength();
-    protected int getBottomPaddingOffset();
-    public void getBoundsOnScreen(android.graphics.Rect);
-    public void getBoundsOnScreen(android.graphics.Rect, boolean);
-    public float getCameraDistance();
-    public android.graphics.Rect getClipBounds();
-    public boolean getClipBounds(android.graphics.Rect);
-    public boolean getClipToOutline();
-    public java.lang.CharSequence getContentDescription();
-    public android.content.Context getContext();
-    protected android.view.ContextMenu$ContextMenuInfo getContextMenuInfo();
-    public boolean getDefaultFocusHighlightEnabled();
-    public static int getDefaultSize(int, int);
-    public android.view.Display getDisplay();
-    public int[] getDrawableState();
-    public android.graphics.Bitmap getDrawingCache();
-    public android.graphics.Bitmap getDrawingCache(boolean);
-    public int getDrawingCacheBackgroundColor();
-    public int getDrawingCacheQuality();
-    public void getDrawingRect(android.graphics.Rect);
-    public long getDrawingTime();
-    public float getElevation();
-    protected int getFadeHeight(boolean);
-    protected int getFadeTop(boolean);
-    public boolean getFilterTouchesWhenObscured();
-    public boolean getFitsSystemWindows();
-    public int getFocusable();
-    public java.util.ArrayList getFocusables(int);
-    public void getFocusedRect(android.graphics.Rect);
-    public android.graphics.drawable.Drawable getForeground();
-    public int getForegroundGravity();
-    public android.content.res.ColorStateList getForegroundTintList();
-    public android.graphics.PorterDuff$Mode getForegroundTintMode();
-    public boolean getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point);
-    public boolean getGlobalVisibleRect(android.graphics.Rect);
-    public android.os.Handler getHandler();
-    public boolean getHasOverlappingRendering();
-    public int getHeight();
-    public void getHitRect(android.graphics.Rect);
-    public int getHorizontalFadingEdgeLength();
-    protected float getHorizontalScrollFactor();
-    protected int getHorizontalScrollbarHeight();
-    public void getHotspotBounds(android.graphics.Rect);
-    public int getId();
-    public int getImportantForAccessibility();
-    public int getImportantForAutofill();
-    public android.graphics.Matrix getInverseMatrix();
-    public java.lang.CharSequence getIterableTextForAccessibility();
-    public android.view.AccessibilityIterators$TextSegmentIterator getIteratorForGranularity(int);
-    public boolean getKeepScreenOn();
-    public android.view.KeyEvent$DispatcherState getKeyDispatcherState();
-    public int getLabelFor();
-    public int getLayerType();
-    public int getLayoutDirection();
-    public android.view.ViewGroup$LayoutParams getLayoutParams();
-    public int getLeft();
-    protected float getLeftFadingEdgeStrength();
-    protected int getLeftPaddingOffset();
-    public boolean getLocalVisibleRect(android.graphics.Rect);
-    public void getLocationInSurface(int[]);
-    public void getLocationInWindow(int[]);
-    public int[] getLocationOnScreen();
-    public void getLocationOnScreen(int[]);
-    public android.graphics.Matrix getMatrix();
-    public int getMeasuredHeight();
-    public int getMeasuredHeightAndState();
-    public int getMeasuredState();
-    public int getMeasuredWidth();
-    public int getMeasuredWidthAndState();
-    public int getMinimumHeight();
-    public int getMinimumWidth();
-    public int getNextClusterForwardId();
-    public int getNextFocusDownId();
-    public int getNextFocusForwardId();
-    public int getNextFocusLeftId();
-    public int getNextFocusRightId();
-    public int getNextFocusUpId();
-    public android.view.View$OnFocusChangeListener getOnFocusChangeListener();
-    public android.graphics.Insets getOpticalInsets();
-    public int getOutlineAmbientShadowColor();
-    public android.view.ViewOutlineProvider getOutlineProvider();
-    public int getOutlineSpotShadowColor();
-    public void getOutsets(android.graphics.Rect);
-    public int getOverScrollMode();
-    public android.view.ViewOverlay getOverlay();
-    public int getPaddingBottom();
-    public int getPaddingEnd();
-    public int getPaddingLeft();
-    public int getPaddingRight();
-    public int getPaddingStart();
-    public int getPaddingTop();
-    public android.view.ViewParent getParent();
-    public android.view.ViewParent getParentForAccessibility();
-    public float getPivotX();
-    public float getPivotY();
-    public android.view.PointerIcon getPointerIcon();
-    public int getRawLayoutDirection();
-    public int getRawTextAlignment();
-    public int getRawTextDirection();
-    public android.content.res.Resources getResources();
-    public boolean getRevealOnFocusHint();
-    public int getRight();
-    protected float getRightFadingEdgeStrength();
-    protected int getRightPaddingOffset();
-    public android.view.View getRootView();
-    public android.view.WindowInsets getRootWindowInsets();
-    public float getRotation();
-    public float getRotationX();
-    public float getRotationY();
-    public float getScaleX();
-    public float getScaleY();
-    public int getScrollBarDefaultDelayBeforeFade();
-    public int getScrollBarFadeDuration();
-    public int getScrollBarSize();
-    public int getScrollBarStyle();
-    public int getScrollIndicators();
-    public int getScrollX();
-    public int getScrollY();
-    public int getSolidColor();
-    public android.animation.StateListAnimator getStateListAnimator();
-    protected int getSuggestedMinimumHeight();
-    protected int getSuggestedMinimumWidth();
-    public int getSystemUiVisibility();
-    public java.lang.Object getTag();
-    public java.lang.Object getTag(int);
-    public int getTextAlignment();
-    public int getTextDirection();
-    public android.view.ThreadedRenderer getThreadedRenderer();
-    public java.lang.CharSequence getTooltip();
-    public java.lang.CharSequence getTooltipText();
-    public android.view.View getTooltipView();
-    public int getTop();
-    protected float getTopFadingEdgeStrength();
-    protected int getTopPaddingOffset();
-    public android.view.TouchDelegate getTouchDelegate();
-    public java.util.ArrayList getTouchables();
-    public float getTransitionAlpha();
-    public java.lang.String getTransitionName();
-    public float getTranslationX();
-    public float getTranslationY();
-    public float getTranslationZ();
-    public int getVerticalFadingEdgeLength();
-    protected float getVerticalScrollFactor();
-    public int getVerticalScrollbarPosition();
-    public int getVerticalScrollbarWidth();
-    public android.view.ViewRootImpl getViewRootImpl();
-    public android.view.ViewTreeObserver getViewTreeObserver();
-    public int getVisibility();
-    public int getWidth();
-    protected android.view.IWindow getWindow();
-    protected int getWindowAttachCount();
-    public void getWindowDisplayFrame(android.graphics.Rect);
-    public android.view.WindowId getWindowId();
-    public int getWindowSystemUiVisibility();
-    public android.os.IBinder getWindowToken();
-    public int getWindowVisibility();
-    public void getWindowVisibleDisplayFrame(android.graphics.Rect);
-    public float getX();
-    public float getY();
-    public float getZ();
-    protected boolean handleScrollBarDragging(android.view.MotionEvent);
-    public boolean hasExplicitFocusable();
-    public boolean hasFocus();
-    public boolean hasFocusable();
-    protected boolean hasHoveredChild();
-    public boolean hasNestedScrollingParent();
-    public boolean hasOnClickListeners();
-    protected boolean hasOpaqueScrollbars();
-    public boolean hasOverlappingRendering();
-    public boolean hasPointerCapture();
-    public boolean hasShadow();
-    public boolean hasTransientState();
-    public boolean hasWindowFocus();
-    public boolean includeForAccessibility();
-    public static android.view.View inflate(android.content.Context, int, android.view.ViewGroup);
-    protected void initializeFadingEdge(android.content.res.TypedArray);
-    protected void initializeFadingEdgeInternal(android.content.res.TypedArray);
-    protected void initializeScrollbars(android.content.res.TypedArray);
-    protected void initializeScrollbarsInternal(android.content.res.TypedArray);
-    protected void internalSetPadding(int, int, int, int);
-    public void invalidate(android.graphics.Rect);
-    public void invalidate(int, int, int, int);
-    public void invalidate();
-    public void invalidate(boolean);
-    public void invalidateDrawable(android.graphics.drawable.Drawable);
-    public void invalidateOutline();
-    protected void invalidateParentCaches();
-    protected void invalidateParentIfNeeded();
-    protected void invalidateParentIfNeededAndWasQuickRejected();
-    public boolean isAccessibilityFocused();
-    public boolean isAccessibilityHeading();
-    public boolean isAccessibilitySelectionExtendable();
-    public boolean isActionableForAccessibility();
-    public boolean isActivated();
-    public boolean isAssistBlocked();
-    public boolean isAttachedToWindow();
-    public boolean isAutofilled();
-    public boolean isClickable();
-    public boolean isContextClickable();
-    public static boolean isDefaultFocusHighlightEnabled();
-    public boolean isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
-    public boolean isDirty();
-    public boolean isDrawingCacheEnabled();
-    public boolean isDuplicateParentStateEnabled();
-    public boolean isEnabled();
-    public boolean isFocusable();
-    public boolean isFocusableInTouchMode();
-    public boolean isFocused();
-    public boolean isFocusedByDefault();
-    public boolean isForegroundInsidePadding();
-    public boolean isHapticFeedbackEnabled();
-    public boolean isHardwareAccelerated();
-    public boolean isHorizontalFadingEdgeEnabled();
-    public boolean isHorizontalScrollBarEnabled();
-    public boolean isHovered();
-    public boolean isImportantForAccessibility();
-    public boolean isImportantForAutofill();
-    public boolean isInEditMode();
-    public boolean isInLayout();
-    public boolean isInScrollingContainer();
-    public boolean isInTouchMode();
-    public boolean isKeyboardNavigationCluster();
-    public boolean isLaidOut();
-    public boolean isLayoutDirectionInherited();
-    public boolean isLayoutDirectionResolved();
-    public static boolean isLayoutModeOptical(java.lang.Object);
-    public boolean isLayoutRequested();
-    public boolean isLayoutRtl();
-    public boolean isLongClickable();
-    public boolean isNestedScrollingEnabled();
-    public boolean isOpaque();
-    protected boolean isPaddingOffsetRequired();
-    public boolean isPaddingRelative();
-    public boolean isPivotSet();
-    public boolean isPressed();
-    public boolean isRootNamespace();
-    public boolean isSaveEnabled();
-    public boolean isSaveFromParentEnabled();
-    public boolean isScreenReaderFocusable();
-    public boolean isScrollContainer();
-    public boolean isScrollbarFadingEnabled();
-    public boolean isSelected();
-    public boolean isShown();
-    public boolean isSoundEffectsEnabled();
-    public boolean isTemporarilyDetached();
-    public boolean isTextAlignmentInherited();
-    public boolean isTextAlignmentResolved();
-    public boolean isTextDirectionInherited();
-    public boolean isTextDirectionResolved();
-    public boolean isVerticalFadingEdgeEnabled();
-    public boolean isVerticalScrollBarEnabled();
-    protected boolean isVerticalScrollBarHidden();
-    public boolean isVisibleToUser();
-    protected boolean isVisibleToUser(android.graphics.Rect);
-    public boolean isVisibleToUserForAutofill(int);
-    public void jumpDrawablesToCurrentState();
-    public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
-    public void layout(int, int, int, int);
-    public void makeOptionalFitsSystemWindows();
-    public void mapRectFromViewToScreenCoords(android.graphics.RectF, boolean);
-    public void measure(int, int);
-    protected static int[] mergeDrawableStates(int[], int[]);
-    public void notifyEnterOrExitForAutoFillIfNeeded(boolean);
-    public void notifySubtreeAccessibilityStateChangedIfNeeded();
-    public void notifyViewAccessibilityStateChangedIfNeeded(int);
-    public void offsetLeftAndRight(int);
-    public void offsetTopAndBottom(int);
-    public void onActivityResult(int, int, android.content.Intent);
-    protected void onAnimationEnd();
-    protected void onAnimationStart();
-    public android.view.WindowInsets onApplyWindowInsets(android.view.WindowInsets);
-    protected void onAttachedToWindow();
-    public void onCancelPendingInputEvents();
-    public boolean onCapturedPointerEvent(android.view.MotionEvent);
-    public boolean onCheckIsTextEditor();
-    public void onCloseSystemDialogs(java.lang.String);
-    protected void onConfigurationChanged(android.content.res.Configuration);
-    protected void onCreateContextMenu(android.view.ContextMenu);
-    protected int[] onCreateDrawableState(int);
-    public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo);
-    protected void onDetachedFromWindow();
-    protected void onDetachedFromWindowInternal();
-    protected void onDisplayHint(int);
-    public boolean onDragEvent(android.view.DragEvent);
-    protected void onDraw(android.graphics.Canvas);
-    public void onDrawForeground(android.graphics.Canvas);
-    protected void onDrawHorizontalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
-    protected void onDrawScrollBars(android.graphics.Canvas);
-    protected void onDrawVerticalScrollBar(android.graphics.Canvas, android.graphics.drawable.Drawable, int, int, int, int);
-    public boolean onFilterTouchEventForSecurity(android.view.MotionEvent);
-    protected void onFinishInflate();
-    public void onFinishTemporaryDetach();
-    protected void onFocusChanged(boolean, int, android.graphics.Rect);
-    protected void onFocusLost();
-    public boolean onGenericMotionEvent(android.view.MotionEvent);
-    public void onHoverChanged(boolean);
-    public boolean onHoverEvent(android.view.MotionEvent);
-    public void onInitializeAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    public void onInitializeAccessibilityEventInternal(android.view.accessibility.AccessibilityEvent);
-    public void onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo);
-    public void onInitializeAccessibilityNodeInfoInternal(android.view.accessibility.AccessibilityNodeInfo);
-    public boolean onKeyDown(int, android.view.KeyEvent);
-    public boolean onKeyLongPress(int, android.view.KeyEvent);
-    public boolean onKeyMultiple(int, int, android.view.KeyEvent);
-    public boolean onKeyPreIme(int, android.view.KeyEvent);
-    public boolean onKeyShortcut(int, android.view.KeyEvent);
-    public boolean onKeyUp(int, android.view.KeyEvent);
-    protected void onLayout(boolean, int, int, int, int);
-    protected void onMeasure(int, int);
-    public void onMovedToDisplay(int, android.content.res.Configuration);
-    protected void onOverScrolled(int, int, boolean, boolean);
-    public void onPointerCaptureChange(boolean);
-    public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    public void onPopulateAccessibilityEventInternal(android.view.accessibility.AccessibilityEvent);
-    public void onProvideAutofillStructure(android.view.ViewStructure, int);
-    public void onProvideAutofillVirtualStructure(android.view.ViewStructure, int);
-    public void onProvideStructure(android.view.ViewStructure);
-    public void onProvideVirtualStructure(android.view.ViewStructure);
-    public void onResolveDrawables(int);
-    public android.view.PointerIcon onResolvePointerIcon(android.view.MotionEvent, int);
-    protected void onRestoreInstanceState(android.os.Parcelable);
-    public void onRtlPropertiesChanged(int);
-    protected android.os.Parcelable onSaveInstanceState();
-    public void onScreenStateChanged(int);
-    protected void onScrollChanged(int, int, int, int);
-    protected boolean onSetAlpha(int);
-    protected void onSizeChanged(int, int, int, int);
-    public void onStartTemporaryDetach();
-    public boolean onTouchEvent(android.view.MotionEvent);
-    public boolean onTrackballEvent(android.view.MotionEvent);
-    public void onVisibilityAggregated(boolean);
-    protected void onVisibilityChanged(android.view.View, int);
-    public void onWindowFocusChanged(boolean);
-    public void onWindowSystemUiVisibilityChanged(int);
-    protected void onWindowVisibilityChanged(int);
-    public void outputDirtyFlags(java.lang.String, boolean, int);
-    protected boolean overScrollBy(int, int, int, int, int, int, int, int, boolean);
-    public boolean performAccessibilityAction(int, android.os.Bundle);
-    public boolean performAccessibilityActionInternal(int, android.os.Bundle);
-    protected boolean performButtonActionOnTouchDown(android.view.MotionEvent);
-    public boolean performClick();
-    public boolean performContextClick(float, float);
-    public boolean performContextClick();
-    public boolean performHapticFeedback(int);
-    public boolean performHapticFeedback(int, int);
-    public boolean performLongClick();
-    public boolean performLongClick(float, float);
-    public void playSoundEffect(int);
-    public boolean pointInView(float, float, float);
-    public boolean post(java.lang.Runnable);
-    public boolean postDelayed(java.lang.Runnable, long);
-    public void postInvalidate();
-    public void postInvalidate(int, int, int, int);
-    public void postInvalidateDelayed(long);
-    public void postInvalidateDelayed(long, int, int, int, int);
-    public void postInvalidateOnAnimation();
-    public void postInvalidateOnAnimation(int, int, int, int);
-    public void postOnAnimation(java.lang.Runnable);
-    public void postOnAnimationDelayed(java.lang.Runnable, long);
-    protected void recomputePadding();
-    public void refreshDrawableState();
-    public void releasePointerCapture();
-    public boolean removeCallbacks(java.lang.Runnable);
-    public void removeFrameMetricsListener(android.view.Window$OnFrameMetricsAvailableListener);
-    public void removeOnAttachStateChangeListener(android.view.View$OnAttachStateChangeListener);
-    public void removeOnLayoutChangeListener(android.view.View$OnLayoutChangeListener);
-    public void removeOnUnhandledKeyEventListener(android.view.View$OnUnhandledKeyEventListener);
-    public boolean requestAccessibilityFocus();
-    public void requestApplyInsets();
-    public void requestFitSystemWindows();
-    public boolean requestFocus();
-    public boolean requestFocus(int);
-    public boolean requestFocus(int, android.graphics.Rect);
-    public boolean requestFocusFromTouch();
-    public void requestKeyboardShortcuts(java.util.List, int);
-    public void requestLayout();
-    public void requestPointerCapture();
-    public boolean requestRectangleOnScreen(android.graphics.Rect);
-    public boolean requestRectangleOnScreen(android.graphics.Rect, boolean);
-    public void requestUnbufferedDispatch(android.view.MotionEvent);
-    public android.view.View requireViewById(int);
-    public void resetPaddingToInitialValues();
-    public void resetPivot();
-    protected void resetResolvedDrawables();
-    public void resetResolvedLayoutDirection();
-    public void resetResolvedPadding();
-    public void resetResolvedTextAlignment();
-    public void resetResolvedTextDirection();
-    public void resetRtlProperties();
-    protected void resolveDrawables();
-    public boolean resolveLayoutDirection();
-    public void resolveLayoutParams();
-    public void resolvePadding();
-    public boolean resolveRtlPropertiesIfNeeded();
-    public static int resolveSize(int, int);
-    public static int resolveSizeAndState(int, int, int);
-    public boolean resolveTextAlignment();
-    public boolean resolveTextDirection();
-    public boolean restoreDefaultFocus();
-    public boolean restoreFocusInCluster(int);
-    public boolean restoreFocusNotInCluster();
-    public void restoreHierarchyState(android.util.SparseArray);
-    public void saveHierarchyState(android.util.SparseArray);
-    public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
-    public void scrollBy(int, int);
-    public void scrollTo(int, int);
-    public void sendAccessibilityEvent(int);
-    public void sendAccessibilityEventInternal(int);
-    public void sendAccessibilityEventUnchecked(android.view.accessibility.AccessibilityEvent);
-    public void sendAccessibilityEventUncheckedInternal(android.view.accessibility.AccessibilityEvent);
-    public void setAccessibilityDelegate(android.view.View$AccessibilityDelegate);
-    public void setAccessibilityHeading(boolean);
-    public void setAccessibilityLiveRegion(int);
-    public void setAccessibilityPaneTitle(java.lang.CharSequence);
-    public void setAccessibilitySelection(int, int);
-    public void setAccessibilityTraversalAfter(int);
-    public void setAccessibilityTraversalBefore(int);
-    public void setActivated(boolean);
-    public void setAlpha(float);
-    public void setAnimation(android.view.animation.Animation);
-    public void setAnimationMatrix(android.graphics.Matrix);
-    public void setAssistBlocked(boolean);
-    public void setAutofillHints(java.lang.String[]);
-    public void setAutofillId(android.view.autofill.AutofillId);
-    public void setAutofilled(boolean);
-    public void setBackground(android.graphics.drawable.Drawable);
-    public void setBackgroundColor(int);
-    public void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    public void setBackgroundResource(int);
-    public void setBackgroundTintList(android.content.res.ColorStateList);
-    public void setBackgroundTintMode(android.graphics.PorterDuff$Mode);
-    public void setBottom(int);
-    public void setCameraDistance(float);
-    public void setClickable(boolean);
-    public void setClipBounds(android.graphics.Rect);
-    public void setClipToOutline(boolean);
-    public void setContentDescription(java.lang.CharSequence);
-    public void setContextClickable(boolean);
-    public void setDefaultFocusHighlightEnabled(boolean);
-    public void setDisabledSystemUiVisibility(int);
-    public void setDrawingCacheBackgroundColor(int);
-    public void setDrawingCacheEnabled(boolean);
-    public void setDrawingCacheQuality(int);
-    public void setDuplicateParentStateEnabled(boolean);
-    public void setElevation(float);
-    public void setEnabled(boolean);
-    public void setFadingEdgeLength(int);
-    public void setFilterTouchesWhenObscured(boolean);
-    public void setFitsSystemWindows(boolean);
-    public void setFocusable(boolean);
-    public void setFocusable(int);
-    public void setFocusableInTouchMode(boolean);
-    public void setFocusedByDefault(boolean);
-    public void setFocusedInCluster();
-    public void setForeground(android.graphics.drawable.Drawable);
-    public void setForegroundGravity(int);
-    public void setForegroundTintList(android.content.res.ColorStateList);
-    public void setForegroundTintMode(android.graphics.PorterDuff$Mode);
-    protected boolean setFrame(int, int, int, int);
-    public void setHapticFeedbackEnabled(boolean);
-    public void setHasTransientState(boolean);
-    public void setHorizontalFadingEdgeEnabled(boolean);
-    public void setHorizontalScrollBarEnabled(boolean);
-    public void setHovered(boolean);
-    public void setId(int);
-    public void setImportantForAccessibility(int);
-    public void setImportantForAutofill(int);
-    public void setIsRootNamespace(boolean);
-    public void setKeepScreenOn(boolean);
-    public void setKeyboardNavigationCluster(boolean);
-    public void setLabelFor(int);
-    public void setLayerPaint(android.graphics.Paint);
-    public void setLayerType(int, android.graphics.Paint);
-    public void setLayoutDirection(int);
-    public void setLayoutParams(android.view.ViewGroup$LayoutParams);
-    public void setLeft(int);
-    public void setLeftTopRightBottom(int, int, int, int);
-    public void setLongClickable(boolean);
-    protected void setMeasuredDimension(int, int);
-    public void setMinimumHeight(int);
-    public void setMinimumWidth(int);
-    public void setNestedScrollingEnabled(boolean);
-    public void setNextClusterForwardId(int);
-    public void setNextFocusDownId(int);
-    public void setNextFocusForwardId(int);
-    public void setNextFocusLeftId(int);
-    public void setNextFocusRightId(int);
-    public void setNextFocusUpId(int);
-    public void setNotifyAutofillManagerOnClick(boolean);
-    public void setOnApplyWindowInsetsListener(android.view.View$OnApplyWindowInsetsListener);
-    public void setOnCapturedPointerListener(android.view.View$OnCapturedPointerListener);
-    public void setOnClickListener(android.view.View$OnClickListener);
-    public void setOnContextClickListener(android.view.View$OnContextClickListener);
-    public void setOnCreateContextMenuListener(android.view.View$OnCreateContextMenuListener);
-    public void setOnDragListener(android.view.View$OnDragListener);
-    public void setOnFocusChangeListener(android.view.View$OnFocusChangeListener);
-    public void setOnGenericMotionListener(android.view.View$OnGenericMotionListener);
-    public void setOnHoverListener(android.view.View$OnHoverListener);
-    public void setOnKeyListener(android.view.View$OnKeyListener);
-    public void setOnLongClickListener(android.view.View$OnLongClickListener);
-    public void setOnScrollChangeListener(android.view.View$OnScrollChangeListener);
-    public void setOnSystemUiVisibilityChangeListener(android.view.View$OnSystemUiVisibilityChangeListener);
-    public void setOnTouchListener(android.view.View$OnTouchListener);
-    public void setOpticalInsets(android.graphics.Insets);
-    public void setOutlineAmbientShadowColor(int);
-    public void setOutlineProvider(android.view.ViewOutlineProvider);
-    public void setOutlineSpotShadowColor(int);
-    public void setOverScrollMode(int);
-    public void setPadding(int, int, int, int);
-    public void setPaddingRelative(int, int, int, int);
-    public void setPivotX(float);
-    public void setPivotY(float);
-    public void setPointerIcon(android.view.PointerIcon);
-    public void setPressed(boolean);
-    public void setRevealClip(boolean, float, float, float);
-    public void setRevealOnFocusHint(boolean);
-    public void setRight(int);
-    public void setRotation(float);
-    public void setRotationX(float);
-    public void setRotationY(float);
-    public void setSaveEnabled(boolean);
-    public void setSaveFromParentEnabled(boolean);
-    public void setScaleX(float);
-    public void setScaleY(float);
-    public void setScreenReaderFocusable(boolean);
-    public void setScrollBarDefaultDelayBeforeFade(int);
-    public void setScrollBarFadeDuration(int);
-    public void setScrollBarSize(int);
-    public void setScrollBarStyle(int);
-    public void setScrollContainer(boolean);
-    public void setScrollIndicators(int);
-    public void setScrollIndicators(int, int);
-    public void setScrollX(int);
-    public void setScrollY(int);
-    public void setScrollbarFadingEnabled(boolean);
-    public void setSelected(boolean);
-    public void setSoundEffectsEnabled(boolean);
-    public void setStateListAnimator(android.animation.StateListAnimator);
-    public void setSystemUiVisibility(int);
-    public void setTag(java.lang.Object);
-    public void setTag(int, java.lang.Object);
-    public void setTagInternal(int, java.lang.Object);
-    public void setTextAlignment(int);
-    public void setTextDirection(int);
-    public void setTooltip(java.lang.CharSequence);
-    public void setTooltipText(java.lang.CharSequence);
-    public void setTop(int);
-    public void setTouchDelegate(android.view.TouchDelegate);
-    public void setTransitionAlpha(float);
-    public void setTransitionName(java.lang.String);
-    public void setTransitionVisibility(int);
-    public void setTranslationX(float);
-    public void setTranslationY(float);
-    public void setTranslationZ(float);
-    public void setVerticalFadingEdgeEnabled(boolean);
-    public void setVerticalScrollBarEnabled(boolean);
-    public void setVerticalScrollbarPosition(int);
-    public void setVisibility(int);
-    public void setWillNotCacheDrawing(boolean);
-    public void setWillNotDraw(boolean);
-    public void setX(float);
-    public void setY(float);
-    public void setZ(float);
-    public boolean showContextMenu();
-    public boolean showContextMenu(float, float);
-    public android.view.ActionMode startActionMode(android.view.ActionMode$Callback);
-    public android.view.ActionMode startActionMode(android.view.ActionMode$Callback, int);
-    public void startActivityForResult(android.content.Intent, int);
-    public void startAnimation(android.view.animation.Animation);
-    public boolean startDrag(android.content.ClipData, android.view.View$DragShadowBuilder, java.lang.Object, int);
-    public boolean startDragAndDrop(android.content.ClipData, android.view.View$DragShadowBuilder, java.lang.Object, int);
-    public boolean startMovingTask(float, float);
-    public boolean startNestedScroll(int);
-    public void stopNestedScroll();
-    public boolean toGlobalMotionEvent(android.view.MotionEvent);
-    public boolean toLocalMotionEvent(android.view.MotionEvent);
-    public java.lang.String toString();
-    public void transformFromViewToWindowSpace(int[]);
-    public void transformMatrixToGlobal(android.graphics.Matrix);
-    public void transformMatrixToLocal(android.graphics.Matrix);
-    public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
-    public void unscheduleDrawable(android.graphics.drawable.Drawable);
-    public android.view.RenderNode updateDisplayListIfDirty();
-    public void updateDragShadow(android.view.View$DragShadowBuilder);
-    protected boolean verifyDrawable(android.graphics.drawable.Drawable);
-    public boolean willNotCacheDrawing();
-    public boolean willNotDraw();
-
-
-    public static int ACCESSIBILITY_CURSOR_POSITION_UNDEFINED;
-    public static int ACCESSIBILITY_LIVE_REGION_ASSERTIVE;
-    public static int ACCESSIBILITY_LIVE_REGION_NONE;
-    public static int ACCESSIBILITY_LIVE_REGION_POLITE;
-    public static android.util.Property ALPHA;
-    public static int AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
-    public static java.lang.String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE;
-    public static java.lang.String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY;
-    public static java.lang.String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH;
-    public static java.lang.String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR;
-    public static java.lang.String AUTOFILL_HINT_CREDIT_CARD_NUMBER;
-    public static java.lang.String AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE;
-    public static java.lang.String AUTOFILL_HINT_EMAIL_ADDRESS;
-    public static java.lang.String AUTOFILL_HINT_NAME;
-    public static java.lang.String AUTOFILL_HINT_PASSWORD;
-    public static java.lang.String AUTOFILL_HINT_PHONE;
-    public static java.lang.String AUTOFILL_HINT_POSTAL_ADDRESS;
-    public static java.lang.String AUTOFILL_HINT_POSTAL_CODE;
-    public static java.lang.String AUTOFILL_HINT_USERNAME;
-    public static int AUTOFILL_TYPE_DATE;
-    public static int AUTOFILL_TYPE_LIST;
-    public static int AUTOFILL_TYPE_NONE;
-    public static int AUTOFILL_TYPE_TEXT;
-    public static int AUTOFILL_TYPE_TOGGLE;
-    public static boolean DEBUG_DRAW;
-    public static java.lang.String DEBUG_LAYOUT_PROPERTY;
-    public static int DRAG_FLAG_GLOBAL;
-    public static int DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION;
-    public static int DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION;
-    public static int DRAG_FLAG_GLOBAL_URI_READ;
-    public static int DRAG_FLAG_GLOBAL_URI_WRITE;
-    public static int DRAG_FLAG_OPAQUE;
-    public static int DRAWING_CACHE_QUALITY_AUTO;
-    public static int DRAWING_CACHE_QUALITY_HIGH;
-    public static int DRAWING_CACHE_QUALITY_LOW;
-    protected static int[] EMPTY_STATE_SET;
-    protected static int[] ENABLED_FOCUSED_SELECTED_STATE_SET;
-    protected static int[] ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] ENABLED_FOCUSED_STATE_SET;
-    protected static int[] ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] ENABLED_SELECTED_STATE_SET;
-    protected static int[] ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] ENABLED_STATE_SET;
-    protected static int[] ENABLED_WINDOW_FOCUSED_STATE_SET;
-    public static int FIND_VIEWS_WITH_ACCESSIBILITY_NODE_PROVIDERS;
-    public static int FIND_VIEWS_WITH_CONTENT_DESCRIPTION;
-    public static int FIND_VIEWS_WITH_TEXT;
-    public static int FOCUSABLE;
-    public static int FOCUSABLES_ALL;
-    public static int FOCUSABLES_TOUCH_MODE;
-    public static int FOCUSABLE_AUTO;
-    protected static int[] FOCUSED_SELECTED_STATE_SET;
-    protected static int[] FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] FOCUSED_STATE_SET;
-    protected static int[] FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    public static int FOCUS_BACKWARD;
-    public static int FOCUS_DOWN;
-    public static int FOCUS_FORWARD;
-    public static int FOCUS_LEFT;
-    public static int FOCUS_RIGHT;
-    public static int FOCUS_UP;
-    public static int GONE;
-    public static int HAPTIC_FEEDBACK_ENABLED;
-    public static int IMPORTANT_FOR_ACCESSIBILITY_AUTO;
-    public static int IMPORTANT_FOR_ACCESSIBILITY_NO;
-    public static int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS;
-    public static int IMPORTANT_FOR_ACCESSIBILITY_YES;
-    public static int IMPORTANT_FOR_AUTOFILL_AUTO;
-    public static int IMPORTANT_FOR_AUTOFILL_NO;
-    public static int IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS;
-    public static int IMPORTANT_FOR_AUTOFILL_YES;
-    public static int IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS;
-    public static int INVISIBLE;
-    public static int KEEP_SCREEN_ON;
-    public static int LAST_APP_AUTOFILL_ID;
-    public static int LAYER_TYPE_HARDWARE;
-    public static int LAYER_TYPE_NONE;
-    public static int LAYER_TYPE_SOFTWARE;
-    public static int LAYOUT_DIRECTION_INHERIT;
-    public static int LAYOUT_DIRECTION_LOCALE;
-    public static int LAYOUT_DIRECTION_LTR;
-    public static int LAYOUT_DIRECTION_RTL;
-    public static int LAYOUT_DIRECTION_UNDEFINED;
-    public static int MEASURED_HEIGHT_STATE_SHIFT;
-    public static int MEASURED_SIZE_MASK;
-    public static int MEASURED_STATE_MASK;
-    public static int MEASURED_STATE_TOO_SMALL;
-    public static int NAVIGATION_BAR_TRANSIENT;
-    public static int NAVIGATION_BAR_TRANSLUCENT;
-    public static int NAVIGATION_BAR_TRANSPARENT;
-    public static int NAVIGATION_BAR_UNHIDE;
-    public static int NOT_FOCUSABLE;
-    public static int NO_ID;
-    public static int OVER_SCROLL_ALWAYS;
-    public static int OVER_SCROLL_IF_CONTENT_SCROLLS;
-    public static int OVER_SCROLL_NEVER;
-    protected static int[] PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET;
-    protected static int[] PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_ENABLED_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_ENABLED_SELECTED_STATE_SET;
-    protected static int[] PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_ENABLED_STATE_SET;
-    protected static int[] PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_FOCUSED_SELECTED_STATE_SET;
-    protected static int[] PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_SELECTED_STATE_SET;
-    protected static int[] PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
-    protected static int[] PRESSED_STATE_SET;
-    protected static int[] PRESSED_WINDOW_FOCUSED_STATE_SET;
-    public static int PUBLIC_STATUS_BAR_VISIBILITY_MASK;
-    public static android.util.Property ROTATION;
-    public static android.util.Property ROTATION_X;
-    public static android.util.Property ROTATION_Y;
-    public static android.util.Property SCALE_X;
-    public static android.util.Property SCALE_Y;
-    public static int SCREEN_STATE_OFF;
-    public static int SCREEN_STATE_ON;
-    public static int SCROLLBARS_INSIDE_INSET;
-    public static int SCROLLBARS_INSIDE_OVERLAY;
-    public static int SCROLLBARS_OUTSIDE_INSET;
-    public static int SCROLLBARS_OUTSIDE_OVERLAY;
-    public static int SCROLLBAR_POSITION_DEFAULT;
-    public static int SCROLLBAR_POSITION_LEFT;
-    public static int SCROLLBAR_POSITION_RIGHT;
-    public static int SCROLL_AXIS_HORIZONTAL;
-    public static int SCROLL_AXIS_NONE;
-    public static int SCROLL_AXIS_VERTICAL;
-    public static int SCROLL_INDICATOR_BOTTOM;
-    public static int SCROLL_INDICATOR_END;
-    public static int SCROLL_INDICATOR_LEFT;
-    public static int SCROLL_INDICATOR_RIGHT;
-    public static int SCROLL_INDICATOR_START;
-    public static int SCROLL_INDICATOR_TOP;
-    protected static int[] SELECTED_STATE_SET;
-    protected static int[] SELECTED_WINDOW_FOCUSED_STATE_SET;
-    public static int SOUND_EFFECTS_ENABLED;
-    public static int STATUS_BAR_DISABLE_BACK;
-    public static int STATUS_BAR_DISABLE_CLOCK;
-    public static int STATUS_BAR_DISABLE_EXPAND;
-    public static int STATUS_BAR_DISABLE_HOME;
-    public static int STATUS_BAR_DISABLE_NOTIFICATION_ALERTS;
-    public static int STATUS_BAR_DISABLE_NOTIFICATION_ICONS;
-    public static int STATUS_BAR_DISABLE_NOTIFICATION_TICKER;
-    public static int STATUS_BAR_DISABLE_RECENT;
-    public static int STATUS_BAR_DISABLE_SEARCH;
-    public static int STATUS_BAR_DISABLE_SYSTEM_INFO;
-    public static int STATUS_BAR_HIDDEN;
-    public static int STATUS_BAR_TRANSIENT;
-    public static int STATUS_BAR_TRANSLUCENT;
-    public static int STATUS_BAR_TRANSPARENT;
-    public static int STATUS_BAR_UNHIDE;
-    public static int STATUS_BAR_VISIBLE;
-    public static int SYSTEM_UI_CLEARABLE_FLAGS;
-    public static int SYSTEM_UI_FLAG_FULLSCREEN;
-    public static int SYSTEM_UI_FLAG_HIDE_NAVIGATION;
-    public static int SYSTEM_UI_FLAG_IMMERSIVE;
-    public static int SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
-    public static int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
-    public static int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
-    public static int SYSTEM_UI_FLAG_LAYOUT_STABLE;
-    public static int SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
-    public static int SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
-    public static int SYSTEM_UI_FLAG_LOW_PROFILE;
-    public static int SYSTEM_UI_FLAG_VISIBLE;
-    public static int SYSTEM_UI_LAYOUT_FLAGS;
-    public static int SYSTEM_UI_TRANSPARENT;
-    public static int TEXT_ALIGNMENT_CENTER;
-    public static int TEXT_ALIGNMENT_GRAVITY;
-    public static int TEXT_ALIGNMENT_INHERIT;
-    public static int TEXT_ALIGNMENT_TEXT_END;
-    public static int TEXT_ALIGNMENT_TEXT_START;
-    public static int TEXT_ALIGNMENT_VIEW_END;
-    public static int TEXT_ALIGNMENT_VIEW_START;
-    public static int TEXT_DIRECTION_ANY_RTL;
-    public static int TEXT_DIRECTION_FIRST_STRONG;
-    public static int TEXT_DIRECTION_FIRST_STRONG_LTR;
-    public static int TEXT_DIRECTION_FIRST_STRONG_RTL;
-    public static int TEXT_DIRECTION_INHERIT;
-    public static int TEXT_DIRECTION_LOCALE;
-    public static int TEXT_DIRECTION_LTR;
-    public static int TEXT_DIRECTION_RTL;
-    public static android.util.Property TRANSLATION_X;
-    public static android.util.Property TRANSLATION_Y;
-    public static android.util.Property TRANSLATION_Z;
-    protected static java.lang.String VIEW_LOG_TAG;
-    public static int VISIBLE;
-    protected static int[] WINDOW_FOCUSED_STATE_SET;
-    public static android.util.Property X;
-    public static android.util.Property Y;
-    public static android.util.Property Z;
-    public java.lang.String[] mAttributes;
-    protected int mBottom;
-    public boolean mCachingFailed;
-    protected android.content.Context mContext;
-    protected android.view.animation.Animation mCurrentAnimation;
-    public static boolean mDebugViewAttributes;
-    protected android.view.InputEventConsistencyVerifier mInputEventConsistencyVerifier;
-    protected android.view.ViewGroup$LayoutParams mLayoutParams;
-    protected int mLeft;
-    protected int mPaddingBottom;
-    protected int mPaddingLeft;
-    protected int mPaddingRight;
-    protected int mPaddingTop;
-    protected android.view.ViewParent mParent;
-    public int mPrivateFlags;
-    protected int mRight;
-    protected int mScrollX;
-    protected int mScrollY;
-    protected java.lang.Object mTag;
-    protected int mTop;
-    public android.view.View$TransformationInfo mTransformationInfo;
-    protected int mUserPaddingBottom;
-    protected int mUserPaddingLeft;
-    protected int mUserPaddingRight;
-    protected static boolean sPreserveMarginParamsInLayoutParamConversion;
-}
-
--keep class android.view.View$AccessibilityDelegate {
-    <init>();
-
-    public void addExtraDataToAccessibilityNodeInfo(android.view.View, android.view.accessibility.AccessibilityNodeInfo, java.lang.String, android.os.Bundle);
-    public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(android.view.View);
-    public boolean dispatchPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider(android.view.View);
-    public void onInitializeAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public void onInitializeAccessibilityNodeInfo(android.view.View, android.view.accessibility.AccessibilityNodeInfo);
-    public void onPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup, android.view.View, android.view.accessibility.AccessibilityEvent);
-    public boolean performAccessibilityAction(android.view.View, int, android.os.Bundle);
-    public void sendAccessibilityEvent(android.view.View, int);
-    public void sendAccessibilityEventUnchecked(android.view.View, android.view.accessibility.AccessibilityEvent);
-
-
-}
-
--keep class android.view.View$AttachInfo {
-
-
-
-    public android.view.Surface mDragSurface;
-}
-
--keep class android.view.View$AttachInfo$InvalidateInfo {
-
-    public static android.view.View$AttachInfo$InvalidateInfo obtain();
-    public void recycle();
-
-
-}
-
--keep class android.view.View$DragShadowBuilder {
-    <init>(android.view.View);
-    <init>();
-
-    public android.view.View getView();
-    public void onDrawShadow(android.graphics.Canvas);
-    public void onProvideShadowMetrics(android.graphics.Point, android.graphics.Point);
-
-
-}
-
--keep class android.view.View$OnApplyWindowInsetsListener {
-
-    public abstract android.view.WindowInsets onApplyWindowInsets(android.view.View, android.view.WindowInsets);
-
-
-}
-
--keep class android.view.View$OnAttachStateChangeListener {
-
-    public abstract void onViewAttachedToWindow(android.view.View);
-    public abstract void onViewDetachedFromWindow(android.view.View);
-
-
-}
-
--keep class android.view.View$OnCapturedPointerListener {
-
-    public abstract boolean onCapturedPointer(android.view.View, android.view.MotionEvent);
-
-
-}
-
--keep class android.view.View$OnClickListener {
-
-    public abstract void onClick(android.view.View);
-
-
-}
-
--keep class android.view.View$OnContextClickListener {
-
-    public abstract boolean onContextClick(android.view.View);
-
-
-}
-
--keep class android.view.View$OnCreateContextMenuListener {
-
-    public abstract void onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu$ContextMenuInfo);
-
-
-}
-
--keep class android.view.View$OnDragListener {
-
-    public abstract boolean onDrag(android.view.View, android.view.DragEvent);
-
-
-}
-
--keep class android.view.View$OnFocusChangeListener {
-
-    public abstract void onFocusChange(android.view.View, boolean);
-
-
-}
-
--keep class android.view.View$OnGenericMotionListener {
-
-    public abstract boolean onGenericMotion(android.view.View, android.view.MotionEvent);
-
-
-}
-
--keep class android.view.View$OnHoverListener {
-
-    public abstract boolean onHover(android.view.View, android.view.MotionEvent);
-
-
-}
-
--keep class android.view.View$OnKeyListener {
-
-    public abstract boolean onKey(android.view.View, int, android.view.KeyEvent);
-
-
-}
-
--keep class android.view.View$OnLayoutChangeListener {
-
-    public abstract void onLayoutChange(android.view.View, int, int, int, int, int, int, int, int);
-
-
-}
-
--keep class android.view.View$OnLongClickListener {
-
-    public abstract boolean onLongClick(android.view.View);
-
-
-}
-
--keep class android.view.View$OnScrollChangeListener {
-
-    public abstract void onScrollChange(android.view.View, int, int, int, int);
-
-
-}
-
--keep class android.view.View$OnSystemUiVisibilityChangeListener {
-
-    public abstract void onSystemUiVisibilityChange(int);
-
-
-}
-
--keep class android.view.View$OnTouchListener {
-
-    public abstract boolean onTouch(android.view.View, android.view.MotionEvent);
-
-
-}
-
--keep class android.view.View$OnUnhandledKeyEventListener {
-
-    public abstract boolean onUnhandledKeyEvent(android.view.View, android.view.KeyEvent);
-
-
-}
-
--keep class android.view.View$TransformationInfo {
-
-
-
-}
-
--keep class android.view.ViewDebug {
-    <init>();
-
-    public static void capture(android.view.View, java.io.OutputStream, android.view.View);
-    public static void captureLayers(android.view.View, java.io.DataOutputStream);
-    public static void dump(android.view.View, boolean, boolean, java.io.OutputStream);
-    public static void dumpCapturedView(java.lang.String, java.lang.Object);
-    public static void dumpTheme(android.view.View, java.io.OutputStream);
-    public static void dumpv2(android.view.View, java.io.ByteArrayOutputStream);
-    public static android.view.View findView(android.view.View, java.lang.String);
-    public static java.lang.String flagsToString(java.lang.Class, java.lang.String, int);
-    public static long getViewInstanceCount();
-    public static long getViewRootImplCount();
-    public static java.lang.String intToString(java.lang.Class, java.lang.String, int);
-    public static java.lang.Object invokeViewMethod(android.view.View, java.lang.reflect.Method, java.lang.Object[]);
-    public static void outputDisplayList(android.view.View, android.view.View);
-    public static void profileViewAndChildren(android.view.View, java.io.BufferedWriter);
-    public static void setLayoutParameter(android.view.View, java.lang.String, int);
-    public static void startHierarchyTracing(java.lang.String, android.view.View);
-    public static void startRecyclerTracing(java.lang.String, android.view.View);
-    public static void stopHierarchyTracing();
-    public static void stopRecyclerTracing();
-    public static void trace(android.view.View, android.view.ViewDebug$RecyclerTraceType, int[]);
-    public static void trace(android.view.View, android.view.ViewDebug$HierarchyTraceType);
-
-
-    public static boolean DEBUG_DRAG;
-    public static boolean DEBUG_POSITIONING;
-    public static boolean TRACE_HIERARCHY;
-    public static boolean TRACE_RECYCLER;
-}
-
--keep class android.view.ViewDebug$CanvasProvider {
-
-    public abstract android.graphics.Bitmap createBitmap();
-    public abstract android.graphics.Canvas getCanvas(android.view.View, int, int);
-
-
-}
-
--keep class android.view.ViewDebug$HierarchyTraceType {
-
-    public static android.view.ViewDebug$HierarchyTraceType valueOf(java.lang.String);
-    public static android.view.ViewDebug$HierarchyTraceType[] values();
-
-    public static android.view.ViewDebug$HierarchyTraceType BUILD_CACHE;
-    public static android.view.ViewDebug$HierarchyTraceType DRAW;
-    public static android.view.ViewDebug$HierarchyTraceType INVALIDATE;
-    public static android.view.ViewDebug$HierarchyTraceType INVALIDATE_CHILD;
-    public static android.view.ViewDebug$HierarchyTraceType INVALIDATE_CHILD_IN_PARENT;
-    public static android.view.ViewDebug$HierarchyTraceType ON_LAYOUT;
-    public static android.view.ViewDebug$HierarchyTraceType ON_MEASURE;
-    public static android.view.ViewDebug$HierarchyTraceType REQUEST_LAYOUT;
-
-}
-
--keep class android.view.ViewDebug$RecyclerTraceType {
-
-    public static android.view.ViewDebug$RecyclerTraceType valueOf(java.lang.String);
-    public static android.view.ViewDebug$RecyclerTraceType[] values();
-
-    public static android.view.ViewDebug$RecyclerTraceType BIND_VIEW;
-    public static android.view.ViewDebug$RecyclerTraceType MOVE_FROM_ACTIVE_TO_SCRAP_HEAP;
-    public static android.view.ViewDebug$RecyclerTraceType MOVE_TO_SCRAP_HEAP;
-    public static android.view.ViewDebug$RecyclerTraceType NEW_VIEW;
-    public static android.view.ViewDebug$RecyclerTraceType RECYCLE_FROM_ACTIVE_HEAP;
-    public static android.view.ViewDebug$RecyclerTraceType RECYCLE_FROM_SCRAP_HEAP;
-
-}
-
--keep class android.view.ViewGroup {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.content.Context, android.util.AttributeSet, int);
-    <init>(android.content.Context, android.util.AttributeSet, int, int);
-
-    public void addChildrenForAccessibility(java.util.ArrayList);
-    public void addFocusables(java.util.ArrayList, int, int);
-    public void addKeyboardNavigationClusters(java.util.Collection, int);
-    public boolean addStatesFromChildren();
-    public void addTouchables(java.util.ArrayList);
-    public void addTransientView(android.view.View, int);
-    public void addView(android.view.View);
-    public void addView(android.view.View, int);
-    public void addView(android.view.View, int, int);
-    public void addView(android.view.View, android.view.ViewGroup$LayoutParams);
-    public void addView(android.view.View, int, android.view.ViewGroup$LayoutParams);
-    protected boolean addViewInLayout(android.view.View, int, android.view.ViewGroup$LayoutParams);
-    protected boolean addViewInLayout(android.view.View, int, android.view.ViewGroup$LayoutParams, boolean);
-    protected void attachLayoutAnimationParameters(android.view.View, android.view.ViewGroup$LayoutParams, int, int);
-    protected void attachViewToParent(android.view.View, int, android.view.ViewGroup$LayoutParams);
-    public void bringChildToFront(android.view.View);
-    public java.util.ArrayList buildTouchDispatchChildList();
-    protected boolean canAnimate();
-    public void captureTransitioningViews(java.util.List);
-    protected boolean checkLayoutParams(android.view.ViewGroup$LayoutParams);
-    public void childDrawableStateChanged(android.view.View);
-    public void childHasTransientStateChanged(android.view.View, boolean);
-    protected void cleanupLayoutState(android.view.View);
-    public void clearChildFocus(android.view.View);
-    public void clearDisappearingChildren();
-    public void clearFocus();
-    public android.graphics.Bitmap createSnapshot(android.view.ViewDebug$CanvasProvider, boolean);
-    protected void debug(int);
-    protected void destroyHardwareResources();
-    protected void detachAllViewsFromParent();
-    protected void detachViewFromParent(android.view.View);
-    protected void detachViewFromParent(int);
-    protected void detachViewsFromParent(int, int);
-    public boolean dispatchActivityResult(java.lang.String, int, int, android.content.Intent);
-    public android.view.WindowInsets dispatchApplyWindowInsets(android.view.WindowInsets);
-    public boolean dispatchCapturedPointerEvent(android.view.MotionEvent);
-    public void dispatchConfigurationChanged(android.content.res.Configuration);
-    public void dispatchDisplayHint(int);
-    public boolean dispatchDragEvent(android.view.DragEvent);
-    protected void dispatchDraw(android.graphics.Canvas);
-    public void dispatchDrawableHotspotChanged(float, float);
-    public void dispatchFinishTemporaryDetach();
-    protected void dispatchFreezeSelfOnly(android.util.SparseArray);
-    protected boolean dispatchGenericFocusedEvent(android.view.MotionEvent);
-    protected boolean dispatchGenericPointerEvent(android.view.MotionEvent);
-    protected void dispatchGetDisplayList();
-    protected boolean dispatchHoverEvent(android.view.MotionEvent);
-    public boolean dispatchKeyEvent(android.view.KeyEvent);
-    public boolean dispatchKeyEventPreIme(android.view.KeyEvent);
-    public boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    public void dispatchPointerCaptureChanged(boolean);
-    public boolean dispatchPopulateAccessibilityEventInternal(android.view.accessibility.AccessibilityEvent);
-    public void dispatchProvideAutofillStructure(android.view.ViewStructure, int);
-    public void dispatchProvideStructure(android.view.ViewStructure);
-    protected void dispatchRestoreInstanceState(android.util.SparseArray);
-    protected void dispatchSaveInstanceState(android.util.SparseArray);
-    public void dispatchSetActivated(boolean);
-    protected void dispatchSetPressed(boolean);
-    public void dispatchSetSelected(boolean);
-    public void dispatchStartTemporaryDetach();
-    public void dispatchSystemUiVisibilityChanged(int);
-    protected void dispatchThawSelfOnly(android.util.SparseArray);
-    public boolean dispatchTouchEvent(android.view.MotionEvent);
-    public boolean dispatchTrackballEvent(android.view.MotionEvent);
-    public boolean dispatchUnhandledMove(android.view.View, int);
-    protected void dispatchVisibilityChanged(android.view.View, int);
-    public void dispatchWindowFocusChanged(boolean);
-    public void dispatchWindowSystemUiVisiblityChanged(int);
-    public void dispatchWindowVisibilityChanged(int);
-    protected boolean drawChild(android.graphics.Canvas, android.view.View, long);
-    protected void drawableStateChanged();
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    public void endViewTransition(android.view.View);
-    public android.view.View findFocus();
-    public void findNamedViews(java.util.Map);
-    public android.view.View findViewByAccessibilityIdTraversal(int);
-    public android.view.View findViewByAutofillIdTraversal(int);
-    protected android.view.View findViewByPredicateTraversal(java.util.function.Predicate, android.view.View);
-    protected android.view.View findViewTraversal(int);
-    protected android.view.View findViewWithTagTraversal(java.lang.Object);
-    public void findViewsWithText(java.util.ArrayList, java.lang.CharSequence, int);
-    public android.view.View focusSearch(android.view.View, int);
-    public void focusableViewAvailable(android.view.View);
-    public boolean gatherTransparentRegion(android.graphics.Region);
-    protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams();
-    public android.view.ViewGroup$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    protected android.view.ViewGroup$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    public java.lang.CharSequence getAccessibilityClassName();
-    public android.view.View getChildAt(int);
-    public int getChildCount();
-    protected int getChildDrawingOrder(int, int);
-    public static int getChildMeasureSpec(int, int, int);
-    protected boolean getChildStaticTransformation(android.view.View, android.view.animation.Transformation);
-    public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
-    public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point, boolean);
-    public boolean getClipChildren();
-    public boolean getClipToPadding();
-    public int getDescendantFocusability();
-    public android.view.View getFocusedChild();
-    public android.view.animation.LayoutAnimationController getLayoutAnimation();
-    public android.view.animation.Animation$AnimationListener getLayoutAnimationListener();
-    public int getLayoutMode();
-    public android.animation.LayoutTransition getLayoutTransition();
-    public int getNestedScrollAxes();
-    public android.view.ViewGroupOverlay getOverlay();
-    public android.view.ViewOverlay getOverlay();
-    public int getPersistentDrawingCache();
-    public boolean getTouchscreenBlocksFocus();
-    public android.view.View getTransientView(int);
-    public int getTransientViewCount();
-    public int getTransientViewIndex(int);
-    public boolean hasFocus();
-    protected boolean hasHoveredChild();
-    public boolean hasTransientState();
-    public int indexOfChild(android.view.View);
-    protected void internalSetPadding(int, int, int, int);
-    public void invalidateChild(android.view.View, android.graphics.Rect);
-    public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
-    public boolean isAlwaysDrawnWithCacheEnabled();
-    public boolean isAnimationCacheEnabled();
-    protected boolean isChildrenDrawingOrderEnabled();
-    protected boolean isChildrenDrawnWithCacheEnabled();
-    public boolean isLayoutSuppressed();
-    public boolean isMotionEventSplittingEnabled();
-    public boolean isShowingContextMenuWithCoords();
-    protected boolean isTransformedTouchPointInView(float, float, android.view.View, android.graphics.PointF);
-    public boolean isTransitionGroup();
-    public void jumpDrawablesToCurrentState();
-    public void layout(int, int, int, int);
-    public void makeOptionalFitsSystemWindows();
-    protected void measureChild(android.view.View, int, int);
-    protected void measureChildWithMargins(android.view.View, int, int, int, int);
-    protected void measureChildren(int, int);
-    public void notifySubtreeAccessibilityStateChanged(android.view.View, android.view.View, int);
-    public void notifySubtreeAccessibilityStateChangedIfNeeded();
-    public void offsetChildrenTopAndBottom(int);
-    public void offsetDescendantRectToMyCoords(android.view.View, android.graphics.Rect);
-    public void offsetRectIntoDescendantCoords(android.view.View, android.graphics.Rect);
-    protected void onAttachedToWindow();
-    protected void onChildVisibilityChanged(android.view.View, int, int);
-    protected int[] onCreateDrawableState(int);
-    protected void onDebugDraw(android.graphics.Canvas);
-    protected void onDebugDrawMargins(android.graphics.Canvas, android.graphics.Paint);
-    public void onDescendantInvalidated(android.view.View, android.view.View);
-    protected void onDetachedFromWindow();
-    public void onInitializeAccessibilityNodeInfoInternal(android.view.accessibility.AccessibilityNodeInfo);
-    public boolean onInterceptHoverEvent(android.view.MotionEvent);
-    public boolean onInterceptTouchEvent(android.view.MotionEvent);
-    protected abstract void onLayout(boolean, int, int, int, int);
-    public boolean onNestedFling(android.view.View, float, float, boolean);
-    public boolean onNestedPreFling(android.view.View, float, float);
-    public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
-    public void onNestedPreScroll(android.view.View, int, int, int[]);
-    public void onNestedScroll(android.view.View, int, int, int, int);
-    public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    protected boolean onRequestFocusInDescendants(int, android.graphics.Rect);
-    public boolean onRequestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public boolean onRequestSendAccessibilityEventInternal(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public android.view.PointerIcon onResolvePointerIcon(android.view.MotionEvent, int);
-    protected void onSetLayoutParams(android.view.View, android.view.ViewGroup$LayoutParams);
-    public boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    public void onStopNestedScroll(android.view.View);
-    public void onViewAdded(android.view.View);
-    public void onViewRemoved(android.view.View);
-    public void recomputeViewAttributes(android.view.View);
-    public void removeAllViews();
-    public void removeAllViewsInLayout();
-    protected void removeDetachedView(android.view.View, boolean);
-    public void removeTransientView(android.view.View);
-    public void removeView(android.view.View);
-    public void removeViewAt(int);
-    public void removeViewInLayout(android.view.View);
-    public void removeViews(int, int);
-    public void removeViewsInLayout(int, int);
-    public void requestChildFocus(android.view.View, android.view.View);
-    public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    public void requestDisallowInterceptTouchEvent(boolean);
-    public boolean requestFocus(int, android.graphics.Rect);
-    public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public void requestTransitionStart(android.animation.LayoutTransition);
-    public void requestTransparentRegion(android.view.View);
-    protected void resetResolvedDrawables();
-    public void resetResolvedLayoutDirection();
-    public void resetResolvedPadding();
-    public void resetResolvedTextAlignment();
-    public void resetResolvedTextDirection();
-    protected void resolveDrawables();
-    public boolean resolveLayoutDirection();
-    public void resolveLayoutParams();
-    public void resolvePadding();
-    public boolean resolveRtlPropertiesIfNeeded();
-    public boolean resolveTextAlignment();
-    public boolean resolveTextDirection();
-    public boolean restoreDefaultFocus();
-    public boolean restoreFocusInCluster(int);
-    public boolean restoreFocusNotInCluster();
-    public void scheduleLayoutAnimation();
-    public void setAddStatesFromChildren(boolean);
-    public void setAlwaysDrawnWithCacheEnabled(boolean);
-    public void setAnimationCacheEnabled(boolean);
-    protected void setChildrenDrawingCacheEnabled(boolean);
-    protected void setChildrenDrawingOrderEnabled(boolean);
-    protected void setChildrenDrawnWithCacheEnabled(boolean);
-    public void setClipChildren(boolean);
-    public void setClipToPadding(boolean);
-    public void setDescendantFocusability(int);
-    public void setLayoutAnimation(android.view.animation.LayoutAnimationController);
-    public void setLayoutAnimationListener(android.view.animation.Animation$AnimationListener);
-    public void setLayoutMode(int);
-    public void setLayoutTransition(android.animation.LayoutTransition);
-    public void setMotionEventSplittingEnabled(boolean);
-    public void setOnHierarchyChangeListener(android.view.ViewGroup$OnHierarchyChangeListener);
-    public void setPersistentDrawingCache(int);
-    protected void setStaticTransformationsEnabled(boolean);
-    public void setTouchscreenBlocksFocus(boolean);
-    public void setTransitionGroup(boolean);
-    public boolean shouldDelayChildPressedState();
-    public boolean showContextMenuForChild(android.view.View);
-    public boolean showContextMenuForChild(android.view.View, float, float);
-    public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode$Callback);
-    public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode$Callback, int);
-    public void startLayoutAnimation();
-    public void startViewTransition(android.view.View);
-    public void suppressLayout(boolean);
-    public void transformPointToViewLocal(float[], android.view.View);
-    public void updateViewLayout(android.view.View, android.view.ViewGroup$LayoutParams);
-
-
-    protected static int CLIP_TO_PADDING_MASK;
-    protected static int FLAG_DISALLOW_INTERCEPT;
-    protected static int FLAG_SUPPORT_STATIC_TRANSFORMATIONS;
-    protected static int FLAG_USE_CHILD_DRAWING_ORDER;
-    public static int FOCUS_AFTER_DESCENDANTS;
-    public static int FOCUS_BEFORE_DESCENDANTS;
-    public static int FOCUS_BLOCK_DESCENDANTS;
-    public static int LAYOUT_MODE_CLIP_BOUNDS;
-    public static int LAYOUT_MODE_DEFAULT;
-    public static int LAYOUT_MODE_OPTICAL_BOUNDS;
-    public static int PERSISTENT_ALL_CACHES;
-    public static int PERSISTENT_ANIMATION_CACHE;
-    public static int PERSISTENT_NO_CACHE;
-    public static int PERSISTENT_SCROLLING_CACHE;
-    protected java.util.ArrayList mDisappearingChildren;
-    protected int mGroupFlags;
-    protected android.view.ViewGroup$OnHierarchyChangeListener mOnHierarchyChangeListener;
-    protected int mPersistentDrawingCache;
-}
-
--keep class android.view.ViewGroup$LayoutParams {
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(int, int);
-    <init>(android.view.ViewGroup$LayoutParams);
-
-    public java.lang.String debug(java.lang.String);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    public void onDebugDraw(android.view.View, android.graphics.Canvas, android.graphics.Paint);
-    public void resolveLayoutDirection(int);
-    protected void setBaseAttributes(android.content.res.TypedArray, int, int);
-    protected static java.lang.String sizeToString(int);
-
-
-    public static int FILL_PARENT;
-    public static int MATCH_PARENT;
-    public static int WRAP_CONTENT;
-    public int height;
-    public android.view.animation.LayoutAnimationController$AnimationParameters layoutAnimationParameters;
-    public int width;
-}
-
--keep class android.view.ViewGroup$MarginLayoutParams {
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(int, int);
-    <init>(android.view.ViewGroup$MarginLayoutParams);
-    <init>(android.view.ViewGroup$LayoutParams);
-
-    public void copyMarginsFrom(android.view.ViewGroup$MarginLayoutParams);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    public int getLayoutDirection();
-    public int getMarginEnd();
-    public int getMarginStart();
-    public boolean isLayoutRtl();
-    public boolean isMarginRelative();
-    public void onDebugDraw(android.view.View, android.graphics.Canvas, android.graphics.Paint);
-    public void resolveLayoutDirection(int);
-    public void setLayoutDirection(int);
-    public void setMarginEnd(int);
-    public void setMarginStart(int);
-    public void setMargins(int, int, int, int);
-    public void setMarginsRelative(int, int, int, int);
-
-
-    public static int DEFAULT_MARGIN_RELATIVE;
-    public int bottomMargin;
-    public int leftMargin;
-    public int rightMargin;
-    public int topMargin;
-}
-
--keep class android.view.ViewGroup$OnHierarchyChangeListener {
-
-    public abstract void onChildViewAdded(android.view.View, android.view.View);
-    public abstract void onChildViewRemoved(android.view.View, android.view.View);
-
-
-}
-
--keep class android.view.ViewGroupOverlay {
-
-    public void add(android.view.View);
-    public void remove(android.view.View);
-
-
-}
-
--keep class android.view.ViewHierarchyEncoder {
-    <init>(java.io.ByteArrayOutputStream);
-
-    public void addProperty(java.lang.String, boolean);
-    public void addProperty(java.lang.String, short);
-    public void addProperty(java.lang.String, int);
-    public void addProperty(java.lang.String, float);
-    public void addProperty(java.lang.String, java.lang.String);
-    public void addPropertyKey(java.lang.String);
-    public void beginObject(java.lang.Object);
-    public void endObject();
-    public void endStream();
-
-
-}
-
--keep class android.view.ViewOutlineProvider {
-    <init>();
-
-    public abstract void getOutline(android.view.View, android.graphics.Outline);
-
-
-    public static android.view.ViewOutlineProvider BACKGROUND;
-    public static android.view.ViewOutlineProvider BOUNDS;
-    public static android.view.ViewOutlineProvider PADDED_BOUNDS;
-}
-
--keep class android.view.ViewOverlay {
-
-    public void add(android.graphics.drawable.Drawable);
-    public void clear();
-    public void remove(android.graphics.drawable.Drawable);
-
-
-}
-
--keep class android.view.ViewParent {
-
-    public abstract void bringChildToFront(android.view.View);
-    public abstract boolean canResolveLayoutDirection();
-    public abstract boolean canResolveTextAlignment();
-    public abstract boolean canResolveTextDirection();
-    public abstract void childDrawableStateChanged(android.view.View);
-    public abstract void childHasTransientStateChanged(android.view.View, boolean);
-    public abstract void clearChildFocus(android.view.View);
-    public abstract void createContextMenu(android.view.ContextMenu);
-    public abstract android.view.View focusSearch(android.view.View, int);
-    public abstract void focusableViewAvailable(android.view.View);
-    public abstract boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
-    public abstract int getLayoutDirection();
-    public abstract android.view.ViewParent getParent();
-    public abstract android.view.ViewParent getParentForAccessibility();
-    public abstract int getTextAlignment();
-    public abstract int getTextDirection();
-    public abstract void invalidateChild(android.view.View, android.graphics.Rect);
-    public abstract android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
-    public abstract boolean isLayoutDirectionResolved();
-    public abstract boolean isLayoutRequested();
-    public abstract boolean isTextAlignmentResolved();
-    public abstract boolean isTextDirectionResolved();
-    public abstract android.view.View keyboardNavigationClusterSearch(android.view.View, int);
-    public abstract void notifySubtreeAccessibilityStateChanged(android.view.View, android.view.View, int);
-    public void onDescendantInvalidated(android.view.View, android.view.View);
-    public abstract boolean onNestedFling(android.view.View, float, float, boolean);
-    public abstract boolean onNestedPreFling(android.view.View, float, float);
-    public abstract boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
-    public abstract void onNestedPreScroll(android.view.View, int, int, int[]);
-    public abstract void onNestedScroll(android.view.View, int, int, int, int);
-    public abstract void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    public abstract boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    public abstract void onStopNestedScroll(android.view.View);
-    public abstract void recomputeViewAttributes(android.view.View);
-    public abstract void requestChildFocus(android.view.View, android.view.View);
-    public abstract boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    public abstract void requestDisallowInterceptTouchEvent(boolean);
-    public abstract void requestFitSystemWindows();
-    public abstract void requestLayout();
-    public abstract boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public abstract void requestTransparentRegion(android.view.View);
-    public abstract boolean showContextMenuForChild(android.view.View);
-    public abstract boolean showContextMenuForChild(android.view.View, float, float);
-    public abstract android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode$Callback);
-    public abstract android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode$Callback, int);
-
-
-}
-
--keep class android.view.ViewPropertyAnimator {
-
-    public android.view.ViewPropertyAnimator alpha(float);
-    public android.view.ViewPropertyAnimator alphaBy(float);
-    public void cancel();
-    public long getDuration();
-    public android.animation.TimeInterpolator getInterpolator();
-    public long getStartDelay();
-    public android.view.ViewPropertyAnimator rotation(float);
-    public android.view.ViewPropertyAnimator rotationBy(float);
-    public android.view.ViewPropertyAnimator rotationX(float);
-    public android.view.ViewPropertyAnimator rotationXBy(float);
-    public android.view.ViewPropertyAnimator rotationY(float);
-    public android.view.ViewPropertyAnimator rotationYBy(float);
-    public android.view.ViewPropertyAnimator scaleX(float);
-    public android.view.ViewPropertyAnimator scaleXBy(float);
-    public android.view.ViewPropertyAnimator scaleY(float);
-    public android.view.ViewPropertyAnimator scaleYBy(float);
-    public android.view.ViewPropertyAnimator setDuration(long);
-    public android.view.ViewPropertyAnimator setInterpolator(android.animation.TimeInterpolator);
-    public android.view.ViewPropertyAnimator setListener(android.animation.Animator$AnimatorListener);
-    public android.view.ViewPropertyAnimator setStartDelay(long);
-    public android.view.ViewPropertyAnimator setUpdateListener(android.animation.ValueAnimator$AnimatorUpdateListener);
-    public void start();
-    public android.view.ViewPropertyAnimator translationX(float);
-    public android.view.ViewPropertyAnimator translationXBy(float);
-    public android.view.ViewPropertyAnimator translationY(float);
-    public android.view.ViewPropertyAnimator translationYBy(float);
-    public android.view.ViewPropertyAnimator translationZ(float);
-    public android.view.ViewPropertyAnimator translationZBy(float);
-    public android.view.ViewPropertyAnimator withEndAction(java.lang.Runnable);
-    public android.view.ViewPropertyAnimator withLayer();
-    public android.view.ViewPropertyAnimator withStartAction(java.lang.Runnable);
-    public android.view.ViewPropertyAnimator x(float);
-    public android.view.ViewPropertyAnimator xBy(float);
-    public android.view.ViewPropertyAnimator y(float);
-    public android.view.ViewPropertyAnimator yBy(float);
-    public android.view.ViewPropertyAnimator z(float);
-    public android.view.ViewPropertyAnimator zBy(float);
-
-
-}
-
--keep class android.view.ViewRootImpl {
-    <init>(android.content.Context, android.view.Display);
-
-    public static void addConfigCallback(android.view.ViewRootImpl$ConfigChangedCallback);
-    public static void addFirstDrawHandler(java.lang.Runnable);
-    public void addWindowCallbacks(android.view.WindowCallbacks);
-    public void bringChildToFront(android.view.View);
-    public boolean canResolveLayoutDirection();
-    public boolean canResolveTextAlignment();
-    public boolean canResolveTextDirection();
-    public void cancelInvalidate(android.view.View);
-    public void childDrawableStateChanged(android.view.View);
-    public void childHasTransientStateChanged(android.view.View, boolean);
-    public void clearChildFocus(android.view.View);
-    public void createContextMenu(android.view.ContextMenu);
-    public void debug();
-    public void detachFunctor(long);
-    public void dispatchAppVisibility(boolean);
-    public void dispatchCheckFocus();
-    public void dispatchCloseSystemDialogs(java.lang.String);
-    public void dispatchDragEvent(android.view.DragEvent);
-    public void dispatchGetNewSurface();
-    public void dispatchInputEvent(android.view.InputEvent);
-    public void dispatchInputEvent(android.view.InputEvent, android.view.InputEventReceiver);
-    public void dispatchInvalidateDelayed(android.view.View, long);
-    public void dispatchInvalidateOnAnimation(android.view.View);
-    public void dispatchInvalidateRectDelayed(android.view.View$AttachInfo$InvalidateInfo, long);
-    public void dispatchInvalidateRectOnAnimation(android.view.View$AttachInfo$InvalidateInfo);
-    public void dispatchKeyFromAutofill(android.view.KeyEvent);
-    public void dispatchKeyFromIme(android.view.KeyEvent);
-    public void dispatchMoved(int, int);
-    public void dispatchPointerCaptureChanged(boolean);
-    public void dispatchRequestKeyboardShortcuts(com.android.internal.os.IResultReceiver, int);
-    public void dispatchSystemUiVisibilityChanged(int, int, int, int);
-    public void dispatchUnhandledInputEvent(android.view.InputEvent);
-    public boolean dispatchUnhandledKeyEvent(android.view.KeyEvent);
-    public void dispatchWindowShown();
-    public void dump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
-    public void dumpGfxInfo(int[]);
-    public android.view.View focusSearch(android.view.View, int);
-    public void focusableViewAvailable(android.view.View);
-    public android.view.View getAccessibilityFocusedHost();
-    public android.view.accessibility.AccessibilityNodeInfo getAccessibilityFocusedVirtualView();
-    public android.view.AccessibilityInteractionController getAccessibilityInteractionController();
-    public boolean getChildVisibleRect(android.view.View, android.graphics.Rect, android.graphics.Point);
-    public int getDisplayId();
-    public int getHeight();
-    public void getLastTouchPoint(android.graphics.Point);
-    public int getLastTouchSource();
-    public int getLayoutDirection();
-    public android.view.ViewParent getParent();
-    public android.view.ViewParent getParentForAccessibility();
-    public int getTextAlignment();
-    public int getTextDirection();
-    public java.lang.CharSequence getTitle();
-    public android.view.View getView();
-    public int getWidth();
-    public int getWindowFlags();
-    public void handleDispatchSystemUiVisibilityChanged(android.view.ViewRootImpl$SystemUiVisibilityInfo);
-    public void handleDispatchWindowShown();
-    public void handleRequestKeyboardShortcuts(com.android.internal.os.IResultReceiver, int);
-    public void invalidateChild(android.view.View, android.graphics.Rect);
-    public android.view.ViewParent invalidateChildInParent(int[], android.graphics.Rect);
-    public static void invokeFunctor(long, boolean);
-    public boolean isLayoutDirectionResolved();
-    public boolean isLayoutRequested();
-    public boolean isTextAlignmentResolved();
-    public boolean isTextDirectionResolved();
-    public static boolean isViewDescendantOf(android.view.View, android.view.View);
-    public android.view.View keyboardNavigationClusterSearch(android.view.View, int);
-    public void loadSystemProperties();
-    public void notifyChildRebuilt();
-    public void notifySubtreeAccessibilityStateChanged(android.view.View, android.view.View, int);
-    public void onDescendantInvalidated(android.view.View, android.view.View);
-    public void onMovedToDisplay(int, android.content.res.Configuration);
-    public boolean onNestedFling(android.view.View, float, float, boolean);
-    public boolean onNestedPreFling(android.view.View, float, float);
-    public boolean onNestedPrePerformAccessibilityAction(android.view.View, int, android.os.Bundle);
-    public void onNestedPreScroll(android.view.View, int, int, int[]);
-    public void onNestedScroll(android.view.View, int, int, int, int);
-    public void onNestedScrollAccepted(android.view.View, android.view.View, int);
-    public void onPostDraw(android.view.DisplayListCanvas);
-    public void onPreDraw(android.view.DisplayListCanvas);
-    public boolean onStartNestedScroll(android.view.View, android.view.View, int);
-    public void onStopNestedScroll(android.view.View);
-    public void onWindowTitleChanged();
-    public boolean performHapticFeedback(int, boolean);
-    public void playSoundEffect(int);
-    public void profile();
-    public void recomputeViewAttributes(android.view.View);
-    public void registerAnimatingRenderNode(android.view.RenderNode);
-    public void registerRtFrameCallback(android.view.ThreadedRenderer$FrameDrawingCallback);
-    public void registerVectorDrawableAnimator(android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT);
-    public void removeWindowCallbacks(android.view.WindowCallbacks);
-    public void reportActivityRelaunched();
-    public void reportDrawFinish();
-    public void requestChildFocus(android.view.View, android.view.View);
-    public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    public void requestDisallowInterceptTouchEvent(boolean);
-    public void requestFitSystemWindows();
-    public void requestInvalidateRootRenderNode();
-    public void requestLayout();
-    public boolean requestSendAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public void requestTransitionStart(android.animation.LayoutTransition);
-    public void requestTransparentRegion(android.view.View);
-    public void requestUpdateConfiguration(android.content.res.Configuration);
-    public void setActivityConfigCallback(android.view.ViewRootImpl$ActivityConfigCallback);
-    public void setDragFocus(android.view.View, android.view.DragEvent);
-    public void setIsAmbientMode(boolean);
-    public void setPausedForTransition(boolean);
-    public void setReportNextDraw();
-    public void setView(android.view.View, android.view.WindowManager$LayoutParams, android.view.View);
-    public boolean showContextMenuForChild(android.view.View);
-    public boolean showContextMenuForChild(android.view.View, float, float);
-    public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode$Callback);
-    public android.view.ActionMode startActionModeForChild(android.view.View, android.view.ActionMode$Callback, int);
-    public void synthesizeInputEvent(android.view.InputEvent);
-    public void updateConfiguration(int);
-    public void updatePointerIcon(float, float);
-    public void windowFocusChanged(boolean, boolean);
-
-
-    public static java.lang.String PROPERTY_EMULATOR_WIN_OUTSET_BOTTOM_PX;
-    protected android.view.InputEventConsistencyVerifier mInputEventConsistencyVerifier;
-    public boolean mIsAnimating;
-    public android.view.Surface mSurface;
-    public boolean mTraversalScheduled;
-    public android.view.WindowManager$LayoutParams mWindowAttributes;
-}
-
--keep class android.view.ViewRootImpl$ActivityConfigCallback {
-
-    public abstract void onConfigurationChanged(android.content.res.Configuration, int);
-
-
-}
-
--keep class android.view.ViewRootImpl$ConfigChangedCallback {
-
-    public abstract void onConfigurationChanged(android.content.res.Configuration);
-
-
-}
-
--keep class android.view.ViewRootImpl$SystemUiVisibilityInfo {
-
-
-
-}
-
--keep class android.view.ViewStructure {
-    <init>();
-
-    public abstract int addChildCount(int);
-    public abstract void asyncCommit();
-    public abstract android.view.ViewStructure asyncNewChild(int);
-    public abstract android.view.autofill.AutofillId getAutofillId();
-    public abstract int getChildCount();
-    public abstract android.os.Bundle getExtras();
-    public abstract java.lang.CharSequence getHint();
-    public abstract android.graphics.Rect getTempRect();
-    public abstract java.lang.CharSequence getText();
-    public abstract int getTextSelectionEnd();
-    public abstract int getTextSelectionStart();
-    public abstract boolean hasExtras();
-    public abstract android.view.ViewStructure newChild(int);
-    public abstract android.view.ViewStructure$HtmlInfo$Builder newHtmlInfoBuilder(java.lang.String);
-    public abstract void setAccessibilityFocused(boolean);
-    public abstract void setActivated(boolean);
-    public abstract void setAlpha(float);
-    public abstract void setAssistBlocked(boolean);
-    public abstract void setAutofillHints(java.lang.String[]);
-    public abstract void setAutofillId(android.view.autofill.AutofillId);
-    public abstract void setAutofillId(android.view.autofill.AutofillId, int);
-    public abstract void setAutofillOptions(java.lang.CharSequence[]);
-    public abstract void setAutofillType(int);
-    public abstract void setAutofillValue(android.view.autofill.AutofillValue);
-    public abstract void setCheckable(boolean);
-    public abstract void setChecked(boolean);
-    public abstract void setChildCount(int);
-    public abstract void setClassName(java.lang.String);
-    public abstract void setClickable(boolean);
-    public abstract void setContentDescription(java.lang.CharSequence);
-    public abstract void setContextClickable(boolean);
-    public abstract void setDataIsSensitive(boolean);
-    public abstract void setDimens(int, int, int, int, int, int);
-    public abstract void setElevation(float);
-    public abstract void setEnabled(boolean);
-    public abstract void setFocusable(boolean);
-    public abstract void setFocused(boolean);
-    public abstract void setHint(java.lang.CharSequence);
-    public abstract void setHtmlInfo(android.view.ViewStructure$HtmlInfo);
-    public abstract void setId(int, java.lang.String, java.lang.String, java.lang.String);
-    public void setImportantForAutofill(int);
-    public abstract void setInputType(int);
-    public abstract void setLocaleList(android.os.LocaleList);
-    public abstract void setLongClickable(boolean);
-    public void setMaxTextEms(int);
-    public void setMaxTextLength(int);
-    public void setMinTextEms(int);
-    public abstract void setOpaque(boolean);
-    public abstract void setSelected(boolean);
-    public abstract void setText(java.lang.CharSequence);
-    public abstract void setText(java.lang.CharSequence, int, int);
-    public void setTextIdEntry(java.lang.String);
-    public abstract void setTextLines(int[], int[]);
-    public abstract void setTextStyle(float, int, int, int);
-    public abstract void setTransformation(android.graphics.Matrix);
-    public abstract void setVisibility(int);
-    public abstract void setWebDomain(java.lang.String);
-
-
-}
-
--keep class android.view.ViewStructure$HtmlInfo {
-    <init>();
-
-    public abstract java.util.List getAttributes();
-    public abstract java.lang.String getTag();
-
-
-}
-
--keep class android.view.ViewStructure$HtmlInfo$Builder {
-    <init>();
-
-    public abstract android.view.ViewStructure$HtmlInfo$Builder addAttribute(java.lang.String, java.lang.String);
-    public abstract android.view.ViewStructure$HtmlInfo build();
-
-
-}
-
--keep class android.view.ViewTreeObserver {
-
-    public void addOnComputeInternalInsetsListener(android.view.ViewTreeObserver$OnComputeInternalInsetsListener);
-    public void addOnDrawListener(android.view.ViewTreeObserver$OnDrawListener);
-    public void addOnEnterAnimationCompleteListener(android.view.ViewTreeObserver$OnEnterAnimationCompleteListener);
-    public void addOnGlobalFocusChangeListener(android.view.ViewTreeObserver$OnGlobalFocusChangeListener);
-    public void addOnGlobalLayoutListener(android.view.ViewTreeObserver$OnGlobalLayoutListener);
-    public void addOnPreDrawListener(android.view.ViewTreeObserver$OnPreDrawListener);
-    public void addOnScrollChangedListener(android.view.ViewTreeObserver$OnScrollChangedListener);
-    public void addOnTouchModeChangeListener(android.view.ViewTreeObserver$OnTouchModeChangeListener);
-    public void addOnWindowAttachListener(android.view.ViewTreeObserver$OnWindowAttachListener);
-    public void addOnWindowFocusChangeListener(android.view.ViewTreeObserver$OnWindowFocusChangeListener);
-    public void addOnWindowShownListener(android.view.ViewTreeObserver$OnWindowShownListener);
-    public void dispatchOnDraw();
-    public void dispatchOnEnterAnimationComplete();
-    public void dispatchOnGlobalLayout();
-    public boolean dispatchOnPreDraw();
-    public void dispatchOnWindowShown();
-    public boolean isAlive();
-    public void removeGlobalOnLayoutListener(android.view.ViewTreeObserver$OnGlobalLayoutListener);
-    public void removeOnComputeInternalInsetsListener(android.view.ViewTreeObserver$OnComputeInternalInsetsListener);
-    public void removeOnDrawListener(android.view.ViewTreeObserver$OnDrawListener);
-    public void removeOnEnterAnimationCompleteListener(android.view.ViewTreeObserver$OnEnterAnimationCompleteListener);
-    public void removeOnGlobalFocusChangeListener(android.view.ViewTreeObserver$OnGlobalFocusChangeListener);
-    public void removeOnGlobalLayoutListener(android.view.ViewTreeObserver$OnGlobalLayoutListener);
-    public void removeOnPreDrawListener(android.view.ViewTreeObserver$OnPreDrawListener);
-    public void removeOnScrollChangedListener(android.view.ViewTreeObserver$OnScrollChangedListener);
-    public void removeOnTouchModeChangeListener(android.view.ViewTreeObserver$OnTouchModeChangeListener);
-    public void removeOnWindowAttachListener(android.view.ViewTreeObserver$OnWindowAttachListener);
-    public void removeOnWindowFocusChangeListener(android.view.ViewTreeObserver$OnWindowFocusChangeListener);
-    public void removeOnWindowShownListener(android.view.ViewTreeObserver$OnWindowShownListener);
-
-
-}
-
--keep class android.view.ViewTreeObserver$InternalInsetsInfo {
-    <init>();
-
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public void setTouchableInsets(int);
-
-
-    public static int TOUCHABLE_INSETS_CONTENT;
-    public static int TOUCHABLE_INSETS_FRAME;
-    public static int TOUCHABLE_INSETS_REGION;
-    public static int TOUCHABLE_INSETS_VISIBLE;
-    public android.graphics.Rect contentInsets;
-    public android.graphics.Region touchableRegion;
-    public android.graphics.Rect visibleInsets;
-}
-
--keep class android.view.ViewTreeObserver$OnComputeInternalInsetsListener {
-
-    public abstract void onComputeInternalInsets(android.view.ViewTreeObserver$InternalInsetsInfo);
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnDrawListener {
-
-    public abstract void onDraw();
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnEnterAnimationCompleteListener {
-
-    public abstract void onEnterAnimationComplete();
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnGlobalFocusChangeListener {
-
-    public abstract void onGlobalFocusChanged(android.view.View, android.view.View);
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnGlobalLayoutListener {
-
-    public abstract void onGlobalLayout();
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnPreDrawListener {
-
-    public abstract boolean onPreDraw();
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnScrollChangedListener {
-
-    public abstract void onScrollChanged();
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnTouchModeChangeListener {
-
-    public abstract void onTouchModeChanged(boolean);
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnWindowAttachListener {
-
-    public abstract void onWindowAttached();
-    public abstract void onWindowDetached();
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnWindowFocusChangeListener {
-
-    public abstract void onWindowFocusChanged(boolean);
-
-
-}
-
--keep class android.view.ViewTreeObserver$OnWindowShownListener {
-
-    public abstract void onWindowShown();
-
-
-}
-
--keep class android.view.Window {
-    <init>(android.content.Context);
-
-    public abstract void addContentView(android.view.View, android.view.ViewGroup$LayoutParams);
-    public void addFlags(int);
-    public void addOnFrameMetricsAvailableListener(android.view.Window$OnFrameMetricsAvailableListener, android.os.Handler);
-    public void addPrivateFlags(int);
-    public abstract void alwaysReadCloseOnTouchAttr();
-    public abstract void clearContentView();
-    public void clearFlags(int);
-    public abstract void closeAllPanels();
-    public abstract void closePanel(int);
-    public void destroy();
-    public void dispatchOnWindowDismissed(boolean, boolean);
-    public void dispatchOnWindowSwipeDismissed();
-    protected void dispatchWindowAttributesChanged(android.view.WindowManager$LayoutParams);
-    public android.view.View findViewById(int);
-    public boolean getAllowEnterTransitionOverlap();
-    public boolean getAllowReturnTransitionOverlap();
-    public android.view.WindowManager$LayoutParams getAttributes();
-    public android.view.Window$Callback getCallback();
-    public int getColorMode();
-    public android.view.Window getContainer();
-    public android.transition.Scene getContentScene();
-    public android.content.Context getContext();
-    public abstract android.view.View getCurrentFocus();
-    public abstract android.view.View getDecorView();
-    public static int getDefaultFeatures(android.content.Context);
-    public float getElevation();
-    public android.transition.Transition getEnterTransition();
-    public android.transition.Transition getExitTransition();
-    protected int getFeatures();
-    protected int getForcedWindowFlags();
-    public abstract android.view.LayoutInflater getLayoutInflater();
-    protected int getLocalFeatures();
-    public android.media.session.MediaController getMediaController();
-    public abstract int getNavigationBarColor();
-    public int getNavigationBarDividerColor();
-    public android.transition.Transition getReenterTransition();
-    public android.transition.Transition getReturnTransition();
-    public android.transition.Transition getSharedElementEnterTransition();
-    public android.transition.Transition getSharedElementExitTransition();
-    public android.transition.Transition getSharedElementReenterTransition();
-    public android.transition.Transition getSharedElementReturnTransition();
-    public boolean getSharedElementsUseOverlay();
-    public abstract int getStatusBarColor();
-    public long getTransitionBackgroundFadeDuration();
-    public android.transition.TransitionManager getTransitionManager();
-    public abstract int getVolumeControlStream();
-    public android.view.Window$WindowControllerCallback getWindowControllerCallback();
-    public android.view.WindowManager getWindowManager();
-    public android.content.res.TypedArray getWindowStyle();
-    public boolean hasChildren();
-    public boolean hasFeature(int);
-    protected boolean hasSoftInputMode();
-    protected boolean haveDimAmount();
-    public void injectInputEvent(android.view.InputEvent);
-    public abstract void invalidatePanelMenu(int);
-    public boolean isActive();
-    public boolean isCloseOnSwipeEnabled();
-    public boolean isDestroyed();
-    public abstract boolean isFloating();
-    public boolean isOverlayWithDecorCaptionEnabled();
-    public abstract boolean isShortcutKey(int, android.view.KeyEvent);
-    public boolean isWideColorGamut();
-    public void makeActive();
-    public void notifyRestrictedCaptionAreaCallback(int, int, int, int);
-    protected abstract void onActive();
-    public abstract void onConfigurationChanged(android.content.res.Configuration);
-    public abstract void onMultiWindowModeChanged();
-    public abstract void onPictureInPictureModeChanged(boolean);
-    public abstract void openPanel(int, android.view.KeyEvent);
-    public abstract android.view.View peekDecorView();
-    public abstract boolean performContextMenuIdentifierAction(int, int);
-    public abstract boolean performPanelIdentifierAction(int, int, int);
-    public abstract boolean performPanelShortcut(int, int, android.view.KeyEvent, int);
-    protected void removeFeature(int);
-    public void removeOnFrameMetricsAvailableListener(android.view.Window$OnFrameMetricsAvailableListener);
-    public abstract void reportActivityRelaunched();
-    public boolean requestFeature(int);
-    public android.view.View requireViewById(int);
-    public abstract void restoreHierarchyState(android.os.Bundle);
-    public abstract android.os.Bundle saveHierarchyState();
-    public void setAllowEnterTransitionOverlap(boolean);
-    public void setAllowReturnTransitionOverlap(boolean);
-    public void setAttributes(android.view.WindowManager$LayoutParams);
-    public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    public void setBackgroundDrawableResource(int);
-    public void setCallback(android.view.Window$Callback);
-    public abstract void setChildDrawable(int, android.graphics.drawable.Drawable);
-    public abstract void setChildInt(int, int);
-    public void setClipToOutline(boolean);
-    public void setCloseOnSwipeEnabled(boolean);
-    public void setCloseOnTouchOutside(boolean);
-    public void setCloseOnTouchOutsideIfNotSet(boolean);
-    public void setColorMode(int);
-    public void setContainer(android.view.Window);
-    public abstract void setContentView(int);
-    public abstract void setContentView(android.view.View);
-    public abstract void setContentView(android.view.View, android.view.ViewGroup$LayoutParams);
-    public abstract void setDecorCaptionShade(int);
-    public void setDefaultIcon(int);
-    public void setDefaultLogo(int);
-    protected void setDefaultWindowFormat(int);
-    public void setDimAmount(float);
-    public void setElevation(float);
-    public void setEnterTransition(android.transition.Transition);
-    public void setExitTransition(android.transition.Transition);
-    public abstract void setFeatureDrawable(int, android.graphics.drawable.Drawable);
-    public abstract void setFeatureDrawableAlpha(int, int);
-    public abstract void setFeatureDrawableResource(int, int);
-    public abstract void setFeatureDrawableUri(int, android.net.Uri);
-    public abstract void setFeatureInt(int, int);
-    public void setFlags(int, int);
-    public void setFormat(int);
-    public void setGravity(int);
-    public void setIcon(int);
-    public void setLayout(int, int);
-    public void setLocalFocus(boolean, boolean);
-    public void setLogo(int);
-    public void setMediaController(android.media.session.MediaController);
-    public abstract void setNavigationBarColor(int);
-    public void setNavigationBarDividerColor(int);
-    protected void setNeedsMenuKey(int);
-    public void setOnWindowDismissedCallback(android.view.Window$OnWindowDismissedCallback);
-    public void setOnWindowSwipeDismissedCallback(android.view.Window$OnWindowSwipeDismissedCallback);
-    public void setOverlayWithDecorCaptionEnabled(boolean);
-    public void setReenterTransition(android.transition.Transition);
-    public abstract void setResizingCaptionDrawable(android.graphics.drawable.Drawable);
-    public void setRestrictedCaptionAreaListener(android.view.Window$OnRestrictedCaptionAreaChangedListener);
-    public void setReturnTransition(android.transition.Transition);
-    public void setSharedElementEnterTransition(android.transition.Transition);
-    public void setSharedElementExitTransition(android.transition.Transition);
-    public void setSharedElementReenterTransition(android.transition.Transition);
-    public void setSharedElementReturnTransition(android.transition.Transition);
-    public void setSharedElementsUseOverlay(boolean);
-    public void setSoftInputMode(int);
-    public abstract void setStatusBarColor(int);
-    public void setSustainedPerformanceMode(boolean);
-    public void setTheme(int);
-    public abstract void setTitle(java.lang.CharSequence);
-    public abstract void setTitleColor(int);
-    public void setTransitionBackgroundFadeDuration(long);
-    public void setTransitionManager(android.transition.TransitionManager);
-    public void setType(int);
-    public void setUiOptions(int);
-    public void setUiOptions(int, int);
-    public abstract void setVolumeControlStream(int);
-    public void setWindowAnimations(int);
-    public void setWindowControllerCallback(android.view.Window$WindowControllerCallback);
-    public void setWindowManager(android.view.WindowManager, android.os.IBinder, java.lang.String);
-    public void setWindowManager(android.view.WindowManager, android.os.IBinder, java.lang.String, boolean);
-    public boolean shouldCloseOnTouch(android.content.Context, android.view.MotionEvent);
-    public abstract boolean superDispatchGenericMotionEvent(android.view.MotionEvent);
-    public abstract boolean superDispatchKeyEvent(android.view.KeyEvent);
-    public abstract boolean superDispatchKeyShortcutEvent(android.view.KeyEvent);
-    public abstract boolean superDispatchTouchEvent(android.view.MotionEvent);
-    public abstract boolean superDispatchTrackballEvent(android.view.MotionEvent);
-    public abstract void takeInputQueue(android.view.InputQueue$Callback);
-    public abstract void takeKeyEvents(boolean);
-    public abstract void takeSurface(android.view.SurfaceHolder$Callback2);
-    public abstract void togglePanel(int, android.view.KeyEvent);
-
-
-    public static int DECOR_CAPTION_SHADE_AUTO;
-    public static int DECOR_CAPTION_SHADE_DARK;
-    public static int DECOR_CAPTION_SHADE_LIGHT;
-    protected static int DEFAULT_FEATURES;
-    public static int FEATURE_ACTION_BAR;
-    public static int FEATURE_ACTION_BAR_OVERLAY;
-    public static int FEATURE_ACTION_MODE_OVERLAY;
-    public static int FEATURE_ACTIVITY_TRANSITIONS;
-    public static int FEATURE_CONTENT_TRANSITIONS;
-    public static int FEATURE_CONTEXT_MENU;
-    public static int FEATURE_CUSTOM_TITLE;
-    public static int FEATURE_INDETERMINATE_PROGRESS;
-    public static int FEATURE_LEFT_ICON;
-    public static int FEATURE_MAX;
-    public static int FEATURE_NO_TITLE;
-    public static int FEATURE_OPTIONS_PANEL;
-    public static int FEATURE_PROGRESS;
-    public static int FEATURE_RIGHT_ICON;
-    public static int FEATURE_SWIPE_TO_DISMISS;
-    public static int ID_ANDROID_CONTENT;
-    public static java.lang.String NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME;
-    public static int PROGRESS_END;
-    public static int PROGRESS_INDETERMINATE_OFF;
-    public static int PROGRESS_INDETERMINATE_ON;
-    public static int PROGRESS_SECONDARY_END;
-    public static int PROGRESS_SECONDARY_START;
-    public static int PROGRESS_START;
-    public static int PROGRESS_VISIBILITY_OFF;
-    public static int PROGRESS_VISIBILITY_ON;
-    public static java.lang.String STATUS_BAR_BACKGROUND_TRANSITION_NAME;
-}
-
--keep class android.view.Window$Callback {
-
-    public abstract boolean dispatchGenericMotionEvent(android.view.MotionEvent);
-    public abstract boolean dispatchKeyEvent(android.view.KeyEvent);
-    public abstract boolean dispatchKeyShortcutEvent(android.view.KeyEvent);
-    public abstract boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
-    public abstract boolean dispatchTouchEvent(android.view.MotionEvent);
-    public abstract boolean dispatchTrackballEvent(android.view.MotionEvent);
-    public abstract void onActionModeFinished(android.view.ActionMode);
-    public abstract void onActionModeStarted(android.view.ActionMode);
-    public abstract void onAttachedToWindow();
-    public abstract void onContentChanged();
-    public abstract boolean onCreatePanelMenu(int, android.view.Menu);
-    public abstract android.view.View onCreatePanelView(int);
-    public abstract void onDetachedFromWindow();
-    public abstract boolean onMenuItemSelected(int, android.view.MenuItem);
-    public abstract boolean onMenuOpened(int, android.view.Menu);
-    public abstract void onPanelClosed(int, android.view.Menu);
-    public void onPointerCaptureChanged(boolean);
-    public abstract boolean onPreparePanel(int, android.view.View, android.view.Menu);
-    public void onProvideKeyboardShortcuts(java.util.List, android.view.Menu, int);
-    public abstract boolean onSearchRequested();
-    public abstract boolean onSearchRequested(android.view.SearchEvent);
-    public abstract void onWindowAttributesChanged(android.view.WindowManager$LayoutParams);
-    public abstract void onWindowFocusChanged(boolean);
-    public abstract android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode$Callback);
-    public abstract android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode$Callback, int);
-
-
-}
-
--keep class android.view.Window$OnFrameMetricsAvailableListener {
-
-    public abstract void onFrameMetricsAvailable(android.view.Window, android.view.FrameMetrics, int);
-
-
-}
-
--keep class android.view.Window$OnRestrictedCaptionAreaChangedListener {
-
-    public abstract void onRestrictedCaptionAreaChanged(android.graphics.Rect);
-
-
-}
-
--keep class android.view.Window$OnWindowDismissedCallback {
-
-    public abstract void onWindowDismissed(boolean, boolean);
-
-
-}
-
--keep class android.view.Window$OnWindowSwipeDismissedCallback {
-
-    public abstract void onWindowSwipeDismissed();
-
-
-}
-
--keep class android.view.Window$WindowControllerCallback {
-
-    public abstract void enterPictureInPictureModeIfPossible();
-    public abstract void exitFreeformMode();
-    public abstract boolean isTaskRoot();
-
-
-}
-
--keep class android.view.WindowAnimationFrameStats {
-    <init>();
-
-    public int describeContents();
-    public void init(long, long[]);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.WindowCallbacks {
-
-    public abstract boolean onContentDrawn(int, int, int, int);
-    public abstract void onPostDraw(android.view.DisplayListCanvas);
-    public abstract void onRequestDraw(boolean);
-    public abstract void onWindowDragResizeEnd();
-    public abstract void onWindowDragResizeStart(android.graphics.Rect, boolean, android.graphics.Rect, android.graphics.Rect, int);
-    public abstract void onWindowSizeIsChanging(android.graphics.Rect, boolean, android.graphics.Rect, android.graphics.Rect);
-
-
-    public static int RESIZE_MODE_DOCKED_DIVIDER;
-    public static int RESIZE_MODE_FREEFORM;
-    public static int RESIZE_MODE_INVALID;
-}
-
--keep class android.view.WindowContentFrameStats {
-    <init>();
-
-    public int describeContents();
-    public long getFramePostedTimeNano(int);
-    public long getFrameReadyTimeNano(int);
-    public void init(long, long[], long[], long[]);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.WindowId {
-    <init>(android.view.IWindowId);
-    <init>(android.os.IBinder);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public android.view.IWindowId getTarget();
-    public int hashCode();
-    public boolean isFocused();
-    public void registerFocusObserver(android.view.WindowId$FocusObserver);
-    public java.lang.String toString();
-    public void unregisterFocusObserver(android.view.WindowId$FocusObserver);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.WindowId$FocusObserver {
-    <init>();
-
-    public abstract void onFocusGained(android.view.WindowId);
-    public abstract void onFocusLost(android.view.WindowId);
-
-
-}
-
--keep class android.view.WindowInsets {
-    <init>(android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, boolean, boolean, android.view.DisplayCutout);
-    <init>(android.view.WindowInsets);
-    <init>(android.graphics.Rect);
-
-    public android.view.WindowInsets consumeDisplayCutout();
-    public android.view.WindowInsets consumeStableInsets();
-    public android.view.WindowInsets consumeSystemWindowInsets();
-    public android.view.WindowInsets consumeSystemWindowInsets(boolean, boolean, boolean, boolean);
-    public android.view.WindowInsets consumeWindowDecorInsets();
-    public android.view.WindowInsets consumeWindowDecorInsets(boolean, boolean, boolean, boolean);
-    public boolean equals(java.lang.Object);
-    public android.view.DisplayCutout getDisplayCutout();
-    public int getStableInsetBottom();
-    public int getStableInsetLeft();
-    public int getStableInsetRight();
-    public int getStableInsetTop();
-    public int getSystemWindowInsetBottom();
-    public int getSystemWindowInsetLeft();
-    public int getSystemWindowInsetRight();
-    public int getSystemWindowInsetTop();
-    public android.graphics.Rect getSystemWindowInsets();
-    public int getWindowDecorInsetBottom();
-    public int getWindowDecorInsetLeft();
-    public int getWindowDecorInsetRight();
-    public int getWindowDecorInsetTop();
-    public boolean hasInsets();
-    public boolean hasStableInsets();
-    public boolean hasSystemWindowInsets();
-    public boolean hasWindowDecorInsets();
-    public int hashCode();
-    public android.view.WindowInsets inset(android.graphics.Rect);
-    public android.view.WindowInsets inset(int, int, int, int);
-    public boolean isConsumed();
-    public boolean isRound();
-    public android.view.WindowInsets replaceSystemWindowInsets(int, int, int, int);
-    public android.view.WindowInsets replaceSystemWindowInsets(android.graphics.Rect);
-    public android.view.WindowInsets replaceWindowDecorInsets(int, int, int, int);
-    public boolean shouldAlwaysConsumeNavBar();
-    public java.lang.String toString();
-
-
-    public static android.view.WindowInsets CONSUMED;
-}
-
--keep class android.view.WindowManager {
-
-    public abstract android.graphics.Region getCurrentImeTouchRegion();
-    public abstract android.view.Display getDefaultDisplay();
-    public abstract void removeViewImmediate(android.view.View);
-    public abstract void requestAppKeyboardShortcuts(android.view.WindowManager$KeyboardShortcutsReceiver, int);
-
-
-    public static int DOCKED_BOTTOM;
-    public static int DOCKED_INVALID;
-    public static int DOCKED_LEFT;
-    public static int DOCKED_RIGHT;
-    public static int DOCKED_TOP;
-    public static java.lang.String INPUT_CONSUMER_NAVIGATION;
-    public static java.lang.String INPUT_CONSUMER_PIP;
-    public static java.lang.String INPUT_CONSUMER_RECENTS_ANIMATION;
-    public static java.lang.String INPUT_CONSUMER_WALLPAPER;
-    public static java.lang.String PARCEL_KEY_SHORTCUTS_ARRAY;
-    public static int TAKE_SCREENSHOT_FULLSCREEN;
-    public static int TAKE_SCREENSHOT_SELECTED_REGION;
-    public static int TRANSIT_ACTIVITY_CLOSE;
-    public static int TRANSIT_ACTIVITY_OPEN;
-    public static int TRANSIT_ACTIVITY_RELAUNCH;
-    public static int TRANSIT_CRASHING_ACTIVITY_CLOSE;
-    public static int TRANSIT_DOCK_TASK_FROM_RECENTS;
-    public static int TRANSIT_FLAG_KEYGUARD_GOING_AWAY_NO_ANIMATION;
-    public static int TRANSIT_FLAG_KEYGUARD_GOING_AWAY_TO_SHADE;
-    public static int TRANSIT_FLAG_KEYGUARD_GOING_AWAY_WITH_WALLPAPER;
-    public static int TRANSIT_KEYGUARD_GOING_AWAY;
-    public static int TRANSIT_KEYGUARD_GOING_AWAY_ON_WALLPAPER;
-    public static int TRANSIT_KEYGUARD_OCCLUDE;
-    public static int TRANSIT_KEYGUARD_UNOCCLUDE;
-    public static int TRANSIT_NONE;
-    public static int TRANSIT_TASK_CLOSE;
-    public static int TRANSIT_TASK_IN_PLACE;
-    public static int TRANSIT_TASK_OPEN;
-    public static int TRANSIT_TASK_OPEN_BEHIND;
-    public static int TRANSIT_TASK_TO_BACK;
-    public static int TRANSIT_TASK_TO_FRONT;
-    public static int TRANSIT_TRANSLUCENT_ACTIVITY_CLOSE;
-    public static int TRANSIT_TRANSLUCENT_ACTIVITY_OPEN;
-    public static int TRANSIT_UNSET;
-    public static int TRANSIT_WALLPAPER_CLOSE;
-    public static int TRANSIT_WALLPAPER_INTRA_CLOSE;
-    public static int TRANSIT_WALLPAPER_INTRA_OPEN;
-    public static int TRANSIT_WALLPAPER_OPEN;
-}
-
--keep class android.view.WindowManager$KeyboardShortcutsReceiver {
-
-    public abstract void onKeyboardShortcutsReceived(java.util.List);
-
-
-}
-
--keep class android.view.WindowManager$LayoutParams {
-    <init>();
-    <init>(int);
-    <init>(int, int);
-    <init>(int, int, int);
-    <init>(int, int, int, int, int);
-    <init>(int, int, int, int, int, int, int);
-    <init>(android.os.Parcel);
-
-    public int copyFrom(android.view.WindowManager$LayoutParams);
-    public java.lang.String debug(java.lang.String);
-    public int describeContents();
-    public void dumpDimensions(java.lang.StringBuilder);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    public int getColorMode();
-    public java.lang.CharSequence getTitle();
-    public long getUserActivityTimeout();
-    public boolean isFullscreen();
-    public static boolean isSystemAlertWindowType(int);
-    public static boolean mayUseInputMethod(int);
-    public void scale(float);
-    public void setColorMode(int);
-    public void setSurfaceInsets(android.view.View, boolean, boolean);
-    public void setTitle(java.lang.CharSequence);
-    public void setUserActivityTimeout(long);
-    public java.lang.String toString();
-    public java.lang.String toString(java.lang.String);
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToProto(android.util.proto.ProtoOutputStream, long);
-
-
-    public static int ACCESSIBILITY_ANCHOR_CHANGED;
-    public static int ACCESSIBILITY_TITLE_CHANGED;
-    public static int ALPHA_CHANGED;
-    public static int ANIMATION_CHANGED;
-    public static float BRIGHTNESS_OVERRIDE_FULL;
-    public static float BRIGHTNESS_OVERRIDE_NONE;
-    public static float BRIGHTNESS_OVERRIDE_OFF;
-    public static int BUTTON_BRIGHTNESS_CHANGED;
-    public static int COLOR_MODE_CHANGED;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int DIM_AMOUNT_CHANGED;
-    public static int EVERYTHING_CHANGED;
-    public static int FIRST_APPLICATION_WINDOW;
-    public static int FIRST_SUB_WINDOW;
-    public static int FIRST_SYSTEM_WINDOW;
-    public static int FLAGS_CHANGED;
-    public static int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON;
-    public static int FLAG_ALT_FOCUSABLE_IM;
-    public static int FLAG_BLUR_BEHIND;
-    public static int FLAG_DIM_BEHIND;
-    public static int FLAG_DISMISS_KEYGUARD;
-    public static int FLAG_DITHER;
-    public static int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
-    public static int FLAG_FORCE_NOT_FULLSCREEN;
-    public static int FLAG_FULLSCREEN;
-    public static int FLAG_HARDWARE_ACCELERATED;
-    public static int FLAG_IGNORE_CHEEK_PRESSES;
-    public static int FLAG_KEEP_SCREEN_ON;
-    public static int FLAG_LAYOUT_ATTACHED_IN_DECOR;
-    public static int FLAG_LAYOUT_INSET_DECOR;
-    public static int FLAG_LAYOUT_IN_OVERSCAN;
-    public static int FLAG_LAYOUT_IN_SCREEN;
-    public static int FLAG_LAYOUT_NO_LIMITS;
-    public static int FLAG_LOCAL_FOCUS_MODE;
-    public static int FLAG_NOT_FOCUSABLE;
-    public static int FLAG_NOT_TOUCHABLE;
-    public static int FLAG_NOT_TOUCH_MODAL;
-    public static int FLAG_SCALED;
-    public static int FLAG_SECURE;
-    public static int FLAG_SHOW_WALLPAPER;
-    public static int FLAG_SHOW_WHEN_LOCKED;
-    public static int FLAG_SLIPPERY;
-    public static int FLAG_SPLIT_TOUCH;
-    public static int FLAG_TOUCHABLE_WHEN_WAKING;
-    public static int FLAG_TRANSLUCENT_NAVIGATION;
-    public static int FLAG_TRANSLUCENT_STATUS;
-    public static int FLAG_TURN_SCREEN_ON;
-    public static int FLAG_WATCH_OUTSIDE_TOUCH;
-    public static int FORMAT_CHANGED;
-    public static int INPUT_FEATURES_CHANGED;
-    public static int INPUT_FEATURE_DISABLE_POINTER_GESTURES;
-    public static int INPUT_FEATURE_DISABLE_USER_ACTIVITY;
-    public static int INPUT_FEATURE_NO_INPUT_CHANNEL;
-    public static int INVALID_WINDOW_TYPE;
-    public static int LAST_APPLICATION_WINDOW;
-    public static int LAST_SUB_WINDOW;
-    public static int LAST_SYSTEM_WINDOW;
-    public static int LAYOUT_CHANGED;
-    public static int LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
-    public static int LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT;
-    public static int LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
-    public static int LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
-    public static int MEMORY_TYPE_CHANGED;
-    public static int MEMORY_TYPE_GPU;
-    public static int MEMORY_TYPE_HARDWARE;
-    public static int MEMORY_TYPE_NORMAL;
-    public static int MEMORY_TYPE_PUSH_BUFFERS;
-    public static int NEEDS_MENU_KEY_CHANGED;
-    public static int NEEDS_MENU_SET_FALSE;
-    public static int NEEDS_MENU_SET_TRUE;
-    public static int NEEDS_MENU_UNSET;
-    public static int PREFERRED_DISPLAY_MODE_ID;
-    public static int PREFERRED_REFRESH_RATE_CHANGED;
-    public static int PRIVATE_FLAGS_CHANGED;
-    public static int PRIVATE_FLAG_ACQUIRES_SLEEP_TOKEN;
-    public static int PRIVATE_FLAG_COMPATIBLE_WINDOW;
-    public static int PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS;
-    public static int PRIVATE_FLAG_FAKE_HARDWARE_ACCELERATED;
-    public static int PRIVATE_FLAG_FORCE_DECOR_VIEW_VISIBILITY;
-    public static int PRIVATE_FLAG_FORCE_DRAW_STATUS_BAR_BACKGROUND;
-    public static int PRIVATE_FLAG_FORCE_HARDWARE_ACCELERATED;
-    public static int PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT;
-    public static int PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-    public static int PRIVATE_FLAG_INHERIT_TRANSLUCENT_DECOR;
-    public static int PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY;
-    public static int PRIVATE_FLAG_IS_SCREEN_DECOR;
-    public static int PRIVATE_FLAG_KEYGUARD;
-    public static int PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME;
-    public static int PRIVATE_FLAG_NO_MOVE_ANIMATION;
-    public static int PRIVATE_FLAG_PRESERVE_GEOMETRY;
-    public static int PRIVATE_FLAG_SHOW_FOR_ALL_USERS;
-    public static int PRIVATE_FLAG_SUSTAINED_PERFORMANCE_MODE;
-    public static int PRIVATE_FLAG_SYSTEM_ERROR;
-    public static int PRIVATE_FLAG_WANTS_OFFSET_NOTIFICATIONS;
-    public static int PRIVATE_FLAG_WILL_NOT_REPLACE_ON_RELAUNCH;
-    public static int ROTATION_ANIMATION_CHANGED;
-    public static int ROTATION_ANIMATION_CROSSFADE;
-    public static int ROTATION_ANIMATION_JUMPCUT;
-    public static int ROTATION_ANIMATION_ROTATE;
-    public static int ROTATION_ANIMATION_SEAMLESS;
-    public static int ROTATION_ANIMATION_UNSPECIFIED;
-    public static int SCREEN_BRIGHTNESS_CHANGED;
-    public static int SCREEN_ORIENTATION_CHANGED;
-    public static int SOFT_INPUT_ADJUST_NOTHING;
-    public static int SOFT_INPUT_ADJUST_PAN;
-    public static int SOFT_INPUT_ADJUST_RESIZE;
-    public static int SOFT_INPUT_ADJUST_UNSPECIFIED;
-    public static int SOFT_INPUT_IS_FORWARD_NAVIGATION;
-    public static int SOFT_INPUT_MASK_ADJUST;
-    public static int SOFT_INPUT_MASK_STATE;
-    public static int SOFT_INPUT_MODE_CHANGED;
-    public static int SOFT_INPUT_STATE_ALWAYS_HIDDEN;
-    public static int SOFT_INPUT_STATE_ALWAYS_VISIBLE;
-    public static int SOFT_INPUT_STATE_HIDDEN;
-    public static int SOFT_INPUT_STATE_UNCHANGED;
-    public static int SOFT_INPUT_STATE_UNSPECIFIED;
-    public static int SOFT_INPUT_STATE_VISIBLE;
-    public static int SURFACE_INSETS_CHANGED;
-    public static int SYSTEM_UI_LISTENER_CHANGED;
-    public static int SYSTEM_UI_VISIBILITY_CHANGED;
-    public static int TITLE_CHANGED;
-    public static int TRANSLUCENT_FLAGS_CHANGED;
-    public static int TYPE_ACCESSIBILITY_OVERLAY;
-    public static int TYPE_APPLICATION;
-    public static int TYPE_APPLICATION_ABOVE_SUB_PANEL;
-    public static int TYPE_APPLICATION_ATTACHED_DIALOG;
-    public static int TYPE_APPLICATION_MEDIA;
-    public static int TYPE_APPLICATION_MEDIA_OVERLAY;
-    public static int TYPE_APPLICATION_OVERLAY;
-    public static int TYPE_APPLICATION_PANEL;
-    public static int TYPE_APPLICATION_STARTING;
-    public static int TYPE_APPLICATION_SUB_PANEL;
-    public static int TYPE_BASE_APPLICATION;
-    public static int TYPE_BOOT_PROGRESS;
-    public static int TYPE_CHANGED;
-    public static int TYPE_DISPLAY_OVERLAY;
-    public static int TYPE_DOCK_DIVIDER;
-    public static int TYPE_DRAG;
-    public static int TYPE_DRAWN_APPLICATION;
-    public static int TYPE_DREAM;
-    public static int TYPE_INPUT_CONSUMER;
-    public static int TYPE_INPUT_METHOD;
-    public static int TYPE_INPUT_METHOD_DIALOG;
-    public static int TYPE_KEYGUARD;
-    public static int TYPE_KEYGUARD_DIALOG;
-    public static int TYPE_MAGNIFICATION_OVERLAY;
-    public static int TYPE_NAVIGATION_BAR;
-    public static int TYPE_NAVIGATION_BAR_PANEL;
-    public static int TYPE_PHONE;
-    public static int TYPE_POINTER;
-    public static int TYPE_PRESENTATION;
-    public static int TYPE_PRIORITY_PHONE;
-    public static int TYPE_PRIVATE_PRESENTATION;
-    public static int TYPE_QS_DIALOG;
-    public static int TYPE_SCREENSHOT;
-    public static int TYPE_SEARCH_BAR;
-    public static int TYPE_SECURE_SYSTEM_OVERLAY;
-    public static int TYPE_STATUS_BAR;
-    public static int TYPE_STATUS_BAR_PANEL;
-    public static int TYPE_STATUS_BAR_SUB_PANEL;
-    public static int TYPE_SYSTEM_ALERT;
-    public static int TYPE_SYSTEM_DIALOG;
-    public static int TYPE_SYSTEM_ERROR;
-    public static int TYPE_SYSTEM_OVERLAY;
-    public static int TYPE_TOAST;
-    public static int TYPE_VOICE_INTERACTION;
-    public static int TYPE_VOICE_INTERACTION_STARTING;
-    public static int TYPE_VOLUME_OVERLAY;
-    public static int TYPE_WALLPAPER;
-    public static int USER_ACTIVITY_TIMEOUT_CHANGED;
-    public long accessibilityIdOfAnchor;
-    public java.lang.CharSequence accessibilityTitle;
-    public float alpha;
-    public float buttonBrightness;
-    public float dimAmount;
-    public int flags;
-    public int format;
-    public int gravity;
-    public boolean hasManualSurfaceInsets;
-    public boolean hasSystemUiListeners;
-    public long hideTimeoutMilliseconds;
-    public float horizontalMargin;
-    public float horizontalWeight;
-    public int inputFeatures;
-    public int layoutInDisplayCutoutMode;
-    public int memoryType;
-    public int needsMenuKey;
-    public java.lang.String packageName;
-    public int preferredDisplayModeId;
-    public float preferredRefreshRate;
-    public boolean preservePreviousSurfaceInsets;
-    public int privateFlags;
-    public int rotationAnimation;
-    public float screenBrightness;
-    public int screenOrientation;
-    public int softInputMode;
-    public int subtreeSystemUiVisibility;
-    public android.graphics.Rect surfaceInsets;
-    public int systemUiVisibility;
-    public android.os.IBinder token;
-    public int type;
-    public long userActivityTimeout;
-    public float verticalMargin;
-    public float verticalWeight;
-    public int windowAnimations;
-    public int x;
-    public int y;
-}
-
--keep class android.view.accessibility.AccessibilityEvent {
-
-    public void appendRecord(android.view.accessibility.AccessibilityRecord);
-    protected void clear();
-    public int describeContents();
-    public static java.lang.String eventTypeToString(int);
-    public int getAction();
-    public int getContentChangeTypes();
-    public long getEventTime();
-    public int getEventType();
-    public int getMovementGranularity();
-    public java.lang.CharSequence getPackageName();
-    public android.view.accessibility.AccessibilityRecord getRecord(int);
-    public int getRecordCount();
-    public int getWindowChanges();
-    public void initFromParcel(android.os.Parcel);
-    public static android.view.accessibility.AccessibilityEvent obtain(int);
-    public static android.view.accessibility.AccessibilityEvent obtain(android.view.accessibility.AccessibilityEvent);
-    public static android.view.accessibility.AccessibilityEvent obtain();
-    public static android.view.accessibility.AccessibilityEvent obtainWindowsChangedEvent(int, int);
-    public void recycle();
-    public void setAction(int);
-    public void setContentChangeTypes(int);
-    public void setEventTime(long);
-    public void setEventType(int);
-    public void setMovementGranularity(int);
-    public void setPackageName(java.lang.CharSequence);
-    public void setSealed(boolean);
-    public void setWindowChanges(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION;
-    public static int CONTENT_CHANGE_TYPE_PANE_APPEARED;
-    public static int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED;
-    public static int CONTENT_CHANGE_TYPE_PANE_TITLE;
-    public static int CONTENT_CHANGE_TYPE_SUBTREE;
-    public static int CONTENT_CHANGE_TYPE_TEXT;
-    public static int CONTENT_CHANGE_TYPE_UNDEFINED;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static boolean DEBUG_ORIGIN;
-    public static int INVALID_POSITION;
-    public static int MAX_TEXT_LENGTH;
-    public static int TYPES_ALL_MASK;
-    public static int TYPE_ANNOUNCEMENT;
-    public static int TYPE_ASSIST_READING_CONTEXT;
-    public static int TYPE_GESTURE_DETECTION_END;
-    public static int TYPE_GESTURE_DETECTION_START;
-    public static int TYPE_NOTIFICATION_STATE_CHANGED;
-    public static int TYPE_TOUCH_EXPLORATION_GESTURE_END;
-    public static int TYPE_TOUCH_EXPLORATION_GESTURE_START;
-    public static int TYPE_TOUCH_INTERACTION_END;
-    public static int TYPE_TOUCH_INTERACTION_START;
-    public static int TYPE_VIEW_ACCESSIBILITY_FOCUSED;
-    public static int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED;
-    public static int TYPE_VIEW_CLICKED;
-    public static int TYPE_VIEW_CONTEXT_CLICKED;
-    public static int TYPE_VIEW_FOCUSED;
-    public static int TYPE_VIEW_HOVER_ENTER;
-    public static int TYPE_VIEW_HOVER_EXIT;
-    public static int TYPE_VIEW_LONG_CLICKED;
-    public static int TYPE_VIEW_SCROLLED;
-    public static int TYPE_VIEW_SELECTED;
-    public static int TYPE_VIEW_TEXT_CHANGED;
-    public static int TYPE_VIEW_TEXT_SELECTION_CHANGED;
-    public static int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY;
-    public static int TYPE_WINDOWS_CHANGED;
-    public static int TYPE_WINDOW_CONTENT_CHANGED;
-    public static int TYPE_WINDOW_STATE_CHANGED;
-    public static int WINDOWS_CHANGE_ACCESSIBILITY_FOCUSED;
-    public static int WINDOWS_CHANGE_ACTIVE;
-    public static int WINDOWS_CHANGE_ADDED;
-    public static int WINDOWS_CHANGE_BOUNDS;
-    public static int WINDOWS_CHANGE_CHILDREN;
-    public static int WINDOWS_CHANGE_FOCUSED;
-    public static int WINDOWS_CHANGE_LAYER;
-    public static int WINDOWS_CHANGE_PARENT;
-    public static int WINDOWS_CHANGE_PIP;
-    public static int WINDOWS_CHANGE_REMOVED;
-    public static int WINDOWS_CHANGE_TITLE;
-    public java.lang.StackTraceElement[] originStackTrace;
-}
-
--keep class android.view.accessibility.AccessibilityNodeInfo {
-
-    public void addAction(android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction);
-    public void addAction(int);
-    public void addChild(android.view.View);
-    public void addChild(android.view.View, int);
-    public void addChildUnchecked(android.view.View);
-    public boolean canOpenPopup();
-    public int describeContents();
-    protected void enforceNotSealed();
-    protected void enforceSealed();
-    public boolean equals(java.lang.Object);
-    public java.util.List findAccessibilityNodeInfosByText(java.lang.String);
-    public java.util.List findAccessibilityNodeInfosByViewId(java.lang.String);
-    public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    public android.view.accessibility.AccessibilityNodeInfo focusSearch(int);
-    public static int getAccessibilityViewId(long);
-    public java.util.List getActionList();
-    public int getActions();
-    public java.util.List getAvailableExtraData();
-    public void getBoundsInParent(android.graphics.Rect);
-    public void getBoundsInScreen(android.graphics.Rect);
-    public android.graphics.Rect getBoundsInScreen();
-    public android.view.accessibility.AccessibilityNodeInfo getChild(int);
-    public int getChildCount();
-    public long getChildId(int);
-    public android.util.LongArray getChildNodeIds();
-    public java.lang.CharSequence getClassName();
-    public android.view.accessibility.AccessibilityNodeInfo$CollectionInfo getCollectionInfo();
-    public android.view.accessibility.AccessibilityNodeInfo$CollectionItemInfo getCollectionItemInfo();
-    public int getConnectionId();
-    public java.lang.CharSequence getContentDescription();
-    public int getDrawingOrder();
-    public java.lang.CharSequence getError();
-    public android.os.Bundle getExtras();
-    public java.lang.CharSequence getHintText();
-    public int getInputType();
-    public android.view.accessibility.AccessibilityNodeInfo getLabelFor();
-    public android.view.accessibility.AccessibilityNodeInfo getLabeledBy();
-    public int getLiveRegion();
-    public int getMaxTextLength();
-    public int getMovementGranularities();
-    public java.lang.CharSequence getOriginalText();
-    public java.lang.CharSequence getPackageName();
-    public java.lang.CharSequence getPaneTitle();
-    public android.view.accessibility.AccessibilityNodeInfo getParent();
-    public long getParentNodeId();
-    public android.view.accessibility.AccessibilityNodeInfo$RangeInfo getRangeInfo();
-    public long getSourceNodeId();
-    public java.lang.CharSequence getText();
-    public int getTextSelectionEnd();
-    public int getTextSelectionStart();
-    public java.lang.CharSequence getTooltipText();
-    public android.view.accessibility.AccessibilityNodeInfo getTraversalAfter();
-    public android.view.accessibility.AccessibilityNodeInfo getTraversalBefore();
-    public java.lang.String getViewIdResourceName();
-    public static int getVirtualDescendantId(long);
-    public android.view.accessibility.AccessibilityWindowInfo getWindow();
-    public int getWindowId();
-    public boolean hasExtras();
-    public int hashCode();
-    public static java.lang.String idToString(long);
-    public boolean isAccessibilityFocused();
-    public boolean isCheckable();
-    public boolean isChecked();
-    public boolean isClickable();
-    public boolean isContentInvalid();
-    public boolean isContextClickable();
-    public boolean isDismissable();
-    public boolean isEditable();
-    public boolean isEnabled();
-    public boolean isFocusable();
-    public boolean isFocused();
-    public boolean isHeading();
-    public boolean isImportantForAccessibility();
-    public boolean isLongClickable();
-    public boolean isMultiLine();
-    public boolean isPassword();
-    public boolean isScreenReaderFocusable();
-    public boolean isScrollable();
-    public boolean isSealed();
-    public boolean isSelected();
-    public boolean isShowingHintText();
-    public boolean isVisibleToUser();
-    public static long makeNodeId(int, int);
-    public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View);
-    public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View, int);
-    public static android.view.accessibility.AccessibilityNodeInfo obtain();
-    public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.accessibility.AccessibilityNodeInfo);
-    public boolean performAction(int);
-    public boolean performAction(int, android.os.Bundle);
-    public void recycle();
-    public boolean refresh(android.os.Bundle, boolean);
-    public boolean refresh();
-    public boolean refreshWithExtraData(java.lang.String, android.os.Bundle);
-    public void removeAction(int);
-    public boolean removeAction(android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction);
-    public void removeAllActions();
-    public boolean removeChild(android.view.View);
-    public boolean removeChild(android.view.View, int);
-    public void setAccessibilityFocused(boolean);
-    public void setAvailableExtraData(java.util.List);
-    public void setBoundsInParent(android.graphics.Rect);
-    public void setBoundsInScreen(android.graphics.Rect);
-    public void setCanOpenPopup(boolean);
-    public void setCheckable(boolean);
-    public void setChecked(boolean);
-    public void setClassName(java.lang.CharSequence);
-    public void setClickable(boolean);
-    public void setCollectionInfo(android.view.accessibility.AccessibilityNodeInfo$CollectionInfo);
-    public void setCollectionItemInfo(android.view.accessibility.AccessibilityNodeInfo$CollectionItemInfo);
-    public void setConnectionId(int);
-    public void setContentDescription(java.lang.CharSequence);
-    public void setContentInvalid(boolean);
-    public void setContextClickable(boolean);
-    public void setDismissable(boolean);
-    public void setDrawingOrder(int);
-    public void setEditable(boolean);
-    public void setEnabled(boolean);
-    public void setError(java.lang.CharSequence);
-    public void setFocusable(boolean);
-    public void setFocused(boolean);
-    public void setHeading(boolean);
-    public void setHintText(java.lang.CharSequence);
-    public void setImportantForAccessibility(boolean);
-    public void setInputType(int);
-    public void setLabelFor(android.view.View);
-    public void setLabelFor(android.view.View, int);
-    public void setLabeledBy(android.view.View);
-    public void setLabeledBy(android.view.View, int);
-    public void setLiveRegion(int);
-    public void setLongClickable(boolean);
-    public void setMaxTextLength(int);
-    public void setMovementGranularities(int);
-    public void setMultiLine(boolean);
-    public static void setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger);
-    public void setPackageName(java.lang.CharSequence);
-    public void setPaneTitle(java.lang.CharSequence);
-    public void setParent(android.view.View);
-    public void setParent(android.view.View, int);
-    public void setPassword(boolean);
-    public void setRangeInfo(android.view.accessibility.AccessibilityNodeInfo$RangeInfo);
-    public void setScreenReaderFocusable(boolean);
-    public void setScrollable(boolean);
-    public void setSealed(boolean);
-    public void setSelected(boolean);
-    public void setShowingHintText(boolean);
-    public void setSource(android.view.View);
-    public void setSource(android.view.View, int);
-    public void setSourceNodeId(long, int);
-    public void setText(java.lang.CharSequence);
-    public void setTextSelection(int, int);
-    public void setTooltipText(java.lang.CharSequence);
-    public void setTraversalAfter(android.view.View);
-    public void setTraversalAfter(android.view.View, int);
-    public void setTraversalBefore(android.view.View);
-    public void setTraversalBefore(android.view.View, int);
-    public void setViewIdResourceName(java.lang.String);
-    public void setVisibleToUser(boolean);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-    public void writeToParcelNoRecycle(android.os.Parcel, int);
-
-
-    public static int ACTION_ACCESSIBILITY_FOCUS;
-    public static java.lang.String ACTION_ARGUMENT_ACCESSIBLE_CLICKABLE_SPAN;
-    public static java.lang.String ACTION_ARGUMENT_COLUMN_INT;
-    public static java.lang.String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN;
-    public static java.lang.String ACTION_ARGUMENT_HTML_ELEMENT_STRING;
-    public static java.lang.String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT;
-    public static java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_X;
-    public static java.lang.String ACTION_ARGUMENT_MOVE_WINDOW_Y;
-    public static java.lang.String ACTION_ARGUMENT_PROGRESS_VALUE;
-    public static java.lang.String ACTION_ARGUMENT_ROW_INT;
-    public static java.lang.String ACTION_ARGUMENT_SELECTION_END_INT;
-    public static java.lang.String ACTION_ARGUMENT_SELECTION_START_INT;
-    public static java.lang.String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE;
-    public static int ACTION_CLEAR_ACCESSIBILITY_FOCUS;
-    public static int ACTION_CLEAR_FOCUS;
-    public static int ACTION_CLEAR_SELECTION;
-    public static int ACTION_CLICK;
-    public static int ACTION_COLLAPSE;
-    public static int ACTION_COPY;
-    public static int ACTION_CUT;
-    public static int ACTION_DISMISS;
-    public static int ACTION_EXPAND;
-    public static int ACTION_FOCUS;
-    public static int ACTION_LONG_CLICK;
-    public static int ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
-    public static int ACTION_NEXT_HTML_ELEMENT;
-    public static int ACTION_PASTE;
-    public static int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
-    public static int ACTION_PREVIOUS_HTML_ELEMENT;
-    public static int ACTION_SCROLL_BACKWARD;
-    public static int ACTION_SCROLL_FORWARD;
-    public static int ACTION_SELECT;
-    public static int ACTION_SET_SELECTION;
-    public static int ACTION_SET_TEXT;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static java.lang.String EXTRA_DATA_REQUESTED_KEY;
-    public static java.lang.String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_LENGTH;
-    public static java.lang.String EXTRA_DATA_TEXT_CHARACTER_LOCATION_ARG_START_INDEX;
-    public static java.lang.String EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY;
-    public static int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS;
-    public static int FLAG_PREFETCH_DESCENDANTS;
-    public static int FLAG_PREFETCH_PREDECESSORS;
-    public static int FLAG_PREFETCH_SIBLINGS;
-    public static int FLAG_REPORT_VIEW_IDS;
-    public static int FOCUS_ACCESSIBILITY;
-    public static int FOCUS_INPUT;
-    public static int LAST_LEGACY_STANDARD_ACTION;
-    public static int MOVEMENT_GRANULARITY_CHARACTER;
-    public static int MOVEMENT_GRANULARITY_LINE;
-    public static int MOVEMENT_GRANULARITY_PAGE;
-    public static int MOVEMENT_GRANULARITY_PARAGRAPH;
-    public static int MOVEMENT_GRANULARITY_WORD;
-    public static int ROOT_ITEM_ID;
-    public static long ROOT_NODE_ID;
-    public static int UNDEFINED_CONNECTION_ID;
-    public static int UNDEFINED_ITEM_ID;
-    public static long UNDEFINED_NODE_ID;
-    public static int UNDEFINED_SELECTION_INDEX;
-}
-
--keep class android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction {
-    <init>(int, java.lang.CharSequence);
-
-    public boolean equals(java.lang.Object);
-    public int getId();
-    public java.lang.CharSequence getLabel();
-    public int hashCode();
-    public java.lang.String toString();
-
-
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_ACCESSIBILITY_FOCUS;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_CLEAR_ACCESSIBILITY_FOCUS;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_CLEAR_FOCUS;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_CLEAR_SELECTION;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_CLICK;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_COLLAPSE;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_CONTEXT_CLICK;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_COPY;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_CUT;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_DISMISS;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_EXPAND;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_FOCUS;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_HIDE_TOOLTIP;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_LONG_CLICK;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_MOVE_WINDOW;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_NEXT_HTML_ELEMENT;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_PASTE;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_PREVIOUS_HTML_ELEMENT;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SCROLL_BACKWARD;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SCROLL_DOWN;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SCROLL_FORWARD;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SCROLL_LEFT;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SCROLL_RIGHT;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SCROLL_TO_POSITION;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SCROLL_UP;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SELECT;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SET_PROGRESS;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SET_SELECTION;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SET_TEXT;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SHOW_ON_SCREEN;
-    public static android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction ACTION_SHOW_TOOLTIP;
-    public long mSerializationFlag;
-    public static android.util.ArraySet sStandardActions;
-}
-
--keep class android.view.accessibility.AccessibilityNodeInfo$CollectionInfo {
-
-    public int getColumnCount();
-    public int getRowCount();
-    public int getSelectionMode();
-    public boolean isHierarchical();
-    public static android.view.accessibility.AccessibilityNodeInfo$CollectionInfo obtain(android.view.accessibility.AccessibilityNodeInfo$CollectionInfo);
-    public static android.view.accessibility.AccessibilityNodeInfo$CollectionInfo obtain(int, int, boolean);
-    public static android.view.accessibility.AccessibilityNodeInfo$CollectionInfo obtain(int, int, boolean, int);
-
-
-    public static int SELECTION_MODE_MULTIPLE;
-    public static int SELECTION_MODE_NONE;
-    public static int SELECTION_MODE_SINGLE;
-}
-
--keep class android.view.accessibility.AccessibilityNodeInfo$CollectionItemInfo {
-
-    public int getColumnIndex();
-    public int getColumnSpan();
-    public int getRowIndex();
-    public int getRowSpan();
-    public boolean isHeading();
-    public boolean isSelected();
-    public static android.view.accessibility.AccessibilityNodeInfo$CollectionItemInfo obtain(android.view.accessibility.AccessibilityNodeInfo$CollectionItemInfo);
-    public static android.view.accessibility.AccessibilityNodeInfo$CollectionItemInfo obtain(int, int, int, int, boolean);
-    public static android.view.accessibility.AccessibilityNodeInfo$CollectionItemInfo obtain(int, int, int, int, boolean, boolean);
-
-
-}
-
--keep class android.view.accessibility.AccessibilityNodeInfo$RangeInfo {
-
-    public float getCurrent();
-    public float getMax();
-    public float getMin();
-    public int getType();
-    public static android.view.accessibility.AccessibilityNodeInfo$RangeInfo obtain(android.view.accessibility.AccessibilityNodeInfo$RangeInfo);
-    public static android.view.accessibility.AccessibilityNodeInfo$RangeInfo obtain(int, float, float, float);
-
-
-    public static int RANGE_TYPE_FLOAT;
-    public static int RANGE_TYPE_INT;
-    public static int RANGE_TYPE_PERCENT;
-}
-
--keep class android.view.accessibility.AccessibilityNodeProvider {
-    <init>();
-
-    public void addExtraDataToAccessibilityNodeInfo(int, android.view.accessibility.AccessibilityNodeInfo, java.lang.String, android.os.Bundle);
-    public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int);
-    public java.util.List findAccessibilityNodeInfosByText(java.lang.String, int);
-    public android.view.accessibility.AccessibilityNodeInfo findFocus(int);
-    public boolean performAction(int, int, android.os.Bundle);
-
-
-    public static int HOST_VIEW_ID;
-}
-
--keep class android.view.accessibility.AccessibilityRecord {
-
-    public int getAddedCount();
-    public java.lang.CharSequence getBeforeText();
-    public java.lang.CharSequence getClassName();
-    public java.lang.CharSequence getContentDescription();
-    public int getCurrentItemIndex();
-    public int getFromIndex();
-    public int getItemCount();
-    public int getMaxScrollX();
-    public int getMaxScrollY();
-    public android.os.Parcelable getParcelableData();
-    public int getRemovedCount();
-    public int getScrollDeltaX();
-    public int getScrollDeltaY();
-    public int getScrollX();
-    public int getScrollY();
-    public android.view.accessibility.AccessibilityNodeInfo getSource();
-    public long getSourceNodeId();
-    public java.util.List getText();
-    public int getToIndex();
-    public int getWindowId();
-    public boolean isChecked();
-    public boolean isEnabled();
-    public boolean isFullScreen();
-    public boolean isImportantForAccessibility();
-    public boolean isPassword();
-    public boolean isScrollable();
-    public static android.view.accessibility.AccessibilityRecord obtain(android.view.accessibility.AccessibilityRecord);
-    public static android.view.accessibility.AccessibilityRecord obtain();
-    public void recycle();
-    public void setAddedCount(int);
-    public void setBeforeText(java.lang.CharSequence);
-    public void setChecked(boolean);
-    public void setClassName(java.lang.CharSequence);
-    public void setConnectionId(int);
-    public void setContentDescription(java.lang.CharSequence);
-    public void setCurrentItemIndex(int);
-    public void setEnabled(boolean);
-    public void setFromIndex(int);
-    public void setFullScreen(boolean);
-    public void setImportantForAccessibility(boolean);
-    public void setItemCount(int);
-    public void setMaxScrollX(int);
-    public void setMaxScrollY(int);
-    public void setParcelableData(android.os.Parcelable);
-    public void setPassword(boolean);
-    public void setRemovedCount(int);
-    public void setScrollDeltaX(int);
-    public void setScrollDeltaY(int);
-    public void setScrollX(int);
-    public void setScrollY(int);
-    public void setScrollable(boolean);
-    public void setSealed(boolean);
-    public void setSource(android.view.View);
-    public void setSource(android.view.View, int);
-    public void setSourceNodeId(long);
-    public void setToIndex(int);
-    public void setWindowId(int);
-    public java.lang.String toString();
-
-
-    protected static boolean DEBUG_CONCISE_TOSTRING;
-}
-
--keep class android.view.accessibility.AccessibilityWindowInfo {
-
-    public void addChild(int);
-    public boolean changed(android.view.accessibility.AccessibilityWindowInfo);
-    public int describeContents();
-    public int differenceFrom(android.view.accessibility.AccessibilityWindowInfo);
-    public boolean equals(java.lang.Object);
-    public android.view.accessibility.AccessibilityNodeInfo getAnchor();
-    public void getBoundsInScreen(android.graphics.Rect);
-    public android.view.accessibility.AccessibilityWindowInfo getChild(int);
-    public int getChildCount();
-    public int getId();
-    public int getLayer();
-    public android.view.accessibility.AccessibilityWindowInfo getParent();
-    public android.view.accessibility.AccessibilityNodeInfo getRoot();
-    public java.lang.CharSequence getTitle();
-    public int getType();
-    public int hashCode();
-    public boolean isAccessibilityFocused();
-    public boolean isActive();
-    public boolean isFocused();
-    public boolean isInPictureInPictureMode();
-    public static android.view.accessibility.AccessibilityWindowInfo obtain();
-    public static android.view.accessibility.AccessibilityWindowInfo obtain(android.view.accessibility.AccessibilityWindowInfo);
-    public void recycle();
-    public void setAccessibilityFocused(boolean);
-    public void setActive(boolean);
-    public void setAnchorId(long);
-    public void setBoundsInScreen(android.graphics.Rect);
-    public void setConnectionId(int);
-    public void setFocused(boolean);
-    public void setId(int);
-    public void setLayer(int);
-    public static void setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger);
-    public void setParentId(int);
-    public void setPictureInPicture(boolean);
-    public void setTitle(java.lang.CharSequence);
-    public void setType(int);
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static int ACTIVE_WINDOW_ID;
-    public static int ANY_WINDOW_ID;
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int PICTURE_IN_PICTURE_ACTION_REPLACER_WINDOW_ID;
-    public static int TYPE_ACCESSIBILITY_OVERLAY;
-    public static int TYPE_APPLICATION;
-    public static int TYPE_INPUT_METHOD;
-    public static int TYPE_SPLIT_SCREEN_DIVIDER;
-    public static int TYPE_SYSTEM;
-    public static int UNDEFINED_WINDOW_ID;
-}
-
--keep class android.view.accessibility.IAccessibilityInteractionConnectionCallback {
-
-    public abstract void setFindAccessibilityNodeInfoResult(android.view.accessibility.AccessibilityNodeInfo, int);
-    public abstract void setFindAccessibilityNodeInfosResult(java.util.List, int);
-    public abstract void setPerformAccessibilityActionResult(boolean, int);
-
-
-}
-
--keep class android.view.animation.Animation {
-    <init>();
-    <init>(android.content.Context, android.util.AttributeSet);
-
-    protected void applyTransformation(float, android.view.animation.Transformation);
-    public void cancel();
-    protected android.view.animation.Animation clone();
-    protected java.lang.Object clone();
-    public long computeDurationHint();
-    public void detach();
-    protected void ensureInterpolator();
-    protected void finalize();
-    public int getBackgroundColor();
-    public boolean getDetachWallpaper();
-    public long getDuration();
-    public boolean getFillAfter();
-    public boolean getFillBefore();
-    public android.view.animation.Interpolator getInterpolator();
-    public void getInvalidateRegion(int, int, int, int, android.graphics.RectF, android.view.animation.Transformation);
-    public int getRepeatCount();
-    public int getRepeatMode();
-    protected float getScaleFactor();
-    public boolean getShowWallpaper();
-    public long getStartOffset();
-    public long getStartTime();
-    public boolean getTransformation(long, android.view.animation.Transformation);
-    public boolean getTransformation(long, android.view.animation.Transformation, float);
-    public int getZAdjustment();
-    public boolean hasAlpha();
-    public boolean hasEnded();
-    public boolean hasStarted();
-    public void initialize(int, int, int, int);
-    public void initializeInvalidateRegion(int, int, int, int);
-    public boolean isFillEnabled();
-    public boolean isInitialized();
-    public void reset();
-    protected float resolveSize(int, float, int, int);
-    public void restrictDuration(long);
-    public void scaleCurrentDuration(float);
-    public void setAnimationListener(android.view.animation.Animation$AnimationListener);
-    public void setBackgroundColor(int);
-    public void setDetachWallpaper(boolean);
-    public void setDuration(long);
-    public void setFillAfter(boolean);
-    public void setFillBefore(boolean);
-    public void setFillEnabled(boolean);
-    public void setInterpolator(android.content.Context, int);
-    public void setInterpolator(android.view.animation.Interpolator);
-    public void setListenerHandler(android.os.Handler);
-    public void setRepeatCount(int);
-    public void setRepeatMode(int);
-    public void setShowWallpaper(boolean);
-    public void setStartOffset(long);
-    public void setStartTime(long);
-    public void setZAdjustment(int);
-    public void start();
-    public void startNow();
-    public boolean willChangeBounds();
-    public boolean willChangeTransformationMatrix();
-
-
-    public static int ABSOLUTE;
-    public static int INFINITE;
-    public static int RELATIVE_TO_PARENT;
-    public static int RELATIVE_TO_SELF;
-    public static int RESTART;
-    public static int REVERSE;
-    public static int START_ON_FIRST_FRAME;
-    public static int ZORDER_BOTTOM;
-    public static int ZORDER_NORMAL;
-    public static int ZORDER_TOP;
-}
-
--keep class android.view.animation.Animation$AnimationListener {
-
-    public abstract void onAnimationEnd(android.view.animation.Animation);
-    public abstract void onAnimationRepeat(android.view.animation.Animation);
-    public abstract void onAnimationStart(android.view.animation.Animation);
-
-
-}
-
--keep class android.view.animation.Interpolator {
-
-
-
-}
-
--keep class android.view.animation.LayoutAnimationController {
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.view.animation.Animation);
-    <init>(android.view.animation.Animation, float);
-
-    public android.view.animation.Animation getAnimation();
-    public android.view.animation.Animation getAnimationForView(android.view.View);
-    public float getDelay();
-    protected long getDelayForView(android.view.View);
-    public android.view.animation.Interpolator getInterpolator();
-    public int getOrder();
-    protected int getTransformedIndex(android.view.animation.LayoutAnimationController$AnimationParameters);
-    public boolean isDone();
-    public void setAnimation(android.content.Context, int);
-    public void setAnimation(android.view.animation.Animation);
-    public void setDelay(float);
-    public void setInterpolator(android.content.Context, int);
-    public void setInterpolator(android.view.animation.Interpolator);
-    public void setOrder(int);
-    public void start();
-    public boolean willOverlap();
-
-
-    public static int ORDER_NORMAL;
-    public static int ORDER_RANDOM;
-    public static int ORDER_REVERSE;
-    protected android.view.animation.Animation mAnimation;
-    protected android.view.animation.Interpolator mInterpolator;
-    protected java.util.Random mRandomizer;
-}
-
--keep class android.view.animation.LayoutAnimationController$AnimationParameters {
-    <init>();
-
-
-
-    public int count;
-    public int index;
-}
-
--keep class android.view.animation.Transformation {
-    <init>();
-
-    public void clear();
-    public void compose(android.view.animation.Transformation);
-    public float getAlpha();
-    public android.graphics.Rect getClipRect();
-    public android.graphics.Matrix getMatrix();
-    public int getTransformationType();
-    public boolean hasClipRect();
-    public void postCompose(android.view.animation.Transformation);
-    public void printShortString(java.io.PrintWriter);
-    public void set(android.view.animation.Transformation);
-    public void setAlpha(float);
-    public void setClipRect(android.graphics.Rect);
-    public void setClipRect(int, int, int, int);
-    public void setTransformationType(int);
-    public java.lang.String toShortString();
-    public void toShortString(java.lang.StringBuilder);
-    public java.lang.String toString();
-
-
-    public static int TYPE_ALPHA;
-    public static int TYPE_BOTH;
-    public static int TYPE_IDENTITY;
-    public static int TYPE_MATRIX;
-    protected float mAlpha;
-    protected android.graphics.Matrix mMatrix;
-    protected int mTransformationType;
-}
-
--keep class android.view.autofill.AutofillId {
-    <init>(int);
-    <init>(android.view.autofill.AutofillId, int);
-    <init>(int, int);
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public int getViewId();
-    public int getVirtualChildId();
-    public int hashCode();
-    public boolean isVirtual();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.autofill.AutofillManager {
-    <init>(android.content.Context, android.view.autofill.IAutoFillManager);
-
-    public void cancel();
-    public void commit();
-    public void disableAutofillServices();
-    public void disableOwnedAutofillServices();
-    public void dump(java.lang.String, java.io.PrintWriter);
-    public void enableCompatibilityMode();
-    public android.content.ComponentName getAutofillServiceComponentName();
-    public java.util.List getAvailableFieldClassificationAlgorithms();
-    public static int getDatasetIdFromAuthenticationId(int);
-    public java.lang.String getDefaultFieldClassificationAlgorithm();
-    public android.service.autofill.FillEventHistory getFillEventHistory();
-    public android.view.autofill.AutofillId getNextAutofillId();
-    public static int getRequestIdFromAuthenticationId(int);
-    public android.service.autofill.UserData getUserData();
-    public java.lang.String getUserDataId();
-    public boolean hasAutofillFeature();
-    public boolean hasEnabledAutofillServices();
-    public boolean isAutofillSupported();
-    public boolean isAutofillUiShowing();
-    public boolean isCompatibilityModeEnabledLocked();
-    public boolean isEnabled();
-    public boolean isFieldClassificationEnabled();
-    public static int makeAuthenticationId(int, int);
-    public void notifyValueChanged(android.view.View);
-    public void notifyValueChanged(android.view.View, int, android.view.autofill.AutofillValue);
-    public void notifyViewClicked(android.view.View);
-    public void notifyViewClicked(android.view.View, int);
-    public void notifyViewEntered(android.view.View);
-    public void notifyViewEntered(android.view.View, int, android.graphics.Rect);
-    public void notifyViewExited(android.view.View);
-    public void notifyViewExited(android.view.View, int);
-    public void notifyViewVisibilityChanged(android.view.View, boolean);
-    public void notifyViewVisibilityChanged(android.view.View, int, boolean);
-    public void onActivityFinishing();
-    public void onAuthenticationResult(int, android.content.Intent, android.view.View);
-    public void onCreate(android.os.Bundle);
-    public void onInvisibleForAutofill();
-    public void onPendingSaveUi(int, android.os.IBinder);
-    public void onSaveInstanceState(android.os.Bundle);
-    public void onVisibleForAutofill();
-    public void registerCallback(android.view.autofill.AutofillManager$AutofillCallback);
-    public void requestAutofill(android.view.View);
-    public void requestAutofill(android.view.View, int, android.graphics.Rect);
-    public void requestHideFillUi();
-    public void setUserData(android.service.autofill.UserData);
-    public void unregisterCallback(android.view.autofill.AutofillManager$AutofillCallback);
-
-
-    public static int ACTION_START_SESSION;
-    public static int ACTION_VALUE_CHANGED;
-    public static int ACTION_VIEW_ENTERED;
-    public static int ACTION_VIEW_EXITED;
-    public static int AUTHENTICATION_ID_DATASET_ID_UNDEFINED;
-    public static java.lang.String EXTRA_ASSIST_STRUCTURE;
-    public static java.lang.String EXTRA_AUTHENTICATION_RESULT;
-    public static java.lang.String EXTRA_CLIENT_STATE;
-    public static java.lang.String EXTRA_RESTORE_SESSION_TOKEN;
-    public static int FC_SERVICE_TIMEOUT;
-    public static int FLAG_ADD_CLIENT_DEBUG;
-    public static int FLAG_ADD_CLIENT_ENABLED;
-    public static int FLAG_ADD_CLIENT_VERBOSE;
-    public static int NO_SESSION;
-    public static int PENDING_UI_OPERATION_CANCEL;
-    public static int PENDING_UI_OPERATION_RESTORE;
-    public static int SET_STATE_FLAG_DEBUG;
-    public static int SET_STATE_FLAG_ENABLED;
-    public static int SET_STATE_FLAG_RESET_CLIENT;
-    public static int SET_STATE_FLAG_RESET_SESSION;
-    public static int SET_STATE_FLAG_VERBOSE;
-    public static int STATE_ACTIVE;
-    public static int STATE_DISABLED_BY_SERVICE;
-    public static int STATE_FINISHED;
-    public static int STATE_SHOWING_SAVE_UI;
-    public static int STATE_UNKNOWN;
-    public static int STATE_UNKNOWN_COMPAT_MODE;
-}
-
--keep class android.view.autofill.AutofillManager$AutofillCallback {
-    <init>();
-
-    public void onAutofillEvent(android.view.View, int);
-    public void onAutofillEvent(android.view.View, int, int);
-
-
-    public static int EVENT_INPUT_HIDDEN;
-    public static int EVENT_INPUT_SHOWN;
-    public static int EVENT_INPUT_UNAVAILABLE;
-}
-
--keep class android.view.autofill.AutofillManager$AutofillClient {
-
-    public abstract void autofillClientAuthenticate(int, android.content.IntentSender, android.content.Intent);
-    public abstract void autofillClientDispatchUnhandledKey(android.view.View, android.view.KeyEvent);
-    public abstract android.view.View autofillClientFindViewByAccessibilityIdTraversal(int, int);
-    public abstract android.view.View autofillClientFindViewByAutofillIdTraversal(android.view.autofill.AutofillId);
-    public abstract android.view.View[] autofillClientFindViewsByAutofillIdTraversal(android.view.autofill.AutofillId[]);
-    public abstract android.os.IBinder autofillClientGetActivityToken();
-    public abstract android.content.ComponentName autofillClientGetComponentName();
-    public abstract android.view.autofill.AutofillId autofillClientGetNextAutofillId();
-    public abstract boolean[] autofillClientGetViewVisibility(android.view.autofill.AutofillId[]);
-    public abstract boolean autofillClientIsCompatibilityModeEnabled();
-    public abstract boolean autofillClientIsFillUiShowing();
-    public abstract boolean autofillClientIsVisibleForAutofill();
-    public abstract boolean autofillClientRequestHideFillUi();
-    public abstract boolean autofillClientRequestShowFillUi(android.view.View, int, int, android.graphics.Rect, android.view.autofill.IAutofillWindowPresenter);
-    public abstract void autofillClientResetableStateAvailable();
-    public abstract void autofillClientRunOnUiThread(java.lang.Runnable);
-    public abstract boolean isDisablingEnterExitEventForAutofill();
-
-
-}
-
--keep class android.view.autofill.AutofillValue {
-
-    public int describeContents();
-    public boolean equals(java.lang.Object);
-    public static android.view.autofill.AutofillValue forDate(long);
-    public static android.view.autofill.AutofillValue forList(int);
-    public static android.view.autofill.AutofillValue forText(java.lang.CharSequence);
-    public static android.view.autofill.AutofillValue forToggle(boolean);
-    public long getDateValue();
-    public int getListValue();
-    public java.lang.CharSequence getTextValue();
-    public boolean getToggleValue();
-    public int hashCode();
-    public boolean isDate();
-    public boolean isEmpty();
-    public boolean isList();
-    public boolean isText();
-    public boolean isToggle();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.autofill.IAutoFillManager {
-
-    public abstract int addClient(android.view.autofill.IAutoFillManagerClient, int);
-    public abstract void cancelSession(int, int);
-    public abstract void disableOwnedAutofillServices(int);
-    public abstract void finishSession(int, int);
-    public abstract android.content.ComponentName getAutofillServiceComponentName();
-    public abstract java.lang.String[] getAvailableFieldClassificationAlgorithms();
-    public abstract java.lang.String getDefaultFieldClassificationAlgorithm();
-    public abstract android.service.autofill.FillEventHistory getFillEventHistory();
-    public abstract android.service.autofill.UserData getUserData();
-    public abstract java.lang.String getUserDataId();
-    public abstract boolean isFieldClassificationEnabled();
-    public abstract boolean isServiceEnabled(int, java.lang.String);
-    public abstract boolean isServiceSupported(int);
-    public abstract void onPendingSaveUi(int, android.os.IBinder);
-    public abstract void removeClient(android.view.autofill.IAutoFillManagerClient, int);
-    public abstract boolean restoreSession(int, android.os.IBinder, android.os.IBinder);
-    public abstract void setAuthenticationResult(android.os.Bundle, int, int, int);
-    public abstract void setAutofillFailure(int, java.util.List, int);
-    public abstract void setHasCallback(int, int, boolean);
-    public abstract void setUserData(android.service.autofill.UserData);
-    public abstract int startSession(android.os.IBinder, android.os.IBinder, android.view.autofill.AutofillId, android.graphics.Rect, android.view.autofill.AutofillValue, int, boolean, int, android.content.ComponentName, boolean);
-    public abstract int updateOrRestartSession(android.os.IBinder, android.os.IBinder, android.view.autofill.AutofillId, android.graphics.Rect, android.view.autofill.AutofillValue, int, boolean, int, android.content.ComponentName, int, int, boolean);
-    public abstract void updateSession(int, android.view.autofill.AutofillId, android.graphics.Rect, android.view.autofill.AutofillValue, int, int, int);
-
-
-}
-
--keep class android.view.autofill.IAutoFillManagerClient {
-
-    public abstract void authenticate(int, int, android.content.IntentSender, android.content.Intent);
-    public abstract void autofill(int, java.util.List, java.util.List);
-    public abstract void dispatchUnhandledKey(int, android.view.autofill.AutofillId, android.view.KeyEvent);
-    public abstract void notifyNoFillUi(int, android.view.autofill.AutofillId, int);
-    public abstract void requestHideFillUi(int, android.view.autofill.AutofillId);
-    public abstract void requestShowFillUi(int, android.view.autofill.AutofillId, int, int, android.graphics.Rect, android.view.autofill.IAutofillWindowPresenter);
-    public abstract void setSaveUiState(int, boolean);
-    public abstract void setSessionFinished(int);
-    public abstract void setState(int);
-    public abstract void setTrackedViews(int, android.view.autofill.AutofillId[], boolean, boolean, android.view.autofill.AutofillId[], android.view.autofill.AutofillId);
-    public abstract void startIntentSender(android.content.IntentSender, android.content.Intent);
-
-
-}
-
--keep class android.view.autofill.IAutofillWindowPresenter {
-
-    public abstract void hide(android.graphics.Rect);
-    public abstract void show(android.view.WindowManager$LayoutParams, android.graphics.Rect, boolean, int);
-
-
-}
-
--keep class android.view.inputmethod.CompletionInfo {
-    <init>(long, int, java.lang.CharSequence);
-    <init>(long, int, java.lang.CharSequence, java.lang.CharSequence);
-
-    public int describeContents();
-    public long getId();
-    public java.lang.CharSequence getLabel();
-    public int getPosition();
-    public java.lang.CharSequence getText();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.inputmethod.CorrectionInfo {
-    <init>(int, java.lang.CharSequence, java.lang.CharSequence);
-
-    public int describeContents();
-    public java.lang.CharSequence getNewText();
-    public int getOffset();
-    public java.lang.CharSequence getOldText();
-    public java.lang.String toString();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.view.inputmethod.EditorInfo {
-    <init>();
-
-    public int describeContents();
-    public void dump(android.util.Printer, java.lang.String);
-    public void makeCompatible(int);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int IME_ACTION_DONE;
-    public static int IME_ACTION_GO;
-    public static int IME_ACTION_NEXT;
-    public static int IME_ACTION_NONE;
-    public static int IME_ACTION_PREVIOUS;
-    public static int IME_ACTION_SEARCH;
-    public static int IME_ACTION_SEND;
-    public static int IME_ACTION_UNSPECIFIED;
-    public static int IME_FLAG_FORCE_ASCII;
-    public static int IME_FLAG_NAVIGATE_NEXT;
-    public static int IME_FLAG_NAVIGATE_PREVIOUS;
-    public static int IME_FLAG_NO_ACCESSORY_ACTION;
-    public static int IME_FLAG_NO_ENTER_ACTION;
-    public static int IME_FLAG_NO_EXTRACT_UI;
-    public static int IME_FLAG_NO_FULLSCREEN;
-    public static int IME_FLAG_NO_PERSONALIZED_LEARNING;
-    public static int IME_MASK_ACTION;
-    public static int IME_NULL;
-    public int actionId;
-    public java.lang.CharSequence actionLabel;
-    public java.lang.String[] contentMimeTypes;
-    public android.os.Bundle extras;
-    public int fieldId;
-    public java.lang.String fieldName;
-    public android.os.LocaleList hintLocales;
-    public java.lang.CharSequence hintText;
-    public int imeOptions;
-    public int initialCapsMode;
-    public int initialSelEnd;
-    public int initialSelStart;
-    public int inputType;
-    public java.lang.CharSequence label;
-    public java.lang.String packageName;
-    public java.lang.String privateImeOptions;
-}
-
--keep class android.view.inputmethod.ExtractedText {
-    <init>();
-
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public static int FLAG_SELECTING;
-    public static int FLAG_SINGLE_LINE;
-    public int flags;
-    public java.lang.CharSequence hint;
-    public int partialEndOffset;
-    public int partialStartOffset;
-    public int selectionEnd;
-    public int selectionStart;
-    public int startOffset;
-    public java.lang.CharSequence text;
-}
-
--keep class android.view.inputmethod.ExtractedTextRequest {
-    <init>();
-
-    public int describeContents();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public int flags;
-    public int hintMaxChars;
-    public int hintMaxLines;
-    public int token;
-}
-
--keep class android.view.inputmethod.InputConnection {
-
-    public abstract boolean beginBatchEdit();
-    public abstract boolean clearMetaKeyStates(int);
-    public abstract void closeConnection();
-    public abstract boolean commitCompletion(android.view.inputmethod.CompletionInfo);
-    public abstract boolean commitContent(android.view.inputmethod.InputContentInfo, int, android.os.Bundle);
-    public abstract boolean commitCorrection(android.view.inputmethod.CorrectionInfo);
-    public abstract boolean commitText(java.lang.CharSequence, int);
-    public abstract boolean deleteSurroundingText(int, int);
-    public abstract boolean deleteSurroundingTextInCodePoints(int, int);
-    public abstract boolean endBatchEdit();
-    public abstract boolean finishComposingText();
-    public abstract int getCursorCapsMode(int);
-    public abstract android.view.inputmethod.ExtractedText getExtractedText(android.view.inputmethod.ExtractedTextRequest, int);
-    public abstract android.os.Handler getHandler();
-    public abstract java.lang.CharSequence getSelectedText(int);
-    public abstract java.lang.CharSequence getTextAfterCursor(int, int);
-    public abstract java.lang.CharSequence getTextBeforeCursor(int, int);
-    public abstract boolean performContextMenuAction(int);
-    public abstract boolean performEditorAction(int);
-    public abstract boolean performPrivateCommand(java.lang.String, android.os.Bundle);
-    public abstract boolean reportFullscreenMode(boolean);
-    public abstract boolean requestCursorUpdates(int);
-    public abstract boolean sendKeyEvent(android.view.KeyEvent);
-    public abstract boolean setComposingRegion(int, int);
-    public abstract boolean setComposingText(java.lang.CharSequence, int);
-    public abstract boolean setSelection(int, int);
-
-
-    public static int CURSOR_UPDATE_IMMEDIATE;
-    public static int CURSOR_UPDATE_MONITOR;
-    public static int GET_EXTRACTED_TEXT_MONITOR;
-    public static int GET_TEXT_WITH_STYLES;
-    public static int INPUT_CONTENT_GRANT_READ_URI_PERMISSION;
-}
-
--keep class android.view.inputmethod.InputContentInfo {
-    <init>(android.net.Uri, android.content.ClipDescription);
-    <init>(android.net.Uri, android.content.ClipDescription, android.net.Uri);
-
-    public int describeContents();
-    public android.net.Uri getContentUri();
-    public android.content.ClipDescription getDescription();
-    public android.net.Uri getLinkUri();
-    public void releasePermission();
-    public void requestPermission();
-    public boolean validate();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-}
-
--keep class android.widget.ActionMenuPresenter {
-    <init>(android.content.Context);
-
-    public void bindItemView(com.android.internal.view.menu.MenuItemImpl, com.android.internal.view.menu.MenuView$ItemView);
-    public boolean dismissPopupMenus();
-    public boolean filterLeftoverView(android.view.ViewGroup, int);
-    public boolean flagActionItems();
-    public android.view.View getItemView(com.android.internal.view.menu.MenuItemImpl, android.view.View, android.view.ViewGroup);
-    public com.android.internal.view.menu.MenuView getMenuView(android.view.ViewGroup);
-    public android.graphics.drawable.Drawable getOverflowIcon();
-    public boolean hideOverflowMenu();
-    public boolean hideSubMenus();
-    public void initForMenu(android.content.Context, com.android.internal.view.menu.MenuBuilder);
-    public boolean isOverflowMenuShowPending();
-    public boolean isOverflowMenuShowing();
-    public boolean isOverflowReserved();
-    public void onCloseMenu(com.android.internal.view.menu.MenuBuilder, boolean);
-    public void onConfigurationChanged(android.content.res.Configuration);
-    public void onRestoreInstanceState(android.os.Parcelable);
-    public android.os.Parcelable onSaveInstanceState();
-    public boolean onSubMenuSelected(com.android.internal.view.menu.SubMenuBuilder);
-    public void onSubUiVisibilityChanged(boolean);
-    public void setExpandedActionViewsExclusive(boolean);
-    public void setItemLimit(int);
-    public void setMenuView(android.widget.ActionMenuView);
-    public void setOverflowIcon(android.graphics.drawable.Drawable);
-    public void setReserveOverflow(boolean);
-    public void setWidthLimit(int, boolean);
-    public boolean shouldIncludeItem(int, com.android.internal.view.menu.MenuItemImpl);
-    public boolean showOverflowMenu();
-    public void updateMenuView(boolean);
-
-
-}
-
--keep class android.widget.ActionMenuView {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-
-    protected boolean checkLayoutParams(android.view.ViewGroup$LayoutParams);
-    public void dismissPopupMenus();
-    public boolean dispatchPopulateAccessibilityEventInternal(android.view.accessibility.AccessibilityEvent);
-    protected android.widget.ActionMenuView$LayoutParams generateDefaultLayoutParams();
-    protected android.widget.LinearLayout$LayoutParams generateDefaultLayoutParams();
-    protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams();
-    public android.widget.ActionMenuView$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    protected android.widget.ActionMenuView$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    protected android.widget.LinearLayout$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    public android.widget.LinearLayout$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    protected android.view.ViewGroup$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    public android.view.ViewGroup$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    public android.widget.ActionMenuView$LayoutParams generateOverflowButtonLayoutParams();
-    public android.view.Menu getMenu();
-    public android.graphics.drawable.Drawable getOverflowIcon();
-    public int getPopupTheme();
-    public int getWindowAnimations();
-    protected boolean hasDividerBeforeChildAt(int);
-    public boolean hideOverflowMenu();
-    public void initialize(com.android.internal.view.menu.MenuBuilder);
-    public boolean invokeItem(com.android.internal.view.menu.MenuItemImpl);
-    public boolean isOverflowMenuShowPending();
-    public boolean isOverflowMenuShowing();
-    public boolean isOverflowReserved();
-    public void onConfigurationChanged(android.content.res.Configuration);
-    public void onDetachedFromWindow();
-    protected void onLayout(boolean, int, int, int, int);
-    protected void onMeasure(int, int);
-    public com.android.internal.view.menu.MenuBuilder peekMenu();
-    public void setExpandedActionViewsExclusive(boolean);
-    public void setMenuCallbacks(com.android.internal.view.menu.MenuPresenter$Callback, com.android.internal.view.menu.MenuBuilder$Callback);
-    public void setOnMenuItemClickListener(android.widget.ActionMenuView$OnMenuItemClickListener);
-    public void setOverflowIcon(android.graphics.drawable.Drawable);
-    public void setOverflowReserved(boolean);
-    public void setPopupTheme(int);
-    public void setPresenter(android.widget.ActionMenuPresenter);
-    public boolean showOverflowMenu();
-
-
-}
-
--keep class android.widget.ActionMenuView$LayoutParams {
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.view.ViewGroup$LayoutParams);
-    <init>(android.widget.ActionMenuView$LayoutParams);
-    <init>(int, int);
-    <init>(int, int, boolean);
-
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-
-
-    public int cellsUsed;
-    public boolean expandable;
-    public boolean expanded;
-    public int extraPixels;
-    public boolean isOverflowButton;
-    public boolean preventEdgeOffset;
-}
-
--keep class android.widget.ActionMenuView$OnMenuItemClickListener {
-
-    public abstract boolean onMenuItemClick(android.view.MenuItem);
-
-
-}
-
--keep class android.widget.Adapter {
-
-    public java.lang.CharSequence[] getAutofillOptions();
-    public abstract int getCount();
-    public abstract java.lang.Object getItem(int);
-    public abstract long getItemId(int);
-    public abstract int getItemViewType(int);
-    public abstract android.view.View getView(int, android.view.View, android.view.ViewGroup);
-    public abstract int getViewTypeCount();
-    public abstract boolean hasStableIds();
-    public abstract boolean isEmpty();
-    public abstract void registerDataSetObserver(android.database.DataSetObserver);
-    public abstract void unregisterDataSetObserver(android.database.DataSetObserver);
-
-
-    public static int IGNORE_ITEM_VIEW_TYPE;
-    public static int NO_SELECTION;
-}
-
--keep class android.widget.AdapterView {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.content.Context, android.util.AttributeSet, int);
-    <init>(android.content.Context, android.util.AttributeSet, int, int);
-
-    public void addView(android.view.View);
-    public void addView(android.view.View, int);
-    public void addView(android.view.View, android.view.ViewGroup$LayoutParams);
-    public void addView(android.view.View, int, android.view.ViewGroup$LayoutParams);
-    protected boolean canAnimate();
-    public boolean dispatchPopulateAccessibilityEventInternal(android.view.accessibility.AccessibilityEvent);
-    protected void dispatchRestoreInstanceState(android.util.SparseArray);
-    protected void dispatchSaveInstanceState(android.util.SparseArray);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    public java.lang.CharSequence getAccessibilityClassName();
-    public abstract android.widget.Adapter getAdapter();
-    public int getCount();
-    public android.view.View getEmptyView();
-    public int getFirstVisiblePosition();
-    public java.lang.Object getItemAtPosition(int);
-    public long getItemIdAtPosition(int);
-    public int getLastVisiblePosition();
-    public android.widget.AdapterView$OnItemClickListener getOnItemClickListener();
-    public android.widget.AdapterView$OnItemLongClickListener getOnItemLongClickListener();
-    public android.widget.AdapterView$OnItemSelectedListener getOnItemSelectedListener();
-    public int getPositionForView(android.view.View);
-    public java.lang.Object getSelectedItem();
-    public long getSelectedItemId();
-    public int getSelectedItemPosition();
-    public abstract android.view.View getSelectedView();
-    protected void onDetachedFromWindow();
-    public void onInitializeAccessibilityEventInternal(android.view.accessibility.AccessibilityEvent);
-    public void onInitializeAccessibilityNodeInfoInternal(android.view.accessibility.AccessibilityNodeInfo);
-    protected void onLayout(boolean, int, int, int, int);
-    public void onProvideAutofillStructure(android.view.ViewStructure, int);
-    public boolean onRequestSendAccessibilityEventInternal(android.view.View, android.view.accessibility.AccessibilityEvent);
-    public boolean performItemClick(android.view.View, int, long);
-    public void removeAllViews();
-    public void removeView(android.view.View);
-    public void removeViewAt(int);
-    public abstract void setAdapter(android.widget.Adapter);
-    public void setEmptyView(android.view.View);
-    public void setFocusable(int);
-    public void setFocusableInTouchMode(boolean);
-    public void setOnClickListener(android.view.View$OnClickListener);
-    public void setOnItemClickListener(android.widget.AdapterView$OnItemClickListener);
-    public void setOnItemLongClickListener(android.widget.AdapterView$OnItemLongClickListener);
-    public void setOnItemSelectedListener(android.widget.AdapterView$OnItemSelectedListener);
-    public abstract void setSelection(int);
-
-
-    public static int INVALID_POSITION;
-    public static long INVALID_ROW_ID;
-    public static int ITEM_VIEW_TYPE_HEADER_OR_FOOTER;
-    public static int ITEM_VIEW_TYPE_IGNORE;
-}
-
--keep class android.widget.AdapterView$OnItemClickListener {
-
-    public abstract void onItemClick(android.widget.AdapterView, android.view.View, int, long);
-
-
-}
-
--keep class android.widget.AdapterView$OnItemLongClickListener {
-
-    public abstract boolean onItemLongClick(android.widget.AdapterView, android.view.View, int, long);
-
-
-}
-
--keep class android.widget.AdapterView$OnItemSelectedListener {
-
-    public abstract void onItemSelected(android.widget.AdapterView, android.view.View, int, long);
-    public abstract void onNothingSelected(android.widget.AdapterView);
-
-
-}
-
--keep class android.widget.FrameLayout {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.content.Context, android.util.AttributeSet, int);
-    <init>(android.content.Context, android.util.AttributeSet, int, int);
-
-    protected boolean checkLayoutParams(android.view.ViewGroup$LayoutParams);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    protected android.widget.FrameLayout$LayoutParams generateDefaultLayoutParams();
-    protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams();
-    public android.widget.FrameLayout$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    protected android.view.ViewGroup$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    public android.view.ViewGroup$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    public java.lang.CharSequence getAccessibilityClassName();
-    public boolean getConsiderGoneChildrenWhenMeasuring();
-    public boolean getMeasureAllChildren();
-    protected void onLayout(boolean, int, int, int, int);
-    protected void onMeasure(int, int);
-    public void setForegroundGravity(int);
-    public void setMeasureAllChildren(boolean);
-    public boolean shouldDelayChildPressedState();
-
-
-}
-
--keep class android.widget.FrameLayout$LayoutParams {
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(int, int);
-    <init>(int, int, int);
-    <init>(android.view.ViewGroup$LayoutParams);
-    <init>(android.view.ViewGroup$MarginLayoutParams);
-    <init>(android.widget.FrameLayout$LayoutParams);
-
-
-
-    public static int UNSPECIFIED_GRAVITY;
-    public int gravity;
-}
-
--keep class android.widget.HorizontalScrollView {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.content.Context, android.util.AttributeSet, int);
-    <init>(android.content.Context, android.util.AttributeSet, int, int);
-
-    public void addView(android.view.View);
-    public void addView(android.view.View, int);
-    public void addView(android.view.View, android.view.ViewGroup$LayoutParams);
-    public void addView(android.view.View, int, android.view.ViewGroup$LayoutParams);
-    public boolean arrowScroll(int);
-    protected int computeHorizontalScrollOffset();
-    protected int computeHorizontalScrollRange();
-    public void computeScroll();
-    protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect);
-    public boolean dispatchKeyEvent(android.view.KeyEvent);
-    public void draw(android.graphics.Canvas);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    public boolean executeKeyEvent(android.view.KeyEvent);
-    public void fling(int);
-    public boolean fullScroll(int);
-    public java.lang.CharSequence getAccessibilityClassName();
-    protected float getLeftFadingEdgeStrength();
-    public int getMaxScrollAmount();
-    protected float getRightFadingEdgeStrength();
-    public boolean isFillViewport();
-    public boolean isSmoothScrollingEnabled();
-    protected void measureChild(android.view.View, int, int);
-    protected void measureChildWithMargins(android.view.View, int, int, int, int);
-    public boolean onGenericMotionEvent(android.view.MotionEvent);
-    public void onInitializeAccessibilityEventInternal(android.view.accessibility.AccessibilityEvent);
-    public void onInitializeAccessibilityNodeInfoInternal(android.view.accessibility.AccessibilityNodeInfo);
-    public boolean onInterceptTouchEvent(android.view.MotionEvent);
-    protected void onLayout(boolean, int, int, int, int);
-    protected void onMeasure(int, int);
-    protected void onOverScrolled(int, int, boolean, boolean);
-    protected boolean onRequestFocusInDescendants(int, android.graphics.Rect);
-    protected void onRestoreInstanceState(android.os.Parcelable);
-    protected android.os.Parcelable onSaveInstanceState();
-    protected void onSizeChanged(int, int, int, int);
-    public boolean onTouchEvent(android.view.MotionEvent);
-    public boolean pageScroll(int);
-    public boolean performAccessibilityActionInternal(int, android.os.Bundle);
-    public void requestChildFocus(android.view.View, android.view.View);
-    public boolean requestChildRectangleOnScreen(android.view.View, android.graphics.Rect, boolean);
-    public void requestDisallowInterceptTouchEvent(boolean);
-    public void requestLayout();
-    public void scrollTo(int, int);
-    public void setFillViewport(boolean);
-    public void setOverScrollMode(int);
-    public void setSmoothScrollingEnabled(boolean);
-    public boolean shouldDelayChildPressedState();
-    public void smoothScrollBy(int, int);
-    public void smoothScrollTo(int, int);
-
-
-}
-
--keep class android.widget.LinearLayout {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.content.Context, android.util.AttributeSet, int);
-    <init>(android.content.Context, android.util.AttributeSet, int, int);
-
-    protected boolean checkLayoutParams(android.view.ViewGroup$LayoutParams);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-    protected android.widget.LinearLayout$LayoutParams generateDefaultLayoutParams();
-    protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams();
-    public android.widget.LinearLayout$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    protected android.widget.LinearLayout$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    protected android.view.ViewGroup$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    public android.view.ViewGroup$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    public java.lang.CharSequence getAccessibilityClassName();
-    public int getBaseline();
-    public int getBaselineAlignedChildIndex();
-    public android.graphics.drawable.Drawable getDividerDrawable();
-    public int getDividerPadding();
-    public int getDividerWidth();
-    public int getGravity();
-    public int getOrientation();
-    public int getShowDividers();
-    public float getWeightSum();
-    protected boolean hasDividerBeforeChildAt(int);
-    public boolean isBaselineAligned();
-    public boolean isMeasureWithLargestChildEnabled();
-    protected void onDraw(android.graphics.Canvas);
-    protected void onLayout(boolean, int, int, int, int);
-    protected void onMeasure(int, int);
-    public void onRtlPropertiesChanged(int);
-    public void setBaselineAligned(boolean);
-    public void setBaselineAlignedChildIndex(int);
-    public void setDividerDrawable(android.graphics.drawable.Drawable);
-    public void setDividerPadding(int);
-    public void setGravity(int);
-    public void setHorizontalGravity(int);
-    public void setMeasureWithLargestChildEnabled(boolean);
-    public void setOrientation(int);
-    public void setShowDividers(int);
-    public void setVerticalGravity(int);
-    public void setWeightSum(float);
-    public boolean shouldDelayChildPressedState();
-
-
-    public static int HORIZONTAL;
-    public static int SHOW_DIVIDER_BEGINNING;
-    public static int SHOW_DIVIDER_END;
-    public static int SHOW_DIVIDER_MIDDLE;
-    public static int SHOW_DIVIDER_NONE;
-    public static int VERTICAL;
-}
-
--keep class android.widget.LinearLayout$LayoutParams {
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(int, int);
-    <init>(int, int, float);
-    <init>(android.view.ViewGroup$LayoutParams);
-    <init>(android.view.ViewGroup$MarginLayoutParams);
-    <init>(android.widget.LinearLayout$LayoutParams);
-
-    public java.lang.String debug(java.lang.String);
-    protected void encodeProperties(android.view.ViewHierarchyEncoder);
-
-
-    public int gravity;
-    public float weight;
-}
-
--keep class android.widget.RemoteViews {
-    <init>(java.lang.String, int);
-    <init>(java.lang.String, int, int);
-    <init>(android.content.pm.ApplicationInfo, int);
-    <init>(android.widget.RemoteViews, android.widget.RemoteViews);
-    <init>(android.widget.RemoteViews);
-    <init>(android.os.Parcel);
-
-    public void addView(int, android.widget.RemoteViews);
-    public void addView(int, android.widget.RemoteViews, int);
-    public android.view.View apply(android.content.Context, android.view.ViewGroup);
-    public android.view.View apply(android.content.Context, android.view.ViewGroup, android.widget.RemoteViews$OnClickHandler);
-    public android.os.CancellationSignal applyAsync(android.content.Context, android.view.ViewGroup, java.util.concurrent.Executor, android.widget.RemoteViews$OnViewAppliedListener);
-    public android.os.CancellationSignal applyAsync(android.content.Context, android.view.ViewGroup, java.util.concurrent.Executor, android.widget.RemoteViews$OnViewAppliedListener, android.widget.RemoteViews$OnClickHandler);
-    public android.widget.RemoteViews clone();
-    public java.lang.Object clone();
-    public int describeContents();
-    public int estimateMemoryUsage();
-    public int getLayoutId();
-    public java.lang.String getPackage();
-    public int getSequenceNumber();
-    public boolean hasSameAppInfo(android.content.pm.ApplicationInfo);
-    public boolean isReapplyDisallowed();
-    public void mergeRemoteViews(android.widget.RemoteViews);
-    public boolean onLoadClass(java.lang.Class);
-    public void overrideTextColors(int);
-    public boolean prefersAsyncApply();
-    public void reapply(android.content.Context, android.view.View);
-    public void reapply(android.content.Context, android.view.View, android.widget.RemoteViews$OnClickHandler);
-    public android.os.CancellationSignal reapplyAsync(android.content.Context, android.view.View, java.util.concurrent.Executor, android.widget.RemoteViews$OnViewAppliedListener);
-    public android.os.CancellationSignal reapplyAsync(android.content.Context, android.view.View, java.util.concurrent.Executor, android.widget.RemoteViews$OnViewAppliedListener, android.widget.RemoteViews$OnClickHandler);
-    public void reduceImageSizes(int, int);
-    public void removeAllViews(int);
-    public void removeAllViewsExceptId(int, int);
-    public void setAccessibilityTraversalAfter(int, int);
-    public void setAccessibilityTraversalBefore(int, int);
-    public void setApplyTheme(int);
-    public void setBitmap(int, java.lang.String, android.graphics.Bitmap);
-    public void setBoolean(int, java.lang.String, boolean);
-    public void setBundle(int, java.lang.String, android.os.Bundle);
-    public void setByte(int, java.lang.String, byte);
-    public void setChar(int, java.lang.String, char);
-    public void setCharSequence(int, java.lang.String, java.lang.CharSequence);
-    public void setChronometer(int, long, java.lang.String, boolean);
-    public void setChronometerCountDown(int, boolean);
-    public void setColorStateList(int, java.lang.String, android.content.res.ColorStateList);
-    public void setContentDescription(int, java.lang.CharSequence);
-    public void setDisplayedChild(int, int);
-    public void setDouble(int, java.lang.String, double);
-    public void setDrawableTint(int, boolean, int, android.graphics.PorterDuff$Mode);
-    public void setEmptyView(int, int);
-    public void setFloat(int, java.lang.String, float);
-    public void setIcon(int, java.lang.String, android.graphics.drawable.Icon);
-    public void setImageViewBitmap(int, android.graphics.Bitmap);
-    public void setImageViewIcon(int, android.graphics.drawable.Icon);
-    public void setImageViewResource(int, int);
-    public void setImageViewUri(int, android.net.Uri);
-    public void setInt(int, java.lang.String, int);
-    public void setIntent(int, java.lang.String, android.content.Intent);
-    public void setLabelFor(int, int);
-    public void setLong(int, java.lang.String, long);
-    public void setOnClickFillInIntent(int, android.content.Intent);
-    public void setOnClickPendingIntent(int, android.app.PendingIntent);
-    public void setPendingIntentTemplate(int, android.app.PendingIntent);
-    public void setProgressBackgroundTintList(int, android.content.res.ColorStateList);
-    public void setProgressBar(int, int, int, boolean);
-    public void setProgressIndeterminateTintList(int, android.content.res.ColorStateList);
-    public void setProgressTintList(int, android.content.res.ColorStateList);
-    public void setReapplyDisallowed();
-    public void setRelativeScrollPosition(int, int);
-    public void setRemoteAdapter(int, int, android.content.Intent);
-    public void setRemoteAdapter(int, android.content.Intent);
-    public void setRemoteAdapter(int, java.util.ArrayList, int);
-    public void setRemoteInputs(int, android.app.RemoteInput[]);
-    public void setScrollPosition(int, int);
-    public void setShort(int, java.lang.String, short);
-    public void setString(int, java.lang.String, java.lang.String);
-    public void setTextColor(int, int);
-    public void setTextColor(int, android.content.res.ColorStateList);
-    public void setTextViewCompoundDrawables(int, int, int, int, int);
-    public void setTextViewCompoundDrawables(int, android.graphics.drawable.Icon, android.graphics.drawable.Icon, android.graphics.drawable.Icon, android.graphics.drawable.Icon);
-    public void setTextViewCompoundDrawablesRelative(int, int, int, int, int);
-    public void setTextViewCompoundDrawablesRelative(int, android.graphics.drawable.Icon, android.graphics.drawable.Icon, android.graphics.drawable.Icon, android.graphics.drawable.Icon);
-    public void setTextViewText(int, java.lang.CharSequence);
-    public void setTextViewTextSize(int, int, float);
-    public void setUri(int, java.lang.String, android.net.Uri);
-    public void setViewLayoutMarginBottomDimen(int, int);
-    public void setViewLayoutMarginEnd(int, int);
-    public void setViewLayoutMarginEndDimen(int, int);
-    public void setViewLayoutWidth(int, int);
-    public void setViewPadding(int, int, int, int, int);
-    public void setViewVisibility(int, int);
-    public void showNext(int);
-    public void showPrevious(int);
-    public void visitUris(java.util.function.Consumer);
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public android.content.pm.ApplicationInfo mApplication;
-}
-
--keep class android.widget.RemoteViews$OnClickHandler {
-    <init>();
-
-    public boolean onClickHandler(android.view.View, android.app.PendingIntent, android.content.Intent);
-    public boolean onClickHandler(android.view.View, android.app.PendingIntent, android.content.Intent, int);
-    public void setEnterAnimationId(int);
-
-
-}
-
--keep class android.widget.RemoteViews$OnViewAppliedListener {
-
-    public abstract void onError(java.lang.Exception);
-    public abstract void onViewApplied(android.view.View);
-
-
-}
-
--keep class android.widget.SpinnerAdapter {
-
-    public abstract android.view.View getDropDownView(int, android.view.View, android.view.ViewGroup);
-
-
-}
-
--keep class android.widget.Toolbar {
-    <init>(android.content.Context);
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(android.content.Context, android.util.AttributeSet, int);
-    <init>(android.content.Context, android.util.AttributeSet, int, int);
-
-    public boolean canShowOverflowMenu();
-    protected boolean checkLayoutParams(android.view.ViewGroup$LayoutParams);
-    public void collapseActionView();
-    public void dismissPopupMenus();
-    protected android.widget.Toolbar$LayoutParams generateDefaultLayoutParams();
-    protected android.view.ViewGroup$LayoutParams generateDefaultLayoutParams();
-    public android.widget.Toolbar$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    protected android.widget.Toolbar$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    protected android.view.ViewGroup$LayoutParams generateLayoutParams(android.view.ViewGroup$LayoutParams);
-    public android.view.ViewGroup$LayoutParams generateLayoutParams(android.util.AttributeSet);
-    public int getContentInsetEnd();
-    public int getContentInsetEndWithActions();
-    public int getContentInsetLeft();
-    public int getContentInsetRight();
-    public int getContentInsetStart();
-    public int getContentInsetStartWithNavigation();
-    public int getCurrentContentInsetEnd();
-    public int getCurrentContentInsetLeft();
-    public int getCurrentContentInsetRight();
-    public int getCurrentContentInsetStart();
-    public android.graphics.drawable.Drawable getLogo();
-    public java.lang.CharSequence getLogoDescription();
-    public android.view.Menu getMenu();
-    public java.lang.CharSequence getNavigationContentDescription();
-    public android.graphics.drawable.Drawable getNavigationIcon();
-    public android.view.View getNavigationView();
-    public android.graphics.drawable.Drawable getOverflowIcon();
-    public int getPopupTheme();
-    public java.lang.CharSequence getSubtitle();
-    public java.lang.CharSequence getTitle();
-    public int getTitleMarginBottom();
-    public int getTitleMarginEnd();
-    public int getTitleMarginStart();
-    public int getTitleMarginTop();
-    public com.android.internal.widget.DecorToolbar getWrapper();
-    public boolean hasExpandedActionView();
-    public boolean hideOverflowMenu();
-    public void inflateMenu(int);
-    public boolean isOverflowMenuShowPending();
-    public boolean isOverflowMenuShowing();
-    public boolean isTitleTruncated();
-    protected void onAttachedToWindow();
-    protected void onDetachedFromWindow();
-    protected void onLayout(boolean, int, int, int, int);
-    protected void onMeasure(int, int);
-    protected void onRestoreInstanceState(android.os.Parcelable);
-    public void onRtlPropertiesChanged(int);
-    protected android.os.Parcelable onSaveInstanceState();
-    protected void onSetLayoutParams(android.view.View, android.view.ViewGroup$LayoutParams);
-    public boolean onTouchEvent(android.view.MotionEvent);
-    public void setCollapsible(boolean);
-    public void setContentInsetEndWithActions(int);
-    public void setContentInsetStartWithNavigation(int);
-    public void setContentInsetsAbsolute(int, int);
-    public void setContentInsetsRelative(int, int);
-    public void setLogo(int);
-    public void setLogo(android.graphics.drawable.Drawable);
-    public void setLogoDescription(int);
-    public void setLogoDescription(java.lang.CharSequence);
-    public void setMenu(com.android.internal.view.menu.MenuBuilder, android.widget.ActionMenuPresenter);
-    public void setMenuCallbacks(com.android.internal.view.menu.MenuPresenter$Callback, com.android.internal.view.menu.MenuBuilder$Callback);
-    public void setNavigationContentDescription(int);
-    public void setNavigationContentDescription(java.lang.CharSequence);
-    public void setNavigationIcon(int);
-    public void setNavigationIcon(android.graphics.drawable.Drawable);
-    public void setNavigationOnClickListener(android.view.View$OnClickListener);
-    public void setOnMenuItemClickListener(android.widget.Toolbar$OnMenuItemClickListener);
-    public void setOverflowIcon(android.graphics.drawable.Drawable);
-    public void setPopupTheme(int);
-    public void setSubtitle(int);
-    public void setSubtitle(java.lang.CharSequence);
-    public void setSubtitleTextAppearance(android.content.Context, int);
-    public void setSubtitleTextColor(int);
-    public void setTitle(int);
-    public void setTitle(java.lang.CharSequence);
-    public void setTitleMargin(int, int, int, int);
-    public void setTitleMarginBottom(int);
-    public void setTitleMarginEnd(int);
-    public void setTitleMarginStart(int);
-    public void setTitleMarginTop(int);
-    public void setTitleTextAppearance(android.content.Context, int);
-    public void setTitleTextColor(int);
-    public boolean showOverflowMenu();
-
-
-}
-
--keep class android.widget.Toolbar$LayoutParams {
-    <init>(android.content.Context, android.util.AttributeSet);
-    <init>(int, int);
-    <init>(int, int, int);
-    <init>(int);
-    <init>(android.widget.Toolbar$LayoutParams);
-    <init>(android.app.ActionBar$LayoutParams);
-    <init>(android.view.ViewGroup$MarginLayoutParams);
-    <init>(android.view.ViewGroup$LayoutParams);
-
-
-
-}
-
--keep class android.widget.Toolbar$OnMenuItemClickListener {
-
-    public abstract boolean onMenuItemClick(android.view.MenuItem);
-
-
-}
-
--keep class com.android.internal.app.IAppOpsActiveCallback {
-
-    public abstract void opActiveChanged(int, int, java.lang.String, boolean);
-
-
-}
-
--keep class com.android.internal.app.IAppOpsCallback {
-
-    public abstract void opChanged(int, int, java.lang.String);
-
-
-}
-
--keep class com.android.internal.app.IAppOpsService {
-
-    public abstract int checkAudioOperation(int, int, int, java.lang.String);
-    public abstract int checkOperation(int, int, java.lang.String);
-    public abstract int checkPackage(int, java.lang.String);
-    public abstract void finishOperation(android.os.IBinder, int, int, java.lang.String);
-    public abstract java.util.List getOpsForPackage(int, java.lang.String, int[]);
-    public abstract java.util.List getPackagesForOps(int[]);
-    public abstract android.os.IBinder getToken(android.os.IBinder);
-    public abstract java.util.List getUidOps(int, int[]);
-    public abstract boolean isOperationActive(int, int, java.lang.String);
-    public abstract int noteOperation(int, int, java.lang.String);
-    public abstract int noteProxyOperation(int, java.lang.String, int, java.lang.String);
-    public abstract int permissionToOpCode(java.lang.String);
-    public abstract void removeUser(int);
-    public abstract void resetAllModes(int, java.lang.String);
-    public abstract void setAudioRestriction(int, int, int, int, java.lang.String[]);
-    public abstract void setMode(int, int, java.lang.String, int);
-    public abstract void setUidMode(int, int, int);
-    public abstract void setUserRestriction(int, boolean, android.os.IBinder, int, java.lang.String[]);
-    public abstract void setUserRestrictions(android.os.Bundle, android.os.IBinder, int);
-    public abstract int startOperation(android.os.IBinder, int, int, java.lang.String, boolean);
-    public abstract void startWatchingActive(int[], com.android.internal.app.IAppOpsActiveCallback);
-    public abstract void startWatchingMode(int, java.lang.String, com.android.internal.app.IAppOpsCallback);
-    public abstract void startWatchingModeWithFlags(int, java.lang.String, int, com.android.internal.app.IAppOpsCallback);
-    public abstract void stopWatchingActive(com.android.internal.app.IAppOpsActiveCallback);
-    public abstract void stopWatchingMode(com.android.internal.app.IAppOpsCallback);
-
-
-}
-
--keep class com.android.internal.app.IVoiceInteractionSessionShowCallback {
-
-    public abstract void onFailed();
-    public abstract void onShown();
-
-
-}
-
--keep class com.android.internal.app.IVoiceInteractor {
-
-    public abstract com.android.internal.app.IVoiceInteractorRequest startAbortVoice(java.lang.String, com.android.internal.app.IVoiceInteractorCallback, android.app.VoiceInteractor$Prompt, android.os.Bundle);
-    public abstract com.android.internal.app.IVoiceInteractorRequest startCommand(java.lang.String, com.android.internal.app.IVoiceInteractorCallback, java.lang.String, android.os.Bundle);
-    public abstract com.android.internal.app.IVoiceInteractorRequest startCompleteVoice(java.lang.String, com.android.internal.app.IVoiceInteractorCallback, android.app.VoiceInteractor$Prompt, android.os.Bundle);
-    public abstract com.android.internal.app.IVoiceInteractorRequest startConfirmation(java.lang.String, com.android.internal.app.IVoiceInteractorCallback, android.app.VoiceInteractor$Prompt, android.os.Bundle);
-    public abstract com.android.internal.app.IVoiceInteractorRequest startPickOption(java.lang.String, com.android.internal.app.IVoiceInteractorCallback, android.app.VoiceInteractor$Prompt, android.app.VoiceInteractor$PickOptionRequest$Option[], android.os.Bundle);
-    public abstract boolean[] supportsCommands(java.lang.String, java.lang.String[]);
-
-
-}
-
--keep class com.android.internal.app.IVoiceInteractorCallback {
-
-    public abstract void deliverAbortVoiceResult(com.android.internal.app.IVoiceInteractorRequest, android.os.Bundle);
-    public abstract void deliverCancel(com.android.internal.app.IVoiceInteractorRequest);
-    public abstract void deliverCommandResult(com.android.internal.app.IVoiceInteractorRequest, boolean, android.os.Bundle);
-    public abstract void deliverCompleteVoiceResult(com.android.internal.app.IVoiceInteractorRequest, android.os.Bundle);
-    public abstract void deliverConfirmationResult(com.android.internal.app.IVoiceInteractorRequest, boolean, android.os.Bundle);
-    public abstract void deliverPickOptionResult(com.android.internal.app.IVoiceInteractorRequest, boolean, android.app.VoiceInteractor$PickOptionRequest$Option[], android.os.Bundle);
-
-
-}
-
--keep class com.android.internal.app.IVoiceInteractorRequest {
-
-    public abstract void cancel();
-
-
-}
-
--keep class com.android.internal.content.ReferrerIntent {
-    <init>(android.content.Intent, java.lang.String);
-
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public void writeToParcel(android.os.Parcel, int);
-
-
-    public static android.os.Parcelable$Creator CREATOR;
-    public java.lang.String mReferrer;
-}
-
--keep class com.android.internal.os.IResultReceiver {
-
-    public abstract void send(int, android.os.Bundle);
-
-
-}
-
--keep class com.android.internal.policy.IKeyguardDismissCallback {
-
-    public abstract void onDismissCancelled();
-    public abstract void onDismissError();
-    public abstract void onDismissSucceeded();
-
-
-}
-
--keep class com.android.internal.util.FunctionalUtils {
-
-    public static java.lang.Runnable handleExceptions(com.android.internal.util.FunctionalUtils$ThrowingRunnable, java.util.function.Consumer);
-    public static java.util.function.Consumer ignoreRemoteException(com.android.internal.util.FunctionalUtils$RemoteExceptionIgnoringConsumer);
-    public static java.util.function.Consumer uncheckExceptions(com.android.internal.util.FunctionalUtils$ThrowingConsumer);
-
-
-}
-
--keep class com.android.internal.util.FunctionalUtils$RemoteExceptionIgnoringConsumer {
-
-    public void accept(java.lang.Object);
-    public abstract void acceptOrThrow(java.lang.Object);
-
-
-}
-
--keep class com.android.internal.util.FunctionalUtils$ThrowingConsumer {
-
-    public void accept(java.lang.Object);
-    public abstract void acceptOrThrow(java.lang.Object);
-
-
-}
-
--keep class com.android.internal.util.FunctionalUtils$ThrowingRunnable {
-
-    public void run();
-    public abstract void runOrThrow();
-
-
-}
-
--keep class com.android.internal.util.FunctionalUtils$ThrowingSupplier {
-
-    public abstract java.lang.Object getOrThrow();
-
-
-}
-
--keep class com.android.internal.util.IndentingPrintWriter {
-    <init>(java.io.Writer, java.lang.String);
-    <init>(java.io.Writer, java.lang.String, int);
-
-    public com.android.internal.util.IndentingPrintWriter decreaseIndent();
-    public com.android.internal.util.IndentingPrintWriter increaseIndent();
-    public com.android.internal.util.IndentingPrintWriter printHexPair(java.lang.String, int);
-    public com.android.internal.util.IndentingPrintWriter printPair(java.lang.String, java.lang.Object);
-    public com.android.internal.util.IndentingPrintWriter printPair(java.lang.String, java.lang.Object[]);
-    public void println();
-    public com.android.internal.util.IndentingPrintWriter setIndent(java.lang.String);
-    public com.android.internal.util.IndentingPrintWriter setIndent(int);
-    public void write(int);
-    public void write(java.lang.String, int, int);
-    public void write(char[], int, int);
-
-
-}
-
--keep class com.android.internal.view.IDragAndDropPermissions {
-
-    public abstract void release();
-    public abstract void take(android.os.IBinder);
-    public abstract void takeTransient(android.os.IBinder);
-
-
-}
-
--keep class com.android.internal.view.menu.BaseMenuPresenter {
-    <init>(android.content.Context, int, int);
-
-    protected void addItemView(android.view.View, int);
-    public abstract void bindItemView(com.android.internal.view.menu.MenuItemImpl, com.android.internal.view.menu.MenuView$ItemView);
-    public boolean collapseItemActionView(com.android.internal.view.menu.MenuBuilder, com.android.internal.view.menu.MenuItemImpl);
-    public com.android.internal.view.menu.MenuView$ItemView createItemView(android.view.ViewGroup);
-    public boolean expandItemActionView(com.android.internal.view.menu.MenuBuilder, com.android.internal.view.menu.MenuItemImpl);
-    protected boolean filterLeftoverView(android.view.ViewGroup, int);
-    public boolean flagActionItems();
-    public com.android.internal.view.menu.MenuPresenter$Callback getCallback();
-    public int getId();
-    public android.view.View getItemView(com.android.internal.view.menu.MenuItemImpl, android.view.View, android.view.ViewGroup);
-    public com.android.internal.view.menu.MenuView getMenuView(android.view.ViewGroup);
-    public void initForMenu(android.content.Context, com.android.internal.view.menu.MenuBuilder);
-    public void onCloseMenu(com.android.internal.view.menu.MenuBuilder, boolean);
-    public boolean onSubMenuSelected(com.android.internal.view.menu.SubMenuBuilder);
-    public void setCallback(com.android.internal.view.menu.MenuPresenter$Callback);
-    public void setId(int);
-    public boolean shouldIncludeItem(int, com.android.internal.view.menu.MenuItemImpl);
-    public void updateMenuView(boolean);
-
-
-    protected android.content.Context mContext;
-    protected android.view.LayoutInflater mInflater;
-    protected com.android.internal.view.menu.MenuBuilder mMenu;
-    protected com.android.internal.view.menu.MenuView mMenuView;
-    protected android.content.Context mSystemContext;
-    protected android.view.LayoutInflater mSystemInflater;
-}
-
--keep class com.android.internal.view.menu.MenuBuilder {
-    <init>(android.content.Context);
-
-    public android.view.MenuItem add(java.lang.CharSequence);
-    public android.view.MenuItem add(int);
-    public android.view.MenuItem add(int, int, int, java.lang.CharSequence);
-    public android.view.MenuItem add(int, int, int, int);
-    public int addIntentOptions(int, int, int, android.content.ComponentName, android.content.Intent[], android.content.Intent, int, android.view.MenuItem[]);
-    public void addMenuPresenter(com.android.internal.view.menu.MenuPresenter);
-    public void addMenuPresenter(com.android.internal.view.menu.MenuPresenter, android.content.Context);
-    public android.view.SubMenu addSubMenu(java.lang.CharSequence);
-    public android.view.SubMenu addSubMenu(int);
-    public android.view.SubMenu addSubMenu(int, int, int, java.lang.CharSequence);
-    public android.view.SubMenu addSubMenu(int, int, int, int);
-    public void changeMenuMode();
-    public void clear();
-    public void clearAll();
-    public void clearHeader();
-    public void close(boolean);
-    public void close();
-    public boolean collapseItemActionView(com.android.internal.view.menu.MenuItemImpl);
-    public boolean expandItemActionView(com.android.internal.view.menu.MenuItemImpl);
-    public int findGroupIndex(int);
-    public int findGroupIndex(int, int);
-    public android.view.MenuItem findItem(int);
-    public int findItemIndex(int);
-    public void flagActionItems();
-    public java.util.ArrayList getActionItems();
-    protected java.lang.String getActionViewStatesKey();
-    public android.content.Context getContext();
-    public com.android.internal.view.menu.MenuItemImpl getExpandedItem();
-    public android.graphics.drawable.Drawable getHeaderIcon();
-    public java.lang.CharSequence getHeaderTitle();
-    public android.view.View getHeaderView();
-    public android.view.MenuItem getItem(int);
-    public java.util.ArrayList getNonActionItems();
-    public com.android.internal.view.menu.MenuBuilder getRootMenu();
-    public java.util.ArrayList getVisibleItems();
-    public boolean hasVisibleItems();
-    public boolean isGroupDividerEnabled();
-    public boolean isShortcutKey(int, android.view.KeyEvent);
-    public boolean isShortcutsVisible();
-    public void onItemsChanged(boolean);
-    public boolean performIdentifierAction(int, int);
-    public boolean performItemAction(android.view.MenuItem, int);
-    public boolean performItemAction(android.view.MenuItem, com.android.internal.view.menu.MenuPresenter, int);
-    public boolean performShortcut(int, android.view.KeyEvent, int);
-    public void removeGroup(int);
-    public void removeItem(int);
-    public void removeItemAt(int);
-    public void removeMenuPresenter(com.android.internal.view.menu.MenuPresenter);
-    public void restoreActionViewStates(android.os.Bundle);
-    public void restorePresenterStates(android.os.Bundle);
-    public void saveActionViewStates(android.os.Bundle);
-    public void savePresenterStates(android.os.Bundle);
-    public void setCallback(com.android.internal.view.menu.MenuBuilder$Callback);
-    public void setCurrentMenuInfo(android.view.ContextMenu$ContextMenuInfo);
-    public com.android.internal.view.menu.MenuBuilder setDefaultShowAsAction(int);
-    public void setGroupCheckable(int, boolean, boolean);
-    public void setGroupDividerEnabled(boolean);
-    public void setGroupEnabled(int, boolean);
-    public void setGroupVisible(int, boolean);
-    protected com.android.internal.view.menu.MenuBuilder setHeaderIconInt(android.graphics.drawable.Drawable);
-    protected com.android.internal.view.menu.MenuBuilder setHeaderIconInt(int);
-    protected com.android.internal.view.menu.MenuBuilder setHeaderTitleInt(java.lang.CharSequence);
-    protected com.android.internal.view.menu.MenuBuilder setHeaderTitleInt(int);
-    protected com.android.internal.view.menu.MenuBuilder setHeaderViewInt(android.view.View);
-    public void setQwertyMode(boolean);
-    public void setShortcutsVisible(boolean);
-    public int size();
-    public void startDispatchingItemsChanged();
-    public void stopDispatchingItemsChanged();
-
-
-}
-
--keep class com.android.internal.view.menu.MenuBuilder$Callback {
-
-    public abstract boolean onMenuItemSelected(com.android.internal.view.menu.MenuBuilder, android.view.MenuItem);
-    public abstract void onMenuModeChange(com.android.internal.view.menu.MenuBuilder);
-
-
-}
-
--keep class com.android.internal.view.menu.MenuItemImpl {
-
-    public void actionFormatChanged();
-    public boolean collapseActionView();
-    public boolean expandActionView();
-    public android.view.ActionProvider getActionProvider();
-    public android.view.View getActionView();
-    public int getAlphabeticModifiers();
-    public char getAlphabeticShortcut();
-    public java.lang.CharSequence getContentDescription();
-    public int getGroupId();
-    public android.graphics.drawable.Drawable getIcon();
-    public android.content.res.ColorStateList getIconTintList();
-    public android.graphics.PorterDuff$Mode getIconTintMode();
-    public android.content.Intent getIntent();
-    public int getItemId();
-    public android.view.ContextMenu$ContextMenuInfo getMenuInfo();
-    public int getNumericModifiers();
-    public char getNumericShortcut();
-    public int getOrder();
-    public int getOrdering();
-    public android.view.SubMenu getSubMenu();
-    public java.lang.CharSequence getTitle();
-    public java.lang.CharSequence getTitleCondensed();
-    public java.lang.CharSequence getTooltipText();
-    public boolean hasCollapsibleActionView();
-    public boolean hasSubMenu();
-    public boolean invoke();
-    public boolean isActionButton();
-    public boolean isActionViewExpanded();
-    public boolean isCheckable();
-    public boolean isChecked();
-    public boolean isEnabled();
-    public boolean isExclusiveCheckable();
-    public boolean isVisible();
-    public boolean requestsActionButton();
-    public boolean requiresActionButton();
-    public boolean requiresOverflow();
-    public android.view.MenuItem setActionProvider(android.view.ActionProvider);
-    public android.view.MenuItem setActionView(android.view.View);
-    public android.view.MenuItem setActionView(int);
-    public void setActionViewExpanded(boolean);
-    public android.view.MenuItem setAlphabeticShortcut(char);
-    public android.view.MenuItem setAlphabeticShortcut(char, int);
-    public android.view.MenuItem setCallback(java.lang.Runnable);
-    public android.view.MenuItem setCheckable(boolean);
-    public android.view.MenuItem setChecked(boolean);
-    public android.view.MenuItem setContentDescription(java.lang.CharSequence);
-    public android.view.MenuItem setEnabled(boolean);
-    public void setExclusiveCheckable(boolean);
-    public android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
-    public android.view.MenuItem setIcon(int);
-    public android.view.MenuItem setIconTintList(android.content.res.ColorStateList);
-    public android.view.MenuItem setIconTintMode(android.graphics.PorterDuff$Mode);
-    public android.view.MenuItem setIntent(android.content.Intent);
-    public void setIsActionButton(boolean);
-    public android.view.MenuItem setNumericShortcut(char);
-    public android.view.MenuItem setNumericShortcut(char, int);
-    public android.view.MenuItem setOnActionExpandListener(android.view.MenuItem$OnActionExpandListener);
-    public android.view.MenuItem setOnMenuItemClickListener(android.view.MenuItem$OnMenuItemClickListener);
-    public android.view.MenuItem setShortcut(char, char);
-    public android.view.MenuItem setShortcut(char, char, int, int);
-    public void setShowAsAction(int);
-    public android.view.MenuItem setShowAsActionFlags(int);
-    public android.view.MenuItem setTitle(java.lang.CharSequence);
-    public android.view.MenuItem setTitle(int);
-    public android.view.MenuItem setTitleCondensed(java.lang.CharSequence);
-    public android.view.MenuItem setTooltipText(java.lang.CharSequence);
-    public android.view.MenuItem setVisible(boolean);
-    public boolean shouldShowIcon();
-    public boolean showsTextAsAction();
-    public java.lang.String toString();
-
-
-}
-
--keep class com.android.internal.view.menu.MenuPresenter {
-
-    public abstract boolean collapseItemActionView(com.android.internal.view.menu.MenuBuilder, com.android.internal.view.menu.MenuItemImpl);
-    public abstract boolean expandItemActionView(com.android.internal.view.menu.MenuBuilder, com.android.internal.view.menu.MenuItemImpl);
-    public abstract boolean flagActionItems();
-    public abstract int getId();
-    public abstract com.android.internal.view.menu.MenuView getMenuView(android.view.ViewGroup);
-    public abstract void initForMenu(android.content.Context, com.android.internal.view.menu.MenuBuilder);
-    public abstract void onCloseMenu(com.android.internal.view.menu.MenuBuilder, boolean);
-    public abstract void onRestoreInstanceState(android.os.Parcelable);
-    public abstract android.os.Parcelable onSaveInstanceState();
-    public abstract boolean onSubMenuSelected(com.android.internal.view.menu.SubMenuBuilder);
-    public abstract void setCallback(com.android.internal.view.menu.MenuPresenter$Callback);
-    public abstract void updateMenuView(boolean);
-
-
-}
-
--keep class com.android.internal.view.menu.MenuPresenter$Callback {
-
-    public abstract void onCloseMenu(com.android.internal.view.menu.MenuBuilder, boolean);
-    public abstract boolean onOpenSubMenu(com.android.internal.view.menu.MenuBuilder);
-
-
-}
-
--keep class com.android.internal.view.menu.MenuView {
-
-    public abstract int getWindowAnimations();
-    public abstract void initialize(com.android.internal.view.menu.MenuBuilder);
-
-
-}
-
--keep class com.android.internal.view.menu.MenuView$ItemView {
-
-    public abstract com.android.internal.view.menu.MenuItemImpl getItemData();
-    public abstract void initialize(com.android.internal.view.menu.MenuItemImpl, int);
-    public abstract boolean prefersCondensedTitle();
-    public abstract void setCheckable(boolean);
-    public abstract void setChecked(boolean);
-    public abstract void setEnabled(boolean);
-    public abstract void setIcon(android.graphics.drawable.Drawable);
-    public abstract void setShortcut(boolean, char);
-    public abstract void setTitle(java.lang.CharSequence);
-    public abstract boolean showsIcon();
-
-
-}
-
--keep class com.android.internal.view.menu.SubMenuBuilder {
-    <init>(android.content.Context, com.android.internal.view.menu.MenuBuilder, com.android.internal.view.menu.MenuItemImpl);
-
-    public boolean collapseItemActionView(com.android.internal.view.menu.MenuItemImpl);
-    public boolean expandItemActionView(com.android.internal.view.menu.MenuItemImpl);
-    public java.lang.String getActionViewStatesKey();
-    public android.view.MenuItem getItem();
-    public android.view.Menu getParentMenu();
-    public com.android.internal.view.menu.MenuBuilder getRootMenu();
-    public boolean isGroupDividerEnabled();
-    public boolean isQwertyMode();
-    public boolean isShortcutsVisible();
-    public void setCallback(com.android.internal.view.menu.MenuBuilder$Callback);
-    public void setGroupDividerEnabled(boolean);
-    public android.view.SubMenu setHeaderIcon(android.graphics.drawable.Drawable);
-    public android.view.SubMenu setHeaderIcon(int);
-    public android.view.SubMenu setHeaderTitle(java.lang.CharSequence);
-    public android.view.SubMenu setHeaderTitle(int);
-    public android.view.SubMenu setHeaderView(android.view.View);
-    public android.view.SubMenu setIcon(android.graphics.drawable.Drawable);
-    public android.view.SubMenu setIcon(int);
-    public void setQwertyMode(boolean);
-    public void setShortcutsVisible(boolean);
-
-
-}
-
--keep class com.android.internal.widget.DecorToolbar {
-
-    public abstract void animateToVisibility(int);
-    public abstract boolean canShowOverflowMenu();
-    public abstract boolean canSplit();
-    public abstract void collapseActionView();
-    public abstract void dismissPopupMenus();
-    public abstract android.content.Context getContext();
-    public abstract android.view.View getCustomView();
-    public abstract int getDisplayOptions();
-    public abstract int getDropdownItemCount();
-    public abstract int getDropdownSelectedPosition();
-    public abstract int getHeight();
-    public abstract android.view.Menu getMenu();
-    public abstract int getNavigationMode();
-    public abstract java.lang.CharSequence getSubtitle();
-    public abstract java.lang.CharSequence getTitle();
-    public abstract android.view.ViewGroup getViewGroup();
-    public abstract int getVisibility();
-    public abstract boolean hasEmbeddedTabs();
-    public abstract boolean hasExpandedActionView();
-    public abstract boolean hasIcon();
-    public abstract boolean hasLogo();
-    public abstract boolean hideOverflowMenu();
-    public abstract void initIndeterminateProgress();
-    public abstract void initProgress();
-    public abstract boolean isOverflowMenuShowPending();
-    public abstract boolean isOverflowMenuShowing();
-    public abstract boolean isSplit();
-    public abstract boolean isTitleTruncated();
-    public abstract void restoreHierarchyState(android.util.SparseArray);
-    public abstract void saveHierarchyState(android.util.SparseArray);
-    public abstract void setBackgroundDrawable(android.graphics.drawable.Drawable);
-    public abstract void setCollapsible(boolean);
-    public abstract void setCustomView(android.view.View);
-    public abstract void setDefaultNavigationContentDescription(int);
-    public abstract void setDefaultNavigationIcon(android.graphics.drawable.Drawable);
-    public abstract void setDisplayOptions(int);
-    public abstract void setDropdownParams(android.widget.SpinnerAdapter, android.widget.AdapterView$OnItemSelectedListener);
-    public abstract void setDropdownSelectedPosition(int);
-    public abstract void setEmbeddedTabView(com.android.internal.widget.ScrollingTabContainerView);
-    public abstract void setHomeButtonEnabled(boolean);
-    public abstract void setIcon(int);
-    public abstract void setIcon(android.graphics.drawable.Drawable);
-    public abstract void setLogo(int);
-    public abstract void setLogo(android.graphics.drawable.Drawable);
-    public abstract void setMenu(android.view.Menu, com.android.internal.view.menu.MenuPresenter$Callback);
-    public abstract void setMenuCallbacks(com.android.internal.view.menu.MenuPresenter$Callback, com.android.internal.view.menu.MenuBuilder$Callback);
-    public abstract void setMenuPrepared();
-    public abstract void setNavigationContentDescription(java.lang.CharSequence);
-    public abstract void setNavigationContentDescription(int);
-    public abstract void setNavigationIcon(android.graphics.drawable.Drawable);
-    public abstract void setNavigationIcon(int);
-    public abstract void setNavigationMode(int);
-    public abstract void setSplitToolbar(boolean);
-    public abstract void setSplitView(android.view.ViewGroup);
-    public abstract void setSplitWhenNarrow(boolean);
-    public abstract void setSubtitle(java.lang.CharSequence);
-    public abstract void setTitle(java.lang.CharSequence);
-    public abstract void setVisibility(int);
-    public abstract void setWindowCallback(android.view.Window$Callback);
-    public abstract void setWindowTitle(java.lang.CharSequence);
-    public abstract android.animation.Animator setupAnimatorToVisibility(int, long);
-    public abstract boolean showOverflowMenu();
-
-
-}
-
--keep class com.android.internal.widget.ScrollingTabContainerView {
-    <init>(android.content.Context);
-
-    public void addTab(android.app.ActionBar$Tab, boolean);
-    public void addTab(android.app.ActionBar$Tab, int, boolean);
-    public void animateToTab(int);
-    public void animateToVisibility(int);
-    public void onAttachedToWindow();
-    protected void onConfigurationChanged(android.content.res.Configuration);
-    public void onDetachedFromWindow();
-    public void onItemClick(android.widget.AdapterView, android.view.View, int, long);
-    public void onMeasure(int, int);
-    public void removeAllTabs();
-    public void removeTabAt(int);
-    public void setAllowCollapse(boolean);
-    public void setContentHeight(int);
-    public void setTabSelected(int);
-    public void updateTab(int);
-
-
-    protected com.android.internal.widget.ScrollingTabContainerView$VisibilityAnimListener mVisAnimListener;
-    protected android.animation.Animator mVisibilityAnim;
-}
-
--keep class com.android.internal.widget.ScrollingTabContainerView$VisibilityAnimListener {
-    <init>();
-
-    public void onAnimationCancel(android.animation.Animator);
-    public void onAnimationEnd(android.animation.Animator);
-    public void onAnimationRepeat(android.animation.Animator);
-    public void onAnimationStart(android.animation.Animator);
-    public com.android.internal.widget.ScrollingTabContainerView$VisibilityAnimListener withFinalVisibility(int);
-
-
-}
-
--keep class java.io.BufferedWriter {
-    <init>(java.io.Writer);
-    <init>(java.io.Writer, int);
-
-    public void close();
-    public void flush();
-    public void newLine();
-    public void write(int);
-    public void write(char[], int, int);
-    public void write(java.lang.String, int, int);
-
-
-}
-
--keep class java.io.ByteArrayOutputStream {
-    <init>();
-    <init>(int);
-
-    public void close();
-    public synchronized void reset();
-    public synchronized int size();
-    public synchronized byte[] toByteArray();
-    public synchronized java.lang.String toString();
-    public synchronized java.lang.String toString(java.lang.String);
-    public synchronized java.lang.String toString(int);
-    public synchronized void write(int);
-    public synchronized void write(byte[], int, int);
-    public synchronized void writeTo(java.io.OutputStream);
-
-
-    protected byte[] buf;
-    protected int count;
-}
-
--keep class java.io.DataOutputStream {
-    <init>(java.io.OutputStream);
-
-    public void flush();
-    public int size();
-    public synchronized void write(int);
-    public synchronized void write(byte[], int, int);
-    public void writeBoolean(boolean);
-    public void writeByte(int);
-    public void writeBytes(java.lang.String);
-    public void writeChar(int);
-    public void writeChars(java.lang.String);
-    public void writeDouble(double);
-    public void writeFloat(float);
-    public void writeInt(int);
-    public void writeLong(long);
-    public void writeShort(int);
-    public void writeUTF(java.lang.String);
-
-
-    protected int written;
-}
-
--keep class java.io.File {
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.String);
-    <init>(java.io.File, java.lang.String);
-    <init>(java.net.URI);
-
-    public boolean canExecute();
-    public boolean canRead();
-    public boolean canWrite();
-    public int compareTo(java.io.File);
-    public int compareTo(java.lang.Object);
-    public boolean createNewFile();
-    public static java.io.File createTempFile(java.lang.String, java.lang.String, java.io.File);
-    public static java.io.File createTempFile(java.lang.String, java.lang.String);
-    public boolean delete();
-    public void deleteOnExit();
-    public boolean equals(java.lang.Object);
-    public boolean exists();
-    public java.io.File getAbsoluteFile();
-    public java.lang.String getAbsolutePath();
-    public java.io.File getCanonicalFile();
-    public java.lang.String getCanonicalPath();
-    public long getFreeSpace();
-    public java.lang.String getName();
-    public java.lang.String getParent();
-    public java.io.File getParentFile();
-    public java.lang.String getPath();
-    public long getTotalSpace();
-    public long getUsableSpace();
-    public int hashCode();
-    public boolean isAbsolute();
-    public boolean isDirectory();
-    public boolean isFile();
-    public boolean isHidden();
-    public long lastModified();
-    public long length();
-    public java.lang.String[] list();
-    public java.lang.String[] list(java.io.FilenameFilter);
-    public java.io.File[] listFiles();
-    public java.io.File[] listFiles(java.io.FilenameFilter);
-    public java.io.File[] listFiles(java.io.FileFilter);
-    public static java.io.File[] listRoots();
-    public boolean mkdir();
-    public boolean mkdirs();
-    public boolean renameTo(java.io.File);
-    public boolean setExecutable(boolean, boolean);
-    public boolean setExecutable(boolean);
-    public boolean setLastModified(long);
-    public boolean setReadOnly();
-    public boolean setReadable(boolean, boolean);
-    public boolean setReadable(boolean);
-    public boolean setWritable(boolean, boolean);
-    public boolean setWritable(boolean);
-    public java.nio.file.Path toPath();
-    public java.lang.String toString();
-    public java.net.URI toURI();
-    public java.net.URL toURL();
-
-
-    public static java.lang.String pathSeparator;
-    public static char pathSeparatorChar;
-    public static java.lang.String separator;
-    public static char separatorChar;
-}
-
--keep class java.io.FileDescriptor {
-    <init>();
-
-    public int getInt$();
-    public boolean isSocket$();
-    public void setInt$(int);
-    public void sync();
-    public boolean valid();
-
-
-    public static java.io.FileDescriptor err;
-    public static java.io.FileDescriptor in;
-    public static java.io.FileDescriptor out;
-}
-
--keep class java.io.FileFilter {
-
-    public abstract boolean accept(java.io.File);
-
-
-}
-
--keep class java.io.FileInputStream {
-    <init>(java.lang.String);
-    <init>(java.io.File);
-    <init>(java.io.FileDescriptor);
-    <init>(java.io.FileDescriptor, boolean);
-
-    public int available();
-    public void close();
-    protected void finalize();
-    public java.nio.channels.FileChannel getChannel();
-    public java.io.FileDescriptor getFD();
-    public int read();
-    public int read(byte[]);
-    public int read(byte[], int, int);
-    public long skip(long);
-
-
-}
-
--keep class java.io.FileNotFoundException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.io.FileOutputStream {
-    <init>(java.lang.String);
-    <init>(java.lang.String, boolean);
-    <init>(java.io.File);
-    <init>(java.io.File, boolean);
-    <init>(java.io.FileDescriptor);
-    <init>(java.io.FileDescriptor, boolean);
-
-    public void close();
-    protected void finalize();
-    public java.nio.channels.FileChannel getChannel();
-    public java.io.FileDescriptor getFD();
-    public void write(int);
-    public void write(byte[]);
-    public void write(byte[], int, int);
-
-
-}
-
--keep class java.io.FilenameFilter {
-
-    public abstract boolean accept(java.io.File, java.lang.String);
-
-
-}
-
--keep class java.io.FilterOutputStream {
-    <init>(java.io.OutputStream);
-
-    public void close();
-    public void flush();
-    public void write(int);
-    public void write(byte[]);
-    public void write(byte[], int, int);
-
-
-    protected java.io.OutputStream out;
-}
-
--keep class java.io.IOException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.io.InputStream {
-    <init>();
-
-    public int available();
-    public void close();
-    public synchronized void mark(int);
-    public boolean markSupported();
-    public abstract int read();
-    public int read(byte[]);
-    public int read(byte[], int, int);
-    public synchronized void reset();
-    public long skip(long);
-
-
-}
-
--keep class java.io.InvalidObjectException {
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.io.ObjectStreamException {
-    <init>(java.lang.String);
-    <init>();
-
-
-
-}
-
--keep class java.io.OutputStream {
-    <init>();
-
-    public void close();
-    public void flush();
-    public abstract void write(int);
-    public void write(byte[]);
-    public void write(byte[], int, int);
-
-
-}
-
--keep class java.io.PrintStream {
-    <init>(java.io.OutputStream);
-    <init>(java.io.OutputStream, boolean);
-    <init>(java.io.OutputStream, boolean, java.lang.String);
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.String);
-    <init>(java.io.File);
-    <init>(java.io.File, java.lang.String);
-
-    public java.io.PrintStream append(java.lang.CharSequence);
-    public java.io.PrintStream append(java.lang.CharSequence, int, int);
-    public java.io.PrintStream append(char);
-    public java.lang.Appendable append(char);
-    public java.lang.Appendable append(java.lang.CharSequence, int, int);
-    public java.lang.Appendable append(java.lang.CharSequence);
-    public boolean checkError();
-    protected void clearError();
-    public void close();
-    public void flush();
-    public java.io.PrintStream format(java.lang.String, java.lang.Object[]);
-    public java.io.PrintStream format(java.util.Locale, java.lang.String, java.lang.Object[]);
-    public void print(boolean);
-    public void print(char);
-    public void print(int);
-    public void print(long);
-    public void print(float);
-    public void print(double);
-    public void print(char[]);
-    public void print(java.lang.String);
-    public void print(java.lang.Object);
-    public java.io.PrintStream printf(java.lang.String, java.lang.Object[]);
-    public java.io.PrintStream printf(java.util.Locale, java.lang.String, java.lang.Object[]);
-    public void println();
-    public void println(boolean);
-    public void println(char);
-    public void println(int);
-    public void println(long);
-    public void println(float);
-    public void println(double);
-    public void println(char[]);
-    public void println(java.lang.String);
-    public void println(java.lang.Object);
-    protected void setError();
-    public void write(int);
-    public void write(byte[], int, int);
-
-
-}
-
--keep class java.io.PrintWriter {
-    <init>(java.io.Writer);
-    <init>(java.io.Writer, boolean);
-    <init>(java.io.OutputStream);
-    <init>(java.io.OutputStream, boolean);
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.String);
-    <init>(java.io.File);
-    <init>(java.io.File, java.lang.String);
-
-    public java.io.PrintWriter append(java.lang.CharSequence);
-    public java.io.PrintWriter append(java.lang.CharSequence, int, int);
-    public java.io.PrintWriter append(char);
-    public java.io.Writer append(char);
-    public java.io.Writer append(java.lang.CharSequence, int, int);
-    public java.io.Writer append(java.lang.CharSequence);
-    public java.lang.Appendable append(char);
-    public java.lang.Appendable append(java.lang.CharSequence, int, int);
-    public java.lang.Appendable append(java.lang.CharSequence);
-    public boolean checkError();
-    protected void clearError();
-    public void close();
-    public void flush();
-    public java.io.PrintWriter format(java.lang.String, java.lang.Object[]);
-    public java.io.PrintWriter format(java.util.Locale, java.lang.String, java.lang.Object[]);
-    public void print(boolean);
-    public void print(char);
-    public void print(int);
-    public void print(long);
-    public void print(float);
-    public void print(double);
-    public void print(char[]);
-    public void print(java.lang.String);
-    public void print(java.lang.Object);
-    public java.io.PrintWriter printf(java.lang.String, java.lang.Object[]);
-    public java.io.PrintWriter printf(java.util.Locale, java.lang.String, java.lang.Object[]);
-    public void println();
-    public void println(boolean);
-    public void println(char);
-    public void println(int);
-    public void println(long);
-    public void println(float);
-    public void println(double);
-    public void println(char[]);
-    public void println(java.lang.String);
-    public void println(java.lang.Object);
-    protected void setError();
-    public void write(int);
-    public void write(char[], int, int);
-    public void write(char[]);
-    public void write(java.lang.String, int, int);
-    public void write(java.lang.String);
-
-
-    protected java.io.Writer out;
-}
-
--keep class java.io.Reader {
-    <init>();
-    <init>(java.lang.Object);
-
-    public abstract void close();
-    public void mark(int);
-    public boolean markSupported();
-    public int read(java.nio.CharBuffer);
-    public int read();
-    public int read(char[]);
-    public abstract int read(char[], int, int);
-    public boolean ready();
-    public void reset();
-    public long skip(long);
-
-
-    protected java.lang.Object lock;
-}
-
--keep class java.io.Serializable {
-
-
-
-}
-
--keep class java.io.SyncFailedException {
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.io.UnsupportedEncodingException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.io.Writer {
-    <init>();
-    <init>(java.lang.Object);
-
-    public java.io.Writer append(java.lang.CharSequence);
-    public java.io.Writer append(java.lang.CharSequence, int, int);
-    public java.io.Writer append(char);
-    public java.lang.Appendable append(char);
-    public java.lang.Appendable append(java.lang.CharSequence, int, int);
-    public java.lang.Appendable append(java.lang.CharSequence);
-    public abstract void close();
-    public abstract void flush();
-    public void write(int);
-    public void write(char[]);
-    public abstract void write(char[], int, int);
-    public void write(java.lang.String);
-    public void write(java.lang.String, int, int);
-
-
-    protected java.lang.Object lock;
-}
-
--keep class java.lang.AbstractStringBuilder {
-
-    public java.lang.AbstractStringBuilder append(java.lang.Object);
-    public java.lang.AbstractStringBuilder append(java.lang.String);
-    public java.lang.AbstractStringBuilder append(java.lang.StringBuffer);
-    public java.lang.AbstractStringBuilder append(java.lang.CharSequence);
-    public java.lang.AbstractStringBuilder append(java.lang.CharSequence, int, int);
-    public java.lang.AbstractStringBuilder append(char[]);
-    public java.lang.AbstractStringBuilder append(char[], int, int);
-    public java.lang.AbstractStringBuilder append(boolean);
-    public java.lang.AbstractStringBuilder append(char);
-    public java.lang.AbstractStringBuilder append(int);
-    public java.lang.AbstractStringBuilder append(long);
-    public java.lang.AbstractStringBuilder append(float);
-    public java.lang.AbstractStringBuilder append(double);
-    public java.lang.Appendable append(char);
-    public java.lang.Appendable append(java.lang.CharSequence, int, int);
-    public java.lang.Appendable append(java.lang.CharSequence);
-    public java.lang.AbstractStringBuilder appendCodePoint(int);
-    public int capacity();
-    public char charAt(int);
-    public int codePointAt(int);
-    public int codePointBefore(int);
-    public int codePointCount(int, int);
-    public java.lang.AbstractStringBuilder delete(int, int);
-    public java.lang.AbstractStringBuilder deleteCharAt(int);
-    public void ensureCapacity(int);
-    public void getChars(int, int, char[], int);
-    public int indexOf(java.lang.String);
-    public int indexOf(java.lang.String, int);
-    public java.lang.AbstractStringBuilder insert(int, char[], int, int);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.Object);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.String);
-    public java.lang.AbstractStringBuilder insert(int, char[]);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.CharSequence);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.CharSequence, int, int);
-    public java.lang.AbstractStringBuilder insert(int, boolean);
-    public java.lang.AbstractStringBuilder insert(int, char);
-    public java.lang.AbstractStringBuilder insert(int, int);
-    public java.lang.AbstractStringBuilder insert(int, long);
-    public java.lang.AbstractStringBuilder insert(int, float);
-    public java.lang.AbstractStringBuilder insert(int, double);
-    public int lastIndexOf(java.lang.String);
-    public int lastIndexOf(java.lang.String, int);
-    public int length();
-    public int offsetByCodePoints(int, int);
-    public java.lang.AbstractStringBuilder replace(int, int, java.lang.String);
-    public java.lang.AbstractStringBuilder reverse();
-    public void setCharAt(int, char);
-    public void setLength(int);
-    public java.lang.CharSequence subSequence(int, int);
-    public java.lang.String substring(int);
-    public java.lang.String substring(int, int);
-    public abstract java.lang.String toString();
-    public void trimToSize();
-
-
-}
-
--keep class java.lang.Appendable {
-
-    public abstract java.lang.Appendable append(java.lang.CharSequence);
-    public abstract java.lang.Appendable append(java.lang.CharSequence, int, int);
-    public abstract java.lang.Appendable append(char);
-
-
-}
-
--keep class java.lang.Boolean {
-    <init>(boolean);
-    <init>(java.lang.String);
-
-    public boolean booleanValue();
-    public static int compare(boolean, boolean);
-    public int compareTo(java.lang.Boolean);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public static boolean getBoolean(java.lang.String);
-    public int hashCode();
-    public static int hashCode(boolean);
-    public static boolean logicalAnd(boolean, boolean);
-    public static boolean logicalOr(boolean, boolean);
-    public static boolean logicalXor(boolean, boolean);
-    public static boolean parseBoolean(java.lang.String);
-    public static java.lang.String toString(boolean);
-    public java.lang.String toString();
-    public static java.lang.Boolean valueOf(boolean);
-    public static java.lang.Boolean valueOf(java.lang.String);
-
-
-    public static java.lang.Boolean FALSE;
-    public static java.lang.Boolean TRUE;
-    public static java.lang.Class TYPE;
-}
-
--keep class java.lang.Byte {
-    <init>(byte);
-    <init>(java.lang.String);
-
-    public byte byteValue();
-    public static int compare(byte, byte);
-    public int compareTo(java.lang.Byte);
-    public int compareTo(java.lang.Object);
-    public static java.lang.Byte decode(java.lang.String);
-    public double doubleValue();
-    public boolean equals(java.lang.Object);
-    public float floatValue();
-    public int hashCode();
-    public static int hashCode(byte);
-    public int intValue();
-    public long longValue();
-    public static byte parseByte(java.lang.String, int);
-    public static byte parseByte(java.lang.String);
-    public short shortValue();
-    public static java.lang.String toHexString(byte, boolean);
-    public static java.lang.String toString(byte);
-    public java.lang.String toString();
-    public static int toUnsignedInt(byte);
-    public static long toUnsignedLong(byte);
-    public static java.lang.Byte valueOf(byte);
-    public static java.lang.Byte valueOf(java.lang.String, int);
-    public static java.lang.Byte valueOf(java.lang.String);
-
-
-    public static int BYTES;
-    public static byte MAX_VALUE;
-    public static byte MIN_VALUE;
-    public static int SIZE;
-    public static java.lang.Class TYPE;
-}
-
--keep class java.lang.CharSequence {
-
-    public abstract char charAt(int);
-    public java.util.stream.IntStream chars();
-    public java.util.stream.IntStream codePoints();
-    public abstract int length();
-    public abstract java.lang.CharSequence subSequence(int, int);
-    public abstract java.lang.String toString();
-
-
-}
-
--keep class java.lang.Character {
-    <init>(char);
-
-    public static int charCount(int);
-    public char charValue();
-    public static int codePointAt(java.lang.CharSequence, int);
-    public static int codePointAt(char[], int);
-    public static int codePointAt(char[], int, int);
-    public static int codePointBefore(java.lang.CharSequence, int);
-    public static int codePointBefore(char[], int);
-    public static int codePointBefore(char[], int, int);
-    public static int codePointCount(java.lang.CharSequence, int, int);
-    public static int codePointCount(char[], int, int);
-    public static int compare(char, char);
-    public int compareTo(java.lang.Character);
-    public int compareTo(java.lang.Object);
-    public static int digit(char, int);
-    public static int digit(int, int);
-    public boolean equals(java.lang.Object);
-    public static char forDigit(int, int);
-    public static byte getDirectionality(char);
-    public static byte getDirectionality(int);
-    public static java.lang.String getName(int);
-    public static int getNumericValue(char);
-    public static int getNumericValue(int);
-    public static int getType(char);
-    public static int getType(int);
-    public int hashCode();
-    public static int hashCode(char);
-    public static char highSurrogate(int);
-    public static boolean isAlphabetic(int);
-    public static boolean isBmpCodePoint(int);
-    public static boolean isDefined(char);
-    public static boolean isDefined(int);
-    public static boolean isDigit(char);
-    public static boolean isDigit(int);
-    public static boolean isHighSurrogate(char);
-    public static boolean isISOControl(char);
-    public static boolean isISOControl(int);
-    public static boolean isIdentifierIgnorable(char);
-    public static boolean isIdentifierIgnorable(int);
-    public static boolean isIdeographic(int);
-    public static boolean isJavaIdentifierPart(char);
-    public static boolean isJavaIdentifierPart(int);
-    public static boolean isJavaIdentifierStart(char);
-    public static boolean isJavaIdentifierStart(int);
-    public static boolean isJavaLetter(char);
-    public static boolean isJavaLetterOrDigit(char);
-    public static boolean isLetter(char);
-    public static boolean isLetter(int);
-    public static boolean isLetterOrDigit(char);
-    public static boolean isLetterOrDigit(int);
-    public static boolean isLowSurrogate(char);
-    public static boolean isLowerCase(char);
-    public static boolean isLowerCase(int);
-    public static boolean isMirrored(char);
-    public static boolean isMirrored(int);
-    public static boolean isSpace(char);
-    public static boolean isSpaceChar(char);
-    public static boolean isSpaceChar(int);
-    public static boolean isSupplementaryCodePoint(int);
-    public static boolean isSurrogate(char);
-    public static boolean isSurrogatePair(char, char);
-    public static boolean isTitleCase(char);
-    public static boolean isTitleCase(int);
-    public static boolean isUnicodeIdentifierPart(char);
-    public static boolean isUnicodeIdentifierPart(int);
-    public static boolean isUnicodeIdentifierStart(char);
-    public static boolean isUnicodeIdentifierStart(int);
-    public static boolean isUpperCase(char);
-    public static boolean isUpperCase(int);
-    public static boolean isValidCodePoint(int);
-    public static boolean isWhitespace(char);
-    public static boolean isWhitespace(int);
-    public static char lowSurrogate(int);
-    public static int offsetByCodePoints(java.lang.CharSequence, int, int);
-    public static int offsetByCodePoints(char[], int, int, int, int);
-    public static char reverseBytes(char);
-    public static int toChars(int, char[], int);
-    public static char[] toChars(int);
-    public static int toCodePoint(char, char);
-    public static char toLowerCase(char);
-    public static int toLowerCase(int);
-    public java.lang.String toString();
-    public static java.lang.String toString(char);
-    public static char toTitleCase(char);
-    public static int toTitleCase(int);
-    public static char toUpperCase(char);
-    public static int toUpperCase(int);
-    public static java.lang.Character valueOf(char);
-
-
-    public static int BYTES;
-    public static byte COMBINING_SPACING_MARK;
-    public static byte CONNECTOR_PUNCTUATION;
-    public static byte CONTROL;
-    public static byte CURRENCY_SYMBOL;
-    public static byte DASH_PUNCTUATION;
-    public static byte DECIMAL_DIGIT_NUMBER;
-    public static byte DIRECTIONALITY_ARABIC_NUMBER;
-    public static byte DIRECTIONALITY_BOUNDARY_NEUTRAL;
-    public static byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR;
-    public static byte DIRECTIONALITY_EUROPEAN_NUMBER;
-    public static byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR;
-    public static byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR;
-    public static byte DIRECTIONALITY_LEFT_TO_RIGHT;
-    public static byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING;
-    public static byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE;
-    public static byte DIRECTIONALITY_NONSPACING_MARK;
-    public static byte DIRECTIONALITY_OTHER_NEUTRALS;
-    public static byte DIRECTIONALITY_PARAGRAPH_SEPARATOR;
-    public static byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT;
-    public static byte DIRECTIONALITY_RIGHT_TO_LEFT;
-    public static byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC;
-    public static byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING;
-    public static byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE;
-    public static byte DIRECTIONALITY_SEGMENT_SEPARATOR;
-    public static byte DIRECTIONALITY_UNDEFINED;
-    public static byte DIRECTIONALITY_WHITESPACE;
-    public static byte ENCLOSING_MARK;
-    public static byte END_PUNCTUATION;
-    public static byte FINAL_QUOTE_PUNCTUATION;
-    public static byte FORMAT;
-    public static byte INITIAL_QUOTE_PUNCTUATION;
-    public static byte LETTER_NUMBER;
-    public static byte LINE_SEPARATOR;
-    public static byte LOWERCASE_LETTER;
-    public static byte MATH_SYMBOL;
-    public static int MAX_CODE_POINT;
-    public static char MAX_HIGH_SURROGATE;
-    public static char MAX_LOW_SURROGATE;
-    public static int MAX_RADIX;
-    public static char MAX_SURROGATE;
-    public static char MAX_VALUE;
-    public static int MIN_CODE_POINT;
-    public static char MIN_HIGH_SURROGATE;
-    public static char MIN_LOW_SURROGATE;
-    public static int MIN_RADIX;
-    public static int MIN_SUPPLEMENTARY_CODE_POINT;
-    public static char MIN_SURROGATE;
-    public static char MIN_VALUE;
-    public static byte MODIFIER_LETTER;
-    public static byte MODIFIER_SYMBOL;
-    public static byte NON_SPACING_MARK;
-    public static byte OTHER_LETTER;
-    public static byte OTHER_NUMBER;
-    public static byte OTHER_PUNCTUATION;
-    public static byte OTHER_SYMBOL;
-    public static byte PARAGRAPH_SEPARATOR;
-    public static byte PRIVATE_USE;
-    public static int SIZE;
-    public static byte SPACE_SEPARATOR;
-    public static byte START_PUNCTUATION;
-    public static byte SURROGATE;
-    public static byte TITLECASE_LETTER;
-    public static java.lang.Class TYPE;
-    public static byte UNASSIGNED;
-    public static byte UPPERCASE_LETTER;
-}
-
--keep class java.lang.Class {
-
-    public java.lang.Class asSubclass(java.lang.Class);
-    public java.lang.Object cast(java.lang.Object);
-    public boolean desiredAssertionStatus();
-    public static java.lang.Class forName(java.lang.String);
-    public static java.lang.Class forName(java.lang.String, boolean, java.lang.ClassLoader);
-    public int getAccessFlags();
-    public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getAnnotations();
-    public java.lang.annotation.Annotation[] getAnnotationsByType(java.lang.Class);
-    public java.lang.String getCanonicalName();
-    public java.lang.ClassLoader getClassLoader();
-    public java.lang.Class[] getClasses();
-    public java.lang.Class getComponentType();
-    public java.lang.reflect.Constructor getConstructor(java.lang.Class[]);
-    public java.lang.reflect.Constructor[] getConstructors();
-    public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    public java.lang.Class[] getDeclaredClasses();
-    public java.lang.reflect.Constructor getDeclaredConstructor(java.lang.Class[]);
-    public java.lang.reflect.Constructor[] getDeclaredConstructors();
-    public java.lang.reflect.Field getDeclaredField(java.lang.String);
-    public java.lang.reflect.Field[] getDeclaredFields();
-    public java.lang.reflect.Field[] getDeclaredFieldsUnchecked(boolean);
-    public java.lang.reflect.Method getDeclaredMethod(java.lang.String, java.lang.Class[]);
-    public java.lang.reflect.Method[] getDeclaredMethods();
-    public java.lang.reflect.Method[] getDeclaredMethodsUnchecked(boolean);
-    public java.lang.Class getDeclaringClass();
-    public java.lang.Class getEnclosingClass();
-    public java.lang.reflect.Constructor getEnclosingConstructor();
-    public java.lang.reflect.Method getEnclosingMethod();
-    public java.lang.Object[] getEnumConstants();
-    public java.lang.Object[] getEnumConstantsShared();
-    public java.lang.reflect.Field getField(java.lang.String);
-    public java.lang.reflect.Field[] getFields();
-    public java.lang.reflect.Type[] getGenericInterfaces();
-    public java.lang.reflect.Type getGenericSuperclass();
-    public java.lang.reflect.Method getInstanceMethod(java.lang.String, java.lang.Class[]);
-    public java.lang.Class[] getInterfaces();
-    public java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class[]);
-    public java.lang.reflect.Method[] getMethods();
-    public int getModifiers();
-    public java.lang.String getName();
-    public java.lang.Package getPackage();
-    public java.lang.String getPackageName$();
-    public java.security.ProtectionDomain getProtectionDomain();
-    public java.net.URL getResource(java.lang.String);
-    public java.io.InputStream getResourceAsStream(java.lang.String);
-    public java.lang.Object[] getSigners();
-    public java.lang.String getSimpleName();
-    public java.lang.Class getSuperclass();
-    public java.lang.String getTypeName();
-    public synchronized java.lang.reflect.TypeVariable[] getTypeParameters();
-    public boolean isAnnotation();
-    public boolean isAnnotationPresent(java.lang.Class);
-    public boolean isAnonymousClass();
-    public boolean isArray();
-    public boolean isAssignableFrom(java.lang.Class);
-    public boolean isEnum();
-    public boolean isFinalizable();
-    public boolean isInstance(java.lang.Object);
-    public boolean isInterface();
-    public boolean isLocalClass();
-    public boolean isMemberClass();
-    public boolean isPrimitive();
-    public boolean isProxy();
-    public boolean isSynthetic();
-    public java.lang.Object newInstance();
-    public java.lang.String toGenericString();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.lang.ClassFormatError {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.lang.ClassLoader {
-    <init>(java.lang.ClassLoader);
-    <init>();
-
-    public void clearAssertionStatus();
-    protected java.lang.Class defineClass(byte[], int, int);
-    protected java.lang.Class defineClass(java.lang.String, byte[], int, int);
-    protected java.lang.Class defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain);
-    protected java.lang.Class defineClass(java.lang.String, java.nio.ByteBuffer, java.security.ProtectionDomain);
-    protected java.lang.Package definePackage(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.net.URL);
-    protected java.lang.Class findClass(java.lang.String);
-    protected java.lang.String findLibrary(java.lang.String);
-    protected java.lang.Class findLoadedClass(java.lang.String);
-    protected java.net.URL findResource(java.lang.String);
-    protected java.util.Enumeration findResources(java.lang.String);
-    protected java.lang.Class findSystemClass(java.lang.String);
-    protected java.lang.Package getPackage(java.lang.String);
-    protected java.lang.Package[] getPackages();
-    public java.lang.ClassLoader getParent();
-    public java.net.URL getResource(java.lang.String);
-    public java.io.InputStream getResourceAsStream(java.lang.String);
-    public java.util.Enumeration getResources(java.lang.String);
-    public static java.lang.ClassLoader getSystemClassLoader();
-    public static java.net.URL getSystemResource(java.lang.String);
-    public static java.io.InputStream getSystemResourceAsStream(java.lang.String);
-    public static java.util.Enumeration getSystemResources(java.lang.String);
-    public java.lang.Class loadClass(java.lang.String);
-    protected java.lang.Class loadClass(java.lang.String, boolean);
-    protected static boolean registerAsParallelCapable();
-    protected void resolveClass(java.lang.Class);
-    public void setClassAssertionStatus(java.lang.String, boolean);
-    public void setDefaultAssertionStatus(boolean);
-    public void setPackageAssertionStatus(java.lang.String, boolean);
-    protected void setSigners(java.lang.Class, java.lang.Object[]);
-
-
-    public java.util.Map proxyCache;
-}
-
--keep class java.lang.ClassNotFoundException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-
-    public java.lang.Throwable getCause();
-    public java.lang.Throwable getException();
-
-
-}
-
--keep class java.lang.CloneNotSupportedException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.lang.Comparable {
-
-    public abstract int compareTo(java.lang.Object);
-
-
-}
-
--keep class java.lang.Double {
-    <init>(double);
-    <init>(java.lang.String);
-
-    public byte byteValue();
-    public static int compare(double, double);
-    public int compareTo(java.lang.Double);
-    public int compareTo(java.lang.Object);
-    public static long doubleToLongBits(double);
-    public static long doubleToRawLongBits(double);
-    public double doubleValue();
-    public boolean equals(java.lang.Object);
-    public float floatValue();
-    public int hashCode();
-    public static int hashCode(double);
-    public int intValue();
-    public static boolean isFinite(double);
-    public static boolean isInfinite(double);
-    public boolean isInfinite();
-    public static boolean isNaN(double);
-    public boolean isNaN();
-    public static double longBitsToDouble(long);
-    public long longValue();
-    public static double max(double, double);
-    public static double min(double, double);
-    public static double parseDouble(java.lang.String);
-    public short shortValue();
-    public static double sum(double, double);
-    public static java.lang.String toHexString(double);
-    public static java.lang.String toString(double);
-    public java.lang.String toString();
-    public static java.lang.Double valueOf(java.lang.String);
-    public static java.lang.Double valueOf(double);
-
-
-    public static int BYTES;
-    public static int MAX_EXPONENT;
-    public static double MAX_VALUE;
-    public static int MIN_EXPONENT;
-    public static double MIN_NORMAL;
-    public static double MIN_VALUE;
-    public static double NEGATIVE_INFINITY;
-    public static double NaN;
-    public static double POSITIVE_INFINITY;
-    public static int SIZE;
-    public static java.lang.Class TYPE;
-}
-
--keep class java.lang.Enum {
-    <init>(java.lang.String, int);
-
-    protected java.lang.Object clone();
-    public int compareTo(java.lang.Enum);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    protected void finalize();
-    public java.lang.Class getDeclaringClass();
-    public static java.lang.Enum[] getSharedConstants(java.lang.Class);
-    public int hashCode();
-    public java.lang.String name();
-    public int ordinal();
-    public java.lang.String toString();
-    public static java.lang.Enum valueOf(java.lang.Class, java.lang.String);
-
-
-}
-
--keep class java.lang.Error {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-    <init>(java.lang.String, java.lang.Throwable, boolean, boolean);
-
-
-
-}
-
--keep class java.lang.Exception {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-    <init>(java.lang.String, java.lang.Throwable, boolean, boolean);
-
-
-
-}
-
--keep class java.lang.Float {
-    <init>(float);
-    <init>(double);
-    <init>(java.lang.String);
-
-    public byte byteValue();
-    public static int compare(float, float);
-    public int compareTo(java.lang.Float);
-    public int compareTo(java.lang.Object);
-    public double doubleValue();
-    public boolean equals(java.lang.Object);
-    public static int floatToIntBits(float);
-    public static int floatToRawIntBits(float);
-    public float floatValue();
-    public int hashCode();
-    public static int hashCode(float);
-    public static float intBitsToFloat(int);
-    public int intValue();
-    public static boolean isFinite(float);
-    public static boolean isInfinite(float);
-    public boolean isInfinite();
-    public static boolean isNaN(float);
-    public boolean isNaN();
-    public long longValue();
-    public static float max(float, float);
-    public static float min(float, float);
-    public static float parseFloat(java.lang.String);
-    public short shortValue();
-    public static float sum(float, float);
-    public static java.lang.String toHexString(float);
-    public static java.lang.String toString(float);
-    public java.lang.String toString();
-    public static java.lang.Float valueOf(java.lang.String);
-    public static java.lang.Float valueOf(float);
-
-
-    public static int BYTES;
-    public static int MAX_EXPONENT;
-    public static float MAX_VALUE;
-    public static int MIN_EXPONENT;
-    public static float MIN_NORMAL;
-    public static float MIN_VALUE;
-    public static float NEGATIVE_INFINITY;
-    public static float NaN;
-    public static float POSITIVE_INFINITY;
-    public static int SIZE;
-    public static java.lang.Class TYPE;
-}
-
--keep class java.lang.IllegalAccessException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.lang.IllegalArgumentException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.lang.IllegalStateException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.lang.InstantiationException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.lang.Integer {
-    <init>(int);
-    <init>(java.lang.String);
-
-    public static int bitCount(int);
-    public byte byteValue();
-    public static int compare(int, int);
-    public int compareTo(java.lang.Integer);
-    public int compareTo(java.lang.Object);
-    public static int compareUnsigned(int, int);
-    public static java.lang.Integer decode(java.lang.String);
-    public static int divideUnsigned(int, int);
-    public double doubleValue();
-    public boolean equals(java.lang.Object);
-    public float floatValue();
-    public static java.lang.Integer getInteger(java.lang.String);
-    public static java.lang.Integer getInteger(java.lang.String, int);
-    public static java.lang.Integer getInteger(java.lang.String, java.lang.Integer);
-    public int hashCode();
-    public static int hashCode(int);
-    public static int highestOneBit(int);
-    public int intValue();
-    public long longValue();
-    public static int lowestOneBit(int);
-    public static int max(int, int);
-    public static int min(int, int);
-    public static int numberOfLeadingZeros(int);
-    public static int numberOfTrailingZeros(int);
-    public static int parseInt(java.lang.String, int);
-    public static int parseInt(java.lang.String);
-    public static int parseUnsignedInt(java.lang.String, int);
-    public static int parseUnsignedInt(java.lang.String);
-    public static int remainderUnsigned(int, int);
-    public static int reverse(int);
-    public static int reverseBytes(int);
-    public static int rotateLeft(int, int);
-    public static int rotateRight(int, int);
-    public short shortValue();
-    public static int signum(int);
-    public static int sum(int, int);
-    public static java.lang.String toBinaryString(int);
-    public static java.lang.String toHexString(int);
-    public static java.lang.String toOctalString(int);
-    public static java.lang.String toString(int, int);
-    public static java.lang.String toString(int);
-    public java.lang.String toString();
-    public static long toUnsignedLong(int);
-    public static java.lang.String toUnsignedString(int, int);
-    public static java.lang.String toUnsignedString(int);
-    public static java.lang.Integer valueOf(java.lang.String, int);
-    public static java.lang.Integer valueOf(java.lang.String);
-    public static java.lang.Integer valueOf(int);
-
-
-    public static int BYTES;
-    public static int MAX_VALUE;
-    public static int MIN_VALUE;
-    public static int SIZE;
-    public static java.lang.Class TYPE;
-}
-
--keep class java.lang.InterruptedException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.lang.Iterable {
-
-    public void forEach(java.util.function.Consumer);
-    public abstract java.util.Iterator iterator();
-    public java.util.Spliterator spliterator();
-
-
-}
-
--keep class java.lang.LinkageError {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-
-
-
-}
-
--keep class java.lang.Long {
-    <init>(long);
-    <init>(java.lang.String);
-
-    public static int bitCount(long);
-    public byte byteValue();
-    public static int compare(long, long);
-    public int compareTo(java.lang.Long);
-    public int compareTo(java.lang.Object);
-    public static int compareUnsigned(long, long);
-    public static java.lang.Long decode(java.lang.String);
-    public static long divideUnsigned(long, long);
-    public double doubleValue();
-    public boolean equals(java.lang.Object);
-    public float floatValue();
-    public static java.lang.Long getLong(java.lang.String);
-    public static java.lang.Long getLong(java.lang.String, long);
-    public static java.lang.Long getLong(java.lang.String, java.lang.Long);
-    public int hashCode();
-    public static int hashCode(long);
-    public static long highestOneBit(long);
-    public int intValue();
-    public long longValue();
-    public static long lowestOneBit(long);
-    public static long max(long, long);
-    public static long min(long, long);
-    public static int numberOfLeadingZeros(long);
-    public static int numberOfTrailingZeros(long);
-    public static long parseLong(java.lang.String, int);
-    public static long parseLong(java.lang.String);
-    public static long parseUnsignedLong(java.lang.String, int);
-    public static long parseUnsignedLong(java.lang.String);
-    public static long remainderUnsigned(long, long);
-    public static long reverse(long);
-    public static long reverseBytes(long);
-    public static long rotateLeft(long, int);
-    public static long rotateRight(long, int);
-    public short shortValue();
-    public static int signum(long);
-    public static long sum(long, long);
-    public static java.lang.String toBinaryString(long);
-    public static java.lang.String toHexString(long);
-    public static java.lang.String toOctalString(long);
-    public static java.lang.String toString(long, int);
-    public static java.lang.String toString(long);
-    public java.lang.String toString();
-    public static java.lang.String toUnsignedString(long, int);
-    public static java.lang.String toUnsignedString(long);
-    public static java.lang.Long valueOf(java.lang.String, int);
-    public static java.lang.Long valueOf(java.lang.String);
-    public static java.lang.Long valueOf(long);
-
-
-    public static int BYTES;
-    public static long MAX_VALUE;
-    public static long MIN_VALUE;
-    public static int SIZE;
-    public static java.lang.Class TYPE;
-}
-
--keep class java.lang.NoSuchFieldException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.lang.NoSuchMethodException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.lang.Number {
-    <init>();
-
-    public byte byteValue();
-    public abstract double doubleValue();
-    public abstract float floatValue();
-    public abstract int intValue();
-    public abstract long longValue();
-    public short shortValue();
-
-
-}
-
--keep class java.lang.NumberFormatException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.lang.Object {
-    <init>();
-
-    protected java.lang.Object clone();
-    public boolean equals(java.lang.Object);
-    protected void finalize();
-    public java.lang.Class getClass();
-    public int hashCode();
-    public void notify();
-    public void notifyAll();
-    public java.lang.String toString();
-    public void wait(long);
-    public void wait(long, int);
-    public void wait();
-
-
-}
-
--keep class java.lang.Package {
-
-    public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getAnnotations();
-    public java.lang.annotation.Annotation[] getAnnotationsByType(java.lang.Class);
-    public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    public java.lang.annotation.Annotation[] getDeclaredAnnotationsByType(java.lang.Class);
-    public java.lang.String getImplementationTitle();
-    public java.lang.String getImplementationVendor();
-    public java.lang.String getImplementationVersion();
-    public java.lang.String getName();
-    public static java.lang.Package getPackage(java.lang.String);
-    public static java.lang.Package[] getPackages();
-    public java.lang.String getSpecificationTitle();
-    public java.lang.String getSpecificationVendor();
-    public java.lang.String getSpecificationVersion();
-    public int hashCode();
-    public boolean isAnnotationPresent(java.lang.Class);
-    public boolean isCompatibleWith(java.lang.String);
-    public boolean isSealed();
-    public boolean isSealed(java.net.URL);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.lang.ReflectiveOperationException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.lang.Runnable {
-
-    public abstract void run();
-
-
-}
-
--keep class java.lang.RuntimeException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-    <init>(java.lang.String, java.lang.Throwable, boolean, boolean);
-
-
-
-}
-
--keep class java.lang.SecurityException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.lang.Short {
-    <init>(short);
-    <init>(java.lang.String);
-
-    public byte byteValue();
-    public static int compare(short, short);
-    public int compareTo(java.lang.Short);
-    public int compareTo(java.lang.Object);
-    public static java.lang.Short decode(java.lang.String);
-    public double doubleValue();
-    public boolean equals(java.lang.Object);
-    public float floatValue();
-    public int hashCode();
-    public static int hashCode(short);
-    public int intValue();
-    public long longValue();
-    public static short parseShort(java.lang.String, int);
-    public static short parseShort(java.lang.String);
-    public static short reverseBytes(short);
-    public short shortValue();
-    public static java.lang.String toString(short);
-    public java.lang.String toString();
-    public static int toUnsignedInt(short);
-    public static long toUnsignedLong(short);
-    public static java.lang.Short valueOf(java.lang.String, int);
-    public static java.lang.Short valueOf(java.lang.String);
-    public static java.lang.Short valueOf(short);
-
-
-    public static int BYTES;
-    public static short MAX_VALUE;
-    public static short MIN_VALUE;
-    public static int SIZE;
-    public static java.lang.Class TYPE;
-}
-
--keep class java.lang.StackTraceElement {
-    <init>(java.lang.String, java.lang.String, java.lang.String, int);
-
-    public boolean equals(java.lang.Object);
-    public java.lang.String getClassName();
-    public java.lang.String getFileName();
-    public int getLineNumber();
-    public java.lang.String getMethodName();
-    public int hashCode();
-    public boolean isNativeMethod();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.lang.String {
-    <init>();
-    <init>(java.lang.String);
-    <init>(char[]);
-    <init>(char[], int, int);
-    <init>(int[], int, int);
-    <init>(byte[], int, int, int);
-    <init>(byte[], int);
-    <init>(byte[], int, int, java.lang.String);
-    <init>(byte[], int, int, java.nio.charset.Charset);
-    <init>(byte[], java.lang.String);
-    <init>(byte[], java.nio.charset.Charset);
-    <init>(byte[], int, int);
-    <init>(byte[]);
-    <init>(java.lang.StringBuffer);
-    <init>(java.lang.StringBuilder);
-
-    public char charAt(int);
-    public int codePointAt(int);
-    public int codePointBefore(int);
-    public int codePointCount(int, int);
-    public int compareTo(java.lang.String);
-    public int compareTo(java.lang.Object);
-    public int compareToIgnoreCase(java.lang.String);
-    public java.lang.String concat(java.lang.String);
-    public boolean contains(java.lang.CharSequence);
-    public boolean contentEquals(java.lang.StringBuffer);
-    public boolean contentEquals(java.lang.CharSequence);
-    public static java.lang.String copyValueOf(char[], int, int);
-    public static java.lang.String copyValueOf(char[]);
-    public boolean endsWith(java.lang.String);
-    public boolean equals(java.lang.Object);
-    public boolean equalsIgnoreCase(java.lang.String);
-    public static java.lang.String format(java.lang.String, java.lang.Object[]);
-    public static java.lang.String format(java.util.Locale, java.lang.String, java.lang.Object[]);
-    public void getBytes(int, int, byte[], int);
-    public byte[] getBytes(java.lang.String);
-    public byte[] getBytes(java.nio.charset.Charset);
-    public byte[] getBytes();
-    public void getChars(int, int, char[], int);
-    public int hashCode();
-    public int indexOf(int);
-    public int indexOf(int, int);
-    public int indexOf(java.lang.String);
-    public int indexOf(java.lang.String, int);
-    public java.lang.String intern();
-    public boolean isEmpty();
-    public static java.lang.String join(java.lang.CharSequence, java.lang.CharSequence[]);
-    public static java.lang.String join(java.lang.CharSequence, java.lang.Iterable);
-    public int lastIndexOf(int);
-    public int lastIndexOf(int, int);
-    public int lastIndexOf(java.lang.String);
-    public int lastIndexOf(java.lang.String, int);
-    public int length();
-    public boolean matches(java.lang.String);
-    public int offsetByCodePoints(int, int);
-    public boolean regionMatches(int, java.lang.String, int, int);
-    public boolean regionMatches(boolean, int, java.lang.String, int, int);
-    public java.lang.String replace(char, char);
-    public java.lang.String replace(java.lang.CharSequence, java.lang.CharSequence);
-    public java.lang.String replaceAll(java.lang.String, java.lang.String);
-    public java.lang.String replaceFirst(java.lang.String, java.lang.String);
-    public java.lang.String[] split(java.lang.String, int);
-    public java.lang.String[] split(java.lang.String);
-    public boolean startsWith(java.lang.String, int);
-    public boolean startsWith(java.lang.String);
-    public java.lang.CharSequence subSequence(int, int);
-    public java.lang.String substring(int);
-    public java.lang.String substring(int, int);
-    public char[] toCharArray();
-    public java.lang.String toLowerCase(java.util.Locale);
-    public java.lang.String toLowerCase();
-    public java.lang.String toString();
-    public java.lang.String toUpperCase(java.util.Locale);
-    public java.lang.String toUpperCase();
-    public java.lang.String trim();
-    public static java.lang.String valueOf(java.lang.Object);
-    public static java.lang.String valueOf(char[]);
-    public static java.lang.String valueOf(char[], int, int);
-    public static java.lang.String valueOf(boolean);
-    public static java.lang.String valueOf(char);
-    public static java.lang.String valueOf(int);
-    public static java.lang.String valueOf(long);
-    public static java.lang.String valueOf(float);
-    public static java.lang.String valueOf(double);
-
-
-    public static java.util.Comparator CASE_INSENSITIVE_ORDER;
-}
-
--keep class java.lang.StringBuffer {
-    <init>();
-    <init>(int);
-    <init>(java.lang.String);
-    <init>(java.lang.CharSequence);
-
-    public synchronized java.lang.StringBuffer append(java.lang.Object);
-    public synchronized java.lang.StringBuffer append(java.lang.String);
-    public synchronized java.lang.StringBuffer append(java.lang.StringBuffer);
-    public synchronized java.lang.StringBuffer append(java.lang.CharSequence);
-    public synchronized java.lang.StringBuffer append(java.lang.CharSequence, int, int);
-    public synchronized java.lang.StringBuffer append(char[]);
-    public synchronized java.lang.StringBuffer append(char[], int, int);
-    public synchronized java.lang.StringBuffer append(boolean);
-    public synchronized java.lang.StringBuffer append(char);
-    public synchronized java.lang.StringBuffer append(int);
-    public synchronized java.lang.StringBuffer append(long);
-    public synchronized java.lang.StringBuffer append(float);
-    public synchronized java.lang.StringBuffer append(double);
-    public java.lang.AbstractStringBuilder append(double);
-    public java.lang.AbstractStringBuilder append(float);
-    public java.lang.AbstractStringBuilder append(long);
-    public java.lang.AbstractStringBuilder append(int);
-    public java.lang.AbstractStringBuilder append(char);
-    public java.lang.AbstractStringBuilder append(boolean);
-    public java.lang.AbstractStringBuilder append(char[], int, int);
-    public java.lang.AbstractStringBuilder append(char[]);
-    public java.lang.AbstractStringBuilder append(java.lang.CharSequence, int, int);
-    public java.lang.AbstractStringBuilder append(java.lang.CharSequence);
-    public java.lang.AbstractStringBuilder append(java.lang.StringBuffer);
-    public java.lang.AbstractStringBuilder append(java.lang.String);
-    public java.lang.AbstractStringBuilder append(java.lang.Object);
-    public java.lang.Appendable append(char);
-    public java.lang.Appendable append(java.lang.CharSequence, int, int);
-    public java.lang.Appendable append(java.lang.CharSequence);
-    public synchronized java.lang.StringBuffer appendCodePoint(int);
-    public java.lang.AbstractStringBuilder appendCodePoint(int);
-    public synchronized int capacity();
-    public synchronized char charAt(int);
-    public synchronized int codePointAt(int);
-    public synchronized int codePointBefore(int);
-    public synchronized int codePointCount(int, int);
-    public synchronized java.lang.StringBuffer delete(int, int);
-    public java.lang.AbstractStringBuilder delete(int, int);
-    public synchronized java.lang.StringBuffer deleteCharAt(int);
-    public java.lang.AbstractStringBuilder deleteCharAt(int);
-    public synchronized void ensureCapacity(int);
-    public synchronized void getChars(int, int, char[], int);
-    public int indexOf(java.lang.String);
-    public synchronized int indexOf(java.lang.String, int);
-    public synchronized java.lang.StringBuffer insert(int, char[], int, int);
-    public synchronized java.lang.StringBuffer insert(int, java.lang.Object);
-    public synchronized java.lang.StringBuffer insert(int, java.lang.String);
-    public synchronized java.lang.StringBuffer insert(int, char[]);
-    public java.lang.StringBuffer insert(int, java.lang.CharSequence);
-    public synchronized java.lang.StringBuffer insert(int, java.lang.CharSequence, int, int);
-    public java.lang.StringBuffer insert(int, boolean);
-    public synchronized java.lang.StringBuffer insert(int, char);
-    public java.lang.StringBuffer insert(int, int);
-    public java.lang.StringBuffer insert(int, long);
-    public java.lang.StringBuffer insert(int, float);
-    public java.lang.StringBuffer insert(int, double);
-    public java.lang.AbstractStringBuilder insert(int, double);
-    public java.lang.AbstractStringBuilder insert(int, float);
-    public java.lang.AbstractStringBuilder insert(int, long);
-    public java.lang.AbstractStringBuilder insert(int, int);
-    public java.lang.AbstractStringBuilder insert(int, char);
-    public java.lang.AbstractStringBuilder insert(int, boolean);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.CharSequence, int, int);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.CharSequence);
-    public java.lang.AbstractStringBuilder insert(int, char[]);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.String);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.Object);
-    public java.lang.AbstractStringBuilder insert(int, char[], int, int);
-    public int lastIndexOf(java.lang.String);
-    public synchronized int lastIndexOf(java.lang.String, int);
-    public synchronized int length();
-    public synchronized int offsetByCodePoints(int, int);
-    public synchronized java.lang.StringBuffer replace(int, int, java.lang.String);
-    public java.lang.AbstractStringBuilder replace(int, int, java.lang.String);
-    public synchronized java.lang.StringBuffer reverse();
-    public java.lang.AbstractStringBuilder reverse();
-    public synchronized void setCharAt(int, char);
-    public synchronized void setLength(int);
-    public synchronized java.lang.CharSequence subSequence(int, int);
-    public synchronized java.lang.String substring(int);
-    public synchronized java.lang.String substring(int, int);
-    public synchronized java.lang.String toString();
-    public synchronized void trimToSize();
-
-
-}
-
--keep class java.lang.StringBuilder {
-    <init>();
-    <init>(int);
-    <init>(java.lang.String);
-    <init>(java.lang.CharSequence);
-
-    public java.lang.StringBuilder append(java.lang.Object);
-    public java.lang.StringBuilder append(java.lang.String);
-    public java.lang.StringBuilder append(java.lang.StringBuffer);
-    public java.lang.StringBuilder append(java.lang.CharSequence);
-    public java.lang.StringBuilder append(java.lang.CharSequence, int, int);
-    public java.lang.StringBuilder append(char[]);
-    public java.lang.StringBuilder append(char[], int, int);
-    public java.lang.StringBuilder append(boolean);
-    public java.lang.StringBuilder append(char);
-    public java.lang.StringBuilder append(int);
-    public java.lang.StringBuilder append(long);
-    public java.lang.StringBuilder append(float);
-    public java.lang.StringBuilder append(double);
-    public java.lang.AbstractStringBuilder append(double);
-    public java.lang.AbstractStringBuilder append(float);
-    public java.lang.AbstractStringBuilder append(long);
-    public java.lang.AbstractStringBuilder append(int);
-    public java.lang.AbstractStringBuilder append(char);
-    public java.lang.AbstractStringBuilder append(boolean);
-    public java.lang.AbstractStringBuilder append(char[], int, int);
-    public java.lang.AbstractStringBuilder append(char[]);
-    public java.lang.AbstractStringBuilder append(java.lang.CharSequence, int, int);
-    public java.lang.AbstractStringBuilder append(java.lang.CharSequence);
-    public java.lang.AbstractStringBuilder append(java.lang.StringBuffer);
-    public java.lang.AbstractStringBuilder append(java.lang.String);
-    public java.lang.AbstractStringBuilder append(java.lang.Object);
-    public java.lang.Appendable append(char);
-    public java.lang.Appendable append(java.lang.CharSequence, int, int);
-    public java.lang.Appendable append(java.lang.CharSequence);
-    public java.lang.StringBuilder appendCodePoint(int);
-    public java.lang.AbstractStringBuilder appendCodePoint(int);
-    public int capacity();
-    public char charAt(int);
-    public int codePointAt(int);
-    public int codePointBefore(int);
-    public int codePointCount(int, int);
-    public java.lang.StringBuilder delete(int, int);
-    public java.lang.AbstractStringBuilder delete(int, int);
-    public java.lang.StringBuilder deleteCharAt(int);
-    public java.lang.AbstractStringBuilder deleteCharAt(int);
-    public void ensureCapacity(int);
-    public void getChars(int, int, char[], int);
-    public int indexOf(java.lang.String);
-    public int indexOf(java.lang.String, int);
-    public java.lang.StringBuilder insert(int, char[], int, int);
-    public java.lang.StringBuilder insert(int, java.lang.Object);
-    public java.lang.StringBuilder insert(int, java.lang.String);
-    public java.lang.StringBuilder insert(int, char[]);
-    public java.lang.StringBuilder insert(int, java.lang.CharSequence);
-    public java.lang.StringBuilder insert(int, java.lang.CharSequence, int, int);
-    public java.lang.StringBuilder insert(int, boolean);
-    public java.lang.StringBuilder insert(int, char);
-    public java.lang.StringBuilder insert(int, int);
-    public java.lang.StringBuilder insert(int, long);
-    public java.lang.StringBuilder insert(int, float);
-    public java.lang.StringBuilder insert(int, double);
-    public java.lang.AbstractStringBuilder insert(int, double);
-    public java.lang.AbstractStringBuilder insert(int, float);
-    public java.lang.AbstractStringBuilder insert(int, long);
-    public java.lang.AbstractStringBuilder insert(int, int);
-    public java.lang.AbstractStringBuilder insert(int, char);
-    public java.lang.AbstractStringBuilder insert(int, boolean);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.CharSequence, int, int);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.CharSequence);
-    public java.lang.AbstractStringBuilder insert(int, char[]);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.String);
-    public java.lang.AbstractStringBuilder insert(int, java.lang.Object);
-    public java.lang.AbstractStringBuilder insert(int, char[], int, int);
-    public int lastIndexOf(java.lang.String);
-    public int lastIndexOf(java.lang.String, int);
-    public int length();
-    public int offsetByCodePoints(int, int);
-    public java.lang.StringBuilder replace(int, int, java.lang.String);
-    public java.lang.AbstractStringBuilder replace(int, int, java.lang.String);
-    public java.lang.StringBuilder reverse();
-    public java.lang.AbstractStringBuilder reverse();
-    public void setCharAt(int, char);
-    public void setLength(int);
-    public java.lang.CharSequence subSequence(int, int);
-    public java.lang.String substring(int, int);
-    public java.lang.String substring(int);
-    public java.lang.String toString();
-    public void trimToSize();
-
-
-}
-
--keep class java.lang.Thread {
-    <init>();
-    <init>(java.lang.Runnable);
-    <init>(java.lang.ThreadGroup, java.lang.Runnable);
-    <init>(java.lang.String);
-    <init>(java.lang.ThreadGroup, java.lang.String);
-    <init>(java.lang.Runnable, java.lang.String);
-    <init>(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String);
-    <init>(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String, long);
-
-    public static int activeCount();
-    public void blockedOn(sun.nio.ch.Interruptible);
-    public void checkAccess();
-    protected java.lang.Object clone();
-    public int countStackFrames();
-    public static java.lang.Thread currentThread();
-    public void destroy();
-    public void dispatchUncaughtException(java.lang.Throwable);
-    public static void dumpStack();
-    public static int enumerate(java.lang.Thread[]);
-    public static java.util.Map getAllStackTraces();
-    public java.lang.ClassLoader getContextClassLoader();
-    public static java.lang.Thread$UncaughtExceptionHandler getDefaultUncaughtExceptionHandler();
-    public long getId();
-    public java.lang.String getName();
-    public int getPriority();
-    public java.lang.StackTraceElement[] getStackTrace();
-    public java.lang.Thread$State getState();
-    public java.lang.ThreadGroup getThreadGroup();
-    public java.lang.Thread$UncaughtExceptionHandler getUncaughtExceptionHandler();
-    public static java.lang.Thread$UncaughtExceptionHandler getUncaughtExceptionPreHandler();
-    public static boolean holdsLock(java.lang.Object);
-    public void interrupt();
-    public static boolean interrupted();
-    public boolean isAlive();
-    public boolean isDaemon();
-    public boolean isInterrupted();
-    public void join(long);
-    public void join(long, int);
-    public void join();
-    public void parkFor$(long);
-    public void parkUntil$(long);
-    public void resume();
-    public void run();
-    public void setContextClassLoader(java.lang.ClassLoader);
-    public void setDaemon(boolean);
-    public static void setDefaultUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler);
-    public void setName(java.lang.String);
-    public void setPriority(int);
-    public void setUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler);
-    public static void setUncaughtExceptionPreHandler(java.lang.Thread$UncaughtExceptionHandler);
-    public static void sleep(long);
-    public static void sleep(long, int);
-    public synchronized void start();
-    public void stop();
-    public void stop(java.lang.Throwable);
-    public void suspend();
-    public java.lang.String toString();
-    public void unpark$();
-    public static void yield();
-
-
-    public static int MAX_PRIORITY;
-    public static int MIN_PRIORITY;
-    public static int NORM_PRIORITY;
-}
-
--keep class java.lang.Thread$State {
-
-    public static java.lang.Thread$State valueOf(java.lang.String);
-    public static java.lang.Thread$State[] values();
-
-    public static java.lang.Thread$State BLOCKED;
-    public static java.lang.Thread$State NEW;
-    public static java.lang.Thread$State RUNNABLE;
-    public static java.lang.Thread$State TERMINATED;
-    public static java.lang.Thread$State TIMED_WAITING;
-    public static java.lang.Thread$State WAITING;
-
-}
-
--keep class java.lang.Thread$UncaughtExceptionHandler {
-
-    public abstract void uncaughtException(java.lang.Thread, java.lang.Throwable);
-
-
-}
-
--keep class java.lang.ThreadGroup {
-    <init>(java.lang.String);
-    <init>(java.lang.ThreadGroup, java.lang.String);
-
-    public int activeCount();
-    public int activeGroupCount();
-    public boolean allowThreadSuspension(boolean);
-    public void checkAccess();
-    public void destroy();
-    public int enumerate(java.lang.Thread[]);
-    public int enumerate(java.lang.Thread[], boolean);
-    public int enumerate(java.lang.ThreadGroup[]);
-    public int enumerate(java.lang.ThreadGroup[], boolean);
-    public int getMaxPriority();
-    public java.lang.String getName();
-    public java.lang.ThreadGroup getParent();
-    public void interrupt();
-    public boolean isDaemon();
-    public synchronized boolean isDestroyed();
-    public void list();
-    public boolean parentOf(java.lang.ThreadGroup);
-    public void resume();
-    public void setDaemon(boolean);
-    public void setMaxPriority(int);
-    public void stop();
-    public void suspend();
-    public java.lang.String toString();
-    public void uncaughtException(java.lang.Thread, java.lang.Throwable);
-
-
-}
-
--keep class java.lang.ThreadLocal {
-    <init>();
-
-    public java.lang.Object get();
-    protected java.lang.Object initialValue();
-    public void remove();
-    public void set(java.lang.Object);
-    public static java.lang.ThreadLocal withInitial(java.util.function.Supplier);
-
-
-}
-
--keep class java.lang.Throwable {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-    <init>(java.lang.String, java.lang.Throwable, boolean, boolean);
-
-    public synchronized void addSuppressed(java.lang.Throwable);
-    public synchronized java.lang.Throwable fillInStackTrace();
-    public synchronized java.lang.Throwable getCause();
-    public java.lang.String getLocalizedMessage();
-    public java.lang.String getMessage();
-    public java.lang.StackTraceElement[] getStackTrace();
-    public synchronized java.lang.Throwable[] getSuppressed();
-    public synchronized java.lang.Throwable initCause(java.lang.Throwable);
-    public void printStackTrace();
-    public void printStackTrace(java.io.PrintStream);
-    public void printStackTrace(java.io.PrintWriter);
-    public void setStackTrace(java.lang.StackTraceElement[]);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.lang.annotation.Annotation {
-
-    public abstract java.lang.Class annotationType();
-    public abstract boolean equals(java.lang.Object);
-    public abstract int hashCode();
-    public abstract java.lang.String toString();
-
-
-}
-
--keep class java.lang.reflect.AccessibleObject {
-    <init>();
-
-    public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getAnnotations();
-    public java.lang.annotation.Annotation[] getAnnotationsByType(java.lang.Class);
-    public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    public java.lang.annotation.Annotation[] getDeclaredAnnotationsByType(java.lang.Class);
-    public boolean isAccessible();
-    public boolean isAnnotationPresent(java.lang.Class);
-    public static void setAccessible(java.lang.reflect.AccessibleObject[], boolean);
-    public void setAccessible(boolean);
-
-
-}
-
--keep class java.lang.reflect.Constructor {
-
-    public boolean equals(java.lang.Object);
-    public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    public java.lang.Class getDeclaringClass();
-    public java.lang.Class[] getExceptionTypes();
-    public java.lang.reflect.Type[] getGenericExceptionTypes();
-    public java.lang.reflect.Type[] getGenericParameterTypes();
-    public int getModifiers();
-    public java.lang.String getName();
-    public java.lang.annotation.Annotation[][] getParameterAnnotations();
-    public int getParameterCount();
-    public java.lang.Class[] getParameterTypes();
-    public java.lang.reflect.TypeVariable[] getTypeParameters();
-    public int hashCode();
-    public boolean isSynthetic();
-    public boolean isVarArgs();
-    public java.lang.Object newInstance(java.lang.Object[]);
-    public java.lang.reflect.Constructor serializationCopy(java.lang.Class, java.lang.Class);
-    public java.lang.String toGenericString();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.lang.reflect.Executable {
-
-    public int getAccessFlags();
-    public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getAnnotationsByType(java.lang.Class);
-    public long getArtMethod();
-    public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    public abstract java.lang.Class getDeclaringClass();
-    public abstract java.lang.Class[] getExceptionTypes();
-    public java.lang.reflect.Type[] getGenericExceptionTypes();
-    public java.lang.reflect.Type[] getGenericParameterTypes();
-    public abstract int getModifiers();
-    public abstract java.lang.String getName();
-    public abstract java.lang.annotation.Annotation[][] getParameterAnnotations();
-    public int getParameterCount();
-    public abstract java.lang.Class[] getParameterTypes();
-    public java.lang.reflect.Parameter[] getParameters();
-    public abstract java.lang.reflect.TypeVariable[] getTypeParameters();
-    public boolean isAnnotationPresent(java.lang.Class);
-    public boolean isSynthetic();
-    public boolean isVarArgs();
-    public abstract java.lang.String toGenericString();
-
-
-}
-
--keep class java.lang.reflect.Field {
-
-    public boolean equals(java.lang.Object);
-    public java.lang.Object get(java.lang.Object);
-    public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getAnnotationsByType(java.lang.Class);
-    public long getArtField();
-    public boolean getBoolean(java.lang.Object);
-    public byte getByte(java.lang.Object);
-    public char getChar(java.lang.Object);
-    public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    public java.lang.Class getDeclaringClass();
-    public int getDexFieldIndex();
-    public double getDouble(java.lang.Object);
-    public float getFloat(java.lang.Object);
-    public java.lang.reflect.Type getGenericType();
-    public int getInt(java.lang.Object);
-    public long getLong(java.lang.Object);
-    public int getModifiers();
-    public java.lang.String getName();
-    public int getOffset();
-    public short getShort(java.lang.Object);
-    public java.lang.Class getType();
-    public int hashCode();
-    public boolean isAnnotationPresent(java.lang.Class);
-    public boolean isEnumConstant();
-    public boolean isSynthetic();
-    public void set(java.lang.Object, java.lang.Object);
-    public void setBoolean(java.lang.Object, boolean);
-    public void setByte(java.lang.Object, byte);
-    public void setChar(java.lang.Object, char);
-    public void setDouble(java.lang.Object, double);
-    public void setFloat(java.lang.Object, float);
-    public void setInt(java.lang.Object, int);
-    public void setLong(java.lang.Object, long);
-    public void setShort(java.lang.Object, short);
-    public java.lang.String toGenericString();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.lang.reflect.GenericDeclaration {
-
-    public abstract java.lang.reflect.TypeVariable[] getTypeParameters();
-
-
-}
-
--keep class java.lang.reflect.InvocationTargetException {
-    <init>();
-    <init>(java.lang.Throwable);
-    <init>(java.lang.Throwable, java.lang.String);
-
-    public java.lang.Throwable getCause();
-    public java.lang.Throwable getTargetException();
-
-
-}
-
--keep class java.lang.reflect.Method {
-
-    public boolean equals(java.lang.Object);
-    public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    public java.lang.Class getDeclaringClass();
-    public java.lang.Object getDefaultValue();
-    public java.lang.Class[] getExceptionTypes();
-    public java.lang.reflect.Type[] getGenericExceptionTypes();
-    public java.lang.reflect.Type[] getGenericParameterTypes();
-    public java.lang.reflect.Type getGenericReturnType();
-    public int getModifiers();
-    public java.lang.String getName();
-    public java.lang.annotation.Annotation[][] getParameterAnnotations();
-    public int getParameterCount();
-    public java.lang.Class[] getParameterTypes();
-    public java.lang.Class getReturnType();
-    public java.lang.reflect.TypeVariable[] getTypeParameters();
-    public int hashCode();
-    public java.lang.Object invoke(java.lang.Object, java.lang.Object[]);
-    public boolean isBridge();
-    public boolean isDefault();
-    public boolean isSynthetic();
-    public boolean isVarArgs();
-    public java.lang.String toGenericString();
-    public java.lang.String toString();
-
-
-    public static java.util.Comparator ORDER_BY_SIGNATURE;
-}
-
--keep class java.lang.reflect.Parameter {
-
-    public boolean equals(java.lang.Object);
-    public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getAnnotations();
-    public java.lang.annotation.Annotation[] getAnnotationsByType(java.lang.Class);
-    public java.lang.annotation.Annotation getDeclaredAnnotation(java.lang.Class);
-    public java.lang.annotation.Annotation[] getDeclaredAnnotations();
-    public java.lang.annotation.Annotation[] getDeclaredAnnotationsByType(java.lang.Class);
-    public java.lang.reflect.Executable getDeclaringExecutable();
-    public int getModifiers();
-    public java.lang.String getName();
-    public java.lang.reflect.Type getParameterizedType();
-    public java.lang.Class getType();
-    public int hashCode();
-    public boolean isImplicit();
-    public boolean isNamePresent();
-    public boolean isSynthetic();
-    public boolean isVarArgs();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.lang.reflect.Type {
-
-    public java.lang.String getTypeName();
-
-
-}
-
--keep class java.lang.reflect.TypeVariable {
-
-    public abstract java.lang.reflect.Type[] getBounds();
-    public abstract java.lang.reflect.GenericDeclaration getGenericDeclaration();
-    public abstract java.lang.String getName();
-
-
-}
-
--keep class java.net.ContentHandler {
-    <init>();
-
-    public abstract java.lang.Object getContent(java.net.URLConnection);
-    public java.lang.Object getContent(java.net.URLConnection, java.lang.Class[]);
-
-
-}
-
--keep class java.net.ContentHandlerFactory {
-
-    public abstract java.net.ContentHandler createContentHandler(java.lang.String);
-
-
-}
-
--keep class java.net.DatagramPacket {
-    <init>(byte[], int, int);
-    <init>(byte[], int);
-    <init>(byte[], int, int, java.net.InetAddress, int);
-    <init>(byte[], int, int, java.net.SocketAddress);
-    <init>(byte[], int, java.net.InetAddress, int);
-    <init>(byte[], int, java.net.SocketAddress);
-
-    public synchronized java.net.InetAddress getAddress();
-    public synchronized byte[] getData();
-    public synchronized int getLength();
-    public synchronized int getOffset();
-    public synchronized int getPort();
-    public synchronized java.net.SocketAddress getSocketAddress();
-    public synchronized void setAddress(java.net.InetAddress);
-    public synchronized void setData(byte[], int, int);
-    public synchronized void setData(byte[]);
-    public synchronized void setLength(int);
-    public synchronized void setPort(int);
-    public void setReceivedLength(int);
-    public synchronized void setSocketAddress(java.net.SocketAddress);
-
-
-}
-
--keep class java.net.DatagramSocket {
-    <init>();
-    <init>(java.net.DatagramSocketImpl);
-    <init>(java.net.SocketAddress);
-    <init>(int);
-    <init>(int, java.net.InetAddress);
-
-    public synchronized void bind(java.net.SocketAddress);
-    public void close();
-    public void connect(java.net.InetAddress, int);
-    public void connect(java.net.SocketAddress);
-    public void disconnect();
-    public synchronized boolean getBroadcast();
-    public java.nio.channels.DatagramChannel getChannel();
-    public java.io.FileDescriptor getFileDescriptor$();
-    public java.net.InetAddress getInetAddress();
-    public java.net.InetAddress getLocalAddress();
-    public int getLocalPort();
-    public java.net.SocketAddress getLocalSocketAddress();
-    public int getPort();
-    public synchronized int getReceiveBufferSize();
-    public java.net.SocketAddress getRemoteSocketAddress();
-    public synchronized boolean getReuseAddress();
-    public synchronized int getSendBufferSize();
-    public synchronized int getSoTimeout();
-    public synchronized int getTrafficClass();
-    public boolean isBound();
-    public boolean isClosed();
-    public boolean isConnected();
-    public synchronized void receive(java.net.DatagramPacket);
-    public void send(java.net.DatagramPacket);
-    public synchronized void setBroadcast(boolean);
-    public static synchronized void setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory);
-    public synchronized void setReceiveBufferSize(int);
-    public synchronized void setReuseAddress(boolean);
-    public synchronized void setSendBufferSize(int);
-    public synchronized void setSoTimeout(int);
-    public synchronized void setTrafficClass(int);
-
-
-}
-
--keep class java.net.DatagramSocketImpl {
-    <init>();
-
-    protected abstract void bind(int, java.net.InetAddress);
-    protected abstract void close();
-    protected void connect(java.net.InetAddress, int);
-    protected abstract void create();
-    protected void disconnect();
-    protected java.io.FileDescriptor getFileDescriptor();
-    protected int getLocalPort();
-    protected abstract byte getTTL();
-    protected abstract int getTimeToLive();
-    protected abstract void join(java.net.InetAddress);
-    protected abstract void joinGroup(java.net.SocketAddress, java.net.NetworkInterface);
-    protected abstract void leave(java.net.InetAddress);
-    protected abstract void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface);
-    protected abstract int peek(java.net.InetAddress);
-    protected abstract int peekData(java.net.DatagramPacket);
-    protected abstract void receive(java.net.DatagramPacket);
-    protected abstract void send(java.net.DatagramPacket);
-    protected abstract void setTTL(byte);
-    protected abstract void setTimeToLive(int);
-
-
-    protected java.io.FileDescriptor fd;
-    protected int localPort;
-}
-
--keep class java.net.DatagramSocketImplFactory {
-
-    public abstract java.net.DatagramSocketImpl createDatagramSocketImpl();
-
-
-}
-
--keep class java.net.FileNameMap {
-
-    public abstract java.lang.String getContentTypeFor(java.lang.String);
-
-
-}
-
--keep class java.net.InetAddress {
-
-    public static void clearDnsCache();
-    public boolean equals(java.lang.Object);
-    public byte[] getAddress();
-    public static java.net.InetAddress[] getAllByName(java.lang.String);
-    public static java.net.InetAddress[] getAllByNameOnNet(java.lang.String, int);
-    public static java.net.InetAddress getByAddress(java.lang.String, byte[]);
-    public static java.net.InetAddress getByAddress(byte[]);
-    public static java.net.InetAddress getByName(java.lang.String);
-    public static java.net.InetAddress getByNameOnNet(java.lang.String, int);
-    public java.lang.String getCanonicalHostName();
-    public java.lang.String getHostAddress();
-    public java.lang.String getHostName();
-    public static java.net.InetAddress getLocalHost();
-    public static java.net.InetAddress getLoopbackAddress();
-    public int hashCode();
-    public boolean isAnyLocalAddress();
-    public boolean isLinkLocalAddress();
-    public boolean isLoopbackAddress();
-    public boolean isMCGlobal();
-    public boolean isMCLinkLocal();
-    public boolean isMCNodeLocal();
-    public boolean isMCOrgLocal();
-    public boolean isMCSiteLocal();
-    public boolean isMulticastAddress();
-    public static boolean isNumeric(java.lang.String);
-    public boolean isReachable(int);
-    public boolean isReachable(java.net.NetworkInterface, int, int);
-    public boolean isReachableByICMP(int);
-    public boolean isSiteLocalAddress();
-    public static java.net.InetAddress parseNumericAddress(java.lang.String);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.net.InterfaceAddress {
-
-    public boolean equals(java.lang.Object);
-    public java.net.InetAddress getAddress();
-    public java.net.InetAddress getBroadcast();
-    public short getNetworkPrefixLength();
-    public int hashCode();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.net.MalformedURLException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.net.NetworkInterface {
-
-    public boolean equals(java.lang.Object);
-    public static java.net.NetworkInterface getByIndex(int);
-    public static java.net.NetworkInterface getByInetAddress(java.net.InetAddress);
-    public static java.net.NetworkInterface getByName(java.lang.String);
-    public java.lang.String getDisplayName();
-    public byte[] getHardwareAddress();
-    public int getIndex();
-    public java.util.Enumeration getInetAddresses();
-    public java.util.List getInterfaceAddresses();
-    public int getMTU();
-    public java.lang.String getName();
-    public static java.util.Enumeration getNetworkInterfaces();
-    public java.net.NetworkInterface getParent();
-    public java.util.Enumeration getSubInterfaces();
-    public int hashCode();
-    public boolean isLoopback();
-    public boolean isPointToPoint();
-    public boolean isUp();
-    public boolean isVirtual();
-    public boolean supportsMulticast();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.net.ProtocolFamily {
-
-    public abstract java.lang.String name();
-
-
-}
-
--keep class java.net.Proxy {
-    <init>(java.net.Proxy$Type, java.net.SocketAddress);
-
-    public java.net.SocketAddress address();
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public java.lang.String toString();
-    public java.net.Proxy$Type type();
-
-
-    public static java.net.Proxy NO_PROXY;
-}
-
--keep class java.net.Proxy$Type {
-
-    public static java.net.Proxy$Type valueOf(java.lang.String);
-    public static java.net.Proxy$Type[] values();
-
-    public static java.net.Proxy$Type DIRECT;
-    public static java.net.Proxy$Type HTTP;
-    public static java.net.Proxy$Type SOCKS;
-
-}
-
--keep class java.net.ServerSocket {
-    <init>();
-    <init>(int);
-    <init>(int, int);
-    <init>(int, int, java.net.InetAddress);
-
-    public java.net.Socket accept();
-    public void bind(java.net.SocketAddress);
-    public void bind(java.net.SocketAddress, int);
-    public void close();
-    public java.nio.channels.ServerSocketChannel getChannel();
-    public java.io.FileDescriptor getFileDescriptor$();
-    public java.net.SocketImpl getImpl();
-    public java.net.InetAddress getInetAddress();
-    public int getLocalPort();
-    public java.net.SocketAddress getLocalSocketAddress();
-    public synchronized int getReceiveBufferSize();
-    public boolean getReuseAddress();
-    public synchronized int getSoTimeout();
-    protected void implAccept(java.net.Socket);
-    public boolean isBound();
-    public boolean isClosed();
-    public void setPerformancePreferences(int, int, int);
-    public synchronized void setReceiveBufferSize(int);
-    public void setReuseAddress(boolean);
-    public synchronized void setSoTimeout(int);
-    public static synchronized void setSocketFactory(java.net.SocketImplFactory);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.net.Socket {
-    <init>();
-    <init>(java.net.Proxy);
-    <init>(java.net.SocketImpl);
-    <init>(java.lang.String, int);
-    <init>(java.net.InetAddress, int);
-    <init>(java.lang.String, int, java.net.InetAddress, int);
-    <init>(java.net.InetAddress, int, java.net.InetAddress, int);
-    <init>(java.lang.String, int, boolean);
-    <init>(java.net.InetAddress, int, boolean);
-
-    public void bind(java.net.SocketAddress);
-    public synchronized void close();
-    public void connect(java.net.SocketAddress);
-    public void connect(java.net.SocketAddress, int);
-    public java.nio.channels.SocketChannel getChannel();
-    public java.io.FileDescriptor getFileDescriptor$();
-    public java.net.InetAddress getInetAddress();
-    public java.io.InputStream getInputStream();
-    public boolean getKeepAlive();
-    public java.net.InetAddress getLocalAddress();
-    public int getLocalPort();
-    public java.net.SocketAddress getLocalSocketAddress();
-    public boolean getOOBInline();
-    public java.io.OutputStream getOutputStream();
-    public int getPort();
-    public synchronized int getReceiveBufferSize();
-    public java.net.SocketAddress getRemoteSocketAddress();
-    public boolean getReuseAddress();
-    public synchronized int getSendBufferSize();
-    public int getSoLinger();
-    public synchronized int getSoTimeout();
-    public boolean getTcpNoDelay();
-    public int getTrafficClass();
-    public boolean isBound();
-    public boolean isClosed();
-    public boolean isConnected();
-    public boolean isInputShutdown();
-    public boolean isOutputShutdown();
-    public void sendUrgentData(int);
-    public void setKeepAlive(boolean);
-    public void setOOBInline(boolean);
-    public void setPerformancePreferences(int, int, int);
-    public synchronized void setReceiveBufferSize(int);
-    public void setReuseAddress(boolean);
-    public synchronized void setSendBufferSize(int);
-    public void setSoLinger(boolean, int);
-    public synchronized void setSoTimeout(int);
-    public static synchronized void setSocketImplFactory(java.net.SocketImplFactory);
-    public void setTcpNoDelay(boolean);
-    public void setTrafficClass(int);
-    public void shutdownInput();
-    public void shutdownOutput();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.net.SocketAddress {
-    <init>();
-
-
-
-}
-
--keep class java.net.SocketException {
-    <init>(java.lang.String);
-    <init>();
-    <init>(java.lang.Throwable);
-    <init>(java.lang.String, java.lang.Throwable);
-
-
-
-}
-
--keep class java.net.SocketImpl {
-    <init>();
-
-    protected abstract void accept(java.net.SocketImpl);
-    protected abstract int available();
-    protected abstract void bind(java.net.InetAddress, int);
-    protected abstract void close();
-    protected abstract void connect(java.lang.String, int);
-    protected abstract void connect(java.net.InetAddress, int);
-    protected abstract void connect(java.net.SocketAddress, int);
-    protected abstract void create(boolean);
-    public java.io.FileDescriptor getFD$();
-    protected java.io.FileDescriptor getFileDescriptor();
-    protected java.net.InetAddress getInetAddress();
-    protected abstract java.io.InputStream getInputStream();
-    protected int getLocalPort();
-    protected abstract java.io.OutputStream getOutputStream();
-    protected int getPort();
-    protected abstract void listen(int);
-    protected abstract void sendUrgentData(int);
-    protected void setPerformancePreferences(int, int, int);
-    protected void shutdownInput();
-    protected void shutdownOutput();
-    protected boolean supportsUrgentData();
-    public java.lang.String toString();
-
-
-    protected java.net.InetAddress address;
-    protected java.io.FileDescriptor fd;
-    protected int localport;
-    protected int port;
-}
-
--keep class java.net.SocketImplFactory {
-
-    public abstract java.net.SocketImpl createSocketImpl();
-
-
-}
-
--keep class java.net.SocketOption {
-
-    public abstract java.lang.String name();
-    public abstract java.lang.Class type();
-
-
-}
-
--keep class java.net.URI {
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String);
-    <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
-    <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
-    <init>(java.lang.String, java.lang.String, java.lang.String);
-
-    public int compareTo(java.net.URI);
-    public int compareTo(java.lang.Object);
-    public static java.net.URI create(java.lang.String);
-    public boolean equals(java.lang.Object);
-    public java.lang.String getAuthority();
-    public java.lang.String getFragment();
-    public java.lang.String getHost();
-    public java.lang.String getPath();
-    public int getPort();
-    public java.lang.String getQuery();
-    public java.lang.String getRawAuthority();
-    public java.lang.String getRawFragment();
-    public java.lang.String getRawPath();
-    public java.lang.String getRawQuery();
-    public java.lang.String getRawSchemeSpecificPart();
-    public java.lang.String getRawUserInfo();
-    public java.lang.String getScheme();
-    public java.lang.String getSchemeSpecificPart();
-    public java.lang.String getUserInfo();
-    public int hashCode();
-    public boolean isAbsolute();
-    public boolean isOpaque();
-    public java.net.URI normalize();
-    public java.net.URI parseServerAuthority();
-    public java.net.URI relativize(java.net.URI);
-    public java.net.URI resolve(java.net.URI);
-    public java.net.URI resolve(java.lang.String);
-    public java.lang.String toASCIIString();
-    public java.lang.String toString();
-    public java.net.URL toURL();
-
-
-}
-
--keep class java.net.URISyntaxException {
-    <init>(java.lang.String, java.lang.String, int);
-    <init>(java.lang.String, java.lang.String);
-
-    public int getIndex();
-    public java.lang.String getInput();
-    public java.lang.String getMessage();
-    public java.lang.String getReason();
-
-
-}
-
--keep class java.net.URL {
-    <init>(java.lang.String, java.lang.String, int, java.lang.String);
-    <init>(java.lang.String, java.lang.String, java.lang.String);
-    <init>(java.lang.String, java.lang.String, int, java.lang.String, java.net.URLStreamHandler);
-    <init>(java.lang.String);
-    <init>(java.net.URL, java.lang.String);
-    <init>(java.net.URL, java.lang.String, java.net.URLStreamHandler);
-
-    public boolean equals(java.lang.Object);
-    public java.lang.String getAuthority();
-    public java.lang.Object getContent();
-    public java.lang.Object getContent(java.lang.Class[]);
-    public int getDefaultPort();
-    public java.lang.String getFile();
-    public java.lang.String getHost();
-    public java.lang.String getPath();
-    public int getPort();
-    public java.lang.String getProtocol();
-    public java.lang.String getQuery();
-    public java.lang.String getRef();
-    public java.lang.String getUserInfo();
-    public synchronized int hashCode();
-    public java.net.URLConnection openConnection();
-    public java.net.URLConnection openConnection(java.net.Proxy);
-    public java.io.InputStream openStream();
-    public boolean sameFile(java.net.URL);
-    public static void setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory);
-    public java.lang.String toExternalForm();
-    public java.lang.String toString();
-    public java.net.URI toURI();
-
-
-}
-
--keep class java.net.URLConnection {
-    <init>(java.net.URL);
-
-    public void addRequestProperty(java.lang.String, java.lang.String);
-    public abstract void connect();
-    public boolean getAllowUserInteraction();
-    public int getConnectTimeout();
-    public java.lang.Object getContent();
-    public java.lang.Object getContent(java.lang.Class[]);
-    public java.lang.String getContentEncoding();
-    public int getContentLength();
-    public long getContentLengthLong();
-    public java.lang.String getContentType();
-    public long getDate();
-    public static boolean getDefaultAllowUserInteraction();
-    public static java.lang.String getDefaultRequestProperty(java.lang.String);
-    public boolean getDefaultUseCaches();
-    public boolean getDoInput();
-    public boolean getDoOutput();
-    public long getExpiration();
-    public static synchronized java.net.FileNameMap getFileNameMap();
-    public java.lang.String getHeaderField(java.lang.String);
-    public java.lang.String getHeaderField(int);
-    public long getHeaderFieldDate(java.lang.String, long);
-    public int getHeaderFieldInt(java.lang.String, int);
-    public java.lang.String getHeaderFieldKey(int);
-    public long getHeaderFieldLong(java.lang.String, long);
-    public java.util.Map getHeaderFields();
-    public long getIfModifiedSince();
-    public java.io.InputStream getInputStream();
-    public long getLastModified();
-    public java.io.OutputStream getOutputStream();
-    public java.security.Permission getPermission();
-    public int getReadTimeout();
-    public java.util.Map getRequestProperties();
-    public java.lang.String getRequestProperty(java.lang.String);
-    public java.net.URL getURL();
-    public boolean getUseCaches();
-    public static java.lang.String guessContentTypeFromName(java.lang.String);
-    public static java.lang.String guessContentTypeFromStream(java.io.InputStream);
-    public void setAllowUserInteraction(boolean);
-    public void setConnectTimeout(int);
-    public static synchronized void setContentHandlerFactory(java.net.ContentHandlerFactory);
-    public static void setDefaultAllowUserInteraction(boolean);
-    public static void setDefaultRequestProperty(java.lang.String, java.lang.String);
-    public void setDefaultUseCaches(boolean);
-    public void setDoInput(boolean);
-    public void setDoOutput(boolean);
-    public static void setFileNameMap(java.net.FileNameMap);
-    public void setIfModifiedSince(long);
-    public void setReadTimeout(int);
-    public void setRequestProperty(java.lang.String, java.lang.String);
-    public void setUseCaches(boolean);
-    public java.lang.String toString();
-
-
-    protected boolean allowUserInteraction;
-    protected boolean connected;
-    protected boolean doInput;
-    protected boolean doOutput;
-    protected long ifModifiedSince;
-    protected java.net.URL url;
-    protected boolean useCaches;
-}
-
--keep class java.net.URLStreamHandler {
-    <init>();
-
-    protected boolean equals(java.net.URL, java.net.URL);
-    protected int getDefaultPort();
-    protected synchronized java.net.InetAddress getHostAddress(java.net.URL);
-    protected int hashCode(java.net.URL);
-    protected boolean hostsEqual(java.net.URL, java.net.URL);
-    protected abstract java.net.URLConnection openConnection(java.net.URL);
-    protected java.net.URLConnection openConnection(java.net.URL, java.net.Proxy);
-    protected void parseURL(java.net.URL, java.lang.String, int, int);
-    protected boolean sameFile(java.net.URL, java.net.URL);
-    protected void setURL(java.net.URL, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
-    protected void setURL(java.net.URL, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String);
-    protected java.lang.String toExternalForm(java.net.URL);
-
-
-}
-
--keep class java.net.URLStreamHandlerFactory {
-
-    public abstract java.net.URLStreamHandler createURLStreamHandler(java.lang.String);
-
-
-}
-
--keep class java.net.UnknownHostException {
-    <init>(java.lang.String);
-    <init>();
-
-
-
-}
-
--keep class java.nio.Buffer {
-
-    public abstract java.lang.Object array();
-    public abstract int arrayOffset();
-    public int capacity();
-    public java.nio.Buffer clear();
-    public java.nio.Buffer flip();
-    public int getElementSizeShift();
-    public abstract boolean hasArray();
-    public boolean hasRemaining();
-    public abstract boolean isDirect();
-    public abstract boolean isReadOnly();
-    public int limit();
-    public java.nio.Buffer limit(int);
-    public java.nio.Buffer mark();
-    public int position();
-    public java.nio.Buffer position(int);
-    public int remaining();
-    public java.nio.Buffer reset();
-    public java.nio.Buffer rewind();
-
-
-}
-
--keep class java.nio.ByteBuffer {
-
-    public static java.nio.ByteBuffer allocate(int);
-    public static java.nio.ByteBuffer allocateDirect(int);
-    public byte[] array();
-    public java.lang.Object array();
-    public int arrayOffset();
-    public abstract java.nio.CharBuffer asCharBuffer();
-    public abstract java.nio.DoubleBuffer asDoubleBuffer();
-    public abstract java.nio.FloatBuffer asFloatBuffer();
-    public abstract java.nio.IntBuffer asIntBuffer();
-    public abstract java.nio.LongBuffer asLongBuffer();
-    public abstract java.nio.ByteBuffer asReadOnlyBuffer();
-    public abstract java.nio.ShortBuffer asShortBuffer();
-    public abstract java.nio.ByteBuffer compact();
-    public int compareTo(java.nio.ByteBuffer);
-    public int compareTo(java.lang.Object);
-    public abstract java.nio.ByteBuffer duplicate();
-    public boolean equals(java.lang.Object);
-    public abstract byte get();
-    public abstract byte get(int);
-    public java.nio.ByteBuffer get(byte[], int, int);
-    public java.nio.ByteBuffer get(byte[]);
-    public abstract char getChar();
-    public abstract char getChar(int);
-    public abstract double getDouble();
-    public abstract double getDouble(int);
-    public abstract float getFloat();
-    public abstract float getFloat(int);
-    public abstract int getInt();
-    public abstract int getInt(int);
-    public abstract long getLong();
-    public abstract long getLong(int);
-    public abstract short getShort();
-    public abstract short getShort(int);
-    public boolean hasArray();
-    public int hashCode();
-    public boolean isAccessible();
-    public abstract boolean isDirect();
-    public java.nio.ByteOrder order();
-    public java.nio.ByteBuffer order(java.nio.ByteOrder);
-    public abstract java.nio.ByteBuffer put(byte);
-    public abstract java.nio.ByteBuffer put(int, byte);
-    public java.nio.ByteBuffer put(java.nio.ByteBuffer);
-    public java.nio.ByteBuffer put(byte[], int, int);
-    public java.nio.ByteBuffer put(byte[]);
-    public abstract java.nio.ByteBuffer putChar(char);
-    public abstract java.nio.ByteBuffer putChar(int, char);
-    public abstract java.nio.ByteBuffer putDouble(double);
-    public abstract java.nio.ByteBuffer putDouble(int, double);
-    public abstract java.nio.ByteBuffer putFloat(float);
-    public abstract java.nio.ByteBuffer putFloat(int, float);
-    public abstract java.nio.ByteBuffer putInt(int);
-    public abstract java.nio.ByteBuffer putInt(int, int);
-    public abstract java.nio.ByteBuffer putLong(long);
-    public abstract java.nio.ByteBuffer putLong(int, long);
-    public abstract java.nio.ByteBuffer putShort(short);
-    public abstract java.nio.ByteBuffer putShort(int, short);
-    public void setAccessible(boolean);
-    public abstract java.nio.ByteBuffer slice();
-    public java.lang.String toString();
-    public static java.nio.ByteBuffer wrap(byte[], int, int);
-    public static java.nio.ByteBuffer wrap(byte[]);
-
-
-}
-
--keep class java.nio.ByteOrder {
-
-    public static java.nio.ByteOrder nativeOrder();
-    public java.lang.String toString();
-
-
-    public static java.nio.ByteOrder BIG_ENDIAN;
-    public static java.nio.ByteOrder LITTLE_ENDIAN;
-}
-
--keep class java.nio.CharBuffer {
-
-    public static java.nio.CharBuffer allocate(int);
-    public java.nio.CharBuffer append(java.lang.CharSequence);
-    public java.nio.CharBuffer append(java.lang.CharSequence, int, int);
-    public java.nio.CharBuffer append(char);
-    public java.lang.Appendable append(char);
-    public java.lang.Appendable append(java.lang.CharSequence, int, int);
-    public java.lang.Appendable append(java.lang.CharSequence);
-    public char[] array();
-    public java.lang.Object array();
-    public int arrayOffset();
-    public abstract java.nio.CharBuffer asReadOnlyBuffer();
-    public char charAt(int);
-    public java.util.stream.IntStream chars();
-    public abstract java.nio.CharBuffer compact();
-    public int compareTo(java.nio.CharBuffer);
-    public int compareTo(java.lang.Object);
-    public abstract java.nio.CharBuffer duplicate();
-    public boolean equals(java.lang.Object);
-    public abstract char get();
-    public abstract char get(int);
-    public java.nio.CharBuffer get(char[], int, int);
-    public java.nio.CharBuffer get(char[]);
-    public boolean hasArray();
-    public int hashCode();
-    public abstract boolean isDirect();
-    public int length();
-    public abstract java.nio.ByteOrder order();
-    public abstract java.nio.CharBuffer put(char);
-    public abstract java.nio.CharBuffer put(int, char);
-    public java.nio.CharBuffer put(java.nio.CharBuffer);
-    public java.nio.CharBuffer put(char[], int, int);
-    public java.nio.CharBuffer put(char[]);
-    public java.nio.CharBuffer put(java.lang.String, int, int);
-    public java.nio.CharBuffer put(java.lang.String);
-    public int read(java.nio.CharBuffer);
-    public abstract java.nio.CharBuffer slice();
-    public abstract java.nio.CharBuffer subSequence(int, int);
-    public java.lang.CharSequence subSequence(int, int);
-    public java.lang.String toString();
-    public static java.nio.CharBuffer wrap(char[], int, int);
-    public static java.nio.CharBuffer wrap(char[]);
-    public static java.nio.CharBuffer wrap(java.lang.CharSequence, int, int);
-    public static java.nio.CharBuffer wrap(java.lang.CharSequence);
-
-
-}
-
--keep class java.nio.DoubleBuffer {
-
-    public static java.nio.DoubleBuffer allocate(int);
-    public double[] array();
-    public java.lang.Object array();
-    public int arrayOffset();
-    public abstract java.nio.DoubleBuffer asReadOnlyBuffer();
-    public abstract java.nio.DoubleBuffer compact();
-    public int compareTo(java.nio.DoubleBuffer);
-    public int compareTo(java.lang.Object);
-    public abstract java.nio.DoubleBuffer duplicate();
-    public boolean equals(java.lang.Object);
-    public abstract double get();
-    public abstract double get(int);
-    public java.nio.DoubleBuffer get(double[], int, int);
-    public java.nio.DoubleBuffer get(double[]);
-    public boolean hasArray();
-    public int hashCode();
-    public abstract boolean isDirect();
-    public abstract java.nio.ByteOrder order();
-    public abstract java.nio.DoubleBuffer put(double);
-    public abstract java.nio.DoubleBuffer put(int, double);
-    public java.nio.DoubleBuffer put(java.nio.DoubleBuffer);
-    public java.nio.DoubleBuffer put(double[], int, int);
-    public java.nio.DoubleBuffer put(double[]);
-    public abstract java.nio.DoubleBuffer slice();
-    public java.lang.String toString();
-    public static java.nio.DoubleBuffer wrap(double[], int, int);
-    public static java.nio.DoubleBuffer wrap(double[]);
-
-
-}
-
--keep class java.nio.FloatBuffer {
-
-    public static java.nio.FloatBuffer allocate(int);
-    public float[] array();
-    public java.lang.Object array();
-    public int arrayOffset();
-    public abstract java.nio.FloatBuffer asReadOnlyBuffer();
-    public abstract java.nio.FloatBuffer compact();
-    public int compareTo(java.nio.FloatBuffer);
-    public int compareTo(java.lang.Object);
-    public abstract java.nio.FloatBuffer duplicate();
-    public boolean equals(java.lang.Object);
-    public abstract float get();
-    public abstract float get(int);
-    public java.nio.FloatBuffer get(float[], int, int);
-    public java.nio.FloatBuffer get(float[]);
-    public boolean hasArray();
-    public int hashCode();
-    public abstract boolean isDirect();
-    public abstract java.nio.ByteOrder order();
-    public abstract java.nio.FloatBuffer put(float);
-    public abstract java.nio.FloatBuffer put(int, float);
-    public java.nio.FloatBuffer put(java.nio.FloatBuffer);
-    public java.nio.FloatBuffer put(float[], int, int);
-    public java.nio.FloatBuffer put(float[]);
-    public abstract java.nio.FloatBuffer slice();
-    public java.lang.String toString();
-    public static java.nio.FloatBuffer wrap(float[], int, int);
-    public static java.nio.FloatBuffer wrap(float[]);
-
-
-}
-
--keep class java.nio.IntBuffer {
-
-    public static java.nio.IntBuffer allocate(int);
-    public int[] array();
-    public java.lang.Object array();
-    public int arrayOffset();
-    public abstract java.nio.IntBuffer asReadOnlyBuffer();
-    public abstract java.nio.IntBuffer compact();
-    public int compareTo(java.nio.IntBuffer);
-    public int compareTo(java.lang.Object);
-    public abstract java.nio.IntBuffer duplicate();
-    public boolean equals(java.lang.Object);
-    public abstract int get();
-    public abstract int get(int);
-    public java.nio.IntBuffer get(int[], int, int);
-    public java.nio.IntBuffer get(int[]);
-    public boolean hasArray();
-    public int hashCode();
-    public abstract boolean isDirect();
-    public abstract java.nio.ByteOrder order();
-    public abstract java.nio.IntBuffer put(int);
-    public abstract java.nio.IntBuffer put(int, int);
-    public java.nio.IntBuffer put(java.nio.IntBuffer);
-    public java.nio.IntBuffer put(int[], int, int);
-    public java.nio.IntBuffer put(int[]);
-    public abstract java.nio.IntBuffer slice();
-    public java.lang.String toString();
-    public static java.nio.IntBuffer wrap(int[], int, int);
-    public static java.nio.IntBuffer wrap(int[]);
-
-
-}
-
--keep class java.nio.LongBuffer {
-
-    public static java.nio.LongBuffer allocate(int);
-    public long[] array();
-    public java.lang.Object array();
-    public int arrayOffset();
-    public abstract java.nio.LongBuffer asReadOnlyBuffer();
-    public abstract java.nio.LongBuffer compact();
-    public int compareTo(java.nio.LongBuffer);
-    public int compareTo(java.lang.Object);
-    public abstract java.nio.LongBuffer duplicate();
-    public boolean equals(java.lang.Object);
-    public abstract long get();
-    public abstract long get(int);
-    public java.nio.LongBuffer get(long[], int, int);
-    public java.nio.LongBuffer get(long[]);
-    public boolean hasArray();
-    public int hashCode();
-    public abstract boolean isDirect();
-    public abstract java.nio.ByteOrder order();
-    public abstract java.nio.LongBuffer put(long);
-    public abstract java.nio.LongBuffer put(int, long);
-    public java.nio.LongBuffer put(java.nio.LongBuffer);
-    public java.nio.LongBuffer put(long[], int, int);
-    public java.nio.LongBuffer put(long[]);
-    public abstract java.nio.LongBuffer slice();
-    public java.lang.String toString();
-    public static java.nio.LongBuffer wrap(long[], int, int);
-    public static java.nio.LongBuffer wrap(long[]);
-
-
-}
-
--keep class java.nio.MappedByteBuffer {
-
-    public java.nio.MappedByteBuffer force();
-    public boolean isLoaded();
-    public java.nio.MappedByteBuffer load();
-
-
-}
-
--keep class java.nio.ShortBuffer {
-
-    public static java.nio.ShortBuffer allocate(int);
-    public short[] array();
-    public java.lang.Object array();
-    public int arrayOffset();
-    public abstract java.nio.ShortBuffer asReadOnlyBuffer();
-    public abstract java.nio.ShortBuffer compact();
-    public int compareTo(java.nio.ShortBuffer);
-    public int compareTo(java.lang.Object);
-    public abstract java.nio.ShortBuffer duplicate();
-    public boolean equals(java.lang.Object);
-    public abstract short get();
-    public abstract short get(int);
-    public java.nio.ShortBuffer get(short[], int, int);
-    public java.nio.ShortBuffer get(short[]);
-    public boolean hasArray();
-    public int hashCode();
-    public abstract boolean isDirect();
-    public abstract java.nio.ByteOrder order();
-    public abstract java.nio.ShortBuffer put(short);
-    public abstract java.nio.ShortBuffer put(int, short);
-    public java.nio.ShortBuffer put(java.nio.ShortBuffer);
-    public java.nio.ShortBuffer put(short[], int, int);
-    public java.nio.ShortBuffer put(short[]);
-    public abstract java.nio.ShortBuffer slice();
-    public java.lang.String toString();
-    public static java.nio.ShortBuffer wrap(short[], int, int);
-    public static java.nio.ShortBuffer wrap(short[]);
-
-
-}
-
--keep class java.nio.channels.AsynchronousCloseException {
-    <init>();
-
-
-
-}
-
--keep class java.nio.channels.AsynchronousFileChannel {
-    <init>();
-
-    public abstract void force(boolean);
-    public abstract void lock(long, long, boolean, java.lang.Object, java.nio.channels.CompletionHandler);
-    public void lock(java.lang.Object, java.nio.channels.CompletionHandler);
-    public abstract java.util.concurrent.Future lock(long, long, boolean);
-    public java.util.concurrent.Future lock();
-    public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.util.Set, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute[]);
-    public static java.nio.channels.AsynchronousFileChannel open(java.nio.file.Path, java.nio.file.OpenOption[]);
-    public abstract void read(java.nio.ByteBuffer, long, java.lang.Object, java.nio.channels.CompletionHandler);
-    public abstract java.util.concurrent.Future read(java.nio.ByteBuffer, long);
-    public abstract long size();
-    public abstract java.nio.channels.AsynchronousFileChannel truncate(long);
-    public abstract java.nio.channels.FileLock tryLock(long, long, boolean);
-    public java.nio.channels.FileLock tryLock();
-    public abstract void write(java.nio.ByteBuffer, long, java.lang.Object, java.nio.channels.CompletionHandler);
-    public abstract java.util.concurrent.Future write(java.nio.ByteBuffer, long);
-
-
-}
-
--keep class java.nio.channels.Channel {
-
-    public abstract void close();
-    public abstract boolean isOpen();
-
-
-}
-
--keep class java.nio.channels.ClosedChannelException {
-    <init>();
-
-
-
-}
-
--keep class java.nio.channels.CompletionHandler {
-
-    public abstract void completed(java.lang.Object, java.lang.Object);
-    public abstract void failed(java.lang.Throwable, java.lang.Object);
-
-
-}
-
--keep class java.nio.channels.DatagramChannel {
-    <init>(java.nio.channels.spi.SelectorProvider);
-
-    public abstract java.nio.channels.DatagramChannel bind(java.net.SocketAddress);
-    public java.nio.channels.NetworkChannel bind(java.net.SocketAddress);
-    public abstract java.nio.channels.DatagramChannel connect(java.net.SocketAddress);
-    public abstract java.nio.channels.DatagramChannel disconnect();
-    public abstract java.net.SocketAddress getLocalAddress();
-    public abstract java.net.SocketAddress getRemoteAddress();
-    public abstract boolean isConnected();
-    public static java.nio.channels.DatagramChannel open();
-    public static java.nio.channels.DatagramChannel open(java.net.ProtocolFamily);
-    public abstract int read(java.nio.ByteBuffer);
-    public abstract long read(java.nio.ByteBuffer[], int, int);
-    public long read(java.nio.ByteBuffer[]);
-    public abstract java.net.SocketAddress receive(java.nio.ByteBuffer);
-    public abstract int send(java.nio.ByteBuffer, java.net.SocketAddress);
-    public abstract java.nio.channels.DatagramChannel setOption(java.net.SocketOption, java.lang.Object);
-    public java.nio.channels.NetworkChannel setOption(java.net.SocketOption, java.lang.Object);
-    public abstract java.net.DatagramSocket socket();
-    public int validOps();
-    public abstract int write(java.nio.ByteBuffer);
-    public abstract long write(java.nio.ByteBuffer[], int, int);
-    public long write(java.nio.ByteBuffer[]);
-
-
-}
-
--keep class java.nio.channels.FileChannel {
-    <init>();
-
-    public abstract void force(boolean);
-    public abstract java.nio.channels.FileLock lock(long, long, boolean);
-    public java.nio.channels.FileLock lock();
-    public abstract java.nio.MappedByteBuffer map(java.nio.channels.FileChannel$MapMode, long, long);
-    public static java.nio.channels.FileChannel open(java.nio.file.Path, java.util.Set, java.nio.file.attribute.FileAttribute[]);
-    public static java.nio.channels.FileChannel open(java.nio.file.Path, java.nio.file.OpenOption[]);
-    public abstract long position();
-    public abstract java.nio.channels.FileChannel position(long);
-    public java.nio.channels.SeekableByteChannel position(long);
-    public abstract int read(java.nio.ByteBuffer);
-    public abstract long read(java.nio.ByteBuffer[], int, int);
-    public long read(java.nio.ByteBuffer[]);
-    public abstract int read(java.nio.ByteBuffer, long);
-    public abstract long size();
-    public abstract long transferFrom(java.nio.channels.ReadableByteChannel, long, long);
-    public abstract long transferTo(long, long, java.nio.channels.WritableByteChannel);
-    public abstract java.nio.channels.FileChannel truncate(long);
-    public java.nio.channels.SeekableByteChannel truncate(long);
-    public abstract java.nio.channels.FileLock tryLock(long, long, boolean);
-    public java.nio.channels.FileLock tryLock();
-    public abstract int write(java.nio.ByteBuffer);
-    public abstract long write(java.nio.ByteBuffer[], int, int);
-    public long write(java.nio.ByteBuffer[]);
-    public abstract int write(java.nio.ByteBuffer, long);
-
-
-}
-
--keep class java.nio.channels.FileChannel$MapMode {
-
-    public java.lang.String toString();
-
-
-    public static java.nio.channels.FileChannel$MapMode PRIVATE;
-    public static java.nio.channels.FileChannel$MapMode READ_ONLY;
-    public static java.nio.channels.FileChannel$MapMode READ_WRITE;
-}
-
--keep class java.nio.channels.FileLock {
-    <init>(java.nio.channels.FileChannel, long, long, boolean);
-    <init>(java.nio.channels.AsynchronousFileChannel, long, long, boolean);
-
-    public java.nio.channels.Channel acquiredBy();
-    public java.nio.channels.FileChannel channel();
-    public void close();
-    public boolean isShared();
-    public abstract boolean isValid();
-    public boolean overlaps(long, long);
-    public long position();
-    public abstract void release();
-    public long size();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.nio.channels.NetworkChannel {
-
-    public abstract java.nio.channels.NetworkChannel bind(java.net.SocketAddress);
-    public abstract java.net.SocketAddress getLocalAddress();
-    public abstract java.lang.Object getOption(java.net.SocketOption);
-    public abstract java.nio.channels.NetworkChannel setOption(java.net.SocketOption, java.lang.Object);
-    public abstract java.util.Set supportedOptions();
-
-
-}
-
--keep class java.nio.channels.Pipe {
-    <init>();
-
-    public static java.nio.channels.Pipe open();
-    public abstract java.nio.channels.Pipe$SinkChannel sink();
-    public abstract java.nio.channels.Pipe$SourceChannel source();
-
-
-}
-
--keep class java.nio.channels.Pipe$SinkChannel {
-    <init>(java.nio.channels.spi.SelectorProvider);
-
-    public int validOps();
-
-
-}
-
--keep class java.nio.channels.Pipe$SourceChannel {
-    <init>(java.nio.channels.spi.SelectorProvider);
-
-    public int validOps();
-
-
-}
-
--keep class java.nio.channels.ReadableByteChannel {
-
-    public abstract int read(java.nio.ByteBuffer);
-
-
-}
-
--keep class java.nio.channels.SeekableByteChannel {
-
-    public abstract long position();
-    public abstract java.nio.channels.SeekableByteChannel position(long);
-    public abstract int read(java.nio.ByteBuffer);
-    public abstract long size();
-    public abstract java.nio.channels.SeekableByteChannel truncate(long);
-    public abstract int write(java.nio.ByteBuffer);
-
-
-}
-
--keep class java.nio.channels.SelectableChannel {
-    <init>();
-
-    public abstract java.lang.Object blockingLock();
-    public abstract java.nio.channels.SelectableChannel configureBlocking(boolean);
-    public abstract boolean isBlocking();
-    public abstract boolean isRegistered();
-    public abstract java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
-    public abstract java.nio.channels.spi.SelectorProvider provider();
-    public abstract java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, java.lang.Object);
-    public java.nio.channels.SelectionKey register(java.nio.channels.Selector, int);
-    public abstract int validOps();
-
-
-}
-
--keep class java.nio.channels.SelectionKey {
-    <init>();
-
-    public java.lang.Object attach(java.lang.Object);
-    public java.lang.Object attachment();
-    public abstract void cancel();
-    public abstract java.nio.channels.SelectableChannel channel();
-    public abstract int interestOps();
-    public abstract java.nio.channels.SelectionKey interestOps(int);
-    public boolean isAcceptable();
-    public boolean isConnectable();
-    public boolean isReadable();
-    public abstract boolean isValid();
-    public boolean isWritable();
-    public abstract int readyOps();
-    public abstract java.nio.channels.Selector selector();
-
-
-    public static int OP_ACCEPT;
-    public static int OP_CONNECT;
-    public static int OP_READ;
-    public static int OP_WRITE;
-}
-
--keep class java.nio.channels.Selector {
-    <init>();
-
-    public abstract void close();
-    public abstract boolean isOpen();
-    public abstract java.util.Set keys();
-    public static java.nio.channels.Selector open();
-    public abstract java.nio.channels.spi.SelectorProvider provider();
-    public abstract int select(long);
-    public abstract int select();
-    public abstract int selectNow();
-    public abstract java.util.Set selectedKeys();
-    public abstract java.nio.channels.Selector wakeup();
-
-
-}
-
--keep class java.nio.channels.ServerSocketChannel {
-    <init>(java.nio.channels.spi.SelectorProvider);
-
-    public abstract java.nio.channels.SocketChannel accept();
-    public java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress);
-    public abstract java.nio.channels.ServerSocketChannel bind(java.net.SocketAddress, int);
-    public java.nio.channels.NetworkChannel bind(java.net.SocketAddress);
-    public abstract java.net.SocketAddress getLocalAddress();
-    public static java.nio.channels.ServerSocketChannel open();
-    public abstract java.nio.channels.ServerSocketChannel setOption(java.net.SocketOption, java.lang.Object);
-    public java.nio.channels.NetworkChannel setOption(java.net.SocketOption, java.lang.Object);
-    public abstract java.net.ServerSocket socket();
-    public int validOps();
-
-
-}
-
--keep class java.nio.channels.SocketChannel {
-    <init>(java.nio.channels.spi.SelectorProvider);
-
-    public abstract java.nio.channels.SocketChannel bind(java.net.SocketAddress);
-    public java.nio.channels.NetworkChannel bind(java.net.SocketAddress);
-    public abstract boolean connect(java.net.SocketAddress);
-    public abstract boolean finishConnect();
-    public abstract java.net.SocketAddress getLocalAddress();
-    public abstract java.net.SocketAddress getRemoteAddress();
-    public abstract boolean isConnected();
-    public abstract boolean isConnectionPending();
-    public static java.nio.channels.SocketChannel open();
-    public static java.nio.channels.SocketChannel open(java.net.SocketAddress);
-    public abstract int read(java.nio.ByteBuffer);
-    public abstract long read(java.nio.ByteBuffer[], int, int);
-    public long read(java.nio.ByteBuffer[]);
-    public abstract java.nio.channels.SocketChannel setOption(java.net.SocketOption, java.lang.Object);
-    public java.nio.channels.NetworkChannel setOption(java.net.SocketOption, java.lang.Object);
-    public abstract java.nio.channels.SocketChannel shutdownInput();
-    public abstract java.nio.channels.SocketChannel shutdownOutput();
-    public abstract java.net.Socket socket();
-    public int validOps();
-    public abstract int write(java.nio.ByteBuffer);
-    public abstract long write(java.nio.ByteBuffer[], int, int);
-    public long write(java.nio.ByteBuffer[]);
-
-
-}
-
--keep class java.nio.channels.WritableByteChannel {
-
-    public abstract int write(java.nio.ByteBuffer);
-
-
-}
-
--keep class java.nio.channels.spi.AbstractInterruptibleChannel {
-    <init>();
-
-    protected void begin();
-    public void close();
-    protected void end(boolean);
-    protected abstract void implCloseChannel();
-    public boolean isOpen();
-
-
-}
-
--keep class java.nio.channels.spi.AbstractSelectableChannel {
-    <init>(java.nio.channels.spi.SelectorProvider);
-
-    public java.lang.Object blockingLock();
-    public java.nio.channels.SelectableChannel configureBlocking(boolean);
-    protected void implCloseChannel();
-    protected abstract void implCloseSelectableChannel();
-    protected abstract void implConfigureBlocking(boolean);
-    public boolean isBlocking();
-    public boolean isRegistered();
-    public java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
-    public java.nio.channels.spi.SelectorProvider provider();
-    public java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, java.lang.Object);
-
-
-}
-
--keep class java.nio.channels.spi.AbstractSelectionKey {
-    <init>();
-
-    public void cancel();
-    public boolean isValid();
-
-
-}
-
--keep class java.nio.channels.spi.AbstractSelector {
-    <init>(java.nio.channels.spi.SelectorProvider);
-
-    protected void begin();
-    protected java.util.Set cancelledKeys();
-    public void close();
-    protected void deregister(java.nio.channels.spi.AbstractSelectionKey);
-    protected void end();
-    protected abstract void implCloseSelector();
-    public boolean isOpen();
-    public java.nio.channels.spi.SelectorProvider provider();
-    protected abstract java.nio.channels.SelectionKey register(java.nio.channels.spi.AbstractSelectableChannel, int, java.lang.Object);
-
-
-}
-
--keep class java.nio.channels.spi.SelectorProvider {
-    <init>();
-
-    public java.nio.channels.Channel inheritedChannel();
-    public abstract java.nio.channels.DatagramChannel openDatagramChannel();
-    public abstract java.nio.channels.DatagramChannel openDatagramChannel(java.net.ProtocolFamily);
-    public abstract java.nio.channels.Pipe openPipe();
-    public abstract java.nio.channels.spi.AbstractSelector openSelector();
-    public abstract java.nio.channels.ServerSocketChannel openServerSocketChannel();
-    public abstract java.nio.channels.SocketChannel openSocketChannel();
-    public static java.nio.channels.spi.SelectorProvider provider();
-
-
-}
-
--keep class java.nio.charset.CharacterCodingException {
-    <init>();
-
-
-
-}
-
--keep class java.nio.charset.Charset {
-    <init>(java.lang.String, java.lang.String[]);
-
-    public java.util.Set aliases();
-    public static java.util.SortedMap availableCharsets();
-    public boolean canEncode();
-    public int compareTo(java.nio.charset.Charset);
-    public int compareTo(java.lang.Object);
-    public abstract boolean contains(java.nio.charset.Charset);
-    public java.nio.CharBuffer decode(java.nio.ByteBuffer);
-    public static java.nio.charset.Charset defaultCharset();
-    public java.lang.String displayName();
-    public java.lang.String displayName(java.util.Locale);
-    public java.nio.ByteBuffer encode(java.nio.CharBuffer);
-    public java.nio.ByteBuffer encode(java.lang.String);
-    public boolean equals(java.lang.Object);
-    public static java.nio.charset.Charset forName(java.lang.String);
-    public static java.nio.charset.Charset forNameUEE(java.lang.String);
-    public int hashCode();
-    public boolean isRegistered();
-    public static boolean isSupported(java.lang.String);
-    public java.lang.String name();
-    public abstract java.nio.charset.CharsetDecoder newDecoder();
-    public abstract java.nio.charset.CharsetEncoder newEncoder();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.nio.charset.CharsetDecoder {
-    <init>(java.nio.charset.Charset, float, float);
-
-    public float averageCharsPerByte();
-    public java.nio.charset.Charset charset();
-    public java.nio.charset.CoderResult decode(java.nio.ByteBuffer, java.nio.CharBuffer, boolean);
-    public java.nio.CharBuffer decode(java.nio.ByteBuffer);
-    protected abstract java.nio.charset.CoderResult decodeLoop(java.nio.ByteBuffer, java.nio.CharBuffer);
-    public java.nio.charset.Charset detectedCharset();
-    public java.nio.charset.CoderResult flush(java.nio.CharBuffer);
-    protected java.nio.charset.CoderResult implFlush(java.nio.CharBuffer);
-    protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
-    protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    protected void implReplaceWith(java.lang.String);
-    protected void implReset();
-    public boolean isAutoDetecting();
-    public boolean isCharsetDetected();
-    public java.nio.charset.CodingErrorAction malformedInputAction();
-    public float maxCharsPerByte();
-    public java.nio.charset.CharsetDecoder onMalformedInput(java.nio.charset.CodingErrorAction);
-    public java.nio.charset.CharsetDecoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    public java.nio.charset.CharsetDecoder replaceWith(java.lang.String);
-    public java.lang.String replacement();
-    public java.nio.charset.CharsetDecoder reset();
-    public java.nio.charset.CodingErrorAction unmappableCharacterAction();
-
-
-}
-
--keep class java.nio.charset.CharsetEncoder {
-    <init>(java.nio.charset.Charset, float, float, byte[]);
-    <init>(java.nio.charset.Charset, float, float);
-
-    public float averageBytesPerChar();
-    public boolean canEncode(char);
-    public boolean canEncode(java.lang.CharSequence);
-    public java.nio.charset.Charset charset();
-    public java.nio.charset.CoderResult encode(java.nio.CharBuffer, java.nio.ByteBuffer, boolean);
-    public java.nio.ByteBuffer encode(java.nio.CharBuffer);
-    protected abstract java.nio.charset.CoderResult encodeLoop(java.nio.CharBuffer, java.nio.ByteBuffer);
-    public java.nio.charset.CoderResult flush(java.nio.ByteBuffer);
-    protected java.nio.charset.CoderResult implFlush(java.nio.ByteBuffer);
-    protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
-    protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    protected void implReplaceWith(byte[]);
-    protected void implReset();
-    public boolean isLegalReplacement(byte[]);
-    public java.nio.charset.CodingErrorAction malformedInputAction();
-    public float maxBytesPerChar();
-    public java.nio.charset.CharsetEncoder onMalformedInput(java.nio.charset.CodingErrorAction);
-    public java.nio.charset.CharsetEncoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
-    public java.nio.charset.CharsetEncoder replaceWith(byte[]);
-    public byte[] replacement();
-    public java.nio.charset.CharsetEncoder reset();
-    public java.nio.charset.CodingErrorAction unmappableCharacterAction();
-
-
-}
-
--keep class java.nio.charset.CoderResult {
-
-    public boolean isError();
-    public boolean isMalformed();
-    public boolean isOverflow();
-    public boolean isUnderflow();
-    public boolean isUnmappable();
-    public int length();
-    public static java.nio.charset.CoderResult malformedForLength(int);
-    public void throwException();
-    public java.lang.String toString();
-    public static java.nio.charset.CoderResult unmappableForLength(int);
-
-
-    public static java.nio.charset.CoderResult OVERFLOW;
-    public static java.nio.charset.CoderResult UNDERFLOW;
-}
-
--keep class java.nio.charset.CodingErrorAction {
-
-    public java.lang.String toString();
-
-
-    public static java.nio.charset.CodingErrorAction IGNORE;
-    public static java.nio.charset.CodingErrorAction REPLACE;
-    public static java.nio.charset.CodingErrorAction REPORT;
-}
-
--keep class java.nio.file.AccessMode {
-
-    public static java.nio.file.AccessMode valueOf(java.lang.String);
-    public static java.nio.file.AccessMode[] values();
-
-    public static java.nio.file.AccessMode EXECUTE;
-    public static java.nio.file.AccessMode READ;
-    public static java.nio.file.AccessMode WRITE;
-
-}
-
--keep class java.nio.file.CopyOption {
-
-
-
-}
-
--keep class java.nio.file.DirectoryStream {
-
-    public abstract java.util.Iterator iterator();
-
-
-}
-
--keep class java.nio.file.DirectoryStream$Filter {
-
-    public abstract boolean accept(java.lang.Object);
-
-
-}
-
--keep class java.nio.file.FileStore {
-    <init>();
-
-    public abstract java.lang.Object getAttribute(java.lang.String);
-    public abstract java.nio.file.attribute.FileStoreAttributeView getFileStoreAttributeView(java.lang.Class);
-    public abstract long getTotalSpace();
-    public abstract long getUnallocatedSpace();
-    public abstract long getUsableSpace();
-    public abstract boolean isReadOnly();
-    public abstract java.lang.String name();
-    public abstract boolean supportsFileAttributeView(java.lang.Class);
-    public abstract boolean supportsFileAttributeView(java.lang.String);
-    public abstract java.lang.String type();
-
-
-}
-
--keep class java.nio.file.FileSystem {
-    <init>();
-
-    public abstract void close();
-    public abstract java.lang.Iterable getFileStores();
-    public abstract java.nio.file.Path getPath(java.lang.String, java.lang.String[]);
-    public abstract java.nio.file.PathMatcher getPathMatcher(java.lang.String);
-    public abstract java.lang.Iterable getRootDirectories();
-    public abstract java.lang.String getSeparator();
-    public abstract java.nio.file.attribute.UserPrincipalLookupService getUserPrincipalLookupService();
-    public abstract boolean isOpen();
-    public abstract boolean isReadOnly();
-    public abstract java.nio.file.WatchService newWatchService();
-    public abstract java.nio.file.spi.FileSystemProvider provider();
-    public abstract java.util.Set supportedFileAttributeViews();
-
-
-}
-
--keep class java.nio.file.LinkOption {
-
-    public static java.nio.file.LinkOption valueOf(java.lang.String);
-    public static java.nio.file.LinkOption[] values();
-
-    public static java.nio.file.LinkOption NOFOLLOW_LINKS;
-
-}
-
--keep class java.nio.file.OpenOption {
-
-
-
-}
-
--keep class java.nio.file.Path {
-
-    public abstract int compareTo(java.nio.file.Path);
-    public int compareTo(java.lang.Object);
-    public abstract boolean endsWith(java.nio.file.Path);
-    public abstract boolean endsWith(java.lang.String);
-    public abstract boolean equals(java.lang.Object);
-    public abstract java.nio.file.Path getFileName();
-    public abstract java.nio.file.FileSystem getFileSystem();
-    public abstract java.nio.file.Path getName(int);
-    public abstract int getNameCount();
-    public abstract java.nio.file.Path getParent();
-    public abstract java.nio.file.Path getRoot();
-    public abstract int hashCode();
-    public abstract boolean isAbsolute();
-    public abstract java.util.Iterator iterator();
-    public abstract java.nio.file.Path normalize();
-    public abstract java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent$Kind[], java.nio.file.WatchEvent$Modifier[]);
-    public abstract java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent$Kind[]);
-    public abstract java.nio.file.Path relativize(java.nio.file.Path);
-    public abstract java.nio.file.Path resolve(java.nio.file.Path);
-    public abstract java.nio.file.Path resolve(java.lang.String);
-    public abstract java.nio.file.Path resolveSibling(java.nio.file.Path);
-    public abstract java.nio.file.Path resolveSibling(java.lang.String);
-    public abstract boolean startsWith(java.nio.file.Path);
-    public abstract boolean startsWith(java.lang.String);
-    public abstract java.nio.file.Path subpath(int, int);
-    public abstract java.nio.file.Path toAbsolutePath();
-    public abstract java.io.File toFile();
-    public abstract java.nio.file.Path toRealPath(java.nio.file.LinkOption[]);
-    public abstract java.lang.String toString();
-    public abstract java.net.URI toUri();
-
-
-}
-
--keep class java.nio.file.PathMatcher {
-
-    public abstract boolean matches(java.nio.file.Path);
-
-
-}
-
--keep class java.nio.file.WatchEvent {
-
-    public abstract java.lang.Object context();
-    public abstract int count();
-    public abstract java.nio.file.WatchEvent$Kind kind();
-
-
-}
-
--keep class java.nio.file.WatchEvent$Kind {
-
-    public abstract java.lang.String name();
-    public abstract java.lang.Class type();
-
-
-}
-
--keep class java.nio.file.WatchEvent$Modifier {
-
-    public abstract java.lang.String name();
-
-
-}
-
--keep class java.nio.file.WatchKey {
-
-    public abstract void cancel();
-    public abstract boolean isValid();
-    public abstract java.util.List pollEvents();
-    public abstract boolean reset();
-    public abstract java.nio.file.Watchable watchable();
-
-
-}
-
--keep class java.nio.file.WatchService {
-
-    public abstract void close();
-    public abstract java.nio.file.WatchKey poll();
-    public abstract java.nio.file.WatchKey poll(long, java.util.concurrent.TimeUnit);
-    public abstract java.nio.file.WatchKey take();
-
-
-}
-
--keep class java.nio.file.Watchable {
-
-    public abstract java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent$Kind[], java.nio.file.WatchEvent$Modifier[]);
-    public abstract java.nio.file.WatchKey register(java.nio.file.WatchService, java.nio.file.WatchEvent$Kind[]);
-
-
-}
-
--keep class java.nio.file.attribute.BasicFileAttributes {
-
-    public abstract java.nio.file.attribute.FileTime creationTime();
-    public abstract java.lang.Object fileKey();
-    public abstract boolean isDirectory();
-    public abstract boolean isOther();
-    public abstract boolean isRegularFile();
-    public abstract boolean isSymbolicLink();
-    public abstract java.nio.file.attribute.FileTime lastAccessTime();
-    public abstract java.nio.file.attribute.FileTime lastModifiedTime();
-    public abstract long size();
-
-
-}
-
--keep class java.nio.file.attribute.FileAttribute {
-
-    public abstract java.lang.String name();
-    public abstract java.lang.Object value();
-
-
-}
-
--keep class java.nio.file.attribute.FileAttributeView {
-
-
-
-}
-
--keep class java.nio.file.attribute.FileStoreAttributeView {
-
-
-
-}
-
--keep class java.nio.file.attribute.FileTime {
-
-    public int compareTo(java.nio.file.attribute.FileTime);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public static java.nio.file.attribute.FileTime from(long, java.util.concurrent.TimeUnit);
-    public static java.nio.file.attribute.FileTime from(java.time.Instant);
-    public static java.nio.file.attribute.FileTime fromMillis(long);
-    public int hashCode();
-    public long to(java.util.concurrent.TimeUnit);
-    public java.time.Instant toInstant();
-    public long toMillis();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.nio.file.attribute.GroupPrincipal {
-
-
-
-}
-
--keep class java.nio.file.attribute.UserPrincipal {
-
-
-
-}
-
--keep class java.nio.file.attribute.UserPrincipalLookupService {
-    <init>();
-
-    public abstract java.nio.file.attribute.GroupPrincipal lookupPrincipalByGroupName(java.lang.String);
-    public abstract java.nio.file.attribute.UserPrincipal lookupPrincipalByName(java.lang.String);
-
-
-}
-
--keep class java.nio.file.spi.FileSystemProvider {
-    <init>();
-
-    public abstract void checkAccess(java.nio.file.Path, java.nio.file.AccessMode[]);
-    public abstract void copy(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption[]);
-    public abstract void createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute[]);
-    public void createLink(java.nio.file.Path, java.nio.file.Path);
-    public void createSymbolicLink(java.nio.file.Path, java.nio.file.Path, java.nio.file.attribute.FileAttribute[]);
-    public abstract void delete(java.nio.file.Path);
-    public boolean deleteIfExists(java.nio.file.Path);
-    public abstract java.nio.file.attribute.FileAttributeView getFileAttributeView(java.nio.file.Path, java.lang.Class, java.nio.file.LinkOption[]);
-    public abstract java.nio.file.FileStore getFileStore(java.nio.file.Path);
-    public abstract java.nio.file.FileSystem getFileSystem(java.net.URI);
-    public abstract java.nio.file.Path getPath(java.net.URI);
-    public abstract java.lang.String getScheme();
-    public static java.util.List installedProviders();
-    public abstract boolean isHidden(java.nio.file.Path);
-    public abstract boolean isSameFile(java.nio.file.Path, java.nio.file.Path);
-    public abstract void move(java.nio.file.Path, java.nio.file.Path, java.nio.file.CopyOption[]);
-    public java.nio.channels.AsynchronousFileChannel newAsynchronousFileChannel(java.nio.file.Path, java.util.Set, java.util.concurrent.ExecutorService, java.nio.file.attribute.FileAttribute[]);
-    public abstract java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set, java.nio.file.attribute.FileAttribute[]);
-    public abstract java.nio.file.DirectoryStream newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream$Filter);
-    public java.nio.channels.FileChannel newFileChannel(java.nio.file.Path, java.util.Set, java.nio.file.attribute.FileAttribute[]);
-    public abstract java.nio.file.FileSystem newFileSystem(java.net.URI, java.util.Map);
-    public java.nio.file.FileSystem newFileSystem(java.nio.file.Path, java.util.Map);
-    public java.io.InputStream newInputStream(java.nio.file.Path, java.nio.file.OpenOption[]);
-    public java.io.OutputStream newOutputStream(java.nio.file.Path, java.nio.file.OpenOption[]);
-    public abstract java.nio.file.attribute.BasicFileAttributes readAttributes(java.nio.file.Path, java.lang.Class, java.nio.file.LinkOption[]);
-    public abstract java.util.Map readAttributes(java.nio.file.Path, java.lang.String, java.nio.file.LinkOption[]);
-    public java.nio.file.Path readSymbolicLink(java.nio.file.Path);
-    public abstract void setAttribute(java.nio.file.Path, java.lang.String, java.lang.Object, java.nio.file.LinkOption[]);
-
-
-}
-
--keep class java.security.AccessControlContext {
-    <init>(java.security.ProtectionDomain[]);
-    <init>(java.security.AccessControlContext, java.security.DomainCombiner);
-
-    public void checkPermission(java.security.Permission);
-    public java.security.DomainCombiner getDomainCombiner();
-
-
-}
-
--keep class java.security.AccessControlException {
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.security.Permission);
-
-    public java.security.Permission getPermission();
-
-
-}
-
--keep class java.security.CodeSigner {
-    <init>(java.security.cert.CertPath, java.security.Timestamp);
-
-    public boolean equals(java.lang.Object);
-    public java.security.cert.CertPath getSignerCertPath();
-    public java.security.Timestamp getTimestamp();
-    public int hashCode();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.security.CodeSource {
-    <init>(java.net.URL, java.security.cert.Certificate[]);
-    <init>(java.net.URL, java.security.CodeSigner[]);
-
-    public java.security.cert.Certificate[] getCertificates();
-    public java.security.CodeSigner[] getCodeSigners();
-    public java.net.URL getLocation();
-    public boolean implies(java.security.CodeSource);
-
-
-}
-
--keep class java.security.DomainCombiner {
-
-    public abstract java.security.ProtectionDomain[] combine(java.security.ProtectionDomain[], java.security.ProtectionDomain[]);
-
-
-}
-
--keep class java.security.GeneralSecurityException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.security.InvalidKeyException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.security.KeyException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.security.NoSuchAlgorithmException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.security.NoSuchProviderException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.security.Permission {
-    <init>(java.lang.String);
-
-    public void checkGuard(java.lang.Object);
-    public abstract java.lang.String getActions();
-    public java.lang.String getName();
-    public abstract boolean implies(java.security.Permission);
-    public java.security.PermissionCollection newPermissionCollection();
-
-
-}
-
--keep class java.security.PermissionCollection {
-    <init>();
-
-    public abstract void add(java.security.Permission);
-    public abstract java.util.Enumeration elements();
-    public abstract boolean implies(java.security.Permission);
-    public boolean isReadOnly();
-    public void setReadOnly();
-
-
-}
-
--keep class java.security.Principal {
-
-    public abstract boolean equals(java.lang.Object);
-    public abstract java.lang.String getName();
-    public abstract int hashCode();
-    public boolean implies(javax.security.auth.Subject);
-    public abstract java.lang.String toString();
-
-
-}
-
--keep class java.security.PrivilegedAction {
-
-    public abstract java.lang.Object run();
-
-
-}
-
--keep class java.security.PrivilegedActionException {
-    <init>(java.lang.Exception);
-
-    public java.lang.Throwable getCause();
-    public java.lang.Exception getException();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.security.PrivilegedExceptionAction {
-
-    public abstract java.lang.Object run();
-
-
-}
-
--keep class java.security.ProtectionDomain {
-    <init>(java.security.CodeSource, java.security.PermissionCollection);
-    <init>(java.security.CodeSource, java.security.PermissionCollection, java.lang.ClassLoader, java.security.Principal[]);
-
-    public java.lang.ClassLoader getClassLoader();
-    public java.security.CodeSource getCodeSource();
-    public java.security.PermissionCollection getPermissions();
-    public java.security.Principal[] getPrincipals();
-    public boolean implies(java.security.Permission);
-
-
-}
-
--keep class java.security.Provider {
-    <init>(java.lang.String, double, java.lang.String);
-
-    public synchronized void clear();
-    public synchronized java.lang.Object compute(java.lang.Object, java.util.function.BiFunction);
-    public synchronized java.lang.Object computeIfAbsent(java.lang.Object, java.util.function.Function);
-    public synchronized java.lang.Object computeIfPresent(java.lang.Object, java.util.function.BiFunction);
-    public java.util.Enumeration elements();
-    public synchronized java.util.Set entrySet();
-    public synchronized void forEach(java.util.function.BiConsumer);
-    public java.lang.Object get(java.lang.Object);
-    public java.lang.String getInfo();
-    public java.lang.String getName();
-    public synchronized java.lang.Object getOrDefault(java.lang.Object, java.lang.Object);
-    public java.lang.String getProperty(java.lang.String);
-    public synchronized java.security.Provider$Service getService(java.lang.String, java.lang.String);
-    public synchronized java.util.Set getServices();
-    public double getVersion();
-    public boolean isRegistered();
-    public java.util.Set keySet();
-    public java.util.Enumeration keys();
-    public synchronized void load(java.io.InputStream);
-    public synchronized java.lang.Object merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction);
-    public synchronized java.lang.Object put(java.lang.Object, java.lang.Object);
-    public synchronized void putAll(java.util.Map);
-    public synchronized java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object);
-    protected synchronized void putService(java.security.Provider$Service);
-    public synchronized java.lang.Object remove(java.lang.Object);
-    public synchronized boolean remove(java.lang.Object, java.lang.Object);
-    protected synchronized void removeService(java.security.Provider$Service);
-    public synchronized boolean replace(java.lang.Object, java.lang.Object, java.lang.Object);
-    public synchronized java.lang.Object replace(java.lang.Object, java.lang.Object);
-    public synchronized void replaceAll(java.util.function.BiFunction);
-    public void setRegistered();
-    public void setUnregistered();
-    public java.lang.String toString();
-    public java.util.Collection values();
-    public synchronized void warmUpServiceProvision();
-
-
-}
-
--keep class java.security.Provider$Service {
-    <init>(java.security.Provider, java.lang.String, java.lang.String, java.lang.String, java.util.List, java.util.Map);
-
-    public java.lang.String getAlgorithm();
-    public java.lang.String getAttribute(java.lang.String);
-    public java.lang.String getClassName();
-    public java.security.Provider getProvider();
-    public java.lang.String getType();
-    public java.lang.Object newInstance(java.lang.Object);
-    public boolean supportsParameter(java.lang.Object);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.security.PublicKey {
-
-
-
-    public static long serialVersionUID;
-}
-
--keep class java.security.SignatureException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.security.Timestamp {
-    <init>(java.util.Date, java.security.cert.CertPath);
-
-    public boolean equals(java.lang.Object);
-    public java.security.cert.CertPath getSignerCertPath();
-    public java.util.Date getTimestamp();
-    public int hashCode();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.security.cert.CRL {
-    <init>(java.lang.String);
-
-    public java.lang.String getType();
-    public abstract boolean isRevoked(java.security.cert.Certificate);
-    public abstract java.lang.String toString();
-
-
-}
-
--keep class java.security.cert.CRLException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.security.cert.CertPath {
-    <init>(java.lang.String);
-
-    public boolean equals(java.lang.Object);
-    public abstract java.util.List getCertificates();
-    public abstract byte[] getEncoded();
-    public abstract byte[] getEncoded(java.lang.String);
-    public abstract java.util.Iterator getEncodings();
-    public java.lang.String getType();
-    public int hashCode();
-    public java.lang.String toString();
-    protected java.lang.Object writeReplace();
-
-
-}
-
--keep class java.security.cert.Certificate {
-    <init>(java.lang.String);
-
-    public boolean equals(java.lang.Object);
-    public abstract byte[] getEncoded();
-    public abstract java.security.PublicKey getPublicKey();
-    public java.lang.String getType();
-    public int hashCode();
-    public abstract java.lang.String toString();
-    public abstract void verify(java.security.PublicKey);
-    public abstract void verify(java.security.PublicKey, java.lang.String);
-    public void verify(java.security.PublicKey, java.security.Provider);
-    protected java.lang.Object writeReplace();
-
-
-}
-
--keep class java.security.cert.CertificateEncodingException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.security.cert.CertificateException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.security.cert.CertificateFactory {
-    <init>(java.security.cert.CertificateFactorySpi, java.security.Provider, java.lang.String);
-
-    public java.security.cert.CRL generateCRL(java.io.InputStream);
-    public java.util.Collection generateCRLs(java.io.InputStream);
-    public java.security.cert.CertPath generateCertPath(java.io.InputStream);
-    public java.security.cert.CertPath generateCertPath(java.io.InputStream, java.lang.String);
-    public java.security.cert.CertPath generateCertPath(java.util.List);
-    public java.security.cert.Certificate generateCertificate(java.io.InputStream);
-    public java.util.Collection generateCertificates(java.io.InputStream);
-    public java.util.Iterator getCertPathEncodings();
-    public static java.security.cert.CertificateFactory getInstance(java.lang.String);
-    public static java.security.cert.CertificateFactory getInstance(java.lang.String, java.lang.String);
-    public static java.security.cert.CertificateFactory getInstance(java.lang.String, java.security.Provider);
-    public java.security.Provider getProvider();
-    public java.lang.String getType();
-
-
-}
-
--keep class java.security.cert.CertificateFactorySpi {
-    <init>();
-
-    public abstract java.security.cert.CRL engineGenerateCRL(java.io.InputStream);
-    public abstract java.util.Collection engineGenerateCRLs(java.io.InputStream);
-    public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream);
-    public java.security.cert.CertPath engineGenerateCertPath(java.io.InputStream, java.lang.String);
-    public java.security.cert.CertPath engineGenerateCertPath(java.util.List);
-    public abstract java.security.cert.Certificate engineGenerateCertificate(java.io.InputStream);
-    public abstract java.util.Collection engineGenerateCertificates(java.io.InputStream);
-    public java.util.Iterator engineGetCertPathEncodings();
-
-
-}
-
--keep class java.text.AttributedCharacterIterator {
-
-    public abstract java.util.Set getAllAttributeKeys();
-    public abstract java.lang.Object getAttribute(java.text.AttributedCharacterIterator$Attribute);
-    public abstract java.util.Map getAttributes();
-    public abstract int getRunLimit();
-    public abstract int getRunLimit(java.text.AttributedCharacterIterator$Attribute);
-    public abstract int getRunLimit(java.util.Set);
-    public abstract int getRunStart();
-    public abstract int getRunStart(java.text.AttributedCharacterIterator$Attribute);
-    public abstract int getRunStart(java.util.Set);
-
-
-}
-
--keep class java.text.AttributedCharacterIterator$Attribute {
-    <init>(java.lang.String);
-
-    public boolean equals(java.lang.Object);
-    protected java.lang.String getName();
-    public int hashCode();
-    protected java.lang.Object readResolve();
-    public java.lang.String toString();
-
-
-    public static java.text.AttributedCharacterIterator$Attribute INPUT_METHOD_SEGMENT;
-    public static java.text.AttributedCharacterIterator$Attribute LANGUAGE;
-    public static java.text.AttributedCharacterIterator$Attribute READING;
-}
-
--keep class java.text.FieldPosition {
-    <init>(int);
-    <init>(java.text.Format$Field);
-    <init>(java.text.Format$Field, int);
-
-    public boolean equals(java.lang.Object);
-    public int getBeginIndex();
-    public int getEndIndex();
-    public int getField();
-    public java.text.Format$Field getFieldAttribute();
-    public int hashCode();
-    public void setBeginIndex(int);
-    public void setEndIndex(int);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.text.Format {
-    <init>();
-
-    public java.lang.Object clone();
-    public java.lang.String format(java.lang.Object);
-    public abstract java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition);
-    public java.text.AttributedCharacterIterator formatToCharacterIterator(java.lang.Object);
-    public abstract java.lang.Object parseObject(java.lang.String, java.text.ParsePosition);
-    public java.lang.Object parseObject(java.lang.String);
-
-
-}
-
--keep class java.text.Format$Field {
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.text.ParseException {
-    <init>(java.lang.String, int);
-
-    public int getErrorOffset();
-
-
-}
-
--keep class java.text.ParsePosition {
-    <init>(int);
-
-    public boolean equals(java.lang.Object);
-    public int getErrorIndex();
-    public int getIndex();
-    public int hashCode();
-    public void setErrorIndex(int);
-    public void setIndex(int);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.time.Clock {
-    <init>();
-
-    public boolean equals(java.lang.Object);
-    public static java.time.Clock fixed(java.time.Instant, java.time.ZoneId);
-    public abstract java.time.ZoneId getZone();
-    public int hashCode();
-    public abstract java.time.Instant instant();
-    public long millis();
-    public static java.time.Clock offset(java.time.Clock, java.time.Duration);
-    public static java.time.Clock system(java.time.ZoneId);
-    public static java.time.Clock systemDefaultZone();
-    public static java.time.Clock systemUTC();
-    public static java.time.Clock tick(java.time.Clock, java.time.Duration);
-    public static java.time.Clock tickMinutes(java.time.ZoneId);
-    public static java.time.Clock tickSeconds(java.time.ZoneId);
-    public abstract java.time.Clock withZone(java.time.ZoneId);
-
-
-}
-
--keep class java.time.DayOfWeek {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public static java.time.DayOfWeek from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    public long getLong(java.time.temporal.TemporalField);
-    public int getValue();
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public java.time.DayOfWeek minus(long);
-    public static java.time.DayOfWeek of(int);
-    public java.time.DayOfWeek plus(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public static java.time.DayOfWeek valueOf(java.lang.String);
-    public static java.time.DayOfWeek[] values();
-
-    public static java.time.DayOfWeek FRIDAY;
-    public static java.time.DayOfWeek MONDAY;
-    public static java.time.DayOfWeek SATURDAY;
-    public static java.time.DayOfWeek SUNDAY;
-    public static java.time.DayOfWeek THURSDAY;
-    public static java.time.DayOfWeek TUESDAY;
-    public static java.time.DayOfWeek WEDNESDAY;
-
-}
-
--keep class java.time.Duration {
-
-    public java.time.Duration abs();
-    public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    public static java.time.Duration between(java.time.temporal.Temporal, java.time.temporal.Temporal);
-    public int compareTo(java.time.Duration);
-    public int compareTo(java.lang.Object);
-    public java.time.Duration dividedBy(long);
-    public boolean equals(java.lang.Object);
-    public static java.time.Duration from(java.time.temporal.TemporalAmount);
-    public long get(java.time.temporal.TemporalUnit);
-    public int getNano();
-    public long getSeconds();
-    public java.util.List getUnits();
-    public int hashCode();
-    public boolean isNegative();
-    public boolean isZero();
-    public java.time.Duration minus(java.time.Duration);
-    public java.time.Duration minus(long, java.time.temporal.TemporalUnit);
-    public java.time.Duration minusDays(long);
-    public java.time.Duration minusHours(long);
-    public java.time.Duration minusMillis(long);
-    public java.time.Duration minusMinutes(long);
-    public java.time.Duration minusNanos(long);
-    public java.time.Duration minusSeconds(long);
-    public java.time.Duration multipliedBy(long);
-    public java.time.Duration negated();
-    public static java.time.Duration of(long, java.time.temporal.TemporalUnit);
-    public static java.time.Duration ofDays(long);
-    public static java.time.Duration ofHours(long);
-    public static java.time.Duration ofMillis(long);
-    public static java.time.Duration ofMinutes(long);
-    public static java.time.Duration ofNanos(long);
-    public static java.time.Duration ofSeconds(long);
-    public static java.time.Duration ofSeconds(long, long);
-    public static java.time.Duration parse(java.lang.CharSequence);
-    public java.time.Duration plus(java.time.Duration);
-    public java.time.Duration plus(long, java.time.temporal.TemporalUnit);
-    public java.time.Duration plusDays(long);
-    public java.time.Duration plusHours(long);
-    public java.time.Duration plusMillis(long);
-    public java.time.Duration plusMinutes(long);
-    public java.time.Duration plusNanos(long);
-    public java.time.Duration plusSeconds(long);
-    public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-    public long toDays();
-    public long toHours();
-    public long toMillis();
-    public long toMinutes();
-    public long toNanos();
-    public java.lang.String toString();
-    public java.time.Duration withNanos(int);
-    public java.time.Duration withSeconds(long);
-
-
-    public static java.time.Duration ZERO;
-}
-
--keep class java.time.Instant {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
-    public java.time.ZonedDateTime atZone(java.time.ZoneId);
-    public int compareTo(java.time.Instant);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public static java.time.Instant from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public long getEpochSecond();
-    public long getLong(java.time.temporal.TemporalField);
-    public int getNano();
-    public int hashCode();
-    public boolean isAfter(java.time.Instant);
-    public boolean isBefore(java.time.Instant);
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.Instant minus(java.time.temporal.TemporalAmount);
-    public java.time.Instant minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.Instant minusMillis(long);
-    public java.time.Instant minusNanos(long);
-    public java.time.Instant minusSeconds(long);
-    public static java.time.Instant now();
-    public static java.time.Instant now(java.time.Clock);
-    public static java.time.Instant ofEpochMilli(long);
-    public static java.time.Instant ofEpochSecond(long);
-    public static java.time.Instant ofEpochSecond(long, long);
-    public static java.time.Instant parse(java.lang.CharSequence);
-    public java.time.Instant plus(java.time.temporal.TemporalAmount);
-    public java.time.Instant plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.time.Instant plusMillis(long);
-    public java.time.Instant plusNanos(long);
-    public java.time.Instant plusSeconds(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public long toEpochMilli();
-    public java.lang.String toString();
-    public java.time.Instant truncatedTo(java.time.temporal.TemporalUnit);
-    public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public java.time.Instant with(java.time.temporal.TemporalAdjuster);
-    public java.time.Instant with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-
-
-    public static java.time.Instant EPOCH;
-    public static java.time.Instant MAX;
-    public static java.time.Instant MIN;
-}
-
--keep class java.time.LocalDate {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public java.time.LocalDateTime atStartOfDay();
-    public java.time.ZonedDateTime atStartOfDay(java.time.ZoneId);
-    public java.time.LocalDateTime atTime(java.time.LocalTime);
-    public java.time.LocalDateTime atTime(int, int);
-    public java.time.LocalDateTime atTime(int, int, int);
-    public java.time.LocalDateTime atTime(int, int, int, int);
-    public java.time.OffsetDateTime atTime(java.time.OffsetTime);
-    public java.time.chrono.ChronoLocalDateTime atTime(java.time.LocalTime);
-    public int compareTo(java.time.chrono.ChronoLocalDate);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.LocalDate from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public java.time.chrono.IsoChronology getChronology();
-    public java.time.chrono.Chronology getChronology();
-    public int getDayOfMonth();
-    public java.time.DayOfWeek getDayOfWeek();
-    public int getDayOfYear();
-    public java.time.chrono.Era getEra();
-    public long getLong(java.time.temporal.TemporalField);
-    public java.time.Month getMonth();
-    public int getMonthValue();
-    public int getYear();
-    public int hashCode();
-    public boolean isAfter(java.time.chrono.ChronoLocalDate);
-    public boolean isBefore(java.time.chrono.ChronoLocalDate);
-    public boolean isEqual(java.time.chrono.ChronoLocalDate);
-    public boolean isLeapYear();
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public int lengthOfMonth();
-    public int lengthOfYear();
-    public java.time.LocalDate minus(java.time.temporal.TemporalAmount);
-    public java.time.LocalDate minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit);
-    public java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount);
-    public java.time.LocalDate minusDays(long);
-    public java.time.LocalDate minusMonths(long);
-    public java.time.LocalDate minusWeeks(long);
-    public java.time.LocalDate minusYears(long);
-    public static java.time.LocalDate now();
-    public static java.time.LocalDate now(java.time.ZoneId);
-    public static java.time.LocalDate now(java.time.Clock);
-    public static java.time.LocalDate of(int, java.time.Month, int);
-    public static java.time.LocalDate of(int, int, int);
-    public static java.time.LocalDate ofEpochDay(long);
-    public static java.time.LocalDate ofYearDay(int, int);
-    public static java.time.LocalDate parse(java.lang.CharSequence);
-    public static java.time.LocalDate parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
-    public java.time.LocalDate plus(java.time.temporal.TemporalAmount);
-    public java.time.LocalDate plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit);
-    public java.time.chrono.ChronoLocalDate plus(java.time.temporal.TemporalAmount);
-    public java.time.LocalDate plusDays(long);
-    public java.time.LocalDate plusMonths(long);
-    public java.time.LocalDate plusWeeks(long);
-    public java.time.LocalDate plusYears(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public long toEpochDay();
-    public java.lang.String toString();
-    public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public java.time.Period until(java.time.chrono.ChronoLocalDate);
-    public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    public java.time.LocalDate with(java.time.temporal.TemporalAdjuster);
-    public java.time.LocalDate with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    public java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long);
-    public java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster);
-    public java.time.LocalDate withDayOfMonth(int);
-    public java.time.LocalDate withDayOfYear(int);
-    public java.time.LocalDate withMonth(int);
-    public java.time.LocalDate withYear(int);
-
-
-    public static java.time.LocalDate MAX;
-    public static java.time.LocalDate MIN;
-}
-
--keep class java.time.LocalDateTime {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public java.time.OffsetDateTime atOffset(java.time.ZoneOffset);
-    public java.time.ZonedDateTime atZone(java.time.ZoneId);
-    public java.time.chrono.ChronoZonedDateTime atZone(java.time.ZoneId);
-    public int compareTo(java.time.chrono.ChronoLocalDateTime);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.LocalDateTime from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public int getDayOfMonth();
-    public java.time.DayOfWeek getDayOfWeek();
-    public int getDayOfYear();
-    public int getHour();
-    public long getLong(java.time.temporal.TemporalField);
-    public int getMinute();
-    public java.time.Month getMonth();
-    public int getMonthValue();
-    public int getNano();
-    public int getSecond();
-    public int getYear();
-    public int hashCode();
-    public boolean isAfter(java.time.chrono.ChronoLocalDateTime);
-    public boolean isBefore(java.time.chrono.ChronoLocalDateTime);
-    public boolean isEqual(java.time.chrono.ChronoLocalDateTime);
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.LocalDateTime minus(java.time.temporal.TemporalAmount);
-    public java.time.LocalDateTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDateTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.chrono.ChronoLocalDateTime minus(java.time.temporal.TemporalAmount);
-    public java.time.LocalDateTime minusDays(long);
-    public java.time.LocalDateTime minusHours(long);
-    public java.time.LocalDateTime minusMinutes(long);
-    public java.time.LocalDateTime minusMonths(long);
-    public java.time.LocalDateTime minusNanos(long);
-    public java.time.LocalDateTime minusSeconds(long);
-    public java.time.LocalDateTime minusWeeks(long);
-    public java.time.LocalDateTime minusYears(long);
-    public static java.time.LocalDateTime now();
-    public static java.time.LocalDateTime now(java.time.ZoneId);
-    public static java.time.LocalDateTime now(java.time.Clock);
-    public static java.time.LocalDateTime of(int, java.time.Month, int, int, int);
-    public static java.time.LocalDateTime of(int, java.time.Month, int, int, int, int);
-    public static java.time.LocalDateTime of(int, java.time.Month, int, int, int, int, int);
-    public static java.time.LocalDateTime of(int, int, int, int, int);
-    public static java.time.LocalDateTime of(int, int, int, int, int, int);
-    public static java.time.LocalDateTime of(int, int, int, int, int, int, int);
-    public static java.time.LocalDateTime of(java.time.LocalDate, java.time.LocalTime);
-    public static java.time.LocalDateTime ofEpochSecond(long, int, java.time.ZoneOffset);
-    public static java.time.LocalDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    public static java.time.LocalDateTime parse(java.lang.CharSequence);
-    public static java.time.LocalDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
-    public java.time.LocalDateTime plus(java.time.temporal.TemporalAmount);
-    public java.time.LocalDateTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDateTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.chrono.ChronoLocalDateTime plus(java.time.temporal.TemporalAmount);
-    public java.time.LocalDateTime plusDays(long);
-    public java.time.LocalDateTime plusHours(long);
-    public java.time.LocalDateTime plusMinutes(long);
-    public java.time.LocalDateTime plusMonths(long);
-    public java.time.LocalDateTime plusNanos(long);
-    public java.time.LocalDateTime plusSeconds(long);
-    public java.time.LocalDateTime plusWeeks(long);
-    public java.time.LocalDateTime plusYears(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public java.time.LocalDate toLocalDate();
-    public java.time.chrono.ChronoLocalDate toLocalDate();
-    public java.time.LocalTime toLocalTime();
-    public java.lang.String toString();
-    public java.time.LocalDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public java.time.LocalDateTime with(java.time.temporal.TemporalAdjuster);
-    public java.time.LocalDateTime with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    public java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalField, long);
-    public java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalAdjuster);
-    public java.time.LocalDateTime withDayOfMonth(int);
-    public java.time.LocalDateTime withDayOfYear(int);
-    public java.time.LocalDateTime withHour(int);
-    public java.time.LocalDateTime withMinute(int);
-    public java.time.LocalDateTime withMonth(int);
-    public java.time.LocalDateTime withNano(int);
-    public java.time.LocalDateTime withSecond(int);
-    public java.time.LocalDateTime withYear(int);
-
-
-    public static java.time.LocalDateTime MAX;
-    public static java.time.LocalDateTime MIN;
-}
-
--keep class java.time.LocalTime {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public java.time.LocalDateTime atDate(java.time.LocalDate);
-    public java.time.OffsetTime atOffset(java.time.ZoneOffset);
-    public int compareTo(java.time.LocalTime);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.LocalTime from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public int getHour();
-    public long getLong(java.time.temporal.TemporalField);
-    public int getMinute();
-    public int getNano();
-    public int getSecond();
-    public int hashCode();
-    public boolean isAfter(java.time.LocalTime);
-    public boolean isBefore(java.time.LocalTime);
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.LocalTime minus(java.time.temporal.TemporalAmount);
-    public java.time.LocalTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.LocalTime minusHours(long);
-    public java.time.LocalTime minusMinutes(long);
-    public java.time.LocalTime minusNanos(long);
-    public java.time.LocalTime minusSeconds(long);
-    public static java.time.LocalTime now();
-    public static java.time.LocalTime now(java.time.ZoneId);
-    public static java.time.LocalTime now(java.time.Clock);
-    public static java.time.LocalTime of(int, int);
-    public static java.time.LocalTime of(int, int, int);
-    public static java.time.LocalTime of(int, int, int, int);
-    public static java.time.LocalTime ofNanoOfDay(long);
-    public static java.time.LocalTime ofSecondOfDay(long);
-    public static java.time.LocalTime parse(java.lang.CharSequence);
-    public static java.time.LocalTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
-    public java.time.LocalTime plus(java.time.temporal.TemporalAmount);
-    public java.time.LocalTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.time.LocalTime plusHours(long);
-    public java.time.LocalTime plusMinutes(long);
-    public java.time.LocalTime plusNanos(long);
-    public java.time.LocalTime plusSeconds(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public long toNanoOfDay();
-    public int toSecondOfDay();
-    public java.lang.String toString();
-    public java.time.LocalTime truncatedTo(java.time.temporal.TemporalUnit);
-    public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public java.time.LocalTime with(java.time.temporal.TemporalAdjuster);
-    public java.time.LocalTime with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    public java.time.LocalTime withHour(int);
-    public java.time.LocalTime withMinute(int);
-    public java.time.LocalTime withNano(int);
-    public java.time.LocalTime withSecond(int);
-
-
-    public static java.time.LocalTime MAX;
-    public static java.time.LocalTime MIDNIGHT;
-    public static java.time.LocalTime MIN;
-    public static java.time.LocalTime NOON;
-}
-
--keep class java.time.Month {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public int firstDayOfYear(boolean);
-    public java.time.Month firstMonthOfQuarter();
-    public static java.time.Month from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    public long getLong(java.time.temporal.TemporalField);
-    public int getValue();
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public int length(boolean);
-    public int maxLength();
-    public int minLength();
-    public java.time.Month minus(long);
-    public static java.time.Month of(int);
-    public java.time.Month plus(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public static java.time.Month valueOf(java.lang.String);
-    public static java.time.Month[] values();
-
-    public static java.time.Month APRIL;
-    public static java.time.Month AUGUST;
-    public static java.time.Month DECEMBER;
-    public static java.time.Month FEBRUARY;
-    public static java.time.Month JANUARY;
-    public static java.time.Month JULY;
-    public static java.time.Month JUNE;
-    public static java.time.Month MARCH;
-    public static java.time.Month MAY;
-    public static java.time.Month NOVEMBER;
-    public static java.time.Month OCTOBER;
-    public static java.time.Month SEPTEMBER;
-
-}
-
--keep class java.time.OffsetDateTime {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public java.time.ZonedDateTime atZoneSameInstant(java.time.ZoneId);
-    public java.time.ZonedDateTime atZoneSimilarLocal(java.time.ZoneId);
-    public int compareTo(java.time.OffsetDateTime);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.OffsetDateTime from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public int getDayOfMonth();
-    public java.time.DayOfWeek getDayOfWeek();
-    public int getDayOfYear();
-    public int getHour();
-    public long getLong(java.time.temporal.TemporalField);
-    public int getMinute();
-    public java.time.Month getMonth();
-    public int getMonthValue();
-    public int getNano();
-    public java.time.ZoneOffset getOffset();
-    public int getSecond();
-    public int getYear();
-    public int hashCode();
-    public boolean isAfter(java.time.OffsetDateTime);
-    public boolean isBefore(java.time.OffsetDateTime);
-    public boolean isEqual(java.time.OffsetDateTime);
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.OffsetDateTime minus(java.time.temporal.TemporalAmount);
-    public java.time.OffsetDateTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.OffsetDateTime minusDays(long);
-    public java.time.OffsetDateTime minusHours(long);
-    public java.time.OffsetDateTime minusMinutes(long);
-    public java.time.OffsetDateTime minusMonths(long);
-    public java.time.OffsetDateTime minusNanos(long);
-    public java.time.OffsetDateTime minusSeconds(long);
-    public java.time.OffsetDateTime minusWeeks(long);
-    public java.time.OffsetDateTime minusYears(long);
-    public static java.time.OffsetDateTime now();
-    public static java.time.OffsetDateTime now(java.time.ZoneId);
-    public static java.time.OffsetDateTime now(java.time.Clock);
-    public static java.time.OffsetDateTime of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneOffset);
-    public static java.time.OffsetDateTime of(java.time.LocalDateTime, java.time.ZoneOffset);
-    public static java.time.OffsetDateTime of(int, int, int, int, int, int, int, java.time.ZoneOffset);
-    public static java.time.OffsetDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    public static java.time.OffsetDateTime parse(java.lang.CharSequence);
-    public static java.time.OffsetDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
-    public java.time.OffsetDateTime plus(java.time.temporal.TemporalAmount);
-    public java.time.OffsetDateTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.time.OffsetDateTime plusDays(long);
-    public java.time.OffsetDateTime plusHours(long);
-    public java.time.OffsetDateTime plusMinutes(long);
-    public java.time.OffsetDateTime plusMonths(long);
-    public java.time.OffsetDateTime plusNanos(long);
-    public java.time.OffsetDateTime plusSeconds(long);
-    public java.time.OffsetDateTime plusWeeks(long);
-    public java.time.OffsetDateTime plusYears(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public static java.util.Comparator timeLineOrder();
-    public long toEpochSecond();
-    public java.time.Instant toInstant();
-    public java.time.LocalDate toLocalDate();
-    public java.time.LocalDateTime toLocalDateTime();
-    public java.time.LocalTime toLocalTime();
-    public java.time.OffsetTime toOffsetTime();
-    public java.lang.String toString();
-    public java.time.ZonedDateTime toZonedDateTime();
-    public java.time.OffsetDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public java.time.OffsetDateTime with(java.time.temporal.TemporalAdjuster);
-    public java.time.OffsetDateTime with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    public java.time.OffsetDateTime withDayOfMonth(int);
-    public java.time.OffsetDateTime withDayOfYear(int);
-    public java.time.OffsetDateTime withHour(int);
-    public java.time.OffsetDateTime withMinute(int);
-    public java.time.OffsetDateTime withMonth(int);
-    public java.time.OffsetDateTime withNano(int);
-    public java.time.OffsetDateTime withOffsetSameInstant(java.time.ZoneOffset);
-    public java.time.OffsetDateTime withOffsetSameLocal(java.time.ZoneOffset);
-    public java.time.OffsetDateTime withSecond(int);
-    public java.time.OffsetDateTime withYear(int);
-
-
-    public static java.time.OffsetDateTime MAX;
-    public static java.time.OffsetDateTime MIN;
-}
-
--keep class java.time.OffsetTime {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public java.time.OffsetDateTime atDate(java.time.LocalDate);
-    public int compareTo(java.time.OffsetTime);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.OffsetTime from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public int getHour();
-    public long getLong(java.time.temporal.TemporalField);
-    public int getMinute();
-    public int getNano();
-    public java.time.ZoneOffset getOffset();
-    public int getSecond();
-    public int hashCode();
-    public boolean isAfter(java.time.OffsetTime);
-    public boolean isBefore(java.time.OffsetTime);
-    public boolean isEqual(java.time.OffsetTime);
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.OffsetTime minus(java.time.temporal.TemporalAmount);
-    public java.time.OffsetTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.OffsetTime minusHours(long);
-    public java.time.OffsetTime minusMinutes(long);
-    public java.time.OffsetTime minusNanos(long);
-    public java.time.OffsetTime minusSeconds(long);
-    public static java.time.OffsetTime now();
-    public static java.time.OffsetTime now(java.time.ZoneId);
-    public static java.time.OffsetTime now(java.time.Clock);
-    public static java.time.OffsetTime of(java.time.LocalTime, java.time.ZoneOffset);
-    public static java.time.OffsetTime of(int, int, int, int, java.time.ZoneOffset);
-    public static java.time.OffsetTime ofInstant(java.time.Instant, java.time.ZoneId);
-    public static java.time.OffsetTime parse(java.lang.CharSequence);
-    public static java.time.OffsetTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
-    public java.time.OffsetTime plus(java.time.temporal.TemporalAmount);
-    public java.time.OffsetTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.time.OffsetTime plusHours(long);
-    public java.time.OffsetTime plusMinutes(long);
-    public java.time.OffsetTime plusNanos(long);
-    public java.time.OffsetTime plusSeconds(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public java.time.LocalTime toLocalTime();
-    public java.lang.String toString();
-    public java.time.OffsetTime truncatedTo(java.time.temporal.TemporalUnit);
-    public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public java.time.OffsetTime with(java.time.temporal.TemporalAdjuster);
-    public java.time.OffsetTime with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    public java.time.OffsetTime withHour(int);
-    public java.time.OffsetTime withMinute(int);
-    public java.time.OffsetTime withNano(int);
-    public java.time.OffsetTime withOffsetSameInstant(java.time.ZoneOffset);
-    public java.time.OffsetTime withOffsetSameLocal(java.time.ZoneOffset);
-    public java.time.OffsetTime withSecond(int);
-
-
-    public static java.time.OffsetTime MAX;
-    public static java.time.OffsetTime MIN;
-}
-
--keep class java.time.Period {
-
-    public java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    public static java.time.Period between(java.time.LocalDate, java.time.LocalDate);
-    public boolean equals(java.lang.Object);
-    public static java.time.Period from(java.time.temporal.TemporalAmount);
-    public long get(java.time.temporal.TemporalUnit);
-    public java.time.chrono.IsoChronology getChronology();
-    public java.time.chrono.Chronology getChronology();
-    public int getDays();
-    public int getMonths();
-    public java.util.List getUnits();
-    public int getYears();
-    public int hashCode();
-    public boolean isNegative();
-    public boolean isZero();
-    public java.time.Period minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoPeriod minus(java.time.temporal.TemporalAmount);
-    public java.time.Period minusDays(long);
-    public java.time.Period minusMonths(long);
-    public java.time.Period minusYears(long);
-    public java.time.Period multipliedBy(int);
-    public java.time.chrono.ChronoPeriod multipliedBy(int);
-    public java.time.Period negated();
-    public java.time.chrono.ChronoPeriod negated();
-    public java.time.Period normalized();
-    public java.time.chrono.ChronoPeriod normalized();
-    public static java.time.Period of(int, int, int);
-    public static java.time.Period ofDays(int);
-    public static java.time.Period ofMonths(int);
-    public static java.time.Period ofWeeks(int);
-    public static java.time.Period ofYears(int);
-    public static java.time.Period parse(java.lang.CharSequence);
-    public java.time.Period plus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoPeriod plus(java.time.temporal.TemporalAmount);
-    public java.time.Period plusDays(long);
-    public java.time.Period plusMonths(long);
-    public java.time.Period plusYears(long);
-    public java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-    public java.lang.String toString();
-    public long toTotalMonths();
-    public java.time.Period withDays(int);
-    public java.time.Period withMonths(int);
-    public java.time.Period withYears(int);
-
-
-    public static java.time.Period ZERO;
-}
-
--keep class java.time.ZoneId {
-
-    public boolean equals(java.lang.Object);
-    public static java.time.ZoneId from(java.time.temporal.TemporalAccessor);
-    public static java.util.Set getAvailableZoneIds();
-    public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    public abstract java.lang.String getId();
-    public abstract java.time.zone.ZoneRules getRules();
-    public int hashCode();
-    public java.time.ZoneId normalized();
-    public static java.time.ZoneId of(java.lang.String, java.util.Map);
-    public static java.time.ZoneId of(java.lang.String);
-    public static java.time.ZoneId ofOffset(java.lang.String, java.time.ZoneOffset);
-    public static java.time.ZoneId systemDefault();
-    public java.lang.String toString();
-
-
-    public static java.util.Map SHORT_IDS;
-}
-
--keep class java.time.ZoneOffset {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public int compareTo(java.time.ZoneOffset);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public static java.time.ZoneOffset from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public java.lang.String getId();
-    public long getLong(java.time.temporal.TemporalField);
-    public java.time.zone.ZoneRules getRules();
-    public int getTotalSeconds();
-    public int hashCode();
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public static java.time.ZoneOffset of(java.lang.String);
-    public static java.time.ZoneOffset ofHours(int);
-    public static java.time.ZoneOffset ofHoursMinutes(int, int);
-    public static java.time.ZoneOffset ofHoursMinutesSeconds(int, int, int);
-    public static java.time.ZoneOffset ofTotalSeconds(int);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public java.lang.String toString();
-
-
-    public static java.time.ZoneOffset MAX;
-    public static java.time.ZoneOffset MIN;
-    public static java.time.ZoneOffset UTC;
-}
-
--keep class java.time.ZonedDateTime {
-
-    public boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.ZonedDateTime from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public int getDayOfMonth();
-    public java.time.DayOfWeek getDayOfWeek();
-    public int getDayOfYear();
-    public int getHour();
-    public long getLong(java.time.temporal.TemporalField);
-    public int getMinute();
-    public java.time.Month getMonth();
-    public int getMonthValue();
-    public int getNano();
-    public java.time.ZoneOffset getOffset();
-    public int getSecond();
-    public int getYear();
-    public java.time.ZoneId getZone();
-    public int hashCode();
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.ZonedDateTime minus(java.time.temporal.TemporalAmount);
-    public java.time.ZonedDateTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoZonedDateTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.chrono.ChronoZonedDateTime minus(java.time.temporal.TemporalAmount);
-    public java.time.ZonedDateTime minusDays(long);
-    public java.time.ZonedDateTime minusHours(long);
-    public java.time.ZonedDateTime minusMinutes(long);
-    public java.time.ZonedDateTime minusMonths(long);
-    public java.time.ZonedDateTime minusNanos(long);
-    public java.time.ZonedDateTime minusSeconds(long);
-    public java.time.ZonedDateTime minusWeeks(long);
-    public java.time.ZonedDateTime minusYears(long);
-    public static java.time.ZonedDateTime now();
-    public static java.time.ZonedDateTime now(java.time.ZoneId);
-    public static java.time.ZonedDateTime now(java.time.Clock);
-    public static java.time.ZonedDateTime of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneId);
-    public static java.time.ZonedDateTime of(java.time.LocalDateTime, java.time.ZoneId);
-    public static java.time.ZonedDateTime of(int, int, int, int, int, int, int, java.time.ZoneId);
-    public static java.time.ZonedDateTime ofInstant(java.time.Instant, java.time.ZoneId);
-    public static java.time.ZonedDateTime ofInstant(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
-    public static java.time.ZonedDateTime ofLocal(java.time.LocalDateTime, java.time.ZoneId, java.time.ZoneOffset);
-    public static java.time.ZonedDateTime ofStrict(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId);
-    public static java.time.ZonedDateTime parse(java.lang.CharSequence);
-    public static java.time.ZonedDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter);
-    public java.time.ZonedDateTime plus(java.time.temporal.TemporalAmount);
-    public java.time.ZonedDateTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoZonedDateTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.chrono.ChronoZonedDateTime plus(java.time.temporal.TemporalAmount);
-    public java.time.ZonedDateTime plusDays(long);
-    public java.time.ZonedDateTime plusHours(long);
-    public java.time.ZonedDateTime plusMinutes(long);
-    public java.time.ZonedDateTime plusMonths(long);
-    public java.time.ZonedDateTime plusNanos(long);
-    public java.time.ZonedDateTime plusSeconds(long);
-    public java.time.ZonedDateTime plusWeeks(long);
-    public java.time.ZonedDateTime plusYears(long);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public java.time.LocalDate toLocalDate();
-    public java.time.chrono.ChronoLocalDate toLocalDate();
-    public java.time.LocalDateTime toLocalDateTime();
-    public java.time.chrono.ChronoLocalDateTime toLocalDateTime();
-    public java.time.LocalTime toLocalTime();
-    public java.time.OffsetDateTime toOffsetDateTime();
-    public java.lang.String toString();
-    public java.time.ZonedDateTime truncatedTo(java.time.temporal.TemporalUnit);
-    public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public java.time.ZonedDateTime with(java.time.temporal.TemporalAdjuster);
-    public java.time.ZonedDateTime with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    public java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalField, long);
-    public java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalAdjuster);
-    public java.time.ZonedDateTime withDayOfMonth(int);
-    public java.time.ZonedDateTime withDayOfYear(int);
-    public java.time.ZonedDateTime withEarlierOffsetAtOverlap();
-    public java.time.chrono.ChronoZonedDateTime withEarlierOffsetAtOverlap();
-    public java.time.ZonedDateTime withFixedOffsetZone();
-    public java.time.ZonedDateTime withHour(int);
-    public java.time.ZonedDateTime withLaterOffsetAtOverlap();
-    public java.time.chrono.ChronoZonedDateTime withLaterOffsetAtOverlap();
-    public java.time.ZonedDateTime withMinute(int);
-    public java.time.ZonedDateTime withMonth(int);
-    public java.time.ZonedDateTime withNano(int);
-    public java.time.ZonedDateTime withSecond(int);
-    public java.time.ZonedDateTime withYear(int);
-    public java.time.ZonedDateTime withZoneSameInstant(java.time.ZoneId);
-    public java.time.chrono.ChronoZonedDateTime withZoneSameInstant(java.time.ZoneId);
-    public java.time.ZonedDateTime withZoneSameLocal(java.time.ZoneId);
-    public java.time.chrono.ChronoZonedDateTime withZoneSameLocal(java.time.ZoneId);
-
-
-}
-
--keep class java.time.chrono.AbstractChronology {
-    <init>();
-
-    public int compareTo(java.time.chrono.Chronology);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public int hashCode();
-    public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map, java.time.format.ResolverStyle);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.time.chrono.ChronoLocalDate {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public java.time.chrono.ChronoLocalDateTime atTime(java.time.LocalTime);
-    public int compareTo(java.time.chrono.ChronoLocalDate);
-    public int compareTo(java.lang.Object);
-    public abstract boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.chrono.ChronoLocalDate from(java.time.temporal.TemporalAccessor);
-    public abstract java.time.chrono.Chronology getChronology();
-    public java.time.chrono.Era getEra();
-    public abstract int hashCode();
-    public boolean isAfter(java.time.chrono.ChronoLocalDate);
-    public boolean isBefore(java.time.chrono.ChronoLocalDate);
-    public boolean isEqual(java.time.chrono.ChronoLocalDate);
-    public boolean isLeapYear();
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public abstract int lengthOfMonth();
-    public int lengthOfYear();
-    public java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDate plus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public static java.util.Comparator timeLineOrder();
-    public long toEpochDay();
-    public abstract java.lang.String toString();
-    public abstract long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public abstract java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate);
-    public java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster);
-    public java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-
-
-}
-
--keep class java.time.chrono.ChronoLocalDateTime {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public abstract java.time.chrono.ChronoZonedDateTime atZone(java.time.ZoneId);
-    public int compareTo(java.time.chrono.ChronoLocalDateTime);
-    public int compareTo(java.lang.Object);
-    public abstract boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.chrono.ChronoLocalDateTime from(java.time.temporal.TemporalAccessor);
-    public java.time.chrono.Chronology getChronology();
-    public abstract int hashCode();
-    public boolean isAfter(java.time.chrono.ChronoLocalDateTime);
-    public boolean isBefore(java.time.chrono.ChronoLocalDateTime);
-    public boolean isEqual(java.time.chrono.ChronoLocalDateTime);
-    public abstract boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.chrono.ChronoLocalDateTime minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDateTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoLocalDateTime plus(java.time.temporal.TemporalAmount);
-    public abstract java.time.chrono.ChronoLocalDateTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public static java.util.Comparator timeLineOrder();
-    public long toEpochSecond(java.time.ZoneOffset);
-    public java.time.Instant toInstant(java.time.ZoneOffset);
-    public abstract java.time.chrono.ChronoLocalDate toLocalDate();
-    public abstract java.time.LocalTime toLocalTime();
-    public abstract java.lang.String toString();
-    public java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalAdjuster);
-    public abstract java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-
-
-}
-
--keep class java.time.chrono.ChronoPeriod {
-
-    public abstract java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    public static java.time.chrono.ChronoPeriod between(java.time.chrono.ChronoLocalDate, java.time.chrono.ChronoLocalDate);
-    public abstract boolean equals(java.lang.Object);
-    public abstract long get(java.time.temporal.TemporalUnit);
-    public abstract java.time.chrono.Chronology getChronology();
-    public abstract java.util.List getUnits();
-    public abstract int hashCode();
-    public boolean isNegative();
-    public boolean isZero();
-    public abstract java.time.chrono.ChronoPeriod minus(java.time.temporal.TemporalAmount);
-    public abstract java.time.chrono.ChronoPeriod multipliedBy(int);
-    public java.time.chrono.ChronoPeriod negated();
-    public abstract java.time.chrono.ChronoPeriod normalized();
-    public abstract java.time.chrono.ChronoPeriod plus(java.time.temporal.TemporalAmount);
-    public abstract java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-    public abstract java.lang.String toString();
-
-
-}
-
--keep class java.time.chrono.ChronoZonedDateTime {
-
-    public int compareTo(java.time.chrono.ChronoZonedDateTime);
-    public int compareTo(java.lang.Object);
-    public abstract boolean equals(java.lang.Object);
-    public java.lang.String format(java.time.format.DateTimeFormatter);
-    public static java.time.chrono.ChronoZonedDateTime from(java.time.temporal.TemporalAccessor);
-    public int get(java.time.temporal.TemporalField);
-    public java.time.chrono.Chronology getChronology();
-    public long getLong(java.time.temporal.TemporalField);
-    public abstract java.time.ZoneOffset getOffset();
-    public abstract java.time.ZoneId getZone();
-    public abstract int hashCode();
-    public boolean isAfter(java.time.chrono.ChronoZonedDateTime);
-    public boolean isBefore(java.time.chrono.ChronoZonedDateTime);
-    public boolean isEqual(java.time.chrono.ChronoZonedDateTime);
-    public abstract boolean isSupported(java.time.temporal.TemporalField);
-    public boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.chrono.ChronoZonedDateTime minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoZonedDateTime minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.chrono.ChronoZonedDateTime plus(java.time.temporal.TemporalAmount);
-    public abstract java.time.chrono.ChronoZonedDateTime plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-    public static java.util.Comparator timeLineOrder();
-    public long toEpochSecond();
-    public java.time.Instant toInstant();
-    public java.time.chrono.ChronoLocalDate toLocalDate();
-    public abstract java.time.chrono.ChronoLocalDateTime toLocalDateTime();
-    public java.time.LocalTime toLocalTime();
-    public abstract java.lang.String toString();
-    public java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalAdjuster);
-    public abstract java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    public abstract java.time.chrono.ChronoZonedDateTime withEarlierOffsetAtOverlap();
-    public abstract java.time.chrono.ChronoZonedDateTime withLaterOffsetAtOverlap();
-    public abstract java.time.chrono.ChronoZonedDateTime withZoneSameInstant(java.time.ZoneId);
-    public abstract java.time.chrono.ChronoZonedDateTime withZoneSameLocal(java.time.ZoneId);
-
-
-}
-
--keep class java.time.chrono.Chronology {
-
-    public abstract int compareTo(java.time.chrono.Chronology);
-    public int compareTo(java.lang.Object);
-    public java.time.chrono.ChronoLocalDate date(java.time.chrono.Era, int, int, int);
-    public abstract java.time.chrono.ChronoLocalDate date(int, int, int);
-    public abstract java.time.chrono.ChronoLocalDate date(java.time.temporal.TemporalAccessor);
-    public abstract java.time.chrono.ChronoLocalDate dateEpochDay(long);
-    public java.time.chrono.ChronoLocalDate dateNow();
-    public java.time.chrono.ChronoLocalDate dateNow(java.time.ZoneId);
-    public java.time.chrono.ChronoLocalDate dateNow(java.time.Clock);
-    public java.time.chrono.ChronoLocalDate dateYearDay(java.time.chrono.Era, int, int);
-    public abstract java.time.chrono.ChronoLocalDate dateYearDay(int, int);
-    public abstract boolean equals(java.lang.Object);
-    public abstract java.time.chrono.Era eraOf(int);
-    public abstract java.util.List eras();
-    public static java.time.chrono.Chronology from(java.time.temporal.TemporalAccessor);
-    public static java.util.Set getAvailableChronologies();
-    public abstract java.lang.String getCalendarType();
-    public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    public abstract java.lang.String getId();
-    public abstract int hashCode();
-    public abstract boolean isLeapYear(long);
-    public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor);
-    public static java.time.chrono.Chronology of(java.lang.String);
-    public static java.time.chrono.Chronology ofLocale(java.util.Locale);
-    public java.time.chrono.ChronoPeriod period(int, int, int);
-    public abstract int prolepticYear(java.time.chrono.Era, int);
-    public abstract java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    public abstract java.time.chrono.ChronoLocalDate resolveDate(java.util.Map, java.time.format.ResolverStyle);
-    public abstract java.lang.String toString();
-    public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor);
-    public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId);
-
-
-}
-
--keep class java.time.chrono.Era {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-    public int get(java.time.temporal.TemporalField);
-    public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale);
-    public long getLong(java.time.temporal.TemporalField);
-    public abstract int getValue();
-    public boolean isSupported(java.time.temporal.TemporalField);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-
-
-}
-
--keep class java.time.chrono.IsoChronology {
-
-    public java.time.LocalDate date(java.time.chrono.Era, int, int, int);
-    public java.time.LocalDate date(int, int, int);
-    public java.time.LocalDate date(java.time.temporal.TemporalAccessor);
-    public java.time.chrono.ChronoLocalDate date(java.time.temporal.TemporalAccessor);
-    public java.time.chrono.ChronoLocalDate date(int, int, int);
-    public java.time.chrono.ChronoLocalDate date(java.time.chrono.Era, int, int, int);
-    public java.time.LocalDate dateEpochDay(long);
-    public java.time.chrono.ChronoLocalDate dateEpochDay(long);
-    public java.time.LocalDate dateNow();
-    public java.time.LocalDate dateNow(java.time.ZoneId);
-    public java.time.LocalDate dateNow(java.time.Clock);
-    public java.time.chrono.ChronoLocalDate dateNow(java.time.Clock);
-    public java.time.chrono.ChronoLocalDate dateNow(java.time.ZoneId);
-    public java.time.chrono.ChronoLocalDate dateNow();
-    public java.time.LocalDate dateYearDay(java.time.chrono.Era, int, int);
-    public java.time.LocalDate dateYearDay(int, int);
-    public java.time.chrono.ChronoLocalDate dateYearDay(int, int);
-    public java.time.chrono.ChronoLocalDate dateYearDay(java.time.chrono.Era, int, int);
-    public java.time.chrono.IsoEra eraOf(int);
-    public java.time.chrono.Era eraOf(int);
-    public java.util.List eras();
-    public java.lang.String getCalendarType();
-    public java.lang.String getId();
-    public boolean isLeapYear(long);
-    public java.time.LocalDateTime localDateTime(java.time.temporal.TemporalAccessor);
-    public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor);
-    public java.time.Period period(int, int, int);
-    public java.time.chrono.ChronoPeriod period(int, int, int);
-    public int prolepticYear(java.time.chrono.Era, int);
-    public java.time.temporal.ValueRange range(java.time.temporal.ChronoField);
-    public java.time.LocalDate resolveDate(java.util.Map, java.time.format.ResolverStyle);
-    public java.time.chrono.ChronoLocalDate resolveDate(java.util.Map, java.time.format.ResolverStyle);
-    public java.time.ZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor);
-    public java.time.ZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId);
-    public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId);
-    public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor);
-
-
-    public static java.time.chrono.IsoChronology INSTANCE;
-}
-
--keep class java.time.chrono.IsoEra {
-
-    public int getValue();
-    public static java.time.chrono.IsoEra of(int);
-    public static java.time.chrono.IsoEra valueOf(java.lang.String);
-    public static java.time.chrono.IsoEra[] values();
-
-    public static java.time.chrono.IsoEra BCE;
-    public static java.time.chrono.IsoEra CE;
-
-}
-
--keep class java.time.format.DateTimeFormatter {
-
-    public java.lang.String format(java.time.temporal.TemporalAccessor);
-    public void formatTo(java.time.temporal.TemporalAccessor, java.lang.Appendable);
-    public java.time.chrono.Chronology getChronology();
-    public java.time.format.DecimalStyle getDecimalStyle();
-    public java.util.Locale getLocale();
-    public java.util.Set getResolverFields();
-    public java.time.format.ResolverStyle getResolverStyle();
-    public java.time.ZoneId getZone();
-    public static java.time.format.DateTimeFormatter ofLocalizedDate(java.time.format.FormatStyle);
-    public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle);
-    public static java.time.format.DateTimeFormatter ofLocalizedDateTime(java.time.format.FormatStyle, java.time.format.FormatStyle);
-    public static java.time.format.DateTimeFormatter ofLocalizedTime(java.time.format.FormatStyle);
-    public static java.time.format.DateTimeFormatter ofPattern(java.lang.String);
-    public static java.time.format.DateTimeFormatter ofPattern(java.lang.String, java.util.Locale);
-    public java.time.temporal.TemporalAccessor parse(java.lang.CharSequence);
-    public java.time.temporal.TemporalAccessor parse(java.lang.CharSequence, java.text.ParsePosition);
-    public java.lang.Object parse(java.lang.CharSequence, java.time.temporal.TemporalQuery);
-    public java.time.temporal.TemporalAccessor parseBest(java.lang.CharSequence, java.time.temporal.TemporalQuery[]);
-    public java.time.temporal.TemporalAccessor parseUnresolved(java.lang.CharSequence, java.text.ParsePosition);
-    public static java.time.temporal.TemporalQuery parsedExcessDays();
-    public static java.time.temporal.TemporalQuery parsedLeapSecond();
-    public java.text.Format toFormat();
-    public java.text.Format toFormat(java.time.temporal.TemporalQuery);
-    public java.lang.String toString();
-    public java.time.format.DateTimeFormatter withChronology(java.time.chrono.Chronology);
-    public java.time.format.DateTimeFormatter withDecimalStyle(java.time.format.DecimalStyle);
-    public java.time.format.DateTimeFormatter withLocale(java.util.Locale);
-    public java.time.format.DateTimeFormatter withResolverFields(java.time.temporal.TemporalField[]);
-    public java.time.format.DateTimeFormatter withResolverFields(java.util.Set);
-    public java.time.format.DateTimeFormatter withResolverStyle(java.time.format.ResolverStyle);
-    public java.time.format.DateTimeFormatter withZone(java.time.ZoneId);
-
-
-    public static java.time.format.DateTimeFormatter BASIC_ISO_DATE;
-    public static java.time.format.DateTimeFormatter ISO_DATE;
-    public static java.time.format.DateTimeFormatter ISO_DATE_TIME;
-    public static java.time.format.DateTimeFormatter ISO_INSTANT;
-    public static java.time.format.DateTimeFormatter ISO_LOCAL_DATE;
-    public static java.time.format.DateTimeFormatter ISO_LOCAL_DATE_TIME;
-    public static java.time.format.DateTimeFormatter ISO_LOCAL_TIME;
-    public static java.time.format.DateTimeFormatter ISO_OFFSET_DATE;
-    public static java.time.format.DateTimeFormatter ISO_OFFSET_DATE_TIME;
-    public static java.time.format.DateTimeFormatter ISO_OFFSET_TIME;
-    public static java.time.format.DateTimeFormatter ISO_ORDINAL_DATE;
-    public static java.time.format.DateTimeFormatter ISO_TIME;
-    public static java.time.format.DateTimeFormatter ISO_WEEK_DATE;
-    public static java.time.format.DateTimeFormatter ISO_ZONED_DATE_TIME;
-    public static java.time.format.DateTimeFormatter RFC_1123_DATE_TIME;
-}
-
--keep class java.time.format.DecimalStyle {
-
-    public boolean equals(java.lang.Object);
-    public static java.util.Set getAvailableLocales();
-    public char getDecimalSeparator();
-    public char getNegativeSign();
-    public char getPositiveSign();
-    public char getZeroDigit();
-    public int hashCode();
-    public static java.time.format.DecimalStyle of(java.util.Locale);
-    public static java.time.format.DecimalStyle ofDefaultLocale();
-    public java.lang.String toString();
-    public java.time.format.DecimalStyle withDecimalSeparator(char);
-    public java.time.format.DecimalStyle withNegativeSign(char);
-    public java.time.format.DecimalStyle withPositiveSign(char);
-    public java.time.format.DecimalStyle withZeroDigit(char);
-
-
-    public static java.time.format.DecimalStyle STANDARD;
-}
-
--keep class java.time.format.FormatStyle {
-
-    public static java.time.format.FormatStyle valueOf(java.lang.String);
-    public static java.time.format.FormatStyle[] values();
-
-    public static java.time.format.FormatStyle FULL;
-    public static java.time.format.FormatStyle LONG;
-    public static java.time.format.FormatStyle MEDIUM;
-    public static java.time.format.FormatStyle SHORT;
-
-}
-
--keep class java.time.format.ResolverStyle {
-
-    public static java.time.format.ResolverStyle valueOf(java.lang.String);
-    public static java.time.format.ResolverStyle[] values();
-
-    public static java.time.format.ResolverStyle LENIENT;
-    public static java.time.format.ResolverStyle SMART;
-    public static java.time.format.ResolverStyle STRICT;
-
-}
-
--keep class java.time.format.TextStyle {
-
-    public java.time.format.TextStyle asNormal();
-    public java.time.format.TextStyle asStandalone();
-    public boolean isStandalone();
-    public static java.time.format.TextStyle valueOf(java.lang.String);
-    public static java.time.format.TextStyle[] values();
-
-    public static java.time.format.TextStyle FULL;
-    public static java.time.format.TextStyle FULL_STANDALONE;
-    public static java.time.format.TextStyle NARROW;
-    public static java.time.format.TextStyle NARROW_STANDALONE;
-    public static java.time.format.TextStyle SHORT;
-    public static java.time.format.TextStyle SHORT_STANDALONE;
-
-}
-
--keep class java.time.temporal.ChronoField {
-
-    public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal, long);
-    public int checkValidIntValue(long);
-    public long checkValidValue(long);
-    public java.time.temporal.TemporalUnit getBaseUnit();
-    public java.lang.String getDisplayName(java.util.Locale);
-    public long getFrom(java.time.temporal.TemporalAccessor);
-    public java.time.temporal.TemporalUnit getRangeUnit();
-    public boolean isDateBased();
-    public boolean isSupportedBy(java.time.temporal.TemporalAccessor);
-    public boolean isTimeBased();
-    public java.time.temporal.ValueRange range();
-    public java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
-    public java.lang.String toString();
-    public static java.time.temporal.ChronoField valueOf(java.lang.String);
-    public static java.time.temporal.ChronoField[] values();
-
-    public static java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_MONTH;
-    public static java.time.temporal.ChronoField ALIGNED_DAY_OF_WEEK_IN_YEAR;
-    public static java.time.temporal.ChronoField ALIGNED_WEEK_OF_MONTH;
-    public static java.time.temporal.ChronoField ALIGNED_WEEK_OF_YEAR;
-    public static java.time.temporal.ChronoField AMPM_OF_DAY;
-    public static java.time.temporal.ChronoField CLOCK_HOUR_OF_AMPM;
-    public static java.time.temporal.ChronoField CLOCK_HOUR_OF_DAY;
-    public static java.time.temporal.ChronoField DAY_OF_MONTH;
-    public static java.time.temporal.ChronoField DAY_OF_WEEK;
-    public static java.time.temporal.ChronoField DAY_OF_YEAR;
-    public static java.time.temporal.ChronoField EPOCH_DAY;
-    public static java.time.temporal.ChronoField ERA;
-    public static java.time.temporal.ChronoField HOUR_OF_AMPM;
-    public static java.time.temporal.ChronoField HOUR_OF_DAY;
-    public static java.time.temporal.ChronoField INSTANT_SECONDS;
-    public static java.time.temporal.ChronoField MICRO_OF_DAY;
-    public static java.time.temporal.ChronoField MICRO_OF_SECOND;
-    public static java.time.temporal.ChronoField MILLI_OF_DAY;
-    public static java.time.temporal.ChronoField MILLI_OF_SECOND;
-    public static java.time.temporal.ChronoField MINUTE_OF_DAY;
-    public static java.time.temporal.ChronoField MINUTE_OF_HOUR;
-    public static java.time.temporal.ChronoField MONTH_OF_YEAR;
-    public static java.time.temporal.ChronoField NANO_OF_DAY;
-    public static java.time.temporal.ChronoField NANO_OF_SECOND;
-    public static java.time.temporal.ChronoField OFFSET_SECONDS;
-    public static java.time.temporal.ChronoField PROLEPTIC_MONTH;
-    public static java.time.temporal.ChronoField SECOND_OF_DAY;
-    public static java.time.temporal.ChronoField SECOND_OF_MINUTE;
-    public static java.time.temporal.ChronoField YEAR;
-    public static java.time.temporal.ChronoField YEAR_OF_ERA;
-
-}
-
--keep class java.time.temporal.Temporal {
-
-    public abstract boolean isSupported(java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
-    public java.time.temporal.Temporal minus(long, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal plus(java.time.temporal.TemporalAmount);
-    public abstract java.time.temporal.Temporal plus(long, java.time.temporal.TemporalUnit);
-    public abstract long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit);
-    public java.time.temporal.Temporal with(java.time.temporal.TemporalAdjuster);
-    public abstract java.time.temporal.Temporal with(java.time.temporal.TemporalField, long);
-
-
-}
-
--keep class java.time.temporal.TemporalAccessor {
-
-    public int get(java.time.temporal.TemporalField);
-    public abstract long getLong(java.time.temporal.TemporalField);
-    public abstract boolean isSupported(java.time.temporal.TemporalField);
-    public java.lang.Object query(java.time.temporal.TemporalQuery);
-    public java.time.temporal.ValueRange range(java.time.temporal.TemporalField);
-
-
-}
-
--keep class java.time.temporal.TemporalAdjuster {
-
-    public abstract java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal);
-
-
-}
-
--keep class java.time.temporal.TemporalAmount {
-
-    public abstract java.time.temporal.Temporal addTo(java.time.temporal.Temporal);
-    public abstract long get(java.time.temporal.TemporalUnit);
-    public abstract java.util.List getUnits();
-    public abstract java.time.temporal.Temporal subtractFrom(java.time.temporal.Temporal);
-
-
-}
-
--keep class java.time.temporal.TemporalField {
-
-    public abstract java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal, long);
-    public abstract java.time.temporal.TemporalUnit getBaseUnit();
-    public java.lang.String getDisplayName(java.util.Locale);
-    public abstract long getFrom(java.time.temporal.TemporalAccessor);
-    public abstract java.time.temporal.TemporalUnit getRangeUnit();
-    public abstract boolean isDateBased();
-    public abstract boolean isSupportedBy(java.time.temporal.TemporalAccessor);
-    public abstract boolean isTimeBased();
-    public abstract java.time.temporal.ValueRange range();
-    public abstract java.time.temporal.ValueRange rangeRefinedBy(java.time.temporal.TemporalAccessor);
-    public java.time.temporal.TemporalAccessor resolve(java.util.Map, java.time.temporal.TemporalAccessor, java.time.format.ResolverStyle);
-    public abstract java.lang.String toString();
-
-
-}
-
--keep class java.time.temporal.TemporalQuery {
-
-    public abstract java.lang.Object queryFrom(java.time.temporal.TemporalAccessor);
-
-
-}
-
--keep class java.time.temporal.TemporalUnit {
-
-    public abstract java.time.temporal.Temporal addTo(java.time.temporal.Temporal, long);
-    public abstract long between(java.time.temporal.Temporal, java.time.temporal.Temporal);
-    public abstract java.time.Duration getDuration();
-    public abstract boolean isDateBased();
-    public abstract boolean isDurationEstimated();
-    public boolean isSupportedBy(java.time.temporal.Temporal);
-    public abstract boolean isTimeBased();
-    public abstract java.lang.String toString();
-
-
-}
-
--keep class java.time.temporal.ValueRange {
-
-    public int checkValidIntValue(long, java.time.temporal.TemporalField);
-    public long checkValidValue(long, java.time.temporal.TemporalField);
-    public boolean equals(java.lang.Object);
-    public long getLargestMinimum();
-    public long getMaximum();
-    public long getMinimum();
-    public long getSmallestMaximum();
-    public int hashCode();
-    public boolean isFixed();
-    public boolean isIntValue();
-    public boolean isValidIntValue(long);
-    public boolean isValidValue(long);
-    public static java.time.temporal.ValueRange of(long, long);
-    public static java.time.temporal.ValueRange of(long, long, long);
-    public static java.time.temporal.ValueRange of(long, long, long, long);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.time.zone.ZoneOffsetTransition {
-
-    public int compareTo(java.time.zone.ZoneOffsetTransition);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public java.time.LocalDateTime getDateTimeAfter();
-    public java.time.LocalDateTime getDateTimeBefore();
-    public java.time.Duration getDuration();
-    public java.time.Instant getInstant();
-    public java.time.ZoneOffset getOffsetAfter();
-    public java.time.ZoneOffset getOffsetBefore();
-    public int hashCode();
-    public boolean isGap();
-    public boolean isOverlap();
-    public boolean isValidOffset(java.time.ZoneOffset);
-    public static java.time.zone.ZoneOffsetTransition of(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
-    public long toEpochSecond();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.time.zone.ZoneOffsetTransitionRule {
-
-    public java.time.zone.ZoneOffsetTransition createTransition(int);
-    public boolean equals(java.lang.Object);
-    public int getDayOfMonthIndicator();
-    public java.time.DayOfWeek getDayOfWeek();
-    public java.time.LocalTime getLocalTime();
-    public java.time.Month getMonth();
-    public java.time.ZoneOffset getOffsetAfter();
-    public java.time.ZoneOffset getOffsetBefore();
-    public java.time.ZoneOffset getStandardOffset();
-    public java.time.zone.ZoneOffsetTransitionRule$TimeDefinition getTimeDefinition();
-    public int hashCode();
-    public boolean isMidnightEndOfDay();
-    public static java.time.zone.ZoneOffsetTransitionRule of(java.time.Month, int, java.time.DayOfWeek, java.time.LocalTime, boolean, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition, java.time.ZoneOffset, java.time.ZoneOffset, java.time.ZoneOffset);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.time.zone.ZoneOffsetTransitionRule$TimeDefinition {
-
-    public java.time.LocalDateTime createDateTime(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneOffset);
-    public static java.time.zone.ZoneOffsetTransitionRule$TimeDefinition valueOf(java.lang.String);
-    public static java.time.zone.ZoneOffsetTransitionRule$TimeDefinition[] values();
-
-    public static java.time.zone.ZoneOffsetTransitionRule$TimeDefinition STANDARD;
-    public static java.time.zone.ZoneOffsetTransitionRule$TimeDefinition UTC;
-    public static java.time.zone.ZoneOffsetTransitionRule$TimeDefinition WALL;
-
-}
-
--keep class java.time.zone.ZoneRules {
-
-    public boolean equals(java.lang.Object);
-    public java.time.Duration getDaylightSavings(java.time.Instant);
-    public java.time.ZoneOffset getOffset(java.time.Instant);
-    public java.time.ZoneOffset getOffset(java.time.LocalDateTime);
-    public java.time.ZoneOffset getStandardOffset(java.time.Instant);
-    public java.time.zone.ZoneOffsetTransition getTransition(java.time.LocalDateTime);
-    public java.util.List getTransitionRules();
-    public java.util.List getTransitions();
-    public java.util.List getValidOffsets(java.time.LocalDateTime);
-    public int hashCode();
-    public boolean isDaylightSavings(java.time.Instant);
-    public boolean isFixedOffset();
-    public boolean isValidOffset(java.time.LocalDateTime, java.time.ZoneOffset);
-    public java.time.zone.ZoneOffsetTransition nextTransition(java.time.Instant);
-    public static java.time.zone.ZoneRules of(java.time.ZoneOffset, java.time.ZoneOffset, java.util.List, java.util.List, java.util.List);
-    public static java.time.zone.ZoneRules of(java.time.ZoneOffset);
-    public java.time.zone.ZoneOffsetTransition previousTransition(java.time.Instant);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.AbstractCollection {
-    <init>();
-
-    public boolean add(java.lang.Object);
-    public boolean addAll(java.util.Collection);
-    public void clear();
-    public boolean contains(java.lang.Object);
-    public boolean containsAll(java.util.Collection);
-    public boolean isEmpty();
-    public abstract java.util.Iterator iterator();
-    public boolean remove(java.lang.Object);
-    public boolean removeAll(java.util.Collection);
-    public boolean retainAll(java.util.Collection);
-    public abstract int size();
-    public java.lang.Object[] toArray();
-    public java.lang.Object[] toArray(java.lang.Object[]);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.AbstractList {
-    <init>();
-
-    public boolean add(java.lang.Object);
-    public void add(int, java.lang.Object);
-    public boolean addAll(int, java.util.Collection);
-    public void clear();
-    public boolean equals(java.lang.Object);
-    public abstract java.lang.Object get(int);
-    public int hashCode();
-    public int indexOf(java.lang.Object);
-    public java.util.Iterator iterator();
-    public int lastIndexOf(java.lang.Object);
-    public java.util.ListIterator listIterator();
-    public java.util.ListIterator listIterator(int);
-    public java.lang.Object remove(int);
-    protected void removeRange(int, int);
-    public java.lang.Object set(int, java.lang.Object);
-    public java.util.List subList(int, int);
-
-
-    protected transient int modCount;
-}
-
--keep class java.util.AbstractMap {
-    <init>();
-
-    public void clear();
-    protected java.lang.Object clone();
-    public boolean containsKey(java.lang.Object);
-    public boolean containsValue(java.lang.Object);
-    public abstract java.util.Set entrySet();
-    public boolean equals(java.lang.Object);
-    public java.lang.Object get(java.lang.Object);
-    public int hashCode();
-    public boolean isEmpty();
-    public java.util.Set keySet();
-    public java.lang.Object put(java.lang.Object, java.lang.Object);
-    public void putAll(java.util.Map);
-    public java.lang.Object remove(java.lang.Object);
-    public int size();
-    public java.lang.String toString();
-    public java.util.Collection values();
-
-
-}
-
--keep class java.util.ArrayList {
-    <init>(int);
-    <init>();
-    <init>(java.util.Collection);
-
-    public boolean add(java.lang.Object);
-    public void add(int, java.lang.Object);
-    public boolean addAll(java.util.Collection);
-    public boolean addAll(int, java.util.Collection);
-    public void clear();
-    public java.lang.Object clone();
-    public boolean contains(java.lang.Object);
-    public void ensureCapacity(int);
-    public void forEach(java.util.function.Consumer);
-    public java.lang.Object get(int);
-    public int indexOf(java.lang.Object);
-    public boolean isEmpty();
-    public java.util.Iterator iterator();
-    public int lastIndexOf(java.lang.Object);
-    public java.util.ListIterator listIterator(int);
-    public java.util.ListIterator listIterator();
-    public java.lang.Object remove(int);
-    public boolean remove(java.lang.Object);
-    public boolean removeAll(java.util.Collection);
-    public boolean removeIf(java.util.function.Predicate);
-    protected void removeRange(int, int);
-    public void replaceAll(java.util.function.UnaryOperator);
-    public boolean retainAll(java.util.Collection);
-    public java.lang.Object set(int, java.lang.Object);
-    public int size();
-    public void sort(java.util.Comparator);
-    public java.util.Spliterator spliterator();
-    public java.util.List subList(int, int);
-    public java.lang.Object[] toArray();
-    public java.lang.Object[] toArray(java.lang.Object[]);
-    public void trimToSize();
-
-
-}
-
--keep class java.util.Collection {
-
-    public abstract boolean add(java.lang.Object);
-    public abstract boolean addAll(java.util.Collection);
-    public abstract void clear();
-    public abstract boolean contains(java.lang.Object);
-    public abstract boolean containsAll(java.util.Collection);
-    public abstract boolean equals(java.lang.Object);
-    public abstract int hashCode();
-    public abstract boolean isEmpty();
-    public abstract java.util.Iterator iterator();
-    public java.util.stream.Stream parallelStream();
-    public abstract boolean remove(java.lang.Object);
-    public abstract boolean removeAll(java.util.Collection);
-    public boolean removeIf(java.util.function.Predicate);
-    public abstract boolean retainAll(java.util.Collection);
-    public abstract int size();
-    public java.util.Spliterator spliterator();
-    public java.util.stream.Stream stream();
-    public abstract java.lang.Object[] toArray();
-    public abstract java.lang.Object[] toArray(java.lang.Object[]);
-
-
-}
-
--keep class java.util.Comparator {
-
-    public abstract int compare(java.lang.Object, java.lang.Object);
-    public static java.util.Comparator comparing(java.util.function.Function, java.util.Comparator);
-    public static java.util.Comparator comparing(java.util.function.Function);
-    public static java.util.Comparator comparingDouble(java.util.function.ToDoubleFunction);
-    public static java.util.Comparator comparingInt(java.util.function.ToIntFunction);
-    public static java.util.Comparator comparingLong(java.util.function.ToLongFunction);
-    public abstract boolean equals(java.lang.Object);
-    public static java.util.Comparator naturalOrder();
-    public static java.util.Comparator nullsFirst(java.util.Comparator);
-    public static java.util.Comparator nullsLast(java.util.Comparator);
-    public static java.util.Comparator reverseOrder();
-    public java.util.Comparator reversed();
-    public java.util.Comparator thenComparing(java.util.Comparator);
-    public java.util.Comparator thenComparing(java.util.function.Function, java.util.Comparator);
-    public java.util.Comparator thenComparing(java.util.function.Function);
-    public java.util.Comparator thenComparingDouble(java.util.function.ToDoubleFunction);
-    public java.util.Comparator thenComparingInt(java.util.function.ToIntFunction);
-    public java.util.Comparator thenComparingLong(java.util.function.ToLongFunction);
-
-
-}
-
--keep class java.util.Date {
-    <init>();
-    <init>(long);
-    <init>(int, int, int);
-    <init>(int, int, int, int, int);
-    <init>(int, int, int, int, int, int);
-    <init>(java.lang.String);
-
-    public static long UTC(int, int, int, int, int, int);
-    public boolean after(java.util.Date);
-    public boolean before(java.util.Date);
-    public java.lang.Object clone();
-    public int compareTo(java.util.Date);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public static java.util.Date from(java.time.Instant);
-    public int getDate();
-    public int getDay();
-    public int getHours();
-    public int getMinutes();
-    public int getMonth();
-    public int getSeconds();
-    public long getTime();
-    public int getTimezoneOffset();
-    public int getYear();
-    public int hashCode();
-    public static long parse(java.lang.String);
-    public void setDate(int);
-    public void setHours(int);
-    public void setMinutes(int);
-    public void setMonth(int);
-    public void setSeconds(int);
-    public void setTime(long);
-    public void setYear(int);
-    public java.lang.String toGMTString();
-    public java.time.Instant toInstant();
-    public java.lang.String toLocaleString();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.Dictionary {
-    <init>();
-
-    public abstract java.util.Enumeration elements();
-    public abstract java.lang.Object get(java.lang.Object);
-    public abstract boolean isEmpty();
-    public abstract java.util.Enumeration keys();
-    public abstract java.lang.Object put(java.lang.Object, java.lang.Object);
-    public abstract java.lang.Object remove(java.lang.Object);
-    public abstract int size();
-
-
-}
-
--keep class java.util.DoubleSummaryStatistics {
-    <init>();
-
-    public void accept(double);
-    public void combine(java.util.DoubleSummaryStatistics);
-    public double getAverage();
-    public long getCount();
-    public double getMax();
-    public double getMin();
-    public double getSum();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.Enumeration {
-
-    public abstract boolean hasMoreElements();
-    public abstract java.lang.Object nextElement();
-
-
-}
-
--keep class java.util.HashMap {
-    <init>(int, float);
-    <init>(int);
-    <init>();
-    <init>(java.util.Map);
-
-    public void clear();
-    public java.lang.Object clone();
-    public java.lang.Object compute(java.lang.Object, java.util.function.BiFunction);
-    public java.lang.Object computeIfAbsent(java.lang.Object, java.util.function.Function);
-    public java.lang.Object computeIfPresent(java.lang.Object, java.util.function.BiFunction);
-    public boolean containsKey(java.lang.Object);
-    public boolean containsValue(java.lang.Object);
-    public java.util.Set entrySet();
-    public void forEach(java.util.function.BiConsumer);
-    public java.lang.Object get(java.lang.Object);
-    public java.lang.Object getOrDefault(java.lang.Object, java.lang.Object);
-    public boolean isEmpty();
-    public java.util.Set keySet();
-    public java.lang.Object merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction);
-    public java.lang.Object put(java.lang.Object, java.lang.Object);
-    public void putAll(java.util.Map);
-    public java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object);
-    public java.lang.Object remove(java.lang.Object);
-    public boolean remove(java.lang.Object, java.lang.Object);
-    public boolean replace(java.lang.Object, java.lang.Object, java.lang.Object);
-    public java.lang.Object replace(java.lang.Object, java.lang.Object);
-    public void replaceAll(java.util.function.BiFunction);
-    public int size();
-    public java.util.Collection values();
-
-
-}
-
--keep class java.util.Hashtable {
-    <init>(int, float);
-    <init>(int);
-    <init>();
-    <init>(java.util.Map);
-
-    public synchronized void clear();
-    public synchronized java.lang.Object clone();
-    public synchronized java.lang.Object compute(java.lang.Object, java.util.function.BiFunction);
-    public synchronized java.lang.Object computeIfAbsent(java.lang.Object, java.util.function.Function);
-    public synchronized java.lang.Object computeIfPresent(java.lang.Object, java.util.function.BiFunction);
-    public synchronized boolean contains(java.lang.Object);
-    public synchronized boolean containsKey(java.lang.Object);
-    public boolean containsValue(java.lang.Object);
-    public synchronized java.util.Enumeration elements();
-    public java.util.Set entrySet();
-    public synchronized boolean equals(java.lang.Object);
-    public synchronized void forEach(java.util.function.BiConsumer);
-    public synchronized java.lang.Object get(java.lang.Object);
-    public synchronized java.lang.Object getOrDefault(java.lang.Object, java.lang.Object);
-    public synchronized int hashCode();
-    public synchronized boolean isEmpty();
-    public java.util.Set keySet();
-    public synchronized java.util.Enumeration keys();
-    public synchronized java.lang.Object merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction);
-    public synchronized java.lang.Object put(java.lang.Object, java.lang.Object);
-    public synchronized void putAll(java.util.Map);
-    public synchronized java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object);
-    protected void rehash();
-    public synchronized java.lang.Object remove(java.lang.Object);
-    public synchronized boolean remove(java.lang.Object, java.lang.Object);
-    public synchronized boolean replace(java.lang.Object, java.lang.Object, java.lang.Object);
-    public synchronized java.lang.Object replace(java.lang.Object, java.lang.Object);
-    public synchronized void replaceAll(java.util.function.BiFunction);
-    public synchronized int size();
-    public synchronized java.lang.String toString();
-    public java.util.Collection values();
-
-
-}
-
--keep class java.util.IntSummaryStatistics {
-    <init>();
-
-    public void accept(int);
-    public void combine(java.util.IntSummaryStatistics);
-    public double getAverage();
-    public long getCount();
-    public int getMax();
-    public int getMin();
-    public long getSum();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.InvalidPropertiesFormatException {
-    <init>(java.lang.Throwable);
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.util.Iterator {
-
-    public void forEachRemaining(java.util.function.Consumer);
-    public abstract boolean hasNext();
-    public abstract java.lang.Object next();
-    public void remove();
-
-
-}
-
--keep class java.util.List {
-
-    public abstract boolean add(java.lang.Object);
-    public abstract void add(int, java.lang.Object);
-    public abstract boolean addAll(java.util.Collection);
-    public abstract boolean addAll(int, java.util.Collection);
-    public abstract void clear();
-    public abstract boolean contains(java.lang.Object);
-    public abstract boolean containsAll(java.util.Collection);
-    public abstract boolean equals(java.lang.Object);
-    public abstract java.lang.Object get(int);
-    public abstract int hashCode();
-    public abstract int indexOf(java.lang.Object);
-    public abstract boolean isEmpty();
-    public abstract java.util.Iterator iterator();
-    public abstract int lastIndexOf(java.lang.Object);
-    public abstract java.util.ListIterator listIterator();
-    public abstract java.util.ListIterator listIterator(int);
-    public abstract boolean remove(java.lang.Object);
-    public abstract java.lang.Object remove(int);
-    public abstract boolean removeAll(java.util.Collection);
-    public void replaceAll(java.util.function.UnaryOperator);
-    public abstract boolean retainAll(java.util.Collection);
-    public abstract java.lang.Object set(int, java.lang.Object);
-    public abstract int size();
-    public void sort(java.util.Comparator);
-    public java.util.Spliterator spliterator();
-    public abstract java.util.List subList(int, int);
-    public abstract java.lang.Object[] toArray();
-    public abstract java.lang.Object[] toArray(java.lang.Object[]);
-
-
-}
-
--keep class java.util.ListIterator {
-
-    public abstract void add(java.lang.Object);
-    public abstract boolean hasNext();
-    public abstract boolean hasPrevious();
-    public abstract java.lang.Object next();
-    public abstract int nextIndex();
-    public abstract java.lang.Object previous();
-    public abstract int previousIndex();
-    public abstract void remove();
-    public abstract void set(java.lang.Object);
-
-
-}
-
--keep class java.util.Locale {
-    <init>(java.lang.String, java.lang.String, java.lang.String);
-    <init>(java.lang.String, java.lang.String);
-    <init>(java.lang.String);
-
-    public static java.lang.String adjustLanguageCode(java.lang.String);
-    public java.lang.Object clone();
-    public boolean equals(java.lang.Object);
-    public static java.util.List filter(java.util.List, java.util.Collection, java.util.Locale$FilteringMode);
-    public static java.util.List filter(java.util.List, java.util.Collection);
-    public static java.util.List filterTags(java.util.List, java.util.Collection, java.util.Locale$FilteringMode);
-    public static java.util.List filterTags(java.util.List, java.util.Collection);
-    public static java.util.Locale forLanguageTag(java.lang.String);
-    public static java.util.Locale[] getAvailableLocales();
-    public java.lang.String getCountry();
-    public static java.util.Locale getDefault();
-    public static java.util.Locale getDefault(java.util.Locale$Category);
-    public java.lang.String getDisplayCountry();
-    public java.lang.String getDisplayCountry(java.util.Locale);
-    public java.lang.String getDisplayLanguage();
-    public java.lang.String getDisplayLanguage(java.util.Locale);
-    public java.lang.String getDisplayName();
-    public java.lang.String getDisplayName(java.util.Locale);
-    public java.lang.String getDisplayScript();
-    public java.lang.String getDisplayScript(java.util.Locale);
-    public java.lang.String getDisplayVariant();
-    public java.lang.String getDisplayVariant(java.util.Locale);
-    public java.lang.String getExtension(char);
-    public java.util.Set getExtensionKeys();
-    public java.lang.String getISO3Country();
-    public java.lang.String getISO3Language();
-    public static java.lang.String[] getISOCountries();
-    public static java.lang.String[] getISOLanguages();
-    public java.lang.String getLanguage();
-    public java.lang.String getScript();
-    public java.util.Set getUnicodeLocaleAttributes();
-    public java.util.Set getUnicodeLocaleKeys();
-    public java.lang.String getUnicodeLocaleType(java.lang.String);
-    public java.lang.String getVariant();
-    public boolean hasExtensions();
-    public int hashCode();
-    public static java.util.Locale initDefault();
-    public static java.util.Locale lookup(java.util.List, java.util.Collection);
-    public static java.lang.String lookupTag(java.util.List, java.util.Collection);
-    public static synchronized void setDefault(java.util.Locale);
-    public static synchronized void setDefault(java.util.Locale$Category, java.util.Locale);
-    public java.util.Locale stripExtensions();
-    public java.lang.String toLanguageTag();
-    public java.lang.String toString();
-
-
-    public static java.util.Locale CANADA;
-    public static java.util.Locale CANADA_FRENCH;
-    public static java.util.Locale CHINA;
-    public static java.util.Locale CHINESE;
-    public static java.util.Locale ENGLISH;
-    public static java.util.Locale FRANCE;
-    public static java.util.Locale FRENCH;
-    public static java.util.Locale GERMAN;
-    public static java.util.Locale GERMANY;
-    public static java.util.Locale ITALIAN;
-    public static java.util.Locale ITALY;
-    public static java.util.Locale JAPAN;
-    public static java.util.Locale JAPANESE;
-    public static java.util.Locale KOREA;
-    public static java.util.Locale KOREAN;
-    public static java.util.Locale PRC;
-    public static char PRIVATE_USE_EXTENSION;
-    public static java.util.Locale ROOT;
-    public static java.util.Locale SIMPLIFIED_CHINESE;
-    public static java.util.Locale TAIWAN;
-    public static java.util.Locale TRADITIONAL_CHINESE;
-    public static java.util.Locale UK;
-    public static char UNICODE_LOCALE_EXTENSION;
-    public static java.util.Locale US;
-}
-
--keep class java.util.Locale$Category {
-
-    public static java.util.Locale$Category valueOf(java.lang.String);
-    public static java.util.Locale$Category[] values();
-
-    public static java.util.Locale$Category DISPLAY;
-    public static java.util.Locale$Category FORMAT;
-
-}
-
--keep class java.util.Locale$FilteringMode {
-
-    public static java.util.Locale$FilteringMode valueOf(java.lang.String);
-    public static java.util.Locale$FilteringMode[] values();
-
-    public static java.util.Locale$FilteringMode AUTOSELECT_FILTERING;
-    public static java.util.Locale$FilteringMode EXTENDED_FILTERING;
-    public static java.util.Locale$FilteringMode IGNORE_EXTENDED_RANGES;
-    public static java.util.Locale$FilteringMode MAP_EXTENDED_RANGES;
-    public static java.util.Locale$FilteringMode REJECT_EXTENDED_RANGES;
-
-}
-
--keep class java.util.Locale$LanguageRange {
-    <init>(java.lang.String);
-    <init>(java.lang.String, double);
-
-    public boolean equals(java.lang.Object);
-    public java.lang.String getRange();
-    public double getWeight();
-    public int hashCode();
-    public static java.util.List mapEquivalents(java.util.List, java.util.Map);
-    public static java.util.List parse(java.lang.String);
-    public static java.util.List parse(java.lang.String, java.util.Map);
-
-
-    public static double MAX_WEIGHT;
-    public static double MIN_WEIGHT;
-}
-
--keep class java.util.LongSummaryStatistics {
-    <init>();
-
-    public void accept(int);
-    public void accept(long);
-    public void combine(java.util.LongSummaryStatistics);
-    public double getAverage();
-    public long getCount();
-    public long getMax();
-    public long getMin();
-    public long getSum();
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.Map {
-
-    public abstract void clear();
-    public java.lang.Object compute(java.lang.Object, java.util.function.BiFunction);
-    public java.lang.Object computeIfAbsent(java.lang.Object, java.util.function.Function);
-    public java.lang.Object computeIfPresent(java.lang.Object, java.util.function.BiFunction);
-    public abstract boolean containsKey(java.lang.Object);
-    public abstract boolean containsValue(java.lang.Object);
-    public abstract java.util.Set entrySet();
-    public abstract boolean equals(java.lang.Object);
-    public void forEach(java.util.function.BiConsumer);
-    public abstract java.lang.Object get(java.lang.Object);
-    public java.lang.Object getOrDefault(java.lang.Object, java.lang.Object);
-    public abstract int hashCode();
-    public abstract boolean isEmpty();
-    public abstract java.util.Set keySet();
-    public java.lang.Object merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction);
-    public abstract java.lang.Object put(java.lang.Object, java.lang.Object);
-    public abstract void putAll(java.util.Map);
-    public java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object);
-    public abstract java.lang.Object remove(java.lang.Object);
-    public boolean remove(java.lang.Object, java.lang.Object);
-    public boolean replace(java.lang.Object, java.lang.Object, java.lang.Object);
-    public java.lang.Object replace(java.lang.Object, java.lang.Object);
-    public void replaceAll(java.util.function.BiFunction);
-    public abstract int size();
-    public abstract java.util.Collection values();
-
-
-}
-
--keep class java.util.Map$Entry {
-
-    public static java.util.Comparator comparingByKey();
-    public static java.util.Comparator comparingByKey(java.util.Comparator);
-    public static java.util.Comparator comparingByValue();
-    public static java.util.Comparator comparingByValue(java.util.Comparator);
-    public abstract boolean equals(java.lang.Object);
-    public abstract java.lang.Object getKey();
-    public abstract java.lang.Object getValue();
-    public abstract int hashCode();
-    public abstract java.lang.Object setValue(java.lang.Object);
-
-
-}
-
--keep class java.util.MissingResourceException {
-    <init>(java.lang.String, java.lang.String, java.lang.String);
-
-    public java.lang.String getClassName();
-    public java.lang.String getKey();
-
-
-}
-
--keep class java.util.Optional {
-
-    public static java.util.Optional empty();
-    public boolean equals(java.lang.Object);
-    public java.util.Optional filter(java.util.function.Predicate);
-    public java.util.Optional flatMap(java.util.function.Function);
-    public java.lang.Object get();
-    public int hashCode();
-    public void ifPresent(java.util.function.Consumer);
-    public boolean isPresent();
-    public java.util.Optional map(java.util.function.Function);
-    public static java.util.Optional of(java.lang.Object);
-    public static java.util.Optional ofNullable(java.lang.Object);
-    public java.lang.Object orElse(java.lang.Object);
-    public java.lang.Object orElseGet(java.util.function.Supplier);
-    public java.lang.Object orElseThrow(java.util.function.Supplier);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.OptionalDouble {
-
-    public static java.util.OptionalDouble empty();
-    public boolean equals(java.lang.Object);
-    public double getAsDouble();
-    public int hashCode();
-    public void ifPresent(java.util.function.DoubleConsumer);
-    public boolean isPresent();
-    public static java.util.OptionalDouble of(double);
-    public double orElse(double);
-    public double orElseGet(java.util.function.DoubleSupplier);
-    public double orElseThrow(java.util.function.Supplier);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.OptionalInt {
-
-    public static java.util.OptionalInt empty();
-    public boolean equals(java.lang.Object);
-    public int getAsInt();
-    public int hashCode();
-    public void ifPresent(java.util.function.IntConsumer);
-    public boolean isPresent();
-    public static java.util.OptionalInt of(int);
-    public int orElse(int);
-    public int orElseGet(java.util.function.IntSupplier);
-    public int orElseThrow(java.util.function.Supplier);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.OptionalLong {
-
-    public static java.util.OptionalLong empty();
-    public boolean equals(java.lang.Object);
-    public long getAsLong();
-    public int hashCode();
-    public void ifPresent(java.util.function.LongConsumer);
-    public boolean isPresent();
-    public static java.util.OptionalLong of(long);
-    public long orElse(long);
-    public long orElseGet(java.util.function.LongSupplier);
-    public long orElseThrow(java.util.function.Supplier);
-    public java.lang.String toString();
-
-
-}
-
--keep class java.util.PrimitiveIterator {
-
-    public abstract void forEachRemaining(java.lang.Object);
-
-
-}
-
--keep class java.util.PrimitiveIterator$OfDouble {
-
-    public void forEachRemaining(java.util.function.DoubleConsumer);
-    public void forEachRemaining(java.util.function.Consumer);
-    public void forEachRemaining(java.lang.Object);
-    public java.lang.Double next();
-    public java.lang.Object next();
-    public abstract double nextDouble();
-
-
-}
-
--keep class java.util.PrimitiveIterator$OfInt {
-
-    public void forEachRemaining(java.util.function.IntConsumer);
-    public void forEachRemaining(java.util.function.Consumer);
-    public void forEachRemaining(java.lang.Object);
-    public java.lang.Integer next();
-    public java.lang.Object next();
-    public abstract int nextInt();
-
-
-}
-
--keep class java.util.PrimitiveIterator$OfLong {
-
-    public void forEachRemaining(java.util.function.LongConsumer);
-    public void forEachRemaining(java.util.function.Consumer);
-    public void forEachRemaining(java.lang.Object);
-    public java.lang.Long next();
-    public java.lang.Object next();
-    public abstract long nextLong();
-
-
-}
-
--keep class java.util.Properties {
-    <init>();
-    <init>(java.util.Properties);
-
-    public java.lang.String getProperty(java.lang.String);
-    public java.lang.String getProperty(java.lang.String, java.lang.String);
-    public void list(java.io.PrintStream);
-    public void list(java.io.PrintWriter);
-    public synchronized void load(java.io.Reader);
-    public synchronized void load(java.io.InputStream);
-    public synchronized void loadFromXML(java.io.InputStream);
-    public java.util.Enumeration propertyNames();
-    public void save(java.io.OutputStream, java.lang.String);
-    public synchronized java.lang.Object setProperty(java.lang.String, java.lang.String);
-    public void store(java.io.Writer, java.lang.String);
-    public void store(java.io.OutputStream, java.lang.String);
-    public void storeToXML(java.io.OutputStream, java.lang.String);
-    public void storeToXML(java.io.OutputStream, java.lang.String, java.lang.String);
-    public java.util.Set stringPropertyNames();
-
-
-    protected java.util.Properties defaults;
-}
-
--keep class java.util.Random {
-    <init>();
-    <init>(long);
-
-    public java.util.stream.DoubleStream doubles(long);
-    public java.util.stream.DoubleStream doubles();
-    public java.util.stream.DoubleStream doubles(long, double, double);
-    public java.util.stream.DoubleStream doubles(double, double);
-    public java.util.stream.IntStream ints(long);
-    public java.util.stream.IntStream ints();
-    public java.util.stream.IntStream ints(long, int, int);
-    public java.util.stream.IntStream ints(int, int);
-    public java.util.stream.LongStream longs(long);
-    public java.util.stream.LongStream longs();
-    public java.util.stream.LongStream longs(long, long, long);
-    public java.util.stream.LongStream longs(long, long);
-    protected int next(int);
-    public boolean nextBoolean();
-    public void nextBytes(byte[]);
-    public double nextDouble();
-    public float nextFloat();
-    public synchronized double nextGaussian();
-    public int nextInt();
-    public int nextInt(int);
-    public long nextLong();
-    public synchronized void setSeed(long);
-
-
-}
-
--keep class java.util.Set {
-
-    public abstract boolean add(java.lang.Object);
-    public abstract boolean addAll(java.util.Collection);
-    public abstract void clear();
-    public abstract boolean contains(java.lang.Object);
-    public abstract boolean containsAll(java.util.Collection);
-    public abstract boolean equals(java.lang.Object);
-    public abstract int hashCode();
-    public abstract boolean isEmpty();
-    public abstract java.util.Iterator iterator();
-    public abstract boolean remove(java.lang.Object);
-    public abstract boolean removeAll(java.util.Collection);
-    public abstract boolean retainAll(java.util.Collection);
-    public abstract int size();
-    public java.util.Spliterator spliterator();
-    public abstract java.lang.Object[] toArray();
-    public abstract java.lang.Object[] toArray(java.lang.Object[]);
-
-
-}
-
--keep class java.util.SortedMap {
-
-    public abstract java.util.Comparator comparator();
-    public abstract java.util.Set entrySet();
-    public abstract java.lang.Object firstKey();
-    public abstract java.util.SortedMap headMap(java.lang.Object);
-    public abstract java.util.Set keySet();
-    public abstract java.lang.Object lastKey();
-    public abstract java.util.SortedMap subMap(java.lang.Object, java.lang.Object);
-    public abstract java.util.SortedMap tailMap(java.lang.Object);
-    public abstract java.util.Collection values();
-
-
-}
-
--keep class java.util.Spliterator {
-
-    public abstract int characteristics();
-    public abstract long estimateSize();
-    public void forEachRemaining(java.util.function.Consumer);
-    public java.util.Comparator getComparator();
-    public long getExactSizeIfKnown();
-    public boolean hasCharacteristics(int);
-    public abstract boolean tryAdvance(java.util.function.Consumer);
-    public abstract java.util.Spliterator trySplit();
-
-
-    public static int CONCURRENT;
-    public static int DISTINCT;
-    public static int IMMUTABLE;
-    public static int NONNULL;
-    public static int ORDERED;
-    public static int SIZED;
-    public static int SORTED;
-    public static int SUBSIZED;
-}
-
--keep class java.util.Spliterator$OfDouble {
-
-    public void forEachRemaining(java.util.function.DoubleConsumer);
-    public void forEachRemaining(java.util.function.Consumer);
-    public void forEachRemaining(java.lang.Object);
-    public abstract boolean tryAdvance(java.util.function.DoubleConsumer);
-    public boolean tryAdvance(java.util.function.Consumer);
-    public boolean tryAdvance(java.lang.Object);
-    public abstract java.util.Spliterator$OfDouble trySplit();
-    public java.util.Spliterator$OfPrimitive trySplit();
-    public java.util.Spliterator trySplit();
-
-
-}
-
--keep class java.util.Spliterator$OfInt {
-
-    public void forEachRemaining(java.util.function.IntConsumer);
-    public void forEachRemaining(java.util.function.Consumer);
-    public void forEachRemaining(java.lang.Object);
-    public abstract boolean tryAdvance(java.util.function.IntConsumer);
-    public boolean tryAdvance(java.util.function.Consumer);
-    public boolean tryAdvance(java.lang.Object);
-    public abstract java.util.Spliterator$OfInt trySplit();
-    public java.util.Spliterator$OfPrimitive trySplit();
-    public java.util.Spliterator trySplit();
-
-
-}
-
--keep class java.util.Spliterator$OfLong {
-
-    public void forEachRemaining(java.util.function.LongConsumer);
-    public void forEachRemaining(java.util.function.Consumer);
-    public void forEachRemaining(java.lang.Object);
-    public abstract boolean tryAdvance(java.util.function.LongConsumer);
-    public boolean tryAdvance(java.util.function.Consumer);
-    public boolean tryAdvance(java.lang.Object);
-    public abstract java.util.Spliterator$OfLong trySplit();
-    public java.util.Spliterator$OfPrimitive trySplit();
-    public java.util.Spliterator trySplit();
-
-
-}
-
--keep class java.util.Spliterator$OfPrimitive {
-
-    public void forEachRemaining(java.lang.Object);
-    public abstract boolean tryAdvance(java.lang.Object);
-    public abstract java.util.Spliterator$OfPrimitive trySplit();
-    public java.util.Spliterator trySplit();
-
-
-}
-
--keep class java.util.UUID {
-    <init>(long, long);
-
-    public int clockSequence();
-    public int compareTo(java.util.UUID);
-    public int compareTo(java.lang.Object);
-    public boolean equals(java.lang.Object);
-    public static java.util.UUID fromString(java.lang.String);
-    public long getLeastSignificantBits();
-    public long getMostSignificantBits();
-    public int hashCode();
-    public static java.util.UUID nameUUIDFromBytes(byte[]);
-    public long node();
-    public static java.util.UUID randomUUID();
-    public long timestamp();
-    public java.lang.String toString();
-    public int variant();
-    public int version();
-
-
-}
-
--keep class java.util.concurrent.Callable {
-
-    public abstract java.lang.Object call();
-
-
-}
-
--keep class java.util.concurrent.ExecutionException {
-    <init>();
-    <init>(java.lang.String);
-    <init>(java.lang.String, java.lang.Throwable);
-    <init>(java.lang.Throwable);
-
-
-
-}
-
--keep class java.util.concurrent.Executor {
-
-    public abstract void execute(java.lang.Runnable);
-
-
-}
-
--keep class java.util.concurrent.ExecutorService {
-
-    public abstract boolean awaitTermination(long, java.util.concurrent.TimeUnit);
-    public abstract java.util.List invokeAll(java.util.Collection);
-    public abstract java.util.List invokeAll(java.util.Collection, long, java.util.concurrent.TimeUnit);
-    public abstract java.lang.Object invokeAny(java.util.Collection);
-    public abstract java.lang.Object invokeAny(java.util.Collection, long, java.util.concurrent.TimeUnit);
-    public abstract boolean isShutdown();
-    public abstract boolean isTerminated();
-    public abstract void shutdown();
-    public abstract java.util.List shutdownNow();
-    public abstract java.util.concurrent.Future submit(java.util.concurrent.Callable);
-    public abstract java.util.concurrent.Future submit(java.lang.Runnable, java.lang.Object);
-    public abstract java.util.concurrent.Future submit(java.lang.Runnable);
-
-
-}
-
--keep class java.util.concurrent.Future {
-
-    public abstract boolean cancel(boolean);
-    public abstract java.lang.Object get();
-    public abstract java.lang.Object get(long, java.util.concurrent.TimeUnit);
-    public abstract boolean isCancelled();
-    public abstract boolean isDone();
-
-
-}
-
--keep class java.util.concurrent.TimeUnit {
-
-    public long convert(long, java.util.concurrent.TimeUnit);
-    public void sleep(long);
-    public void timedJoin(java.lang.Thread, long);
-    public void timedWait(java.lang.Object, long);
-    public long toDays(long);
-    public long toHours(long);
-    public long toMicros(long);
-    public long toMillis(long);
-    public long toMinutes(long);
-    public long toNanos(long);
-    public long toSeconds(long);
-    public static java.util.concurrent.TimeUnit valueOf(java.lang.String);
-    public static java.util.concurrent.TimeUnit[] values();
-
-    public static java.util.concurrent.TimeUnit DAYS;
-    public static java.util.concurrent.TimeUnit HOURS;
-    public static java.util.concurrent.TimeUnit MICROSECONDS;
-    public static java.util.concurrent.TimeUnit MILLISECONDS;
-    public static java.util.concurrent.TimeUnit MINUTES;
-    public static java.util.concurrent.TimeUnit NANOSECONDS;
-    public static java.util.concurrent.TimeUnit SECONDS;
-
-}
-
--keep class java.util.concurrent.TimeoutException {
-    <init>();
-    <init>(java.lang.String);
-
-
-
-}
-
--keep class java.util.concurrent.atomic.AtomicInteger {
-    <init>(int);
-    <init>();
-
-    public int accumulateAndGet(int, java.util.function.IntBinaryOperator);
-    public int addAndGet(int);
-    public boolean compareAndSet(int, int);
-    public int decrementAndGet();
-    public double doubleValue();
-    public float floatValue();
-    public int get();
-    public int getAndAccumulate(int, java.util.function.IntBinaryOperator);
-    public int getAndAdd(int);
-    public int getAndDecrement();
-    public int getAndIncrement();
-    public int getAndSet(int);
-    public int getAndUpdate(java.util.function.IntUnaryOperator);
-    public int incrementAndGet();
-    public int intValue();
-    public void lazySet(int);
-    public long longValue();
-    public void set(int);
-    public java.lang.String toString();
-    public int updateAndGet(java.util.function.IntUnaryOperator);
-    public boolean weakCompareAndSet(int, int);
-
-
-}
-
--keep class java.util.function.BiConsumer {
-
-    public abstract void accept(java.lang.Object, java.lang.Object);
-    public java.util.function.BiConsumer andThen(java.util.function.BiConsumer);
-
-
-}
-
--keep class java.util.function.BiFunction {
-
-    public java.util.function.BiFunction andThen(java.util.function.Function);
-    public abstract java.lang.Object apply(java.lang.Object, java.lang.Object);
-
-
-}
-
--keep class java.util.function.BinaryOperator {
-
-    public static java.util.function.BinaryOperator maxBy(java.util.Comparator);
-    public static java.util.function.BinaryOperator minBy(java.util.Comparator);
-
-
-}
-
--keep class java.util.function.Consumer {
-
-    public abstract void accept(java.lang.Object);
-    public java.util.function.Consumer andThen(java.util.function.Consumer);
-
-
-}
-
--keep class java.util.function.DoubleBinaryOperator {
-
-    public abstract double applyAsDouble(double, double);
-
-
-}
-
--keep class java.util.function.DoubleConsumer {
-
-    public abstract void accept(double);
-    public java.util.function.DoubleConsumer andThen(java.util.function.DoubleConsumer);
-
-
-}
-
--keep class java.util.function.DoubleFunction {
-
-    public abstract java.lang.Object apply(double);
-
-
-}
-
--keep class java.util.function.DoublePredicate {
-
-    public java.util.function.DoublePredicate and(java.util.function.DoublePredicate);
-    public java.util.function.DoublePredicate negate();
-    public java.util.function.DoublePredicate or(java.util.function.DoublePredicate);
-    public abstract boolean test(double);
-
-
-}
-
--keep class java.util.function.DoubleSupplier {
-
-    public abstract double getAsDouble();
-
-
-}
-
--keep class java.util.function.DoubleToIntFunction {
-
-    public abstract int applyAsInt(double);
-
-
-}
-
--keep class java.util.function.DoubleToLongFunction {
-
-    public abstract long applyAsLong(double);
-
-
-}
-
--keep class java.util.function.DoubleUnaryOperator {
-
-    public java.util.function.DoubleUnaryOperator andThen(java.util.function.DoubleUnaryOperator);
-    public abstract double applyAsDouble(double);
-    public java.util.function.DoubleUnaryOperator compose(java.util.function.DoubleUnaryOperator);
-    public static java.util.function.DoubleUnaryOperator identity();
-
-
-}
-
--keep class java.util.function.Function {
-
-    public java.util.function.Function andThen(java.util.function.Function);
-    public abstract java.lang.Object apply(java.lang.Object);
-    public java.util.function.Function compose(java.util.function.Function);
-    public static java.util.function.Function identity();
-
-
-}
-
--keep class java.util.function.IntBinaryOperator {
-
-    public abstract int applyAsInt(int, int);
-
-
-}
-
--keep class java.util.function.IntConsumer {
-
-    public abstract void accept(int);
-    public java.util.function.IntConsumer andThen(java.util.function.IntConsumer);
-
-
-}
-
--keep class java.util.function.IntFunction {
-
-    public abstract java.lang.Object apply(int);
-
-
-}
-
--keep class java.util.function.IntPredicate {
-
-    public java.util.function.IntPredicate and(java.util.function.IntPredicate);
-    public java.util.function.IntPredicate negate();
-    public java.util.function.IntPredicate or(java.util.function.IntPredicate);
-    public abstract boolean test(int);
-
-
-}
-
--keep class java.util.function.IntSupplier {
-
-    public abstract int getAsInt();
-
-
-}
-
--keep class java.util.function.IntToDoubleFunction {
-
-    public abstract double applyAsDouble(int);
-
-
-}
-
--keep class java.util.function.IntToLongFunction {
-
-    public abstract long applyAsLong(int);
-
-
-}
-
--keep class java.util.function.IntUnaryOperator {
-
-    public java.util.function.IntUnaryOperator andThen(java.util.function.IntUnaryOperator);
-    public abstract int applyAsInt(int);
-    public java.util.function.IntUnaryOperator compose(java.util.function.IntUnaryOperator);
-    public static java.util.function.IntUnaryOperator identity();
-
-
-}
-
--keep class java.util.function.LongBinaryOperator {
-
-    public abstract long applyAsLong(long, long);
-
-
-}
-
--keep class java.util.function.LongConsumer {
-
-    public abstract void accept(long);
-    public java.util.function.LongConsumer andThen(java.util.function.LongConsumer);
-
-
-}
-
--keep class java.util.function.LongFunction {
-
-    public abstract java.lang.Object apply(long);
-
-
-}
-
--keep class java.util.function.LongPredicate {
-
-    public java.util.function.LongPredicate and(java.util.function.LongPredicate);
-    public java.util.function.LongPredicate negate();
-    public java.util.function.LongPredicate or(java.util.function.LongPredicate);
-    public abstract boolean test(long);
-
-
-}
-
--keep class java.util.function.LongSupplier {
-
-    public abstract long getAsLong();
-
-
-}
-
--keep class java.util.function.LongToDoubleFunction {
-
-    public abstract double applyAsDouble(long);
-
-
-}
-
--keep class java.util.function.LongToIntFunction {
-
-    public abstract int applyAsInt(long);
-
-
-}
-
--keep class java.util.function.LongUnaryOperator {
-
-    public java.util.function.LongUnaryOperator andThen(java.util.function.LongUnaryOperator);
-    public abstract long applyAsLong(long);
-    public java.util.function.LongUnaryOperator compose(java.util.function.LongUnaryOperator);
-    public static java.util.function.LongUnaryOperator identity();
-
-
-}
-
--keep class java.util.function.ObjDoubleConsumer {
-
-    public abstract void accept(java.lang.Object, double);
-
-
-}
-
--keep class java.util.function.ObjIntConsumer {
-
-    public abstract void accept(java.lang.Object, int);
-
-
-}
-
--keep class java.util.function.ObjLongConsumer {
-
-    public abstract void accept(java.lang.Object, long);
-
-
-}
-
--keep class java.util.function.Predicate {
-
-    public java.util.function.Predicate and(java.util.function.Predicate);
-    public static java.util.function.Predicate isEqual(java.lang.Object);
-    public java.util.function.Predicate negate();
-    public java.util.function.Predicate or(java.util.function.Predicate);
-    public abstract boolean test(java.lang.Object);
-
-
-}
-
--keep class java.util.function.Supplier {
-
-    public abstract java.lang.Object get();
-
-
-}
-
--keep class java.util.function.ToDoubleFunction {
-
-    public abstract double applyAsDouble(java.lang.Object);
-
-
-}
-
--keep class java.util.function.ToIntFunction {
-
-    public abstract int applyAsInt(java.lang.Object);
-
-
-}
-
--keep class java.util.function.ToLongFunction {
-
-    public abstract long applyAsLong(java.lang.Object);
-
-
-}
-
--keep class java.util.function.UnaryOperator {
-
-    public static java.util.function.UnaryOperator identity();
-
-
-}
-
--keep class java.util.stream.BaseStream {
-
-    public abstract void close();
-    public abstract boolean isParallel();
-    public abstract java.util.Iterator iterator();
-    public abstract java.util.stream.BaseStream onClose(java.lang.Runnable);
-    public abstract java.util.stream.BaseStream parallel();
-    public abstract java.util.stream.BaseStream sequential();
-    public abstract java.util.Spliterator spliterator();
-    public abstract java.util.stream.BaseStream unordered();
-
-
-}
-
--keep class java.util.stream.Collector {
-
-    public abstract java.util.function.BiConsumer accumulator();
-    public abstract java.util.Set characteristics();
-    public abstract java.util.function.BinaryOperator combiner();
-    public abstract java.util.function.Function finisher();
-    public static java.util.stream.Collector of(java.util.function.Supplier, java.util.function.BiConsumer, java.util.function.BinaryOperator, java.util.stream.Collector$Characteristics[]);
-    public static java.util.stream.Collector of(java.util.function.Supplier, java.util.function.BiConsumer, java.util.function.BinaryOperator, java.util.function.Function, java.util.stream.Collector$Characteristics[]);
-    public abstract java.util.function.Supplier supplier();
-
-
-}
-
--keep class java.util.stream.Collector$Characteristics {
-
-    public static java.util.stream.Collector$Characteristics valueOf(java.lang.String);
-    public static java.util.stream.Collector$Characteristics[] values();
-
-    public static java.util.stream.Collector$Characteristics CONCURRENT;
-    public static java.util.stream.Collector$Characteristics IDENTITY_FINISH;
-    public static java.util.stream.Collector$Characteristics UNORDERED;
-
-}
-
--keep class java.util.stream.DoubleStream {
-
-    public abstract boolean allMatch(java.util.function.DoublePredicate);
-    public abstract boolean anyMatch(java.util.function.DoublePredicate);
-    public abstract java.util.OptionalDouble average();
-    public abstract java.util.stream.Stream boxed();
-    public static java.util.stream.DoubleStream$Builder builder();
-    public abstract java.lang.Object collect(java.util.function.Supplier, java.util.function.ObjDoubleConsumer, java.util.function.BiConsumer);
-    public static java.util.stream.DoubleStream concat(java.util.stream.DoubleStream, java.util.stream.DoubleStream);
-    public abstract long count();
-    public abstract java.util.stream.DoubleStream distinct();
-    public static java.util.stream.DoubleStream empty();
-    public abstract java.util.stream.DoubleStream filter(java.util.function.DoublePredicate);
-    public abstract java.util.OptionalDouble findAny();
-    public abstract java.util.OptionalDouble findFirst();
-    public abstract java.util.stream.DoubleStream flatMap(java.util.function.DoubleFunction);
-    public abstract void forEach(java.util.function.DoubleConsumer);
-    public abstract void forEachOrdered(java.util.function.DoubleConsumer);
-    public static java.util.stream.DoubleStream generate(java.util.function.DoubleSupplier);
-    public static java.util.stream.DoubleStream iterate(double, java.util.function.DoubleUnaryOperator);
-    public abstract java.util.PrimitiveIterator$OfDouble iterator();
-    public java.util.Iterator iterator();
-    public abstract java.util.stream.DoubleStream limit(long);
-    public abstract java.util.stream.DoubleStream map(java.util.function.DoubleUnaryOperator);
-    public abstract java.util.stream.IntStream mapToInt(java.util.function.DoubleToIntFunction);
-    public abstract java.util.stream.LongStream mapToLong(java.util.function.DoubleToLongFunction);
-    public abstract java.util.stream.Stream mapToObj(java.util.function.DoubleFunction);
-    public abstract java.util.OptionalDouble max();
-    public abstract java.util.OptionalDouble min();
-    public abstract boolean noneMatch(java.util.function.DoublePredicate);
-    public static java.util.stream.DoubleStream of(double);
-    public static java.util.stream.DoubleStream of(double[]);
-    public abstract java.util.stream.DoubleStream parallel();
-    public java.util.stream.BaseStream parallel();
-    public abstract java.util.stream.DoubleStream peek(java.util.function.DoubleConsumer);
-    public abstract double reduce(double, java.util.function.DoubleBinaryOperator);
-    public abstract java.util.OptionalDouble reduce(java.util.function.DoubleBinaryOperator);
-    public abstract java.util.stream.DoubleStream sequential();
-    public java.util.stream.BaseStream sequential();
-    public abstract java.util.stream.DoubleStream skip(long);
-    public abstract java.util.stream.DoubleStream sorted();
-    public abstract java.util.Spliterator$OfDouble spliterator();
-    public java.util.Spliterator spliterator();
-    public abstract double sum();
-    public abstract java.util.DoubleSummaryStatistics summaryStatistics();
-    public abstract double[] toArray();
-
-
-}
-
--keep class java.util.stream.DoubleStream$Builder {
-
-    public abstract void accept(double);
-    public java.util.stream.DoubleStream$Builder add(double);
-    public abstract java.util.stream.DoubleStream build();
-
-
-}
-
--keep class java.util.stream.IntStream {
-
-    public abstract boolean allMatch(java.util.function.IntPredicate);
-    public abstract boolean anyMatch(java.util.function.IntPredicate);
-    public abstract java.util.stream.DoubleStream asDoubleStream();
-    public abstract java.util.stream.LongStream asLongStream();
-    public abstract java.util.OptionalDouble average();
-    public abstract java.util.stream.Stream boxed();
-    public static java.util.stream.IntStream$Builder builder();
-    public abstract java.lang.Object collect(java.util.function.Supplier, java.util.function.ObjIntConsumer, java.util.function.BiConsumer);
-    public static java.util.stream.IntStream concat(java.util.stream.IntStream, java.util.stream.IntStream);
-    public abstract long count();
-    public abstract java.util.stream.IntStream distinct();
-    public static java.util.stream.IntStream empty();
-    public abstract java.util.stream.IntStream filter(java.util.function.IntPredicate);
-    public abstract java.util.OptionalInt findAny();
-    public abstract java.util.OptionalInt findFirst();
-    public abstract java.util.stream.IntStream flatMap(java.util.function.IntFunction);
-    public abstract void forEach(java.util.function.IntConsumer);
-    public abstract void forEachOrdered(java.util.function.IntConsumer);
-    public static java.util.stream.IntStream generate(java.util.function.IntSupplier);
-    public static java.util.stream.IntStream iterate(int, java.util.function.IntUnaryOperator);
-    public abstract java.util.PrimitiveIterator$OfInt iterator();
-    public java.util.Iterator iterator();
-    public abstract java.util.stream.IntStream limit(long);
-    public abstract java.util.stream.IntStream map(java.util.function.IntUnaryOperator);
-    public abstract java.util.stream.DoubleStream mapToDouble(java.util.function.IntToDoubleFunction);
-    public abstract java.util.stream.LongStream mapToLong(java.util.function.IntToLongFunction);
-    public abstract java.util.stream.Stream mapToObj(java.util.function.IntFunction);
-    public abstract java.util.OptionalInt max();
-    public abstract java.util.OptionalInt min();
-    public abstract boolean noneMatch(java.util.function.IntPredicate);
-    public static java.util.stream.IntStream of(int);
-    public static java.util.stream.IntStream of(int[]);
-    public abstract java.util.stream.IntStream parallel();
-    public java.util.stream.BaseStream parallel();
-    public abstract java.util.stream.IntStream peek(java.util.function.IntConsumer);
-    public static java.util.stream.IntStream range(int, int);
-    public static java.util.stream.IntStream rangeClosed(int, int);
-    public abstract int reduce(int, java.util.function.IntBinaryOperator);
-    public abstract java.util.OptionalInt reduce(java.util.function.IntBinaryOperator);
-    public abstract java.util.stream.IntStream sequential();
-    public java.util.stream.BaseStream sequential();
-    public abstract java.util.stream.IntStream skip(long);
-    public abstract java.util.stream.IntStream sorted();
-    public abstract java.util.Spliterator$OfInt spliterator();
-    public java.util.Spliterator spliterator();
-    public abstract int sum();
-    public abstract java.util.IntSummaryStatistics summaryStatistics();
-    public abstract int[] toArray();
-
-
-}
-
--keep class java.util.stream.IntStream$Builder {
-
-    public abstract void accept(int);
-    public java.util.stream.IntStream$Builder add(int);
-    public abstract java.util.stream.IntStream build();
-
-
-}
-
--keep class java.util.stream.LongStream {
-
-    public abstract boolean allMatch(java.util.function.LongPredicate);
-    public abstract boolean anyMatch(java.util.function.LongPredicate);
-    public abstract java.util.stream.DoubleStream asDoubleStream();
-    public abstract java.util.OptionalDouble average();
-    public abstract java.util.stream.Stream boxed();
-    public static java.util.stream.LongStream$Builder builder();
-    public abstract java.lang.Object collect(java.util.function.Supplier, java.util.function.ObjLongConsumer, java.util.function.BiConsumer);
-    public static java.util.stream.LongStream concat(java.util.stream.LongStream, java.util.stream.LongStream);
-    public abstract long count();
-    public abstract java.util.stream.LongStream distinct();
-    public static java.util.stream.LongStream empty();
-    public abstract java.util.stream.LongStream filter(java.util.function.LongPredicate);
-    public abstract java.util.OptionalLong findAny();
-    public abstract java.util.OptionalLong findFirst();
-    public abstract java.util.stream.LongStream flatMap(java.util.function.LongFunction);
-    public abstract void forEach(java.util.function.LongConsumer);
-    public abstract void forEachOrdered(java.util.function.LongConsumer);
-    public static java.util.stream.LongStream generate(java.util.function.LongSupplier);
-    public static java.util.stream.LongStream iterate(long, java.util.function.LongUnaryOperator);
-    public abstract java.util.PrimitiveIterator$OfLong iterator();
-    public java.util.Iterator iterator();
-    public abstract java.util.stream.LongStream limit(long);
-    public abstract java.util.stream.LongStream map(java.util.function.LongUnaryOperator);
-    public abstract java.util.stream.DoubleStream mapToDouble(java.util.function.LongToDoubleFunction);
-    public abstract java.util.stream.IntStream mapToInt(java.util.function.LongToIntFunction);
-    public abstract java.util.stream.Stream mapToObj(java.util.function.LongFunction);
-    public abstract java.util.OptionalLong max();
-    public abstract java.util.OptionalLong min();
-    public abstract boolean noneMatch(java.util.function.LongPredicate);
-    public static java.util.stream.LongStream of(long);
-    public static java.util.stream.LongStream of(long[]);
-    public abstract java.util.stream.LongStream parallel();
-    public java.util.stream.BaseStream parallel();
-    public abstract java.util.stream.LongStream peek(java.util.function.LongConsumer);
-    public static java.util.stream.LongStream range(long, long);
-    public static java.util.stream.LongStream rangeClosed(long, long);
-    public abstract long reduce(long, java.util.function.LongBinaryOperator);
-    public abstract java.util.OptionalLong reduce(java.util.function.LongBinaryOperator);
-    public abstract java.util.stream.LongStream sequential();
-    public java.util.stream.BaseStream sequential();
-    public abstract java.util.stream.LongStream skip(long);
-    public abstract java.util.stream.LongStream sorted();
-    public abstract java.util.Spliterator$OfLong spliterator();
-    public java.util.Spliterator spliterator();
-    public abstract long sum();
-    public abstract java.util.LongSummaryStatistics summaryStatistics();
-    public abstract long[] toArray();
-
-
-}
-
--keep class java.util.stream.LongStream$Builder {
-
-    public abstract void accept(long);
-    public java.util.stream.LongStream$Builder add(long);
-    public abstract java.util.stream.LongStream build();
-
-
-}
-
--keep class java.util.stream.Stream {
-
-    public abstract boolean allMatch(java.util.function.Predicate);
-    public abstract boolean anyMatch(java.util.function.Predicate);
-    public static java.util.stream.Stream$Builder builder();
-    public abstract java.lang.Object collect(java.util.function.Supplier, java.util.function.BiConsumer, java.util.function.BiConsumer);
-    public abstract java.lang.Object collect(java.util.stream.Collector);
-    public static java.util.stream.Stream concat(java.util.stream.Stream, java.util.stream.Stream);
-    public abstract long count();
-    public abstract java.util.stream.Stream distinct();
-    public static java.util.stream.Stream empty();
-    public abstract java.util.stream.Stream filter(java.util.function.Predicate);
-    public abstract java.util.Optional findAny();
-    public abstract java.util.Optional findFirst();
-    public abstract java.util.stream.Stream flatMap(java.util.function.Function);
-    public abstract java.util.stream.DoubleStream flatMapToDouble(java.util.function.Function);
-    public abstract java.util.stream.IntStream flatMapToInt(java.util.function.Function);
-    public abstract java.util.stream.LongStream flatMapToLong(java.util.function.Function);
-    public abstract void forEach(java.util.function.Consumer);
-    public abstract void forEachOrdered(java.util.function.Consumer);
-    public static java.util.stream.Stream generate(java.util.function.Supplier);
-    public static java.util.stream.Stream iterate(java.lang.Object, java.util.function.UnaryOperator);
-    public abstract java.util.stream.Stream limit(long);
-    public abstract java.util.stream.Stream map(java.util.function.Function);
-    public abstract java.util.stream.DoubleStream mapToDouble(java.util.function.ToDoubleFunction);
-    public abstract java.util.stream.IntStream mapToInt(java.util.function.ToIntFunction);
-    public abstract java.util.stream.LongStream mapToLong(java.util.function.ToLongFunction);
-    public abstract java.util.Optional max(java.util.Comparator);
-    public abstract java.util.Optional min(java.util.Comparator);
-    public abstract boolean noneMatch(java.util.function.Predicate);
-    public static java.util.stream.Stream of(java.lang.Object);
-    public static java.util.stream.Stream of(java.lang.Object[]);
-    public abstract java.util.stream.Stream peek(java.util.function.Consumer);
-    public abstract java.lang.Object reduce(java.lang.Object, java.util.function.BinaryOperator);
-    public abstract java.util.Optional reduce(java.util.function.BinaryOperator);
-    public abstract java.lang.Object reduce(java.lang.Object, java.util.function.BiFunction, java.util.function.BinaryOperator);
-    public abstract java.util.stream.Stream skip(long);
-    public abstract java.util.stream.Stream sorted();
-    public abstract java.util.stream.Stream sorted(java.util.Comparator);
-    public abstract java.lang.Object[] toArray();
-    public abstract java.lang.Object[] toArray(java.util.function.IntFunction);
-
-
-}
-
--keep class java.util.stream.Stream$Builder {
-
-    public abstract void accept(java.lang.Object);
-    public java.util.stream.Stream$Builder add(java.lang.Object);
-    public abstract java.util.stream.Stream build();
-
-
-}
-
--keep class javax.microedition.khronos.opengles.GL {
-
-
-
-}
-
--keep class javax.security.auth.Subject {
-    <init>();
-    <init>(boolean, java.util.Set, java.util.Set, java.util.Set);
-
-    public static java.lang.Object doAs(javax.security.auth.Subject, java.security.PrivilegedAction);
-    public static java.lang.Object doAs(javax.security.auth.Subject, java.security.PrivilegedExceptionAction);
-    public static java.lang.Object doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedAction, java.security.AccessControlContext);
-    public static java.lang.Object doAsPrivileged(javax.security.auth.Subject, java.security.PrivilegedExceptionAction, java.security.AccessControlContext);
-    public boolean equals(java.lang.Object);
-    public java.util.Set getPrincipals();
-    public java.util.Set getPrincipals(java.lang.Class);
-    public java.util.Set getPrivateCredentials();
-    public java.util.Set getPrivateCredentials(java.lang.Class);
-    public java.util.Set getPublicCredentials();
-    public java.util.Set getPublicCredentials(java.lang.Class);
-    public static javax.security.auth.Subject getSubject(java.security.AccessControlContext);
-    public int hashCode();
-    public boolean isReadOnly();
-    public void setReadOnly();
-    public java.lang.String toString();
-
-
-}
-
--keep class libcore.util.NativeAllocationRegistry {
-    <init>(java.lang.ClassLoader, long, long);
-
-    public static void applyFreeFunction(long, long);
-    public java.lang.Runnable registerNativeAllocation(java.lang.Object, long);
-    public java.lang.Runnable registerNativeAllocation(java.lang.Object, libcore.util.NativeAllocationRegistry$Allocator);
-
-
-}
-
--keep class libcore.util.NativeAllocationRegistry$Allocator {
-
-    public abstract long allocate();
-
-
-}
-
--keep class org.xmlpull.v1.XmlPullParser {
-
-    public abstract void defineEntityReplacementText(java.lang.String, java.lang.String);
-    public abstract int getAttributeCount();
-    public abstract java.lang.String getAttributeName(int);
-    public abstract java.lang.String getAttributeNamespace(int);
-    public abstract java.lang.String getAttributePrefix(int);
-    public abstract java.lang.String getAttributeType(int);
-    public abstract java.lang.String getAttributeValue(int);
-    public abstract java.lang.String getAttributeValue(java.lang.String, java.lang.String);
-    public abstract int getColumnNumber();
-    public abstract int getDepth();
-    public abstract int getEventType();
-    public abstract boolean getFeature(java.lang.String);
-    public abstract java.lang.String getInputEncoding();
-    public abstract int getLineNumber();
-    public abstract java.lang.String getName();
-    public abstract java.lang.String getNamespace(java.lang.String);
-    public abstract java.lang.String getNamespace();
-    public abstract int getNamespaceCount(int);
-    public abstract java.lang.String getNamespacePrefix(int);
-    public abstract java.lang.String getNamespaceUri(int);
-    public abstract java.lang.String getPositionDescription();
-    public abstract java.lang.String getPrefix();
-    public abstract java.lang.Object getProperty(java.lang.String);
-    public abstract java.lang.String getText();
-    public abstract char[] getTextCharacters(int[]);
-    public abstract boolean isAttributeDefault(int);
-    public abstract boolean isEmptyElementTag();
-    public abstract boolean isWhitespace();
-    public abstract int next();
-    public abstract int nextTag();
-    public abstract java.lang.String nextText();
-    public abstract int nextToken();
-    public abstract void require(int, java.lang.String, java.lang.String);
-    public abstract void setFeature(java.lang.String, boolean);
-    public abstract void setInput(java.io.Reader);
-    public abstract void setInput(java.io.InputStream, java.lang.String);
-    public abstract void setProperty(java.lang.String, java.lang.Object);
-
-
-    public static int CDSECT;
-    public static int COMMENT;
-    public static int DOCDECL;
-    public static int END_DOCUMENT;
-    public static int END_TAG;
-    public static int ENTITY_REF;
-    public static java.lang.String FEATURE_PROCESS_DOCDECL;
-    public static java.lang.String FEATURE_PROCESS_NAMESPACES;
-    public static java.lang.String FEATURE_REPORT_NAMESPACE_ATTRIBUTES;
-    public static java.lang.String FEATURE_VALIDATION;
-    public static int IGNORABLE_WHITESPACE;
-    public static java.lang.String NO_NAMESPACE;
-    public static int PROCESSING_INSTRUCTION;
-    public static int START_DOCUMENT;
-    public static int START_TAG;
-    public static int TEXT;
-    public static java.lang.String[] TYPES;
-}
-
--keep class org.xmlpull.v1.XmlPullParserException {
-    <init>(java.lang.String);
-    <init>(java.lang.String, org.xmlpull.v1.XmlPullParser, java.lang.Throwable);
-
-    public int getColumnNumber();
-    public java.lang.Throwable getDetail();
-    public int getLineNumber();
-    public void printStackTrace();
-
-
-    protected int column;
-    protected java.lang.Throwable detail;
-    protected int row;
-}
-
--keep class org.xmlpull.v1.XmlSerializer {
-
-    public abstract org.xmlpull.v1.XmlSerializer attribute(java.lang.String, java.lang.String, java.lang.String);
-    public abstract void cdsect(java.lang.String);
-    public abstract void comment(java.lang.String);
-    public abstract void docdecl(java.lang.String);
-    public abstract void endDocument();
-    public abstract org.xmlpull.v1.XmlSerializer endTag(java.lang.String, java.lang.String);
-    public abstract void entityRef(java.lang.String);
-    public abstract void flush();
-    public abstract int getDepth();
-    public abstract boolean getFeature(java.lang.String);
-    public abstract java.lang.String getName();
-    public abstract java.lang.String getNamespace();
-    public abstract java.lang.String getPrefix(java.lang.String, boolean);
-    public abstract java.lang.Object getProperty(java.lang.String);
-    public abstract void ignorableWhitespace(java.lang.String);
-    public abstract void processingInstruction(java.lang.String);
-    public abstract void setFeature(java.lang.String, boolean);
-    public abstract void setOutput(java.io.OutputStream, java.lang.String);
-    public abstract void setOutput(java.io.Writer);
-    public abstract void setPrefix(java.lang.String, java.lang.String);
-    public abstract void setProperty(java.lang.String, java.lang.Object);
-    public abstract void startDocument(java.lang.String, java.lang.Boolean);
-    public abstract org.xmlpull.v1.XmlSerializer startTag(java.lang.String, java.lang.String);
-    public abstract org.xmlpull.v1.XmlSerializer text(java.lang.String);
-    public abstract org.xmlpull.v1.XmlSerializer text(char[], int, int);
-
-
-}
-
--keep class sun.nio.ch.Interruptible {
-
-    public abstract void interrupt(java.lang.Thread);
-
-
-}
-
diff --git a/car-support-lib/res/values/strings.xml b/car-support-lib/res/values/strings.xml
deleted file mode 100644
index ab697e1..0000000
--- a/car-support-lib/res/values/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources>
-	<string name="resource_warning">Please do not check in any ui resources here.</string>
-</resources>
diff --git a/car-support-lib/src/android/support/car/Car.java b/car-support-lib/src/android/support/car/Car.java
deleted file mode 100644
index c12b13c..0000000
--- a/car-support-lib/src/android/support/car/Car.java
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-import android.content.Context;
-import android.os.Handler;
-import android.os.Looper;
-import android.support.car.content.pm.CarPackageManager;
-import android.support.car.hardware.CarSensorManager;
-import android.support.car.media.CarAudioManager;
-import android.support.car.navigation.CarNavigationStatusManager;
-import android.util.Log;
-
-import androidx.annotation.IntDef;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Top-level car API that provides access to all car services and data available in the platform.
- * <p/>
- * Use one of the createCar methods to create a new instance of the Car api.  The
- * {@link CarConnectionCallback} will respond with an {@link CarConnectionCallback#onConnected(Car)}
- * or {@link CarConnectionCallback#onDisconnected(Car)} message.  Nothing can be done with the
- * car until onConnected is called.  When the car disconnects then reconnects you may still use
- * the Car object but any manages retrieved from it should be considered invalid and will need to
- * be retried. Also, you must call {@link #disconnect} before an instance of Car goes out of scope
- * to avoid leaking resources.
- *
- * <p/>
- * Once connected, {@link #getCarManager(String)} or {@link #getCarManager(Class)} can be used to
- * retrieve a manager.  This is patterned after how one would retrieve a service from
- * {@link Context#getSystemService(String)} or {@link Context#getSystemService(Class)}.  Once
- * again if the car is disconnected you'll want to get new versions of these managers.
- */
-public class Car {
-
-    private static final String TAG = "CAR.SUPPORT.LIB.CAR";
-    /**
-     * Service name for {@link CarSensorManager}, to be used in {@link #getCarManager(String)}.
-     */
-    public static final String SENSOR_SERVICE = "sensor";
-
-    /**
-     * Service name for {@link CarInfoManager}, to be used in {@link #getCarManager(String)}.
-     */
-    public static final String INFO_SERVICE = "info";
-
-    /**
-     * Service name for {@link CarAppFocusManager}.
-     */
-    public static final String APP_FOCUS_SERVICE = "app_focus";
-
-    /**
-     * Service name for {@link CarPackageManager}.
-     * @hide
-     */
-    public static final String PACKAGE_SERVICE = "package";
-
-    /**
-     * Service name for {@link CarAudioManager}.
-     */
-    public static final String AUDIO_SERVICE = "audio";
-    /**
-     * Service name for {@link CarNavigationStatusManager}.
-     * @hide
-     */
-    public static final String CAR_NAVIGATION_SERVICE = "car_navigation_service";
-    /**
-     * Service name for {@link CarNavigationStatusManager}.
-     */
-    public static final String NAVIGATION_STATUS_SERVICE = "car_navigation_service";
-
-    // TODO(jthol) move into a more robust registry implementation
-    private static final Map<Class, String> CLASS_TO_SERVICE_NAME;
-    static{
-        Map<Class, String> mapping = new HashMap<>();
-        mapping.put(CarSensorManager.class, SENSOR_SERVICE);
-        mapping.put(CarInfoManager.class, INFO_SERVICE);
-        mapping.put(CarAppFocusManager.class, APP_FOCUS_SERVICE);
-        mapping.put(CarPackageManager.class, PACKAGE_SERVICE);
-        mapping.put(CarAudioManager.class, AUDIO_SERVICE);
-        mapping.put(CarNavigationStatusManager.class, NAVIGATION_STATUS_SERVICE);
-
-        CLASS_TO_SERVICE_NAME = Collections.unmodifiableMap(mapping);
-    }
-
-
-    /**
-     * Type of car connection: car emulator, no physical connection.
-     * @hide
-     */
-    public static final int CONNECTION_TYPE_EMULATOR = 0;
-    /**
-     * Type of car connection: connected to a car via USB.
-     * @hide
-     */
-    public static final int CONNECTION_TYPE_USB = 1;
-    /**
-     * Type of car connection: connected to a car via Wi-Fi.
-     * @hide
-     */
-    public static final int CONNECTION_TYPE_WIFI = 2;
-    /**
-     * Type of car connection: on-device car emulator, for development (such as Local Head Unit).
-     * @hide
-     */
-    public static final int CONNECTION_TYPE_ON_DEVICE_EMULATOR = 3;
-    /**
-     * Type of car connection: car emulator, connected over ADB (such as Desktop Head Unit).
-     * @hide
-     */
-    public static final int CONNECTION_TYPE_ADB_EMULATOR = 4;
-    /**
-     * Type of car connection: platform runs directly in car.
-     * @hide
-     */
-    public static final int CONNECTION_TYPE_EMBEDDED = 5;
-
-    /**
-     * Unknown type (the support lib is likely out-of-date).
-     * @hide
-     */
-    public static final int CONNECTION_TYPE_UNKNOWN = -1;
-
-    private static final Set<Integer> CONNECTION_TYPES = new HashSet<>();
-    static {
-        CONNECTION_TYPES.add(CONNECTION_TYPE_ADB_EMULATOR);
-        CONNECTION_TYPES.add(CONNECTION_TYPE_USB);
-        CONNECTION_TYPES.add(CONNECTION_TYPE_WIFI);
-        CONNECTION_TYPES.add(CONNECTION_TYPE_ON_DEVICE_EMULATOR);
-        CONNECTION_TYPES.add(CONNECTION_TYPE_ADB_EMULATOR);
-        CONNECTION_TYPES.add(CONNECTION_TYPE_EMBEDDED);
-    }
-
-    /** @hide */
-    @IntDef({CONNECTION_TYPE_EMULATOR, CONNECTION_TYPE_USB, CONNECTION_TYPE_WIFI,
-            CONNECTION_TYPE_ON_DEVICE_EMULATOR, CONNECTION_TYPE_ADB_EMULATOR,
-            CONNECTION_TYPE_EMBEDDED, CONNECTION_TYPE_UNKNOWN})
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface ConnectionType {
-    }
-
-    /**
-     * Permission necessary to access car mileage information.
-     * @hide
-     */
-    public static final String PERMISSION_MILEAGE = "android.car.permission.CAR_MILEAGE";
-    /**
-     * Permission necessary to access car's energy information.
-     * @hide
-     */
-    public static final String PERMISSION_ENERGY = "android.car.permission.CAR_ENERGY";
-    /**
-     * Permission necessary to access car speed.
-     * @hide
-     */
-    public static final String PERMISSION_SPEED = "android.car.permission.CAR_SPEED";
-    /**
-     * Permission necessary to access car dynamics state.
-     * @hide
-     */
-    public static final String PERMISSION_VEHICLE_DYNAMICS_STATE =
-            "android.car.permission.VEHICLE_DYNAMICS_STATE";
-    /**
-     * Permission necessary to access a car-specific communication channel.
-     */
-    public static final String PERMISSION_VENDOR_EXTENSION =
-            "android.car.permission.CAR_VENDOR_EXTENSION";
-    /**
-     * Permission necessary to use {@link android.car.navigation.CarNavigationStatusManager}.
-     */
-    public static final String PERMISSION_CAR_NAVIGATION_MANAGER =
-            "android.car.permission.PERMISSION_CAR_NAVIGATION_MANAGER";
-
-
-    /**
-     * PackageManager.FEATURE_AUTOMOTIVE from M. But redefine here to support L.
-     */
-    private static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
-
-    /**
-     * {@link CarServiceLoader} implementation for projected mode. Available only when the
-     * projected client library is linked.
-     */
-    private static final String PROJECTED_CAR_SERVICE_LOADER =
-            "com.google.android.apps.auto.sdk.service.CarServiceLoaderGms";
-    /**
-     * Permission necessary to change car audio volume through {@link CarAudioManager}.
-     * @hide
-     */
-    public static final String PERMISSION_CAR_CONTROL_AUDIO_VOLUME =
-            "android.car.permission.CAR_CONTROL_AUDIO_VOLUME";
-
-    private final Context mContext;
-    private final Handler mEventHandler;
-    private static final int STATE_DISCONNECTED = 0;
-    private static final int STATE_CONNECTING = 1;
-    private static final int STATE_CONNECTED = 2;
-    // @GuardedBy("this")
-    private int mConnectionState;
-
-    private final CarServiceLoader.CarConnectionCallbackProxy mCarConnectionCallbackProxy =
-            new CarServiceLoader.CarConnectionCallbackProxy() {
-                @Override
-                public void onConnected() {
-                    synchronized (Car.this) {
-                        mConnectionState = STATE_CONNECTED;
-                    }
-                    mCarConnectionCallback.onConnected(Car.this);
-                }
-
-                @Override
-                public void onDisconnected() {
-                    synchronized (Car.this) {
-                        if (mConnectionState == STATE_DISCONNECTED) {
-                            return;
-                        }
-                        tearDownCarManagers();
-                        mConnectionState = STATE_DISCONNECTED;
-                    }
-                    mCarConnectionCallback.onDisconnected(Car.this);
-                }
-            };
-
-    private final CarConnectionCallback mCarConnectionCallback;
-    private final Object mCarManagerLock = new Object();
-    //@GuardedBy("mCarManagerLock")
-    private final HashMap<String, CarManagerBase> mServiceMap = new HashMap<>();
-    private final CarServiceLoader mCarServiceLoader;
-
-
-    /**
-     * A factory method that creates a Car instance with the given {@code Looper}.
-     *
-     * @param context The current app context.
-     * @param carConnectionCallback Receives information when the Car Service is started and
-     * stopped.
-     * @param handler The handler on which the callback should execute, or null to execute on the
-     * service's main thread. Note the service connection listener is always on the main
-     * thread regardless of the handler given.
-     * @return Car instance if system is in car environment; returns {@code null} otherwise.
-     */
-    public static Car createCar(Context context,
-            CarConnectionCallback carConnectionCallback, @Nullable Handler handler) {
-        try {
-            return new Car(context, carConnectionCallback, handler);
-        } catch (IllegalArgumentException e) {
-            // Expected when Car Service loader is not available.
-            Log.w(TAG, "Car failed to be created", e);
-        }
-        return null;
-    }
-
-    /**
-     * A factory method that creates Car instance using the main thread {@link Handler}.
-     *
-     * @see #createCar(Context, CarConnectionCallback, Handler)
-     */
-    public static Car createCar(Context context,
-            CarConnectionCallback carConnectionCallback) {
-        return createCar(context, carConnectionCallback, null);
-    }
-
-    private Car(Context context, CarConnectionCallback carConnectionCallback,
-            @Nullable Handler handler) {
-        mContext = context;
-        mCarConnectionCallback = carConnectionCallback;
-        if (handler == null) {
-            Looper looper = Looper.getMainLooper();
-            handler = new Handler(looper);
-        }
-        mEventHandler = handler;
-
-        if (mContext.getPackageManager().hasSystemFeature(FEATURE_AUTOMOTIVE)) {
-            mCarServiceLoader =
-                    new CarServiceLoaderEmbedded(context, mCarConnectionCallbackProxy,
-                            mEventHandler);
-        } else {
-            mCarServiceLoader = loadCarServiceLoader(PROJECTED_CAR_SERVICE_LOADER, context,
-                    mCarConnectionCallbackProxy, mEventHandler);
-        }
-    }
-
-    private CarServiceLoader loadCarServiceLoader(String carServiceLoaderClassName, Context context,
-            CarServiceLoader.CarConnectionCallbackProxy carConnectionCallbackProxy,
-            Handler eventHandler) throws IllegalArgumentException {
-        Class<? extends CarServiceLoader> carServiceLoaderClass = null;
-        try {
-            carServiceLoaderClass =
-                    Class.forName(carServiceLoaderClassName).asSubclass(CarServiceLoader.class);
-        } catch (ClassNotFoundException e) {
-            throw new IllegalArgumentException(
-                    "Cannot find CarServiceLoader implementation:" + carServiceLoaderClassName, e);
-        }
-        Constructor<? extends CarServiceLoader> ctor;
-        try {
-            ctor = carServiceLoaderClass.getDeclaredConstructor(Context.class,
-                    CarServiceLoader.CarConnectionCallbackProxy.class, Handler.class);
-        } catch (NoSuchMethodException e) {
-            throw new IllegalArgumentException("Cannot construct CarServiceLoader, no constructor: "
-                    + carServiceLoaderClassName, e);
-        }
-        try {
-            return ctor.newInstance(context, carConnectionCallbackProxy, eventHandler);
-        } catch (InstantiationException | IllegalAccessException | IllegalArgumentException
-                | InvocationTargetException e) {
-            throw new IllegalArgumentException(
-                    "Cannot construct CarServiceLoader, constructor failed for "
-                            + carServiceLoaderClass.getName(), e);
-        }
-    }
-
-    /**
-     * Car constructor when CarServiceLoader is already available.
-     *
-     * @param serviceLoader must be non-null and connected or {@link CarNotConnectedException} will
-     * be thrown.
-     * @hide
-     */
-    public Car(@NonNull CarServiceLoader serviceLoader) throws CarNotConnectedException {
-        if (!serviceLoader.isConnected()) {
-            throw new CarNotConnectedException();
-        }
-        mCarServiceLoader = serviceLoader;
-        mEventHandler = serviceLoader.getEventHandler();
-        mContext = serviceLoader.getContext();
-
-        mConnectionState = STATE_CONNECTED;
-        mCarConnectionCallback = null;
-    }
-
-    /**
-     * Connect to Car Service. Can be called while disconnected.
-     *
-     * @throws IllegalStateException if the car is connected or still trying to connect
-     * from previous calls.
-     */
-    public void connect() throws IllegalStateException {
-        synchronized (this) {
-            if (mConnectionState != STATE_DISCONNECTED) {
-                throw new IllegalStateException("already connected or connecting");
-            }
-            mConnectionState = STATE_CONNECTING;
-            mCarServiceLoader.connect();
-        }
-    }
-
-    /**
-     * Disconnect from Car Service. Can be called while disconnected. After disconnect is
-     * called, all Car*Managers from this instance become invalid, and {@link
-     * Car#getCarManager(String)} returns a different instance if connected again.
-     */
-    public void disconnect() {
-        synchronized (this) {
-            tearDownCarManagers();
-            mConnectionState = STATE_DISCONNECTED;
-            mCarServiceLoader.disconnect();
-        }
-    }
-
-    /**
-     * @return Returns {@code true} if this object is connected to the service; {@code false}
-     * otherwise.
-     */
-    public boolean isConnected() {
-        synchronized (this) {
-            return mConnectionState == STATE_CONNECTED;
-        }
-    }
-
-    /**
-     * @return Returns {@code true} if this object is still connecting to the service.
-     */
-    public boolean isConnecting() {
-        synchronized (this) {
-            return mConnectionState == STATE_CONNECTING;
-        }
-    }
-
-    /**
-     * Get a car-specific manager. This is modeled after {@link Context#getSystemService(String)}.
-     * The returned {@link Object} should be type cast to the desired manager. For example,
-     * to get the sensor service, use the following:
-     * <pre>{@code CarSensorManager sensorManager =
-     *     (CarSensorManager) car.getCarManager(Car.SENSOR_SERVICE);}</pre>
-     *
-     * @param serviceName Name of service to create, for example {@link #SENSOR_SERVICE}.
-     * @return The requested service manager or null if the service is not available.
-     */
-    public Object getCarManager(String serviceName)
-            throws CarNotConnectedException {
-        Object manager = null;
-        synchronized (mCarManagerLock) {
-            manager = mServiceMap.get(serviceName);
-            if (manager == null) {
-                manager = mCarServiceLoader.getCarManager(serviceName);
-            }
-            // do not store if it is not CarManagerBase. This can happen when system version
-            // is retrieved from this call.
-            if (manager != null && manager instanceof CarManagerBase) {
-                mServiceMap.put(serviceName, (CarManagerBase) manager);
-            }
-        }
-        return manager;
-    }
-
-    /**
-     * Get a car-specific manager. This is modeled after {@link Context#getSystemService(Class)}.
-     * The returned service will be type cast to the desired manager. For example,
-     * to get the sensor service, use the following:
-     * <pre>{@code CarSensorManager sensorManager = car.getCarManager(CarSensorManager.class);
-     * }</pre>
-     *
-     * @param serviceClass Class: The class of the desired service. For
-     * example {@link CarSensorManager}.
-     * @return The service or null if the class is not a supported car service.
-     */
-    public <T> T getCarManager(Class<T> serviceClass) throws CarNotConnectedException {
-        // TODO(jthol) port to a more robust registry implementation
-        String serviceName = CLASS_TO_SERVICE_NAME.get(serviceClass);
-        return (serviceName == null) ? null : (T) getCarManager(serviceName);
-    }
-
-    /**
-     * Return the type of currently connected car. This should only be used for testing scenarios
-     *
-     * @return One of {@link #CONNECTION_TYPE_USB}, {@link #CONNECTION_TYPE_WIFI},
-     * {@link #CONNECTION_TYPE_EMBEDDED}, {@link #CONNECTION_TYPE_ON_DEVICE_EMULATOR},
-     * {@link #CONNECTION_TYPE_ADB_EMULATOR},
-     * {@link #CONNECTION_TYPE_UNKNOWN}.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     * @hide
-     */
-    @ConnectionType
-    public int getCarConnectionType() throws CarNotConnectedException {
-        int carConnectionType = mCarServiceLoader.getCarConnectionType();
-        if (!CONNECTION_TYPES.contains(carConnectionType)){
-            return CONNECTION_TYPE_UNKNOWN;
-        }
-        return carConnectionType;
-    }
-
-    private void tearDownCarManagers() {
-        synchronized (mCarManagerLock) {
-            for (CarManagerBase manager : mServiceMap.values()) {
-                manager.onCarDisconnected();
-            }
-            mServiceMap.clear();
-        }
-    }
-}
diff --git a/car-support-lib/src/android/support/car/CarAppFocusManager.java b/car-support-lib/src/android/support/car/CarAppFocusManager.java
deleted file mode 100644
index 395ff61..0000000
--- a/car-support-lib/src/android/support/car/CarAppFocusManager.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-import androidx.annotation.IntDef;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Enables applications to set and listen for the current application focus (such as active
- * navigation). Typically, only one such application should be running at a time. When another
- * application gets ownership of a given APP_FOCUS_TYPE_*, the old app should stop using the
- * feature represented by the focus type.
- */
-public abstract class CarAppFocusManager implements CarManagerBase {
-    /**
-     * Receives notifications when app focus changes.
-     */
-    public interface OnAppFocusChangedListener {
-        /**
-         * Indicates the application focus has changed. The {@link CarAppFocusManager} instance
-         * causing the change does not get this notification.
-         * @param manager the {@link CarAppFocusManager} this listener is attached to.  Useful if
-         * the app wished to unregister the listener.
-         * @param appType application type for which status changed
-         * @param active returns {@code true} if active
-         */
-        void onAppFocusChanged(CarAppFocusManager manager, @AppFocusType int appType,
-                boolean active);
-    }
-
-    /**
-     * Receives notifications when the application focus ownership changes.
-     */
-    public interface OnAppFocusOwnershipCallback {
-        /**
-         * Lost ownership for the focus, which occurs when another app has set the focus.
-         * The app losing focus should stop the action associated with the focus.
-         * For example, a navigation app running active navigation should stop navigation
-         * upon getting this for {@link CarAppFocusManager#APP_FOCUS_TYPE_NAVIGATION}.
-         * @param manager the {@link CarAppFocusManager} this callback is attached to.  Useful if
-         * the app wishes to unregister the callback.
-         * @param appType
-         */
-        void onAppFocusOwnershipLost(CarAppFocusManager manager, @AppFocusType int appType);
-
-        /**
-         * Granted ownership for the focus, which happens after app has requested the focus.
-         * The app getting focus can start the action associated with the focus.
-         * For example, navigation app can start navigation
-         * upon getting this for {@link CarAppFocusManager#APP_FOCUS_TYPE_NAVIGATION}.
-         * @param manager the {@link CarAppFocusManager} this callback is attached to.  Useful if
-         * the app wishes to unregister the callback.
-         * @param appType
-         */
-        void onAppFocusOwnershipGranted(CarAppFocusManager manager, @AppFocusType int appType);
-    }
-
-    /**
-     * Represents navigation focus.
-     * <p/>
-     * When a program loses navigation focus they should no longer send navigation data to the
-     * instrument cluster via the
-     * {@link android.support.car.navigation.CarNavigationStatusManager}.  Furthermore they
-     * should stop sending audio updates and any notifications regarding navigation.
-     * Essentially, these apps should stop all navigation activities as this means another app is
-     * navigating.
-     */
-    public static final int APP_FOCUS_TYPE_NAVIGATION = 1;
-    /**
-     * Represents voice command focus.
-     * @hide
-     */
-    public static final int APP_FOCUS_TYPE_VOICE_COMMAND = 2;
-    /**
-     * Update this after adding a new app type.
-     * @hide
-     */
-    public static final int APP_FOCUS_TYPE_MAX = 2;
-
-    /** @hide */
-    @IntDef({
-        APP_FOCUS_TYPE_NAVIGATION,
-        APP_FOCUS_TYPE_VOICE_COMMAND
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface AppFocusType {}
-
-    /**
-     * A failed focus change request.
-     */
-    public static final int APP_FOCUS_REQUEST_FAILED = 0;
-    /**
-     * A successful focus change request.
-     */
-    public static final int APP_FOCUS_REQUEST_SUCCEEDED = 1;
-
-    /** @hide */
-    @IntDef({
-        APP_FOCUS_REQUEST_FAILED,
-        APP_FOCUS_REQUEST_SUCCEEDED
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface AppFocusRequestResult {}
-
-    /**
-     * Register listener to monitor app focus changes.
-     * Multiple listeners can be registered for a single focus and the same listener can be used
-     * for multiple focuses.
-     * @param listener Listener to register for focus events.
-     * @param appType Application type to get notification for.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract void addFocusListener(OnAppFocusChangedListener listener,
-            @AppFocusType int appType) throws CarNotConnectedException;
-
-    /**
-     * Unregister listener for app type and stop listening to focus change events.
-     * @param listener Listener to unregister from focus events.
-     * @param appType Application type to get notification for.
-     */
-    public abstract void removeFocusListener(OnAppFocusChangedListener listener,
-            @AppFocusType int appType);
-
-    /**
-     * Unregister listener for all app types and stop listening to focus change events.
-     * @param listener Listener to unregister from focus events.
-     */
-    public abstract void removeFocusListener(OnAppFocusChangedListener listener);
-
-    /**
-     * Check if the current process owns the given focus.
-     * @param appType Application type.
-     * @param callback Callback that was used to request ownership.
-     * @return Returns {@code true} if current callback owns focus for application type.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract boolean isOwningFocus(@AppFocusType int appType,
-            OnAppFocusOwnershipCallback callback) throws CarNotConnectedException;
-
-    /**
-     * Request application focus.
-     * <p>
-     * By requesting this, the app gains the focus for this appType
-     * <p>
-     * This call is asynchronous, focus may not be granted immediately.
-     * {@link OnAppFocusOwnershipCallback#onAppFocusOwnershipGranted(CarAppFocusManager, int)} will
-     * be sent to the app when focus is granted.
-     * <p>
-     * {@link OnAppFocusOwnershipCallback#onAppFocusOwnershipLost(CarAppFocusManager, int)}
-     * will be sent to the app that currently holds focus.
-     * The foreground app will have higher priority; other apps cannot
-     * set the same focus while owner is in foreground.
-     * <p>
-     * The callback provided here is the identifier for the focus.  Apps need to pass it into
-     * other app focus methods such as {@link #isOwningFocus(int, OnAppFocusOwnershipCallback)}
-     * or {@link #abandonAppFocus(OnAppFocusOwnershipCallback)}.
-     *
-     * @param appType Application type to request focus for.
-     * @param ownershipCallback Ownership callback to request app focus for. Cannot be null.
-     *
-     * @return {@link #APP_FOCUS_REQUEST_FAILED} or {@link #APP_FOCUS_REQUEST_SUCCEEDED}
-     * @throws SecurityException if owner cannot be changed.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract int requestAppFocus(int appType,
-            OnAppFocusOwnershipCallback ownershipCallback)
-            throws SecurityException, CarNotConnectedException;
-
-    /**
-     * Abandon the given focus (mark it as inactive).
-     * @param ownershipCallback Ownership callback to abandon app focus for. Cannot be null.
-     * @param appType Application type to abandon focus for.
-     */
-    public abstract void abandonAppFocus(OnAppFocusOwnershipCallback ownershipCallback,
-            @AppFocusType int appType);
-
-    /**
-     * Abandon all focuses (mark them as inactive).
-     * @param ownershipCallback Ownership callback to abandon focus for. Cannot be null.
-     */
-    public abstract void abandonAppFocus(OnAppFocusOwnershipCallback ownershipCallback);
-}
diff --git a/car-support-lib/src/android/support/car/CarAppFocusManagerEmbedded.java b/car-support-lib/src/android/support/car/CarAppFocusManagerEmbedded.java
deleted file mode 100644
index e866f4b..0000000
--- a/car-support-lib/src/android/support/car/CarAppFocusManagerEmbedded.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Implementation of {@link CarAppFocusManager} for embedded.
- * @hide
- */
-public class CarAppFocusManagerEmbedded extends CarAppFocusManager {
-
-    private final android.car.CarAppFocusManager mManager;
-
-    private final Map<OnAppFocusChangedListener, OnAppFocusChangedListenerProxy>
-            mChangeListeners = new HashMap<>();
-    private final Map<OnAppFocusOwnershipCallback, OnAppFocusOwnershipCallbackProxy>
-            mOwnershipCallbacks = new HashMap<>();
-
-    /**
-     * @hide
-     */
-    CarAppFocusManagerEmbedded(Object manager) {
-        mManager = (android.car.CarAppFocusManager) manager;
-    }
-
-    @Override
-    public void addFocusListener(OnAppFocusChangedListener listener, int appType)
-            throws CarNotConnectedException {
-        if (listener == null) {
-            throw new IllegalArgumentException("null listener");
-        }
-        OnAppFocusChangedListenerProxy proxy;
-        synchronized (this) {
-            proxy = mChangeListeners.get(listener);
-            if (proxy == null) {
-                proxy = new OnAppFocusChangedListenerProxy(this, listener);
-                mChangeListeners.put(listener, proxy);
-            }
-        }
-        try {
-            mManager.addFocusListener(proxy, appType);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public void removeFocusListener(OnAppFocusChangedListener listener, int appType) {
-        OnAppFocusChangedListenerProxy proxy;
-        synchronized (this) {
-            proxy = mChangeListeners.get(listener);
-            if (proxy == null) {
-                return;
-            }
-        }
-        mManager.removeFocusListener(proxy, appType);
-    }
-
-    @Override
-    public void removeFocusListener(OnAppFocusChangedListener listener) {
-        OnAppFocusChangedListenerProxy proxy;
-        synchronized (this) {
-            proxy = mChangeListeners.remove(listener);
-            if (proxy == null) {
-                return;
-            }
-        }
-        mManager.removeFocusListener(proxy);
-    }
-
-    @Override
-    public boolean isOwningFocus(int appType, OnAppFocusOwnershipCallback listener)
-            throws CarNotConnectedException {
-        OnAppFocusOwnershipCallbackProxy proxy;
-        synchronized (this) {
-            proxy = mOwnershipCallbacks.get(listener);
-            if (proxy == null) {
-                return false;
-            }
-        }
-        try {
-            return mManager.isOwningFocus(proxy, appType);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public int requestAppFocus(int appType, OnAppFocusOwnershipCallback ownershipCallback)
-            throws IllegalStateException, SecurityException, CarNotConnectedException {
-        if (ownershipCallback == null) {
-            throw new IllegalArgumentException("null listener");
-        }
-        OnAppFocusOwnershipCallbackProxy proxy;
-        synchronized (this) {
-            proxy = mOwnershipCallbacks.get(ownershipCallback);
-            if (proxy == null) {
-                proxy = new OnAppFocusOwnershipCallbackProxy(this, ownershipCallback);
-                mOwnershipCallbacks.put(ownershipCallback, proxy);
-            }
-        }
-        try {
-            return mManager.requestAppFocus(appType, proxy);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public void abandonAppFocus(OnAppFocusOwnershipCallback ownershipCallback, int appType) {
-        if (ownershipCallback == null) {
-            throw new IllegalArgumentException("null listener");
-        }
-        OnAppFocusOwnershipCallbackProxy proxy;
-        synchronized (this) {
-            proxy = mOwnershipCallbacks.get(ownershipCallback);
-            if (proxy == null) {
-                return;
-            }
-        }
-        mManager.abandonAppFocus(proxy, appType);
-    }
-
-    @Override
-    public void abandonAppFocus(OnAppFocusOwnershipCallback ownershipCallback) {
-        if (ownershipCallback == null) {
-            throw new IllegalArgumentException("null listener");
-        }
-        OnAppFocusOwnershipCallbackProxy proxy;
-        synchronized (this) {
-            proxy = mOwnershipCallbacks.get(ownershipCallback);
-            if (proxy == null) {
-                return;
-            }
-        }
-        mManager.abandonAppFocus(proxy);
-    }
-
-    @Override
-    public void onCarDisconnected() {
-        // nothing to do
-    }
-
-    private static class OnAppFocusChangedListenerProxy
-            implements android.car.CarAppFocusManager.OnAppFocusChangedListener {
-
-        private final OnAppFocusChangedListener mListener;
-        private final CarAppFocusManager mManager;
-
-        OnAppFocusChangedListenerProxy(CarAppFocusManager manager,
-                OnAppFocusChangedListener listener) {
-            mManager = manager;
-            mListener = listener;
-        }
-
-        @Override
-        public void onAppFocusChanged(int appType, boolean active) {
-            mListener.onAppFocusChanged(mManager, appType, active);
-        }
-    }
-
-    private static class OnAppFocusOwnershipCallbackProxy
-            implements android.car.CarAppFocusManager.OnAppFocusOwnershipCallback {
-
-        private final OnAppFocusOwnershipCallback mListener;
-        private final CarAppFocusManager mManager;
-
-
-        OnAppFocusOwnershipCallbackProxy(CarAppFocusManager manager,
-                OnAppFocusOwnershipCallback listener) {
-            mListener = listener;
-            mManager = manager;
-        }
-
-        @Override
-        public void onAppFocusOwnershipLost(int focusType) {
-            mListener.onAppFocusOwnershipLost(mManager, focusType);
-        }
-
-        @Override
-        public void onAppFocusOwnershipGranted(int focusType) {
-            mListener.onAppFocusOwnershipGranted(mManager, focusType);
-        }
-    }
-}
diff --git a/car-support-lib/src/android/support/car/CarConnectionCallback.java b/car-support-lib/src/android/support/car/CarConnectionCallback.java
deleted file mode 100644
index f32f735..0000000
--- a/car-support-lib/src/android/support/car/CarConnectionCallback.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-/**
- * Listener for monitoring car connection status.
- * Callbacks are called from the looper specified when constructing {@link Car}.
- */
-public abstract class CarConnectionCallback {
-    /**
-     * Called when the Car has been connected. Does not guarantee the car is still connected
-     * while this callback is running, so {@link CarNotConnectedException}s may still be
-     * thrown from {@link Car} method calls.
-     * @param car the car with which this callback is registered.
-     */
-    public abstract void onConnected(Car car);
-    /**
-     * Called when the Car has been disconnected.
-     * @param car the car with which this callback is registered.
-     */
-    public abstract void onDisconnected(Car car);
-}
diff --git a/car-support-lib/src/android/support/car/CarInfoManager.java b/car-support-lib/src/android/support/car/CarInfoManager.java
deleted file mode 100644
index 7a29339..0000000
--- a/car-support-lib/src/android/support/car/CarInfoManager.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-import androidx.annotation.IntDef;
-import androidx.annotation.Nullable;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Utility to retrieve various static information from car.
- */
-public abstract class CarInfoManager implements CarManagerBase {
-
-    /** Location of the driver is unknown. */
-    public static final int DRIVER_SIDE_UNKNOWN = 0;
-    /** Location of the driver: left. */
-    public static final int DRIVER_SIDE_LEFT   = 1;
-    /** Location of the driver: right. */
-    public static final int DRIVER_SIDE_RIGHT  = 2;
-    /** Location of the driver: center. */
-    public static final int DRIVER_SIDE_CENTER = 3;
-
-    /** @hide */
-    @IntDef({
-        DRIVER_SIDE_UNKNOWN,
-        DRIVER_SIDE_LEFT,
-        DRIVER_SIDE_RIGHT,
-        DRIVER_SIDE_CENTER
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface DriverSide {}
-
-    /**
-     * Return manufacturer of the car.
-     * @return null if information is not available.
-     */
-    public abstract @Nullable String getManufacturer() throws CarNotConnectedException;
-
-    /**
-     * Return model name of the car. This information may not necessarily allow distinguishing
-     * different car models as the same name may be used for different cars depending on
-     * manufacturers.
-     * @return null if information is not available.
-     */
-    public abstract @Nullable String getModel() throws CarNotConnectedException;
-
-    /**
-     * Return model year of the car in AC.
-     * @return null if information is not available.
-     */
-    public abstract @Nullable String getModelYear() throws CarNotConnectedException;
-
-    /**
-     * Return unique identifier for the car. This is not VIN, and id is persistent until user
-     * resets it.
-     * @return null if information is not available.
-     */
-    public abstract @Nullable String getVehicleId() throws CarNotConnectedException;
-
-    /**
-     * Return manufacturer of the head unit.
-     * @return null if information is not available.
-     */
-    public abstract @Nullable String getHeadunitManufacturer() throws CarNotConnectedException;
-
-    /**
-     * Return model of the headunit.
-     * @return null if information is not available.
-     */
-    public abstract @Nullable String getHeadunitModel() throws CarNotConnectedException;
-
-    /**
-     * Return S/W build of the headunit.
-     * @return null if information is not available.
-     */
-    public abstract @Nullable String getHeadunitSoftwareBuild() throws CarNotConnectedException;
-
-    /**
-     * Return S/W version of the headunit.
-     * @return null if information is not available.
-     */
-    public abstract @Nullable String getHeadunitSoftwareVersion() throws CarNotConnectedException;
-
-    /**
-     * Return driver side of the car.
-     * @return {@link #DRIVER_SIDE_UNKNOWN} if information is not available.
-     */
-    public abstract @DriverSide int getDriverPosition() throws CarNotConnectedException;
-
-    /**
-     * Return fuel capacity of the car in milliliters.
-     * @return 0 if car doesn't run on fuel.
-     */
-    public abstract float getFuelCapacity() throws CarNotConnectedException;
-
-    /**
-     * Return array of fuel types available in the car, defined in
-     * android.hardware.automotive.vehicle.V2_0.FuelType
-     * @return empty array if no fuel types available.
-     */
-    public abstract int[] getFuelTypes() throws CarNotConnectedException;
-
-    /**
-     * Return battery capacity of the car in WH.
-     * @return 0 if car doesn't run on battery.
-     */
-    public abstract float getEvBatteryCapacity() throws CarNotConnectedException;
-
-    /**
-     * Return array of EV connector types available in the car, defined in
-     * android.hardware.automotive.vehicle.V2_0.EvConnectorType
-     * @return empty array if no connector types available.
-     */
-    public abstract int[] getEvConnectorTypes() throws CarNotConnectedException;
-}
diff --git a/car-support-lib/src/android/support/car/CarInfoManagerEmbedded.java b/car-support-lib/src/android/support/car/CarInfoManagerEmbedded.java
deleted file mode 100644
index 0d41053..0000000
--- a/car-support-lib/src/android/support/car/CarInfoManagerEmbedded.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-
-/** @hide */
-public class CarInfoManagerEmbedded extends CarInfoManager {
-
-    private final android.car.CarInfoManager mManager;
-
-    /** @hide */
-    CarInfoManagerEmbedded(Object manager) {
-        mManager = (android.car.CarInfoManager) manager;
-    }
-
-    @Override
-    public String getManufacturer() throws CarNotConnectedException {
-        try {
-            return mManager.getManufacturer();
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public String getModel() throws CarNotConnectedException {
-        try {
-            return mManager.getModel();
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public String getModelYear() throws CarNotConnectedException {
-        try {
-            return mManager.getModelYear();
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public String getVehicleId() throws CarNotConnectedException {
-        try {
-            return mManager.getVehicleId();
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public String getHeadunitManufacturer() throws CarNotConnectedException {
-        return null;
-    }
-
-    @Override
-    public String getHeadunitModel() throws CarNotConnectedException {
-        return null; // N/A
-    }
-
-    @Override
-    public String getHeadunitSoftwareBuild() throws CarNotConnectedException {
-        return null; // N/A
-    }
-
-    @Override
-    public String getHeadunitSoftwareVersion() throws CarNotConnectedException {
-        return null; // N/A
-    }
-
-    @Override
-    public int getDriverPosition() throws CarNotConnectedException {
-        return CarInfoManager.DRIVER_SIDE_UNKNOWN; // N/A
-    }
-
-    @Override
-    public float getFuelCapacity() throws CarNotConnectedException {
-        try {
-            return mManager.getFuelCapacity();
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public int[] getFuelTypes() throws CarNotConnectedException {
-        try {
-            return mManager.getFuelTypes();
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public float getEvBatteryCapacity() throws CarNotConnectedException {
-        try {
-            return mManager.getEvBatteryCapacity();
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public int[] getEvConnectorTypes() throws CarNotConnectedException {
-        try {
-            return mManager.getEvConnectorTypes();
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    /** @hide */
-    @Override
-    public void onCarDisconnected() {
-        //nothing to do
-    }
-}
diff --git a/car-support-lib/src/android/support/car/CarLibLog.java b/car-support-lib/src/android/support/car/CarLibLog.java
deleted file mode 100644
index c470937..0000000
--- a/car-support-lib/src/android/support/car/CarLibLog.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-/** @hide */
-public class CarLibLog {
-    public static final String TAG_CAR = "CAR.L";
-    public static final String TAG_SENSOR = TAG_CAR + ".SENSOR";
-    public static final String TAG_NAV = TAG_CAR + ".NAV";
-}
diff --git a/car-support-lib/src/android/support/car/CarNotConnectedException.java b/car-support-lib/src/android/support/car/CarNotConnectedException.java
deleted file mode 100644
index aa0cfcd..0000000
--- a/car-support-lib/src/android/support/car/CarNotConnectedException.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-
-/**
- * Exception thrown when an API that requires a car connection is called while disconnected from a
- * car.  This may have happened because the car and phone have become disconnected, the system is
- * undergoing an upgrade, or some other event.
- */
-public class CarNotConnectedException extends Exception {
-    private static final long serialVersionUID = -5629175439268813047L;
-
-    public CarNotConnectedException() {
-    }
-
-    public CarNotConnectedException(String name) {
-        super(name);
-    }
-
-    public CarNotConnectedException(String name, Throwable cause) {
-        super(name, cause);
-    }
-
-    public CarNotConnectedException(Exception cause) {
-        super(cause);
-    }
-}
diff --git a/car-support-lib/src/android/support/car/CarServiceLoader.java b/car-support-lib/src/android/support/car/CarServiceLoader.java
deleted file mode 100644
index 8a334b7..0000000
--- a/car-support-lib/src/android/support/car/CarServiceLoader.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-import android.content.Context;
-import android.os.Handler;
-
-/**
- * CarServiceLoader is the abstraction for loading different types of car service.
- * @hide
- */
-public abstract class CarServiceLoader {
-
-    private final Context mContext;
-    private final CarConnectionCallbackProxy mCallback;
-    private final Handler mEventHandler;
-
-    public CarServiceLoader(Context context, CarConnectionCallbackProxy callback, Handler handler) {
-        mContext = context;
-        mCallback = callback;
-        mEventHandler = handler;
-    }
-
-    public abstract void connect() throws IllegalStateException;
-    public abstract void disconnect();
-    public abstract boolean isConnected();
-
-    @Car.ConnectionType
-    public abstract int getCarConnectionType() throws CarNotConnectedException;
-
-    /**
-     * Retrieves a manager object for a specified Car*Manager.
-     * @param serviceName One of the android.car.Car#*_SERVICE constants.
-     * @return An instance of the request manager.  Null if the manager is not supported on the
-     * current vehicle.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract Object getCarManager(String serviceName) throws CarNotConnectedException;
-
-    protected Context getContext() {
-        return mContext;
-    }
-
-    protected CarConnectionCallbackProxy getConnectionCallback() {
-        return mCallback;
-    }
-
-    protected Handler getEventHandler() {
-        return mEventHandler;
-    }
-
-    /**
-     * Wrapper for CarConnectionCallback which does not return a {@link android.support.car.Car}
-     * object.
-     */
-    public abstract static class CarConnectionCallbackProxy {
-
-        /**
-         * Called when the Car has been connected. Does not guarantee the car is still connected
-         * while this callback is running, so {@link CarNotConnectedException}s may still be
-         * thrown from {@link Car} method calls.
-         */
-        public abstract void onConnected();
-        /**
-         * Called when the Car has been disconnected.
-         */
-        public abstract void onDisconnected();
-    }
-}
diff --git a/car-support-lib/src/android/support/car/CarServiceLoaderEmbedded.java b/car-support-lib/src/android/support/car/CarServiceLoaderEmbedded.java
deleted file mode 100644
index cfd598a..0000000
--- a/car-support-lib/src/android/support/car/CarServiceLoaderEmbedded.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.ServiceConnection;
-import android.os.Handler;
-import android.os.IBinder;
-import android.support.car.content.pm.CarPackageManagerEmbedded;
-import android.support.car.media.CarAudioManagerEmbedded;
-import android.support.car.navigation.CarNavigationStatusManagerEmbedded;
-
-/**
- * Default CarServiceLoader for system with built-in car service (=embedded).
- * @hide
- */
-public class CarServiceLoaderEmbedded extends CarServiceLoader {
-
-    private final ServiceConnection mServiceConnection = new ServiceConnection() {
-
-        @Override
-        public void onServiceConnected(ComponentName name, IBinder service) {
-            getConnectionCallback().onConnected();
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName name) {
-            getConnectionCallback().onDisconnected();
-        }
-    };
-
-    private final android.car.Car mEmbeddedCar;
-
-    /** @hide */
-    CarServiceLoaderEmbedded(Context context, CarConnectionCallbackProxy carConnectionCallback,
-            Handler handler) {
-        super(context, carConnectionCallback, handler);
-        mEmbeddedCar = android.car.Car.createCar(context, mServiceConnection, handler);
-    }
-
-    @Override
-    public void connect() throws IllegalStateException {
-        mEmbeddedCar.connect();
-    }
-
-    @Override
-    public void disconnect() {
-        mEmbeddedCar.disconnect();
-    }
-
-    @Override
-    public boolean isConnected() {
-        return mEmbeddedCar.isConnected();
-    }
-
-    @Override
-    public int getCarConnectionType() throws CarNotConnectedException {
-        @android.support.car.Car.ConnectionType
-        int carConnectionType = mEmbeddedCar.getCarConnectionType();
-        return carConnectionType;
-    }
-
-    @Override
-    public Object getCarManager(String serviceName) throws CarNotConnectedException {
-        Object manager;
-        try {
-            manager = mEmbeddedCar.getCarManager(serviceName);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-
-        if (manager == null) {
-            return null;
-        }
-        // For publicly available versions, return wrapper version.
-        switch (serviceName) {
-            case Car.AUDIO_SERVICE:
-                return new CarAudioManagerEmbedded(manager);
-            case Car.INFO_SERVICE:
-                return new CarInfoManagerEmbedded(manager);
-            case Car.APP_FOCUS_SERVICE:
-                return new CarAppFocusManagerEmbedded(manager);
-            case Car.PACKAGE_SERVICE:
-                return new CarPackageManagerEmbedded(manager);
-            case Car.CAR_NAVIGATION_SERVICE:
-                return new CarNavigationStatusManagerEmbedded(manager);
-            default:
-                return manager;
-        }
-    }
-}
diff --git a/car-support-lib/src/android/support/car/annotation/ValueTypeDef.java b/car-support-lib/src/android/support/car/annotation/ValueTypeDef.java
deleted file mode 100644
index 6de4320..0000000
--- a/car-support-lib/src/android/support/car/annotation/ValueTypeDef.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotation for specifying a value type for a key/value pair.
- * Key definitions use this annotation to specify what kind of value is expected from the key.
- */
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface ValueTypeDef {
-    Class<?> type() default Object.class;
-}
diff --git a/car-support-lib/src/android/support/car/annotation/VersionDef.java b/car-support-lib/src/android/support/car/annotation/VersionDef.java
deleted file mode 100644
index d299a81..0000000
--- a/car-support-lib/src/android/support/car/annotation/VersionDef.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotation for specifying supported version of a member for a Parcelable.
- * Version defaults to 1 if @VersionDef is used without specifying a version.
- */
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.SOURCE)
-public @interface VersionDef {
-    int version() default 1;
-}
diff --git a/car-support-lib/src/android/support/car/content/pm/CarPackageManager.java b/car-support-lib/src/android/support/car/content/pm/CarPackageManager.java
deleted file mode 100644
index bd97de7..0000000
--- a/car-support-lib/src/android/support/car/content/pm/CarPackageManager.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.content.pm;
-
-import android.support.car.CarManagerBase;
-import android.support.car.CarNotConnectedException;
-
-/**
- * Provides car specific API related to package management.
- * @hide
- */
-public abstract class CarPackageManager implements CarManagerBase {
-
-    /**
-     * Check if given activity is allowed while driving.
-     */
-    public abstract boolean isActivityAllowedWhileDriving(String packageName, String className)
-            throws CarNotConnectedException;
-
-    /**
-     * Check if given service is allowed while driving.
-     */
-    public abstract boolean isServiceAllowedWhileDriving(String packageName, String className)
-            throws CarNotConnectedException;
-}
diff --git a/car-support-lib/src/android/support/car/content/pm/CarPackageManagerEmbedded.java b/car-support-lib/src/android/support/car/content/pm/CarPackageManagerEmbedded.java
deleted file mode 100644
index e6f1b67..0000000
--- a/car-support-lib/src/android/support/car/content/pm/CarPackageManagerEmbedded.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.content.pm;
-
-import android.support.car.CarNotConnectedException;
-
-/**
- * @hide
- */
-public class CarPackageManagerEmbedded extends CarPackageManager {
-
-    private final android.car.content.pm.CarPackageManager mManager;
-
-    public CarPackageManagerEmbedded(Object manager) {
-        mManager = (android.car.content.pm.CarPackageManager) manager;
-    }
-
-    /** @hide */
-    public android.car.content.pm.CarPackageManager getManager() {
-        return mManager;
-    }
-
-    @Override
-    public boolean isActivityAllowedWhileDriving(String packageName, String className)
-            throws CarNotConnectedException {
-        try {
-            return mManager.isActivityDistractionOptimized(packageName, className);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public boolean isServiceAllowedWhileDriving(String packageName, String className)
-            throws CarNotConnectedException {
-        try {
-            return mManager.isServiceDistractionOptimized(packageName, className);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public void onCarDisconnected() {
-        // nothing to do
-    }
-}
diff --git a/car-support-lib/src/android/support/car/hardware/CarSensorConfig.java b/car-support-lib/src/android/support/car/hardware/CarSensorConfig.java
deleted file mode 100644
index b39d205..0000000
--- a/car-support-lib/src/android/support/car/hardware/CarSensorConfig.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.car.hardware;
-
-import static androidx.annotation.RestrictTo.Scope.GROUP_ID;
-
-import android.os.Bundle;
-
-import androidx.annotation.RestrictTo;
-
-/**
- * A CarSensorConfig object corresponds to a single sensor type coming from the car.
- * @hide
- */
-public class CarSensorConfig {
-    /** List of property specific mapped elements in bundle for WHEEL_TICK_DISTANCE sensor*/
-    /** @hide */
-    public final static String WHEEL_TICK_DISTANCE_SUPPORTED_WHEELS =
-        "android.car.wheelTickDistanceSupportedWheels";
-    /** @hide */
-    public final static String WHEEL_TICK_DISTANCE_FRONT_LEFT_UM_PER_TICK =
-        "android.car.wheelTickDistanceFrontLeftUmPerTick";
-    /** @hide */
-    public final static String WHEEL_TICK_DISTANCE_FRONT_RIGHT_UM_PER_TICK =
-        "android.car.wheelTickDistanceFrontRightUmPerTick";
-    /** @hide */
-    public final static String WHEEL_TICK_DISTANCE_REAR_RIGHT_UM_PER_TICK =
-        "android.car.wheelTickDistanceRearRightUmPerTick";
-    /** @hide */
-    public final static String WHEEL_TICK_DISTANCE_REAR_LEFT_UM_PER_TICK =
-        "android.car.wheelTickDistanceRearLeftUmPerTick";
-
-    /** Config data stored in Bundle */
-    private final Bundle mConfig;
-    private final int mType;
-
-    private final static int RAW_BUNDLE_SIZE = 4;
-    private final static int WHEEL_TICK_DISTANCE_BUNDLE_SIZE = 6;
-
-    /**
-     * Constructs a {@link CarSensorConfig}. Handled by CarSensorManager implementations.
-     * App developers need not worry about constructing these objects.
-     * @hide
-     */
-    @RestrictTo(GROUP_ID)
-    public CarSensorConfig(int type, Bundle in) {
-        mType = type;
-        mConfig = in.deepCopy();
-    }
-
-    private void checkType(int type) {
-        if (mType == type) {
-            return;
-        }
-        throw new UnsupportedOperationException(String.format(
-            "Invalid sensor type: expected %d, got %d", type, mType));
-    }
-
-    /** @hide */
-    public int getInt(String key) {
-        if (mConfig.containsKey(key)) {
-            return mConfig.getInt(key);
-        } else {
-            throw new IllegalArgumentException("SensorType " + mType +
-                " does not contain key: " + key);
-        }
-    }
-
-    /** @hide */
-    public int getType() {
-        return mType;
-    }
-
-    /** @hide */
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getName() + "[");
-        sb.append("mConfig: " + mConfig.toString());
-        sb.append("mType: " + mType);
-        sb.append("]");
-        return sb.toString();
-    }
-}
diff --git a/car-support-lib/src/android/support/car/hardware/CarSensorEvent.java b/car-support-lib/src/android/support/car/hardware/CarSensorEvent.java
deleted file mode 100644
index 7b1bf1a..0000000
--- a/car-support-lib/src/android/support/car/hardware/CarSensorEvent.java
+++ /dev/null
@@ -1,1207 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.hardware;
-
-import static androidx.annotation.RestrictTo.Scope.GROUP_ID;
-
-import android.car.VehicleOilLevel;
-import android.location.GpsSatellite;
-import android.location.Location;
-import android.os.SystemClock;
-
-import androidx.annotation.RestrictTo;
-
-/**
- * A CarSensorEvent object corresponds to a single sensor event coming from the car. Sensor
- * data is stored in a sensor type-specific format in the object's float and byte arrays.
- * </p>
- * To aid in unmarshalling the object's data arrays, this class provides static nested classes and
- * conversion methods (such as {@link DrivingStatusData} and {@link #getDrivingStatusData}).
- * Additionally, calling a conversion method on a CarSensorEvent object with an inappropriate type
- * results in an {@code UnsupportedOperationException} being thrown.
- */
-public class CarSensorEvent {
-
-
-    /**
-     * Status for {@link CarSensorManager#SENSOR_TYPE_DRIVING_STATUS}: No restrictions.
-     */
-    public static final int DRIVE_STATUS_UNRESTRICTED = 0;
-    /**
-     * Status for {@link CarSensorManager#SENSOR_TYPE_DRIVING_STATUS}: No video playback allowed.
-     * See {@link #getDrivingStatusData()}.
-     */
-    public static final int DRIVE_STATUS_NO_VIDEO = 0x1;
-    /**
-     * Status for {@link CarSensorManager#SENSOR_TYPE_DRIVING_STATUS}: No keyboard or rotary
-     * controller input allowed. See {@link #getDrivingStatusData()}.
-     */
-    public static final int DRIVE_STATUS_NO_KEYBOARD_INPUT = 0x2;
-    /**
-     * Status for {@link CarSensorManager#SENSOR_TYPE_DRIVING_STATUS}: No voice input allowed.
-     * See {@link #getDrivingStatusData()}.
-     */
-    public static final int DRIVE_STATUS_NO_VOICE_INPUT = 0x4;
-    /**
-     * Status for {@link CarSensorManager#SENSOR_TYPE_DRIVING_STATUS}: No setup/configuration
-     * allowed. See {@link #getDrivingStatusData()}.
-     */
-    public static final int DRIVE_STATUS_NO_CONFIG = 0x8;
-    /**
-     * Status for {@link CarSensorManager#SENSOR_TYPE_DRIVING_STATUS}: Limit displayed message
-     * length. See {@link #getDrivingStatusData()}.
-     */
-    public static final int DRIVE_STATUS_LIMIT_MESSAGE_LEN = 0x10;
-    /**
-     * Status for {@link CarSensorManager#SENSOR_TYPE_DRIVING_STATUS}: All driving restrictions
-     * enabled. See {@link #getDrivingStatusData()}.
-     */
-    public static final int DRIVE_STATUS_FULLY_RESTRICTED = DRIVE_STATUS_NO_VIDEO |
-            DRIVE_STATUS_NO_KEYBOARD_INPUT | DRIVE_STATUS_NO_VOICE_INPUT | DRIVE_STATUS_NO_CONFIG |
-            DRIVE_STATUS_LIMIT_MESSAGE_LEN;
-    /**
-     * Indices for {@link CarSensorManager#SENSOR_TYPE_COMPASS} in floatValues.
-     * Angles are in degrees. Can be NaN if not available. See {@link #getCompassData()}.
-     */
-    public static final int INDEX_COMPASS_BEARING = 0;
-    /**
-     * Indices for {@link CarSensorManager#SENSOR_TYPE_COMPASS} in floatValues.
-     * Angles are in degrees. Can be NaN if not available. See {@link #getCompassData()}.
-     */
-    public static final int INDEX_COMPASS_PITCH   = 1;
-    /**
-     * Indices for {@link CarSensorManager#SENSOR_TYPE_COMPASS} in floatValues.
-     * Angles are in degrees. Can be NaN if not available. See {@link #getCompassData()}.
-     */
-    public static final int INDEX_COMPASS_ROLL    = 2;
-
-
-    /**
-     * Index for {@link CarSensorManager#SENSOR_TYPE_WHEEL_TICK_DISTANCE} in longValues.
-     */
-    public static final int INDEX_WHEEL_DISTANCE_RESET_COUNT = 0;
-    public static final int INDEX_WHEEL_DISTANCE_FRONT_LEFT = 1;
-    public static final int INDEX_WHEEL_DISTANCE_FRONT_RIGHT = 2;
-    public static final int INDEX_WHEEL_DISTANCE_REAR_RIGHT = 3;
-    public static final int INDEX_WHEEL_DISTANCE_REAR_LEFT = 4;
-
-    private static final long MILLI_IN_NANOS = 1000000L;
-
-    /** Sensor type for this event, such as {@link CarSensorManager#SENSOR_TYPE_COMPASS}. */
-    public final int sensorType;
-
-    /**
-     * When this data was acquired in car or received from car. It is the elapsed time of data
-     * reception from the car in nanoseconds since system boot.
-     */
-    public final long timestamp;
-    /**
-     * Array holding float type of sensor data. If the sensor has single value, only floatValues[0]
-     * should be used. */
-    public final float[] floatValues;
-    /** Array holding int type of sensor data. */
-    public final int[] intValues;
-    /** array holding long int type of sensor data */
-    public final long[] longValues;
-
-    private static final float[] EMPTY_FLOAT_ARRAY = {};
-    private static final int[] EMPTY_INT_ARRAY = {};
-    private static final long[] EMPTY_LONG_ARRAY = {};
-
-    /**
-     * Constructs a {@link CarSensorEvent} from integer values. Handled by
-     * CarSensorManager implementations. App developers need not worry about constructing these
-     * objects.
-     * @hide
-     */
-    @RestrictTo(GROUP_ID)
-    public CarSensorEvent(int sensorType, long timestamp, int floatValueSize, int intValueSize,
-                          int longValueSize) {
-        this.sensorType = sensorType;
-        this.timestamp = timestamp;
-        floatValues = new float[floatValueSize];
-        intValues = new int[intValueSize];
-        longValues = new long[longValueSize];
-    }
-
-    /**
-     * Constructor
-     * @param sensorType one of the {@link CarSensorManager}'s SENSOR_TYPE_* constants
-     * @param timestamp time since system start in nanoseconds
-     * @param floatValues {@code null} will be converted to an empty array
-     * @param intValues {@code null} will be converted to an empty array
-     * @param longValues {@code null} will be converted to an empty array
-     * @hide
-     */
-    @RestrictTo(GROUP_ID)
-    public CarSensorEvent(int sensorType, long timestamp, float[] floatValues, int[] intValues,
-                          long[] longValues) {
-        this.sensorType = sensorType;
-        this.timestamp = timestamp;
-        this.floatValues = (floatValues == null) ? EMPTY_FLOAT_ARRAY : floatValues;
-        this.intValues = (intValues == null) ? EMPTY_INT_ARRAY : intValues;
-        this.longValues = (longValues == null) ? EMPTY_LONG_ARRAY : longValues;
-    }
-
-    /**
-     * Constructor
-     * @param sensorType one of the {@link CarSensorManager}'s SENSOR_TYPE_* constants
-     * @param timestamp time since system start in nanoseconds
-     * @param floatValues {@code null} will be converted to an empty array
-     * @param byteValues bytes will be converted into the intValues array. {@code null} will be
-     * converted to an empty array.
-     * @param longValues {@code null} will be converted to an empty array
-     * @hide
-     */
-    @RestrictTo(GROUP_ID)
-    public CarSensorEvent(int sensorType, long timestamp, float[] floatValues, byte[] byteValues,
-                          long[] longValues) {
-        this.sensorType = sensorType;
-        this.timestamp = timestamp;
-        this.floatValues = (floatValues == null) ? EMPTY_FLOAT_ARRAY : floatValues;
-        if (byteValues == null) {
-            this.intValues = EMPTY_INT_ARRAY;
-        } else {
-            this.intValues = new int[byteValues.length];
-            for (int i = 0; i < byteValues.length; i++) {
-                this.intValues[i] = byteValues[i];
-            }
-        }
-        this.longValues = (longValues == null) ? EMPTY_LONG_ARRAY : longValues;
-    }
-
-    private void checkType(int type) {
-        if (sensorType == type) {
-            return;
-        }
-        throw new UnsupportedOperationException(String.format(
-                "Invalid sensor type: expected %d, got %d", type, sensorType));
-    }
-
-    /**
-     * Holds data about the car's compass readings. See {@link #getCompassData()}.
-     */
-    public static class CompassData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        /** The bearing in degrees. If unsupported by the car, this value is NaN. */
-        public final float bearing;
-        /**
-         * The pitch in degrees. Nose down is positive. If unsupported by the car, this value is
-         * NaN.
-         */
-        public final float pitch;
-        /**
-         * The roll in degrees. Right door down is positive. If unsupported by the car, this value
-         * is NaN.
-         */
-        public final float roll;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CompassData(long timestamp, float bearing, float pitch, float roll) {
-            this.timestamp = timestamp;
-            this.bearing = bearing;
-            this.pitch = pitch;
-            this.roll = roll;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CompassData} object from a CarSensorEvent object
-     * with type {@link CarSensorManager#SENSOR_TYPE_COMPASS}.
-     *
-     * @return A CompassData object corresponding to the data contained in the CarSensorEvent.
-     */
-    public CompassData getCompassData() {
-        checkType(CarSensorManager.SENSOR_TYPE_COMPASS);
-        return new CompassData(0, floatValues[INDEX_COMPASS_BEARING],
-                floatValues[INDEX_COMPASS_PITCH], floatValues[INDEX_COMPASS_ROLL]);
-    }
-
-    /**
-     * Indicates the state of the parking brake (engaged or not). See
-     * {@link #getParkingBrakeData()}.
-     */
-    public static class ParkingBrakeData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        /** Returns {@code true} if the parking brake is engaged. */
-        public final boolean isEngaged;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public ParkingBrakeData(long timestamp, boolean isEngaged) {
-            this.timestamp = timestamp;
-            this.isEngaged = isEngaged;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link ParkingBrakeData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_PARKING_BRAKE}. See
-     * {@link #getParkingBrakeData()}.
-     *
-     * @return A ParkingBreakData object corresponding to the data contained in the CarSensorEvent.
-     */
-    public ParkingBrakeData getParkingBrakeData() {
-        checkType(CarSensorManager.SENSOR_TYPE_PARKING_BRAKE);
-        return new ParkingBrakeData(timestamp, (intValues[0] == 1));
-    }
-
-    /**
-     * Indicates if the system is in night mode (a state in which the screen is
-     * darkened or displays a darker color palette). See {@link #getNightData()}.
-     */
-    public static class NightData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        /** Returns {@code true} if the system is in night mode. */
-        public final boolean isNightMode;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public NightData(long timestamp, boolean isNightMode) {
-            this.timestamp = timestamp;
-            this.isNightMode = isNightMode;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link NightData} object from a CarSensorEvent object
-     * with type {@link CarSensorManager#SENSOR_TYPE_NIGHT}.
-     *
-     * @return A NightData object corresponding to the data contained in the CarSensorEvent.
-     */
-    public NightData getNightData() {
-        checkType(CarSensorManager.SENSOR_TYPE_NIGHT);
-        return new NightData(timestamp, (intValues[0] == 1));
-    }
-
-    /**
-     * Indicates the restrictions in effect based on the status of the vehicle. See
-     * {@link #getDrivingStatusData()}.
-     */
-    public static class DrivingStatusData {
-        /**
-         * The time in nanoseconds since system boot.
-         */
-        public final long timestamp;
-        /**
-         * A bitmask with the following field values: {@link #DRIVE_STATUS_NO_VIDEO},
-         * {@link #DRIVE_STATUS_NO_KEYBOARD_INPUT}, {@link #DRIVE_STATUS_NO_VOICE_INPUT},
-         * {@link #DRIVE_STATUS_NO_CONFIG}, {@link #DRIVE_STATUS_LIMIT_MESSAGE_LEN}. You may read
-         * this or use the convenience methods.
-         */
-        public final int status;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public DrivingStatusData(long timestamp, int status) {
-            this.timestamp = timestamp;
-            this.status = status;
-        }
-
-        /**
-         * @return Returns {@code true} if the keyboard is not allowed at this time.
-         */
-        public boolean isKeyboardRestricted() {
-            return DRIVE_STATUS_NO_KEYBOARD_INPUT == (status & DRIVE_STATUS_NO_KEYBOARD_INPUT);
-        }
-
-        /**
-         * @return Returns {@code true} if voice commands are not allowed at this time.
-         */
-        public boolean isVoiceRestricted() {
-            return DRIVE_STATUS_NO_VOICE_INPUT == (status & DRIVE_STATUS_NO_VOICE_INPUT);
-        }
-
-        /**
-         * @return Returns {@code true} if video is not allowed at this time.
-         */
-        public boolean isVideoRestricted() {
-            return DRIVE_STATUS_NO_VIDEO == (status & DRIVE_STATUS_NO_VIDEO);
-        }
-
-        /**
-         * @return Returns {@code true} if configuration should not be performed at this time.
-         */
-        public boolean isConfigurationRestricted() {
-            return DRIVE_STATUS_NO_CONFIG == (status & DRIVE_STATUS_NO_CONFIG);
-        }
-
-        /**
-         * @return Returns {@code true} if message length should be limited at this time.
-         */
-        public boolean isMessageLengthRestricted() {
-            return DRIVE_STATUS_LIMIT_MESSAGE_LEN == (status & DRIVE_STATUS_LIMIT_MESSAGE_LEN);
-        }
-
-        /**
-         * @return Returns {@code true} if all restrictions are in place at this time.
-         */
-        public boolean isFullyRestricted() {
-            return DRIVE_STATUS_FULLY_RESTRICTED == (status & DRIVE_STATUS_FULLY_RESTRICTED);
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link DrivingStatusData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_DRIVING_STATUS}.
-     *
-     * @return A DrivingStatusData object corresponding to the data contained in the
-     * CarSensorEvent.
-     */
-    public DrivingStatusData getDrivingStatusData() {
-        checkType(CarSensorManager.SENSOR_TYPE_DRIVING_STATUS);
-        return new DrivingStatusData(timestamp, intValues[0]);
-    }
-
-
-    /*things that are currently hidden*/
-
-
-    /**
-     *  GEAR_* represents meaning of intValues[0] for {@link CarSensorManager#SENSOR_TYPE_GEAR}
-     *  sensor type.
-     *  GEAR_NEUTRAL means transmission gear is in neutral state, and the car may be moving.
-     * @hide
-     */
-    public static final int GEAR_NEUTRAL    = 0;
-    /**
-     * intValues[0] from 1 to 99 represents transmission gear number for moving forward.
-     * GEAR_FIRST is for gear number 1.
-     * @hide
-     */
-    public static final int GEAR_FIRST      = 1;
-    /** Gear number 2. @hide */
-    public static final int GEAR_SECOND     = 2;
-    /** Gear number 3. @hide */
-    public static final int GEAR_THIRD      = 3;
-    /** Gear number 4. @hide */
-    public static final int GEAR_FOURTH     = 4;
-    /** Gear number 5. @hide */
-    public static final int GEAR_FIFTH      = 5;
-    /** Gear number 6. @hide */
-    public static final int GEAR_SIXTH      = 6;
-    /** Gear number 7. @hide */
-    public static final int GEAR_SEVENTH    = 7;
-    /** Gear number 8. @hide */
-    public static final int GEAR_EIGHTH     = 8;
-    /** Gear number 9. @hide */
-    public static final int GEAR_NINTH      = 9;
-    /** Gear number 10. @hide */
-    public static final int GEAR_TENTH      = 10;
-    /**
-     * This is for transmission without specific gear number for moving forward like CVT. It tells
-     * that car is in a transmission state to move it forward.
-     * @hide
-     */
-    public static final int GEAR_DRIVE      = 100;
-    /** Gear in parking state @hide */
-    public static final int GEAR_PARK       = 101;
-    /** Gear in reverse @hide */
-    public static final int GEAR_REVERSE    = 102;
-
-    /**
-     * Indices for {@link CarSensorManager#SENSOR_TYPE_GYROSCOPE} in floatValues.
-     * Rotation speed is in rad/s. Any component can be NaN if it is not available.
-     */
-    /**@hide*/
-    public static final int INDEX_GYROSCOPE_X = 0;
-    /**@hide*/
-    public static final int INDEX_GYROSCOPE_Y = 1;
-    /**@hide*/
-    public static final int INDEX_GYROSCOPE_Z = 2;
-
-    /**
-     * Indices for {@link CarSensorManager#SENSOR_TYPE_GPS_SATELLITE}.
-     * Both byte values and float values are used.
-     * Two first bytes encode number of satellites in-use/in-view (or 0xFF if unavailable).
-     * Then optionally with INDEX_GPS_SATELLITE_ARRAY_BYTE_OFFSET offset and interval
-     * INDEX_GPS_SATELLITE_ARRAY_BYTE_INTERVAL between elements are encoded boolean flags of
-     * whether particular satellite from in-view participate in in-use subset.
-     * Float values with INDEX_GPS_SATELLITE_ARRAY_FLOAT_OFFSET offset and interval
-     * INDEX_GPS_SATELLITE_ARRAY_FLOAT_INTERVAL between elements can optionally contain
-     * per-satellite values of signal strength and other values or NaN if unavailable.
-     */
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_NUMBER_IN_USE = 0;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_NUMBER_IN_VIEW = 1;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_ARRAY_INT_OFFSET = 2;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_ARRAY_INT_INTERVAL = 1;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_ARRAY_FLOAT_OFFSET = 0;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_ARRAY_FLOAT_INTERVAL = 4;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_PRN_OFFSET = 0;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_SNR_OFFSET = 1;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_AZIMUTH_OFFSET = 2;
-    /**@hide*/
-    public static final int INDEX_GPS_SATELLITE_ELEVATION_OFFSET = 3;
-
-
-    /**
-     * Index for {@link CarSensorManager#SENSOR_TYPE_LOCATION} in floatValues.
-     * Each bit intValues[0] represents whether the corresponding data is present.
-     */
-    /**@hide*/
-    public static final int INDEX_LOCATION_LATITUDE  = 0;
-    /**@hide*/
-    public static final int INDEX_LOCATION_LONGITUDE = 1;
-    /**@hide*/
-    public static final int INDEX_LOCATION_ACCURACY  = 2;
-    /**@hide*/
-    public static final int INDEX_LOCATION_ALTITUDE  = 3;
-    /**@hide*/
-    public static final int INDEX_LOCATION_SPEED     = 4;
-    /**@hide*/
-    public static final int INDEX_LOCATION_BEARING   = 5;
-    /**@hide*/
-    public static final int INDEX_LOCATION_MAX = INDEX_LOCATION_BEARING;
-    /**@hide*/
-    public static final int INDEX_LOCATION_LATITUDE_INTS = 1;
-    /**@hide*/
-    public static final int INDEX_LOCATION_LONGITUDE_INTS = 2;
-
-
-    /**
-     * Index for {@link CarSensorManager#SENSOR_TYPE_ENVIRONMENT} in floatValues.
-     * Temperature in Celsius degrees.
-     * @hide
-     */
-    public static final int INDEX_ENVIRONMENT_TEMPERATURE = 0;
-    /**
-     * Index for {@link CarSensorManager#SENSOR_TYPE_ENVIRONMENT} in floatValues.
-     * Pressure in kPa.
-     * @hide
-     */
-    public static final int INDEX_ENVIRONMENT_PRESSURE = 1;
-
-
-    /**
-     * Indices for {@link CarSensorManager#SENSOR_TYPE_ACCELEROMETER} in floatValues.
-     * Acceleration (gravity) is in m/s^2. Any component can be NaN if it is not available.
-     */
-    /**@hide*/
-    public static final int INDEX_ACCELEROMETER_X = 0;
-    /**@hide*/
-    public static final int INDEX_ACCELEROMETER_Y = 1;
-    /**@hide*/
-    public static final int INDEX_ACCELEROMETER_Z = 2;
-
-    /** @hide */
-    public static class EnvironmentData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        /** If unsupported by the car, this value is NaN. */
-        public final float temperature;
-        /** If unsupported by the car, this value is NaN. */
-        public final float pressure;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public EnvironmentData(long timestamp, float temperature, float pressure) {
-            this.timestamp = timestamp;
-            this.temperature = temperature;
-            this.pressure = pressure;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining an {@link EnvironmentData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_ENVIRONMENT}.
-     *
-     * @return an EnvironmentData object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public EnvironmentData getEnvironmentData() {
-        checkType(CarSensorManager.SENSOR_TYPE_ENVIRONMENT);
-
-        float temperature = floatValues[INDEX_ENVIRONMENT_TEMPERATURE];
-        float pressure = floatValues[INDEX_ENVIRONMENT_PRESSURE];
-        return new EnvironmentData(timestamp, temperature, pressure);
-    }
-
-    /** @hide */
-    public static class GearData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        public final int gear;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public GearData(long timestamp, int gear) {
-            this.timestamp = timestamp;
-            this.gear = gear;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link GearData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_GEAR}.
-     *
-     * @return a GearData object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public GearData getGearData() {
-        checkType(CarSensorManager.SENSOR_TYPE_GEAR);
-        return new GearData(timestamp, intValues[0]);
-    }
-
-    /** @hide */
-    public static class FuelLevelData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        /** Fuel level in milliliters. If unsupported by the car, this value is -1. */
-        public final float level;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public FuelLevelData(long timestamp, float level) {
-            this.timestamp = timestamp;
-            this.level = level;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link FuelLevelData} object from a CarSensorEvent object
-     * with type {@link CarSensorManager#SENSOR_TYPE_FUEL_LEVEL}.
-     *
-     * @return A FuelLevel object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public FuelLevelData getFuelLevelData() {
-        checkType(CarSensorManager.SENSOR_TYPE_FUEL_LEVEL);
-        float level = -1.0f;
-        if (floatValues != null) {
-            if (floatValues[0] >= 0) {
-                level = floatValues[0];
-            }
-        }
-        return new FuelLevelData(timestamp, level);
-    }
-
-    /** @hide */
-    public static class OdometerData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        public final float kms;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public OdometerData(long timestamp, float kms) {
-            this.timestamp = timestamp;
-            this.kms = kms;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining an {@link OdometerData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_ODOMETER}.
-     *
-     * @return an OdometerData object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public OdometerData getOdometerData() {
-        checkType(CarSensorManager.SENSOR_TYPE_ODOMETER);
-            return new OdometerData(timestamp, floatValues[0]);
-    }
-
-    /** @hide */
-    public static class RpmData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        public final float rpm;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public RpmData(long timestamp, float rpm) {
-            this.timestamp = timestamp;
-            this.rpm = rpm;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link RpmData} object from a CarSensorEvent object with
-     * type {@link CarSensorManager#SENSOR_TYPE_RPM}.
-     *
-     * @return An RpmData object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public RpmData getRpmData() {
-        checkType(CarSensorManager.SENSOR_TYPE_RPM);
-        return new RpmData(timestamp, floatValues[0]);
-    }
-
-    /** @hide */
-    public static class CarSpeedData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        public final float carSpeed;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarSpeedData(long timestamp, float carSpeed) {
-            this.timestamp = timestamp;
-            this.carSpeed = carSpeed;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarSpeedData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_CAR_SPEED}.
-     *
-     * @return a CarSpeedData object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public CarSpeedData getCarSpeedData() {
-        checkType(CarSensorManager.SENSOR_TYPE_CAR_SPEED);
-        return new CarSpeedData(timestamp, floatValues[0]);
-    }
-
-    /**
-     * Convenience method for obtaining a {@link Location} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_LOCATION}.
-     *
-     * @param location an optional output parameter which, if non-null, will be used by this method
-     *     instead of a newly created object.
-     * @return a Location object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public Location getLocation(Location location) {
-        checkType(CarSensorManager.SENSOR_TYPE_LOCATION);
-        if (location == null) {
-            location = new Location("Car-GPS");
-        }
-        // intValues[0]: bit flags for the presence of other values following.
-        int presense = intValues[0];
-        if ((presense & (0x1 << INDEX_LOCATION_LATITUDE)) != 0) {
-            int latE7 = intValues[INDEX_LOCATION_LATITUDE_INTS];
-            location.setLatitude(latE7 * 1e-7);
-        }
-        if ((presense & (0x1 << INDEX_LOCATION_LONGITUDE)) != 0) {
-            int longE7 = intValues[INDEX_LOCATION_LONGITUDE_INTS];
-            location.setLongitude(longE7 * 1e-7);
-        }
-        if ((presense & (0x1 << INDEX_LOCATION_ACCURACY)) != 0) {
-            location.setAccuracy(floatValues[INDEX_LOCATION_ACCURACY]);
-        }
-        if ((presense & (0x1 << INDEX_LOCATION_ALTITUDE)) != 0) {
-            location.setAltitude(floatValues[INDEX_LOCATION_ALTITUDE]);
-        }
-        if ((presense & (0x1 << INDEX_LOCATION_SPEED)) != 0) {
-            location.setSpeed(floatValues[INDEX_LOCATION_SPEED]);
-        }
-        if ((presense & (0x1 << INDEX_LOCATION_BEARING)) != 0) {
-            location.setBearing(floatValues[INDEX_LOCATION_BEARING]);
-        }
-        location.setElapsedRealtimeNanos(timestamp);
-        // There is a risk of scheduler delaying 2nd elapsedRealtimeNs value.
-        // But will not try to fix it assuming that is acceptable as UTC time's accuracy is not
-        // guaranteed in Location data.
-        long currentTimeMs = System.currentTimeMillis();
-        long elapsedRealtimeNs = SystemClock.elapsedRealtimeNanos();
-        location.setTime(
-                currentTimeMs - (elapsedRealtimeNs - timestamp) / MILLI_IN_NANOS);
-        return location;
-    }
-
-    /** @hide */
-    public static class AccelerometerData  {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        /** If unsupported by the car, this value is NaN. */
-        public final float x;
-        /** If unsupported by the car, this value is NaN. */
-        public final float y;
-        /** If unsupported by the car, this value is NaN. */
-        public final float z;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public AccelerometerData(long timestamp, float x, float y, float z) {
-            this.timestamp = timestamp;
-            this.x = x;
-            this.y = y;
-            this.z = z;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining an {@link AccelerometerData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_ACCELEROMETER}.
-     *
-     * @return An AccelerometerData object corresponding to the data contained in the
-     * CarSensorEvent.
-     * @hide
-     */
-    public AccelerometerData getAccelerometerData() {
-        checkType(CarSensorManager.SENSOR_TYPE_ACCELEROMETER);
-        float x = floatValues[INDEX_ACCELEROMETER_X];
-        float y = floatValues[INDEX_ACCELEROMETER_Y];
-        float z = floatValues[INDEX_ACCELEROMETER_Z];
-        return new AccelerometerData(timestamp, x, y, z);
-    }
-
-    /** @hide */
-    public static class GyroscopeData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        /** If unsupported by the car, this value is NaN. */
-        public final float x;
-        /** If unsupported by the car, this value is NaN. */
-        public final float y;
-        /** If unsupported by the car, this value is NaN. */
-        public final float z;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public GyroscopeData(long timestamp, float x, float y, float z) {
-            this.timestamp = timestamp;
-            this.x = x;
-            this.y = y;
-            this.z = z;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link GyroscopeData} object from a CarSensorEvent object
-     * with type {@link CarSensorManager#SENSOR_TYPE_GYROSCOPE}.
-     *
-     * @return A GyroscopeData object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public GyroscopeData getGyroscopeData() {
-        checkType(CarSensorManager.SENSOR_TYPE_GYROSCOPE);
-        float x = floatValues[INDEX_GYROSCOPE_X];
-        float y = floatValues[INDEX_GYROSCOPE_Y];
-        float z = floatValues[INDEX_GYROSCOPE_Z];
-        return new GyroscopeData(timestamp, x, y, z);
-    }
-
-    // android.location.GpsSatellite doesn't have a public constructor, so that can't be used.
-    /**
-     * Class that contains GPS satellite status. For more info on meaning of these fields refer
-     * to the documentation to the {@link GpsSatellite} class.
-     * @hide
-     */
-    public static class GpsSatelliteData {
-        /** The time in nanoseconds since system boot. */
-        public final long timestamp;
-        /**
-         * Number of satellites used in GPS fix or -1 of unavailable.
-         */
-        public final int numberInUse;
-        /**
-         * Number of satellites in view or -1 of unavailable.
-         */
-        public final int numberInView;
-        /**
-         * Per-satellite flag if this satellite was used for GPS fix.
-         * Can be null if per-satellite data is unavailable.
-         */
-        public final boolean[] usedInFix;
-        /**
-         * Per-satellite pseudo-random id.
-         * Can be null if per-satellite data is unavailable.
-         */
-        public final int[] prn;
-        /**
-         * Per-satellite signal to noise ratio.
-         * Can be null if per-satellite data is unavailable.
-         */
-        public final float[] snr;
-        /**
-         * Per-satellite azimuth.
-         * Can be null if per-satellite data is unavailable.
-         */
-        public final float[] azimuth;
-        /**
-         * Per-satellite elevation.
-         * Can be null if per-satellite data is unavailable.
-         */
-        public final float[] elevation;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public GpsSatelliteData(long timestamp, int numberInUse, int numberInView,
-                boolean[] usedInFix, int[] prn, float[] snr, float[] azimuth, float[] elevation) {
-            this.timestamp = timestamp;
-            this.numberInUse = numberInUse;
-            this.numberInView = numberInView;
-            this.usedInFix = usedInFix;
-            this.prn = prn;
-            this.snr = snr;
-            this.azimuth = azimuth;
-            this.elevation = elevation;
-        }
-    }
-
-    private final int intOffset = CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_INT_OFFSET;
-    private final int intInterval = CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_INT_INTERVAL;
-    private final int floatOffset = CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_FLOAT_OFFSET;
-    private final int floatInterval = CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_FLOAT_INTERVAL;
-
-    /**
-     * Convenience method for obtaining a {@link GpsSatelliteData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_GPS_SATELLITE} with optional
-     * per-satellite info.
-     *
-     * @param withPerSatellite whether to include per-satellite data.
-     * @return a GpsSatelliteData object corresponding to the data contained in the CarSensorEvent.
-     * @hide
-     */
-    public GpsSatelliteData getGpsSatelliteData(boolean withPerSatellite) {
-        checkType(CarSensorManager.SENSOR_TYPE_GPS_SATELLITE);
-
-        //init all vars
-        int numberInUse = intValues[CarSensorEvent.INDEX_GPS_SATELLITE_NUMBER_IN_USE];
-        int numberInView = intValues[CarSensorEvent.INDEX_GPS_SATELLITE_NUMBER_IN_VIEW];
-        boolean[] usedInFix = null;
-        int[] prn = null;
-        float[] snr = null;
-        float[] azimuth = null;
-        float[] elevation = null;
-
-        if (withPerSatellite && numberInView >= 0) {
-            final int numberOfSats = (floatValues.length - floatOffset) / floatInterval;
-            usedInFix = new boolean[numberOfSats];
-            prn = new int[numberOfSats];
-            snr = new float[numberOfSats];
-            azimuth = new float[numberOfSats];
-            elevation = new float[numberOfSats];
-
-            for (int i = 0; i < numberOfSats; ++i) {
-                int iInt = intOffset + intInterval * i;
-                int iFloat = floatOffset + floatInterval * i;
-                usedInFix[i] = intValues[iInt] != 0;
-                prn[i] = Math.round(
-                        floatValues[iFloat + CarSensorEvent.INDEX_GPS_SATELLITE_PRN_OFFSET]);
-                snr[i] =
-                        floatValues[iFloat + CarSensorEvent.INDEX_GPS_SATELLITE_SNR_OFFSET];
-                azimuth[i] = floatValues[iFloat
-                        + CarSensorEvent.INDEX_GPS_SATELLITE_AZIMUTH_OFFSET];
-                elevation[i] = floatValues[iFloat
-                        + CarSensorEvent.INDEX_GPS_SATELLITE_ELEVATION_OFFSET];
-            }
-        }
-        return new GpsSatelliteData(timestamp, numberInUse, numberInView, usedInFix, prn, snr,
-                azimuth, elevation);
-    }
-
-    /** @hide */
-    public static class CarWheelTickDistanceData {
-        public final long timestamp;
-        public final long sensorResetCount;
-        public final long frontLeftWheelDistanceMm;
-        public final long frontRightWheelDistanceMm;
-        public final long rearRightWheelDistanceMm;
-        public final long rearLeftWheelDistanceMm;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarWheelTickDistanceData(long timestamp, long sensorResetCount,
-                                    long frontLeftWheelDistanceMm, long frontRightWheelDistanceMm,
-                                    long rearRightWheelDistanceMm, long rearLeftWheelDistanceMm) {
-            this.timestamp = timestamp;
-            this.sensorResetCount = sensorResetCount;
-            this.frontLeftWheelDistanceMm = frontLeftWheelDistanceMm;
-            this.frontRightWheelDistanceMm = frontRightWheelDistanceMm;
-            this.rearRightWheelDistanceMm = rearRightWheelDistanceMm;
-            this.rearLeftWheelDistanceMm = rearLeftWheelDistanceMm;
-        }
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarWheelTickDistanceData} object from a
-     * CarSensorEvent object with type {@link CarSensorManager#SENSOR_TYPE_WHEEL_TICK_DISTANCE}.
-     *
-     * @return CarWheelTickDistanceData object corresponding to data contained in the CarSensorEvent
-     * @hide
-     */
-    public CarWheelTickDistanceData getCarWheelTickDistanceData() {
-        checkType(CarSensorManager.SENSOR_TYPE_WHEEL_TICK_DISTANCE);
-        long sensorResetCount = longValues[INDEX_WHEEL_DISTANCE_RESET_COUNT];
-        long frontLeftWheelDistanceMm = longValues[INDEX_WHEEL_DISTANCE_FRONT_LEFT];
-        long frontRightWheelDistanceMm = longValues[INDEX_WHEEL_DISTANCE_FRONT_RIGHT];
-        long rearRightWheelDistanceMm = longValues[INDEX_WHEEL_DISTANCE_REAR_RIGHT];
-        long rearLeftWheelDistanceMm = longValues[INDEX_WHEEL_DISTANCE_REAR_LEFT];
-        return new CarWheelTickDistanceData(timestamp, sensorResetCount, frontLeftWheelDistanceMm,
-            frontRightWheelDistanceMm, rearRightWheelDistanceMm, rearLeftWheelDistanceMm);
-    }
-
-    /** @hide */
-    public static class CarAbsActiveData {
-        public final long timestamp;
-        public final boolean absIsActive;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarAbsActiveData(long timestamp, boolean absIsActive) {
-            this.timestamp = timestamp;
-            this.absIsActive = absIsActive;
-        };
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarAbsActiveData} object from a CarSensorEvent
-     * object with type {@link CarSensorManager#SENSOR_TYPE_ABS_ACTIVE}.
-     *
-     * @return a CarAbsActiveData object corresponding to data contained in the CarSensorEvent.
-     * @hide
-     */
-    public CarAbsActiveData getCarAbsActiveData() {
-        checkType(CarSensorManager.SENSOR_TYPE_ABS_ACTIVE);
-        boolean absIsActive = intValues[0] == 1;
-        return new CarAbsActiveData(timestamp, absIsActive);
-    }
-
-    /** @hide */
-    public static class CarTractionControlActiveData {
-        public final long timestamp;
-        public final boolean tractionControlIsActive;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarTractionControlActiveData(long timestamp, boolean tractionControlIsActive) {
-            this.timestamp = timestamp;
-            this.tractionControlIsActive = tractionControlIsActive;
-        };
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarTractionControlActiveData} object from a
-     * CarSensorEvent object with type {@link CarSensorManager#SENSOR_TYPE_TRACTION_CONTROL_ACTIVE}.
-     *
-     * @return a CarTractionControlActiveData object corresponding to data contained in the
-     *     CarSensorEvent.
-     * @hide
-     */
-    public CarTractionControlActiveData getCarTractionControlActiveData() {
-        checkType(CarSensorManager.SENSOR_TYPE_TRACTION_CONTROL_ACTIVE);
-        boolean tractionControlIsActive = intValues[0] == 1;
-        return new CarTractionControlActiveData(timestamp, tractionControlIsActive);
-    }
-
-    /** @hide */
-    public static class CarFuelDoorOpenData {
-        public final long timestamp;
-        public final boolean fuelDoorIsOpen;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarFuelDoorOpenData(long timestamp, boolean fuelDoorIsOpen) {
-            this.timestamp = timestamp;
-            this.fuelDoorIsOpen = fuelDoorIsOpen;
-        };
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarFuelDoorOpenData} object from a
-     * CarSensorEvent object with type {@link CarSensorManager#SENSOR_TYPE_FUEL_DOOR_OPEN}.
-     *
-     * @return a CarFuelDoorOpenData object corresponding to data contained in the
-     *     CarSensorEvent.
-     * @hide
-     */
-    public CarFuelDoorOpenData getCarFuelDoorOpenData() {
-        checkType(CarSensorManager.SENSOR_TYPE_FUEL_DOOR_OPEN);
-        boolean fuelDoorIsOpen = intValues[0] == 1;
-        return new CarFuelDoorOpenData(timestamp, fuelDoorIsOpen);
-    }
-
-    /** @hide */
-    public static class CarEvBatteryLevelData {
-        public final long timestamp;
-        public final float evBatteryLevel;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarEvBatteryLevelData(long timestamp, float evBatteryLevel) {
-            this.timestamp = timestamp;
-            this.evBatteryLevel = evBatteryLevel;
-        };
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarEvBatteryLevelData} object from a
-     * CarSensorEvent object with type {@link CarSensorManager#SENSOR_TYPE_EV_BATTERY_LEVEL}.
-     *
-     * @return a CarEvBatteryLevelData object corresponding to data contained in the
-     *     CarSensorEvent.
-     * @hide
-     */
-    public CarEvBatteryLevelData getCarEvBatteryLevelData() {
-        checkType(CarSensorManager.SENSOR_TYPE_EV_BATTERY_LEVEL);
-        float evBatteryLevel = -1.0f;
-        if (floatValues != null) {
-            if (floatValues[0] >= 0) {
-                evBatteryLevel = floatValues[0];
-            }
-        }
-        return new CarEvBatteryLevelData(timestamp, evBatteryLevel);
-    }
-
-    /** @hide */
-    public static class CarEvChargePortOpenData {
-        public final long timestamp;
-        public final boolean evChargePortIsOpen;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarEvChargePortOpenData(long timestamp, boolean evChargePortIsOpen) {
-            this.timestamp = timestamp;
-            this.evChargePortIsOpen = evChargePortIsOpen;
-        };
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarEvChargePortOpenData} object from a
-     * CarSensorEvent object with type {@link CarSensorManager#SENSOR_TYPE_EV_CHARGE_PORT_OPEN}.
-     *
-     * @return a CarEvChargePortOpenData object corresponding to data contained in the
-     *     CarSensorEvent.
-     * @hide
-     */
-    public CarEvChargePortOpenData getCarEvChargePortOpenData() {
-        checkType(CarSensorManager.SENSOR_TYPE_EV_CHARGE_PORT_OPEN);
-        boolean evChargePortIsOpen = intValues[0] == 1;
-        return new CarEvChargePortOpenData(timestamp, evChargePortIsOpen);
-    }
-
-    /** @hide */
-    public static class CarEvChargePortConnectedData {
-        public final long timestamp;
-        public final boolean evChargePortIsConnected;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarEvChargePortConnectedData(long timestamp, boolean evChargePortIsConnected) {
-            this.timestamp = timestamp;
-            this.evChargePortIsConnected = evChargePortIsConnected;
-        };
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarEvChargePortConnectedData} object from a
-     * CarSensorEvent object with type {@link CarSensorManager#SENSOR_TYPE_EV_CHARGE_PORT_CONNECTED}.
-     *
-     * @return a CarEvChargePortConnectedData object corresponding to data contained in the
-     *     CarSensorEvent.
-     * @hide
-     */
-    public CarEvChargePortConnectedData getCarEvChargePortConnectedData() {
-        checkType(CarSensorManager.SENSOR_TYPE_EV_CHARGE_PORT_CONNECTED);
-        boolean evChargePortIsConnected = intValues[0] == 1;
-        return new CarEvChargePortConnectedData(timestamp, evChargePortIsConnected);
-    }
-
-    /** @hide */
-    public static class CarEvBatteryChargeRateData {
-        public final long timestamp;
-        public final float evChargeRate;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarEvBatteryChargeRateData(long timestamp, float evChargeRate) {
-            this.timestamp = timestamp;
-            this.evChargeRate = evChargeRate;
-        };
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarEvBatteryChargeRateData} object from a
-     * CarSensorEvent object with type {@link CarSensorManager#SENSOR_TYPE_EV_BATTERY_CHARGE_RATE}.
-     *
-     * @return a CarEvBatteryChargeRateData object corresponding to data contained in the
-     *     CarSensorEvent.
-     * @hide
-     */
-    public CarEvBatteryChargeRateData getCarEvBatteryChargeRateData() {
-        checkType(CarSensorManager.SENSOR_TYPE_EV_BATTERY_CHARGE_RATE);
-        float evChargeRate = 0;
-        if (floatValues != null) {
-            evChargeRate = floatValues[0];
-        }
-        return new CarEvBatteryChargeRateData(timestamp, evChargeRate);
-    }
-
-    /** @hide */
-    public static class CarEngineOilLevelData {
-        public final long timestamp;
-        public final int engineOilLevel;
-
-        /** @hide */
-        @RestrictTo(GROUP_ID)
-        public CarEngineOilLevelData(long timestamp, int engineOilLevel) {
-            this.timestamp = timestamp;
-            this.engineOilLevel = engineOilLevel;
-        };
-    }
-
-    /**
-     * Convenience method for obtaining a {@link CarEngineOilLevelData} object from a
-     * CarSensorEvent object with type {@link CarSensorManager#SENSOR_TYPE_ENGINE_OIL_LEVEL}.
-     *
-     * @return a CarEngineOilLevelData object corresponding to data contained in the
-     *     CarSensorEvent.
-     * @hide
-     */
-    public CarEngineOilLevelData getCarEngineOilLevelData() {
-        checkType(CarSensorManager.SENSOR_TYPE_ENGINE_OIL_LEVEL);
-        int engineOilLevel = VehicleOilLevel.ERROR;
-        if (intValues != null) {
-            engineOilLevel = intValues[0];
-        }
-        return new CarEngineOilLevelData(timestamp, engineOilLevel);
-    }
-
-    /** @hide */
-    @Override
-    public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(getClass().getName() + "[");
-        sb.append("type:" + Integer.toHexString(sensorType));
-        if (floatValues != null && floatValues.length > 0) {
-            sb.append(" float values:");
-            for (float v: floatValues) {
-                sb.append(" " + v);
-            }
-        }
-        if (intValues != null && intValues.length > 0) {
-            sb.append(" int values:");
-            for (int v: intValues) {
-                sb.append(" " + v);
-            }
-        }
-        if (longValues != null && longValues.length > 0) {
-            sb.append(" long values:");
-            for (long v: longValues) {
-                sb.append(" " + v);
-            }
-        }
-        sb.append("]");
-        return sb.toString();
-    }
-}
diff --git a/car-support-lib/src/android/support/car/hardware/CarSensorManager.java b/car-support-lib/src/android/support/car/hardware/CarSensorManager.java
deleted file mode 100644
index 29d6f40..0000000
--- a/car-support-lib/src/android/support/car/hardware/CarSensorManager.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.hardware;
-
-import android.Manifest;
-import android.support.car.Car;
-import android.support.car.CarManagerBase;
-import android.support.car.CarNotConnectedException;
-
-import androidx.annotation.IntDef;
-import androidx.annotation.RequiresPermission;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- *  Enables applications to monitor car sensor data. Applications register listeners to this
- *  manager to subscribe to individual sensor streams using the SENSOR_TYPE_* constants as the
- *  keys. Data points are returned as {@link CarSensorEvent} objects that have translations for
- *  many built-in data types. For vendor extension streams, interpret data based on
- *  vendor-provided documentation.
- */
-public abstract class CarSensorManager implements CarManagerBase {
-    /**
-     * Represent the direction of the car as an angle in degrees measured clockwise with 0 degree
-     * pointing North. Sensor data in {@link CarSensorEvent} is a float (floatValues[0]).
-     */
-    public static final int SENSOR_TYPE_COMPASS = 1;
-    /**
-     * Represent vehicle speed in meters per second (m/s). Sensor data in
-     * {@link CarSensorEvent} is a float >= 0. Requires {@link Car#PERMISSION_SPEED} permission.
-     * @hide
-     */
-    public static final int SENSOR_TYPE_CAR_SPEED = 2;
-    /**
-     * Represent the engine RPM of the car. Sensor data in {@link CarSensorEvent} is a float.
-     * @hide
-     */
-    public static final int SENSOR_TYPE_RPM = 3;
-    /**
-     * Represent the total travel distance of the car in kilometers. Sensor data is a float.
-     * Requires {@link Car#PERMISSION_MILEAGE} permission.
-     * @hide
-     */
-    public static final int SENSOR_TYPE_ODOMETER = 4;
-    /**
-     * Represent the fuel level of the car. In {@link CarSensorEvent},  represents fuel level in
-     * milliliters.  Requires {@link Car#PERMISSION_ENERGY} permission.
-     * @hide
-     */
-    public static final int SENSOR_TYPE_FUEL_LEVEL = 5;
-    /**
-     * Represent the current status of parking brake. Sensor data in {@link CarSensorEvent} is in
-     * intValues[0]. A value of 1 indicates the parking brake is engaged; a value of 0 indicates
-     * the parking brake is not engaged.
-     * For this sensor, rate in {@link #addListener(OnSensorChangedListener, int, int)} is
-     * ignored and all changes are notified.
-     */
-    public static final int SENSOR_TYPE_PARKING_BRAKE = 6;
-    /**
-     * Represent the current position of transmission gear. Sensor data in {@link
-     * CarSensorEvent} is in intValues[0]. For the meaning of the value, check {@link
-     * CarSensorEvent#GEAR_NEUTRAL} and other GEAR_*.
-     * @hide
-     */
-    public static final int SENSOR_TYPE_GEAR = 7;
-
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED8 = 8;
-
-    /**
-     * Represent the current status of the day/night sensor. Sensor data is in intValues[0].
-     */
-    public static final int SENSOR_TYPE_NIGHT = 9;
-    /**
-     * Represent the location. Sensor data is floatValues.
-     * @hide
-     */
-    public static final int SENSOR_TYPE_LOCATION = 10;
-    /**
-     * Represent the current driving status of car. Different user interactions should be used
-     * depending on the current driving status. Driving status is in intValues[0].
-     */
-    public static final int SENSOR_TYPE_DRIVING_STATUS = 11;
-    /**
-     * Environment (such as temperature and pressure).
-     * @hide
-     */
-    public static final int SENSOR_TYPE_ENVIRONMENT = 12;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED13 = 13;
-    /** @hide */
-    public static final int SENSOR_TYPE_ACCELEROMETER = 14;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED15 = 15;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED16 = 16;
-    /** @hide */
-    public static final int SENSOR_TYPE_GPS_SATELLITE = 17;
-    /** @hide */
-    public static final int SENSOR_TYPE_GYROSCOPE = 18;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED19 = 19;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED20 = 20;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED21 = 21;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED22 = 22;
-    /**
-     * Represents wheel distance in millimeters.  Some cars may not have individual sensors on each
-     * wheel.  If a value is not available, -1 will be reported.  The wheel distance accumulates
-     * over time.
-     * Requires {@link Car#PERMISSION_MILEAGE} permission.
-     */
-    public static final int SENSOR_TYPE_WHEEL_TICK_DISTANCE         = 23;
-    /**
-     * Set to true when ABS is active.  This sensor is event driven.
-     * Requires {@link Car#PERMISSION_VEHICLE_DYNAMICS_STATE} permission.
-     */
-    public static final int SENSOR_TYPE_ABS_ACTIVE                  = 24;
-    /**
-     * Set to true when traction control is active.  This sensor is event driven.
-     * Requires {@link Car#PERMISSION_VEHICLE_DYNAMICS_STATE} permission.
-     */
-    public static final int SENSOR_TYPE_TRACTION_CONTROL_ACTIVE     = 25;
-    /** @hide */
-    public static final int SENSOR_TYPE_RESERVED26                  = 26;
-    /**
-     * Set to true if the fuel door is open.
-     */
-    public static final int SENSOR_TYPE_FUEL_DOOR_OPEN              = 27;
-
-    /**
-     * Indicates battery level of the car.
-     * In {@link CarSensorEvent}, represents battery level in WH.
-     * This requires {@link Car#PERMISSION_ENERGY} permission.
-     */
-    public static final int SENSOR_TYPE_EV_BATTERY_LEVEL            = 28;
-    /**
-     * Set to true if EV charging port is open.
-     */
-    public static final int SENSOR_TYPE_EV_CHARGE_PORT_OPEN         = 29;
-    /**
-     * Set to true if EV charging port is connected.
-     */
-    public static final int SENSOR_TYPE_EV_CHARGE_PORT_CONNECTED    = 30;
-    /**
-     *  Indicates the instantaneous battery charging rate in mW.
-     *  This requires {@link Car#PERMISSION_ENERGY} permission.
-     */
-    public static final int SENSOR_TYPE_EV_BATTERY_CHARGE_RATE      = 31;
-    /**
-     * Oil level sensor.
-     * @hide
-     */
-    public static final int SENSOR_TYPE_ENGINE_OIL_LEVEL            = 32;
-
-    /**
-     * Sensors defined in this range [{@link #SENSOR_TYPE_VENDOR_EXTENSION_START},
-     * {@link #SENSOR_TYPE_VENDOR_EXTENSION_END}] are for vendors and should be used only
-     * by the system app to access sensors not defined as standard types.
-     * Sensors supported in this range can vary depending on car models/manufacturers.
-     * Third-party apps should not use sensors in this range as they are not compatible across
-     * all cars; third-party apps that attempt to access a sensor in this range trigger a
-     * security exception (as access is restricted to system apps).
-     *
-     * @hide
-     */
-    public static final int SENSOR_TYPE_VENDOR_EXTENSION_START = 0x60000000;
-    /** @hide */
-    public static final int SENSOR_TYPE_VENDOR_EXTENSION_END   = 0x6fffffff;
-
-    /** @hide */
-    @IntDef({
-        SENSOR_TYPE_COMPASS,
-        SENSOR_TYPE_CAR_SPEED,
-        SENSOR_TYPE_RPM,
-        SENSOR_TYPE_ODOMETER,
-        SENSOR_TYPE_FUEL_LEVEL,
-        SENSOR_TYPE_PARKING_BRAKE,
-        SENSOR_TYPE_GEAR,
-        SENSOR_TYPE_NIGHT,
-        SENSOR_TYPE_LOCATION,
-        SENSOR_TYPE_DRIVING_STATUS,
-        SENSOR_TYPE_ENVIRONMENT,
-        SENSOR_TYPE_ACCELEROMETER,
-        SENSOR_TYPE_GPS_SATELLITE,
-        SENSOR_TYPE_GYROSCOPE,
-        SENSOR_TYPE_WHEEL_TICK_DISTANCE,
-        SENSOR_TYPE_ABS_ACTIVE,
-        SENSOR_TYPE_TRACTION_CONTROL_ACTIVE,
-        SENSOR_TYPE_FUEL_DOOR_OPEN,
-        SENSOR_TYPE_EV_BATTERY_LEVEL,
-        SENSOR_TYPE_EV_CHARGE_PORT_OPEN,
-        SENSOR_TYPE_EV_CHARGE_PORT_CONNECTED,
-        SENSOR_TYPE_EV_BATTERY_CHARGE_RATE,
-        SENSOR_TYPE_ENGINE_OIL_LEVEL,
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface SensorType {}
-
-    /** Read sensor at the default normal rate set for each sensors. This is default rate. */
-    public static final int SENSOR_RATE_NORMAL  = 1;
-    /**@hide*/
-    public static final int SENSOR_RATE_UI = 5;
-    /**@hide*/
-    public static final int SENSOR_RATE_FAST = 10;
-    /** Read sensor at the maximum rate. Actual rate will be different depending on the sensor. */
-    public static final int SENSOR_RATE_FASTEST = 100;
-
-    /** @hide */
-    @IntDef({
-        SENSOR_RATE_NORMAL,
-        SENSOR_RATE_UI,
-        SENSOR_RATE_FAST,
-        SENSOR_RATE_FASTEST
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface SensorRate {}
-
-    /**
-     * Listener for car sensor data change.
-     * Callbacks are called in the Looper context.
-     */
-    public interface OnSensorChangedListener {
-        /**
-         * Called when there is new sensor data from car.
-         * @param manager The manager the listener is attached to.  Useful if the app wished to
-         * unregister.
-         * @param event Incoming sensor event for the given sensor type.
-         */
-        void onSensorChanged(final CarSensorManager manager, final CarSensorEvent event);
-    }
-
-    /**
-     * Get the list of CarSensors available in the connected car.
-     * @return Array of all sensor types supported.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract int[] getSupportedSensors() throws CarNotConnectedException;
-
-    /**
-     * Indicate support for a given sensor.
-     * @param sensorType
-     * @return Returns {@code true} if the sensor is supported.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract boolean isSensorSupported(@SensorType int sensorType)
-            throws CarNotConnectedException;
-
-    /**
-     * Register {@link OnSensorChangedListener} to get repeated sensor updates. Can register
-     * multiple listeners for a single sensor or use the same listener for different
-     * sensors. If the same listener is registered again for the same sensor, it is ignored or
-     * updated (depending on the rate).
-     * <p>
-     * The {@link OnSensorChangedListener} is the identifier for the request and the same
-     * instance must be passed into {@link #removeListener(OnSensorChangedListener)}.
-     * <p>
-     *
-     * @param sensorType Sensor type to subscribe.
-     * @param rate How fast sensor events are delivered. Should be one of
-     *        {@link #SENSOR_RATE_FASTEST} or {@link #SENSOR_RATE_NORMAL}. Rate may not be
-     *        respected, especially when the same sensor is registered with a different listener
-     *        and with different rates.
-     * @return Returns {@code true} if the sensor was successfully enabled.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     * @throws IllegalArgumentException if wrong argument (such as wrong rate).
-     * @throws SecurityException if missing the appropriate permission.
-     */
-    @RequiresPermission(anyOf={Manifest.permission.ACCESS_FINE_LOCATION, Car.PERMISSION_SPEED,
-            Car.PERMISSION_MILEAGE, Car.PERMISSION_ENERGY, Car.PERMISSION_VEHICLE_DYNAMICS_STATE},
-            conditional=true)
-    public abstract boolean addListener(OnSensorChangedListener listener,
-            @SensorType int sensorType, @SensorRate int rate)
-                    throws CarNotConnectedException, IllegalArgumentException;
-
-    /**
-     * Stop getting sensor updates for the given listener. If there are multiple registrations for
-     * this listener, all listening is stopped.
-     * @param listener The listener to remove.
-     */
-    public abstract  void removeListener(OnSensorChangedListener listener);
-
-    /**
-     * Stop getting sensor updates for the given listener and sensor. If the same listener is used
-     * for other sensors, those subscriptions are not affected.
-     * @param listener The listener to remove.
-     * @param sensorType The type to stop receiving notifications for.
-     */
-    public abstract  void removeListener(OnSensorChangedListener listener,
-            @SensorType int sensorType);
-
-    /**
-     * Get the most recent CarSensorEvent for the given type.
-     * @param type A sensor to request.
-     * @return null if no sensor update since connection to the car.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract CarSensorEvent getLatestSensorEvent(@SensorType int type)
-            throws CarNotConnectedException;
-
-    /**
-     * Get the config data for the given type.
-     * @param sensor type to request
-     * @return CarSensorConfig object
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     * @hide
-     */
-    public abstract CarSensorConfig getSensorConfig(@SensorType int type)
-            throws CarNotConnectedException;
-
-}
diff --git a/car-support-lib/src/android/support/car/hardware/CarSensorManagerEmbedded.java b/car-support-lib/src/android/support/car/hardware/CarSensorManagerEmbedded.java
deleted file mode 100644
index a8d8d28..0000000
--- a/car-support-lib/src/android/support/car/hardware/CarSensorManagerEmbedded.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.hardware;
-
-import static androidx.annotation.RestrictTo.Scope.GROUP_ID;
-
-import android.content.Context;
-import android.support.car.CarNotConnectedException;
-
-import androidx.annotation.RestrictTo;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Set;
-
-/**
- *  @hide
- */
-@RestrictTo(GROUP_ID)
-public class CarSensorManagerEmbedded extends CarSensorManager {
-    private static final String TAG = "CarSensorsProxy";
-
-    private final android.car.hardware.CarSensorManager mManager;
-    private final CarSensorsProxy mCarSensorsProxy;
-    private final LinkedList<OnSensorChangedListenerProxy> mListeners = new LinkedList<>();
-
-    public CarSensorManagerEmbedded(Object manager, Context context) {
-        mManager = (android.car.hardware.CarSensorManager) manager;
-        mCarSensorsProxy = new CarSensorsProxy(this, context);
-    }
-
-    @Override
-    public int[] getSupportedSensors() throws CarNotConnectedException {
-        try {
-            Set<Integer> sensorsSet = new HashSet<Integer>();
-            for (Integer sensor : mManager.getSupportedSensors()) {
-                sensorsSet.add(sensor);
-            }
-            for (Integer proxySensor : mCarSensorsProxy.getSupportedSensors()) {
-                sensorsSet.add(proxySensor);
-            }
-            return toIntArray(sensorsSet);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    private static int[] toIntArray(Collection<Integer> collection) {
-        int len = collection.size();
-        int[] arr = new int[len];
-        int arrIndex = 0;
-        for (Integer item : collection) {
-            arr[arrIndex] = item;
-            arrIndex++;
-        }
-        return arr;
-    }
-
-    @Override
-    public boolean isSensorSupported(int sensorType) throws CarNotConnectedException {
-        try {
-            return mManager.isSensorSupported(sensorType)
-                    || mCarSensorsProxy.isSensorSupported(sensorType);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    private boolean isSensorProxied(int sensorType) throws CarNotConnectedException {
-        try {
-            return !mManager.isSensorSupported(sensorType)
-                    && mCarSensorsProxy.isSensorSupported(sensorType);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public boolean addListener(OnSensorChangedListener listener, int sensorType,
-            int rate) throws CarNotConnectedException, IllegalArgumentException {
-        if (isSensorProxied(sensorType)) {
-            return mCarSensorsProxy.registerSensorListener(listener, sensorType, rate);
-        }
-        OnSensorChangedListenerProxy proxy = null;
-        synchronized (this) {
-            proxy = findListenerLocked(listener);
-            if (proxy == null) {
-                proxy = new OnSensorChangedListenerProxy(listener, sensorType, this);
-                mListeners.add(proxy);
-            } else {
-                proxy.sensors.add(sensorType);
-            }
-        }
-        try {
-            return mManager.registerListener(proxy, sensorType, rate);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public void removeListener(OnSensorChangedListener listener) {
-        mCarSensorsProxy.unregisterSensorListener(listener);
-        OnSensorChangedListenerProxy proxy = null;
-        synchronized (this) {
-            proxy = findListenerLocked(listener);
-            if (proxy == null) {
-                return;
-            }
-            mListeners.remove(proxy);
-        }
-        mManager.unregisterListener(proxy);
-    }
-
-    @Override
-    public void removeListener(OnSensorChangedListener listener, int sensorType) {
-        mCarSensorsProxy.unregisterSensorListener(listener, sensorType);
-        OnSensorChangedListenerProxy proxy = null;
-        synchronized (this) {
-            proxy = findListenerLocked(listener);
-            if (proxy == null) {
-                return;
-            }
-            proxy.sensors.remove(sensorType);
-            if (proxy.sensors.isEmpty()) {
-                mListeners.remove(proxy);
-            }
-        }
-        mManager.unregisterListener(proxy, sensorType);
-    }
-
-    @Override
-    public CarSensorEvent getLatestSensorEvent(int type) throws CarNotConnectedException {
-        if (isSensorProxied(type)) {
-            return mCarSensorsProxy.getLatestSensorEvent(type);
-        }
-        try {
-            return convert(mManager.getLatestSensorEvent(type));
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public CarSensorConfig getSensorConfig(@SensorType int type)
-        throws CarNotConnectedException {
-        try {
-            return convert(mManager.getSensorConfig(type));
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public void onCarDisconnected() {
-        //nothing to do
-    }
-
-    private OnSensorChangedListenerProxy findListenerLocked(OnSensorChangedListener listener) {
-        for (OnSensorChangedListenerProxy proxy : mListeners) {
-            if (proxy.listener == listener) {
-                return proxy;
-            }
-        }
-        return null;
-    }
-
-    private static CarSensorEvent convert(android.car.hardware.CarSensorEvent event) {
-        if (event == null) {
-            return null;
-        }
-        return new CarSensorEvent(event.sensorType, event.timestamp, event.floatValues,
-                event.intValues, event.longValues);
-    }
-
-    private static CarSensorConfig convert(android.car.hardware.CarSensorConfig cfg) {
-        if (cfg == null) {
-            return null;
-        }
-        return new CarSensorConfig(cfg.getType(), cfg.getBundle());
-    }
-
-    private static class OnSensorChangedListenerProxy
-            implements android.car.hardware.CarSensorManager.OnSensorChangedListener {
-
-        public final OnSensorChangedListener listener;
-        public final Set<Integer> sensors = new HashSet<>();
-        public final CarSensorManager manager;
-
-        OnSensorChangedListenerProxy(OnSensorChangedListener listener, int sensor,
-                CarSensorManager manager) {
-            this.listener = listener;
-            this.sensors.add(sensor);
-            this.manager = manager;
-        }
-
-        @Override
-        public void onSensorChanged(android.car.hardware.CarSensorEvent event) {
-            CarSensorEvent newEvent = convert(event);
-            listener.onSensorChanged(manager, newEvent);
-        }
-    }
-}
diff --git a/car-support-lib/src/android/support/car/hardware/CarSensorsProxy.java b/car-support-lib/src/android/support/car/hardware/CarSensorsProxy.java
deleted file mode 100644
index 69feb84..0000000
--- a/car-support-lib/src/android/support/car/hardware/CarSensorsProxy.java
+++ /dev/null
@@ -1,498 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.hardware;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-import android.location.GpsSatellite;
-import android.location.GpsStatus;
-import android.location.Location;
-import android.location.LocationListener;
-import android.location.LocationManager;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * CarSensorsProxy adds car sensors implementation for sensors that are not provided by vehicle HAL.
- * @hide
- */
-class CarSensorsProxy {
-    private static final String TAG = "CarSensorsProxy";
-    private static final int MSG_SENSORT_EVENT = 1;
-
-    // @GuardedBy("this")
-    private final Map<Integer, Set<CarSensorManager.OnSensorChangedListener>> mListenersMultiMap;
-    private final LocationManager mLocationManager;
-    private final SensorManager mSensorManager;
-    private final Sensor mAccelerometerSensor;
-    private final Sensor mMagneticFieldSensor;
-    private final Sensor mGyroscopeSensor;
-    private final int[] mSupportedSensors;
-
-    // returned with the onSensorChanged messages.
-    private final CarSensorManager mCarSensorManager;
-
-    // @GuardedBy("this")
-    private Location mLastLocation;
-    // @GuardedBy("this")
-    private GpsStatus mLastGpsStatus;
-    // @GuardedBy("this")
-    private float[] mLastAccelerometerData = new float[3];
-    // @GuardedBy("this")
-    private float[] mLastMagneticFieldData = new float[3];
-    // @GuardedBy("this")
-    private float[] mLastGyroscopeData = new float[3];
-    // @GuardedBy("this")
-    private float[] mR = new float[16];
-    // @GuardedBy("this")
-    private float[] mI = new float[16];
-    // @GuardedBy("this")
-    private float[] mOrientation = new float[3];
-    // @GuardedBy("this")
-    private long mLastLocationTime;
-    // @GuardedBy("this")
-    private long mLastGpsStatusTime;
-    // @GuardedBy("this")
-    private long mLastAccelerometerDataTime;
-    // @GuardedBy("this")
-    private long mLastMagneticFieldDataTime;
-    // @GuardedBy("this")
-    private long mLastGyroscopeDataTime;
-
-    private final GpsStatus.Listener mGpsStatusListener = new GpsStatus.Listener() {
-            @Override
-            public void onGpsStatusChanged(int event) {
-                if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) {
-                    synchronized (CarSensorsProxy.this) {
-                        mLastGpsStatus = mLocationManager.getGpsStatus(mLastGpsStatus);
-                        mLastGpsStatusTime = System.nanoTime();
-                    }
-                    pushSensorChanges(CarSensorManager.SENSOR_TYPE_GPS_SATELLITE);
-                }
-            }
-        };
-
-    private final LocationListener mLocationListener = new LocationListener() {
-            @Override
-            public void onLocationChanged(Location location) {
-                synchronized (CarSensorsProxy.this) {
-                    mLastLocation = location;
-                    mLastLocationTime = System.nanoTime();
-                }
-                pushSensorChanges(CarSensorManager.SENSOR_TYPE_LOCATION);
-            }
-
-            @Override
-            public void onProviderEnabled(String provider) {
-            }
-
-            @Override
-            public void onProviderDisabled(String provider) {
-            }
-
-            @Override
-            public void onStatusChanged(String provider, int status, Bundle extras) {
-            }
-        };
-
-    private final SensorEventListener mSensorListener = new SensorEventListener() {
-            @Override
-            public void onSensorChanged(SensorEvent event) {
-                int type = event.sensor.getType();
-                synchronized (CarSensorsProxy.this) {
-                    switch (type) {
-                        case Sensor.TYPE_GYROSCOPE:
-                            System.arraycopy((Object) event.values, 0, (Object) mLastGyroscopeData, 0, 3);
-                            mLastGyroscopeDataTime = System.nanoTime();
-                            pushSensorChanges(CarSensorManager.SENSOR_TYPE_GYROSCOPE);
-                            break;
-                        case Sensor.TYPE_MAGNETIC_FIELD:
-                            System.arraycopy((Object) event.values, 0, (Object) mLastMagneticFieldData, 0, 3);
-                            mLastMagneticFieldDataTime = System.nanoTime();
-                            pushSensorChanges(CarSensorManager.SENSOR_TYPE_COMPASS);
-                            break;
-                        case Sensor.TYPE_ACCELEROMETER:
-                            System.arraycopy((Object) event.values, 0, (Object) mLastAccelerometerData, 0, 3);
-                            mLastAccelerometerDataTime = System.nanoTime();
-                            pushSensorChanges(CarSensorManager.SENSOR_TYPE_ACCELEROMETER);
-                            pushSensorChanges(CarSensorManager.SENSOR_TYPE_COMPASS);
-                            break;
-                        default:
-                            Log.w(TAG, "Unexpected sensor event type: " + type);
-                            // Should never happen.
-                            return;
-                    }
-                }
-            }
-
-            @Override
-            public void onAccuracyChanged(Sensor sensor, int accuracy) {}
-        };
-
-    private final Handler mHandler = new Handler() {
-            @Override
-            public void handleMessage(Message msg) {
-                switch (msg.what) {
-                    case MSG_SENSORT_EVENT:
-                        int sensorType = msg.arg1;
-                        Collection<CarSensorManager.OnSensorChangedListener> listenersCollection;
-                        synchronized (CarSensorsProxy.this) {
-                            listenersCollection = mListenersMultiMap.get(sensorType);
-                        }
-                        CarSensorEvent event = (CarSensorEvent) msg.obj;
-                        if (event != null) {
-                            for (CarSensorManager.OnSensorChangedListener listener :
-                                         listenersCollection) {
-                                listener.onSensorChanged(mCarSensorManager, event);
-                            }
-                        }
-                        break;
-                    default:
-                        Log.w(TAG, "Unexpected msg dispatched. msg: " + msg);
-                        super.handleMessage(msg);
-                }
-            }
-        };
-
-    CarSensorsProxy(CarSensorManager carSensorManager, Context context) {
-        mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
-        mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
-        mAccelerometerSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
-        mMagneticFieldSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
-        mGyroscopeSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
-        mListenersMultiMap = new HashMap<Integer, Set<CarSensorManager.OnSensorChangedListener>>();
-        mSupportedSensors = initSupportedSensors(context);
-        mCarSensorManager = carSensorManager;
-    }
-
-    private int[] initSupportedSensors(Context context) {
-        Set<Integer> features = new HashSet<>();
-        PackageManager packageManager = context.getPackageManager();
-        if (packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)
-                && packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER)) {
-            features.add(CarSensorManager.SENSOR_TYPE_COMPASS);
-        }
-        if (packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_ACCELEROMETER)) {
-            features.add(CarSensorManager.SENSOR_TYPE_ACCELEROMETER);
-        }
-        if (packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_GYROSCOPE)) {
-            features.add(CarSensorManager.SENSOR_TYPE_GYROSCOPE);
-        }
-        if (packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION)) {
-            features.add(CarSensorManager.SENSOR_TYPE_LOCATION);
-            features.add(CarSensorManager.SENSOR_TYPE_GPS_SATELLITE);
-        }
-        return toIntArray(features);
-    }
-
-    private static int[] toIntArray(Collection<Integer> collection) {
-        int len = collection.size();
-        int[] arr = new int[len];
-        int arrIndex = 0;
-        for (Integer item : collection) {
-            arr[arrIndex] = item;
-            arrIndex++;
-        }
-        return arr;
-    }
-
-
-    public boolean isSensorSupported(int sensorType) {
-        for (int sensor : mSupportedSensors) {
-            if (sensor == sensorType) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public int[] getSupportedSensors() {
-        return mSupportedSensors;
-    }
-
-    public boolean registerSensorListener(CarSensorManager.OnSensorChangedListener listener,
-            int sensorType, int rate) {
-        // current implementation ignores rate.
-        boolean sensorSetChanged = false;
-        synchronized (this) {
-            if (mListenersMultiMap.get(sensorType) == null) {
-                mListenersMultiMap.put(sensorType,
-                                       new HashSet<CarSensorManager.OnSensorChangedListener>());
-                sensorSetChanged = true;
-            }
-            mListenersMultiMap.get(sensorType).add(listener);
-        }
-
-        pushSensorChanges(sensorType);
-
-        if (sensorSetChanged) {
-            updateSensorListeners();
-        }
-        return true;
-    }
-
-    public void unregisterSensorListener(CarSensorManager.OnSensorChangedListener listener,
-            int sensorType) {
-        if (listener == null) {
-            return;
-        }
-        boolean sensorSetChanged = false;
-        synchronized (this) {
-            Set<CarSensorManager.OnSensorChangedListener> sensorTypeListeneres =
-                    mListenersMultiMap.get(sensorType);
-            if (sensorTypeListeneres != null) {
-                sensorTypeListeneres.remove(listener);
-                if (sensorTypeListeneres.isEmpty()) {
-                    mListenersMultiMap.remove(sensorType);
-                    sensorSetChanged = true;
-                }
-            }
-        }
-        if (sensorSetChanged) {
-            updateSensorListeners();
-        };
-    }
-
-    public void unregisterSensorListener(CarSensorManager.OnSensorChangedListener listener) {
-        if (listener == null) {
-            return;
-        }
-        Set<Integer> sensorsToRemove = new HashSet<>();
-        synchronized (this) {
-            for (Map.Entry<Integer, Set<CarSensorManager.OnSensorChangedListener>> entry :
-                         mListenersMultiMap.entrySet()) {
-                if (entry.getValue().contains(listener)) {
-                    entry.getValue().remove(listener);
-                }
-                if (entry.getValue().isEmpty()) {
-                    sensorsToRemove.add(entry.getKey());
-                }
-            }
-        }
-        if (!sensorsToRemove.isEmpty()) {
-            for (Integer s : sensorsToRemove) {
-                mListenersMultiMap.remove(s);
-            }
-            updateSensorListeners();
-        };
-    }
-
-    public CarSensorEvent getLatestSensorEvent(int type) {
-        return getSensorEvent(type);
-    }
-
-    private void pushSensorChanges(int sensorType) {
-        CarSensorEvent event = getSensorEvent(sensorType);
-        if (event == null) {
-            return;
-        }
-        Message msg = mHandler.obtainMessage(MSG_SENSORT_EVENT, sensorType, 0, event);
-        mHandler.sendMessage(msg);
-    }
-
-    private CarSensorEvent getSensorEvent(int sensorType) {
-        CarSensorEvent event = null;
-        synchronized (this) {
-            switch (sensorType) {
-                case CarSensorManager.SENSOR_TYPE_COMPASS:
-                    if (mLastMagneticFieldDataTime != 0 && mLastAccelerometerDataTime != 0) {
-                        event = new CarSensorEvent(sensorType, Math.max(mLastMagneticFieldDataTime,
-                                mLastAccelerometerDataTime), 3, 0, 0);
-                        SensorManager.getRotationMatrix(mR, mI, mLastAccelerometerData,
-                                mLastMagneticFieldData);
-                        SensorManager.getOrientation(mR, mOrientation);
-                        event.floatValues[CarSensorEvent.INDEX_COMPASS_BEARING] =
-                                (float) Math.toDegrees(mOrientation[0]);
-                        event.floatValues[CarSensorEvent.INDEX_COMPASS_PITCH] =
-                                (float) Math.toDegrees(mOrientation[1]);
-                        event.floatValues[CarSensorEvent.INDEX_COMPASS_ROLL] =
-                                (float) Math.toDegrees(mOrientation[2]);
-                    }
-                    break;
-                case CarSensorManager.SENSOR_TYPE_LOCATION:
-                    if (mLastLocationTime != 0) {
-                        event = new CarSensorEvent(sensorType, mLastLocationTime, 6, 3, 0);
-                        populateLocationCarSensorEvent(event, mLastLocation);
-                    }
-                    break;
-                case CarSensorManager.SENSOR_TYPE_ACCELEROMETER:
-                    if (mLastAccelerometerDataTime != 0) {
-                        event = new CarSensorEvent(sensorType, mLastAccelerometerDataTime, 3, 0, 0);
-                        event.floatValues[CarSensorEvent.INDEX_ACCELEROMETER_X] =
-                                mLastAccelerometerData[0];
-                        event.floatValues[CarSensorEvent.INDEX_ACCELEROMETER_Y] =
-                                mLastAccelerometerData[1];
-                        event.floatValues[CarSensorEvent.INDEX_ACCELEROMETER_Z] =
-                                mLastAccelerometerData[2];
-                    }
-                    break;
-                case CarSensorManager.SENSOR_TYPE_GPS_SATELLITE:
-                    if (mLastGpsStatusTime != 0) {
-                        event = createGpsStatusCarSensorEvent(mLastGpsStatus);
-                    }
-                    break;
-                case CarSensorManager.SENSOR_TYPE_GYROSCOPE:
-                    if (mLastGyroscopeDataTime != 0) {
-                        event = new CarSensorEvent(sensorType, mLastGyroscopeDataTime, 3, 0, 0);
-                        event.floatValues[CarSensorEvent.INDEX_GYROSCOPE_X] = mLastGyroscopeData[0];
-                        event.floatValues[CarSensorEvent.INDEX_GYROSCOPE_Y] = mLastGyroscopeData[1];
-                        event.floatValues[CarSensorEvent.INDEX_GYROSCOPE_Z] = mLastGyroscopeData[2];
-                    }
-                    break;
-                default:
-                    // Should not happen.
-                    Log.w(TAG, "[getSensorEvent]: Unsupported sensor type:" + sensorType);
-                    return null;
-            }
-        }
-        return event;
-    }
-
-    private void populateLocationCarSensorEvent(CarSensorEvent event, Location location) {
-        if (location == null) {
-            return;
-        }
-        int present = 0;
-        present |= (0x1 << CarSensorEvent.INDEX_LOCATION_LONGITUDE);
-        event.intValues[CarSensorEvent.INDEX_LOCATION_LONGITUDE_INTS] =
-                (int) (location.getLongitude() * 1E7);
-
-        present |= (0x1 << CarSensorEvent.INDEX_LOCATION_LATITUDE);
-        event.intValues[CarSensorEvent.INDEX_LOCATION_LATITUDE_INTS] =
-                (int) (location.getLatitude() * 1E7);
-
-        if (location.hasAccuracy()) {
-            present |= (0x1 << CarSensorEvent.INDEX_LOCATION_ACCURACY);
-            event.floatValues[CarSensorEvent.INDEX_LOCATION_ACCURACY] = location.getAccuracy();
-        }
-
-        if (location.hasAltitude()) {
-            present |= (0x1 << CarSensorEvent.INDEX_LOCATION_ALTITUDE);
-            event.floatValues[CarSensorEvent.INDEX_LOCATION_ALTITUDE] =
-                    (float) location.getAltitude();
-        }
-
-        if (location.hasSpeed()) {
-            present |= (0x1 << CarSensorEvent.INDEX_LOCATION_SPEED);
-            event.floatValues[CarSensorEvent.INDEX_LOCATION_SPEED] = location.getSpeed();
-        }
-
-        if (location.hasBearing()) {
-            present |= (0x1 << CarSensorEvent.INDEX_LOCATION_BEARING);
-            event.floatValues[CarSensorEvent.INDEX_LOCATION_BEARING] = location.getBearing();
-        }
-
-        event.intValues[0] = present;
-    }
-
-    private CarSensorEvent createGpsStatusCarSensorEvent(GpsStatus gpsStatus) {
-        CarSensorEvent event = null;
-
-        if (gpsStatus == null) {
-            return event;
-        }
-
-        int numberInView = 0;
-        int numberInUse = 0;
-        for (GpsSatellite satellite : gpsStatus.getSatellites()) {
-            ++numberInView;
-            if (satellite.usedInFix()) {
-                ++numberInUse;
-            }
-        }
-        int floatValuesSize = CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_FLOAT_INTERVAL * numberInView
-                + CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_FLOAT_OFFSET;
-        int intValuesSize = CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_INT_INTERVAL * numberInView
-                + CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_INT_OFFSET;
-        event = new CarSensorEvent(CarSensorManager.SENSOR_TYPE_GPS_SATELLITE, mLastGpsStatusTime,
-                floatValuesSize, intValuesSize, 0);
-        event.intValues[CarSensorEvent.INDEX_GPS_SATELLITE_NUMBER_IN_USE] = numberInUse;
-        event.intValues[CarSensorEvent.INDEX_GPS_SATELLITE_NUMBER_IN_VIEW] = numberInView;
-        int i = 0;
-        for (GpsSatellite satellite : gpsStatus.getSatellites()) {
-            int iInt = CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_INT_OFFSET
-                    + CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_INT_INTERVAL * i;
-            int iFloat = CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_FLOAT_OFFSET
-                    + CarSensorEvent.INDEX_GPS_SATELLITE_ARRAY_FLOAT_INTERVAL * i;
-            event.floatValues[iFloat + CarSensorEvent.INDEX_GPS_SATELLITE_PRN_OFFSET] =
-                    satellite.getPrn();
-            event.floatValues[iFloat + CarSensorEvent.INDEX_GPS_SATELLITE_SNR_OFFSET] =
-                    satellite.getSnr();
-            event.floatValues[iFloat + CarSensorEvent.INDEX_GPS_SATELLITE_AZIMUTH_OFFSET] =
-                    satellite.getAzimuth();
-            event.floatValues[iFloat + CarSensorEvent.INDEX_GPS_SATELLITE_ELEVATION_OFFSET] =
-                    satellite.getElevation();
-            event.intValues[iInt] = satellite.usedInFix() ? 1 : 0;
-            i++;
-        }
-        return event;
-    }
-
-    private void updateSensorListeners() {
-        Set<Integer> activeSensors;
-        synchronized (this) {
-            activeSensors = mListenersMultiMap.keySet();
-        }
-
-        if (activeSensors.contains(CarSensorManager.SENSOR_TYPE_LOCATION)
-            && mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
-            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
-                    mLocationListener);
-        } else {
-            mLocationManager.removeUpdates(mLocationListener);
-        }
-
-        if (activeSensors.contains(CarSensorManager.SENSOR_TYPE_GPS_SATELLITE)) {
-            mLocationManager.addGpsStatusListener(mGpsStatusListener);
-        } else {
-            mLocationManager.removeGpsStatusListener(mGpsStatusListener);
-        }
-
-        if (activeSensors.contains(CarSensorManager.SENSOR_TYPE_ACCELEROMETER)
-                || activeSensors.contains(CarSensorManager.SENSOR_TYPE_COMPASS)) {
-            mSensorManager.registerListener(mSensorListener, mAccelerometerSensor,
-                    SensorManager.SENSOR_DELAY_FASTEST);
-        } else {
-            mSensorManager.unregisterListener(mSensorListener, mAccelerometerSensor);
-        }
-
-        if (activeSensors.contains(CarSensorManager.SENSOR_TYPE_COMPASS)) {
-            mSensorManager.registerListener(mSensorListener, mMagneticFieldSensor,
-                    SensorManager.SENSOR_DELAY_FASTEST);
-        } else {
-            mSensorManager.unregisterListener(mSensorListener, mMagneticFieldSensor);
-        }
-
-        if (activeSensors.contains(CarSensorManager.SENSOR_TYPE_GYROSCOPE)) {
-            mSensorManager.registerListener(mSensorListener, mGyroscopeSensor,
-                    SensorManager.SENSOR_DELAY_FASTEST);
-        } else {
-            mSensorManager.unregisterListener(mSensorListener, mGyroscopeSensor);
-        }
-    }
-}
diff --git a/car-support-lib/src/android/support/car/input/CarEditable.java b/car-support-lib/src/android/support/car/input/CarEditable.java
deleted file mode 100644
index dfa7571..0000000
--- a/car-support-lib/src/android/support/car/input/CarEditable.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.input;
-
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputConnection;
-
-/**
- * Views that implement this interface are editable by the Car IME system.
- * @hide
- */
-public interface CarEditable {
-    InputConnection onCreateInputConnection(EditorInfo outAttrs);
-    void setCarEditableListener(CarEditableListener listener);
-    void setInputEnabled(boolean enabled);
-}
diff --git a/car-support-lib/src/android/support/car/input/CarEditableListener.java b/car-support-lib/src/android/support/car/input/CarEditableListener.java
deleted file mode 100644
index bca02cb..0000000
--- a/car-support-lib/src/android/support/car/input/CarEditableListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.input;
-
-/**
- * Callbacks from the {@link CarEditable} to the Car IME. These methods should be called on
- * the main thread.
- * @hide
- */
-public interface CarEditableListener {
-    /**
-     * Callback to indicate that the selection has changed on the current {@link CarEditable}. Note
-     * that selection changes include cursor movements.
-     * @param oldSelStart the old selection starting index
-     * @param oldSelEnd the old selection ending index
-     * @param newSelStart the new selection starting index
-     * @param newSelEnd the new selection ending index
-     */
-    void onUpdateSelection(int oldSelStart, int oldSelEnd, int newSelStart, int newSelEnd);
-}
\ No newline at end of file
diff --git a/car-support-lib/src/android/support/car/input/CarInputManager.java b/car-support-lib/src/android/support/car/input/CarInputManager.java
deleted file mode 100644
index 0704a54..0000000
--- a/car-support-lib/src/android/support/car/input/CarInputManager.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.input;
-
-import android.widget.EditText;
-
-/**
- *  Manages use of the in-car IME. All methods should only be called on the main thread.
- *  Instances should be obtained by calling
- *  {@link android.support.car.app.CarActivity#getInputManager()}.
- *  @hide
- */
-public abstract class CarInputManager {
-    /**
-     * Starts input on the requested {@link android.widget.EditText}, showing the IME.
-     * If IME input is already occurring for another view, this call stops input on the previous
-     * view and starts input on the new view.
-     *
-     * This method must only be called from the UI thread. Calling this method from a stopped
-     * activity is an illegal operation.
-     */
-    abstract public void startInput(EditText view);
-
-    /**
-     * Stops input, hiding the IME. This method fails silently if the calling application didn't
-     * request input and isn't the active IME.
-     *
-     * This function must only be called from the UI thread.
-     */
-    abstract public void stopInput();
-
-    /**
-     * Returns {@code true} while the InputManager is valid. The InputManager is valid as long as
-     * the {@link android.support.car.app.CarActivity} from which it was obtained has
-     * been created and not destroyed.
-     */
-    abstract public boolean isValid();
-
-    /**
-     * Returns {@code true} if this InputManager is valid and the IME is active.
-     */
-    abstract public boolean isInputActive();
-
-    /**
-     * Returns {@code true} if IME is active on the given {@link android.widget.EditText}.
-     */
-    abstract public boolean isCurrentCarEditable(EditText view);
-
-}
diff --git a/car-support-lib/src/android/support/car/input/CarRestrictedEditText.java b/car-support-lib/src/android/support/car/input/CarRestrictedEditText.java
deleted file mode 100644
index a19dff1..0000000
--- a/car-support-lib/src/android/support/car/input/CarRestrictedEditText.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.input;
-
-import android.content.Context;
-import android.text.InputType;
-import android.util.AttributeSet;
-import android.view.ActionMode;
-import android.view.KeyEvent;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputConnection;
-import android.view.inputmethod.InputConnectionWrapper;
-import android.widget.EditText;
-import android.widget.TextView;
-
-/**
- * A special EditText for use in-car. This EditText:
- * <ul>
- *     <li>Disables selection</li>
- *     <li>Disables Cut/Copy/Paste</li>
- *     <li>Force-disables suggestions</li>
- * </ul>
- * @hide
- */
-public class CarRestrictedEditText extends EditText implements CarEditable {
-
-    private static final boolean SELECTION_CLAMPING_ENABLED = false;
-
-    private int mLastSelEnd = 0;
-    private int mLastSelStart = 0;
-    private boolean mCursorClamped;
-
-    private CarEditableListener mCarEditableListener;
-    private KeyListener mListener;
-
-    public interface KeyListener {
-        void onKeyDown(int keyCode);
-        void onKeyUp(int keyCode);
-        void onCommitText(String input);
-        void onCloseKeyboard();
-        void onDelete();
-    }
-
-    public CarRestrictedEditText(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setInputType(getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
-        setTextIsSelectable(false);
-        setSelection(getText().length());
-        mCursorClamped = true;
-        setOnEditorActionListener(new OnEditorActionListener() {
-            @Override
-            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-                if (mListener != null && actionId == EditorInfo.IME_ACTION_DONE) {
-                    mListener.onCloseKeyboard();
-                }
-                // Return false because we don't want to hijack the default behavior.
-                return false;
-            }
-        });
-    }
-
-    public void setKeyListener(KeyListener listener) {
-        mListener = listener;
-    }
-
-    @SuppressWarnings("unused")
-    @Override
-    protected void onSelectionChanged(int selStart, int selEnd) {
-        if (mCursorClamped && SELECTION_CLAMPING_ENABLED) {
-            setSelection(mLastSelStart, mLastSelEnd);
-            return;
-        }
-        if (mCarEditableListener != null) {
-            mCarEditableListener.onUpdateSelection(mLastSelStart, mLastSelEnd, selStart, selEnd);
-        }
-        mLastSelStart = selStart;
-        mLastSelEnd = selEnd;
-    }
-
-    @Override
-    public ActionMode startActionMode(ActionMode.Callback callback) {
-        return null;
-    }
-
-    @Override
-    public void setCarEditableListener(CarEditableListener listener) {
-        mCarEditableListener = listener;
-    }
-
-    @Override
-    public void setInputEnabled(boolean enabled) {
-        mCursorClamped = !enabled;
-    }
-
-    @Override
-    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
-        InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
-        return new InputConnectionWrapper(inputConnection, false) {
-            @Override
-            public boolean sendKeyEvent(android.view.KeyEvent event) {
-                if (mListener != null) {
-                    if (event.getAction() == KeyEvent.ACTION_DOWN) {
-                        mListener.onKeyDown(event.getKeyCode());
-                    } else if (event.getAction() == KeyEvent.ACTION_UP) {
-                        mListener.onKeyUp(event.getKeyCode());
-
-                        // InputMethodService#sendKeyChar doesn't call
-                        // InputConnection#commitText for digit chars.
-                        // TODO: fix projected IME to be in coherence with system IME.
-                        char unicodeChar = (char) event.getUnicodeChar();
-                        if (Character.isDigit(unicodeChar)) {
-                            commitText(String.valueOf(unicodeChar), 1);
-                        }
-                    }
-                    return true;
-                } else {
-                    return super.sendKeyEvent(event);
-                }
-            }
-
-            @Override
-            public boolean commitText(java.lang.CharSequence charSequence, int i) {
-                if (mListener != null) {
-                    mListener.onCommitText(charSequence.toString());
-                    return true;
-                }
-                return super.commitText(charSequence, i);
-            }
-
-            @Override
-            public boolean deleteSurroundingText(int i, int i1) {
-                if (mListener != null) {
-                    mListener.onDelete();
-                    return true;
-                }
-                return super.deleteSurroundingText(i, i1);
-            }
-        };
-    }
-}
diff --git a/car-support-lib/src/android/support/car/media/CarAudioManager.java b/car-support-lib/src/android/support/car/media/CarAudioManager.java
deleted file mode 100644
index e3b783a..0000000
--- a/car-support-lib/src/android/support/car/media/CarAudioManager.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.media;
-
-import android.Manifest;
-import android.media.AudioFormat;
-import android.media.AudioManager;
-import android.support.car.CarManagerBase;
-import android.support.car.CarNotConnectedException;
-
-import androidx.annotation.RequiresPermission;
-
-/**
- * APIs for handling car-specific audio use cases. Provides a set of CAR_AUDIO_USAGE_* constants
- * that can be used to route audio by use case to the car. Important beyond the normal
- * {@link AudioManager} class methods because it handles multi channel audio. Includes use cases
- * such as routing call audio only to the driver and not through all speakers.
- */
-public abstract class CarAudioManager implements CarManagerBase {
-
-    /**
-     * Get {@link AudioFormat} for audio record.
-     * @return {@link AudioFormat} for audio record.
-     */
-    public abstract AudioFormat getAudioRecordAudioFormat() throws CarNotConnectedException;
-
-    public abstract boolean isAudioRecordSupported() throws CarNotConnectedException;
-
-    /**
-     * Get minimum buffer size for {@link CarAudioRecord}.
-     *
-     * @return Buffer size in bytes.
-     */
-    public abstract int getAudioRecordMinBufferSize()
-            throws CarNotConnectedException;
-
-    /**
-     * Get maximum buffer size for {@link CarAudioRecord}.
-     *
-     * @return Buffer size in bytes.
-     */
-    public abstract int getAudioRecordMaxBufferSize()
-            throws CarNotConnectedException;
-
-    /**
-     * Create a {@link CarAudioRecord} for the current {@link CarAudioManager}. There can be
-     * multiple instances of {@link CarAudioRecord}. Requires {@link
-     * android.Manifest.permission#RECORD_AUDIO} permission.
-     *
-     * @param bufferSize Should be a multiple of minimum buffer size acquired from {@link
-     * #getAudioRecordMinBufferSize()}. Cannot exceed {@link #getAudioRecordMaxBufferSize()}.
-     *
-     * @return {@link CarAudioRecord} instance for the given stream.
-     * @throws IllegalArgumentException if passed parameter (such as bufferSize) is wrong.
-     * @throws SecurityException if client does not have
-     * {@link android.Manifest.permission#RECORD_AUDIO} permission.
-     */
-    @RequiresPermission(Manifest.permission.RECORD_AUDIO)
-    public abstract CarAudioRecord createCarAudioRecord(int bufferSize)
-            throws SecurityException, CarNotConnectedException;
-}
diff --git a/car-support-lib/src/android/support/car/media/CarAudioManagerEmbedded.java b/car-support-lib/src/android/support/car/media/CarAudioManagerEmbedded.java
deleted file mode 100644
index 518058a..0000000
--- a/car-support-lib/src/android/support/car/media/CarAudioManagerEmbedded.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.media;
-
-import static androidx.annotation.RestrictTo.Scope.GROUP_ID;
-
-import android.media.AudioFormat;
-import android.media.AudioRecord;
-import android.support.car.CarNotConnectedException;
-
-import androidx.annotation.RestrictTo;
-
-/**
- * @hide
- */
-@RestrictTo(GROUP_ID)
-public class CarAudioManagerEmbedded extends CarAudioManager {
-
-    private static final int MAX_BUFFER_SIZE_BYTE = 512 * 1024;
-    private static final int SAMPLING_RATE = 16000;
-    private static final AudioFormat AUDIO_RECORD_FORMAT = new AudioFormat.Builder()
-            .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
-            .setChannelMask(AudioFormat.CHANNEL_IN_MONO)
-            .setSampleRate(SAMPLING_RATE)
-            .build();
-
-    private final android.car.media.CarAudioManager mManager;
-
-    public CarAudioManagerEmbedded(Object manager) {
-        mManager = (android.car.media.CarAudioManager) manager;
-    }
-
-    @Override
-    public boolean isAudioRecordSupported() throws CarNotConnectedException {
-        //always true in embedded
-        return true;
-    }
-
-    @Override
-    public AudioFormat getAudioRecordAudioFormat() throws CarNotConnectedException {
-        return AUDIO_RECORD_FORMAT;
-    }
-
-    @Override
-    public int getAudioRecordMinBufferSize() throws CarNotConnectedException {
-        return AudioRecord.getMinBufferSize(SAMPLING_RATE, AUDIO_RECORD_FORMAT.getChannelMask(),
-                AUDIO_RECORD_FORMAT.getEncoding());
-    }
-
-    @Override
-    public int getAudioRecordMaxBufferSize() throws CarNotConnectedException {
-        return Math.max(getAudioRecordMinBufferSize(), MAX_BUFFER_SIZE_BYTE);
-    }
-
-    @Override
-    public CarAudioRecord createCarAudioRecord(int bufferSize)
-            throws CarNotConnectedException, SecurityException {
-        if (bufferSize < getAudioRecordMinBufferSize() ||
-            bufferSize > getAudioRecordMaxBufferSize()) {
-            throw new IllegalArgumentException("Bad bufferSize value");
-        }
-        return new CarAudioRecordEmbedded(AUDIO_RECORD_FORMAT, bufferSize);
-    }
-
-    @Override
-    public void onCarDisconnected() {
-        //nothing to do
-    }
-}
diff --git a/car-support-lib/src/android/support/car/media/CarAudioRecord.java b/car-support-lib/src/android/support/car/media/CarAudioRecord.java
deleted file mode 100644
index c3f09ca..0000000
--- a/car-support-lib/src/android/support/car/media/CarAudioRecord.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.media;
-
-import android.media.AudioRecord;
-import android.support.car.CarNotConnectedException;
-
-/**
- * Enables applications to use the microphone.
- */
-public abstract class CarAudioRecord {
-    /**
-     * Get the buffer size specified in {@link CarAudioManager#createCarAudioRecord(int)}.
-     * @return Buffer size in bytes.
-     */
-    public abstract int getBufferSize() throws CarNotConnectedException;
-
-    /**
-     * Start audio recording.
-     */
-    public abstract void startRecording() throws CarNotConnectedException;
-
-    /**
-     * Stop audio recording. Calling stop multiple times is a safe operation.
-     */
-    public abstract void stop();
-
-    /**
-     * Release native resource allocated for this instance. {@link CarAudioRecord} can no longer
-     * be used after release is called.
-     */
-    public abstract void release();
-
-    /** See {@link AudioRecord#getRecordingState() }. */
-    public abstract int getRecordingState() throws CarNotConnectedException;
-
-    /** See {@link AudioRecord#getState() }. */
-    public abstract int getState() throws CarNotConnectedException;
-
-    /** See {@link AudioRecord#getAudioSessionId() }. */
-    public abstract int getAudioSessionId() throws CarNotConnectedException;
-
-    /**
-     * Read recorded audio. Be sure to start audio recording with {@link #startRecording()}
-     * before this.
-     * @param audioData
-     * @param offsetInBytes
-     * @param sizeInBytes
-     * @return Number of bytes read. Returns {@link android.media.AudioRecord#ERROR} on error.
-     * @throws IllegalStateException if audio recording was not started.
-     */
-    public abstract int read(byte[] audioData, int offsetInBytes, int sizeInBytes)
-            throws IllegalStateException, CarNotConnectedException;
-}
diff --git a/car-support-lib/src/android/support/car/media/CarAudioRecordEmbedded.java b/car-support-lib/src/android/support/car/media/CarAudioRecordEmbedded.java
deleted file mode 100644
index 7a614cc..0000000
--- a/car-support-lib/src/android/support/car/media/CarAudioRecordEmbedded.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.media;
-
-import static androidx.annotation.RestrictTo.Scope.GROUP_ID;
-
-import android.media.AudioFormat;
-import android.media.AudioRecord;
-import android.support.car.CarNotConnectedException;
-
-import androidx.annotation.RestrictTo;
-
-/**
- * CarAudioRecordEmbedded allows apps to use microphone.
- * @hide
- */
-@RestrictTo(GROUP_ID)
-public class CarAudioRecordEmbedded extends CarAudioRecord {
-
-    private final AudioFormat mFormat;
-    private final int mBufferSize;
-    private final AudioRecord mAudioRecord;
-
-
-    CarAudioRecordEmbedded(AudioFormat format, int bufferSize) {
-        mFormat = format;
-        mBufferSize = bufferSize;
-        mAudioRecord = new AudioRecord.Builder()
-                .setAudioFormat(mFormat)
-                .setBufferSizeInBytes(mBufferSize)
-                .build();
-    }
-
-    @Override
-    public int getBufferSize() throws CarNotConnectedException {
-        return mBufferSize;
-    }
-
-    @Override
-    public void startRecording() throws CarNotConnectedException {
-        mAudioRecord.startRecording();
-    }
-
-    @Override
-    public void stop() {
-        mAudioRecord.stop();
-    }
-
-    @Override
-    public void release() {
-        mAudioRecord.release();
-    }
-
-    @Override
-    public int getRecordingState() throws CarNotConnectedException {
-        return mAudioRecord.getRecordingState();
-    }
-
-    @Override
-    public int getState() throws CarNotConnectedException {
-        return mAudioRecord.getState();
-    }
-
-    @Override
-    public int getAudioSessionId() throws CarNotConnectedException {
-        return mAudioRecord.getAudioSessionId();
-    }
-
-    @Override
-    public int read(byte[] audioData, int offsetInBytes, int sizeInBytes)
-            throws CarNotConnectedException, IllegalStateException {
-        return mAudioRecord.read(audioData, offsetInBytes, sizeInBytes);
-    }
-}
diff --git a/car-support-lib/src/android/support/car/navigation/CarNavigationInstrumentCluster.java b/car-support-lib/src/android/support/car/navigation/CarNavigationInstrumentCluster.java
deleted file mode 100644
index 9f70ef0..0000000
--- a/car-support-lib/src/android/support/car/navigation/CarNavigationInstrumentCluster.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.navigation;
-
-import static androidx.annotation.RestrictTo.Scope.GROUP_ID;
-
-import android.os.Bundle;
-
-import androidx.annotation.IntDef;
-import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Holds options related to navigation for the car's instrument cluster.
- */
-public class CarNavigationInstrumentCluster {
-
-    /** Navigation Next Turn messages contain an image, as well as an enum. */
-    public static final int CLUSTER_TYPE_CUSTOM_IMAGES_SUPPORTED = 1;
-    /** Navigation Next Turn messages contain only an enum. */
-    public static final int CLUSTER_TYPE_IMAGE_CODES_ONLY = 2;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef({
-        CLUSTER_TYPE_CUSTOM_IMAGES_SUPPORTED,
-        CLUSTER_TYPE_IMAGE_CODES_ONLY
-    })
-    public @interface ClusterType {}
-
-    private int mMinIntervalMillis;
-
-    @ClusterType
-    private final int mType;
-
-    private final int mImageWidth;
-
-    private final int mImageHeight;
-
-    private final int mImageColorDepthBits;
-
-    private final Bundle mExtra;
-
-    /** @hide */
-    @RestrictTo(GROUP_ID)
-    public static CarNavigationInstrumentCluster createCluster(int minIntervalMillis) {
-        return new CarNavigationInstrumentCluster(minIntervalMillis, CLUSTER_TYPE_IMAGE_CODES_ONLY,
-                0, 0, 0);
-    }
-
-    /** @hide */
-    @RestrictTo(GROUP_ID)
-    public static CarNavigationInstrumentCluster createCustomImageCluster(int minIntervalMs,
-            int imageWidth, int imageHeight, int imageColorDepthBits) {
-        return new CarNavigationInstrumentCluster(minIntervalMs,
-                CLUSTER_TYPE_CUSTOM_IMAGES_SUPPORTED,
-                imageWidth, imageHeight, imageColorDepthBits);
-    }
-
-    /** Minimum time between instrument cluster updates in milliseconds.*/
-    public int getMinIntervalMillis() {
-        return mMinIntervalMillis;
-    }
-
-    /**
-     * Type of instrument cluster, can be {@link #CLUSTER_TYPE_CUSTOM_IMAGES_SUPPORTED} or
-     * {@link #CLUSTER_TYPE_IMAGE_CODES_ONLY}.
-     */
-    @ClusterType
-    public int getType() {
-        return mType;
-    }
-
-    /**
-     * If instrument cluster is image, width of instrument cluster in pixels.
-     * @return the width of the image in pixels, 0 otherwise.
-     */
-    public int getImageWidth() {
-        return mImageWidth;
-    }
-
-    /**
-     * If instrument cluster is image, height of instrument cluster in pixels.
-     * @return the width of the image in pixels, 0 otherwise.
-     */
-    public int getImageHeight() {
-        return mImageHeight;
-    }
-
-    /**
-     * Contains extra information about instrument cluster.
-     * @hide
-     */
-    public Bundle getExtra() { return mExtra; }
-
-    /**
-     * @return If instrument cluster is image, number of bits of colour depth it supports (8, 16,
-     * or  32), 0 otherwise.
-     */
-    public int getImageColorDepthBits() {
-        return mImageColorDepthBits;
-    }
-
-    /** @hide */
-    @RestrictTo(GROUP_ID)
-    public CarNavigationInstrumentCluster(CarNavigationInstrumentCluster that) {
-      this(that.mMinIntervalMillis,
-          that.mType,
-          that.mImageWidth,
-          that.mImageHeight,
-          that.mImageColorDepthBits);
-    }
-
-    /**
-     * Whether cluster support custom images or not.  If not generally the cluster will provide
-     * its own images.
-     * @return True if supported, false otherwise.
-     */
-    public boolean supportsCustomImages() {
-      return mType == CLUSTER_TYPE_CUSTOM_IMAGES_SUPPORTED;
-    }
-
-    /** @hide */
-    @RestrictTo(GROUP_ID)
-    CarNavigationInstrumentCluster(
-            int minIntervalMillis,
-            @ClusterType int type,
-            int imageWidth,
-            int imageHeight,
-            int imageColorDepthBits) {
-        this(minIntervalMillis, type, imageWidth, imageHeight, imageColorDepthBits, null);
-    }
-
-    /** @hide */
-    @RestrictTo(GROUP_ID)
-    CarNavigationInstrumentCluster(
-            int minIntervalMillis,
-            @ClusterType int type,
-            int imageWidth,
-            int imageHeight,
-            int imageColorDepthBits,
-            @Nullable Bundle extra) {
-        mMinIntervalMillis = minIntervalMillis;
-        mType = type;
-        mImageWidth = imageWidth;
-        mImageHeight = imageHeight;
-        mImageColorDepthBits = imageColorDepthBits;
-        mExtra = extra == null ? new Bundle() : new Bundle(extra);
-    }
-
-
-    /** Converts to string for debug purpose. */
-    @Override
-    public String toString() {
-        return CarNavigationInstrumentCluster.class.getSimpleName() + "{ " +
-                "minIntervalMillis: " + mMinIntervalMillis + ", " +
-                "type: " + mType + ", " +
-                "imageWidth: " + mImageWidth + ", " +
-                "imageHeight: " + mImageHeight + ", " +
-                "imageColourDepthBits: " + mImageColorDepthBits + ", " +
-                "extra: " + mExtra + " }";
-    }
-}
diff --git a/car-support-lib/src/android/support/car/navigation/CarNavigationStatusManager.java b/car-support-lib/src/android/support/car/navigation/CarNavigationStatusManager.java
deleted file mode 100644
index 3583827..0000000
--- a/car-support-lib/src/android/support/car/navigation/CarNavigationStatusManager.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.navigation;
-
-import android.annotation.IntDef;
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.support.car.CarManagerBase;
-import android.support.car.CarNotConnectedException;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * APIs for providing navigation status to the instrument cluster. For cars that have a navigation
- * display built into the instrument cluster, a navigation application should also provide
- * turn-by-turn information to the cluster through this manager.
- * <p/>
- * Navigation applications should first call
- * {@link android.support.car.CarAppFocusManager#requestAppFocus(int,
- * android.support.car.CarAppFocusManager.OnAppFocusOwnershipCallback)} and request
- * {@link android.support.car.CarAppFocusManager#APP_FOCUS_TYPE_NAVIGATION}.
- * <p/>
- * After navigation focus is granted, applications should call {@code
- * sendNavigationStatus(STATUS_ACTIVE);} to initialize the cluster and let it know the app will be
- * sending turn events. Then, for each turn of the turn-by-turn guidance, the app calls {@link
- * #sendNavigationTurnEvent(int, CharSequence, int, int, int)}; this sends image data to the cluster
- * (and is why that data is not sent in subsequent turn distance events). To update the distance
- * and time to the next turn, the app should make periodic calls to {@link
- * #sendNavigationTurnDistanceEvent(int, int, int, int)}.
- * <p/>
- * Calling {@code sendNavigationStatus(STATUS_INACTIVE);} when the route is completed allows the
- * car to use the cluster panel for other data (such as media, weather, etc.) and is what a well
- * behaved app is expected to do.
- */
-public abstract class CarNavigationStatusManager implements CarManagerBase {
-
-    /**
-     * Listener for navigation related events. Callbacks are called in the Looper context.
-     */
-    public interface CarNavigationCallback {
-        /**
-         * Instrument Cluster started in navigation mode.
-         * @param manager The manager the callback is attached to.  Useful if the app wishes to
-         * unregister.
-         * @param instrumentCluster An object describing the configuration and state of the car's
-         * navigation instrument cluster.
-         */
-        void onInstrumentClusterStarted(CarNavigationStatusManager manager,
-                CarNavigationInstrumentCluster instrumentCluster);
-
-        /**
-         * Instrument cluster ended.
-         * @param manager The manager the callback is attached to.  Useful if the app wished to
-         * unregister.
-         */
-        void onInstrumentClusterStopped(CarNavigationStatusManager manager);
-    }
-
-    /* Navigation statuses */
-    /** @hide */
-    public static final int STATUS_UNAVAILABLE = 0;
-    /** @hide */
-    public static final int STATUS_ACTIVE = 1;
-    /** @hide */
-    public static final int STATUS_INACTIVE = 2;
-
-    /** @hide */
-    @IntDef({
-            STATUS_UNAVAILABLE,
-            STATUS_ACTIVE,
-            STATUS_INACTIVE
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Status {}
-
-    /* Turn Types */
-    /** @hide */
-    public static final int TURN_UNKNOWN = 0;
-    /** @hide */
-    public static final int TURN_DEPART = 1;
-    /** @hide */
-    public static final int TURN_NAME_CHANGE = 2;
-    /** @hide */
-    public static final int TURN_SLIGHT_TURN = 3;
-    /** @hide */
-    public static final int TURN_TURN = 4;
-    /** @hide */
-    public static final int TURN_SHARP_TURN = 5;
-    /** @hide */
-    public static final int TURN_U_TURN = 6;
-    /** @hide */
-    public static final int TURN_ON_RAMP = 7;
-    /** @hide */
-    public static final int TURN_OFF_RAMP = 8;
-    /** @hide */
-    public static final int TURN_FORK = 9;
-    /** @hide */
-    public static final int TURN_MERGE = 10;
-    /** @hide */
-    public static final int TURN_ROUNDABOUT_ENTER = 11;
-    /** @hide */
-    public static final int TURN_ROUNDABOUT_EXIT = 12;
-    /** @hide */
-    public static final int TURN_ROUNDABOUT_ENTER_AND_EXIT = 13;
-    /** @hide */
-    public static final int TURN_STRAIGHT = 14;
-    /** @hide */
-    public static final int TURN_FERRY_BOAT = 16;
-    /** @hide */
-    public static final int TURN_FERRY_TRAIN = 17;
-    /** @hide */
-    public static final int TURN_DESTINATION = 19;
-
-    /** @hide */
-    @IntDef({
-            TURN_UNKNOWN,
-            TURN_DEPART,
-            TURN_NAME_CHANGE,
-            TURN_SLIGHT_TURN,
-            TURN_TURN,
-            TURN_SHARP_TURN,
-            TURN_U_TURN,
-            TURN_ON_RAMP,
-            TURN_OFF_RAMP,
-            TURN_FORK,
-            TURN_MERGE,
-            TURN_ROUNDABOUT_ENTER,
-            TURN_ROUNDABOUT_EXIT,
-            TURN_ROUNDABOUT_ENTER_AND_EXIT,
-            TURN_STRAIGHT,
-            TURN_FERRY_BOAT,
-            TURN_FERRY_TRAIN,
-            TURN_DESTINATION
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface TurnEvent {}
-
-    /** @hide */
-    public static final int TURN_SIDE_LEFT = 1;
-    /** @hide */
-    public static final int TURN_SIDE_RIGHT = 2;
-    /** @hide */
-    public static final int TURN_SIDE_UNSPECIFIED = 3;
-
-    /** @hide */
-    @IntDef({
-            TURN_SIDE_LEFT,
-            TURN_SIDE_RIGHT,
-            TURN_SIDE_UNSPECIFIED
-    })
-    public @interface TurnSide {}
-
-    /** @hide */
-    public static final int DISTANCE_METERS = 1;
-    /** @hide */
-    public static final int DISTANCE_KILOMETERS = 2;
-    /** @hide */
-    public static final int DISTANCE_MILES = 3;
-    /** @hide */
-    public static final int DISTANCE_FEET = 4;
-    /** @hide */
-    public static final int DISTANCE_YARDS = 5;
-
-    /** @hide */
-    @IntDef({
-            DISTANCE_METERS,
-            DISTANCE_KILOMETERS,
-            DISTANCE_MILES,
-            DISTANCE_FEET,
-            DISTANCE_YARDS
-    })
-    public @interface DistanceUnit {}
-
-    /**
-     * Event type that holds information about next maneuver.
-     * @hide
-     */
-    public static final int EVENT_TYPE_NEXT_MANEUVER_INFO = 1;
-    /**
-     * Event type that holds information regarding distance/time to the next maneuver.
-     * @hide
-     */
-    public static final int EVENT_TYPE_NEXT_MANEUVER_COUNTDOWN = 2;
-    /**
-     * All custom (vendor-specific) event types should be equal or greater than this constant.
-     * @hide
-     */
-    public static final int EVENT_TYPE_VENDOR_FIRST = 1024;
-
-    /**
-     * Inform the instrument cluster if navigation is active or not.
-     * @param status New instrument cluster navigation status, one of the STATUS_* constants in
-     * this class.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     *
-     * @deprecated Use {@link #sendEvent(int, Bundle)} instead.
-     * @hide
-     */
-    @Deprecated
-    public abstract void sendNavigationStatus(@Status int status) throws CarNotConnectedException;
-
-    /**
-     * Send a Navigation Next Step event to the car.
-     * <p/>
-     * Roundabout Example: In a roundabout with four, evenly spaced exits, the
-     * first exit is turnNumber=1, turnAngle=90; the second exit is turnNumber=2,
-     * turnAngle=180; the third exit is turnNumber=3, turnAngle=270. turnNumber and turnAngle are
-     * counted in the direction of travel around the roundabout (clockwise for roads where the car
-     * drives on the left side of the road, such as Australia; counter-clockwise for roads
-     * where the car drives on the right side of the road, such as the USA).
-     *
-     * @param turnEvent Turn event type ({@link #TURN_TURN}, {@link #TURN_U_TURN}, {@link
-     * #TURN_ROUNDABOUT_ENTER_AND_EXIT}, etc).
-     * @param eventName Name of the turn event like road name to turn. For example "Charleston road"
-     *        in "Turn right to Charleston road"
-     * @param turnAngle Turn angle in degrees between the roundabout entry and exit (0..359). Used
-     * only for event type {@link #TURN_ROUNDABOUT_ENTER_AND_EXIT}. -1 if unused.
-     * @param turnNumber Turn number, counting from the roundabout entry to the exit. Used only
-     * for event type {@link #TURN_ROUNDABOUT_ENTER_AND_EXIT}. -1 if unused.
-     * @param turnSide Turn side ({@link #TURN_SIDE_LEFT}, {@link #TURN_SIDE_RIGHT} or {@link
-     * #TURN_SIDE_UNSPECIFIED}).
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     *
-     * @deprecated Use {@link #sendEvent(int, Bundle)} instead.
-     * @hide
-     */
-    @Deprecated
-    public abstract void sendNavigationTurnEvent(@TurnEvent int turnEvent, CharSequence eventName,
-            int turnAngle, int turnNumber, @TurnSide int turnSide) throws CarNotConnectedException;
-
-    /**
-     * Same as the public version ({@link #sendNavigationTurnEvent(int, CharSequence, int, int,
-     * Bitmap, int)}) except a custom image can be sent to the cluster. See documentation for that
-     * method.
-     *
-     * @param image image to be shown in the instrument cluster. Null if instrument cluster type is
-     * {@link CarNavigationInstrumentCluster.ClusterType#CLUSTER_TYPE_IMAGE_CODES_ONLY}, or if
-     * the image parameters are malformed (length or width non-positive, or illegal
-     * imageColorDepthBits) in the initial NavigationStatusService call.
-     *
-     * @hide only first party applications may send a custom image to the cluster.
-     * @deprecated Use {@link #sendEvent(int, Bundle)} instead.
-     */
-    @Deprecated
-    public abstract void sendNavigationTurnEvent(@TurnEvent int turnEvent, CharSequence eventName,
-            int turnAngle, int turnNumber, Bitmap image, @TurnSide int turnSide)
-            throws CarNotConnectedException;
-
-    /**
-     * Send a Navigation Next Step Distance event to the car.
-     *
-     * @param distanceMeters Distance to next event in meters.
-     * @param timeSeconds Time to next event in seconds.
-     * @param displayDistanceMillis Distance to the next event formatted as it will be displayed by
-     * the calling app, in milli-units. For example, 1.25 should be supplied as 1250.
-     * @param displayDistanceUnit Unit type to use on of the DISTANCE_* types defined in this
-     * file.
-     * @returns {@code true} if successful.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     *
-     * @deprecated Use {@link #sendEvent(int, Bundle)} instead.
-     * @hide
-     */
-    @Deprecated
-    public abstract void sendNavigationTurnDistanceEvent(int distanceMeters, int timeSeconds,
-            int displayDistanceMillis, int displayDistanceUnit) throws CarNotConnectedException;
-
-    /**
-     * Sends events from navigation app to instrument cluster.
-     *
-     * @param eventType event type, the value could be either
-     * {@link #EVENT_TYPE_NEXT_MANEUVER_INFO}, {@link #EVENT_TYPE_NEXT_MANEUVER_COUNTDOWN}, or
-     * vendor-specific code.
-     *
-     * @param bundle object that holds data about the event
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract void sendEvent(int eventType, Bundle bundle)
-            throws CarNotConnectedException;
-
-    /**
-     * @param callback {@link CarNavigationCallback} to be registered, replacing any existing
-     * listeners.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    public abstract void addListener(CarNavigationCallback callback)
-            throws CarNotConnectedException;
-
-    /**
-     * Unregister the {@link CarNavigationCallback} associated with this instance.
-     */
-    public abstract void removeListener();
-}
diff --git a/car-support-lib/src/android/support/car/navigation/CarNavigationStatusManagerEmbedded.java b/car-support-lib/src/android/support/car/navigation/CarNavigationStatusManagerEmbedded.java
deleted file mode 100644
index 4ab5ec6..0000000
--- a/car-support-lib/src/android/support/car/navigation/CarNavigationStatusManagerEmbedded.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.support.car.navigation;
-
-import android.graphics.Bitmap;
-import android.os.Bundle;
-import android.support.car.CarNotConnectedException;
-
-/**
- * @hide
- */
-public class CarNavigationStatusManagerEmbedded extends CarNavigationStatusManager {
-
-    private final android.car.navigation.CarNavigationStatusManager mManager;
-
-    public CarNavigationStatusManagerEmbedded(Object manager) {
-        mManager = (android.car.navigation.CarNavigationStatusManager) manager;
-    }
-
-    /**
-     * @param status new instrument cluster navigation status.
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    @Override
-    public void sendNavigationStatus(int status) throws CarNotConnectedException {
-        // Not implemented in embedded.
-    }
-
-    @Override
-    public void sendNavigationTurnEvent(int event, CharSequence eventName, int turnAngle,
-            int turnNumber, int turnSide) throws CarNotConnectedException {
-        // Not implemented in embedded.
-    }
-
-    @Override
-    public void sendNavigationTurnEvent(int event, CharSequence eventName, int turnAngle,
-            int turnNumber, Bitmap image, int turnSide) throws CarNotConnectedException {
-        // Not implemented in embedded.
-    }
-
-    @Override
-    public void sendNavigationTurnDistanceEvent(int distanceMeters, int timeSeconds,
-            int displayDistanceMillis, int displayDistanceUnit) throws CarNotConnectedException {
-        // Not implemented in embedded.
-    }
-
-    @Override
-    public void sendEvent(int eventType, Bundle bundle) throws CarNotConnectedException {
-        try {
-            mManager.sendEvent(eventType, bundle);
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public void onCarDisconnected() {
-        //nothing to do
-    }
-
-    /**
-     * In this implementation we just immediately call {@code listener#onInstrumentClusterStarted}
-     * as we expect instrument cluster to be working all the time.
-     *
-     * @throws CarNotConnectedException if the connection to the car service has been lost.
-     */
-    @Override
-    public void addListener(CarNavigationCallback callback)
-            throws CarNotConnectedException {
-
-        try {
-            callback.onInstrumentClusterStarted(this, convert(mManager.getInstrumentClusterInfo()));
-        } catch (android.car.CarNotConnectedException e) {
-            throw new CarNotConnectedException(e);
-        }
-    }
-
-    @Override
-    public void removeListener() {
-        // Nothing to do.
-    }
-
-    private static CarNavigationInstrumentCluster convert(
-            android.car.navigation.CarNavigationInstrumentCluster ic) {
-        if (ic == null) {
-            return null;
-        }
-        return new CarNavigationInstrumentCluster(ic.getMinIntervalMillis(), ic.getType(),
-                ic.getImageWidth(), ic.getImageHeight(), ic.getImageColorDepthBits(),
-                ic.getExtra());
-    }
-}
diff --git a/car-usb-handler/res/layout/usb_host.xml b/car-usb-handler/res/layout/usb_host.xml
index fbcc608..7a13c4f 100644
--- a/car-usb-handler/res/layout/usb_host.xml
+++ b/car-usb-handler/res/layout/usb_host.xml
@@ -28,7 +28,7 @@
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"/>
       <TextView
-          android:text="@+string/usb_resolving_handlers"
+          android:text="@string/usb_resolving_handlers"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:orientation="vertical" />
diff --git a/car-usb-handler/src/android/car/usb/handler/BootUsbScanner.java b/car-usb-handler/src/android/car/usb/handler/BootUsbScanner.java
index 5255f16..18dabdc 100644
--- a/car-usb-handler/src/android/car/usb/handler/BootUsbScanner.java
+++ b/car-usb-handler/src/android/car/usb/handler/BootUsbScanner.java
@@ -20,11 +20,13 @@
             } else {
                 UsbDeviceConnection connection = UsbUtil.openConnection(manager, device);
                 try {
-                    if (AoapInterface.isSupported(connection)) {
+                    if (connection != null && AoapInterface.isSupported(connection)) {
                         handle(context, device);
                     }
                 } finally {
-                    connection.close();
+                    if (connection != null) {
+                        connection.close();
+                    }
                 }
             }
         }
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java b/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java
index c0eebbe..51c2838 100644
--- a/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java
+++ b/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java
@@ -15,6 +15,7 @@
  */
 package android.car.usb.handler;
 
+import android.annotation.Nullable;
 import android.car.IUsbAoapSupportCheckService;
 import android.content.ComponentName;
 import android.content.Context;
@@ -37,13 +38,16 @@
 import android.os.RemoteException;
 import android.util.Log;
 import android.util.Pair;
+
 import com.android.internal.util.XmlUtils;
+
+import org.xmlpull.v1.XmlPullParser;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Queue;
-import org.xmlpull.v1.XmlPullParser;
 
 /** Resolves supported handlers for USB device. */
 public final class UsbDeviceHandlerResolver {
@@ -70,7 +74,7 @@
 
     private class DeviceContext {
         public final UsbDevice usbDevice;
-        public final UsbDeviceConnection connection;
+        @Nullable public final UsbDeviceConnection connection;
         public final UsbDeviceSettings settings;
         public final List<UsbDeviceSettings> activeDeviceSettings;
         public final Queue<Pair<ResolveInfo, DeviceFilter>> mActiveDeviceOptions =
@@ -484,7 +488,8 @@
         }
         DeviceContext deviceContext =
                 new DeviceContext(device, UsbDeviceSettings.constructSettings(device), settings);
-        if (AoapInterface.isSupported(deviceContext.connection)) {
+        if (deviceContext.connection != null
+                && AoapInterface.isSupported(deviceContext.connection)) {
             deviceContext.mActiveDeviceOptions.addAll(getDeviceMatches(device, intent, true));
             queryNextAoapHandler(deviceContext);
         } else {
@@ -516,6 +521,10 @@
 
     private void requestAoapSwitch(UsbDevice device, DeviceFilter filter) {
         UsbDeviceConnection connection = UsbUtil.openConnection(mUsbManager, device);
+        if (connection == null) {
+            Log.e(TAG, "Failed to connect to usb device.");
+            return;
+        }
         try {
             UsbUtil.sendAoapAccessoryStart(
                     connection,
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbUtil.java b/car-usb-handler/src/android/car/usb/handler/UsbUtil.java
index 939fe3f..823c660 100644
--- a/car-usb-handler/src/android/car/usb/handler/UsbUtil.java
+++ b/car-usb-handler/src/android/car/usb/handler/UsbUtil.java
@@ -15,10 +15,12 @@
  */
 package android.car.usb.handler;
 
+import android.annotation.Nullable;
 import android.hardware.usb.UsbDevice;
 import android.hardware.usb.UsbDeviceConnection;
 import android.hardware.usb.UsbManager;
 import android.text.TextUtils;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -30,7 +32,7 @@
 class UsbUtil {
     public static List<UsbDevice> findAllPossibleAndroidDevices(UsbManager usbManager) {
         HashMap<String, UsbDevice> devices = usbManager.getDeviceList();
-    ArrayList<UsbDevice> androidDevices = new ArrayList<>(devices.size());
+        ArrayList<UsbDevice> androidDevices = new ArrayList<>(devices.size());
         for (UsbDevice device : devices.values()) {
             UsbDeviceConnection connection = openConnection(usbManager, device);
             if (AoapInterface.isSupported(connection)) {
@@ -41,11 +43,12 @@
         return androidDevices;
     }
 
+    @Nullable
     public static UsbDeviceConnection openConnection(UsbManager manager, UsbDevice device) {
-    manager.grantPermission(device);
-    return manager.openDevice(device);
+        manager.grantPermission(device);
+        return manager.openDevice(device);
     }
-    
+
     public static void sendAoapAccessoryStart(UsbDeviceConnection connection, String manufacturer,
             String model, String description, String version, String uri, String serial)
                     throws IOException {
diff --git a/car_product/build/car.mk b/car_product/build/car.mk
index 0250813..7c08389 100644
--- a/car_product/build/car.mk
+++ b/car_product/build/car.mk
@@ -23,7 +23,6 @@
     Bluetooth \
     OneTimeInitializer \
     Provision \
-    SystemUI \
     SystemUpdater
 
 PRODUCT_PACKAGES += \
@@ -42,6 +41,7 @@
     android.car.cluster.loggingrenderer \
     DirectRenderingClusterSample \
     com.android.car.powertestservice \
+    GarageModeTestApp \
 
 # SEPolicy for test apps / services
 BOARD_SEPOLICY_DIRS += packages/services/Car/car_product/sepolicy/test
@@ -91,10 +91,12 @@
     CarRadioApp \
     OverviewApp \
     CarLauncher \
+    CarSystemUI \
     CarLensPickerApp \
     LocalMediaPlayer \
     CarMediaApp \
     CarMessengerApp \
+    CarNotification \
     CarHvacApp \
     CarMapsPlaceholder \
     CarLatinIME \
diff --git a/car_product/build/car_base.mk b/car_product/build/car_base.mk
index 6788a49..244e2e8 100644
--- a/car_product/build/car_base.mk
+++ b/car_product/build/car_base.mk
@@ -53,6 +53,7 @@
     libwebrtc_audio_preprocessing \
     wifi-service \
     A2dpSinkService \
+    PackageInstaller
 
 # EVS resources
 PRODUCT_PACKAGES += android.automotive.evs.manager@1.0
diff --git a/car_product/overlay/frameworks/base/core/res/res/color/car_borderless_button_text_color.xml b/car_product/overlay/frameworks/base/core/res/res/color/car_borderless_button_text_color.xml
new file mode 100644
index 0000000..01fc20b
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/color/car_borderless_button_text_color.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!-- Default text colors for car buttons when enabled/disabled. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/car_grey_700" android:state_enabled="false"/>
+    <item android:color="?android:attr/colorButtonNormal"/>
+</selector>
diff --git a/car_product/overlay/frameworks/base/core/res/res/color/car_button_text_color.xml b/car_product/overlay/frameworks/base/core/res/res/color/car_button_text_color.xml
new file mode 100644
index 0000000..7add316
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/color/car_button_text_color.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!-- Default text colors for car buttons when enabled/disabled. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/car_grey_700" android:state_enabled="false"/>
+    <item android:color="@color/car_action1"/>
+</selector>
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/car_button_background.xml b/car_product/overlay/frameworks/base/core/res/res/drawable/car_button_background.xml
new file mode 100644
index 0000000..ccc4e22
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/drawable/car_button_background.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!-- Default background styles for car buttons when enabled/disabled. -->
+<ripple
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?attr/colorControlHighlight">
+    <item>
+        <selector>
+            <item android:state_enabled="false">
+                <shape android:shape="rectangle">
+                    <corners android:radius="@dimen/car_button_radius"/>
+                    <solid android:color="@color/car_grey_300"/>
+                </shape>
+            </item>
+            <item>
+                <shape android:shape="rectangle">
+                    <corners android:radius="@dimen/car_button_radius"/>
+                    <solid android:color="?android:attr/colorButtonNormal"/>
+                </shape>
+            </item>
+        </selector>
+    </item>
+</ripple>
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb.xml b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb.xml
new file mode 100644
index 0000000..3729a3b
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/car_accent" />
+    <size
+        android:width="@dimen/car_seekbar_thumb_size"
+        android:height="@dimen/car_seekbar_thumb_size" />
+</shape>
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb_dark.xml b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb_dark.xml
new file mode 100644
index 0000000..a469ada
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb_dark.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/car_accent_dark" />
+    <size
+        android:width="@dimen/car_seekbar_thumb_size"
+        android:height="@dimen/car_seekbar_thumb_size" />
+</shape>
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb_light.xml b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb_light.xml
new file mode 100644
index 0000000..0509858
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_thumb_light.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/car_accent_light" />
+    <size
+        android:width="@dimen/car_seekbar_thumb_size"
+        android:height="@dimen/car_seekbar_thumb_size" />
+</shape>
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track.xml b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track.xml
new file mode 100644
index 0000000..fd112b0
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background">
+        <shape android:shape="line">
+            <stroke
+                android:width="@dimen/car_seekbar_height"
+                android:color="@color/car_seekbar_track_background" />
+        </shape>
+    </item>
+    <item android:id="@android:id/secondaryProgress">
+        <clip>
+            <shape android:shape="line">
+                <stroke
+                    android:width="@dimen/car_seekbar_height"
+                    android:color="@color/car_seekbar_track_secondary_progress" />
+            </shape>
+        </clip>
+    </item>
+    <item android:id="@android:id/progress">
+        <clip>
+            <shape android:shape="line">
+                <stroke
+                    android:width="@dimen/car_seekbar_height"
+                    android:color="@color/car_accent" />
+            </shape>
+        </clip>
+    </item>
+</layer-list>
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track_dark.xml b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track_dark.xml
new file mode 100644
index 0000000..b7fa379
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track_dark.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<!-- Drawable of seekbar track. Uses dark color for track. -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background">
+        <shape android:shape="line">
+            <stroke
+                android:width="@dimen/car_seekbar_height"
+                android:color="@color/car_seekbar_track_background_dark" />
+        </shape>
+    </item>
+    <item android:id="@android:id/secondaryProgress">
+        <clip>
+            <shape android:shape="line">
+                <stroke
+                    android:width="@dimen/car_seekbar_height"
+                    android:color="@color/car_seekbar_track_secondary_progress" />
+            </shape>
+        </clip>
+    </item>
+    <item android:id="@android:id/progress">
+        <clip>
+            <shape android:shape="line">
+                <stroke
+                    android:width="@dimen/car_seekbar_height"
+                    android:color="@color/car_accent_light" />
+            </shape>
+        </clip>
+    </item>
+</layer-list>
diff --git a/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track_light.xml b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track_light.xml
new file mode 100644
index 0000000..a9df2b6
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/drawable/car_seekbar_track_light.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<!-- Drawable of seekbar track. Uses light color for track. -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@android:id/background">
+        <shape android:shape="line">
+            <stroke
+                android:width="@dimen/car_seekbar_height"
+                android:color="@color/car_seekbar_track_background_light" />
+        </shape>
+    </item>
+    <item android:id="@android:id/secondaryProgress">
+        <clip>
+            <shape android:shape="line">
+                <stroke
+                    android:width="@dimen/car_seekbar_height"
+                    android:color="@color/car_seekbar_track_secondary_progress" />
+            </shape>
+        </clip>
+    </item>
+    <item android:id="@android:id/progress">
+        <clip>
+            <shape android:shape="line">
+                <stroke
+                    android:width="@dimen/car_seekbar_height"
+                    android:color="@color/car_accent_dark" />
+            </shape>
+        </clip>
+    </item>
+</layer-list>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/values-sw720dp/dimens.xml b/car_product/overlay/frameworks/base/core/res/res/drawable/toast_frame.xml
similarity index 69%
rename from car_product/overlay/frameworks/base/packages/SystemUI/res/values-sw720dp/dimens.xml
rename to car_product/overlay/frameworks/base/core/res/res/drawable/toast_frame.xml
index 3ab2968..fd542f5 100644
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/values-sw720dp/dimens.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/drawable/toast_frame.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-/*
-** Copyright 2016, The Android Open Source Project
+/* Copyright 2018, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -16,7 +15,9 @@
 ** limitations under the License.
 */
 -->
-<resources>
-    <!-- gap on either side of status bar notification icons -->
-    <dimen name="status_bar_icon_padding">8dp</dimen>
-</resources>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    <solid android:color="@*android:color/car_toast_background"/>
+    <corners android:radius="22dp" />
+</shape>
+
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/alert_dialog_button_bar_material.xml b/car_product/overlay/frameworks/base/core/res/res/layout/alert_dialog_button_bar_material.xml
index 7203849..f929d10 100644
--- a/car_product/overlay/frameworks/base/core/res/res/layout/alert_dialog_button_bar_material.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/layout/alert_dialog_button_bar_material.xml
@@ -26,9 +26,9 @@
     <com.android.internal.widget.ButtonBarLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/car_keyline_1"
-        android:layout_marginEnd="@dimen/car_keyline_1"
-        android:layout_marginTop="@dimen/car_padding_2"
+        android:paddingStart="@dimen/car_keyline_1"
+        android:paddingEnd="@dimen/car_keyline_1"
+        android:paddingTop="@dimen/car_padding_2"
         android:layoutDirection="locale"
         android:orientation="horizontal"
         android:gravity="center_vertical">
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/alert_dialog_title_material.xml b/car_product/overlay/frameworks/base/core/res/res/layout/alert_dialog_title_material.xml
index 0071d5c..3a9da1f 100644
--- a/car_product/overlay/frameworks/base/core/res/res/layout/alert_dialog_title_material.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/layout/alert_dialog_title_material.xml
@@ -51,7 +51,7 @@
             android:layout_centerVertical="true"
             android:layout_marginStart="@dimen/car_keyline_1"
             android:layout_marginEnd="@dimen/car_keyline_1"
-            style="@style/CarTitle"/>
+            style="?attr/windowTitleStyle" />
     </RelativeLayout>
 
     <Space
diff --git a/car_product/overlay/frameworks/base/core/res/res/layout/transient_notification.xml b/car_product/overlay/frameworks/base/core/res/res/layout/transient_notification.xml
new file mode 100644
index 0000000..aff87b2
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/layout/transient_notification.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+** Copyright 2018, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="?android:attr/toastFrameBackground">
+
+    <TextView
+        android:id="@android:id/message"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_marginHorizontal="24dp"
+        android:layout_marginVertical="15dp"
+        android:layout_gravity="center_horizontal"
+        android:textAppearance="@style/TextAppearance.Toast"
+        android:textColor="?android:attr/textColorPrimary"
+        />
+
+</LinearLayout>
+
+
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-night/colors.xml b/car_product/overlay/frameworks/base/core/res/res/values-night/colors.xml
deleted file mode 100644
index 9865fe7..0000000
--- a/car_product/overlay/frameworks/base/core/res/res/values-night/colors.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2017, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources>
-    <!-- The background color for the container of notification actions. -->
-    <color name="notification_action_list">#ff11181d</color>   <!-- Dark Blue Grey 800 -->
-
-    <!-- The primary text color if the text is on top of a dark background. -->
-    <color name="notification_primary_text_color_light">#fff5f5f5</color>  <!-- Grey 100 -->
-
-    <!-- The primary text color if the text is on top of a light background. -->
-    <color name="notification_primary_text_color_dark">#ff212121</color>  <!-- Grey 900 -->
-
-    <!-- The secondary text color if the text is on top of a dark background. -->
-    <color name="notification_secondary_text_color_light">#ffe0e0e0</color>  <!-- Grey 300 -->
-
-    <!-- The background color of a notification card. -->
-    <color name="notification_material_background_color">#ff172026</color>   <!-- Dark Blue Grey 700 -->
-
-    <!-- The secondary text color if the text is on top of a dark background. -->
-    <color name="notification_secondary_text_color_dark">#ff6B6B6B</color>  <!-- Grey 650 -->
-</resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-sw900dp/dimens.xml b/car_product/overlay/frameworks/base/core/res/res/values-sw900dp/dimens.xml
deleted file mode 100644
index d1af884..0000000
--- a/car_product/overlay/frameworks/base/core/res/res/values-sw900dp/dimens.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (c) 2017, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
--->
-<resources>
-
-    <!-- Height of the bottom navigation / system bar. -->
-    <dimen name="navigation_bar_height">112dp</dimen>
-
-    <!-- Height of the bottom navigation bar in landscape; often
-         the same as @dimen/navigation_bar_height -->
-    <dimen name="navigation_bar_height_landscape">112dp</dimen>
-
-</resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-w1920dp/dimens.xml b/car_product/overlay/frameworks/base/core/res/res/values-w1920dp/dimens.xml
index dcb92dc..389f162 100644
--- a/car_product/overlay/frameworks/base/core/res/res/values-w1920dp/dimens.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/values-w1920dp/dimens.xml
@@ -15,6 +15,5 @@
 -->
 
 <resources>
-    <dimen name="status_bar_height">56dp</dimen>
     <dimen name="car_keyline_4">184dp</dimen>
 </resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values-w690dp/dimens.xml b/car_product/overlay/frameworks/base/core/res/res/values-w690dp/dimens.xml
index ce66163..4757cd2 100644
--- a/car_product/overlay/frameworks/base/core/res/res/values-w690dp/dimens.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/values-w690dp/dimens.xml
@@ -18,4 +18,5 @@
     <dimen name="car_keyline_2">96dp</dimen>
     <dimen name="car_keyline_3">112dp</dimen>
     <dimen name="car_keyline_4">148dp</dimen>
+    <dimen name="car_margin">112dp</dimen>
 </resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/colors.xml b/car_product/overlay/frameworks/base/core/res/res/values/colors.xml
index 37dc0bf..82398bb 100644
--- a/car_product/overlay/frameworks/base/core/res/res/values/colors.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/values/colors.xml
@@ -17,171 +17,27 @@
 */
 -->
 <resources>
+
     <!-- The background color for the container of notification actions. -->
-    <color name="notification_action_list">#ffeeeeee</color>  <!-- Grey 200 -->
+    <color name="notification_action_list">@color/car_colorSecondary</color>
 
     <!-- The primary text color if the text is on top of a light background. -->
-    <color name="notification_primary_text_color_light">#ff212121</color>  <!-- Grey 900 -->
+    <color name="notification_primary_text_color_light">@color/car_body1</color>
 
     <!-- The primary text color if the text is on top of a dark background. -->
-    <color name="notification_primary_text_color_dark">#fff5f5f5</color>  <!-- Grey 100 -->
+    <color name="notification_primary_text_color_dark">@color/car_body1</color>
+
+    <!-- The secondary text color if the text is on top of a light background. -->
+    <color name="notification_secondary_text_color_light">@color/car_body2</color>
 
     <!-- The secondary text color if the text is on top of a dark background. -->
-    <color name="notification_secondary_text_color_light">#ff6B6B6B</color>  <!-- Grey 650 -->
-
-    <!-- The secondary text color if the text is on top of a dark background. -->
-    <color name="notification_secondary_text_color_dark">#ffe0e0e0</color>  <!-- Grey 300 -->
+    <color name="notification_secondary_text_color_dark">@color/car_body2</color>
 
     <!-- The background color of a notification card. -->
-    <color name="notification_material_background_color">#fffafafa</color>  <!-- Grey 50 -->
+    <color name="notification_material_background_color">@color/car_colorPrimary</color>
 
     <!-- The default color for text in a notification. This color is also the default color for
          icons. -->
-    <color name="notification_default_color">@color/notification_primary_text_color_light</color>
+    <color name="notification_default_color">@color/car_accent</color>
 
-    <!-- Keep in sync with //frameworks/support/car/res/values/colors.xml -->
-    <color name="car_grey_50">#fffafafa</color>
-    <color name="car_grey_100">#fff5f5f5</color>
-    <color name="car_grey_200">#ffeeeeee</color>
-    <color name="car_grey_300">#ffe0e0e0</color>
-    <color name="car_grey_400">#ffbdbdbd</color>
-    <color name="car_grey_500">#ff9e9e9e</color>
-    <color name="car_grey_600">#ff757575</color>
-    <color name="car_grey_650">#ff6B6B6B</color>
-    <color name="car_grey_700">#ff616161</color>
-    <color name="car_grey_800">#ff424242</color>
-    <color name="car_grey_900">#ff212121</color>
-    <color name="car_grey_1000">#cc000000</color>
-    <color name="car_white_1000">#1effffff</color>
-    <color name="car_blue_grey_800">#ff37474F</color>
-    <color name="car_blue_grey_900">#ff263238</color>
-    <color name="car_dark_blue_grey_600">#ff1d272d</color>
-    <color name="car_dark_blue_grey_700">#ff172026</color>
-    <color name="car_dark_blue_grey_800">#ff11181d</color>
-    <color name="car_dark_blue_grey_900">#ff0c1013</color>
-    <color name="car_dark_blue_grey_1000">#ff090c0f</color>
-    <color name="car_light_blue_300">#ff4fc3f7</color>
-    <color name="car_light_blue_500">#ff03A9F4</color>
-    <color name="car_light_blue_600">#ff039be5</color>
-    <color name="car_light_blue_700">#ff0288d1</color>
-    <color name="car_light_blue_800">#ff0277bd</color>
-    <color name="car_light_blue_900">#ff01579b</color>
-    <color name="car_blue_300">#ff91a7ff</color>
-    <color name="car_blue_500">#ff5677fc</color>
-    <color name="car_green_500">#ff0f9d58</color>
-    <color name="car_green_700">#ff0b8043</color>
-    <color name="car_yellow_500">#fff4b400</color>
-    <color name="car_yellow_800">#ffee8100</color>
-    <color name="car_red_400">#ffe06055</color>
-    <color name="car_red_500">#ffdb4437</color>
-    <color name="car_red_500a">#ffd50000</color>
-    <color name="car_red_700">#ffc53929</color>
-    <color name="car_teal_200">#ff80cbc4</color>
-    <color name="car_teal_700">#ff00796b</color>
-    <color name="car_indigo_800">#ff283593</color>
-
-    <!--  Various colors for text sizes. "Light" and "dark" here refer to the lighter or darker
-          shades. -->
-    <color name="car_title_light">@color/car_grey_100</color>
-    <color name="car_title_dark">@color/car_grey_900</color>
-    <color name="car_title">@color/car_title_dark</color>
-
-    <color name="car_title2_light">@color/car_grey_100</color>
-    <color name="car_title2_dark">@color/car_grey_900</color>
-    <color name="car_title2">@color/car_title2_dark</color>
-
-    <color name="car_headline1_light">@color/car_grey_100</color>
-    <color name="car_headline1_dark">@color/car_grey_800</color>
-    <color name="car_headline1">@color/car_headline1_dark</color>
-
-    <color name="car_headline2_light">@color/car_grey_100</color>
-    <color name="car_headline2_dark">@color/car_grey_900</color>
-    <color name="car_headline2">@color/car_headline2_dark</color>
-
-    <color name="car_headline3_light">@android:color/white</color>
-    <color name="car_headline3_dark">@color/car_grey_900</color>
-    <color name="car_headline3">@color/car_headline3_dark</color>
-
-    <color name="car_headline4_light">@android:color/white</color>
-    <color name="car_headline4_dark">@android:color/black</color>
-    <color name="car_headline4">@color/car_headline4_dark</color>
-
-    <color name="car_body1_light">@color/car_grey_100</color>
-    <color name="car_body1_dark">@color/car_grey_900</color>
-    <color name="car_body1">@color/car_body1_dark</color>
-
-    <color name="car_body2_light">@color/car_grey_300</color>
-    <color name="car_body2_dark">@color/car_grey_650</color>
-    <color name="car_body2">@color/car_body2_dark</color>
-
-    <color name="car_body3_light">@android:color/white</color>
-    <color name="car_body3_dark">@android:color/black</color>
-    <color name="car_body3">@color/car_body3_dark</color>
-
-    <color name="car_body4_light">@android:color/white</color>
-    <color name="car_body4_dark">@android:color/black</color>
-    <color name="car_body4">@color/car_body4_dark</color>
-
-    <color name="car_action1_light">@color/car_grey_900</color>
-    <color name="car_action1_dark">@color/car_grey_50</color>
-    <color name="car_action1">@color/car_action1_dark</color>
-
-    <!-- The tinting colors to create a light- and dark-colored icon respectively. -->
-    <color name="car_tint_light">@color/car_grey_50</color>
-    <color name="car_tint_dark">@color/car_grey_900</color>
-
-    <!-- The tinting color for an icon. This icon is assumed to be on a light background. -->
-    <color name="car_tint">@color/car_tint_dark</color>
-
-    <!-- An inverted tinting from car_tint. -->
-    <color name="car_tint_inverse">@color/car_tint_light</color>
-
-    <!-- The color of the divider. The color here is a lighter shade. -->
-    <color name="car_list_divider_light">#1fffffff</color>
-
-    <!-- The color of the divider. The color here is a darker shade. -->
-    <color name="car_list_divider_dark">#1f000000</color>
-
-    <!-- The color of the dividers in the list. This color is assumed to be on a light colored
-         view. -->
-    <color name="car_list_divider">@color/car_list_divider_dark</color>
-
-    <!-- A light and dark colored card. -->
-    <color name="car_card_light">@color/car_grey_50</color>
-    <color name="car_card_dark">@color/car_dark_blue_grey_700</color>
-
-    <!-- The default color of a card in car UI. -->
-    <color name="car_card">@color/car_card_light</color>
-
-    <!-- The ripple colors. The "dark" and "light" designation here refers to the color of the
-         ripple  itself. -->
-    <color name="car_card_ripple_background_dark">#8F000000</color>
-    <color name="car_card_ripple_background_light">#27ffffff</color>
-
-    <!-- The ripple color for a light colored card. -->
-    <color name="car_card_ripple_background">@color/car_card_ripple_background_dark</color>
-
-    <!-- The ripple color for a dark-colored card. This color is the opposite of
-         car_card_ripple_background. -->
-    <color name="car_card_ripple_background_inverse">@color/car_card_ripple_background_light</color>
-
-    <!-- The top margin before the start of content in an application. -->
-    <dimen name="app_header_height">96dp</dimen>
-
-    <!-- The lighter and darker color for the scrollbar thumb. -->
-    <color name="car_scrollbar_thumb_light">#99ffffff</color>
-    <color name="car_scrollbar_thumb_dark">#7f0b0f12</color>
-
-    <!-- The color of the scroll bar indicator in the PagedListView. This color is assumed to be on
-         a light-colored background. -->
-    <color name="car_scrollbar_thumb">@color/car_scrollbar_thumb_dark</color>
-
-    <!-- The inverted color of the scroll bar indicator. This color is always the opposite of
-         car_scrollbar_thumb. -->
-    <color name="car_scrollbar_thumb_inverse">@color/car_scrollbar_thumb_light</color>
-
-    <!-- Misc colors -->
-    <color name="car_highlight_light">@color/car_teal_700</color>
-    <color name="car_highlight_dark">@color/car_teal_200</color>
-    <color name="car_highlight">@color/car_highlight_light</color>
 </resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/colors_device_defaults.xml b/car_product/overlay/frameworks/base/core/res/res/values/colors_device_defaults.xml
new file mode 100644
index 0000000..110be4f
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/values/colors_device_defaults.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2018, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources>
+    <color name="primary_device_default_dark">@color/car_colorPrimary</color>
+    <color name="primary_device_default_light">@color/car_colorPrimary</color>
+
+    <color name="primary_device_default_settings">@color/car_colorPrimary</color>
+    <color name="primary_device_default_settings_light">@color/car_colorPrimary</color>
+
+    <color name="primary_dark_device_default_dark">@color/car_colorSecondary</color>
+    <color name="primary_dark_device_default_light">@color/car_colorSecondary</color>
+
+    <color name="primary_dark_device_default_settings">@color/car_colorSecondary</color>
+    <color name="primary_dark_device_default_settings_light">@color/car_colorSecondary</color>
+
+    <color name="secondary_device_default_settings">@color/car_colorSecondary</color>
+    <color name="secondary_device_default_settings_light">@color/car_colorSecondary</color>
+
+    <color name="tertiary_device_default_settings">@color/car_grey_772</color>
+    <color name="quaternary_device_default_settings">@color/car_grey_746</color>
+
+    <color name="accent_device_default_light">@color/car_accent</color>
+    <color name="accent_device_default_dark">@color/car_accent</color>
+
+    <color name="background_device_default_dark">@color/car_background</color>
+    <color name="background_device_default_light">@color/car_background</color>
+
+    <color name="background_floating_device_default_dark">@color/car_colorSecondary</color>
+    <color name="background_floating_device_default_light">@color/car_colorSecondary</color>
+
+    <color name="error_color_device_default_dark">@color/car_red_a700</color>
+    <color name="error_color_device_default_light">@color/car_red_a700</color>
+</resources>
\ No newline at end of file
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/config.xml b/car_product/overlay/frameworks/base/core/res/res/values/config.xml
index 52fcf2b..9a8681a 100644
--- a/car_product/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/values/config.xml
@@ -77,4 +77,6 @@
 
     <!-- Corner radius of system dialogs -->
     <dimen name="config_dialogCornerRadius">16dp</dimen>
+
+    <string name="config_headlineFontFamilyMedium">sans-serif-medium</string>
 </resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/dimens.xml b/car_product/overlay/frameworks/base/core/res/res/values/dimens.xml
index 2adc535..f343e93 100644
--- a/car_product/overlay/frameworks/base/core/res/res/values/dimens.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/values/dimens.xml
@@ -17,12 +17,13 @@
 */
 -->
 <resources>
-    <dimen name="status_bar_height">36dp</dimen>
-
-    <!-- Both of these are used in separate positions so make sure that they remain the same. -->
-    <dimen name="navigation_bar_height_car_mode">112dp</dimen>
-    <dimen name="navigation_bar_height_landscape">112dp</dimen>
-    <dimen name="status_bar_icon_size">40dp</dimen>
+    <dimen name="status_bar_height">96dp</dimen>
+    <dimen name="status_bar_height_landscape">96dp</dimen>
+    <dimen name="status_bar_height_portrait">96dp</dimen>
+    <dimen name="car_qs_header_system_icons_area_height">96dp</dimen>
+    <dimen name="navigation_bar_height">128dp</dimen>
+    <dimen name="navigation_bar_height_landscape">128dp</dimen>
+    <dimen name="status_bar_icon_size">36dp</dimen>
 
     <!-- The height of the header of a notification. -->
     <dimen name="notification_header_height">58dp</dimen>
@@ -108,37 +109,6 @@
     <!-- The top margin before the notification progress bar.  -->
     <dimen name="notification_progress_margin_top">16dp</dimen>
 
-    <!-- Text size for car -->
-    <dimen name="car_title2_size">40sp</dimen>
-    <dimen name="car_body1_size">40sp</dimen>
-    <dimen name="car_body2_size">32sp</dimen>
-    <dimen name="car_action1_size">32sp</dimen>
-
-    <!-- Common icon size for car app -->
-    <dimen name="car_icon_size">56dp</dimen>
-
-    <dimen name="car_card_header_height">96dp</dimen>
-    <dimen name="car_card_action_bar_height">96dp</dimen>
-
-    <!-- Paddings -->
-    <dimen name="car_padding_1">4dp</dimen>
-    <dimen name="car_padding_2">10dp</dimen>
-    <dimen name="car_padding_3">16dp</dimen>
-    <dimen name="car_padding_4">28dp</dimen>
-    <dimen name="car_padding_5">32dp</dimen>
-
-    <!-- Radius -->
-    <dimen name="car_radius_1">4dp</dimen>
-    <dimen name="car_radius_2">8dp</dimen>
-    <dimen name="car_radius_3">16dp</dimen>
-    <dimen name="car_radius_5">100dp</dimen>
-
-    <!-- Keylines for content. -->
-    <dimen name="car_keyline_1">48dp</dimen>
-    <dimen name="car_keyline_2">108dp</dimen>
-    <dimen name="car_keyline_3">152dp</dimen>
-    <dimen name="car_keyline_4">182dp</dimen>
-
     <!-- Make the dots in lock pattern thicker in Car -->
     <dimen name="lock_pattern_dot_size">20dp</dimen>
 </resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/styles.xml b/car_product/overlay/frameworks/base/core/res/res/values/styles.xml
index f654f3d..99b7015 100644
--- a/car_product/overlay/frameworks/base/core/res/res/values/styles.xml
+++ b/car_product/overlay/frameworks/base/core/res/res/values/styles.xml
@@ -75,48 +75,5 @@
         <item name="paddingBottom">@dimen/media_notification_actions_padding_bottom</item>
         <item name="gravity">center</item>
     </style>
-    
-    <!-- Car text -->
-    <style name="CarBody2">
-        <item name="android:textStyle">normal</item>
-        <item name="android:textSize">@dimen/car_body2_size</item>
-        <item name="android:textColor">@color/car_body2</item>
-    </style>
-    
-    <style name="CarBody2.Dark">
-        <item name="android:textColor">@color/car_body2_dark</item>
-    </style>
-    <style name="CarBody2.Light">
-        <item name="android:textColor">@color/car_body2_light</item>
-    </style>
-    
-    <style name="CarAction1">
-        <item name="android:textStyle">bold</item>
-        <item name="android:textSize">@dimen/car_action1_size</item>
-        <item name="android:textColor">@color/car_highlight</item>
-    </style>
-    
-    <style name="CarAction1.Dark">
-        <item name="android:textColor">@color/car_highlight_dark</item>
-    </style>
-    <style name="CarAction1.Light">
-        <item name="android:textColor">@color/car_highlight_light</item>
-    </style>
-    
-    <!-- The styling for title text. The color of this text changes based on day/night mode. -->
-    <style name="CarTitle" >
-        <item name="android:textStyle">bold</item>
-        <item name="android:textSize">@dimen/car_title2_size</item>
-        <item name="android:textColor">@color/car_title</item>
-    </style>
 
-    <!-- Title text that is permanently a dark color. -->
-    <style name="CarTitle.Dark" >
-        <item name="android:textColor">@color/car_title_dark</item>
-    </style>
-
-    <!-- Title text that is permanently a light color. -->
-    <style name="CarTitle.Light" >
-        <item name="android:textColor">@color/car_title_light</item>
-    </style>
 </resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/styles_device_default.xml b/car_product/overlay/frameworks/base/core/res/res/values/styles_device_default.xml
new file mode 100644
index 0000000..0c949df
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/values/styles_device_default.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!--
+    This is an override of frameworks/base/core/res/res/values/styles_device_default.xml
+    It is how the device default is changed to match the desired look for a car theme.
+-->
+<resources>
+
+    <style name="TextAppearance.DeviceDefault.Widget.Button.Borderless.Colored"
+           parent="TextAppearance.DeviceDefault.Widget.Button">
+        <item name="textColor">@color/car_borderless_button_text_color</item>
+    </style>
+
+    <style name="DialogWindowTitle.DeviceDefault" parent="DialogWindowTitle.Material">
+        <item name="textAppearance">@style/TextAppearance.DeviceDefault.DialogWindowTitle</item>
+    </style>
+    <style name="TextAppearance.DeviceDefault.DialogWindowTitle" parent="TextAppearance.Material.DialogWindowTitle">
+        <item name="fontFamily">@string/config_headlineFontFamilyMedium</item>
+        <item name="textStyle">normal</item>
+        <item name="textSize">@dimen/car_body2_size</item>
+        <item name="textColor">@color/car_body2</item>
+    </style>
+    <style name="TextAppearance.Material.DialogWindowTitle" parent="TextAppearance.Material.Title" />
+    <style name="TextAppearance.Material.Title">
+        <item name="textSize">@dimen/text_size_title_material</item>
+        <item name="fontFamily">@string/font_family_title_material</item>
+        <item name="textColor">?attr/textColorPrimary</item>
+    </style>
+
+    <style name="TextAppearance.DeviceDefault.Widget.Button" parent="TextAppearance.Material.Widget.Button">
+        <item name="fontFamily">@string/config_headlineFontFamilyMedium</item>
+        <item name="textAllCaps">@bool/config_buttonTextAllCaps</item>
+        <item name="textSize">@dimen/car_action1_size</item>
+        <item name="textColor">@color/car_button_text_color</item>
+    </style>
+
+    <style name="Widget.DeviceDefault.Button" parent="Widget.Material.Button">
+        <item name="background">@drawable/car_button_background</item>
+        <item name="layout_height">@dimen/car_button_height</item>
+        <item name="minWidth">@dimen/car_button_min_width</item>
+        <item name="paddingStart">@dimen/car_button_horizontal_padding</item>
+        <item name="paddingEnd">@dimen/car_button_horizontal_padding</item>
+    </style>
+
+     <style name="Widget.DeviceDefault.ProgressBar.Horizontal" parent="Widget.Material.ProgressBar.Horizontal">
+         <item name="minHeight">@dimen/car_progress_bar_height</item>
+         <item name="maxHeight">@dimen/car_progress_bar_height</item>
+     </style>
+
+    <style name="Widget.DeviceDefault.SeekBar" parent="Widget.Material.SeekBar">
+        <item name="progressDrawable">@drawable/car_seekbar_track</item>
+        <item name="thumb">@drawable/car_seekbar_thumb</item>
+    </style>
+
+    <!--TextAppearance used for edit text -->
+    <style name="TextAppearance.DeviceDefault.Medium.Inverse" parent="TextAppearance.Material.Medium.Inverse">
+        <item name="textStyle">normal</item>
+        <item name="textSize">@dimen/car_body1_size</item>
+    </style>
+</resources>
diff --git a/car_product/overlay/frameworks/base/core/res/res/values/themes_device_defaults.xml b/car_product/overlay/frameworks/base/core/res/res/values/themes_device_defaults.xml
new file mode 100644
index 0000000..c5e6e5c
--- /dev/null
+++ b/car_product/overlay/frameworks/base/core/res/res/values/themes_device_defaults.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!--
+    This is an override of frameworks/base/core/res/res/values/themes_device_default.xml
+    It is how the device default is changed to match the desired look for a car theme.
+-->
+<resources>
+    <style name="Theme.DeviceDefault" parent="Theme.DeviceDefaultBase">
+        <item name="background">@null</item>
+        <item name="borderlessButtonStyle">@style/Widget.DeviceDefault.Button.Borderless.Colored</item>
+        <item name="buttonBarButtonStyle">@style/Widget.DeviceDefault.Button.ButtonBar.AlertDialog</item>
+        <item name="buttonStyle">@style/Widget.DeviceDefault.Button</item>
+        <item name="colorAccent">@color/accent_device_default_light</item>
+        <item name="colorBackground">@color/background_device_default_light</item>
+        <item name="colorBackgroundFloating">@color/background_floating_device_default_light</item>
+        <item name="colorButtonNormal">@color/car_highlight</item>
+        <item name="colorControlHighlight">@color/car_card_ripple_background</item>
+        <item name="colorControlNormal">@color/car_body2</item>
+        <item name="colorPrimary">@color/car_grey_928</item>
+        <item name="colorPrimaryDark">@color/car_grey_958</item>
+        <item name="editTextColor">@color/car_body1</item>
+        <item name="textColorHint">@color/car_body2</item>
+        <item name="textColorPrimary">@color/car_body1</item>
+        <item name="textColorSecondary">@color/car_body2</item>
+        <item name="toastFrameBackground">@drawable/toast_frame</item>
+    </style>
+    <style name="Theme.DeviceDefault.Dialog" parent="Theme.Material.Dialog" >
+        <item name="borderlessButtonStyle">@style/Widget.DeviceDefault.Button.Borderless.Colored</item>
+        <item name="buttonBarButtonStyle">@style/Widget.DeviceDefault.Button.ButtonBar.AlertDialog</item>
+        <item name="buttonStyle">@style/Widget.DeviceDefault.Button</item>
+        <item name="colorAccent">@color/accent_device_default_light</item>
+        <item name="colorBackground">@color/background_device_default_light</item>
+        <item name="colorBackgroundFloating">@color/background_floating_device_default_light</item>
+        <item name="colorButtonNormal">@color/car_highlight</item>
+        <item name="colorControlHighlight">@color/car_card_ripple_background</item>
+        <item name="colorControlNormal">@color/car_body2</item>
+        <item name="colorPrimary">@color/car_grey_928</item>
+        <item name="colorPrimaryDark">@color/car_grey_958</item>
+        <item name="editTextColor">@color/car_body1</item>
+        <item name="textColorHint">@color/car_body2</item>
+        <item name="textColorPrimary">@color/car_body1</item>
+        <item name="textColorSecondary">@color/car_body2</item>
+        <item name="toastFrameBackground">@drawable/toast_frame</item>
+    </style>
+    <style name="Theme.DeviceDefault.Dialog.NoActionBar">
+        <item name="windowActionBar">false</item>
+        <item name="windowNoTitle">true</item>
+    </style>
+    <style name="Theme.DeviceDefault.Dialog.Alert" parent="Theme.Material.Dialog.Alert">
+        <item name="borderlessButtonStyle">@style/Widget.DeviceDefault.Button.Borderless.Colored</item>
+        <item name="buttonBarButtonStyle">@style/Widget.DeviceDefault.Button.ButtonBar.AlertDialog</item>
+        <item name="buttonStyle">@style/Widget.DeviceDefault.Button</item>
+        <item name="colorAccent">@color/accent_device_default_light</item>
+        <item name="colorBackground">@color/background_device_default_light</item>
+        <item name="colorBackgroundFloating">@color/background_floating_device_default_light</item>
+        <item name="colorButtonNormal">@color/car_highlight</item>
+        <item name="colorControlHighlight">@color/car_card_ripple_background</item>
+        <item name="colorControlNormal">@color/car_body2</item>
+        <item name="colorPrimary">@color/car_grey_928</item>
+        <item name="colorPrimaryDark">@color/car_grey_958</item>
+        <item name="editTextColor">@color/car_body1</item>
+        <item name="textColorHint">@color/car_body2</item>
+        <item name="textColorPrimary">@color/car_body1</item>
+        <item name="textColorSecondary">@color/car_body2</item>
+        <item name="toastFrameBackground">@drawable/toast_frame</item>
+    </style>
+    <!-- The light theme is defined to be the same as the default since currently there is only one
+        defined theme palette -->
+    <style name="Theme.DeviceDefault.Light"/>
+    <style name="Theme.DeviceDefault.Light.Dialog" parent="Theme.DeviceDefault.Dialog"/>
+    <style name="Theme.DeviceDefault.Light.Dialog.Alert" parent="Theme.DeviceDefault.Dialog.Alert"/>
+    <style name="Theme.DeviceDefault.Light.Dialog.NoActionBar" parent="Theme.DeviceDefault.Dialog.NoActionBar"/>
+
+    <style name="Theme.DeviceDefault.Light.NoActionBar">
+        <item name="windowActionBar">false</item>
+        <item name="windowNoTitle">true</item>
+    </style>
+    <style name="Theme.DeviceDefault.NoActionBar">
+        <item name="windowActionBar">false</item>
+        <item name="windowNoTitle">true</item>
+    </style>
+    <style name="Theme.DeviceDefault.Settings"/>
+    <style name="Theme.DeviceDefault.Settings.NoActionBar" parent="Theme.DeviceDefault.NoActionBar"/>
+</resources>
\ No newline at end of file
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_apps.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_apps.xml
deleted file mode 100644
index f5fbe6d..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_apps.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-    Copyright (C) 2018 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="56dp"
-        android:height="56dp"
-        android:viewportWidth="48"
-        android:viewportHeight="48">
-
-    <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M8 16h8V8H8v8zm12 24h8v-8h-8v8zM8 40h8v-8H8v8zm0-12h8v-8H8v8zm12 0h8v-8h-8v8zM32
-8v8h8V8h-8zm-12 8h8V8h-8v8zm12 12h8v-8h-8v8zm0 12h8v-8h-8v8z" />
-    <path
-        android:pathData="M0 0h48v48H0z" />
-</vector>
\ No newline at end of file
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_car.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_car.xml
deleted file mode 100644
index ba52f1f..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_car.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-    Copyright (C) 2016 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT 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 android:height="56dp" android:viewportHeight="24.0"
-    android:viewportWidth="24.0" android:width="56dp" xmlns:android="http://schemas.android.com/apk/res/android">
-    <path android:fillColor="#FFFFFFFF"
-        android:pathData="M7.289,7.507C7.166,7.242 7.282,7.126 7.546,7.249L12.688,10.138C13.325,10.442 13.77,11.087 13.77,11.841C13.77,12.884 12.923,13.73 11.88,13.73C11.126,13.73 10.481,13.286 10.178,12.648L7.289,7.507Z"
-        android:strokeColor="#00000000" android:strokeWidth="1"/>
-    <path android:fillColor="#FFFFFFFF"
-        android:pathData="M19.068,4.928C15.534,1.392 10.027,1.061 6.114,3.922L7.544,5.353C10.655,3.263 14.905,3.525 17.653,6.276C20.778,9.402 20.779,14.862 17.653,17.531L6.337,17.531C3.562,14.862 3.256,10.517 5.411,7.397L3.982,6.001C1.06,9.922 1.366,15.506 4.922,19.065C8.829,22.974 15.163,22.981 19.071,19.069C22.98,15.159 22.974,8.837 19.068,4.928L19.068,4.928Z"
-        android:strokeColor="#00000000" android:strokeWidth="1"/>
-</vector>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_hvac.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_hvac.xml
deleted file mode 100644
index bdc44b3..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_hvac.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<!--
-    Copyright (C) 2018 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="37dp"
-    android:height="31dp"
-    android:viewportWidth="37"
-    android:viewportHeight="31">
-
-    <group
-            android:translateX="-4.000000"
-            android:translateY="-6.000000">
-        <group
-                android:translateX="5.000000"
-                android:translateY="5.000000">
-            <path
-                android:fillType="evenOdd"
-                android:strokeColor="#FAFAFA"
-                android:strokeWidth="3.5"
-                android:pathData="M0.320769938,6.07518051 C6.46754647,1.46509811 12.4222362,1.46509811
-18.1848392,6.07518051 C23.9474422,10.6852629 29.3258717,10.4931761
-34.3201276,5.49892021" />
-            <path
-                android:fillType="evenOdd"
-                android:strokeColor="#FAFAFA"
-                android:strokeWidth="3.5"
-                android:pathData="M0.320769938,17.0751805 C6.46754647,12.4650981 12.4222362,12.4650981
-18.1848392,17.0751805 C23.9474422,21.6852629 29.3258717,21.4931761
-34.3201276,16.4989202" />
-            <path
-                android:fillType="evenOdd"
-                android:strokeColor="#FAFAFA"
-                android:strokeWidth="3.5"
-                android:pathData="M0.320769938,28.0751805 C6.46754647,23.4650981 12.4222362,23.4650981
-18.1848392,28.0751805 C23.9474422,32.6852629 29.3258717,32.4931761
-34.3201276,27.4989202" />
-        </group>
-    </group>
-</vector>
\ No newline at end of file
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_music.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_music.xml
deleted file mode 100644
index 5ad7537..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_music.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-    Copyright (C) 2016 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT 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="56dp"
-    android:height="56dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-
-    <path
-        android:fillAlpha=".1"
-        android:strokeAlpha=".1"
-        android:pathData="M0 0h48v48H0z" />
-    <path
-        android:fillColor="#FFFFFFFF"
-        android:pathData="M24 2C14.06 2 6 10.06 6 20v14c0 3.31 2.69 6 6 6h6V24h-8v-4c0-7.73 6.27-14
-14-14s14 6.27 14 14v4h-8v16h6c3.31 0 6-2.69 6-6V20c0-9.94-8.06-18-18-18z" />
-</vector>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_navigation.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_navigation.xml
deleted file mode 100644
index 980c4d8..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_navigation.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-    Copyright (C) 2016 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT 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="56dp"
-    android:height="56dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-    <path
-        android:fillColor="#FFFFFFFF"
-        android:pathData="M43.41 22.59l-18-18c-.78-.78-2.05-.78-2.82 0l-18 18c-.78 .78 -.78 2.05 0 2.83l18
-17.99v.01c.78 .78 2.05 .78 2.83 0l18-18c.78-.79 .78 -2.05-.01-2.83zM28
-29v-5h-8v6h-4v-8c0-1.11 .89 -2 2-2h10v-5l7 7-7 7z" />
-    <path
-        android:pathData="M0 0h48v48H0z" />
-</vector>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_notification.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_notification.xml
deleted file mode 100644
index 61d937b..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_notification.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-    Copyright (C) 2018 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="56dp"
-    android:height="56dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-
-    <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M24 44c2.21 0 4-1.79 4-4h-8c0 2.21 1.79 4 4
-4zm12-12V22c0-6.15-3.27-11.28-9-12.64V8c0-1.66-1.34-3-3-3s-3 1.34-3 3v1.36c-5.73
-1.36-9 6.49-9 12.64v10l-4 4v2h32v-2l-4-4zm-4 2H16V22c0-4.97 3.03-9 8-9s8 4.03 8
-9v12z" />
-</vector>
\ No newline at end of file
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_overview.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_overview.xml
deleted file mode 100644
index 4651dcb..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_overview.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-    Copyright (C) 2016 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT 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="56dp"
-    android:height="56dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-
-    <path
-        android:pathData="M0 0h48v48H0z" />
-    <path
-        android:fillColor="#FFFFFFFF"
-        android:pathData="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm0 36c-8.82
-0-16-7.18-16-16S15.18 8 24 8s16 7.18 16 16-7.18 16-16 16z" />
-</vector>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_phone.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_phone.xml
deleted file mode 100644
index 87bfdf7..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_phone.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-    Copyright (C) 2016 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT 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="56dp"
-    android:height="56dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-
-    <path
-        android:pathData="M0 0h48v48H0z" />
-    <path
-        android:fillColor="#FFFFFFFF"
-        android:pathData="M13.25 21.59c2.88 5.66 7.51 10.29 13.18 13.17l4.4-4.41c.55-.55 1.34-.71
-2.03-.49C35.1 30.6 37.51 31 40 31c1.11 0 2 .89 2 2v7c0 1.11-.89 2-2 2C21.22 42 6
-26.78 6 8c0-1.11 .9 -2 2-2h7c1.11 0 2 .89 2 2 0 2.49 .4 4.9 1.14 7.14 .22 .69
-.06 1.48-.49 2.03l-4.4 4.42z" />
-</vector>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_seekbar_track.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_seekbar_track.xml
deleted file mode 100644
index 2b42d9d..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_seekbar_track.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2017 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <!-- Use android provided id, as seekbar is expecting that -->
-    <item android:id="@android:id/background">
-        <shape android:shape="line">
-            <corners
-                android:radius="3dp"/>
-            <stroke
-                android:width="3dp"
-                android:color="@color/car_grey_300" />
-        </shape>
-    </item>
-    <item android:id="@android:id/progress">
-        <clip>
-            <shape android:shape="line">
-                <stroke
-                    android:width="6dp"
-                    android:color="@color/car_teal_700" />
-            </shape>
-        </clip>
-    </item>
-</layer-list>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/notification_material_bg.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/notification_material_bg.xml
deleted file mode 100644
index 039833b..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/notification_material_bg.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-    Copyright (C) 2016 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-        android:color="@color/notification_ripple_untinted_color">
-    <item>
-        <shape xmlns:android="http://schemas.android.com/apk/res/android">
-          <solid android:color="@color/notification_material_background_color" />
-          <corners
-              android:radius="@dimen/notification_shadow_radius"/>
-      </shape>
-    </item>
-</ripple>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/notification_material_bg_dim.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/notification_material_bg_dim.xml
deleted file mode 100644
index 90c793f..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/notification_material_bg_dim.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-        android:color="@color/notification_ripple_untinted_color">
-    <item>
-        <shape xmlns:android="http://schemas.android.com/apk/res/android">
-          <solid android:color="@color/notification_material_background_color" />
-          <corners
-              android:radius="@dimen/notification_shadow_radius"/>
-      </shape>
-    </item>
-</ripple>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/car_navigation_bar.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/car_navigation_bar.xml
deleted file mode 100644
index a4902cd..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/car_navigation_bar.xml
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 2018, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<com.android.systemui.statusbar.car.CarNavigationBarView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:systemui="http://schemas.android.com/apk/res-auto"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent"
-    android:background="@drawable/system_bar_background">
-
-    <LinearLayout
-        android:layout_height="match_parent"
-        android:layout_width="wrap_content"
-        android:paddingStart="@dimen/car_keyline_1"
-        android:paddingEnd="@dimen/car_keyline_1"
-        android:orientation="horizontal"
-        android:id="@+id/nav_buttons"
-        android:gravity="center"
-        android:layout_weight="1"
-        android:animateLayoutChanges="true">
-
-        <com.android.systemui.statusbar.car.CarNavigationButton
-            android:id="@+id/home"
-            style="@style/NavigationBarButton"
-            systemui:intent="intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.HOME;launchFlags=0x14000000;end"
-            android:src="@drawable/car_ic_overview"
-            android:background="?android:attr/selectableItemBackground"
-        />
-
-        <com.android.systemui.statusbar.car.CarFacetButton
-            android:id="@+id/maps_nav"
-            style="@style/NavigationBarButton"
-            systemui:icon="@drawable/car_ic_navigation"
-            systemui:intent="intent:#Intent;component=com.android.car.mapsplaceholder/.MapsPlaceholderActivity;launchFlags=0x24000000;end"
-            systemui:componentNames="com.android.car.mapsplaceholder/.MapsPlaceholderActivity"
-        />
-
-        <com.android.systemui.statusbar.car.CarFacetButton
-            android:id="@+id/music_nav"
-            style="@style/NavigationBarButton"
-            systemui:icon="@drawable/car_ic_music"
-            systemui:intent="intent:#Intent;component=com.android.car.media/.MediaActivity;launchFlags=0x14000000;end"
-            systemui:packages="com.android.car.media"
-        />
-
-        <com.android.systemui.statusbar.car.CarFacetButton
-            android:id="@+id/phone_nav"
-            style="@style/NavigationBarButton"
-            systemui:icon="@drawable/car_ic_phone"
-            systemui:intent="intent:#Intent;component=com.android.car.dialer/.TelecomActivity;launchFlags=0x14000000;end"
-            systemui:componentNames="com.android.car.dialer/.TelecomActivity"
-        />
-
-        <com.android.systemui.statusbar.car.CarFacetButton
-            android:id="@+id/grid_nav"
-            style="@style/NavigationBarButton"
-            systemui:icon="@drawable/car_ic_apps"
-            systemui:intent="intent:#Intent;component=com.android.car.carlauncher/.AppGridActivity;launchFlags=0x24000000;end"
-            systemui:componentNames="com.android.car.carlauncher/.AppGridActivity"
-        />
-
-        <Space
-            android:layout_height="match_parent"
-            android:layout_width="0dp"
-            android:layout_weight="1"/>
-
-        <com.android.systemui.statusbar.car.CarNavigationButton
-            android:id="@+id/hvac"
-            style="@style/NavigationBarButton"
-            systemui:intent="intent:#Intent;action=android.car.intent.action.TOGGLE_HVAC_CONTROLS;end"
-            systemui:broadcast="true"
-            android:src="@drawable/car_ic_hvac"
-            android:background="?android:attr/selectableItemBackground"
-        />
-
-        <com.android.keyguard.AlphaOptimizedImageButton
-            android:id="@+id/notifications"
-            style="@style/NavigationBarButton"
-            android:src="@drawable/car_ic_notification"
-            android:background="?android:attr/selectableItemBackground"
-        />
-
-        <FrameLayout
-            android:id="@+id/clock_container"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:layout_centerInParent="true"
-        >
-            <com.android.systemui.statusbar.car.CarNavigationButton
-                android:id="@+id/qs"
-                android:layout_height="match_parent"
-                android:layout_width="match_parent"
-                android:background="@null"
-                systemui:intent="intent:#Intent;component=com.android.car.settings/.common.CarSettingActivity;launchFlags=0x14008000;end"
-            />
-            <com.android.systemui.statusbar.policy.Clock
-                android:id="@+id/clock"
-                android:textAppearance="@style/TextAppearance.StatusBar.Clock"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:singleLine="true"
-                android:paddingStart="@dimen/status_bar_clock_starting_padding"
-                android:paddingEnd="@dimen/status_bar_clock_end_padding"
-                android:gravity="center_vertical"
-            />
-        </FrameLayout>
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_height="match_parent"
-        android:layout_width="wrap_content"
-        android:gravity="center"
-        android:paddingStart="@dimen/car_keyline_1"
-        android:paddingEnd="@dimen/car_keyline_1"
-        android:id="@+id/lock_screen_nav_buttons"
-        android:layout_weight="1"
-        android:visibility="gone">
-
-        <Space
-            android:layout_height="match_parent"
-            android:layout_width="0dp"
-            android:layout_weight="1"/>
-
-        <com.android.systemui.statusbar.car.CarNavigationButton
-            android:id="@+id/hvac_lockscreen"
-            style="@style/NavigationBarButton"
-            systemui:intent="intent:#Intent;action=android.car.intent.action.TOGGLE_HVAC_CONTROLS;end"
-            systemui:broadcast="true"
-            android:src="@drawable/car_ic_hvac"
-            android:background="?android:attr/selectableItemBackground"
-        />
-
-        <Space
-            style="@style/NavigationBarButton"/>
-
-        <com.android.systemui.statusbar.policy.Clock
-            android:id="@+id/clock_lockscreen"
-            android:textAppearance="@style/TextAppearance.StatusBar.Clock"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:singleLine="true"
-            android:paddingStart="@dimen/status_bar_clock_starting_padding"
-            android:paddingEnd="@dimen/status_bar_clock_end_padding"
-            android:gravity="center_vertical"
-        />
-    </LinearLayout>
-
-</com.android.systemui.statusbar.car.CarNavigationBarView>
-
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/status_bar.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/status_bar.xml
deleted file mode 100644
index b99bfe8..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/status_bar.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<com.android.systemui.statusbar.phone.PhoneStatusBarView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"
-    android:id="@+id/status_bar"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/status_bar_height"
-    android:background="@drawable/system_bar_background"
-    android:orientation="vertical"
-    android:focusable="false"
-    android:descendantFocusability="afterDescendants"
-    >
-
-    <ImageView
-        android:id="@+id/notification_lights_out"
-        android:layout_width="@dimen/status_bar_icon_size"
-        android:layout_height="match_parent"
-        android:paddingStart="6dip"
-        android:paddingBottom="2dip"
-        android:src="@drawable/ic_sysbar_lights_out_dot_small"
-        android:scaleType="center"
-        android:visibility="gone"
-        />
-
-    <LinearLayout android:id="@+id/status_bar_contents"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:paddingStart="6dp"
-        android:paddingEnd="8dp"
-        android:orientation="horizontal"
-        >
-
-        <include layout="@layout/heads_up_status_bar_layout" />
-
-        <!-- The alpha of this area is controlled from both PhoneStatusBarTransitions and
-             PhoneStatusBar (DISABLE_NOTIFICATION_ICONS). -->
-        <com.android.systemui.statusbar.AlphaOptimizedFrameLayout
-            android:id="@+id/notification_icon_area"
-            android:layout_width="0dip"
-            android:layout_height="match_parent"
-            android:layout_weight="1"
-            android:orientation="horizontal"
-            android:visibility="gone" />
-
-        <com.android.keyguard.AlphaOptimizedLinearLayout android:id="@+id/system_icon_area"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="horizontal"
-            >
-
-            <include layout="@layout/system_icons" />
-
-            <!-- Sort of a crude hack but we can't do much here without refactoring
-                 system ui code. -->
-            <Space
-                android:layout_width="0dp"
-                android:layout_height="match_parent"
-                android:layout_weight="1" />
-
-            <com.android.systemui.statusbar.policy.Clock
-                android:id="@+id/clock"
-                android:textAppearance="@style/TextAppearance.StatusBar.Clock"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:singleLine="true"
-                android:paddingStart="@dimen/status_bar_clock_starting_padding"
-                android:paddingEnd="@dimen/status_bar_clock_end_padding"
-                android:gravity="center_vertical|end"
-                />
-        </com.android.keyguard.AlphaOptimizedLinearLayout>
-    </LinearLayout>
-
-</com.android.systemui.statusbar.phone.PhoneStatusBarView>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/values-night/colors.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/values-night/colors.xml
deleted file mode 100644
index 26479a5..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/values-night/colors.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2016, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT 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="status_bar_background_color">#ff000000</color>
-    <color name="system_bar_background_opaque">#ff0c1013</color>
-
-    <!-- The color of the ripples on the untinted notifications -->
-    <color name="notification_ripple_untinted_color">@color/ripple_material_dark</color>
-</resources>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/arrays_car.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/values/arrays_car.xml
deleted file mode 100644
index 1fa0b3b..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/arrays_car.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-**
-** Copyright 2016, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT 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>
-    <!-- There needs to be correspondence per index between these arrays, which means that if there
-         isn't a longpress action associated with a shortcut item, put in an empty item to make
-         sure everything lines up.
-    -->
-    <array name="car_facet_icons">
-        <item>@drawable/car_ic_navigation</item>
-        <item>@drawable/car_ic_phone</item>
-        <item>@drawable/car_ic_overview</item>
-        <item>@drawable/car_ic_music</item>
-        <item>@drawable/car_ic_car</item>
-    </array>
-    <array name="car_facet_intent_uris">
-        <!-- Launch the lenspicker for all the facets. The lens picker will trampoline into the last run app or display a list of valid apps -->
-        <item>intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x14000000;package=com.android.support.car.lenspicker;end</item>
-        <item>intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x14000000;package=com.android.support.car.lenspicker;end</item>
-        <item>intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.HOME;launchFlags=0x14000000;S.system_command=toggle_notifications;end</item>
-        <item>intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x14000000;package=com.android.support.car.lenspicker;end</item>
-        <item>intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x14000000;package=com.android.support.car.lenspicker;end</item>
-    </array>
-    <array name="car_facet_longpress_intent_uris">
-        <item></item>
-        <item></item>
-        <item></item>
-        <item></item>
-        <!-- Long pressing the overflow triggers a bug report -->
-        <item>intent:#Intent;component=com.google.android.car.bugreport/.BugReportActivity;end</item>
-    </array>
-    <array name="car_facet_category_filters">
-        <item>android.intent.category.APP_MAPS</item>
-        <item>android.intent.category.APP_MESSAGING</item>
-        <item></item>
-        <item>android.intent.category.APP_MUSIC</item>
-        <item></item>
-    </array>
-    <array name="car_facet_package_filters">
-        <item>com.android.car.mapsplaceholder</item>
-        <item>com.android.car.dialer</item>
-        <item>com.android.car.overview</item>
-        <item></item>
-        <item>com.android.car.hvac;com.android.settings;com.android.car.settings;com.android.vending;com.google.android.car.bugreport;com.google.android.car.kitchensink;com.android.car.systemupdater;org.chromium.webview_shell;com.android.contacts;org.codeaurora.bluetooth.bttestapp;com.google.android.projection.sink;com.google.android.googlequicksearchbox</item>
-    </array>
-</resources>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/colors.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/values/colors.xml
deleted file mode 100644
index 30c0c58..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/colors.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2017, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources>
-    <!-- System ui can't depend on car libs so redefine. -->
-    <color name="car_grey_50">#fffafafa</color>
-
-    <color name="docked_divider_background">@color/car_grey_50</color>
-    <color name="system_bar_background_opaque">#ff172026</color>
-
-    <color name="status_bar_background_color">#33000000</color>
-    <drawable name="system_bar_background">@color/status_bar_background_color</drawable>
-
-    <!-- The scrim color for the background of the notifications shade. -->
-    <color name="scrim_behind_color">#172026</color>
-
-    <!-- The color of the dividing line between grouped notifications. -->
-    <color name="notification_divider_color">@*android:color/notification_action_list</color>
-
-    <!-- The color of the ripples on the untinted notifications -->
-    <color name="notification_ripple_untinted_color">@color/ripple_material_light</color>
-
-    <color name="car_teal_700">#ff00796b</color>
-    <color name="car_grey_300">#ffe0e0e0</color>
-    <color name="car_grey_900">#ff212121</color>
-
-    <color name="keyguard_button_text_color">@android:color/black</color>
-</resources>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
index e48a06a..d8d8516 100644
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
+++ b/car_product/overlay/frameworks/base/packages/SystemUI/res/values/config.xml
@@ -19,9 +19,6 @@
 
 <!-- Resource overrides for car system ui. -->
 <resources>
-    <string name="config_statusBarComponent" translatable="false">com.android.systemui.statusbar.car.CarStatusBar</string>
-    <string name="config_systemUIFactoryComponent" translatable="false">com.android.systemui.car.CarSystemUIFactory</string>
-    <bool name="config_enableFullscreenUserSwitcher">true</bool>
 
     <!-- Notifications on the car should not show the gear icon. Swiping should only dismiss the
          cards. -->
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/config_car.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/values/config_car.xml
deleted file mode 100644
index 9c8dcb1..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/config_car.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2016, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT 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>
-    <!-- These next two work together, if you enable this first one you need to provide an intent
-         uri that will be launched into the docked window. -->
-    <bool name="config_enablePersistentDockedActivity">false</bool>
-    <string name="config_persistentDockedActivityIntentUri" translatable="false"></string>
-</resources>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
index 37a6238..b57fcb9 100644
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
+++ b/car_product/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
@@ -21,56 +21,6 @@
          scrim has no transparency. -->
     <item name="scrim_behind_alpha" format="float" type="dimen">1.0</item>
 
-    <!-- The amount by which to scale up the status bar icons. -->
-    <item name="status_bar_icon_scale_factor" format="float" type="dimen">2.3</item>
-
-    <!-- The font size for the clock in the status bar. -->
-    <dimen name="status_bar_clock_size">24sp</dimen>
-
-    <!-- The starting padding for the clock in the status bar. -->
-    <dimen name="status_bar_clock_starting_padding">12dp</dimen>
-
-    <!-- The end padding for the clock in the status bar. -->
-    <dimen name="status_bar_clock_end_padding">@dimen/status_bar_clock_starting_padding</dimen>
-
-    <!-- size at which Notification icons will be drawn in the status bar -->
-    <dimen name="status_bar_icon_drawing_size">32dp</dimen>
-
-    <!-- Starting margin before the signal cluster -->
-    <dimen name="signal_cluster_margin_start">8dp</dimen>
-
-    <!-- Padding between signal cluster and battery icon -->
-    <dimen name="signal_cluster_battery_padding">@dimen/status_bar_clock_starting_padding</dimen>
-
-    <!-- Spacing after the wifi signals that is present if there are any icons following it. -->
-    <dimen name="status_bar_wifi_signal_spacer_width">@dimen/status_bar_clock_starting_padding</dimen>
-
-    <!-- Spacing before the airplane mode icon if there are any icons preceding it. -->
-    <dimen name="status_bar_airplane_spacer_width">@dimen/status_bar_clock_starting_padding</dimen>
-
-    <!-- Padding at the end of the view that displays the mobile signal icons. This value should
-         be double the signal_cluster_margin_start. -->
-    <dimen name="mobile_signal_group_end_padding">16dp</dimen>
-
-    <!-- Padding between the mobile data type and the strength indicator. -->
-    <dimen name="mobile_data_icon_start_padding">@dimen/mobile_signal_group_end_padding</dimen>
-
-    <!-- gap on either side of status bar notification icons -->
-    <dimen name="status_bar_icon_padding">8dp</dimen>
-
-    <!-- Standard image button size for volume dialog buttons -->
-    <dimen name="volume_button_size">84dp</dimen>
-
-    <!-- The maximum width allowed for the volume dialog. For auto, we allow this to span a good
-         deal of the screen. This value accounts for the side margins. -->
-    <dimen name="volume_dialog_panel_width">1920dp</dimen>
-
-    <dimen name="car_navigation_button_width">56dp</dimen>
-    <dimen name="car_navigation_button_holder_width">96dp</dimen>
-
-    <dimen name="navigation_bar_padding_top">0dp</dimen>
-    <dimen name="navigation_bar_padding_side">264dp</dimen>
-
     <!-- Largest size an avatar might need to be drawn in the user picker, status bar, or
          quick settings header -->
     <dimen name="max_avatar_size">128dp</dimen>
@@ -141,18 +91,4 @@
          etc. in the car setting.-->
     <dimen name="qs_footer_height">74dp</dimen>
 
-    <dimen name="volume_dialog_side_margin">@dimen/side_margin</dimen>
-
-    <dimen name="volume_dialog_elevation">6dp</dimen>
-
-    <dimen name="volume_dialog_row_margin_end">@dimen/car_keyline_3</dimen>
-
-    <dimen name="volume_dialog_row_padding_end">0dp</dimen>
-
-    <dimen name="line_item_height">128dp</dimen>
-    <dimen name="volume_icon_size">96dp</dimen>
-    <dimen name="side_margin">148dp</dimen>
-    <dimen name="car_keyline_1">24dp</dimen>
-    <dimen name="car_keyline_2">96dp</dimen>
-    <dimen name="car_keyline_3">128dp</dimen>
 </resources>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/styles.xml b/car_product/overlay/frameworks/base/packages/SystemUI/res/values/styles.xml
deleted file mode 100644
index 68fc641..0000000
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/values/styles.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2016, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <!-- The style for the volume icons in the volume dialog. This style makes the icon scale to
-         fit its container since auto wants the icon to be larger. The padding is added to make it
-         so the icon does not press along the edges of the dialog. -->
-    <style name="VolumeButtons" parent="@android:style/Widget.Material.Button.Borderless">
-        <item name="android:background">@drawable/btn_borderless_rect</item>
-        <item name="android:scaleType">fitCenter</item>
-        <item name="android:padding">22dp</item>
-    </style>
-
-    <style name="NavigationBarButton">
-        <item name="android:layout_height">56dp</item>
-        <item name="android:layout_width">76dp</item>
-        <item name="android:paddingStart">@dimen/car_padding_1</item>
-        <item name="android:paddingEnd">@dimen/car_padding_1</item>
-    </style>
-
-</resources>
diff --git a/car_product/overlay/packages/apps/PackageInstaller/res/drawable/background_round_corners.xml b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/background_round_corners.xml
index 03d7418..1b71555 100644
--- a/car_product/overlay/packages/apps/PackageInstaller/res/drawable/background_round_corners.xml
+++ b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/background_round_corners.xml
@@ -15,6 +15,6 @@
      limitations under the License.
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android" >
-    <solid android:color="@color/car_card" />
-    <corners android:radius="@dimen/car_radius_3" />
+    <solid android:color="?android:attr/colorBackgroundFloating" />
+    <corners android:radius="@*android:dimen/car_radius_3" />
 </shape>
diff --git a/car_product/overlay/packages/apps/PackageInstaller/res/drawable/dialog_button_background.xml b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/dialog_button_background.xml
index 17df216..c4c91c5 100644
--- a/car_product/overlay/packages/apps/PackageInstaller/res/drawable/dialog_button_background.xml
+++ b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/dialog_button_background.xml
@@ -15,8 +15,8 @@
   ~ limitations under the License.
   -->
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="@color/car_card_ripple_background">
+    android:color="@*android:color/car_card_ripple_background">
     <item android:id="@android:id/mask">
-        <color android:color="@color/car_white_1000" />
+        <color android:color="@*android:color/car_white_1000" />
     </item>
 </ripple>
diff --git a/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box.xml b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box.xml
new file mode 100644
index 0000000..e985f39
--- /dev/null
+++ b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:drawable="@drawable/ic_check_box_unchecked"
+          android:state_checked="false"/>
+    <item android:drawable="@drawable/ic_check_box_checked"
+          android:state_checked="true"/>
+    <item android:drawable="@drawable/ic_check_box_unchecked"/>
+</selector>
diff --git a/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box_checked.xml b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box_checked.xml
new file mode 100644
index 0000000..9a6717a
--- /dev/null
+++ b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box_checked.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@*android:dimen/car_icon_size"
+        android:height="@*android:dimen/car_icon_size"
+        android:tint="@*android:color/car_teal_700"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"
+        android:fillColor="#000000"/>
+</vector>
diff --git a/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box_unchecked.xml b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box_unchecked.xml
new file mode 100644
index 0000000..522935c
--- /dev/null
+++ b/car_product/overlay/packages/apps/PackageInstaller/res/drawable/ic_check_box_unchecked.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="@*android:dimen/car_icon_size"
+        android:height="@*android:dimen/car_icon_size"
+        android:tint="@*android:color/car_tint"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M19,5v14H5V5h14m0,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"
+        android:fillColor="#000000"/>
+</vector>
diff --git a/car_product/overlay/packages/apps/PackageInstaller/res/layout/grant_permissions.xml b/car_product/overlay/packages/apps/PackageInstaller/res/layout/grant_permissions.xml
index 08e5fd8..436099f 100644
--- a/car_product/overlay/packages/apps/PackageInstaller/res/layout/grant_permissions.xml
+++ b/car_product/overlay/packages/apps/PackageInstaller/res/layout/grant_permissions.xml
@@ -33,10 +33,10 @@
             android:id="@+id/desc_container"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="@dimen/car_padding_4"
-            android:layout_marginStart="@dimen/car_keyline_1"
-            android:layout_marginBottom="@dimen/car_padding_2"
-            android:layout_marginEnd="@dimen/car_keyline_1">
+            android:layout_marginTop="@*android:dimen/car_padding_4"
+            android:layout_marginStart="@*android:dimen/car_keyline_1"
+            android:layout_marginBottom="@*android:dimen/car_padding_2"
+            android:layout_marginEnd="@*android:dimen/car_keyline_1">
 
             <include
                 layout="@layout/permission_description" />
@@ -50,15 +50,15 @@
             <CheckBox
                 android:id="@+id/do_not_ask_checkbox"
                 android:layout_width="wrap_content"
-                android:layout_height="@dimen/car_single_line_list_item_height"
-                android:layout_marginStart="@dimen/car_keyline_1"
-                android:layout_marginEnd="@dimen/car_keyline_1"
+                android:layout_height="@*android:dimen/car_single_line_list_item_height"
+                android:layout_marginStart="@*android:dimen/car_keyline_1"
+                android:layout_marginEnd="@*android:dimen/car_keyline_1"
                 android:gravity="center_vertical"
-                android:paddingLeft="@dimen/car_keyline_1_keyline_3_diff"
+                android:paddingLeft="@*android:dimen/car_keyline_1_keyline_3_diff"
                 android:button="@drawable/ic_check_box"
                 android:text="@string/never_ask_again"
                 android:textColor="?android:attr/textColorSecondary"
-                android:textSize="@dimen/car_action1_size"
+                android:textSize="@*android:dimen/car_body3_size"
                 android:visibility="gone">
             </CheckBox>
 
@@ -66,7 +66,7 @@
                 android:id="@+id/button_group"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/car_padding_2"
+                android:layout_marginTop="@*android:dimen/car_padding_2"
                 android:layoutDirection="locale"
                 android:gravity="center_vertical"
                 android:orientation="horizontal">
@@ -74,27 +74,17 @@
                 <Button
                     android:id="@+id/permission_deny_button"
                     android:layout_width="wrap_content"
-                    android:layout_height="@dimen/car_dialog_action_bar_height"
-                    android:background="@drawable/dialog_button_background"
-                    android:paddingStart="@dimen/car_keyline_1"
-                    android:paddingEnd="@dimen/car_padding_4"
+                    android:layout_height="wrap_content"
                     android:text="@string/grant_dialog_button_deny"
-                    android:textColor="@color/car_highlight"
-                    android:textSize="@dimen/car_action1_size"
-                    android:textStyle="bold">
+                    style="?android:attr/buttonBarButtonStyle">
                 </Button>
 
                 <Button
                     android:id="@+id/permission_allow_button"
                     android:layout_width="wrap_content"
-                    android:layout_height="@dimen/car_dialog_action_bar_height"
-                    android:background="@drawable/dialog_button_background"
-                    android:paddingStart="@dimen/car_padding_4"
-                    android:paddingEnd="@dimen/car_padding_4"
+                    android:layout_height="@*android:dimen/car_dialog_action_bar_height"
                     android:text="@string/grant_dialog_button_allow"
-                    android:textColor="@color/car_highlight"
-                    android:textSize="@dimen/car_action1_size"
-                    android:textStyle="bold">
+                    style="?android:attr/buttonBarButtonStyle">
                 </Button>
 
                 <Space
@@ -109,9 +99,9 @@
                     android:id="@+id/current_page_text"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:paddingEnd="@dimen/car_keyline_1"
+                    android:paddingEnd="@*android:dimen/car_keyline_1"
                     android:maxLines="1"
-                    android:textAppearance="@style/TextAppearance.Car.Body2"
+                    android:textAppearance="@*android:style/CarBody2"
                     android:visibility="invisible">
                 </TextView>
 
diff --git a/car_product/overlay/packages/apps/PackageInstaller/res/layout/permission_description.xml b/car_product/overlay/packages/apps/PackageInstaller/res/layout/permission_description.xml
index cdbaf56..f1255ea 100644
--- a/car_product/overlay/packages/apps/PackageInstaller/res/layout/permission_description.xml
+++ b/car_product/overlay/packages/apps/PackageInstaller/res/layout/permission_description.xml
@@ -35,7 +35,7 @@
         android:id="@+id/permission_message"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/car_body2_size"
-        android:textColor="@color/car_body2"/>
+        android:textAppearance="@*android:style/CarBody1"
+        />
 
 </LinearLayout>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_seekbar_thumb.xml b/car_product/overlay/packages/apps/PackageInstaller/res/values/themes.xml
similarity index 62%
rename from car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_seekbar_thumb.xml
rename to car_product/overlay/packages/apps/PackageInstaller/res/values/themes.xml
index a29ddc8..08e67a8 100644
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/car_ic_seekbar_thumb.xml
+++ b/car_product/overlay/packages/apps/PackageInstaller/res/values/themes.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  ~ Copyright (C) 2017 The Android Open Source Project
+  ~ Copyright (C) 2018 The Android Open Source Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
   ~ you may not use this file except in compliance with the License.
@@ -15,14 +15,8 @@
   ~ limitations under the License
   -->
 
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="oval">
-    <solid android:color="@color/car_teal_700" />
-    <size
-        android:width="30dp"
-        android:height="30dp" />
-    <stroke
-        android:width="1dp"
-        android:color="@color/car_teal_700" />
-</shape>
+<resources>
+    <style name="Settings"
+           parent="@*android:style/Theme.DeviceDefault.Settings.NoActionBar">
+    </style>
+</resources>
diff --git a/service/Android.mk b/service/Android.mk
index e961fbb..00a699d 100644
--- a/service/Android.mk
+++ b/service/Android.mk
@@ -40,7 +40,9 @@
 LOCAL_PROGUARD_ENABLED := disabled
 
 LOCAL_JAVA_LIBRARIES += android.car
+
 LOCAL_STATIC_JAVA_LIBRARIES += \
+        android.car.user \
         android.hidl.base-V1.0-java \
         android.hardware.automotive.audiocontrol-V1.0-java \
         android.hardware.automotive.vehicle-V2.0-java \
@@ -68,7 +70,9 @@
 
 LOCAL_JAVA_LIBRARIES += android.car \
         car-frameworks-service
+
 LOCAL_STATIC_JAVA_LIBRARIES += \
+        android.car.user \
         android.hidl.base-V1.0-java \
         android.hardware.automotive.audiocontrol-V1.0-java \
         android.hardware.automotive.vehicle-V2.0-java \
diff --git a/service/AndroidManifest.xml b/service/AndroidManifest.xml
index 24c9cd7..4a16579 100644
--- a/service/AndroidManifest.xml
+++ b/service/AndroidManifest.xml
@@ -129,6 +129,11 @@
         android:label="@string/car_permission_label_control_car_exterior_lights"
         android:description="@string/car_permission_desc_control_car_exterior_lights" />
     <permission
+        android:name="android.car.permission.CAR_POWER"
+        android:protectionLevel="system|signature"
+        android:label="@string/car_permission_label_car_power"
+        android:description="@string/car_permission_desc_car_power" />
+    <permission
         android:name="android.car.permission.CAR_POWERTRAIN"
         android:protectionLevel="normal"
         android:label="@string/car_permission_label_car_powertrain"
diff --git a/service/res/values/config.xml b/service/res/values/config.xml
index 214cf02..8d436e0 100644
--- a/service/res/values/config.xml
+++ b/service/res/values/config.xml
@@ -34,7 +34,7 @@
 
     <string name="inputService">android.car.input.service/.DefaultInputService</string>
 
-    <string name="instrumentClusterRendererService">android.car.cluster.sample/.SampleClusterServiceImpl</string>
+    <string name="instrumentClusterRendererService">android.car.cluster.loggingrenderer/.LoggingClusterRenderingService</string>
 
     <!--  Whether to enable Activity blocking for safety. When Activity blocking is enabled,
           only whitelisted safe Activities will be allowed while car is not parked. -->
diff --git a/service/res/values/strings.xml b/service/res/values/strings.xml
index 1947e43..2de39f1 100644
--- a/service/res/values/strings.xml
+++ b/service/res/values/strings.xml
@@ -13,7 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+<resources>
     <string name="app_title">Car service</string>
 
     <!--  For permissions -->
@@ -103,8 +103,8 @@
     <string name="car_can_bus_failure_desc">CAN bus does not respond. Unplug and plug back headunit
         box and restart the car</string>
 
-    <!-- Blocking activity: Message to show to user when a feature of current application is not allowed. [CHAR LIMIT=60] -->
-    <string name="activity_blocked_string">This <xliff:g id="app_name" example="Google Maps">%1$s</xliff:g> feature can\'t be used while driving.</string>
+    <!-- Blocking activity: Message to show to user when an activity is not allowed during driving. [CHAR LIMIT=120] -->
+    <string name="activity_blocked_string">For your safety, this activity isn’t available while you’re driving</string>
     <!-- Blocking activity: Button text that restarts the current blocked application. [CHAR LIMIT=10] -->
     <string name="exit_button">OK</string>
 
@@ -202,4 +202,9 @@
     <string name="car_permission_label_car_powertrain">Car Powertrain</string>
     <!-- Permission text: apps read information of car's powertrain [CHAR LIMIT=NONE] -->
     <string name="car_permission_desc_car_powertrain">Access car powertrain information</string>
+
+    <!-- Permission text: apps read information of car's power state [CHAR LIMIT=NONE] -->
+    <string name="car_permission_label_car_power">Car Power</string>
+    <!-- Permission text: apps read information of car's power state [CHAR LIMIT=NONE] -->
+    <string name="car_permission_desc_car_power">Access car power state</string>
 </resources>
diff --git a/service/src/com/android/car/CarInputService.java b/service/src/com/android/car/CarInputService.java
index 2b97221..c95674e 100644
--- a/service/src/com/android/car/CarInputService.java
+++ b/service/src/com/android/car/CarInputService.java
@@ -16,7 +16,7 @@
 package com.android.car;
 
 import static android.hardware.input.InputManager.INJECT_INPUT_EVENT_MODE_ASYNC;
-import static android.service.voice.VoiceInteractionSession.SHOW_SOURCE_ASSIST_GESTURE;
+import static android.service.voice.VoiceInteractionSession.SHOW_SOURCE_PUSH_TO_TALK;
 
 import android.app.ActivityManager;
 import android.car.input.CarInputHandlingService;
@@ -355,7 +355,7 @@
         args.putBoolean(EXTRA_CAR_PUSH_TO_TALK, true);
 
         mAssistUtils.showSessionForActiveService(args,
-                SHOW_SOURCE_ASSIST_GESTURE, mShowCallback, null /*activityToken*/);
+                SHOW_SOURCE_PUSH_TO_TALK, mShowCallback, null /*activityToken*/);
     }
 
     private void handleInstrumentClusterKey(KeyEvent event) {
diff --git a/service/src/com/android/car/CarLocationService.java b/service/src/com/android/car/CarLocationService.java
index a7aaf03..e0a55c9 100644
--- a/service/src/com/android/car/CarLocationService.java
+++ b/service/src/com/android/car/CarLocationService.java
@@ -16,20 +16,27 @@
 
 package com.android.car;
 
+import android.car.Car;
+import android.car.CarNotConnectedException;
 import android.car.hardware.CarPropertyValue;
+import android.car.hardware.power.CarPowerManager;
+import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
 import android.car.hardware.property.CarPropertyEvent;
 import android.car.hardware.property.ICarPropertyEventListener;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.BroadcastReceiver;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.ServiceConnection;
 import android.hardware.automotive.vehicle.V2_0.VehicleIgnitionState;
 import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
 import android.location.Location;
 import android.location.LocationManager;
 import android.os.Handler;
 import android.os.HandlerThread;
+import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.os.UserHandle;
@@ -48,13 +55,14 @@
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
 
 /**
  * This service stores the last known location from {@link LocationManager} when a car is parked
  * and restores the location when the car is powered on.
  */
-public class CarLocationService extends BroadcastReceiver implements CarServiceBase,
-        CarPowerManagementService.PowerEventProcessingHandler {
+public class CarLocationService extends BroadcastReceiver implements
+            CarServiceBase, CarPowerStateListener {
     private static final String TAG = "CarLocationService";
     private static final String FILENAME = "location_cache.json";
     private static final boolean DBG = false;
@@ -69,22 +77,57 @@
     private final Object mLock = new Object();
 
     private final Context mContext;
-    private final CarPowerManagementService mCarPowerManagementService;
     private final CarPropertyService mCarPropertyService;
     private final CarPropertyEventListener mCarPropertyEventListener;
     private final CarUserManagerHelper mCarUserManagerHelper;
+    private final Car mCar;
+    private final ServiceConnection mCarServiceConnection = new ServiceConnection() {
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            try {
+                mCarPowerManager = (CarPowerManager) mCar.getCarManager(Car.POWER_SERVICE);
+                mCarPowerManager.setListener(CarLocationService.this);
+            } catch (CarNotConnectedException e) {
+                Log.e(TAG, "Failed to get CarPowerManager instance", e);
+            }
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+            if (mCarPowerManager != null) {
+                mCarPowerManager.clearListener();
+            }
+        }
+    };
+
     private int mTaskCount = 0;
     private HandlerThread mHandlerThread;
     private Handler mHandler;
+    private CarPowerManager mCarPowerManager;
 
-    public CarLocationService(Context context, CarPowerManagementService carPowerManagementService,
-            CarPropertyService carPropertyService, CarUserManagerHelper carUserManagerHelper) {
+    public CarLocationService(
+            Context context,
+            CarPropertyService carPropertyService,
+            CarUserManagerHelper carUserManagerHelper) {
+        this(context, carPropertyService, carUserManagerHelper, null);
+    }
+
+    public CarLocationService(
+            Context context,
+            CarPropertyService carPropertyService,
+            CarUserManagerHelper carUserManagerHelper,
+            Car car) {
         logd("constructed");
         mContext = context;
-        mCarPowerManagementService = carPowerManagementService;
         mCarPropertyService = carPropertyService;
         mCarPropertyEventListener = new CarPropertyEventListener();
         mCarUserManagerHelper = carUserManagerHelper;
+        if (car != null) {
+            mCar = car;
+        } else {
+            mCar = Car.createCar(context, mCarServiceConnection);
+            mCar.connect();
+        }
     }
 
     @Override
@@ -96,16 +139,15 @@
         filter.addAction(LocationManager.MODE_CHANGED_ACTION);
         filter.addAction(LocationManager.GPS_ENABLED_CHANGE_ACTION);
         mContext.registerReceiver(this, filter);
-        mCarPropertyService.registerListener(VehicleProperty.IGNITION_STATE, 0,
-                mCarPropertyEventListener);
-        mCarPowerManagementService.registerPowerEventProcessingHandler(this);
+        mCarPropertyService.registerListener(
+                VehicleProperty.IGNITION_STATE, 0, mCarPropertyEventListener);
     }
 
     @Override
     public void release() {
         logd("release");
-        mCarPropertyService.unregisterListener(VehicleProperty.IGNITION_STATE,
-                mCarPropertyEventListener);
+        mCarPropertyService.unregisterListener(
+                VehicleProperty.IGNITION_STATE, mCarPropertyEventListener);
         mContext.unregisterReceiver(this);
     }
 
@@ -118,19 +160,28 @@
     }
 
     @Override
-    public long onPrepareShutdown(boolean shuttingDown) {
-        logd("onPrepareShutdown " + shuttingDown);
-        asyncOperation(() -> storeLocation());
-        return 100;
-    }
-
-    @Override
-    public void onPowerOn(boolean displayOn) {
-    }
-
-    @Override
-    public int getWakeupTime() {
-        return 0;
+    public void onStateChanged(int state, CompletableFuture<Void> future) {
+        switch (state) {
+            case CarPowerStateListener.SHUTDOWN_ENTER:
+            case CarPowerStateListener.SUSPEND_ENTER:
+                logd("onStateChanged: " + state);
+                asyncOperation(() -> {
+                    storeLocation();
+                    // Notify the CarPowerManager that it may proceed to shutdown or suspend.
+                    if (future != null) {
+                        future.complete(null);
+                    }
+                });
+                break;
+            case CarPowerStateListener.SHUTDOWN_CANCELLED:
+            case CarPowerStateListener.SUSPEND_EXIT:
+                // This service does not need to do any work for these events but should still
+                // notify the CarPowerManager that it may proceed.
+                if (future != null) {
+                    future.complete(null);
+                }
+                break;
+        }
     }
 
     @Override
diff --git a/service/src/com/android/car/CarPowerManagementService.java b/service/src/com/android/car/CarPowerManagementService.java
index 57ccf62..1514056 100644
--- a/service/src/com/android/car/CarPowerManagementService.java
+++ b/service/src/com/android/car/CarPowerManagementService.java
@@ -42,73 +42,18 @@
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 
-public class CarPowerManagementService extends ICarPower.Stub implements CarServiceBase,
-    PowerHalService.PowerEventListener {
-
-    /**
-     * Listener for other services to monitor power events.
-     */
-    public interface PowerServiceEventListener {
-        /**
-         * Shutdown is happening
-         */
-        void onShutdown();
-
-        /**
-         * Entering deep sleep.
-         */
-        void onSleepEntry();
-
-        /**
-         * Got out of deep sleep.
-         */
-        void onSleepExit();
-    }
-
-    /**
-     * Interface for components requiring processing time before shutting-down or
-     * entering sleep, and wake-up after shut-down.
-     */
-    public interface PowerEventProcessingHandler {
-        /**
-         * Called before shutdown or sleep entry to allow running some processing. This call
-         * should only queue such task in different thread and should return quickly.
-         * Blocking inside this call can trigger watchdog timer which can terminate the
-         * whole system.
-         * @param shuttingDown whether system is shutting down or not (= sleep entry).
-         * @return time necessary to run processing in ms. should return 0 if there is no
-         *         processing necessary.
-         */
-        long onPrepareShutdown(boolean shuttingDown);
-
-        /**
-         * Called when power state is changed to ON state. Display can be either on or off.
-         * @param displayOn
-         */
-        void onPowerOn(boolean displayOn);
-
-        /**
-         * Returns wake up time after system is fully shutdown. Power controller will power on
-         * the system after this time. This power on is meant for regular maintenance kind of
-         * operation.
-         * @return 0 of wake up is not necessary.
-         */
-        int getWakeupTime();
-    }
-
+/**
+ * Power Management service class for cars. Controls the power states and interacts with other
+ * parts of the system to ensure its own state.
+ */
+public class CarPowerManagementService extends ICarPower.Stub implements
+        CarServiceBase, PowerHalService.PowerEventListener {
     private final Context mContext;
     private final PowerHalService mHal;
     private final SystemInterface mSystemInterface;
-
-    private final CopyOnWriteArrayList<PowerServiceEventListener> mListeners =
-            new CopyOnWriteArrayList<>();
-    private final CopyOnWriteArrayList<PowerEventProcessingHandlerWrapper>
-            mPowerEventProcessingHandlers = new CopyOnWriteArrayList<>();
     private final PowerManagerCallbackList mPowerManagerListeners = new PowerManagerCallbackList();
     private final Map<IBinder, Integer> mPowerManagerListenerTokens = new ConcurrentHashMap<>();
-    private int mTokenValue = 1;
 
     @GuardedBy("this")
     private PowerState mCurrentState;
@@ -126,9 +71,11 @@
     private PowerHandler mHandler;
     private int mBootReason;
     private boolean mShutdownOnNextSuspend = false;
+    private int mNextWakeupSec;
+    private int mTokenValue = 1;
 
     // TODO:  Make this OEM configurable.
-    private final static int APP_EXTEND_MAX_MS = 10000;
+    private static final int APP_EXTEND_MAX_MS = 86400000; // 1 day
     private final static int SHUTDOWN_POLLING_INTERVAL_MS = 2000;
     private final static int SHUTDOWN_EXTEND_MAX_MS = 5000;
 
@@ -144,8 +91,8 @@
         }
     }
 
-    public CarPowerManagementService(Context context, PowerHalService powerHal,
-                                     SystemInterface systemInterface) {
+    public CarPowerManagementService(
+            Context context, PowerHalService powerHal, SystemInterface systemInterface) {
         mContext = context;
         mHal = powerHal;
         mSystemInterface = systemInterface;
@@ -206,55 +153,19 @@
             Log.e(CarLog.TAG_POWER, "Timeout while joining for handler thread to join.");
         }
         mSystemInterface.stopDisplayStateMonitoring();
-        mListeners.clear();
-        mPowerEventProcessingHandlers.clear();
         mPowerManagerListeners.kill();
         mPowerManagerListenerTokens.clear();
         mSystemInterface.releaseAllWakeLocks();
     }
 
     /**
-     * Register listener to monitor power event. There is no unregister counter-part and the list
-     * will be cleared when the service is released.
-     * @param listener
+     * Notifies earlier completion of power event processing. If some user modules need pre-shutdown
+     * processing time, they will get up to #APP_EXTEND_MAX_MS to complete their tasks. Modules
+     * are expected to finish earlier than that, and this call can be called in such case to trigger
+     * shutdown without waiting further.
      */
-    public synchronized void registerPowerEventListener(PowerServiceEventListener listener) {
-        mListeners.add(listener);
-    }
-
-    /**
-     * Register PowerEventPreprocessingHandler to run pre-processing before shutdown or
-     * sleep entry. There is no unregister counter-part and the list
-     * will be cleared when the service is released.
-     * @param handler
-     */
-    public synchronized void registerPowerEventProcessingHandler(
-            PowerEventProcessingHandler handler) {
-        mPowerEventProcessingHandlers.add(new PowerEventProcessingHandlerWrapper(handler));
-        // onPowerOn will not be called if power on notification is already done inside the
-        // handler thread. So request it once again here. Wrapper will have its own
-        // gatekeeping to prevent calling onPowerOn twice.
-        mHandler.handlePowerOn();
-    }
-
-    /**
-     * Notifies earlier completion of power event processing. PowerEventProcessingHandler quotes
-     * time necessary from onPrePowerEvent() call, but actual processing can finish earlier than
-     * that, and this call can be called in such case to trigger shutdown without waiting further.
-     *
-     * @param handler PowerEventProcessingHandler that was already registered with
-     *        {@link #registerPowerEventListener(PowerServiceEventListener)} call. If it was not
-     *        registered before, this call will be ignored.
-     */
-    public void notifyPowerEventProcessingCompletion(PowerEventProcessingHandler handler) {
+    public void notifyPowerEventProcessingCompletion() {
         long processingTime = 0;
-        for (PowerEventProcessingHandlerWrapper wrapper : mPowerEventProcessingHandlers) {
-            if (wrapper.handler == handler) {
-                wrapper.markProcessingDone();
-            } else if (!wrapper.isProcessingDone()) {
-                processingTime = Math.max(processingTime, wrapper.getProcessingTime());
-            }
-        }
         synchronized (mPowerManagerListenerTokens) {
             if (!mPowerManagerListenerTokens.isEmpty()) {
                 processingTime += APP_EXTEND_MAX_MS;
@@ -293,10 +204,6 @@
         writer.print("mCurrentState:" + mCurrentState);
         writer.print(",mProcessingStartTime:" + mProcessingStartTime);
         writer.println(",mLastSleepEntryTime:" + mLastSleepEntryTime);
-        writer.println("**PowerEventProcessingHandlers");
-        for (PowerEventProcessingHandlerWrapper wrapper : mPowerEventProcessingHandlers) {
-            writer.println(wrapper.toString());
-        }
     }
 
     @Override
@@ -336,11 +243,9 @@
         switch (state.mState) {
             case PowerHalService.STATE_ON_DISP_OFF:
                 handleDisplayOff(state);
-                notifyPowerOn(false);
                 break;
             case PowerHalService.STATE_ON_FULL:
                 handleFullOn(state);
-                notifyPowerOn(true);
                 break;
             case PowerHalService.STATE_SHUTDOWN_PREPARE:
                 handleShutdownPrepare(state);
@@ -358,27 +263,6 @@
         mSystemInterface.setDisplayState(true);
     }
 
-    @VisibleForTesting
-    protected void notifyPowerOn(boolean displayOn) {
-        for (PowerEventProcessingHandlerWrapper wrapper : mPowerEventProcessingHandlers) {
-            wrapper.callOnPowerOn(displayOn);
-        }
-    }
-
-    @VisibleForTesting
-    protected long notifyPrepareShutdown(boolean shuttingDown) {
-        long processingTimeMs = 0;
-        for (PowerEventProcessingHandlerWrapper wrapper : mPowerEventProcessingHandlers) {
-            long handlerProcessingTime = wrapper.handler.onPrepareShutdown(shuttingDown);
-            if (handlerProcessingTime > processingTimeMs) {
-                processingTimeMs = handlerProcessingTime;
-            }
-        }
-        // Add time for powerManager events
-        processingTimeMs += sendPowerManagerEvent(shuttingDown);
-        return processingTimeMs;
-    }
-
     private void handleShutdownPrepare(PowerState newState) {
         setCurrentState(newState);
         mSystemInterface.setDisplayState(false);;
@@ -410,28 +294,18 @@
     }
 
     private void doHandlePreprocessing(boolean shuttingDown) {
-        long processingTimeMs = 0;
-        for (PowerEventProcessingHandlerWrapper wrapper : mPowerEventProcessingHandlers) {
-            long handlerProcessingTime = wrapper.handler.onPrepareShutdown(shuttingDown);
-            if (handlerProcessingTime > 0) {
-                wrapper.setProcessingTimeAndResetProcessingDone(handlerProcessingTime);
-            }
-            if (handlerProcessingTime > processingTimeMs) {
-                processingTimeMs = handlerProcessingTime;
-            }
-        }
-        // Add time for powerManager events
-        processingTimeMs += sendPowerManagerEvent(shuttingDown);
+        // Set time for powerManager events
+        long processingTimeMs = sendPowerManagerEvent(shuttingDown);
         if (processingTimeMs > 0) {
             int pollingCount = (int)(processingTimeMs / SHUTDOWN_POLLING_INTERVAL_MS) + 1;
-            Log.i(CarLog.TAG_POWER, "processing before shutdown expected for :" + processingTimeMs +
-                    " ms, adding polling:" + pollingCount);
+            Log.i(CarLog.TAG_POWER, "processing before shutdown expected for: "
+                    + processingTimeMs + " ms, adding polling:" + pollingCount);
             synchronized (this) {
                 mProcessingStartTime = SystemClock.elapsedRealtime();
                 releaseTimerLocked();
                 mTimer = new Timer();
-                mTimer.scheduleAtFixedRate(new ShutdownProcessingTimerTask(shuttingDown,
-                        pollingCount),
+                mTimer.scheduleAtFixedRate(
+                        new ShutdownProcessingTimerTask(shuttingDown, pollingCount),
                         0 /*delay*/,
                         SHUTDOWN_POLLING_INTERVAL_MS);
             }
@@ -464,7 +338,8 @@
             }
             mPowerManagerListeners.finishBroadcast();
             if (!mPowerManagerListenerTokens.isEmpty()) {
-                Log.i(CarLog.TAG_POWER, "mPowerMangerListenerTokens not empty, add APP_EXTEND_MAX_MS");
+                Log.i(CarLog.TAG_POWER,
+                        "mPowerManagerListenerTokens not empty, add APP_EXTEND_MAX_MS");
                 processingTimeMs += APP_EXTEND_MAX_MS;
             }
         }
@@ -480,23 +355,19 @@
             handler = mHandler;
         }
         handler.cancelProcessingComplete();
-        for (PowerServiceEventListener listener : mListeners) {
-            listener.onSleepEntry();
-        }
-        int wakeupTimeSec = getWakeupTime();
         mHal.sendSleepEntry();
         synchronized (this) {
             mLastSleepEntryTime = SystemClock.elapsedRealtime();
         }
-        if (mSystemInterface.enterDeepSleep(wakeupTimeSec) == false) {
+        if (!mSystemInterface.enterDeepSleep(mNextWakeupSec)) {
             // System did not suspend.  Need to shutdown
             // TODO:  Shutdown gracefully
             Log.e(CarLog.TAG_POWER, "Sleep did not succeed.  Need to shutdown");
         }
+        // When we wake up, we reset the next wake up time and if no one will set it
+        // System will suspend / shutdown forever.
+        mNextWakeupSec = 0;
         mHal.sendSleepExit();
-        for (PowerServiceEventListener listener : mListeners) {
-            listener.onSleepExit();
-        }
         // Notify applications
         int i = mPowerManagerListeners.beginBroadcast();
         while (i-- > 0) {
@@ -531,10 +402,6 @@
                 displayOn = true;
             }
         }
-        for (PowerEventProcessingHandlerWrapper wrapper : mPowerEventProcessingHandlers) {
-            // wrapper will not send it forward if it is already called.
-            wrapper.callOnPowerOn(displayOn);
-        }
     }
 
     private boolean needPowerStateChange(PowerState newState) {
@@ -548,28 +415,10 @@
 
     private void doHandleShutdown() {
         // now shutdown
-        for (PowerServiceEventListener listener : mListeners) {
-            listener.onShutdown();
-        }
-        int wakeupTimeSec = 0;
-        if (mHal.isTimedWakeupAllowed()) {
-            wakeupTimeSec = getWakeupTime();
-        }
-        mHal.sendShutdownStart(wakeupTimeSec);
+        mHal.sendShutdownStart(mHal.isTimedWakeupAllowed() ? mNextWakeupSec : 0);
         mSystemInterface.shutdown();
     }
 
-    private int getWakeupTime() {
-        int wakeupTimeSec = 0;
-        for (PowerEventProcessingHandlerWrapper wrapper : mPowerEventProcessingHandlers) {
-            int t = wrapper.handler.getWakeupTime();
-            if (t > wakeupTimeSec) {
-                wakeupTimeSec = t;
-            }
-        }
-        return wakeupTimeSec;
-    }
-
     private void doHandleProcessingComplete(boolean shutdownWhenCompleted) {
         synchronized (this) {
             releaseTimerLocked();
@@ -676,6 +525,20 @@
         }
     }
 
+    @Override
+    public synchronized void scheduleNextWakeupTime(int seconds) {
+        if (seconds < 0) {
+            Log.w(CarLog.TAG_POWER, "Next wake up can not be in negative time. Ignoring!");
+            return;
+        }
+        if (mNextWakeupSec == 0 || mNextWakeupSec > seconds) {
+            mNextWakeupSec = seconds;
+        } else {
+            Log.d(CarLog.TAG_POWER, "Tried to schedule next wake up, but already had shorter "
+                    + " scheduled time");
+        }
+    }
+
     private void finishedLocked(IBinder binder, int token) {
         int currentToken = mPowerManagerListenerTokens.get(binder);
         if (currentToken == token) {
@@ -683,8 +546,9 @@
             if (mPowerManagerListenerTokens.isEmpty() &&
                 (mCurrentState.mState == PowerHalService.STATE_SHUTDOWN_PREPARE)) {
                 // All apps are ready to shutdown/suspend.
-                Log.i(CarLog.TAG_POWER, "Apps are finished, call notifyPowerEventProcessingCompletion");
-                notifyPowerEventProcessingCompletion(null);
+                Log.i(CarLog.TAG_POWER,
+                        "Apps are finished, call notifyPowerEventProcessingCompletion");
+                notifyPowerEventProcessingCompletion();
             }
         }
     }
@@ -792,54 +656,4 @@
             }
         }
     }
-
-    private static class PowerEventProcessingHandlerWrapper {
-        public final PowerEventProcessingHandler handler;
-        private long mProcessingTime = 0;
-        private boolean mProcessingDone = true;
-        private boolean mPowerOnSent = false;
-        private int mLastDisplayState = -1;
-
-        public PowerEventProcessingHandlerWrapper(PowerEventProcessingHandler handler) {
-            this.handler = handler;
-        }
-
-        public synchronized void setProcessingTimeAndResetProcessingDone(long processingTime) {
-            mProcessingTime = processingTime;
-            mProcessingDone = false;
-        }
-
-        public synchronized long getProcessingTime() {
-            return mProcessingTime;
-        }
-
-        public synchronized void markProcessingDone() {
-            mProcessingDone = true;
-        }
-
-        public synchronized boolean isProcessingDone() {
-            return mProcessingDone;
-        }
-
-        public void callOnPowerOn(boolean displayOn) {
-            int newDisplayState = displayOn ? 1 : 0;
-            boolean shouldCall = false;
-            synchronized (this) {
-                if (!mPowerOnSent || (mLastDisplayState != newDisplayState)) {
-                    shouldCall = true;
-                    mPowerOnSent = true;
-                    mLastDisplayState = newDisplayState;
-                }
-            }
-            if (shouldCall) {
-                handler.onPowerOn(displayOn);
-            }
-        }
-
-        @Override
-        public String toString() {
-            return "PowerEventProcessingHandlerWrapper [handler=" + handler + ", mProcessingTime="
-                    + mProcessingTime + ", mProcessingDone=" + mProcessingDone + "]";
-        }
-    }
 }
diff --git a/service/src/com/android/car/DeviceIdleControllerWrapper.java b/service/src/com/android/car/DeviceIdleControllerWrapper.java
deleted file mode 100644
index 0ed1b78..0000000
--- a/service/src/com/android/car/DeviceIdleControllerWrapper.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.car;
-
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.lang.ref.WeakReference;
-
-/**
-* An wrapper class that can be backed by a real DeviceIdleController or a mocked one.
-*/
-public abstract class DeviceIdleControllerWrapper {
-    private static final String TAG = "Garage_DeviceIdleWrapper";
-
-    private static final int MSG_REPORT_ACTIVE = 1;
-
-    @VisibleForTesting
-    protected WeakReference<DeviceMaintenanceActivityListener> mListener;
-
-    public interface DeviceMaintenanceActivityListener {
-        public void onMaintenanceActivityChanged(boolean active);
-    }
-    private final Object mLock = new Object();
-    @GuardedBy("mLock")
-    private boolean mActive;
-
-    private Handler mHandler = new IdleControllerHandler();
-
-    private class IdleControllerHandler extends Handler {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_REPORT_ACTIVE:
-                    boolean active  = msg.arg1 == 1;
-                    if (mListener.get() != null) {
-                        mListener.get().onMaintenanceActivityChanged(active);
-                    }
-                    break;
-            }
-        }
-    }
-
-    public boolean startTracking(DeviceMaintenanceActivityListener listener) {
-        synchronized (mLock) {
-            mListener = new WeakReference<DeviceMaintenanceActivityListener>(listener);
-            mActive = startLocked();
-            return mActive;
-        }
-    }
-
-    protected abstract boolean startLocked();
-
-    public abstract void stopTracking();
-
-    @VisibleForTesting
-    protected void reportActiveLocked(final boolean active) {
-        // post to a handler instead of calling the callback directly to avoid potential deadlock.
-        mHandler.sendMessage(mHandler.obtainMessage(MSG_REPORT_ACTIVE, active ? 1 : 0, 0));
-    }
-
-    @VisibleForTesting
-    protected void setMaintenanceActivity(final boolean active) {
-        synchronized (mLock) {
-            if (mActive == active) {
-                return;
-            }
-            mActive = active;
-
-            if (mListener.get() == null) {
-                // do cleanup if the listener has gone and did not call release.
-                stopTracking();
-                return;
-            }
-            reportActiveLocked(active);
-        }
-    }
-}
diff --git a/service/src/com/android/car/ICarImpl.java b/service/src/com/android/car/ICarImpl.java
index 67c50a7..b63b338 100644
--- a/service/src/com/android/car/ICarImpl.java
+++ b/service/src/com/android/car/ICarImpl.java
@@ -21,7 +21,7 @@
 import android.car.Car;
 import android.car.ICar;
 import android.car.cluster.renderer.IInstrumentClusterNavigation;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.hardware.automotive.vehicle.V2_0.IVehicle;
@@ -122,14 +122,14 @@
                 mSystemActivityMonitoringService);
         mCarInputService = new CarInputService(serviceContext, mHal.getInputHal());
         mCarProjectionService = new CarProjectionService(serviceContext, mCarInputService);
-        mGarageModeService = new GarageModeService(mContext, mCarPowerManagementService);
+        mGarageModeService = new GarageModeService(mContext);
         mAppFocusService = new AppFocusService(serviceContext, mSystemActivityMonitoringService);
         mCarAudioService = new CarAudioService(serviceContext);
         mCarNightService = new CarNightService(serviceContext, mCarPropertyService);
         mInstrumentClusterService = new InstrumentClusterService(serviceContext,
                 mAppFocusService, mCarInputService);
-        mSystemStateControllerService = new SystemStateControllerService(serviceContext,
-                mCarPowerManagementService, mCarAudioService, this);
+        mSystemStateControllerService = new SystemStateControllerService(
+                serviceContext, mCarAudioService, this);
         mPerUserCarServiceHelper = new PerUserCarServiceHelper(serviceContext);
         mCarBluetoothService = new CarBluetoothService(serviceContext, mCarPropertyService,
                 mPerUserCarServiceHelper, mCarUXRestrictionsService);
@@ -141,8 +141,8 @@
         mCarConfigurationService =
                 new CarConfigurationService(serviceContext, new JsonReaderImpl());
         mUserManagerHelper = new CarUserManagerHelper(serviceContext);
-        mCarLocationService = new CarLocationService(mContext, mCarPowerManagementService,
-                mCarPropertyService, mUserManagerHelper);
+        mCarLocationService = new CarLocationService(
+                mContext, mCarPropertyService, mUserManagerHelper);
 
         // Be careful with order. Service depending on other service should be inited later.
         List<CarServiceBase> allServices = new ArrayList<>();
@@ -167,12 +167,9 @@
         allServices.add(mCarConfigurationService);
         allServices.add(mVmsSubscriberService);
         allServices.add(mVmsPublisherService);
-
         if (mUserManagerHelper.isHeadlessSystemUser()) {
-            mCarUserService = new CarUserService(serviceContext, mUserManagerHelper);
-            allServices.add(mCarUserService);
+            allServices.add(new CarUserService(serviceContext, mUserManagerHelper));
         }
-
         allServices.add(mCarLocationService);
         mAllServices = allServices.toArray(new CarServiceBase[allServices.size()]);
     }
@@ -563,10 +560,10 @@
         private void forceGarageMode(String arg, PrintWriter writer) {
             switch (arg) {
                 case PARAM_ON_MODE:
-                    mGarageModeService.onPrepareShutdown(false);
+                    mGarageModeService.forceStartGarageMode();
                     break;
                 case PARAM_OFF_MODE:
-                    mGarageModeService.onSleepEntry();
+                    mGarageModeService.stopAndResetGarageMode();
                     break;
                 case PARAM_QUERY_MODE:
                     // Nothing to do. Always query at the end anyway.
@@ -576,7 +573,7 @@
                             + PARAM_OFF_MODE + "|" + PARAM_QUERY_MODE);
                     return;
             }
-            writer.println("Garage mode: " + mGarageModeService.isInGarageMode());
+            writer.println("Garage mode: " + mGarageModeService.isGarageModeActive());
         }
 
         /**
diff --git a/service/src/com/android/car/SystemStateControllerService.java b/service/src/com/android/car/SystemStateControllerService.java
index 53d74a3..e0b1161 100644
--- a/service/src/com/android/car/SystemStateControllerService.java
+++ b/service/src/com/android/car/SystemStateControllerService.java
@@ -18,23 +18,15 @@
 import android.content.Context;
 import android.content.res.Resources;
 
-import com.android.car.CarPowerManagementService.PowerEventProcessingHandler;
-import com.android.car.CarPowerManagementService.PowerServiceEventListener;
-
 import java.io.PrintWriter;
 
-public class SystemStateControllerService implements CarServiceBase,
-    PowerServiceEventListener, PowerEventProcessingHandler {
-
-    private final CarPowerManagementService mCarPowerManagementService;
+public class SystemStateControllerService implements CarServiceBase {
     private final CarAudioService mCarAudioService;
     private final ICarImpl mICarImpl;
     private final boolean mLockWhenMuting;
 
-    public SystemStateControllerService(Context context,
-            CarPowerManagementService carPowerManagementService,
-            CarAudioService carAudioService, ICarImpl carImpl) {
-        mCarPowerManagementService = carPowerManagementService;
+    public SystemStateControllerService(
+            Context context, CarAudioService carAudioService, ICarImpl carImpl) {
         mCarAudioService = carAudioService;
         mICarImpl = carImpl;
         Resources res = context.getResources();
@@ -42,40 +34,7 @@
     }
 
     @Override
-    public long onPrepareShutdown(boolean shuttingDown) {
-        //TODO add state saving here for things to restore on power on. bug: 32096079
-        return 0;
-    }
-
-    @Override
-    public void onPowerOn(boolean displayOn) {
-        // TODO may consider mute / unmute the system based on displayOn
-    }
-
-    @Override
-    public int getWakeupTime() {
-        return 0;
-    }
-
-    @Override
-    public void onShutdown() {
-        // TODO bug: 32096079
-    }
-
-    @Override
-    public void onSleepEntry() {
-        // TODO bug: 32096079
-    }
-
-    @Override
-    public void onSleepExit() {
-        // TODO bug: 32096079
-    }
-
-    @Override
     public void init() {
-        mCarPowerManagementService.registerPowerEventListener(this);
-        mCarPowerManagementService.registerPowerEventProcessingHandler(this);
     }
 
     @Override
diff --git a/service/src/com/android/car/VmsPublisherService.java b/service/src/com/android/car/VmsPublisherService.java
index a240e17..84eb8ce 100644
--- a/service/src/com/android/car/VmsPublisherService.java
+++ b/service/src/com/android/car/VmsPublisherService.java
@@ -105,6 +105,8 @@
             mContext.registerReceiver(mBootCompleteReceiver,
                     new IntentFilter(Intent.ACTION_LOCKED_BOOT_COMPLETED));
         }
+        // Signal to publishers that the PublisherService is ready.
+        mHal.signalPublisherServiceIsReady();
     }
 
     private void bindToAllPublishers() {
@@ -308,9 +310,8 @@
     }
 
     private boolean isTestEnvironment() {
-        // If the context is derived from other package it means we're running under
-        // environment.
-        return !TextUtils.equals(mContext.getBasePackageName(), mContext.getPackageName());
+        // If the context has "test" in it.
+        return mContext.getBasePackageName().contains("test");
     }
 
     class PublisherConnection implements ServiceConnection {
diff --git a/service/src/com/android/car/VmsRouting.java b/service/src/com/android/car/VmsRouting.java
index fa29a27..92549cc 100644
--- a/service/src/com/android/car/VmsRouting.java
+++ b/service/src/com/android/car/VmsRouting.java
@@ -24,10 +24,8 @@
 
 import com.android.internal.annotations.GuardedBy;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -410,4 +408,4 @@
             return new VmsSubscriptionState(mSequenceNumber, layers, layersFromPublishers);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/service/src/com/android/car/VmsSubscriberService.java b/service/src/com/android/car/VmsSubscriberService.java
index c4c507e..213757c 100644
--- a/service/src/com/android/car/VmsSubscriberService.java
+++ b/service/src/com/android/car/VmsSubscriberService.java
@@ -124,18 +124,20 @@
         public void add(IVmsSubscriberClient subscriber) {
             ICarImpl.assertVmsSubscriberPermission(mContext);
             if (subscriber == null) {
-                Log.e(TAG, "register: subscriber is null.");
+                Log.e(TAG, "Trying to add a null subscriber.");
                 throw new IllegalArgumentException("subscriber cannot be null.");
             }
-            if (DBG) {
-                Log.d(TAG, "register: " + subscriber);
-            }
             IBinder subscriberBinder = subscriber.asBinder();
             synchronized (mListenerManagerLock) {
                 if (mSubscriberMap.containsKey(subscriberBinder)) {
-                    // Already registered, nothing to do.
+                    if (DBG) {
+                        Log.d(TAG, "Subscriber already registered: " + subscriber);
+                    }
                     return;
                 }
+                if (DBG) {
+                    Log.d(TAG, "Registering subscriber: " + subscriber);
+                }
                 ListenerDeathRecipient deathRecipient =
                         new ListenerDeathRecipient(subscriberBinder);
                 try {
@@ -203,6 +205,9 @@
     @Override
     public void init() {
         mHal.addSubscriberListener(this);
+
+        // Signal to subscribers that the SubscriberService is ready.
+        mHal.signalSubscriberServiceIsReady();
     }
 
     @Override
diff --git a/service/src/com/android/car/garagemode/Controller.java b/service/src/com/android/car/garagemode/Controller.java
new file mode 100644
index 0000000..e9b2888
--- /dev/null
+++ b/service/src/com/android/car/garagemode/Controller.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.garagemode;
+
+import android.app.job.JobScheduler;
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.hardware.power.CarPowerManager;
+import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Main controller for GarageMode. It controls all the flows of GarageMode and defines the logic.
+ */
+public class Controller implements CarPowerStateListener {
+    private static final Logger LOG = new Logger("Controller");
+
+    @VisibleForTesting final WakeupPolicy mWakeupPolicy;
+    private final GarageMode mGarageMode;
+    private final Handler mHandler;
+    private final Context mContext;
+    private final Car mCar;
+    private final ServiceConnection mCarServiceConnection = new ServiceConnection() {
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            LOG.i("Car is now connected, getting CarPowerManager service");
+            try {
+                mCarPowerManager = (CarPowerManager) mCar.getCarManager(Car.POWER_SERVICE);
+                mCarPowerManager.setListener(Controller.this);
+            } catch (CarNotConnectedException e) {
+                LOG.e("Failed to get CarPowerManager instance", e);
+            }
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+            LOG.i("Car is now disconnected!");
+            if (mCarPowerManager != null) {
+                mCarPowerManager.clearListener();
+            }
+        }
+    };
+
+    private CarPowerManager mCarPowerManager;
+
+    public Controller(Context context, Looper looper) {
+        this(context, looper, null, null, null, null);
+    }
+
+    public Controller(
+            Context context,
+            Looper looper,
+            WakeupPolicy wakeupPolicy,
+            Handler handler,
+            GarageMode garageMode,
+            Car car) {
+        mContext = context;
+        mHandler = (handler == null ? new Handler(looper) : handler);
+        mWakeupPolicy =
+                (wakeupPolicy == null ? WakeupPolicy.initFromResources(context) : wakeupPolicy);
+        mGarageMode = (garageMode == null ? new GarageMode(this) : garageMode);
+        if (car == null) {
+            LOG.i("Creating a connection to car service to get CarPowerManager");
+            mCar = Car.createCar(context, mCarServiceConnection);
+            mCar.connect();
+        } else {
+            mCar = car;
+        }
+    }
+
+    @Override
+    public void onStateChanged(int state, CompletableFuture<Void> future) {
+        switch (state) {
+            case CarPowerStateListener.SHUTDOWN_CANCELLED:
+                LOG.d("CPM state changed to SHUTDOWN_CANCELLED");
+                handleShutdownCancelled();
+                break;
+            case CarPowerStateListener.SHUTDOWN_ENTER:
+                LOG.d("CPM state changed to SHUTDOWN_ENTER");
+                handleShutdownEnter(future);
+                break;
+            case CarPowerStateListener.SUSPEND_ENTER:
+                LOG.d("CPM state changed to SUSPEND_ENTER");
+                handleSuspendEnter(future);
+                break;
+            case CarPowerStateListener.SUSPEND_EXIT:
+                LOG.d("CPM state changed to SUSPEND_EXIT");
+                handleSuspendExit();
+                break;
+            default:
+        }
+    }
+
+    /**
+     * @return boolean whether any jobs are currently in running that GarageMode cares about
+     */
+    boolean isGarageModeActive() {
+        return mGarageMode.isGarageModeActive();
+    }
+
+    /**
+     * Wrapper method to send a broadcast
+     *
+     * @param i intent that contains broadcast data
+     */
+    void sendBroadcast(Intent i) {
+        LOG.d("Sending broadcast with action: " + i.getAction());
+        mContext.sendBroadcast(i);
+    }
+
+    /**
+     * @return JobSchedulerService instance
+     */
+    JobScheduler getJobSchedulerService() {
+        return (JobScheduler) mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+    }
+
+    /**
+     * @return Handler instance used by controller
+     */
+    Handler getHandler() {
+        return mHandler;
+    }
+
+    /**
+     * Initiates GarageMode flow which will set the system idleness to true and will start
+     * monitoring jobs which has idleness constraint enabled.
+     */
+    void initiateGarageMode(CompletableFuture<Void> future) {
+        mWakeupPolicy.incrementCounter();
+        mGarageMode.enterGarageMode(future);
+    }
+
+    /**
+     * Resets GarageMode.
+     */
+    void resetGarageMode() {
+        mGarageMode.cancel();
+        mWakeupPolicy.resetCounter();
+    }
+
+    @VisibleForTesting
+    void finishGarageMode() {
+        mGarageMode.finish();
+    }
+
+    @VisibleForTesting
+    void setCarPowerManager(CarPowerManager cpm) {
+        mCarPowerManager = cpm;
+    }
+
+    void scheduleNextWakeup() {
+        if (mWakeupPolicy.getNextWakeUpInterval() <= 0) {
+            // Either there is no policy or nothing left to schedule
+            return;
+        }
+        int seconds = mWakeupPolicy.getNextWakeUpInterval();
+        try {
+            mCarPowerManager.scheduleNextWakeupTime(seconds);
+        } catch (CarNotConnectedException e) {
+            LOG.e("Car is not connected.", e);
+        }
+    }
+
+    private void handleSuspendExit() {
+        resetGarageMode();
+    }
+
+    private void handleSuspendEnter(CompletableFuture<Void> future) {
+        initiateGarageMode(future);
+    }
+
+    private void handleShutdownEnter(CompletableFuture<Void> future) {
+        initiateGarageMode(future);
+    }
+
+    private void handleShutdownCancelled() {
+        resetGarageMode();
+    }
+}
\ No newline at end of file
diff --git a/service/src/com/android/car/garagemode/GarageMode.java b/service/src/com/android/car/garagemode/GarageMode.java
new file mode 100644
index 0000000..914190d
--- /dev/null
+++ b/service/src/com/android/car/garagemode/GarageMode.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.garagemode;
+
+import android.app.job.JobInfo;
+import android.app.job.JobScheduler;
+import android.app.job.JobSnapshot;
+import android.content.Intent;
+import android.os.Handler;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Class that interacts with JobScheduler, controls system idleness and monitor jobs which are
+ * in GarageMode interest
+ */
+
+class GarageMode {
+    private static final Logger LOG = new Logger("GarageMode");
+
+    /**
+     * When changing this field value, please update
+     * {@link com.android.server.job.controllers.idle.CarIdlenessTracker} as well.
+     */
+    public static final String ACTION_GARAGE_MODE_ON =
+            "com.android.server.jobscheduler.GARAGE_MODE_ON";
+
+    /**
+     * When changing this field value, please update
+     * {@link com.android.server.job.controllers.idle.CarIdlenessTracker} as well.
+     */
+    public static final String ACTION_GARAGE_MODE_OFF =
+            "com.android.server.jobscheduler.GARAGE_MODE_OFF";
+
+    static final long JOB_SNAPSHOT_INITIAL_UPDATE_MS = 10000; // 10 seconds
+    static final long JOB_SNAPSHOT_UPDATE_FREQUENCY_MS = 1000; // 1 second
+
+    private final Controller mController;
+
+    private boolean mGarageModeActive;
+    private JobScheduler mJobScheduler;
+    private Handler mHandler;
+    private Runnable mRunnable;
+    private CompletableFuture<Void> mFuture;
+
+    GarageMode(Controller controller) {
+        mGarageModeActive = false;
+        mController = controller;
+        mJobScheduler = controller.getJobSchedulerService();
+        mHandler = controller.getHandler();
+
+        mRunnable = () -> {
+            if (areAnyIdleJobsRunning()) {
+                LOG.d("Some jobs are still running. Need to wait more ...");
+                mHandler.postDelayed(mRunnable, JOB_SNAPSHOT_UPDATE_FREQUENCY_MS);
+            } else {
+                LOG.d("No jobs are currently running.");
+                finish();
+            }
+        };
+    }
+
+    boolean isGarageModeActive() {
+        return mGarageModeActive;
+    }
+
+    void enterGarageMode(CompletableFuture<Void> future) {
+        LOG.d("Entering GarageMode");
+        synchronized (this) {
+            mGarageModeActive = true;
+        }
+        updateFuture(future);
+        broadcastSignalToJobSchedulerTo(true);
+        startMonitoringThread();
+    }
+
+    synchronized void cancel() {
+        if (mFuture != null && !mFuture.isDone()) {
+            mFuture.cancel(true);
+        }
+        mFuture = null;
+    }
+
+    synchronized void finish() {
+        mController.scheduleNextWakeup();
+        synchronized (this) {
+            if (mFuture != null && !mFuture.isDone()) {
+                mFuture.complete(null);
+            }
+            mFuture = null;
+        }
+    }
+
+    private void cleanupGarageMode() {
+        LOG.d("Cleaning up GarageMode");
+        synchronized (this) {
+            mGarageModeActive = false;
+        }
+        broadcastSignalToJobSchedulerTo(false);
+        stopMonitoringThread();
+    }
+
+    private void updateFuture(CompletableFuture<Void> future) {
+        synchronized (this) {
+            mFuture = future;
+        }
+        if (mFuture != null) {
+            mFuture.whenComplete((result, exception) -> {
+                if (exception != null) {
+                    LOG.e("Seems like GarageMode got canceled, cleaning up", exception);
+                } else {
+                    LOG.d("Seems like GarageMode is completed, cleaning up");
+                }
+                cleanupGarageMode();
+            });
+        }
+    }
+
+    private void broadcastSignalToJobSchedulerTo(boolean enableGarageMode) {
+        Intent i = new Intent();
+        if (enableGarageMode) {
+            i.setAction(ACTION_GARAGE_MODE_ON);
+        } else {
+            i.setAction(ACTION_GARAGE_MODE_OFF);
+        }
+        i.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_NO_ABORT);
+        mController.sendBroadcast(i);
+    }
+
+    private synchronized void startMonitoringThread() {
+        mHandler.postDelayed(mRunnable, JOB_SNAPSHOT_INITIAL_UPDATE_MS);
+    }
+
+    private synchronized void stopMonitoringThread() {
+        mHandler.removeCallbacks(mRunnable);
+    }
+
+    private boolean areAnyIdleJobsRunning() {
+        List<JobInfo> startedJobs = mJobScheduler.getStartedJobs();
+        for (JobSnapshot snap : mJobScheduler.getAllJobSnapshots()) {
+            if (startedJobs.contains(snap.getJobInfo())) {
+                if (snap.getJobInfo().isRequireDeviceIdle()) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+}
diff --git a/service/src/com/android/car/garagemode/GarageModePolicy.java b/service/src/com/android/car/garagemode/GarageModePolicy.java
deleted file mode 100644
index be7b713..0000000
--- a/service/src/com/android/car/garagemode/GarageModePolicy.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.garagemode;
-
-import android.content.Context;
-import android.util.Log;
-
-import com.android.car.R;
-
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Default garage mode policy.
- *
- * The first wake up time is set to be 1am the next day. And it keeps waking up every day for a
- * week. After that, wake up every 7 days for a month, and wake up every 30 days thereafter.
- */
-public class GarageModePolicy {
-    private static final String TAG = "GarageModePolicy";
-    private static final Map<Character, Integer> TIME_UNITS_LOOKUP;
-    static {
-        TIME_UNITS_LOOKUP = new HashMap<>();
-        TIME_UNITS_LOOKUP.put('m', 60);
-        TIME_UNITS_LOOKUP.put('h', 3600);
-        TIME_UNITS_LOOKUP.put('d', 86400);
-    }
-
-    private LinkedList<WakeupInterval> mWakeupIntervals;
-
-    public GarageModePolicy(String[] policy) {
-        mWakeupIntervals = parsePolicy(policy);
-    }
-
-    /**
-     * Initializes GarageModePolicy from config_garageModeCadence resource array.
-     * @param context to access resources
-     * @return GarageModePolicy instance, created from values in resources
-     */
-    public static GarageModePolicy initFromResources(Context context) {
-        return new GarageModePolicy(
-                context.getResources().getStringArray(R.array.config_garageModeCadence));
-    }
-
-    /**
-     * Returns the interval in milliseconds, which defines next wake up time.
-     * @param index amount of times system woken up
-     * @return the interval in milliseconds
-     */
-    public int getNextWakeUpInterval(int index) {
-        if (mWakeupIntervals.size() == 0) {
-            Log.e(TAG, "No wake up policy configuration was loaded.");
-            return 0;
-        }
-
-        for (WakeupInterval wakeupTime : mWakeupIntervals) {
-            if (index < wakeupTime.getNumAttempts()) {
-                return wakeupTime.getWakeupInterval();
-            }
-            index -= wakeupTime.getNumAttempts();
-        }
-        Log.w(TAG, "No more garage mode wake ups scheduled; been sleeping too long.");
-        return 0;
-    }
-
-    /**
-     * Get list of {@link com.android.car.garagemode.WakeupInterval}s in this policy
-     * @return list as List\<WakeupInterval\>
-     */
-    public List<WakeupInterval> getWakeupIntervals() {
-        return mWakeupIntervals;
-    }
-
-    private LinkedList<WakeupInterval> parsePolicy(String[] policy) {
-        LinkedList<WakeupInterval> intervals = new LinkedList<>();
-        if (policy == null || policy.length == 0) {
-            Log.e(TAG, "Trying to parse empty policies!");
-            return intervals;
-        }
-
-        for (String rule : policy) {
-            WakeupInterval interval = parseRule(rule);
-            if (interval == null) {
-                Log.e(TAG, "Invalid Policy! This rule has bad format: " + rule);
-                return new LinkedList<>();
-            }
-            intervals.add(interval);
-        }
-        return intervals;
-    }
-
-    private WakeupInterval parseRule(String rule) {
-        String[] str = rule.split(",");
-
-        if (str.length != 2) {
-            Log.e(TAG, "Policy has bad format: " + rule);
-            return null;
-        }
-
-        String intervalStr = str[0];
-        String timesStr = str[1];
-
-        if (intervalStr.isEmpty() || timesStr.isEmpty()) {
-            Log.e(TAG, "One of the values is empty. Please check format: " + rule);
-            return null;
-        }
-
-        char unit = intervalStr.charAt(intervalStr.length() - 1);
-
-        // Removing last letter extension from string
-        intervalStr = intervalStr.substring(0, intervalStr.length() - 1);
-
-        int interval, times;
-        try {
-            interval = Integer.parseInt(intervalStr);
-            times = Integer.parseInt(timesStr);
-        } catch (NumberFormatException ex)  {
-            Log.d(TAG, "Invalid input Rule for interval " + rule);
-            return null;
-        }
-
-        if (!TIME_UNITS_LOOKUP.containsKey(unit)) {
-            Log.e(TAG, "Time units map does not contain extension " + unit);
-            return null;
-        }
-
-        if (interval <= 0) {
-            Log.e(TAG, "Wake up policy time must be > 0!" + interval);
-            return null;
-        }
-
-        if (times <= 0) {
-            Log.e(TAG, "Wake up attempts in policy must be > 0!" + times);
-            return null;
-        }
-
-        interval *= TIME_UNITS_LOOKUP.get(unit);
-
-        return new WakeupInterval(interval, times);
-    }
-}
diff --git a/service/src/com/android/car/garagemode/GarageModeService.java b/service/src/com/android/car/garagemode/GarageModeService.java
index c9c34dd..4899938 100644
--- a/service/src/com/android/car/garagemode/GarageModeService.java
+++ b/service/src/com/android/car/garagemode/GarageModeService.java
@@ -16,335 +16,76 @@
 
 package com.android.car.garagemode;
 
-import static android.car.settings.GarageModeSettingsObserver.GARAGE_MODE_ENABLED_URI;
-import static android.car.settings.GarageModeSettingsObserver.GARAGE_MODE_MAINTENANCE_WINDOW_URI;
-import static android.car.settings.GarageModeSettingsObserver.GARAGE_MODE_WAKE_UP_TIME_URI;
-
-import android.car.settings.CarSettings;
-import android.car.settings.GarageModeSettingsObserver;
 import android.content.Context;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.IDeviceIdleController;
-import android.os.IMaintenanceActivityListener;
 import android.os.Looper;
-import android.os.Message;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.preference.PreferenceManager;
-import android.provider.Settings;
-import android.util.Log;
 
-import com.android.car.CarPowerManagementService;
 import com.android.car.CarServiceBase;
-import com.android.car.DeviceIdleControllerWrapper;
-import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.io.PrintWriter;
 
 /**
- * Controls car garage mode.
- *
- * Car garage mode is a time window for the car to do maintenance work when the car is not in use.
- * The {@link com.android.car.garagemode.GarageModeService} interacts with
- * {@link com.android.car.CarPowerManagementService} to start and end garage mode.
- * A {@link com.android.car.garagemode.GarageModePolicy} defines when the garage mode should
- * start and how long it should last.
+ * Main service container for car Garage Mode.
+ * Garage Mode enables idle time in cars.
  */
-public class GarageModeService implements CarServiceBase,
-        CarPowerManagementService.PowerEventProcessingHandler,
-        CarPowerManagementService.PowerServiceEventListener,
-        DeviceIdleControllerWrapper.DeviceMaintenanceActivityListener {
-    private static final String TAG = "GarageModeService";
+public class GarageModeService implements CarServiceBase {
+    private static final Logger LOG = new Logger("Service");
 
-    private static final int MSG_EXIT_GARAGE_MODE_EARLY = 0;
-    private static final int MSG_WRITE_TO_PREF = 1;
+    private final Context mContext;
+    private final Controller mController;
 
-    private static final String KEY_GARAGE_MODE_INDEX = "garage_mode_index";
-
-    // wait for 10 seconds to allow maintenance activities to start (e.g., connecting to wifi).
-    protected static final int MAINTENANCE_ACTIVITY_START_GRACE_PERIOD = 10 * 1000;
-
-    private final CarPowerManagementService mPowerManagementService;
-    protected final Context mContext;
-
-    @VisibleForTesting
-    @GuardedBy("this")
-    protected boolean mInGarageMode;
-    @VisibleForTesting
-    @GuardedBy("this")
-    protected boolean mMaintenanceActive;
-    @VisibleForTesting
-    @GuardedBy("this")
-    protected int mGarageModeIndex;
-
-    @GuardedBy("this")
-    @VisibleForTesting
-    protected int mMaintenanceWindow;
-    @GuardedBy("this")
-    private GarageModePolicy mPolicy;
-    @GuardedBy("this")
-    private boolean mGarageModeEnabled;
-
-
-    private SharedPreferences mSharedPreferences;
-    private final GarageModeSettingsObserver mContentObserver;
-
-    private DeviceIdleControllerWrapper mDeviceIdleController;
-    private final GarageModeHandler mHandler;
-
-    private class GarageModeHandler extends Handler {
-        GarageModeHandler(Looper looper) {
-            super(looper);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_EXIT_GARAGE_MODE_EARLY:
-                    mPowerManagementService.notifyPowerEventProcessingCompletion(
-                            GarageModeService.this);
-                    break;
-                case MSG_WRITE_TO_PREF:
-                    writeToPref(msg.arg1);
-                    break;
-            }
-        }
-    }
-
-    public GarageModeService(Context context, CarPowerManagementService powerManagementService) {
-        this(context, powerManagementService, null, Looper.myLooper());
+    public GarageModeService(Context context) {
+        this(context, null);
     }
 
     @VisibleForTesting
-    protected GarageModeService(Context context, CarPowerManagementService powerManagementService,
-            DeviceIdleControllerWrapper deviceIdleController, Looper looper) {
+    protected GarageModeService(Context context, Controller controller) {
         mContext = context;
-        mPowerManagementService = powerManagementService;
-        mHandler = new GarageModeHandler(looper);
-        if (deviceIdleController == null) {
-            mDeviceIdleController = new DefaultDeviceIdleController();
-        } else {
-            mDeviceIdleController = deviceIdleController;
-        }
-        mContentObserver = new GarageModeSettingsObserver(mContext, mHandler) {
-            @Override
-            public void onChange(boolean selfChange, Uri uri) {
-                onSettingsChangedInternal(uri);
-            }
-        };
+        mController = (controller != null ? controller
+                : new Controller(context, Looper.myLooper()));
     }
 
+    /**
+     * Initializes GarageMode
+     */
     @Override
     public void init() {
-        init(
-                GarageModePolicy.initFromResources(mContext),
-                PreferenceManager.getDefaultSharedPreferences(
-                        mContext.createDeviceProtectedStorageContext()));
     }
 
-    @VisibleForTesting
-    void init(GarageModePolicy policy, SharedPreferences prefs) {
-        Log.d(TAG, "initializing GarageMode");
-        mSharedPreferences = prefs;
-        mPolicy = policy;
-        final int index = mSharedPreferences.getInt(KEY_GARAGE_MODE_INDEX, 0);
-        synchronized (this) {
-            mMaintenanceActive = mDeviceIdleController.startTracking(this);
-            mGarageModeIndex = index;
-            readFromSettingsLocked(
-                    CarSettings.Global.KEY_GARAGE_MODE_MAINTENANCE_WINDOW,
-                    CarSettings.Global.KEY_GARAGE_MODE_ENABLED,
-                    CarSettings.Global.KEY_GARAGE_MODE_WAKE_UP_TIME);
-        }
-        mContentObserver.register();
-        mPowerManagementService.registerPowerEventProcessingHandler(this);
-    }
-
-    public boolean isInGarageMode() {
-        return mInGarageMode;
-    }
-
+    /**
+     * Cleans up GarageMode processes
+     */
     @Override
     public void release() {
-        Log.d(TAG, "releasing GarageModeService");
-        mDeviceIdleController.stopTracking();
-        mContentObserver.unregister();
     }
 
+    /**
+     * Dumps useful information about GarageMode
+     * @param writer
+     */
     @Override
     public void dump(PrintWriter writer) {
-        writer.println("mGarageModeIndex: " + mGarageModeIndex);
-        writer.println("inGarageMode? " + mInGarageMode);
-        writer.println("GarageModeEnabled " + mGarageModeEnabled);
-        writer.println("GarageModeTimeWindow " + mMaintenanceWindow + " ms");
+        writer.println("GarageModeInProgress " + mController.isGarageModeActive());
     }
 
-    @Override
-    public long onPrepareShutdown(boolean shuttingDown) {
-        // this is the beginning of each garage mode.
-        synchronized (this) {
-            Log.d(TAG, "onPrepareShutdown is triggered. System is shutting down=" + shuttingDown);
-            mInGarageMode = true;
-            mGarageModeIndex++;
-            mHandler.removeMessages(MSG_EXIT_GARAGE_MODE_EARLY);
-            if (!mMaintenanceActive) {
-                mHandler.sendMessageDelayed(
-                        mHandler.obtainMessage(MSG_EXIT_GARAGE_MODE_EARLY),
-                        MAINTENANCE_ACTIVITY_START_GRACE_PERIOD);
-            }
-            // We always reserve the maintenance window first. If later, we found no
-            // maintenance work active, we will exit garage mode early after
-            // MAINTENANCE_ACTIVITY_START_GRACE_PERIOD
-            return mMaintenanceWindow;
-        }
+    /**
+     * @return whether GarageMode is in progress. Used by {@link com.android.car.ICarImpl}.
+     */
+    public boolean isGarageModeActive() {
+        return mController.isGarageModeActive();
     }
 
-    @Override
-    public void onPowerOn(boolean displayOn) {
-        synchronized (this) {
-            Log.d(TAG, "onPowerOn: " + displayOn);
-            if (displayOn) {
-                // the car is use now. reset the garage mode counter.
-                mGarageModeIndex = 0;
-            }
-        }
+    /**
+     * Forces GarageMode to start. Used by {@link com.android.car.ICarImpl}.
+     */
+    public void forceStartGarageMode() {
+        mController.initiateGarageMode(null);
     }
 
-    @Override
-    public int getWakeupTime() {
-        synchronized (this) {
-            if (!mGarageModeEnabled) {
-                return 0;
-            }
-            return mPolicy.getNextWakeUpInterval(mGarageModeIndex);
-        }
-    }
-
-    @Override
-    public void onSleepExit() {
-        // ignored
-    }
-
-    @Override
-    public void onSleepEntry() {
-        synchronized (this) {
-            mInGarageMode = false;
-        }
-    }
-
-    @Override
-    public void onShutdown() {
-        synchronized (this) {
-            mHandler.sendMessage(
-                    mHandler.obtainMessage(MSG_WRITE_TO_PREF, mGarageModeIndex, 0));
-        }
-    }
-
-    private void writeToPref(int index) {
-        SharedPreferences.Editor editor = mSharedPreferences.edit();
-        editor.putInt(KEY_GARAGE_MODE_INDEX, index);
-        editor.commit();
-    }
-
-    @Override
-    public void onMaintenanceActivityChanged(boolean active) {
-        boolean shouldReportCompletion = false;
-        synchronized (this) {
-            Log.d(TAG, "onMaintenanceActivityChanged: " + active);
-            mMaintenanceActive = active;
-            if (!mInGarageMode) {
-                return;
-            }
-
-            if (!active) {
-                shouldReportCompletion = true;
-                mInGarageMode = false;
-            } else {
-                // we are in garage mode, and maintenance work has just begun.
-                mHandler.removeMessages(MSG_EXIT_GARAGE_MODE_EARLY);
-            }
-        }
-        if (shouldReportCompletion) {
-            // we are in garage mode, and maintenance work has finished.
-            mPowerManagementService.notifyPowerEventProcessingCompletion(this);
-        }
-    }
-
-
-    private static class DefaultDeviceIdleController extends DeviceIdleControllerWrapper {
-        private IDeviceIdleController mDeviceIdleController;
-        private MaintenanceActivityListener mMaintenanceActivityListener =
-                new MaintenanceActivityListener();
-
-        @Override
-        public boolean startLocked() {
-            mDeviceIdleController = IDeviceIdleController.Stub.asInterface(
-                    ServiceManager.getService(Context.DEVICE_IDLE_CONTROLLER));
-            boolean active = false;
-            try {
-                active = mDeviceIdleController
-                        .registerMaintenanceActivityListener(mMaintenanceActivityListener);
-            } catch (RemoteException e) {
-                Log.e(TAG, "Unable to register listener with DeviceIdleController", e);
-            }
-            return active;
-        }
-
-        @Override
-        public void stopTracking() {
-            try {
-                if (mDeviceIdleController != null) {
-                    mDeviceIdleController.unregisterMaintenanceActivityListener(
-                            mMaintenanceActivityListener);
-                }
-            } catch (RemoteException e) {
-                Log.e(TAG, "Fail to unregister listener.", e);
-            }
-        }
-
-        private final class MaintenanceActivityListener extends IMaintenanceActivityListener.Stub {
-            @Override
-            public void onMaintenanceActivityChanged(final boolean active) {
-                DefaultDeviceIdleController.this.setMaintenanceActivity(active);
-            }
-        }
-    }
-
-    @GuardedBy("this")
-    private void readFromSettingsLocked(String... keys) {
-        for (String key : keys) {
-            switch (key) {
-                case CarSettings.Global.KEY_GARAGE_MODE_ENABLED:
-                    mGarageModeEnabled =
-                            Settings.Global.getInt(mContext.getContentResolver(), key, 1) == 1;
-                    break;
-                case CarSettings.Global.KEY_GARAGE_MODE_MAINTENANCE_WINDOW:
-                    mMaintenanceWindow = Settings.Global.getInt(
-                            mContext.getContentResolver(), key,
-                            CarSettings.DEFAULT_GARAGE_MODE_MAINTENANCE_WINDOW);
-                    break;
-                default:
-                    Log.e(TAG, "Unknown setting key " + key);
-            }
-        }
-    }
-
-    private void onSettingsChangedInternal(Uri uri) {
-        synchronized (this) {
-            Log.d(TAG, "Content Observer onChange: " + uri);
-            if (uri.equals(GARAGE_MODE_ENABLED_URI)) {
-                readFromSettingsLocked(CarSettings.Global.KEY_GARAGE_MODE_ENABLED);
-            } else if (uri.equals(GARAGE_MODE_WAKE_UP_TIME_URI)) {
-                readFromSettingsLocked(CarSettings.Global.KEY_GARAGE_MODE_WAKE_UP_TIME);
-            } else if (uri.equals(GARAGE_MODE_MAINTENANCE_WINDOW_URI)) {
-                readFromSettingsLocked(CarSettings.Global.KEY_GARAGE_MODE_MAINTENANCE_WINDOW);
-            }
-            Log.d(TAG, String.format(
-                    "onSettingsChanged %s. enabled: %s, windowSize: %d",
-                    uri, mGarageModeEnabled, mMaintenanceWindow));
-        }
+    /**
+     * Stops and resets the GarageMode. Used by {@link com.android.car.ICarImpl}.
+     */
+    public void stopAndResetGarageMode() {
+        mController.resetGarageMode();
     }
 }
diff --git a/service/src/com/android/car/garagemode/Logger.java b/service/src/com/android/car/garagemode/Logger.java
new file mode 100644
index 0000000..220ee74
--- /dev/null
+++ b/service/src/com/android/car/garagemode/Logger.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.garagemode;
+
+import android.util.Log;
+
+class Logger {
+    private final String mTag;
+    private final String mPrefix;
+
+    Logger(String prefix) {
+        mTag = "GarageMode";
+        mPrefix = prefix;
+    }
+
+    /** Passing message further to Log.v() */
+    public void v(String msg) {
+        Log.v(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.v() */
+    public void v(String msg, Exception ex) {
+        Log.v(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.i() */
+    public void i(String msg) {
+        Log.i(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.i() */
+    public void i(String msg, Exception ex) {
+        Log.i(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.d() */
+    public void d(String msg) {
+        Log.d(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.d() */
+    public void d(String msg, Exception ex) {
+        Log.d(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.w() */
+    public void w(String msg, Exception ex) {
+        Log.w(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.w() */
+    public void w(String msg) {
+        Log.w(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.e() */
+    public void e(String msg) {
+        Log.e(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.e() */
+    public void e(String msg, Exception ex) {
+        Log.e(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.e() */
+    public void e(String msg, Throwable ex) {
+        Log.e(mTag, buildMessage(msg), ex);
+    }
+
+    private String buildMessage(String msg) {
+        return String.format("[%s]: %s", mPrefix, msg);
+    }
+}
diff --git a/service/src/com/android/car/garagemode/WakeupInterval.java b/service/src/com/android/car/garagemode/WakeupInterval.java
deleted file mode 100644
index 659af9e..0000000
--- a/service/src/com/android/car/garagemode/WakeupInterval.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.garagemode;
-
-/**
- * Defines wake up interval which then will be used by
- * {@link com.android.car.garagemode.GarageModeService} to determine when to schedule next wake up
- * from {@link com.android.car.CarPowerManagementService}
- */
-class WakeupInterval {
-    private int mWakeupInterval;
-    private int mNumAttempts;
-
-    WakeupInterval(int wakeupTime, int numAttempts) {
-        mWakeupInterval = wakeupTime;
-        mNumAttempts = numAttempts;
-    }
-
-    /**
-     * Returns interval between now and next weke up.
-     * @return interval in seconds
-     */
-    public int getWakeupInterval() {
-        return mWakeupInterval;
-    }
-
-    /**
-     * Returns amount of attempts to wake up with mWakeupInterval
-     * @return amount of attempts
-     */
-    public int getNumAttempts() {
-        return mNumAttempts;
-    }
-}
diff --git a/service/src/com/android/car/garagemode/WakeupPolicy.java b/service/src/com/android/car/garagemode/WakeupPolicy.java
new file mode 100644
index 0000000..b049554
--- /dev/null
+++ b/service/src/com/android/car/garagemode/WakeupPolicy.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.garagemode;
+
+import android.content.Context;
+
+import com.android.car.R;
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
+/**
+ * Default garage mode policy.
+ *
+ * The first wake up time is set to be 1am the next day. And it keeps waking up every day for a
+ * week. After that, wake up every 7 days for a month, and wake up every 30 days thereafter.
+ */
+class WakeupPolicy {
+    private static final Logger LOG = new Logger("WakeupPolicy");
+    private static final Map<Character, Integer> TIME_UNITS_LOOKUP_SEC;
+    static {
+        TIME_UNITS_LOOKUP_SEC = new HashMap<>();
+        TIME_UNITS_LOOKUP_SEC.put('m', 60);
+        TIME_UNITS_LOOKUP_SEC.put('h', 3600);
+        TIME_UNITS_LOOKUP_SEC.put('d', 86400);
+    }
+    private LinkedList<WakeupInterval> mWakeupIntervals;
+    @VisibleForTesting protected int mIndex;
+
+    WakeupPolicy(String[] policy) {
+        mWakeupIntervals = parsePolicy(policy);
+        mIndex = 0;
+    }
+
+    /**
+     * Initializes Policy from config_garageModeCadence resource array.
+     * @param context to access resources
+     * @return Policy instance, created from values in resources
+     */
+    public static WakeupPolicy initFromResources(Context context) {
+        LOG.d("Initiating WakupPolicy from resources ...");
+        return new WakeupPolicy(
+                context.getResources().getStringArray(R.array.config_garageModeCadence));
+    }
+
+    /**
+     * Returns the interval in seconds, which defines next wake up time.
+     * @return the interval in seconds
+     */
+    public int getNextWakeUpInterval() {
+        if (mWakeupIntervals.size() == 0) {
+            LOG.e("No wake up policy configuration was loaded.");
+            return 0;
+        }
+
+        int index = mIndex;
+        for (WakeupInterval wakeupTime : mWakeupIntervals) {
+            if (index <= wakeupTime.getNumAttempts()) {
+                return wakeupTime.getWakeupInterval();
+            }
+            index -= wakeupTime.getNumAttempts();
+        }
+        LOG.w("No more garage mode wake ups scheduled; been sleeping too long.");
+        return 0;
+    }
+
+    protected int getWakupIntervalsAmount() {
+        return mWakeupIntervals.size();
+    }
+
+    private LinkedList<WakeupInterval> parsePolicy(String[] policy) {
+        LinkedList<WakeupInterval> intervals = new LinkedList<>();
+        if (policy == null || policy.length == 0) {
+            LOG.e("Trying to parse empty policies!");
+            return intervals;
+        }
+
+        for (String rule : policy) {
+            WakeupInterval interval = parseRule(rule);
+            if (interval == null) {
+                LOG.e("Invalid Policy! This rule has bad format: " + rule);
+                return new LinkedList<>();
+            }
+            intervals.add(interval);
+        }
+        return intervals;
+    }
+
+    private WakeupInterval parseRule(String rule) {
+        String[] str = rule.split(",");
+
+        if (str.length != 2) {
+            LOG.e("Policy has bad format: " + rule);
+            return null;
+        }
+
+        String intervalStr = str[0];
+        String timesStr = str[1];
+
+        if (intervalStr.isEmpty() || timesStr.isEmpty()) {
+            LOG.e("One of the values is empty. Please check format: " + rule);
+            return null;
+        }
+
+        char unit = intervalStr.charAt(intervalStr.length() - 1);
+
+        // Removing last letter extension from string
+        intervalStr = intervalStr.substring(0, intervalStr.length() - 1);
+
+        int interval, times;
+        try {
+            interval = Integer.parseInt(intervalStr);
+            times = Integer.parseInt(timesStr);
+        } catch (NumberFormatException ex)  {
+            LOG.d("Invalid input Rule for interval " + rule);
+            return null;
+        }
+
+        if (!TIME_UNITS_LOOKUP_SEC.containsKey(unit)) {
+            LOG.e("Time units map does not contain extension " + unit);
+            return null;
+        }
+
+        if (interval <= 0) {
+            LOG.e("Wake up policy time must be > 0!" + interval);
+            return null;
+        }
+
+        if (times <= 0) {
+            LOG.e("Wake up attempts in policy must be > 0!" + times);
+            return null;
+        }
+
+        interval *= TIME_UNITS_LOOKUP_SEC.get(unit);
+
+        return new WakeupInterval(interval, times);
+    }
+
+    public void incrementCounter() {
+        mIndex++;
+    }
+
+    public void resetCounter() {
+        mIndex = 0;
+    }
+
+    /**
+     * Defines wake up interval which then will be used by
+     * {@link com.android.car.garagemode.GarageModeService} to schedule next wake up time in
+     * {@link android.car.hardware.power.CarPowerManager}
+     */
+    private class WakeupInterval {
+        private int mWakeupInterval;
+        private int mNumAttempts;
+
+        WakeupInterval(int wakeupTime, int numAttempts) {
+            mWakeupInterval = wakeupTime;
+            mNumAttempts = numAttempts;
+        }
+
+        /**
+         * Returns interval between now and next wakeup.
+         * @return interval in seconds
+         */
+        public int getWakeupInterval() {
+            return mWakeupInterval;
+        }
+
+        /**
+         * Returns amount of attempts to wake up with mWakeupInterval
+         * @return amount of attempts
+         */
+        public int getNumAttempts() {
+            return mNumAttempts;
+        }
+    }
+
+}
diff --git a/service/src/com/android/car/hal/PropertyHalServiceIds.java b/service/src/com/android/car/hal/PropertyHalServiceIds.java
index 6c5533d..e8d00ee 100644
--- a/service/src/com/android/car/hal/PropertyHalServiceIds.java
+++ b/service/src/com/android/car/hal/PropertyHalServiceIds.java
@@ -258,6 +258,9 @@
         mProps.put(VehicleProperty.PERF_VEHICLE_SPEED, new Pair<>(
                 Car.PERMISSION_SPEED,
                 Car.PERMISSION_SPEED));
+        mProps.put(VehicleProperty.PERF_VEHICLE_SPEED_DISPLAY, new Pair<>(
+                Car.PERMISSION_SPEED,
+                Car.PERMISSION_SPEED));
         mProps.put(VehicleProperty.ENGINE_COOLANT_TEMP, new Pair<>(
                 Car.PERMISSION_CAR_ENGINE_DETAILED,
                 Car.PERMISSION_CAR_ENGINE_DETAILED));
@@ -319,8 +322,8 @@
                 Car.PERMISSION_EXTERIOR_LIGHTS,
                 Car.PERMISSION_EXTERIOR_LIGHTS));
         mProps.put(VehicleProperty.IGNITION_STATE, new Pair<>(
-                Car.PERMISSION_CAR_POWER,
-                Car.PERMISSION_CAR_POWER));
+                Car.PERMISSION_POWERTRAIN,
+                Car.PERMISSION_POWERTRAIN));
         mProps.put(VehicleProperty.ABS_ACTIVE, new Pair<>(
                 Car.PERMISSION_CAR_DYNAMICS_STATE,
                 Car.PERMISSION_CAR_DYNAMICS_STATE));
diff --git a/service/src/com/android/car/hal/VmsHalService.java b/service/src/com/android/car/hal/VmsHalService.java
index fd84e2b..ef33b31 100644
--- a/service/src/com/android/car/hal/VmsHalService.java
+++ b/service/src/com/android/car/hal/VmsHalService.java
@@ -117,10 +117,26 @@
     protected VmsHalService(VehicleHal vehicleHal) {
         mVehicleHal = vehicleHal;
         if (DBG) {
-            Log.d(TAG, "started VmsHalService!");
+            Log.d(TAG, "Started VmsHalService!");
         }
     }
 
+    /**
+     * VMS subscribers should wait for a layers availability message which indicates
+     * the subscriber service is ready to handle subscription requests.
+     */
+    public void signalSubscriberServiceIsReady() {
+        notifyOfAvailabilityChange();
+    }
+
+    /**
+     * VMS publishers should wait for a subscription state message which indicates
+     * the publisher service is ready to handle offerings and publishing.
+     */
+    public void signalPublisherServiceIsReady() {
+        notifyOfSubscriptionChange();
+    }
+
     public void addPublisherListener(VmsHalPublisherListener listener) {
         mPublisherListeners.add(listener);
     }
@@ -151,7 +167,7 @@
         }
         if (firstSubscriptionForLayer) {
             notifyHalPublishers(layer, true);
-            notifyClientPublishers();
+            notifyOfSubscriptionChange();
         }
     }
 
@@ -173,7 +189,7 @@
         }
         if (!layerHasSubscribers) {
             notifyHalPublishers(layer, false);
-            notifyClientPublishers();
+            notifyOfSubscriptionChange();
         }
     }
 
@@ -201,7 +217,7 @@
         }
         if (firstSubscriptionForLayer) {
             notifyHalPublishers(layer, true);
-            notifyClientPublishers();
+            notifyOfSubscriptionChange();
         }
     }
 
@@ -223,7 +239,7 @@
         }
         if (!layerHasSubscribers) {
             notifyHalPublishers(layer, false);
-            notifyClientPublishers();
+            notifyOfSubscriptionChange();
         }
     }
 
@@ -293,7 +309,7 @@
         }
         if (firstSubscriptionForLayer) {
             notifyHalPublishers(layer, true);
-            notifyClientPublishers();
+            notifyOfSubscriptionChange();
         }
     }
 
@@ -309,7 +325,7 @@
         }
         if (firstSubscriptionForLayer) {
             notifyHalPublishers(layer, publisherId, true);
-            notifyClientPublishers();
+            notifyOfSubscriptionChange();
         }
     }
 
@@ -329,7 +345,7 @@
         }
         if (!layerHasSubscribers) {
             notifyHalPublishers(layer, false);
-            notifyClientPublishers();
+            notifyOfSubscriptionChange();
         }
     }
 
@@ -350,7 +366,7 @@
         }
         if (!layerHasSubscribers) {
             notifyHalPublishers(layer, publisherId, false);
-            notifyClientPublishers();
+            notifyOfSubscriptionChange();
         }
     }
 
@@ -390,7 +406,11 @@
         setSubscriptionToPublisherRequest(layer, publisherId, hasSubscribers);
     }
 
-    private void notifyClientPublishers() {
+    private void notifyOfSubscriptionChange() {
+        if (DBG) {
+            Log.d(TAG, "Notifying publishers on subscriptions");
+        }
+
         // Notify the App publishers
         for (VmsHalPublisherListener listener : mPublisherListeners) {
             // Besides the list of layers, also a timestamp is provided to the clients.
@@ -405,7 +425,16 @@
      *
      * @param availableLayers the layers which publishers claim they made publish.
      */
-    private void notifyOfAvailabilityChange(VmsAvailableLayers availableLayers) {
+    private void notifyOfAvailabilityChange() {
+        if (DBG) {
+            Log.d(TAG, "Notifying subscribers on layers availability");
+        }
+
+        VmsAvailableLayers availableLayers;
+        synchronized (mLock) {
+            availableLayers = mAvailableLayers.getAvailableLayers();
+        }
+
         // notify the HAL
         notifyAvailabilityChangeToHal(availableLayers);
 
@@ -417,18 +446,22 @@
 
     @Override
     public void init() {
-        if (DBG) {
-            Log.d(TAG, "init()");
-        }
         if (mIsSupported) {
             mVehicleHal.subscribeProperty(this, HAL_PROPERTY_ID);
+            if (DBG) {
+                Log.d(TAG, "Initializing VmsHalService VHAL property");
+            }
+        } else {
+            if (DBG) {
+                Log.d(TAG, "VmsHalService VHAL property not supported");
+            }
         }
     }
 
     @Override
     public void release() {
         if (DBG) {
-            Log.d(TAG, "release()");
+            Log.d(TAG, "Releasing VmsHalService");
         }
         if (mIsSupported) {
             mVehicleHal.unsubscribeProperty(this, HAL_PROPERTY_ID);
@@ -727,16 +760,13 @@
     }
 
     private void updateOffering(IBinder publisherToken, VmsLayersOffering offering) {
-        VmsAvailableLayers availableLayers;
         synchronized (mLock) {
             mOfferings.put(publisherToken, offering);
 
             // Update layers availability.
             mAvailableLayers.setPublishersOffering(mOfferings.values());
-
-            availableLayers = mAvailableLayers.getAvailableLayers();
         }
-        notifyOfAvailabilityChange(availableLayers);
+        notifyOfAvailabilityChange();
     }
 
     @Override
@@ -789,12 +819,15 @@
         return setPropertyValue(vehiclePropertyValue);
     }
 
-    public boolean setPropertyValue(VehiclePropValue vehiclePropertyValue) {
-        try {
-            mVehicleHal.set(vehiclePropertyValue);
-            return true;
-        } catch (PropertyTimeoutException e) {
-            Log.e(CarLog.TAG_PROPERTY, "set, property not ready 0x" + toHexString(HAL_PROPERTY_ID));
+    private boolean setPropertyValue(VehiclePropValue vehiclePropertyValue) {
+        if (mIsSupported) {
+            try {
+                mVehicleHal.set(vehiclePropertyValue);
+                return true;
+            } catch (PropertyTimeoutException e) {
+                Log.e(CarLog.TAG_PROPERTY,
+                        "set, property not ready 0x" + toHexString(HAL_PROPERTY_ID));
+            }
         }
         return false;
     }
diff --git a/service/src/com/android/car/pm/ActivityBlockingActivity.java b/service/src/com/android/car/pm/ActivityBlockingActivity.java
index 3e55405..b39910e 100644
--- a/service/src/com/android/car/pm/ActivityBlockingActivity.java
+++ b/service/src/com/android/car/pm/ActivityBlockingActivity.java
@@ -24,11 +24,8 @@
 import android.content.ComponentName;
 import android.content.Intent;
 import android.content.ServiceConnection;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.os.IBinder;
-import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
@@ -107,8 +104,7 @@
 
         // blockedActivity is expected to be always passed in as the topmost activity of task.
         String blockedActivity = getIntent().getStringExtra(INTENT_KEY_BLOCKED_ACTIVITY);
-        mBlockedTitle.setText(getString(R.string.activity_blocked_string,
-                findHumanReadableLabel(blockedActivity)));
+        mBlockedTitle.setText(getString(R.string.activity_blocked_string));
         if (Log.isLoggable(CarLog.TAG_AM, Log.DEBUG)) {
             Log.d(CarLog.TAG_AM, "Blocking activity " + blockedActivity);
         }
@@ -153,35 +149,6 @@
         }
     }
 
-    /**
-     * Returns a human-readable string for {@code flattenComponentName}.
-     *
-     * <p>It first attempts to return the application label for this activity. If that fails,
-     * it will return the last part in the activity name.
-     */
-    private String findHumanReadableLabel(String flattenComponentName) {
-        ComponentName componentName = ComponentName.unflattenFromString(flattenComponentName);
-        String label = null;
-        // Attempt to find application label.
-        try {
-            ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(
-                    componentName.getPackageName(), 0);
-            CharSequence appLabel = getPackageManager().getApplicationLabel(applicationInfo);
-            if (appLabel != null) {
-                label = appLabel.toString();
-            }
-        } catch (PackageManager.NameNotFoundException e) {
-            if (Log.isLoggable(CarLog.TAG_AM, Log.INFO)) {
-                Log.i(CarLog.TAG_AM, "Could not find package for component name "
-                        + componentName.toString());
-            }
-        }
-        if (TextUtils.isEmpty(label)) {
-            label = componentName.getClass().getSimpleName();
-        }
-        return label;
-    }
-
     private void handleFinish() {
         if (!mCar.isConnected()) {
             mExitRequested = true;
diff --git a/service/src/com/android/car/systeminterface/DisplayInterface.java b/service/src/com/android/car/systeminterface/DisplayInterface.java
index 8dc7bd4..116fee1 100644
--- a/service/src/com/android/car/systeminterface/DisplayInterface.java
+++ b/service/src/com/android/car/systeminterface/DisplayInterface.java
@@ -20,6 +20,7 @@
 import static com.android.settingslib.display.BrightnessUtils.convertGammaToLinear;
 import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma;
 
+import android.app.ActivityManager;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.ContentObserver;
@@ -29,6 +30,7 @@
 import android.os.Looper;
 import android.os.PowerManager;
 import android.os.SystemClock;
+import android.os.UserHandle;
 import android.provider.Settings.SettingNotFoundException;
 import android.provider.Settings.System;
 import android.util.Log;
@@ -50,6 +52,7 @@
     void stopDisplayStateMonitoring();
 
     class DefaultImpl implements DisplayInterface {
+        private final ActivityManager mActivityManager;
         private final ContentResolver mContentResolver;
         private final Context mContext;
         private final DisplayManager mDisplayManager;
@@ -59,22 +62,31 @@
         private final WakeLockInterface mWakeLockInterface;
         private CarPowerManagementService mService;
         private boolean mDisplayStateSet;
+        private boolean mSuppressOnChange;
+        private boolean mSuppressSetBrightness;
 
         private ContentObserver mBrightnessObserver =
                 new ContentObserver(new Handler(Looper.getMainLooper())) {
                     @Override
                     public void onChange(boolean selfChange) {
-                        int linear = GAMMA_SPACE_MAX;
-
+                        if (mSuppressOnChange) {
+                            // This is in response to a VHAL setDisplayBrightness
+                            mSuppressOnChange = false;
+                            return;
+                        }
+                        int gamma = GAMMA_SPACE_MAX;
                         try {
-                            linear = System.getInt(mContentResolver, System.SCREEN_BRIGHTNESS);
+                            int linear = System.getIntForUser(mContentResolver,
+                                                          System.SCREEN_BRIGHTNESS,
+                                                          mActivityManager.getCurrentUser());
+                            gamma = convertLinearToGamma(linear, mMinimumBacklight,
+                                                         mMaximumBacklight);
                         } catch (SettingNotFoundException e) {
                             Log.e(CarLog.TAG_POWER, "Could not get SCREEN_BRIGHTNESS:  " + e);
                         }
-                        int gamma = convertLinearToGamma(linear, mMinimumBacklight,
-                                                         mMaximumBacklight);
                         int percentBright = (gamma * 100 + ((GAMMA_SPACE_MAX + 1) / 2))
                                 / GAMMA_SPACE_MAX;
+                        mSuppressSetBrightness = true;
                         mService.sendDisplayBrightness(percentBright);
                     }
                 };
@@ -99,6 +111,7 @@
         };
 
         DefaultImpl(Context context, WakeLockInterface wakeLockInterface) {
+            mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
             mContext = context;
             mContentResolver = mContext.getContentResolver();
             mDisplayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
@@ -127,9 +140,16 @@
 
         @Override
         public void setDisplayBrightness(int percentBright) {
+            if (mSuppressSetBrightness) {
+                // In response to an onChange() callback to VHAL
+                mSuppressSetBrightness = false;
+                return;
+            }
             int gamma = (percentBright * GAMMA_SPACE_MAX + 50) / 100;
             int linear = convertGammaToLinear(gamma, mMinimumBacklight, mMaximumBacklight);
-            System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, linear);
+            mSuppressOnChange = true;
+            System.putIntForUser(mContentResolver, System.SCREEN_BRIGHTNESS, linear,
+                                 mActivityManager.getCurrentUser());
         }
 
         @Override
@@ -139,7 +159,9 @@
                 mDisplayStateSet = isMainDisplayOn();
             }
             mContentResolver.registerContentObserver(System.getUriFor(System.SCREEN_BRIGHTNESS),
-                                                     false, mBrightnessObserver);
+                                                     false,
+                                                     mBrightnessObserver,
+                                                     UserHandle.USER_ALL);
             mDisplayManager.registerDisplayListener(mDisplayListener, service.getHandler());
         }
 
diff --git a/service/src/com/android/car/user/CarUserService.java b/service/src/com/android/car/user/CarUserService.java
index 82e981f..eebb9d1 100644
--- a/service/src/com/android/car/user/CarUserService.java
+++ b/service/src/com/android/car/user/CarUserService.java
@@ -17,19 +17,17 @@
 package com.android.car.user;
 
 import android.annotation.Nullable;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.pm.UserInfo;
 import android.location.LocationManager;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.util.Log;
 
 import com.android.car.CarServiceBase;
-import com.android.internal.annotations.VisibleForTesting;
 
 import java.io.PrintWriter;
 
@@ -42,9 +40,6 @@
  * <ol/>
  */
 public class CarUserService extends BroadcastReceiver implements CarServiceBase {
-    // Place holder for user name of the first user created.
-    @VisibleForTesting
-    static final String OWNER_NAME = "Driver";
     private static final String TAG = "CarUserService";
     private final Context mContext;
     private final CarUserManagerHelper mCarUserManagerHelper;
@@ -94,13 +89,6 @@
             if (mCarUserManagerHelper.getAllUsers().size() == 0) {
                 setSystemUserRestrictions();
                 mCarUserManagerHelper.initDefaultGuestRestrictions();
-                // On very first boot, create an admin user and switch to that user.
-                UserInfo admin = mCarUserManagerHelper.createNewAdminUser(OWNER_NAME);
-                mCarUserManagerHelper.switchToUser(admin);
-                mCarUserManagerHelper.setLastActiveUser(
-                        admin.id, /* skipGlobalSettings= */ false);
-            } else {
-                mCarUserManagerHelper.switchToUserId(mCarUserManagerHelper.getInitialUser());
             }
         } else if (Intent.ACTION_USER_SWITCHED.equals(intent.getAction())) {
             // Update last active user if the switched-to user is a persistent, non-system user.
diff --git a/tests/CarDiagnosticVerifier/AndroidManifest.xml b/tests/CarDiagnosticVerifier/AndroidManifest.xml
deleted file mode 100644
index 6fa5d3c..0000000
--- a/tests/CarDiagnosticVerifier/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.google.android.car.diagnosticverifier">
-
-    <uses-permission android:name="android.car.permission.CAR_DIAGNOSTICS" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
-    <application android:label="Car Diagnostic Verification">
-        <uses-library android:name="android.test.runner" />
-
-        <activity android:name=".MainActivity">
-            <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/CarDiagnosticVerifier/res/layout/result_message_item.xml b/tests/CarDiagnosticVerifier/res/layout/result_message_item.xml
deleted file mode 100644
index 5c742b6..0000000
--- a/tests/CarDiagnosticVerifier/res/layout/result_message_item.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <TextView
-        android:id="@+id/result_message"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:padding="16dp"/>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/tests/CarDiagnosticVerifier/res/layout/verifier_activity.xml b/tests/CarDiagnosticVerifier/res/layout/verifier_activity.xml
deleted file mode 100644
index 5aa2a6b..0000000
--- a/tests/CarDiagnosticVerifier/res/layout/verifier_activity.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingLeft="16dp"
-    android:paddingRight="16dp" >
-
-    <TextView
-        android:id="@+id/status_bar"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content" />
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/verification_results"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/status_bar"
-        android:layout_marginTop="16dp" />
-
-</RelativeLayout>
diff --git a/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/DiagnosticJsonConverter.java b/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/DiagnosticJsonConverter.java
deleted file mode 100644
index 85d4fc8..0000000
--- a/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/DiagnosticJsonConverter.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.google.android.car.diagnosticverifier;
-
-import android.car.diagnostic.CarDiagnosticEvent;
-import android.util.JsonReader;
-
-import com.android.car.vehiclehal.DiagnosticJson;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This class provides method to convert JSON into car diagnostic event object.
- */
-public class DiagnosticJsonConverter {
-
-    public static List<CarDiagnosticEvent> readFromJson(InputStream in) throws IOException {
-        JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
-
-        try {
-            return readEventsArray(reader);
-        } finally {
-            reader.close();
-        }
-    }
-
-    private static List<CarDiagnosticEvent> readEventsArray(JsonReader reader) throws IOException {
-        List<CarDiagnosticEvent> events = new ArrayList<>();
-
-        reader.beginArray();
-        while (reader.hasNext()) {
-            events.add(readEventAndCanonicalize(reader));
-        }
-        reader.endArray();
-        return events;
-    }
-
-    public static CarDiagnosticEvent readEventAndCanonicalize(InputStream in) throws IOException {
-        JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
-        return readEventAndCanonicalize(reader);
-    }
-
-    /**
-     * This method convert JSON to a car diagnostic event object.
-     * Note: it will always set timestamp to 0 and set dtc to null if it is empty string.
-     */
-    private static CarDiagnosticEvent readEventAndCanonicalize(JsonReader reader)
-            throws IOException {
-        DiagnosticJson diagnosticJson = DiagnosticJson.build(reader);
-        //Build event
-        CarDiagnosticEvent.Builder builder = "freeze".equals(diagnosticJson.type) ?
-                CarDiagnosticEvent.Builder.newFreezeFrameBuilder() :
-                CarDiagnosticEvent.Builder.newLiveFrameBuilder();
-        //Always skip timestamp because it is not useful for test
-        builder.atTimestamp(0);
-        for (int i = 0; i < diagnosticJson.intValues.size(); i++) {
-            builder.withIntValue(diagnosticJson.intValues.keyAt(i),
-                    diagnosticJson.intValues.valueAt(i));
-        }
-        for (int i = 0; i < diagnosticJson.floatValues.size(); i++) {
-            builder.withFloatValue(diagnosticJson.floatValues.keyAt(i),
-                    diagnosticJson.floatValues.valueAt(i));
-        }
-        //Always set dtc to null if it is empty string
-        builder.withDtc("".equals(diagnosticJson.dtc) ? null : diagnosticJson.dtc);
-
-        return builder.build();
-    }
-}
diff --git a/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/DiagnosticVerifier.java b/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/DiagnosticVerifier.java
deleted file mode 100644
index 1b6e447..0000000
--- a/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/DiagnosticVerifier.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.google.android.car.diagnosticverifier;
-
-import android.car.diagnostic.CarDiagnosticEvent;
-import android.util.JsonWriter;
-import android.util.Log;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * DiagVerifier implements verification logic for car diagnostic events.
- *
- * The main idea for the verification is similar to a "diff" command on two files, whereas here
- * is a diff on two event lists. The available diff operations are: "add", "delete", "modify"
- *
- * For example, think about doing a diff on two sequences:
- *
- *   Truth:     A B C D E
- *   Received:  A C D E F
- *
- * The goal is to find the minimal number of diff operations applied on Truth list in order to
- * become Received list. It is the same problem to find edit distance between two sequences and keep
- * track of the corresponding edit operations. This verifier applies dynamic programming algorithm
- * to find the minimal set of diff operations. And the result would be:
- *
- *   Truth:     A - C D E +
- *   Received:  A   C D E F
- *
- * It means in order to become Received list, "B" will be missing and an extra "F" will be added
- * at the end of list.
- */
-public class DiagnosticVerifier {
-
-    private static final String TAG = "DiagnosticVerifier";
-    /**
-     * Below are 4 diff operations when comparing two event lists
-     */
-    private static final int DELETE = 0;
-    private static final int ADD = 1;
-    private static final int MODIFY = 2;
-    private static final int KEEP = 3;
-
-    /**
-     * A list of truth diagnostic events for comparison.
-     */
-    private final List<CarDiagnosticEvent> mTruthEventList = new ArrayList<>();
-    /**
-     * A list of received diagnostic events from car service.
-     */
-    private final List<CarDiagnosticEvent> mReceivedEventList = new ArrayList<>();
-
-    /**
-     * Definition of the verification result
-     */
-    static class VerificationResult {
-        public final String testCase;
-        public final boolean success;
-        public final String errorMessage;
-
-        private VerificationResult(String testCase, boolean success, String errorMessage) {
-            this.testCase = testCase;
-            this.success = success;
-            this.errorMessage = errorMessage;
-        }
-
-        public static VerificationResult fromMessage(String testCase, String message) {
-            return new VerificationResult(testCase, message.length() == 0, message);
-        }
-
-        public void writeToJson(JsonWriter jsonWriter) throws IOException {
-            jsonWriter.beginObject();
-
-            jsonWriter.name("testCase");
-            jsonWriter.value(this.testCase);
-
-            jsonWriter.name("success");
-            jsonWriter.value(this.success);
-
-            jsonWriter.name("errorMessage");
-            jsonWriter.value(this.errorMessage);
-
-            jsonWriter.endObject();
-        }
-    }
-
-    public DiagnosticVerifier(List<CarDiagnosticEvent> truthEvents) {
-        if (truthEvents != null) {
-            for (CarDiagnosticEvent event : truthEvents) {
-                CarDiagnosticEvent canonicalEvent = canonicalize(event);
-                mTruthEventList.add(canonicalEvent);
-            }
-        }
-    }
-
-    public void receiveEvent(CarDiagnosticEvent event) {
-        CarDiagnosticEvent newEvent = canonicalize(event);
-        mReceivedEventList.add(newEvent);
-    }
-
-    public List<VerificationResult> verify() {
-        List<Integer> diff = calculateDiffOperations();
-        StringBuilder missingEventMsgBuilder = new StringBuilder();
-        StringBuilder extraEventMsgBuilder = new StringBuilder();
-        StringBuilder mismatchEventMsgBuilder = new StringBuilder();
-        for (int i = 0, j = 0, k = diff.size() - 1; k >= 0; k--) {
-            if (diff.get(k) == DELETE) {
-                missingEventMsgBuilder.append(String.format(
-                        "Missing event at position %d: %s\n", i, mTruthEventList.get(i)));
-                i++;
-            } else if (diff.get(k) == ADD) {
-                extraEventMsgBuilder.append(String.format(
-                        "Extra event at position %d: %s\n", i, mReceivedEventList.get(j)));
-                j++;
-            } else if (diff.get(k) == MODIFY) {
-                mismatchEventMsgBuilder.append(String.format(
-                        "Mismatched event pair at position %d:\n" +
-                        "True event -- %s\nWrong event -- %s\n",
-                        i, mTruthEventList.get(i), mReceivedEventList.get(j)));
-                i++;
-                j++;
-            } else {
-                i++;
-                j++;
-            }
-        }
-        List<VerificationResult> results = new ArrayList<>();
-        results.add(VerificationResult.fromMessage(
-                "test_mismatched_event", mismatchEventMsgBuilder.toString()));
-        results.add(VerificationResult.fromMessage(
-                "test_missing_event", missingEventMsgBuilder.toString()));
-        results.add(VerificationResult.fromMessage(
-                "test_extra_event", extraEventMsgBuilder.toString()));
-        return results;
-    }
-
-    /**
-     * The function applies a dynamic programming algorithm to find the minimal set of diff
-     * operations that applied on truth event list in order to become received event list
-     */
-    private List<Integer> calculateDiffOperations() {
-        final int n = mTruthEventList.size();
-        final int m = mReceivedEventList.size();
-
-        int[][] diffTable = new int[n + 1][m + 1];
-        int[][] costTable = new int[n + 1][m + 1];
-
-        for (int i = 1; i <= n; i++) {
-            costTable[i][0] = i;
-            diffTable[i][0] = DELETE;
-        }
-
-        for (int i = 1; i <= m; i++) {
-            costTable[0][i] = i;
-            diffTable[0][i] = ADD;
-        }
-
-        for (int i = 1; i <= n; i++) {
-            for (int j = 1; j <= m; j++) {
-                int deleteCost = costTable[i - 1][j] + 1;
-                int addCost = costTable[i][j - 1] + 1;
-                int modifyCost = costTable[i - 1][j - 1];
-
-                CarDiagnosticEvent trueEvent = mTruthEventList.get(i - 1);
-                CarDiagnosticEvent receivedEvent = mReceivedEventList.get(j - 1);
-
-                //TODO: Use a more meaningful comparison. Instead of strict object level equality,
-                //can check logical equality and allow an acceptable difference.
-                boolean isEqual = trueEvent.equals(receivedEvent);
-                modifyCost += isEqual ? 0 : 1;
-
-                int minCost = modifyCost;
-                int move = isEqual ? KEEP : MODIFY;
-                if (minCost > addCost) {
-                    minCost = addCost;
-                    move = ADD;
-                }
-                if (minCost > deleteCost) {
-                    minCost = deleteCost;
-                    move = DELETE;
-                }
-
-                costTable[i][j] = minCost;
-                diffTable[i][j] = move;
-            }
-        }
-        List<Integer> diff = new ArrayList<>();
-
-        for (int i = n, j = m; i > 0 || j > 0; ) {
-            diff.add(diffTable[i][j]);
-            if (diffTable[i][j] == DELETE) {
-                i--;
-            } else if (diffTable[i][j] == ADD) {
-                j--;
-            } else {
-                i--;
-                j--;
-            }
-        }
-        return diff;
-    }
-
-    /**
-     * The function will canonicalize a given event by using JSON converter which will reset event
-     * timestamp to 0 and set DTC field with empty string to null. Doing JSON conversion is because
-     * CarDiagnosticEvent does not provide direct accessor for intValues and floatValues.
-     */
-    private CarDiagnosticEvent canonicalize(CarDiagnosticEvent event) {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        JsonWriter writer = new JsonWriter(new OutputStreamWriter(out));
-        CarDiagnosticEvent newEvent = event;
-        try {
-            event.writeToJson(writer);
-            writer.flush();
-            writer.close();
-            byte[] rawJson = out.toByteArray();
-            ByteArrayInputStream in = new ByteArrayInputStream(rawJson);
-            newEvent = DiagnosticJsonConverter.readEventAndCanonicalize(in);
-            in.close();
-            out.close();
-        } catch (IOException e) {
-            Log.w(TAG, "Failed to clear timestamp ");
-        }
-        return newEvent;
-    }
-}
diff --git a/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/MainActivity.java b/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/MainActivity.java
deleted file mode 100644
index 6814ad0..0000000
--- a/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/MainActivity.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.google.android.car.diagnosticverifier;
-
-import android.app.Activity;
-import android.car.Car;
-import android.car.CarNotConnectedException;
-import android.car.diagnostic.CarDiagnosticEvent;
-import android.car.diagnostic.CarDiagnosticManager;
-import android.car.hardware.CarSensorManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.ServiceConnection;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.IBinder;
-import android.util.JsonWriter;
-import android.util.Log;
-import android.widget.TextView;
-
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.google.android.car.diagnosticverifier.DiagnosticVerifier.VerificationResult;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * The test app that does the verification of car diagnostic event data. It first reads the
- * truth (golden) event data from a JSON file upon starting. Then a broadcast intent such as:
- *
- *     am broadcast -a com.google.android.car.diagnosticverifier.action.START_LISTEN
- *
- * will activate the car diagnostics listener. The test app will receive events from diagnostic API.
- * Once it receives all the events, a broadcast intent with "stop" action such as:
- *
- *     am broadcast -a com.google.android.car.diagnosticverifier.action.STOP_LISTEN
- *
- * will deactivate the listener and start the verification process (see {@link DiagnosticVerifier}).
- *
- * Verification result will be output to a JSON file on device.
- */
-public class MainActivity extends Activity {
-    public static final String TAG = "DiagnosticVerifier";
-
-    public static final String ACTION_START_LISTEN =
-            "com.google.android.car.diagnosticverifier.action.START_LISTEN";
-    public static final String ACTION_STOP_LISTEN =
-            "com.google.android.car.diagnosticverifier.action.STOP_LISTEN";
-
-    private static final String DEFAULT_JSON_PATH = "/data/local/tmp/diag.json";
-
-    private static final String JSON_PATH_KEY = "jsonPath";
-    private static final String JSON_RESULT = "verification_result.json";
-
-    private Car mCar;
-    private CarDiagnosticManager mCarDiagnosticManager;
-    private DiagnosticListener mDiagnosticListener;
-    private BroadcastReceiver mBroadcastReceiver;
-    private DiagnosticVerifier mVerifier;
-    private TextView mStatusBar;
-    private RecyclerView mRecyclerView;
-    private VerificationResultAdapter mResultAdapter;
-    private boolean mListening = false;
-
-    private final ServiceConnection mCarConnectionListener =
-            new ServiceConnection() {
-                @Override
-                public void onServiceConnected(ComponentName name, IBinder iBinder) {
-                    Log.d(TAG, "Connected to " + name.flattenToString());
-                    try {
-                        mCarDiagnosticManager =
-                                (CarDiagnosticManager) mCar.getCarManager(Car.DIAGNOSTIC_SERVICE);
-                    } catch (CarNotConnectedException e) {
-                        Log.e(TAG, "Failed to get a connection", e);
-                    }
-                }
-
-                @Override
-                public void onServiceDisconnected(ComponentName name) {
-                    Log.d(TAG, "Disconnected from " + name.flattenToString());
-
-                    mCar = null;
-                    mCarDiagnosticManager = null;
-                }
-            };
-
-    class DiagnosticListener implements CarDiagnosticManager.OnDiagnosticEventListener {
-
-        @Override
-        public void onDiagnosticEvent(CarDiagnosticEvent carDiagnosticEvent) {
-            Log.v(TAG, "Received Car Diagnostic Event: " + carDiagnosticEvent.toString());
-            mVerifier.receiveEvent(carDiagnosticEvent);
-        }
-    }
-
-    class VerifierMsgReceiver extends BroadcastReceiver {
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            Log.d(TAG, "Received intent with action: " + action);
-            if (ACTION_START_LISTEN.equals(action)) {
-                try {
-                    startListen();
-                } catch (CarNotConnectedException e) {
-                    Log.e(TAG, "Failed to listen for car diagnostic event", e);
-                }
-            } else if (ACTION_STOP_LISTEN.equals(action)) {
-                stopListen();
-                verify();
-            }
-        }
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.verifier_activity);
-
-        mStatusBar = (TextView) findViewById(R.id.status_bar);
-
-        //Setting up RecyclerView to show verification result messages
-        mRecyclerView = (RecyclerView) findViewById(R.id.verification_results);
-        LinearLayoutManager layoutManager =
-                new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
-        mRecyclerView.setLayoutManager(layoutManager);
-        mResultAdapter = new VerificationResultAdapter();
-        mRecyclerView.setAdapter(mResultAdapter);
-
-        //Connect to car service
-        mCar = Car.createCar(this, mCarConnectionListener);
-        mCar.connect();
-
-        //Initialize broadcast intent receiver
-        mBroadcastReceiver = new VerifierMsgReceiver();
-        IntentFilter filter = new IntentFilter(ACTION_START_LISTEN);
-        filter.addAction(ACTION_STOP_LISTEN);
-        this.registerReceiver(mBroadcastReceiver, filter);
-
-        //Read golden diagnostics JSON file
-        String jsonPath = this.getIntent().getStringExtra(JSON_PATH_KEY);
-        if (jsonPath == null || jsonPath.isEmpty()) {
-            jsonPath = DEFAULT_JSON_PATH;
-        }
-        List<CarDiagnosticEvent> events;
-        try {
-            events = DiagnosticJsonConverter.readFromJson(new FileInputStream(jsonPath));
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to read diagnostic JSON file", e);
-        }
-        Log.d(TAG, String.format("Read %d events from JSON file %s.", events.size(), jsonPath));
-
-        mVerifier = new DiagnosticVerifier(events);
-    }
-
-    @Override
-    protected void onDestroy() {
-        if (mCar != null) {
-            mCar.disconnect();
-        }
-        mVerifier = null;
-        this.unregisterReceiver(mBroadcastReceiver);
-    }
-
-    private void startListen() throws CarNotConnectedException {
-        if (mListening) {
-            return;
-        }
-        if (mDiagnosticListener == null) {
-            mDiagnosticListener = new DiagnosticListener();
-        }
-        Log.i(TAG, "Start listening for car diagnostics events");
-        mCarDiagnosticManager.registerListener(
-                mDiagnosticListener,
-                CarDiagnosticManager.FRAME_TYPE_LIVE,
-                CarSensorManager.SENSOR_RATE_NORMAL);
-        mCarDiagnosticManager.registerListener(
-                mDiagnosticListener,
-                CarDiagnosticManager.FRAME_TYPE_FREEZE,
-                CarSensorManager.SENSOR_RATE_NORMAL);
-
-        mListening = true;
-        mStatusBar.setText(R.string.status_receiving);
-    }
-
-    private void stopListen() {
-        Log.i(TAG, "Stop listening for car diagnostics events");
-        mCarDiagnosticManager.unregisterListener(mDiagnosticListener);
-        mListening = false;
-    }
-
-    private boolean isExternalStorageWritable() {
-        String state = Environment.getExternalStorageState();
-        return Environment.MEDIA_MOUNTED.equals(state);
-    }
-
-    private File getResultJsonFile() throws IOException {
-        if (!isExternalStorageWritable()) {
-            throw new IOException("External storage is not writable. Cannot save content");
-        }
-
-        File resultJson = new File(Environment.getExternalStoragePublicDirectory(
-                Environment.DIRECTORY_DOCUMENTS), JSON_RESULT);
-        if (!resultJson.getParentFile().mkdirs()) {
-            Log.w(TAG, "Parent directory may already exist");
-        }
-        return resultJson;
-    }
-
-    private void verify() {
-        Log.d(TAG, "Start verifying car diagnostics events");
-        mStatusBar.setText(R.string.status_verifying);
-        List<VerificationResult> results = mVerifier.verify();
-        mStatusBar.setText(R.string.status_done);
-
-        if (results.isEmpty()) {
-            Log.d(TAG, "Verification result is empty.");
-            return;
-        }
-
-        List<String> resultMessages = new ArrayList<>();
-        try {
-            File resultJson = getResultJsonFile();
-            JsonWriter writer = new JsonWriter(
-                new OutputStreamWriter(new FileOutputStream(resultJson)));
-
-            writer.beginArray();
-            for (VerificationResult result : results) {
-                resultMessages.add("Test case: " + result.testCase);
-                resultMessages.add("Result: " + result.success);
-                resultMessages.add(result.errorMessage);
-                result.writeToJson(writer);
-            }
-            writer.endArray();
-            writer.flush();
-            writer.close();
-            Log.i(TAG, "Verification result: " + resultJson.getAbsolutePath());
-        } catch (IOException e) {
-            Log.e(TAG, "Failed to save verification result.", e);
-        }
-        mResultAdapter.setResultMessages(resultMessages);
-    }
-}
-
diff --git a/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/VerificationResultAdapter.java b/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/VerificationResultAdapter.java
deleted file mode 100644
index 36e584d..0000000
--- a/tests/CarDiagnosticVerifier/src/com/google/android/car/diagnosticverifier/VerificationResultAdapter.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.google.android.car.diagnosticverifier;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.recyclerview.widget.RecyclerView;
-
-import java.util.List;
-
-/**
- * A recycler view adapter for verification result messages
- */
-public class VerificationResultAdapter extends
-        RecyclerView.Adapter<VerificationResultAdapter.VerificationResultViewHolder> {
-
-    private List<String> mResultMessages;
-
-    @Override
-    public VerificationResultViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
-        Context context = viewGroup.getContext();
-        int messageItemLayoutId = R.layout.result_message_item;
-        LayoutInflater inflater = LayoutInflater.from(context);
-        boolean shouldAttachToParentImmediately = false;
-
-        View view = inflater.inflate(
-                messageItemLayoutId, viewGroup, shouldAttachToParentImmediately);
-        return new VerificationResultViewHolder(view);
-    }
-
-    @Override
-    public void onBindViewHolder(VerificationResultViewHolder verificationResultViewHolder, int i) {
-        String resultMessage = mResultMessages.get(i);
-        verificationResultViewHolder.mResultMessageTextView.setText(resultMessage);
-    }
-
-    @Override
-    public int getItemCount() {
-        if (mResultMessages == null) {
-            return 0;
-        }
-        return mResultMessages.size();
-    }
-
-    public void setResultMessages(List<String> resultMessages) {
-        mResultMessages = resultMessages;
-        notifyDataSetChanged();
-    }
-
-    public class VerificationResultViewHolder extends RecyclerView.ViewHolder {
-        public final TextView mResultMessageTextView;
-
-        public VerificationResultViewHolder(View view) {
-            super(view);
-            mResultMessageTextView = (TextView) view.findViewById(R.id.result_message);
-        }
-    }
-}
diff --git a/tests/DirectRenderingClusterSample/Android.mk b/tests/DirectRenderingClusterSample/Android.mk
index f3469fb..62918d5 100644
--- a/tests/DirectRenderingClusterSample/Android.mk
+++ b/tests/DirectRenderingClusterSample/Android.mk
@@ -35,6 +35,8 @@
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 
 LOCAL_JAVA_LIBRARIES += android.car
-LOCAL_STATIC_ANDROID_LIBRARIES += androidx.legacy_legacy-support-v4
+LOCAL_STATIC_ANDROID_LIBRARIES += \
+    androidx.legacy_legacy-support-v4 \
+    androidx.car_car-cluster
 
 include $(BUILD_PACKAGE)
diff --git a/tests/DirectRenderingClusterSample/src/android/car/cluster/sample/SampleClusterServiceImpl.java b/tests/DirectRenderingClusterSample/src/android/car/cluster/sample/SampleClusterServiceImpl.java
index 1fa028e..223e28f 100644
--- a/tests/DirectRenderingClusterSample/src/android/car/cluster/sample/SampleClusterServiceImpl.java
+++ b/tests/DirectRenderingClusterSample/src/android/car/cluster/sample/SampleClusterServiceImpl.java
@@ -38,6 +38,8 @@
 import android.view.InputDevice;
 import android.view.KeyEvent;
 
+import androidx.car.cluster.navigation.NavigationState;
+
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.Arrays;
@@ -52,6 +54,8 @@
     private Listener mListener;
     private final Binder mLocalBinder = new LocalBinder();
     static final String LOCAL_BINDING_ACTION = "local";
+    private static final String NAV_STATE_BUNDLE_KEY = "navstate";
+    private static final int NAV_STATE_EVENT_ID = 1;
 
     private ClusterDisplayProvider mDisplayProvider;
 
@@ -132,11 +136,17 @@
             @Override
             public void onEvent(int eventType, Bundle bundle) {
                 StringBuilder bundleSummary = new StringBuilder();
-                for (String key : bundle.keySet()) {
-                    bundleSummary.append(key);
-                    bundleSummary.append("=");
-                    bundleSummary.append(bundle.get(key));
-                    bundleSummary.append(" ");
+                if (eventType == NAV_STATE_EVENT_ID && bundle.containsKey(NAV_STATE_BUNDLE_KEY)) {
+                    NavigationState navState = NavigationState
+                            .fromParcelable(bundle.getParcelable("navstate"));
+                    bundleSummary.append(navState.toString());
+                } else {
+                    for (String key : bundle.keySet()) {
+                        bundleSummary.append(key);
+                        bundleSummary.append("=");
+                        bundleSummary.append(bundle.get(key));
+                        bundleSummary.append(" ");
+                    }
                 }
                 Log.i(TAG, "onEvent(" + eventType + ", " + bundleSummary + ")");
             }
diff --git a/tests/EmbeddedKitchenSinkApp/Android.mk b/tests/EmbeddedKitchenSinkApp/Android.mk
index 71adf6b..8239f3c 100644
--- a/tests/EmbeddedKitchenSinkApp/Android.mk
+++ b/tests/EmbeddedKitchenSinkApp/Android.mk
@@ -50,7 +50,7 @@
     vehicle-hal-support-lib \
     com.android.car.keventreader-client
 
-include packages/services/Car/car-support-lib/car-support.mk
+LOCAL_JAVA_LIBRARIES += android.car
 
 include $(BUILD_PACKAGE)
 
diff --git a/tests/EmbeddedKitchenSinkApp/AndroidManifest.xml b/tests/EmbeddedKitchenSinkApp/AndroidManifest.xml
index 6e8e80f..c400bd8 100644
--- a/tests/EmbeddedKitchenSinkApp/AndroidManifest.xml
+++ b/tests/EmbeddedKitchenSinkApp/AndroidManifest.xml
@@ -65,10 +65,6 @@
             android:name="android.car.application"
             android:resource="@xml/automotive_app_desc" />
 
-        <service android:name=".job.DishService"
-            android:permission="android.permission.BIND_JOB_SERVICE">
-        </service>
-
         <activity android:name=".setting.CarServiceSettingsActivity"
             android:label="@string/car_settings">
             <intent-filter>
diff --git a/tests/EmbeddedKitchenSinkApp/res/layout/job_scheduler.xml b/tests/EmbeddedKitchenSinkApp/res/layout/job_scheduler.xml
deleted file mode 100644
index 3456263..0000000
--- a/tests/EmbeddedKitchenSinkApp/res/layout/job_scheduler.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="horizontal"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <LinearLayout
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:orientation="vertical">
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content">
-            <Button
-                android:id="@+id/refresh_button"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/refresh_button" />
-            <Button
-                android:id="@+id/cancel_button"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/cancel_button" />
-        </LinearLayout>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/job_info"
-            android:textColor="@android:color/holo_red_dark" />
-        <TextView
-            android:id="@+id/current_jobs"
-            android:layout_width="100dp"
-            android:layout_height="wrap_content" />
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:orientation="vertical">
-        <Button
-            android:id="@+id/schedule_button"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/schedule_button"/>
-        <CheckBox
-            android:id="@+id/require_idle"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/require_idle"/>
-        <CheckBox
-            android:id="@+id/require_charging"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/require_charging"/>
-        <CheckBox
-            android:id="@+id/require_persisted"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/require_persisted"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/require_network"/>
-        <RadioGroup
-            android:id="@+id/network_group"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content">
-
-            <RadioButton android:id="@+id/network_any"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/network_any"/>
-
-            <RadioButton android:id="@+id/network_none"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/network_none"/>
-
-            <RadioButton android:id="@+id/network_unmetered"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/network_unmetered"/>
-        </RadioGroup>
-
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content">
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/dish_num"/>
-
-            <android.support.car.input.CarRestrictedEditText
-                android:id="@+id/dish_num"
-                android:layout_width="100dp"
-                android:layout_height="40dp"
-                android:inputType="number"
-                android:text="@string/default_dish_num" />
-        </LinearLayout>
-
-    </LinearLayout>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/tests/EmbeddedKitchenSinkApp/res/layout/sensors.xml b/tests/EmbeddedKitchenSinkApp/res/layout/sensors.xml
index 6ee854a..4d8c246 100644
--- a/tests/EmbeddedKitchenSinkApp/res/layout/sensors.xml
+++ b/tests/EmbeddedKitchenSinkApp/res/layout/sensors.xml
@@ -17,20 +17,46 @@
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:orientation="vertical" >
-    <!--  dummy one for top area -->
+    <!--  Top area -->
     <LinearLayout
             android:layout_width="match_parent"
-            android:layout_height="50dp"
-            android:orientation="vertical"
-            android:layout_weight="1" />
+            android:layout_height="110dp"
+            android:orientation="vertical">
+        <TextView
+            android:id="@string/location_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/location_title" />
+        <TextView
+            android:id="@+id/location_info"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+        <TextView
+            android:id="@+id/accel_info"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+        <TextView
+            android:id="@+id/gyro_info"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+        <TextView
+            android:id="@+id/mag_info"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+    <!--  Bottom area -->
     <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:layout_weight="1" >
+            android:orientation="vertical">
         <TextView
-                android:id="@+id/sensor_info"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content" />
+            android:id="@+id/sensor_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/sensor_title" />
+        <TextView
+            android:id="@+id/sensor_info"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
     </LinearLayout>
 </LinearLayout>
diff --git a/tests/EmbeddedKitchenSinkApp/res/layout/usb_host.xml b/tests/EmbeddedKitchenSinkApp/res/layout/usb_host.xml
index fbcc608..7a13c4f 100644
--- a/tests/EmbeddedKitchenSinkApp/res/layout/usb_host.xml
+++ b/tests/EmbeddedKitchenSinkApp/res/layout/usb_host.xml
@@ -28,7 +28,7 @@
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"/>
       <TextView
-          android:text="@+string/usb_resolving_handlers"
+          android:text="@string/usb_resolving_handlers"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:orientation="vertical" />
diff --git a/tests/EmbeddedKitchenSinkApp/res/layout/vhal_listitem.xml b/tests/EmbeddedKitchenSinkApp/res/layout/vhal_listitem.xml
new file mode 100644
index 0000000..7057660
--- /dev/null
+++ b/tests/EmbeddedKitchenSinkApp/res/layout/vhal_listitem.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="horizontal">
+    <TextView
+        android:id="@+id/textString"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="7"/>
+    <Button
+        android:id="@+id/infoButton"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="2"
+        android:text="config"/>
+    <Button
+        android:id="@+id/valueButton"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="3"
+        android:text="value"/>
+</LinearLayout>
diff --git a/tests/EmbeddedKitchenSinkApp/res/values/strings.xml b/tests/EmbeddedKitchenSinkApp/res/values/strings.xml
index 452fec8..c50d230 100644
--- a/tests/EmbeddedKitchenSinkApp/res/values/strings.xml
+++ b/tests/EmbeddedKitchenSinkApp/res/values/strings.xml
@@ -117,22 +117,6 @@
     <string name="mock_audio_on">Audio Mocking On</string>
     <string name="mock_audio_off">Audio Mocking Off</string>
 
-    <!-- job scheduler -->
-    <string name="schedule_button">Schedule a  New Job</string>
-    <string name="refresh_button">Refresh pending jobs</string>
-    <string name="cancel_button">Cancel All Jobs</string>
-    <string name="job_info">Current Pending Jobs</string>
-    <string name="require_charging">Require Charging</string>
-    <string name="require_persisted">Persisted</string>
-    <string name="require_periodic">Periodic</string>
-    <string name="require_network">Network Type</string>
-    <string name="require_idle">Device Idle</string>
-    <string name="dish_num">Number of Plates</string>
-    <string name="default_dish_num">50</string>
-    <string name="network_any">ANY</string>
-    <string name="network_none">NONE</string>
-    <string name="network_unmetered">UNMETERED</string>
-
     <!-- keyboard test fragment -->
     <string name="keyboard_test_title">Keyboard Test</string>
     <string name="on_search">OnSearch:</string>
@@ -209,6 +193,8 @@
     <string name="radio_na">N/A</string>
 
     <!-- sensors test -->
+    <string name="location_title">Location/Orientation:</string>
+    <string name="sensor_title">Car Sensor Data:</string>
     <string name="sensor_na">N/A</string>
 
     <string name="sensor_environment">Environment[%1$s]: temperature=%2$s</string>
@@ -219,12 +205,6 @@
     <string name="sensor_rpm">RPM[%1$s]: rpm=%2$s</string>
     <string name="sensor_speed">Speed[%1$s]: speed=%2$s</string>
     <string name="sensor_ignition_status">Ignition status[%1$s]: status=%2$s</string>
-    <string name="sensor_compass">Compass[%1$s]: bear=%2$s, pitch=%3$s, roll=%4$s</string>
-    <string name="sensor_accelerometer">Accelerometer[%1$s]: x=%2$s, y=%3$s, z=%4$s</string>
-    <string name="sensor_gyroscope">Gyroscope[%1$s]: x=%2$s, y=%3$s, z=%4$s</string>
-    <string name="sensor_location">Location[%1$s]: lat=%2$s, lon=%3$s, accuracy=%4$s, altitude=%5$s, speed=%6$s, bearing=%7$s</string>
-    <string name="sensor_gps">GPS Satellites[%1$s]: inView: %2$s, inUse: %3$s. %4$s</string>
-    <string name="sensor_single_gps_satellite">(%1$s): usedInFix: %2$s, prn: %3$s, snr: %4$s, azimuth: %5$s, elevation: %6$s</string>
     <string name="sensor_wheel_ticks">Wheel Distance[%1$s]: reset=%2$s, FL=%3$s, FR=%4$s, RL=%5$s, RR=%6$s</string>
     <string name="sensor_wheel_ticks_cfg">Wheel Distance Config: Wheels=%1$s, FL=%2$s, FR=%3$s, RL=%4$s, RR=%5$s</string>
     <string name="sensor_abs_is_active">ABS[%1$s]: isActive=%2$s</string>
@@ -237,6 +217,7 @@
     <string name="sensor_ev_charge_port_is_open">EV Charge Port Is Open[%1$s]: %2$s</string>
     <string name="sensor_ev_charge_port_is_connected">EV Charge Port Is Connected[%1$s]: %2$s</string>
     <string name="sensor_ev_charge_rate">EV Charge Rate[%1$s]: %2$s</string>
+    <string name="sensor_oil_level">Oil Level[%1$s]: %2$s</string>
 
     <string name="volume_test">Volume Test</string>
     <string name="volume_up_logical">Vol +</string>
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/CarEmulator.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/CarEmulator.java
index ecb734d..ca2d6b3 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/CarEmulator.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/CarEmulator.java
@@ -17,6 +17,8 @@
 
 package com.google.android.car.kitchensink;
 
+import com.google.android.collect.Lists;
+
 import android.car.Car;
 import android.content.Context;
 import android.hardware.automotive.vehicle.V2_0.VehicleHwKeyInputAction;
@@ -24,6 +26,7 @@
 import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess;
 import android.os.SystemClock;
+import android.util.SparseIntArray;
 
 import com.android.car.ICarImpl;
 import com.android.car.systeminterface.SystemInterface;
@@ -32,6 +35,10 @@
 import com.android.car.vehiclehal.test.MockedVehicleHal.VehicleHalPropertyHandler;
 import com.android.car.vehiclehal.test.VehiclePropConfigBuilder;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 public class CarEmulator {
 
     private final Car mCar;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/KitchenSinkActivity.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/KitchenSinkActivity.java
index 9453bf7..3b8b435 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/KitchenSinkActivity.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/KitchenSinkActivity.java
@@ -16,20 +16,21 @@
 
 package com.google.android.car.kitchensink;
 
-
+import android.car.Car;
+import android.car.CarAppFocusManager;
+import android.car.CarNotConnectedException;
 import android.car.hardware.CarSensorManager;
 import android.car.hardware.hvac.CarHvacManager;
 import android.car.hardware.power.CarPowerManager;
 import android.car.hardware.property.CarPropertyManager;
+import android.content.ComponentName;
 import android.content.Intent;
+import android.content.ServiceConnection;
 import android.content.pm.PackageManager;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.car.Car;
-import android.support.car.CarAppFocusManager;
-import android.support.car.CarConnectionCallback;
-import android.support.car.CarNotConnectedException;
+import android.os.IBinder;
 import android.util.Log;
 
 import androidx.car.drawer.CarDrawerActivity;
@@ -50,7 +51,6 @@
 import com.google.android.car.kitchensink.displayinfo.DisplayInfoFragment;
 import com.google.android.car.kitchensink.hvac.HvacTestFragment;
 import com.google.android.car.kitchensink.input.InputTestFragment;
-import com.google.android.car.kitchensink.job.JobSchedulerFragment;
 import com.google.android.car.kitchensink.notification.NotificationFragment;
 import com.google.android.car.kitchensink.orientation.OrientationTestFragment;
 import com.google.android.car.kitchensink.power.PowerTestFragment;
@@ -154,7 +154,6 @@
             add("hvac", HvacTestFragment.class);
             add("inst cluster", InstrumentClusterFragment.class);
             add("input test", InputTestFragment.class);
-            add("job scheduler", JobSchedulerFragment.class);
             add("notification", NotificationFragment.class);
             add("orientation test", OrientationTestFragment.class);
             add("power test", PowerTestFragment.class);
@@ -201,11 +200,6 @@
         return mPropertyManager;
     }
 
-    @Override
-    protected CarDrawerAdapter getRootAdapter() {
-        return new DrawerAdapter();
-    }
-
     public CarSensorManager getSensorManager() {
         return mSensorManager;
     }
@@ -215,6 +209,7 @@
         super.onCreate(savedInstanceState);
         setToolbarElevation(0f);
         setMainContent(R.layout.kitchen_content);
+        getDrawerController().setRootAdapter(new DrawerAdapter());
         // Connection to Car Service does not work for non-automotive yet.
         if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
             initCarApi();
@@ -227,7 +222,7 @@
             mCarApi.disconnect();
             mCarApi = null;
         }
-        mCarApi = Car.createCar(this, mCarConnectionCallback);
+        mCarApi = Car.createCar(this, mServiceConnection);
         mCarApi.connect();
     }
 
@@ -276,10 +271,9 @@
                 .commit();
     }
 
-    private final CarConnectionCallback mCarConnectionCallback =
-            new CarConnectionCallback() {
+    private final ServiceConnection mServiceConnection = new ServiceConnection() {
         @Override
-        public void onConnected(Car car) {
+        public void onServiceConnected(ComponentName name, IBinder service) {
             Log.d(TAG, "Connected to Car Service");
             synchronized (mPropertyManagerReady) {
                 try {
@@ -301,7 +295,7 @@
         }
 
         @Override
-        public void onDisconnected(Car car) {
+        public void onServiceDisconnected(ComponentName name) {
             Log.d(TAG, "Disconnect from Car Service");
         }
     };
@@ -324,11 +318,11 @@
 
         @Override
         protected void populateViewHolder(DrawerItemViewHolder holder, int position) {
-            holder.getTitle().setText(mMenuEntries.get(position).getText());
+            holder.getTitleView().setText(mMenuEntries.get(position).getText());
+            holder.itemView.setOnClickListener(v -> onItemClick(holder.getAdapterPosition()));
         }
 
-        @Override
-        public void onItemClick(int position) {
+        private void onItemClick(int position) {
             if ((position < 0) || (position >= mMenuEntries.size())) {
                 Log.wtf(TAG, "Unknown menu item: " + position);
                 return;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/audio/AudioPlayer.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/audio/AudioPlayer.java
index 50a5e9e..74345aa 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/audio/AudioPlayer.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/audio/AudioPlayer.java
@@ -23,6 +23,8 @@
 import android.media.MediaPlayer;
 import android.util.Log;
 
+import com.google.android.car.kitchensink.R;
+
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/FakeClusterNavigationActivity.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/FakeClusterNavigationActivity.java
index 964d812..d50f053 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/FakeClusterNavigationActivity.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/FakeClusterNavigationActivity.java
@@ -17,13 +17,15 @@
 package com.google.android.car.kitchensink.cluster;
 
 import android.app.Activity;
+import android.car.Car;
+import android.car.CarNotConnectedException;
 import android.car.cluster.CarInstrumentClusterManager;
 import android.car.cluster.ClusterActivityState;
+import android.content.ComponentName;
+import android.content.ServiceConnection;
 import android.graphics.Rect;
 import android.os.Bundle;
-import android.support.car.Car;
-import android.support.car.CarConnectionCallback;
-import android.support.car.CarNotConnectedException;
+import android.os.IBinder;
 import android.util.Log;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
@@ -50,16 +52,15 @@
         setContentView(R.layout.fake_cluster_navigation_activity);
         mUnobscuredArea = findViewById(R.id.unobscuredArea);
 
-        mCarApi = Car.createCar(this /* context */, new CarConnectionCallback() {
-
+        mCarApi = Car.createCar(this /* context */, new ServiceConnection() {
             @Override
-            public void onConnected(Car car) {
-                onCarConnected(car);
+            public void onServiceConnected(ComponentName name, IBinder service) {
+                onCarConnected(mCarApi);
             }
 
             @Override
-            public void onDisconnected(Car car) {
-                onCarDisconnected(car);
+            public void onServiceDisconnected(ComponentName name) {
+                onCarDisconnected(mCarApi);
             }
         });
         Log.i(TAG, "Connecting to car api...");
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
index 8e4483e..4f5fc5b 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/cluster/InstrumentClusterFragment.java
@@ -16,15 +16,17 @@
 package com.google.android.car.kitchensink.cluster;
 
 import android.app.AlertDialog;
+import android.car.Car;
+import android.car.CarAppFocusManager;
+import android.car.CarNotConnectedException;
 import android.car.cluster.CarInstrumentClusterManager;
+import android.car.navigation.CarNavigationStatusManager;
+import android.content.ComponentName;
 import android.content.Intent;
+import android.content.ServiceConnection;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.car.Car;
-import android.support.car.CarAppFocusManager;
-import android.support.car.CarConnectionCallback;
-import android.support.car.CarNotConnectedException;
-import android.support.car.navigation.CarNavigationStatusManager;
+import android.os.IBinder;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -48,23 +50,25 @@
     private CarAppFocusManager mCarAppFocusManager;
     private Car mCarApi;
 
-    private final CarConnectionCallback mCarConnectionCallback = new CarConnectionCallback() {
+    private final ServiceConnection mServiceConnection = new ServiceConnection() {
             @Override
-            public void onConnected(Car car) {
+            public void onServiceConnected(ComponentName name, IBinder service) {
                 Log.d(TAG, "Connected to Car Service");
                 try {
                     mCarNavigationStatusManager =
-                            mCarApi.getCarManager(CarNavigationStatusManager.class);
-                    mCarAppFocusManager = mCarApi.getCarManager(CarAppFocusManager.class);
+                            (CarNavigationStatusManager) mCarApi.getCarManager(
+                                    Car.CAR_NAVIGATION_SERVICE);
+                    mCarAppFocusManager =
+                        (CarAppFocusManager) mCarApi.getCarManager(Car.APP_FOCUS_SERVICE);
                 } catch (CarNotConnectedException e) {
                     Log.e(TAG, "Car is not connected!", e);
                 }
             }
 
             @Override
-            public void onDisconnected(Car car) {
-            Log.d(TAG, "Disconnect from Car Service");
-        }
+            public void onServiceDisconnected(ComponentName name) {
+                Log.d(TAG, "Disconnect from Car Service");
+            }
     };
 
     private void initCarApi() {
@@ -73,7 +77,7 @@
             mCarApi = null;
         }
 
-        mCarApi = Car.createCar(getContext(), mCarConnectionCallback);
+        mCarApi = Car.createCar(getContext(), mServiceConnection);
         mCarApi.connect();
     }
 
@@ -138,8 +142,7 @@
             mCarAppFocusManager
                     .addFocusListener(new CarAppFocusManager.OnAppFocusChangedListener() {
                         @Override
-                        public void onAppFocusChanged(CarAppFocusManager manager, int appType,
-                                boolean active) {
+                        public void onAppFocusChanged(int appType, boolean active) {
                             Log.d(TAG, "onAppFocusChanged, appType: " + appType + " active: "
                                     + active);
                         }
@@ -151,7 +154,7 @@
         CarAppFocusManager.OnAppFocusOwnershipCallback
                 focusCallback = new CarAppFocusManager.OnAppFocusOwnershipCallback() {
             @Override
-            public void onAppFocusOwnershipLost(CarAppFocusManager manager, int focus) {
+            public void onAppFocusOwnershipLost(int focus) {
                 Log.w(TAG, "onAppFocusOwnershipLost, focus: " + focus);
                 new AlertDialog.Builder(getContext())
                         .setTitle(getContext().getApplicationInfo().name)
@@ -160,7 +163,7 @@
             }
 
             @Override
-            public void onAppFocusOwnershipGranted(CarAppFocusManager manager, int focus) {
+            public void onAppFocusOwnershipGranted(int focus) {
                 Log.w(TAG, "onAppFocusOwnershipGranted, focus: " + focus);
             }
 
@@ -174,7 +177,7 @@
 
         try {
             boolean ownsFocus = mCarAppFocusManager.isOwningFocus(
-                    CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, focusCallback);
+                    focusCallback, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
             Log.d(TAG, "Owns APP_FOCUS_TYPE_NAVIGATION: " + ownsFocus);
             if (!ownsFocus) {
                 throw new RuntimeException("Focus was not acquired.");
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/diagnostic/DiagnosticTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/diagnostic/DiagnosticTestFragment.java
index 5569848..7f9b4e1 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/diagnostic/DiagnosticTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/diagnostic/DiagnosticTestFragment.java
@@ -18,12 +18,13 @@
 
 import android.annotation.Nullable;
 import android.car.Car;
+import android.car.CarNotConnectedException;
 import android.car.diagnostic.CarDiagnosticEvent;
 import android.car.diagnostic.CarDiagnosticManager;
 import android.car.diagnostic.CarDiagnosticManager.OnDiagnosticEventListener;
+import android.car.hardware.CarSensorManager;
 import android.graphics.Color;
 import android.os.Bundle;
-import android.support.car.hardware.CarSensorManager;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -108,7 +109,7 @@
                     CarDiagnosticManager.FRAME_TYPE_FREEZE,
                     CarSensorManager.SENSOR_RATE_NORMAL);
             }
-        } catch (android.car.CarNotConnectedException|android.support.car.CarNotConnectedException e) {
+        } catch (CarNotConnectedException e) {
             Log.e(TAG, "Car not connected or not supported", e);
         }
     }
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/input/InputTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/input/InputTestFragment.java
index 34ea1cf..5128816 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/input/InputTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/input/InputTestFragment.java
@@ -30,6 +30,7 @@
 import android.hardware.automotive.vehicle.V2_0.VehicleArea;
 import android.hardware.automotive.vehicle.V2_0.VehicleDisplay;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
+import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyGroup;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyStatus;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyType;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/JobSchedulerFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/JobSchedulerFragment.java
deleted file mode 100644
index b82818f..0000000
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/JobSchedulerFragment.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.google.android.car.kitchensink.job;
-
-import android.app.job.JobInfo;
-import android.app.job.JobScheduler;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.os.PersistableBundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.EditText;
-import android.widget.RadioGroup;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-
-import com.google.android.car.kitchensink.R;
-
-import java.util.List;
-
-public class JobSchedulerFragment extends Fragment {
-    private static final String TAG = "JobSchedulerFragment";
-    private static final String PREFS_NEXT_JOB_ID = "next_job_id";
-
-    private Button mScheduleButton;
-    private Button mRefreshButton;
-    private Button mCancelButton;
-    private CheckBox mRequireCharging;
-    private CheckBox mRequireIdle;
-    private CheckBox mRequirePersisted;
-    private RadioGroup mNetworkGroup;
-    private EditText mDishNum;
-    private TextView mJobInfo;
-    private JobScheduler mJobScheduler;
-
-    @Nullable
-    @Override
-    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
-            @Nullable Bundle savedInstanceState) {
-        View v = inflater.inflate(R.layout.job_scheduler, container, false);
-        mScheduleButton = (Button) v.findViewById(R.id.schedule_button);
-        mScheduleButton.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                scheduleJob();
-            }
-        });
-        mRefreshButton = (Button) v.findViewById(R.id.refresh_button);
-        mRefreshButton.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                refreshCurrentJobs();
-            }
-        });
-
-        mNetworkGroup = (RadioGroup) v.findViewById(R.id.network_group);
-        mDishNum = (EditText) v.findViewById(R.id.dish_num);
-        mRequireCharging = (CheckBox) v.findViewById(R.id.require_charging);
-        mRequireIdle = (CheckBox) v.findViewById(R.id.require_idle);
-        mRequirePersisted = (CheckBox) v.findViewById(R.id.require_persisted);
-        mJobScheduler = (JobScheduler) getContext()
-                .getSystemService(Context.JOB_SCHEDULER_SERVICE);
-
-        mJobInfo = (TextView) v.findViewById(R.id.current_jobs);
-
-        mCancelButton = (Button) v.findViewById(R.id.cancel_button);
-        mCancelButton.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                mJobScheduler.cancelAll();
-                refreshCurrentJobs();
-            }
-        });
-        return v;
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        refreshCurrentJobs();
-    }
-
-    private void refreshCurrentJobs() {
-        StringBuilder sb = new StringBuilder();
-        List<JobInfo> jobs = mJobScheduler.getAllPendingJobs();
-        for (JobInfo job : jobs) {
-            sb.append("JobId: ");
-            sb.append(job.getId());
-            sb.append("\nDishCount: ");
-            sb.append(job.getExtras().getInt(DishService.EXTRA_DISH_COUNT, 0));
-            sb.append("\n");
-        }
-        mJobInfo.setText(sb.toString());
-    }
-
-    private void scheduleJob() {
-        ComponentName jobComponentName = new ComponentName(getContext(), DishService.class);
-        SharedPreferences prefs = getContext()
-                .getSharedPreferences(PREFS_NEXT_JOB_ID, Context.MODE_PRIVATE);
-        int jobId = prefs.getInt(PREFS_NEXT_JOB_ID, 0);
-        PersistableBundle bundle = new PersistableBundle();
-        int count = 50;
-        try {
-            count = Integer.valueOf(mDishNum.getText().toString());
-        } catch (NumberFormatException e) {
-            Log.e(TAG, "NOT A NUMBER!!!");
-        }
-
-        int selected = mNetworkGroup.getCheckedRadioButtonId();
-        int networkType = JobInfo.NETWORK_TYPE_ANY;
-        switch (selected) {
-            case R.id.network_none:
-                networkType = JobInfo.NETWORK_TYPE_NONE;
-                break;
-            case R.id.network_unmetered:
-                networkType = JobInfo.NETWORK_TYPE_UNMETERED;
-                break;
-            case R.id.network_any:
-                networkType = JobInfo.NETWORK_TYPE_ANY;
-                break;
-        }
-        bundle.putInt(DishService.EXTRA_DISH_COUNT, count);
-        JobInfo jobInfo = new JobInfo.Builder(jobId, jobComponentName)
-                .setRequiresCharging(mRequireCharging.isChecked())
-                .setRequiresDeviceIdle(mRequireIdle.isChecked())
-                // TODO: figure out why we crash here even we hold
-                // the RECEIVE_BOOT_COMPLETE permission
-                //.setPersisted(mRequirePersisted.isChecked())
-                .setExtras(bundle)
-                .setRequiredNetworkType(networkType)
-                .build();
-
-
-        mJobScheduler.schedule(jobInfo);
-        Toast.makeText(getContext(), "Scheduled: " + jobInfo, Toast.LENGTH_LONG ).show();
-
-        Log.d(TAG, "Scheduled a job: " + jobInfo);
-        SharedPreferences.Editor editor = prefs.edit();
-        editor.putInt(PREFS_NEXT_JOB_ID, jobId + 1);
-        editor.commit();
-
-        refreshCurrentJobs();
-    }
-}
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/power/PowerTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/power/PowerTestFragment.java
index d24148d..f0183a0 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/power/PowerTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/power/PowerTestFragment.java
@@ -35,36 +35,26 @@
 import com.google.android.car.kitchensink.KitchenSinkActivity;
 import com.google.android.car.kitchensink.R;
 
-import java.util.concurrent.Executor;
-
 public class PowerTestFragment extends Fragment {
     private final boolean DBG = false;
     private final String TAG = "PowerTestFragment";
     private CarPowerManager mCarPowerManager;
     private TextView mTvBootReason;
-    private Executor mExecutor;
-
-    private class ThreadPerTaskExecutor implements Executor {
-        public void execute(Runnable r) {
-            new Thread(r).start();
-        }
-    }
 
     private final CarPowerManager.CarPowerStateListener mPowerListener =
-            new CarPowerManager.CarPowerStateListener () {
-                @Override
-                public void onStateChanged(int state) {
-                    Log.i(TAG, "onStateChanged() state = " + state);
+            (state, future) -> {
+                if (future != null) {
+                    future.complete(null);
                 }
+                Log.i(TAG, "onStateChanged() state = " + state);
             };
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         final Runnable r = () -> {
             mCarPowerManager = ((KitchenSinkActivity) getActivity()).getPowerManager();
-            mExecutor = new ThreadPerTaskExecutor();
             try {
-                mCarPowerManager.setListener(mPowerListener, mExecutor);
+                mCarPowerManager.setListener(mPowerListener);
             } catch (CarNotConnectedException e) {
                 Log.e(TAG, "Car is not connected!");
             } catch (IllegalStateException e) {
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/property/PropertyTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/property/PropertyTestFragment.java
index 83bbfa9..d4b5a02 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/property/PropertyTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/property/PropertyTestFragment.java
@@ -76,9 +76,6 @@
             @Nullable ViewGroup container,
             @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.property, container, false);
-        mActivity = (KitchenSinkActivity) getHost();
-        mMgr = mActivity.getPropertyManager();
-
         // Get resource IDs
         mAreaId = view.findViewById(R.id.sAreaId);
         mEventLog = view.findViewById(R.id.tvEventLog);
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/LocationListeners.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/LocationListeners.java
new file mode 100644
index 0000000..b99f5da
--- /dev/null
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/LocationListeners.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.car.kitchensink.sensor;
+
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.util.Log;
+
+
+public class LocationListeners {
+
+    private static final String TAG = "CAR.SENSOR.KS.location";
+
+    SensorsTestFragment.LocationInfoTextUpdateListener mTextUpdateHandler;
+
+    LocationManager mLocationMgr;
+    SensorManager   mSensorMgr;
+
+
+    public LocationListeners(Context context,
+                             SensorsTestFragment.LocationInfoTextUpdateListener listener) {
+        mTextUpdateHandler = listener;
+
+        mLocationMgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
+        mSensorMgr = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
+    }
+
+    public void startListening() {
+        if (mLocationMgr != null) {
+            if (mLocationMgr.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
+                mLocationMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
+                        mLocationListener);
+                mTextUpdateHandler.setMagField("waiting to hear from GPS");
+            } else {
+                mTextUpdateHandler.setLocationField("GPS_PROVIDER not available");
+            }
+        } else {
+            mTextUpdateHandler.setLocationField("LocationManager not available");
+        }
+
+        if (mSensorMgr != null) {
+            Sensor accelerometerSensor = mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+            Sensor magneticFieldSensor = mSensorMgr.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
+            Sensor gyroscopeSensor = mSensorMgr.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
+
+            mSensorMgr.registerListener(mSensorListener, accelerometerSensor,
+                    SensorManager.SENSOR_DELAY_FASTEST);
+            mSensorMgr.registerListener(mSensorListener, gyroscopeSensor,
+                    SensorManager.SENSOR_DELAY_FASTEST);
+            mSensorMgr.registerListener(mSensorListener, magneticFieldSensor,
+                    SensorManager.SENSOR_DELAY_FASTEST);
+
+            mTextUpdateHandler.setAccelField("waiting to hear from SensorManager");
+            mTextUpdateHandler.setGyroField("waiting to hear from SensorManager");
+            mTextUpdateHandler.setMagField("waiting to hear from SensorManager");
+        } else {
+            mTextUpdateHandler.setAccelField("SensorManager not available");
+            mTextUpdateHandler.setGyroField("SensorManager not available");
+            mTextUpdateHandler.setMagField("SensorManager not available");
+        }
+    }
+
+    public void stopListening() {
+        if (mLocationMgr != null) {
+            if (mLocationMgr.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
+                mLocationMgr.removeUpdates(mLocationListener);
+                mTextUpdateHandler.setMagField("GPS stopped");
+            }
+        }
+
+        if (mSensorMgr != null) {
+            mSensorMgr.unregisterListener(mSensorListener);
+            mTextUpdateHandler.setAccelField("SensorManager stopped");
+            mTextUpdateHandler.setGyroField("SensorManager stopped");
+            mTextUpdateHandler.setMagField("SensorManager stopped");
+        }
+    }
+
+
+    private final LocationListener mLocationListener = new LocationListener() {
+        @Override
+        public void onLocationChanged(Location location) {
+            String s = String.format("Location: lat=%10.6f, lon=%10.6f, altitude=%5.0f, "
+                                   + "speed=%5.1f, bearing=%3.0f, accuracy=%5.1f",
+                    location.getLatitude(),
+                    location.getLongitude(),
+                    location.getAltitude(),
+                    location.getSpeed(),
+                    location.getBearing(),
+                    location.getAccuracy());
+
+            mTextUpdateHandler.setLocationField(s);
+        }
+
+        @Override
+        public void onProviderEnabled(String provider) {
+        }
+
+        @Override
+        public void onProviderDisabled(String provider) {
+        }
+
+        @Override
+        public void onStatusChanged(String provider, int status, Bundle extras) {
+        }
+    };
+
+    private final SensorEventListener mSensorListener = new SensorEventListener() {
+        @Override
+        public void onSensorChanged(SensorEvent event) {
+            int type = event.sensor.getType();
+            switch (type) {
+                case Sensor.TYPE_GYROSCOPE:
+                    String gs = String.format("Gyroscope Rad/s: (%6.2f, %6.2f, %6.2f)",
+                            event.values[0], event.values[1], event.values[2]);
+                    mTextUpdateHandler.setLocationField(gs);
+                    break;
+                case Sensor.TYPE_MAGNETIC_FIELD:
+                    // NOTE:  If we wanted to report yaw/pitch/roll, we would use both
+                    //        accelerometer and magnetic data to compute R and I:
+                    // SensorManager.getRotationMatrix(R, I,
+                    //                                 mLastAccelerometerData
+                    //                                 mLastMagneticFieldData);
+                    // SensorManager.getOrientation(mR, orientation);
+                    String ms = String.format("Magnetic uT: (%6.2f, %6.2f, %6.2f)",
+                            event.values[0], event.values[1], event.values[2]);
+                    mTextUpdateHandler.setLocationField(ms);
+                    break;
+                case Sensor.TYPE_ACCELEROMETER:
+                    String as = String.format("Accelerometer m/s2: (%6.2f, %6.2f, %6.2f)",
+                            event.values[0], event.values[1], event.values[2]);
+                    mTextUpdateHandler.setLocationField(as);
+                    break;
+                default:
+                    Log.w(TAG, "Unexpected sensor event type: " + type);
+                    // Should never happen.
+                    return;
+            }
+        }
+
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        }
+    };
+}
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/SensorsTestFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/SensorsTestFragment.java
index 39392b9..77a6e1c 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/SensorsTestFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/sensor/SensorsTestFragment.java
@@ -75,7 +75,7 @@
                     synchronized (SensorsTestFragment.this) {
                         mEventMap.put(event.sensorType, event);
                     }
-                    refreshUi();
+                    refreshSensorInfoText();
                 }
             };
     private final Handler mHandler = new Handler();
@@ -83,13 +83,19 @@
     private final DateFormat mDateFormat = SimpleDateFormat.getDateTimeInstance();
 
     private KitchenSinkActivity mActivity;
-    private TextView mSensorInfo;
     private Car mCar;
-    private CarSensorManager mSensorManager;
+    private CarSensorManager mCarSensorManager;
+    private LocationListeners mLocationListener;
     private String mNaString;
     private int[] supportedSensors = new int[0];
     private Set<String> mActivePermissions = new HashSet<String>();
 
+    private TextView mSensorInfo;
+    private TextView mLocationInfo;
+    private TextView mAccelInfo;
+    private TextView mGyroInfo;
+    private TextView mMagInfo;
+
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@@ -100,7 +106,13 @@
 
         View view = inflater.inflate(R.layout.sensors, container, false);
         mActivity = (KitchenSinkActivity) getHost();
+
         mSensorInfo = (TextView) view.findViewById(R.id.sensor_info);
+        mLocationInfo = (TextView) view.findViewById(R.id.location_info);
+        mAccelInfo = (TextView) view.findViewById(R.id.accel_info);
+        mGyroInfo = (TextView) view.findViewById(R.id.gyro_info);
+        mMagInfo = (TextView) view.findViewById(R.id.mag_info);
+
         mNaString = getContext().getString(R.string.sensor_na);
         return view;
     }
@@ -118,24 +130,38 @@
     @Override
     public void onPause() {
         super.onPause();
-        if (mSensorManager != null) {
-            mSensorManager.unregisterListener(mOnSensorChangedListener);
+        if (mCarSensorManager != null) {
+            mCarSensorManager.unregisterListener(mOnSensorChangedListener);
+        }
+        if (mLocationListener != null) {
+            mLocationListener.stopListening();
         }
     }
 
     private void initSensors() {
         try {
-            mSensorManager =
-                (CarSensorManager) ((KitchenSinkActivity) getActivity()).getSensorManager();
-            supportedSensors = mSensorManager.getSupportedSensors();
+            if (mCarSensorManager == null) {
+                mCarSensorManager =
+                    (CarSensorManager) ((KitchenSinkActivity) getActivity()).getSensorManager();
+            }
+            supportedSensors = mCarSensorManager.getSupportedSensors();
             for (Integer sensor : supportedSensors) {
-                mSensorManager.registerListener(mOnSensorChangedListener, sensor,
+                mCarSensorManager.registerListener(mOnSensorChangedListener, sensor,
                         CarSensorManager.SENSOR_RATE_NORMAL);
             }
         } catch (CarNotConnectedException e) {
             Log.e(TAG, "Car not connected or not supported", e);
         } catch (Exception e) {
-            Log.e(TAG, "initSensors() exception caught: ", e);
+            Log.e(TAG, "initSensors() exception caught SensorManager: ", e);
+        }
+        try {
+            if (mLocationListener == null) {
+                mLocationListener = new LocationListeners(getContext(),
+                                                          new LocationInfoTextUpdateListener());
+            }
+            mLocationListener.startListening();
+        } catch (Exception e) {
+            Log.e(TAG, "initSensors() exception caught from LocationListeners: ", e);
         }
     }
 
@@ -143,6 +169,7 @@
         Set<String> missingPermissions = checkExistingPermissions();
         if (!missingPermissions.isEmpty()) {
             requestPermissions(missingPermissions);
+            // The callback with premission results will take care of calling initSensors for us
         } else {
             initSensors();
         }
@@ -182,7 +209,7 @@
         }
     }
 
-    private void refreshUi() {
+    private void refreshSensorInfoText() {
         String summaryString;
         synchronized (this) {
             List<String> summary = new ArrayList<>();
@@ -257,7 +284,7 @@
                         }
                         // Get the config data
                         try {
-                            CarSensorConfig c = mSensorManager.getSensorConfig(
+                            CarSensorConfig c = mCarSensorManager.getSensorConfig(
                                 CarSensorManager.SENSOR_TYPE_WHEEL_TICK_DISTANCE);
                             summary.add(getContext().getString(R.string.sensor_wheel_ticks_cfg,
                                 c.getInt(CarSensorConfig.WHEEL_TICK_DISTANCE_SUPPORTED_WHEELS),
@@ -294,6 +321,9 @@
                     case CarSensorManager.SENSOR_TYPE_EV_BATTERY_CHARGE_RATE:
                         summary.add(getEvChargeRate(event));
                         break;
+                    case CarSensorManager.SENSOR_TYPE_ENGINE_OIL_LEVEL:
+                        summary.add(getEngineOilLevel(event));
+                        break;
                     default:
                         // Should never happen.
                         Log.w(TAG, "Unrecognized event type: " + toHexString(i));
@@ -316,6 +346,10 @@
         return mDateFormat.format(new Date(event.timestamp / (1000L * 1000L)));
     }
 
+    private String getTimestampNow() {
+        return mDateFormat.format(new Date(System.nanoTime() / (1000L * 1000L)));
+    }
+
     private String getFuelLevel(CarSensorEvent event) {
         String fuelLevel = mNaString;
         if(event != null) {
@@ -370,4 +404,38 @@
         return getContext().getString(R.string.sensor_ev_charge_rate, getTimestamp(event),
             evChargeRate);
     }
+
+    private String getEngineOilLevel(CarSensorEvent event) {
+        String engineOilLevel = mNaString;
+        if(event != null) {
+            engineOilLevel = String.valueOf(event.getCarEngineOilLevelData(null).engineOilLevel);
+        }
+        return  getContext().getString(R.string.sensor_oil_level, getTimestamp(event),
+           engineOilLevel);
+    }
+
+    public class LocationInfoTextUpdateListener {
+        public void setLocationField(String value) {
+            setTimestampedTextField(mLocationInfo, value);
+        }
+
+        public void setAccelField(String value) {
+            setTimestampedTextField(mAccelInfo, value);
+        }
+
+        public void setGyroField(String value) {
+            setTimestampedTextField(mGyroInfo, value);
+        }
+
+        public void setMagField(String value) {
+            setTimestampedTextField(mMagInfo, value);
+        }
+
+        private void setTimestampedTextField(TextView text, String value) {
+            synchronized (SensorsTestFragment.this) {
+                text.setText(getTimestampNow() + ": " + value);
+                Log.d(TAG, "setText: " + value);
+            }
+        }
+    }
 }
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/setting/CarServiceSettingsActivity.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/setting/CarServiceSettingsActivity.java
index 0ad1934..d5f2cf2 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/setting/CarServiceSettingsActivity.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/setting/CarServiceSettingsActivity.java
@@ -18,7 +18,6 @@
 
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
-import android.view.View;
 import android.widget.Button;
 
 import com.google.android.car.kitchensink.R;
@@ -33,12 +32,7 @@
         super.onCreate(savedInstanceState);
         Button button = new Button(this);
         button.setText("Finish");
-        button.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                finish();
-            }
-        });
+        button.setOnClickListener(view -> finish());
         setListFooter(button);
     }
 
@@ -49,8 +43,7 @@
 
     @Override
     protected boolean isValidFragment(String fragmentName) {
-        if (GarageModeSettingsFragment.class.getName().equals(fragmentName)
-                || UsbManagerFragment.class.getName().equals(fragmentName)) {
+        if (UsbManagerFragment.class.getName().equals(fragmentName)) {
             return true;
         }
         return false;
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/setting/GarageModeSettingsFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/setting/GarageModeSettingsFragment.java
deleted file mode 100644
index 4ace656..0000000
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/setting/GarageModeSettingsFragment.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- *   Licensed under the Apache License, Version 2.0 (the "License");
- *   you may not use this file except in compliance with the License.
- *   You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing, software
- *   distributed under the License is distributed on an "AS IS" BASIS,
- *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *   See the License for the specific language governing permissions and
- *   limitations under the License.
- */
-package com.google.android.car.kitchensink.setting;
-
-import static android.car.settings.CarSettings.Global.KEY_GARAGE_MODE_ENABLED;
-import static android.car.settings.CarSettings.Global.KEY_GARAGE_MODE_MAINTENANCE_WINDOW;
-import static android.car.settings.CarSettings.Global.KEY_GARAGE_MODE_WAKE_UP_TIME;
-import static android.car.settings.GarageModeSettingsObserver.GARAGE_MODE_ENABLED_URI;
-import static android.car.settings.GarageModeSettingsObserver.GARAGE_MODE_MAINTENANCE_WINDOW_URI;
-import static android.car.settings.GarageModeSettingsObserver.GARAGE_MODE_WAKE_UP_TIME_URI;
-
-import android.app.TimePickerDialog;
-import android.car.CarApiUtil;
-import android.car.settings.GarageModeSettingsObserver;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
-import android.provider.Settings;
-import android.text.format.DateFormat;
-import android.util.Log;
-import android.widget.TimePicker;
-
-import com.google.android.car.kitchensink.R;
-
-import java.sql.Time;
-
-public class GarageModeSettingsFragment extends PreferenceFragment implements
-        TimePickerDialog.OnTimeSetListener, Preference.OnPreferenceChangeListener {
-
-    private static final String TAG = "GarageModeSettings";
-    private Preference mTimePreference;
-    private Preference mGarageSwitchPreference;
-    private Preference mGarageLimitPreference;
-
-    private int mGarageTimeHour;
-    private int mGarageTimeMin;
-
-    private GarageModeSettingsObserver mContentObserver;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        addPreferencesFromResource(R.xml.garage_mode_prefs);
-        mTimePreference = findPreference(KEY_GARAGE_MODE_WAKE_UP_TIME);
-        mTimePreference.setOnPreferenceChangeListener(this);
-        mGarageSwitchPreference = findPreference(KEY_GARAGE_MODE_ENABLED);
-        mGarageSwitchPreference.setOnPreferenceChangeListener(this);
-        mGarageLimitPreference = findPreference(KEY_GARAGE_MODE_MAINTENANCE_WINDOW);
-        mGarageLimitPreference.setOnPreferenceChangeListener(this);
-        refreshUI(KEY_GARAGE_MODE_ENABLED, KEY_GARAGE_MODE_WAKE_UP_TIME, KEY_GARAGE_MODE_MAINTENANCE_WINDOW);
-        mContentObserver = new GarageModeSettingsObserver(getContext(), new Handler()) {
-            @Override
-            public void onChange(boolean selfChange, Uri uri) {
-                onSettingsChangedInternal(uri);
-            }
-        };
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        mContentObserver.register();
-    }
-
-    @Override
-    public void onPause() {
-        super.onPause();
-        mContentObserver.unregister();
-    }
-
-    private void refreshUI(String... keys) {
-        for (String key : keys) {
-            try {
-                switch (key) {
-                    case KEY_GARAGE_MODE_ENABLED:
-                        mGarageSwitchPreference.setDefaultValue(
-                                Settings.Global.getInt(getContext().getContentResolver(), key)
-                                        == 1);
-                        break;
-                    case KEY_GARAGE_MODE_WAKE_UP_TIME:
-                        int time[] = CarApiUtil.decodeGarageTimeSetting(
-                                Settings.Global.getString(getContext().getContentResolver(),
-                                        KEY_GARAGE_MODE_WAKE_UP_TIME));
-                        mTimePreference.setSummary(
-                                DateFormat.getTimeFormat(getContext()).format(
-                                        new Time(time[0], time[1], 0)));
-                        mGarageTimeHour = time[0];
-                        mGarageTimeMin = time[1];
-                        break;
-                    case KEY_GARAGE_MODE_MAINTENANCE_WINDOW:
-                        int limitMinutes = Settings.Global.getInt(getContext().getContentResolver(),
-                                key) / 60 / 1000;
-                        mGarageLimitPreference.setSummary(
-                                getString(R.string.garage_time_limit_summary, limitMinutes));
-                        break;
-                }
-            } catch (Settings.SettingNotFoundException e) {
-                Log.e(TAG, "Settings not found " + key);
-            }
-        }
-    }
-
-    @Override
-    public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
-        if (preference == mTimePreference) {
-            TimePickerDialogFragment dialog =
-                    TimePickerDialogFragment.newInstance(mGarageTimeHour, mGarageTimeMin);
-            dialog.setTimeSetListener(this);
-            dialog.show(getFragmentManager(), "time");
-            return true;
-        }
-        return super.onPreferenceTreeClick(screen, preference);
-    }
-
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        if (preference == mGarageSwitchPreference) {
-            updateGarageSwitch((boolean) newValue);
-            refreshUI(KEY_GARAGE_MODE_ENABLED);
-            return true;
-        } else if (preference == mGarageLimitPreference) {
-            updateGarageTimeLimit(Integer.valueOf((String) newValue));
-            refreshUI(KEY_GARAGE_MODE_MAINTENANCE_WINDOW);
-            return true;
-        }
-
-        return false;
-    }
-
-    private void updateGarageSwitch(boolean newValue) {
-        Settings.Global.putInt(getContext().getContentResolver(),
-                KEY_GARAGE_MODE_ENABLED, newValue ? 1 : 0);
-    }
-
-    private void updateGarageTimeLimit(int newValue) {
-        Settings.Global.putInt(getContext().getContentResolver(),
-                KEY_GARAGE_MODE_MAINTENANCE_WINDOW, newValue * 60 * 1000);
-    }
-
-    private void updateGarageTime(String time) {
-        Settings.Global.putString(getContext().getContentResolver(),
-                KEY_GARAGE_MODE_WAKE_UP_TIME, time);
-    }
-
-    @Override
-    public void onTimeSet(TimePicker timePicker, int hour, int minute) {
-        updateGarageTime(CarApiUtil.encodeGarageTimeSetting(hour, minute));
-        refreshUI(KEY_GARAGE_MODE_WAKE_UP_TIME);
-    }
-
-    private void onSettingsChangedInternal(Uri uri) {
-        Log.d(TAG, "Content Observer onChange: " + uri);
-        if (uri.equals(GARAGE_MODE_ENABLED_URI)) {
-            refreshUI(KEY_GARAGE_MODE_ENABLED);
-        } else if (uri.equals(GARAGE_MODE_WAKE_UP_TIME_URI)) {
-            refreshUI(KEY_GARAGE_MODE_WAKE_UP_TIME);
-        } else if (uri.equals(GARAGE_MODE_MAINTENANCE_WINDOW_URI)) {
-            refreshUI(KEY_GARAGE_MODE_MAINTENANCE_WINDOW);
-        }
-    }
-}
\ No newline at end of file
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/storagelifetime/StorageLifetimeFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/storagelifetime/StorageLifetimeFragment.java
index bf7af5d..7ab3a6a 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/storagelifetime/StorageLifetimeFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/storagelifetime/StorageLifetimeFragment.java
@@ -208,8 +208,7 @@
                 "\nBlock size: " + mStatFs.getBlockSizeLong() + " bytes" +
                 "\nfor a total free space of: " +
                 (mStatFs.getBlockSizeLong() * mStatFs.getAvailableBlocksLong() / MEGABYTE) + "MB");
-        } catch (android.car.CarNotConnectedException|
-                 android.support.car.CarNotConnectedException e) {
+        } catch (CarNotConnectedException e) {
             Log.e(TAG, "Car not connected or not supported", e);
         }
     }
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/vhal/VehicleHalFragment.java b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/vhal/VehicleHalFragment.java
index df5f0fc..c5998c9 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/vhal/VehicleHalFragment.java
+++ b/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/vhal/VehicleHalFragment.java
@@ -17,10 +17,11 @@
 
 import android.annotation.Nullable;
 import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
+import android.content.Context;
 import android.hardware.automotive.vehicle.V2_0.IVehicle;
+import android.hardware.automotive.vehicle.V2_0.StatusCode;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropConfig;
+import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
 import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
 import android.os.Bundle;
 import android.os.RemoteException;
@@ -28,11 +29,12 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.LinearLayout;
 import android.widget.ListView;
 
+import android.widget.TextView;
 import androidx.fragment.app.Fragment;
 
 import com.google.android.car.kitchensink.KitchenSinkActivity;
@@ -43,28 +45,12 @@
 import java.util.stream.Collectors;
 
 public class VehicleHalFragment extends Fragment {
+
     private static final String TAG = "CAR.VEHICLEHAL.KS";
 
     private KitchenSinkActivity mActivity;
     private ListView mListView;
 
-    private final OnClickListener mNopOnClickListener = new OnClickListener() {
-        @Override
-        public void onClick(DialogInterface dialog, int which) { }
-    };
-
-    private final OnItemClickListener mOnClickListener = new OnItemClickListener() {
-        @Override
-        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-            HalPropertyInfo entry = (HalPropertyInfo)parent.getItemAtPosition(position);
-            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
-            builder.setTitle("Info for " + entry.name)
-                   .setPositiveButton(android.R.string.yes, mNopOnClickListener)
-                   .setMessage(entry.config.toString())
-                   .show();
-        }
-    };
-
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater,
@@ -73,8 +59,6 @@
         View view = inflater.inflate(R.layout.vhal, container, false);
         mActivity = (KitchenSinkActivity) getHost();
         mListView = view.findViewById(R.id.hal_prop_list);
-        mListView.setOnItemClickListener(mOnClickListener);
-
         return view;
     }
 
@@ -103,12 +87,11 @@
             .sorted()
             .collect(Collectors.toList());
 
-        mListView.setAdapter(new ArrayAdapter<HalPropertyInfo>(mActivity,
-                android.R.layout.simple_list_item_1,
-                supportedProperties));
+        mListView.setAdapter(new ListAdapter(mActivity, vehicle, supportedProperties));
     }
 
     private static class HalPropertyInfo implements Comparable<HalPropertyInfo> {
+
         public final int id;
         public final String name;
         public final VehiclePropConfig config;
@@ -126,10 +109,7 @@
 
         @Override
         public boolean equals(Object other) {
-            if (other instanceof HalPropertyInfo) {
-                return ((HalPropertyInfo)other).id == id;
-            }
-            return false;
+            return other instanceof HalPropertyInfo && ((HalPropertyInfo) other).id == id;
         }
 
         @Override
@@ -141,5 +121,79 @@
         public int compareTo(HalPropertyInfo halPropertyInfo) {
             return name.compareTo(halPropertyInfo.name);
         }
+
+        public String getValue(IVehicle vehicle) {
+            String result[] = new String[] {"<unknown>"};
+
+            try {
+                VehiclePropValue request = new VehiclePropValue();
+                // TODO: add zones support
+                request.prop = id;
+
+                // NB: this call is synchronous
+                vehicle.get(request, (status, propValue) -> {
+                    if (status == StatusCode.OK) {
+                        result[0] = propValue.value.toString();
+                    }
+                });
+            } catch (android.os.RemoteException e) {
+                Log.e(TAG, "unable to read property " + name, e);
+            }
+
+            return result[0];
+        }
+    }
+
+    private static final class ListAdapter extends ArrayAdapter<HalPropertyInfo> {
+        private static final int RESOURCE_ID = R.layout.vhal_listitem;
+
+        // cannot use superclass' LayoutInflater as it is private
+        private final LayoutInflater mLayoutInflater;
+        private final IVehicle mVehicle;
+
+        ListAdapter(Context context, IVehicle vehicle, List<HalPropertyInfo> properties) {
+            super(context, RESOURCE_ID, properties);
+            mVehicle = vehicle;
+            mLayoutInflater = LayoutInflater.from(context);
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            final HalPropertyInfo item = getItem(position);
+
+            final LinearLayout viewLayout;
+            if (convertView != null && convertView instanceof LinearLayout) {
+                viewLayout  = (LinearLayout)convertView;
+            } else {
+                // this is the value used by the superclass's view inflater
+                final boolean attachToRoot = false;
+
+                viewLayout =
+                        (LinearLayout)mLayoutInflater.inflate(RESOURCE_ID, parent, attachToRoot);
+            }
+
+            TextView textString = viewLayout.findViewById(R.id.textString);
+            Button infoButton = viewLayout.findViewById(R.id.infoButton);
+            Button valueButton = viewLayout.findViewById(R.id.valueButton);
+
+            infoButton.setOnClickListener(btn -> {
+                AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+                builder.setTitle("Configuration for " + item.name)
+                    .setPositiveButton(android.R.string.yes, (x, y) -> { })
+                    .setMessage(item.config.toString())
+                    .show();
+            });
+
+            valueButton.setOnClickListener(btn -> {
+                AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+                builder.setTitle("Value for " + item.name)
+                    .setPositiveButton(android.R.string.yes, (x, y) -> { })
+                    .setMessage(item.getValue(mVehicle))
+                    .show();
+            });
+
+            textString.setText(item.toString());
+            return viewLayout;
+        }
     }
 }
diff --git a/tests/CarDiagnosticVerifier/Android.mk b/tests/GarageModeTestApp/Android.mk
similarity index 84%
rename from tests/CarDiagnosticVerifier/Android.mk
rename to tests/GarageModeTestApp/Android.mk
index e66c7a1..a3e60f8 100644
--- a/tests/CarDiagnosticVerifier/Android.mk
+++ b/tests/GarageModeTestApp/Android.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2017 The Android Open Source Project
+# Copyright (C) 2018 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,18 +15,18 @@
 #
 
 LOCAL_PATH := $(call my-dir)
+
 include $(CLEAR_VARS)
 
-LOCAL_MODULE_TAGS := optional
-
-# Only compile source java files in this apk.
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 
-LOCAL_PACKAGE_NAME := CarDiagnosticVerifier
+LOCAL_PACKAGE_NAME := GarageModeTestApp
 LOCAL_PRIVATE_PLATFORM_APIS := true
 
+LOCAL_MODULE_TAGS := optional
+
 LOCAL_JAVA_VERSION := 1.8
 
 LOCAL_PROGUARD_ENABLED := disabled
@@ -37,11 +37,14 @@
 
 LOCAL_PRIVILEGED_MODULE := true
 
+LOCAL_CERTIFICATE := platform
+
 LOCAL_STATIC_JAVA_LIBRARIES += vehicle-hal-support-lib
 
-LOCAL_STATIC_ANDROID_LIBRARIES := \
+LOCAL_STATIC_ANDROID_LIBRARIES += \
+    androidx.car_car \
     androidx.legacy_legacy-support-v4 \
-    androidx.recyclerview_recyclerview
+    androidx.appcompat_appcompat
 
 LOCAL_JAVA_LIBRARIES += android.car
 
diff --git a/tests/GarageModeTestApp/AndroidManifest.xml b/tests/GarageModeTestApp/AndroidManifest.xml
new file mode 100644
index 0000000..b33520f
--- /dev/null
+++ b/tests/GarageModeTestApp/AndroidManifest.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.google.android.car.garagemode.testapp"
+    android:sharedUserId="android.uid.system">
+
+    <uses-sdk
+        android:minSdkVersion="24"
+        android:targetSdkVersion='25'/>
+    <uses-permission android:name="android.car.permission.CAR_DRIVING_STATE" />
+    <uses-permission android:name="android.permission.BIND_JOB_SERVICE" />
+
+    <application android:label="GarageModeTestApp">
+        <activity android:name=".MainActivity"
+            android:theme="@style/GarageModeTheme"
+            android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
+        <service android:name=".DishService"
+            android:permission="android.permission.BIND_JOB_SERVICE">
+        </service>
+    </application>
+</manifest>
diff --git a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/volume_dialog_background.xml b/tests/GarageModeTestApp/res/drawable/border.xml
similarity index 65%
rename from car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/volume_dialog_background.xml
rename to tests/GarageModeTestApp/res/drawable/border.xml
index 345692f..de84a3c 100644
--- a/car_product/overlay/frameworks/base/packages/SystemUI/res/drawable/volume_dialog_background.xml
+++ b/tests/GarageModeTestApp/res/drawable/border.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2017 The Android Open Source Project
+<!-- Copyright (C) 2018 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,13 +13,14 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android" >
-    <solid android:color="?android:attr/colorBackgroundFloating" />
-    <padding
-        android:bottom="5dp"
-        android:left="5dp"
-        android:right="5dp"
-        android:top="5dp" />
-    <corners android:bottomLeftRadius="20dp"
-             android:bottomRightRadius="20dp"/>
-</shape>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+  <corners
+      android:bottomRightRadius="5dp"
+      android:bottomLeftRadius="5dp"
+      android:topLeftRadius="5dp"
+      android:topRightRadius="5dp"/>
+  <stroke
+      android:width="2dip"
+      android:color="#212121" />
+</shape>
\ No newline at end of file
diff --git a/car-support-lib/AndroidManifest.xml b/tests/GarageModeTestApp/res/layout/activity_content.xml
similarity index 63%
copy from car-support-lib/AndroidManifest.xml
copy to tests/GarageModeTestApp/res/layout/activity_content.xml
index f92f21b..4ae4c8d 100644
--- a/car-support-lib/AndroidManifest.xml
+++ b/tests/GarageModeTestApp/res/layout/activity_content.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- Copyright (C) 2018 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -13,10 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
-        package="android.support.car.ui" >
-    <uses-sdk android:minSdkVersion="21"
-        android:targetSdkVersion="23" />
-</manifest>
+<!-- We use this container to place app fragments. It insets the fragment contents -->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/activity_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+</FrameLayout>
\ No newline at end of file
diff --git a/tests/GarageModeTestApp/res/layout/job_info_row.xml b/tests/GarageModeTestApp/res/layout/job_info_row.xml
new file mode 100644
index 0000000..92c633b
--- /dev/null
+++ b/tests/GarageModeTestApp/res/layout/job_info_row.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+  <TextView
+      android:id="@+id/jobId"
+      android:layout_height="match_parent"
+      android:layout_width="wrap_content"
+      android:layout_margin="5dp"
+      android:gravity="center_vertical"/>
+  <LinearLayout
+      android:layout_height="match_parent"
+      android:layout_width="wrap_content"
+      android:orientation="vertical">
+    <TextView
+        style="@style/ListEntryField"
+        android:id="@+id/requiredNetwork"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"/>
+    <TextView
+        style="@style/ListEntryField"
+        android:id="@+id/isPeriodic"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"/>
+  </LinearLayout>
+  <LinearLayout
+      android:layout_height="match_parent"
+      android:layout_width="wrap_content"
+      android:orientation="vertical">
+    <TextView
+        style="@style/ListEntryField"
+        android:id="@+id/isPersisted"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"/>
+    <TextView
+        style="@style/ListEntryField"
+        android:id="@+id/isPrefetch"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"/>
+  </LinearLayout>
+  <LinearLayout
+      android:layout_height="match_parent"
+      android:layout_width="wrap_content"
+      android:orientation="vertical">
+    <TextView
+        style="@style/ListEntryField"
+        android:id="@+id/isRequireBatteryNotLow"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"/>
+    <TextView
+        style="@style/ListEntryField"
+        android:id="@+id/isRequireCharging"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"/>
+  </LinearLayout>
+  <LinearLayout
+      android:layout_height="match_parent"
+      android:layout_width="wrap_content"
+      android:orientation="vertical">
+    <TextView
+        style="@style/ListEntryField"
+        android:id="@+id/isRequireDeviceIdle"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"/>
+    <TextView
+        style="@style/ListEntryField"
+        android:id="@+id/isRequireStorageNotLow"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"/>
+  </LinearLayout>
+</LinearLayout>
diff --git a/tests/GarageModeTestApp/res/layout/offcar_testing.xml b/tests/GarageModeTestApp/res/layout/offcar_testing.xml
new file mode 100644
index 0000000..c14aa07
--- /dev/null
+++ b/tests/GarageModeTestApp/res/layout/offcar_testing.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:weightSum="2">
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:orientation="vertical">
+        <LinearLayout
+            style="@style/SectionContainer"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+            <TextView
+                style="@style/SectionHeader"
+                android:text="@string/section_header_garage_mode_config"/>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:weightSum="2">
+                <Button
+                    style="@style/Button"
+                    android:id="@+id/enterGarageModeBtn"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:text="@string/button_enter_garage_mode"/>
+                <Button
+                    style="@style/Button"
+                    android:id="@+id/exitGarageModeBtn"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:text="@string/button_exit_garage_mode"/>
+            </LinearLayout>
+        </LinearLayout>
+        <LinearLayout
+            style="@style/SectionContainer"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+            <TextView
+                style="@style/SectionHeader"
+                android:text="@string/section_header_watchdog"/>
+            <ScrollView
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:fillViewport="true">
+                <TextView
+                    android:id="@+id/garageModeWatchdog"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:textSize="18sp"
+                    android:text="@string/no_results"/>
+            </ScrollView>
+        </LinearLayout>
+    </LinearLayout>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:orientation="vertical">
+        <LinearLayout
+            style="@style/SectionContainer"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:weightSum="5">
+            <TextView
+                style="@style/SectionHeader"
+                android:layout_weight="1"
+                android:text="@string/section_header_job_configuration"/>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_weight="1">
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1">
+                    <TextView
+                        style="@style/SpinnerLabel"
+                        android:text="@string/spinner_label_network_type"/>
+                    <LinearLayout
+                        style="@style/SectionContainer"
+                        android:layout_width="wrap_content"
+                        android:layout_height="match_parent">
+                        <Spinner
+                            style="@style/Spinner"
+                            android:id="@+id/networkType"/>
+                    </LinearLayout>
+                </LinearLayout>
+                <CheckBox
+                    style="@style/Checkbox"
+                    android:id="@+id/requirePersistedCheckbox"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:text="@string/checkbox_require_persisted"/>
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:weightSum="2">
+                <CheckBox
+                    style="@style/Checkbox"
+                    android:id="@+id/requireIdlenessCheckbox"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:text="@string/checkbox_require_idleness"/>
+                <CheckBox
+                    style="@style/Checkbox"
+                    android:id="@+id/requireChargingCheckbox"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:text="@string/checkbox_require_charging"/>
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:orientation="horizontal">
+                <TextView
+                    style="@style/SpinnerLabel"
+                    android:text="@string/spinner_label_job_duration"/>
+                <LinearLayout
+                    style="@style/SectionContainer"
+                    android:layout_width="wrap_content"
+                    android:layout_height="match_parent">
+                    <Spinner
+                        style="@style/Spinner"
+                        android:id="@+id/jobDuration"/>
+                </LinearLayout>
+            </LinearLayout>
+            <Button
+                style="@style/Button"
+                android:id="@+id/addJobBtn"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:text="@string/button_schedule_job"
+                android:layout_weight="1"/>
+        </LinearLayout>
+        <LinearLayout
+            style="@style/SectionContainer"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+            <TextView
+                style="@style/SectionHeader"
+                android:text="@string/section_header_jobs_list"/>
+            <ListView
+                android:id="@+id/jobsListView"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentTop="true"
+                android:focusable="false"/>
+        </LinearLayout>
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/tests/CarDiagnosticVerifier/res/values/strings.xml b/tests/GarageModeTestApp/res/values/colors.xml
similarity index 69%
copy from tests/CarDiagnosticVerifier/res/values/strings.xml
copy to tests/GarageModeTestApp/res/values/colors.xml
index ca6b33a..a962308 100644
--- a/tests/CarDiagnosticVerifier/res/values/strings.xml
+++ b/tests/GarageModeTestApp/res/values/colors.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- Copyright (C) 2018 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 <resources>
-    <string name="status_receiving">Receiving car diagnostic events...</string>
-    <string name="status_verifying">Verifying car diagnostic events...</string>
-    <string name="status_done">Done with verification</string>
+  <color name="colorPrimary">#3F51B5</color>
+  <color name="colorPrimaryDark">#303F9F</color>
+  <color name="colorAccent">#FF4081</color>
 </resources>
diff --git a/tests/GarageModeTestApp/res/values/strings.xml b/tests/GarageModeTestApp/res/values/strings.xml
new file mode 100644
index 0000000..7ad5d70
--- /dev/null
+++ b/tests/GarageModeTestApp/res/values/strings.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+  <string name="app_name">GarageMode Test App</string>
+
+  <string name="button_schedule_job">Schedule Job</string>
+  <string name="button_job_info">Job Info</string>
+  <string name="button_enter_garage_mode">Enter GarageMode</string>
+  <string name="button_exit_garage_mode">Exit GarageMode</string>
+
+  <string name="checkbox_require_persisted">Persisted?</string>
+  <string name="checkbox_require_idleness">Require idleness?</string>
+  <string name="checkbox_require_charging">Require charging?</string>
+
+  <string name="no_results">No Results</string>
+
+  <string name="section_header_garage_mode_config">GarageMode Settings</string>
+  <string name="section_header_job_configuration">Job Configuration</string>
+  <string name="section_header_jobs_list">Scheduled Jobs</string>
+  <string name="section_header_watchdog">Watchdog</string>
+
+  <string name="spinner_label_garage_mode_duration">GarageMode max duration:</string>
+  <string name="spinner_label_job_duration">Job duration:</string>
+  <string name="spinner_label_network_type">Network type:</string>
+
+  <string-array name="network_types_list">
+    <item>ANY</item>
+    <item>NONE</item>
+    <item>UNMETERED</item>
+  </string-array>
+
+  <string-array name="duration_list">
+    <item>1 second</item>
+    <item>5 seconds</item>
+    <item>10 seconds</item>
+    <item>30 seconds</item>
+    <item>1 minute</item>
+    <item>5 minutes</item>
+    <item>1 hour</item>
+  </string-array>
+</resources>
diff --git a/tests/GarageModeTestApp/res/values/styles.xml b/tests/GarageModeTestApp/res/values/styles.xml
new file mode 100644
index 0000000..92cb1c5
--- /dev/null
+++ b/tests/GarageModeTestApp/res/values/styles.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <style name="GarageModeTheme" parent="Theme.Car.Light.NoActionBar.Drawer">
+    <item name="android:textSize">24sp</item>
+  </style>
+  <style name="SectionContainer">
+    <!-- Customize your theme here. -->
+    <item name="android:background">@drawable/border</item>
+    <item name="android:padding">3dp</item>
+    <item name="android:layout_margin">5dp</item>
+  </style>
+  <style name="Button">
+    <item name="android:layout_margin">5dp</item>
+  </style>
+  <style name="Checkbox">
+    <item name="android:background">@drawable/border</item>
+  </style>
+  <style name="SpinnerLabel">
+    <item name="android:layout_width">wrap_content</item>
+    <item name="android:textStyle">bold</item>
+    <item name="android:gravity">center_vertical|end</item>
+    <item name="android:layout_height">match_parent</item>
+  </style>
+  <style name="Spinner">
+    <item name="android:layout_width">wrap_content</item>
+    <item name="android:layout_height">match_parent</item>
+  </style>
+  <style name="SectionHeader">
+    <item name="android:layout_width">match_parent</item>
+    <item name="android:layout_height">wrap_content</item>
+    <item name="android:textStyle">bold</item>
+    <item name="android:textSize">26sp</item>
+    <item name="android:layout_marginBottom">5dp</item>
+    <item name="android:gravity">center</item>
+  </style>
+  <style name="ListEntryField">
+    <item name="android:background">@drawable/border</item>
+    <item name="android:textSize">18sp</item>
+    <item name="android:scrollHorizontally">false</item>
+    <item name="android:layout_margin">5dp</item>
+    <item name="android:padding">3dp</item>
+  </style>
+</resources>
\ No newline at end of file
diff --git a/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/CarIdlenessTrackerWrapper.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/CarIdlenessTrackerWrapper.java
new file mode 100644
index 0000000..82a97e0
--- /dev/null
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/CarIdlenessTrackerWrapper.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.android.car.garagemode.testapp;
+
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * Class that works with com.android.server.job.controller.idle.CarDeviceIdlenessTracker
+ */
+public class CarIdlenessTrackerWrapper {
+    public static final Logger LOG = new Logger("CarIdlenessTrackerWrapper");
+
+    public static final String ACTION_GARAGE_MODE_ON =
+            "com.android.server.jobscheduler.GARAGE_MODE_ON";
+    public static final String ACTION_GARAGE_MODE_OFF =
+            "com.android.server.jobscheduler.GARAGE_MODE_OFF";
+
+    public static final String ACTION_FORCE_IDLE = "com.android.server.jobscheduler.FORCE_IDLE";
+    public static final String ACTION_UNFORCE_IDLE = "com.android.server.jobscheduler.UNFORCE_IDLE";
+
+    public static void sendBroadcastToEnterGarageMode(Context context) {
+        Intent i = new Intent();
+        i.setAction(ACTION_GARAGE_MODE_ON);
+        i.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_NO_ABORT);
+        context.sendBroadcast(i);
+    }
+
+    public static void sendBroadcastToExitGarageMode(Context context) {
+        Intent i = new Intent();
+        i.setAction(ACTION_GARAGE_MODE_OFF);
+        i.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_NO_ABORT);
+        context.sendBroadcast(i);
+    }
+}
diff --git a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/DishService.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/DishService.java
similarity index 76%
rename from tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/DishService.java
rename to tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/DishService.java
index c2758a8..5a87771 100644
--- a/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink/job/DishService.java
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/DishService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,20 +13,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.google.android.car.kitchensink.job;
+package com.google.android.car.garagemode.testapp;
 
 import android.app.job.JobParameters;
 import android.app.job.JobService;
 import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.Message;
-import android.util.Log;
 import android.util.SparseArray;
 
 import java.lang.ref.WeakReference;
 
 public class DishService extends JobService {
-    private static final String TAG = "JobScheduler_DishService";
+    private static final Logger LOG = new Logger("JobScheduler_DishService");
     private static final int DELAY_MS = 1000; // wash a plate every second!
 
     private static final int MSG_FINISHED = 0;
@@ -36,13 +35,13 @@
     public static final String EXTRA_DISH_COUNT = "dish_count";
 
     private final Handler mHandler = new Handler() {
-        private SparseArray<JobParameters> mTaskMap = new SparseArray<JobParameters>();
+        private SparseArray<JobParameters> mTaskMap = new SparseArray<>();
         @Override
         public void handleMessage(Message msg) {
             JobParameters job = (JobParameters) msg.obj;
             switch (msg.what) {
                 case MSG_FINISHED:
-                    Log.d(TAG, "Job done! " + job.getJobId());
+                    LOG.d("Job done! " + job.getJobId());
                     mTaskMap.remove(job.getJobId());
                     jobFinished(job, false);
                     break;
@@ -55,19 +54,19 @@
                     JobParameters job1 = mTaskMap.get(job.getJobId());
                     if (job1 != null) {
                         removeMessages(MSG_RUN_JOB, job1);
-                        Log.d(TAG, "cancelled job " + job1);
+                        LOG.d("cancelled job " + job1);
                         mTaskMap.remove(job.getJobId());
                     }
                     break;
                 default:
-                    Log.w(TAG, "Unknown message " + msg.what);
+                    LOG.w("Unknown message " + msg.what);
             }
         }
     };
 
     @Override
     public boolean onStopJob(JobParameters jobParameters) {
-        Log.d(TAG, "onStopJob " + jobParameters);
+        LOG.d("onStopJob " + jobParameters);
         Message msg = mHandler.obtainMessage(MSG_CANCEL_JOB, 0, 0, jobParameters);
         mHandler.sendMessage(msg);
         return false;
@@ -75,7 +74,7 @@
 
     @Override
     public boolean onStartJob(final JobParameters jobParameters) {
-        Log.d(TAG, "onStartJob " + jobParameters);
+        LOG.d("onStartJob " + jobParameters);
         Message msg = mHandler.obtainMessage(MSG_RUN_JOB, 0, 0, jobParameters);
         mHandler.sendMessage(msg);
         return true;
@@ -87,7 +86,7 @@
         private final int mMyDishNum;
 
 
-        public DishWasherTask(Handler handler, JobParameters jobParameters, int dishNum) {
+        DishWasherTask(Handler handler, JobParameters jobParameters, int dishNum) {
             mHandler = new WeakReference<Handler>(handler);
             mJobParameter = jobParameters;
             mMyDishNum = dishNum;
@@ -97,7 +96,7 @@
         protected Boolean doInBackground(Void... infos) {
             int dishTotal = mJobParameter.getExtras().getInt(EXTRA_DISH_COUNT);
 
-            Log.d(TAG, "jobId: " + mJobParameter.getJobId() + " totalDish: " + dishTotal
+            LOG.d("jobId: " + mJobParameter.getJobId() + " totalDish: " + dishTotal
                     + " washing: #" + mMyDishNum);
             wash();
             if (mMyDishNum >= dishTotal - 1) {
@@ -109,17 +108,16 @@
 
         @Override
         protected void onPostExecute(Boolean result) {
-            if (mHandler.get() == null) {
+            final Handler handler = mHandler.get();
+            if (handler == null) {
                 return;
             }
             if (result) {
-                Message msg = mHandler.get().obtainMessage(MSG_RUN_JOB,
-                        mMyDishNum +1, 0, mJobParameter);
-                mHandler.get().sendMessageDelayed(msg, DELAY_MS);
+                Message msg = handler.obtainMessage(MSG_RUN_JOB, mMyDishNum + 1, 0, mJobParameter);
+                handler.sendMessageDelayed(msg, DELAY_MS);
             } else {
-                Message msg = mHandler.get().obtainMessage(MSG_FINISHED, 0,
-                        0, mJobParameter);
-                mHandler.get().sendMessage(msg);
+                Message msg = handler.obtainMessage(MSG_FINISHED, 0, 0, mJobParameter);
+                handler.sendMessage(msg);
             }
         }
 
diff --git a/car-support-lib/src/android/support/car/CarManagerBase.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/IncarTestingFragment.java
similarity index 73%
rename from car-support-lib/src/android/support/car/CarManagerBase.java
rename to tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/IncarTestingFragment.java
index 79a28f8..22b460e 100644
--- a/car-support-lib/src/android/support/car/CarManagerBase.java
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/IncarTestingFragment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,13 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package com.google.android.car.garagemode.testapp;
 
-package android.support.car;
+import androidx.fragment.app.Fragment;
 
-/**
- * Common interface for Car*Manager
- * @hide
- */
-public interface CarManagerBase {
-    void onCarDisconnected();
+public class IncarTestingFragment extends Fragment {
+
 }
diff --git a/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/JobInfoRowArrayAdapter.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/JobInfoRowArrayAdapter.java
new file mode 100644
index 0000000..0e26fe7
--- /dev/null
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/JobInfoRowArrayAdapter.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.android.car.garagemode.testapp;
+
+import static android.graphics.Typeface.BOLD;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING;
+import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
+
+import android.app.job.JobInfo;
+import android.content.Context;
+import android.graphics.Color;
+import android.net.NetworkRequest;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.StyleSpan;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.TextView;
+
+import java.util.List;
+
+public class JobInfoRowArrayAdapter extends ArrayAdapter<JobInfo> {
+    public static final Logger LOG = new Logger("JobInfoRowArrayAdapter");
+    private class ViewHolder {
+        TextView mJobIDView;
+
+        TextView mRequiredNetworkView;
+        TextView mIsPeriodicView;
+        TextView mIsPersistedView;
+        TextView mIsPrefetchView;
+
+        TextView mIsRequireBatteryNotLowView;
+        TextView mIsRequireChargingView;
+        TextView mIsRequireDeviceIdleView;
+        TextView mIsRequireStorageNotLowView;
+
+        JobInfo mInfo;
+    }
+    private LayoutInflater mInflater;
+
+    public JobInfoRowArrayAdapter(Context context, int resource, List<JobInfo> objects) {
+        super(context, resource, objects);
+        mInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        View row = convertView;
+        final JobInfo info = getItem(position);
+
+        ViewHolder holder;
+
+        if (row == null) {
+            row = mInflater.inflate(R.layout.job_info_row, parent, false);
+
+            holder = new ViewHolder();
+            holder.mJobIDView = row.findViewById(R.id.jobId);
+
+            holder.mRequiredNetworkView = row.findViewById(R.id.requiredNetwork);
+            holder.mIsPeriodicView = row.findViewById(R.id.isPeriodic);
+            holder.mIsPersistedView = row.findViewById(R.id.isPersisted);
+            holder.mIsPrefetchView = row.findViewById(R.id.isPrefetch);
+
+            holder.mIsRequireBatteryNotLowView = row.findViewById(R.id.isRequireBatteryNotLow);
+            holder.mIsRequireChargingView = row.findViewById(R.id.isRequireCharging);
+            holder.mIsRequireDeviceIdleView = row.findViewById(R.id.isRequireDeviceIdle);
+            holder.mIsRequireStorageNotLowView = row.findViewById(R.id.isRequireStorageNotLow);
+
+            holder.mInfo = info;
+
+            row.setTag(holder);
+        } else {
+            holder = (ViewHolder) row.getTag();
+            holder.mInfo = info;
+        }
+
+        holder.mJobIDView.setText("ID: " + info.getId());
+
+        setNetworkColoredText(holder.mRequiredNetworkView, "Network", info.getRequiredNetwork());
+
+        setColoredText(holder.mIsPeriodicView, "Periodic", info.isPeriodic());
+        setColoredText(holder.mIsPersistedView, "Persisted", info.isPersisted());
+        setColoredText(holder.mIsPrefetchView, "Prefetch", info.isPrefetch());
+
+        setColoredText(
+                holder.mIsRequireBatteryNotLowView,
+                "BatteryNotLow",
+                info.isRequireBatteryNotLow());
+        setColoredText(holder.mIsRequireChargingView, "Charging", info.isRequireCharging());
+        setColoredText(holder.mIsRequireDeviceIdleView, "DeviceIdle", info.isRequireDeviceIdle());
+        setColoredText(
+                holder.mIsRequireStorageNotLowView,
+                "StorageNotLow",
+                info.isRequireStorageNotLow());
+
+        return row;
+    }
+
+    private void setColoredText(TextView view, String label, boolean condition) {
+        SpannableStringBuilder sb;
+        String value = (condition ? "Yes" : "No");
+        int color = (condition ? Color.GREEN : Color.RED);
+        sb = new SpannableStringBuilder(label + ": " + value);
+        applyColorAndBoldness(
+                sb, color, label.length() + 2, label.length() + 2 + value.length());
+        view.setText(sb);
+    }
+
+    private void setNetworkColoredText(TextView view, String label, NetworkRequest networkReq) {
+        String networkType = getNetworkType(networkReq);
+        SpannableStringBuilder sb = new SpannableStringBuilder(label + ": " + networkType);
+        applyColorAndBoldness(
+                sb, Color.GREEN, label.length() + 2, label.length() + 2 + networkType.length());
+        view.setText(sb);
+    }
+
+    private void applyColorAndBoldness(SpannableStringBuilder sb, int color, int start, int end) {
+        sb.setSpan(new ForegroundColorSpan(color), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+        sb.setSpan(new StyleSpan(BOLD), start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+    }
+
+    private String getNetworkType(NetworkRequest networkRequest) {
+        if (networkRequest == null) {
+            return "None";
+        } else if (networkRequest.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) {
+            return "Unmetered";
+        } else if (networkRequest.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING)) {
+            return "Not roaming";
+        } else if (networkRequest.networkCapabilities.hasTransport(TRANSPORT_CELLULAR)) {
+            return "Cellular";
+        } else {
+            return "Any";
+        }
+    }
+}
diff --git a/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/JobSchedulerWrapper.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/JobSchedulerWrapper.java
new file mode 100644
index 0000000..a2d1edd
--- /dev/null
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/JobSchedulerWrapper.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.android.car.garagemode.testapp;
+
+import android.app.job.JobInfo;
+import android.app.job.JobScheduler;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Handler;
+import android.os.PersistableBundle;
+import android.widget.ListView;
+import android.widget.Toast;
+
+import java.util.LinkedList;
+import java.util.List;
+
+class JobSchedulerWrapper {
+    private static final Logger LOG = new Logger("JobSchedulerWrapper");
+    private static final boolean DEBUG = false;
+
+    private static final String ANDROID_COMPONENT_PREFIX = "android/com.android.";
+    private static final String ANDROID_SETTINGS_PREFIX =
+            "com.android.settings/com.android.settings.";
+
+    private static final String PREFS_FILE_NAME = "garage_mode_job_scheduler";
+    private static final String PREFS_NEXT_JOB_ID = "next_job_id";
+
+    private JobScheduler mJobScheduler;
+    private Context mContext;
+    private ListView mListView;
+    private Handler mHandler;
+    private Watchdog mWatchdog;
+    private Runnable mRefreshWorker;
+
+    private List<JobInfo> mLastJobsList;
+    private List<JobInfo> mNewJobs;
+    private List<JobInfo> mCompletedJobs;
+    private JobInfoRowArrayAdapter mJobsListAdapter;
+
+    JobSchedulerWrapper(Context context, ListView listView) {
+        mContext = context;
+        mJobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
+        mListView = listView;
+
+        mLastJobsList = new LinkedList<>();
+        mNewJobs = new LinkedList<>();
+        mCompletedJobs = new LinkedList<>();
+        mJobsListAdapter = new JobInfoRowArrayAdapter(mContext, mListView.getId(), mLastJobsList);
+        mListView.setAdapter(mJobsListAdapter);
+
+        updateJobs();
+        if (DEBUG) {
+            printJobsOnce(mJobScheduler.getAllPendingJobs());
+        }
+    }
+
+    public void setWatchdog(Watchdog watchdog) {
+        mWatchdog = watchdog;
+    }
+
+    public synchronized void refresh() {
+        updateJobs();
+
+        reportNewJobs();
+        reportCompletedJobs();
+
+        if (mNewJobs.size() > 0 || mCompletedJobs.size() > 0) {
+            updateListView();
+        }
+    }
+
+    public void start() {
+        LOG.d("Starting JobSchedulerWrapper");
+        mHandler = new Handler();
+        mRefreshWorker = () -> {
+            refresh();
+            mHandler.postDelayed(mRefreshWorker, 1000);
+        };
+        mHandler.postDelayed(mRefreshWorker, 1000);
+    }
+
+    public void stop() {
+        LOG.d("Stopping JobSchedulerWrapper");
+        mHandler.removeCallbacks(mRefreshWorker);
+        mRefreshWorker = null;
+        mHandler = null;
+        mWatchdog = null;
+    }
+
+    public void scheduleAJob(
+            int amountOfSeconds,
+            int networkType,
+            boolean isChargingRequired,
+            boolean isIdleRequired) {
+        ComponentName jobComponentName = new ComponentName(mContext, DishService.class);
+        SharedPreferences prefs = mContext
+                .getSharedPreferences(PREFS_FILE_NAME, Context.MODE_PRIVATE);
+        int jobId = prefs.getInt(PREFS_NEXT_JOB_ID, 0);
+        PersistableBundle bundle = new PersistableBundle();
+
+        bundle.putInt(DishService.EXTRA_DISH_COUNT, amountOfSeconds);
+
+        while (checkIdForExistence(jobId)) {
+            jobId++;
+        }
+
+        JobInfo jobInfo = new JobInfo.Builder(jobId, jobComponentName)
+                .setRequiresCharging(isChargingRequired)
+                .setRequiresDeviceIdle(isIdleRequired)
+                .setExtras(bundle)
+                .setRequiredNetworkType(networkType)
+                .build();
+
+        mJobScheduler.schedule(jobInfo);
+        Toast.makeText(
+                mContext,
+                "Scheduled new job with id: " + jobInfo.getId(), Toast.LENGTH_LONG).show();
+
+        LOG.d("Scheduled a job: " + jobInfo);
+        SharedPreferences.Editor editor = prefs.edit();
+        editor.putInt(PREFS_NEXT_JOB_ID, jobId + 1);
+        editor.commit();
+
+        refresh();
+    }
+
+    private void updateListView() {
+        int index = mListView.getFirstVisiblePosition();
+        mJobsListAdapter.notifyDataSetChanged();
+        mListView.smoothScrollToPosition(index);
+    }
+
+    private boolean checkIdForExistence(int jobId) {
+        for (JobInfo job : mJobScheduler.getAllPendingJobs()) {
+            if (job.getId() == jobId) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private void printJobsOnce(List<JobInfo> list) {
+        LOG.d("=========================================================");
+        for (JobInfo job : list) {
+            LOG.d("Job(" + job.getId() + ") will run " + job.getService());
+        }
+    }
+
+    private void reportNewJobs() {
+        for (JobInfo job : mNewJobs) {
+            if (mWatchdog != null) {
+                mWatchdog.logEvent("New job with id(" + job.getId() + ") has been scheduled");
+            }
+        }
+    }
+
+    private void reportCompletedJobs() {
+        for (JobInfo job : mCompletedJobs) {
+            if (mWatchdog != null) {
+                mWatchdog.logEvent("Job with id(" + job.getId() + ") has been completed.");
+            }
+        }
+    }
+
+    private synchronized void updateJobs() {
+        List<JobInfo> currentJobs = mJobScheduler.getAllPendingJobs();
+
+        if (DEBUG) {
+            printJobsOnce(currentJobs);
+            printJobsOnce(mLastJobsList);
+        }
+
+        removeSystemJobsFromList(currentJobs);
+
+        mNewJobs = newJobsSince(mLastJobsList, currentJobs);
+        mCompletedJobs = completedJobsSince(mLastJobsList, currentJobs);
+
+        for (JobInfo job : mNewJobs) {
+            mLastJobsList.add(job);
+        }
+
+        for (JobInfo job : mCompletedJobs) {
+            mLastJobsList.remove(job);
+        }
+    }
+
+    private synchronized List<JobInfo> newJobsSince(List<JobInfo> oldList, List<JobInfo> newList) {
+        return findDiffBetween(newList, oldList);
+    }
+
+    private synchronized List<JobInfo> completedJobsSince(
+            List<JobInfo> oldList, List<JobInfo> newList) {
+        return findDiffBetween(oldList, newList);
+    }
+
+    private synchronized List<JobInfo> findDiffBetween(
+            List<JobInfo> fromList, List<JobInfo> toList) {
+        List<JobInfo> diffList = new LinkedList<>();
+        for (JobInfo fromJob : fromList) {
+            if (!toList.contains(fromJob)) {
+                diffList.add(fromJob);
+            }
+        }
+        return diffList;
+    }
+
+    private synchronized void removeSystemJobsFromList(List<JobInfo> list) {
+        List<JobInfo> jobsToRemove = new LinkedList<>();
+        for (JobInfo job : list) {
+            if (isSystemService(job)) {
+                jobsToRemove.add(job);
+            }
+        }
+        for (JobInfo job : jobsToRemove) {
+            list.remove(job);
+        }
+    }
+
+    private boolean isSystemService(JobInfo job) {
+        if (job.getService().toString().contains(ANDROID_COMPONENT_PREFIX)) {
+            return true;
+        }
+        if (job.getService().toString().contains(ANDROID_SETTINGS_PREFIX)) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/Logger.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/Logger.java
new file mode 100644
index 0000000..192eec3
--- /dev/null
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/Logger.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.android.car.garagemode.testapp;
+
+import android.util.Log;
+
+class Logger {
+    private final String mTag;
+    private final String mPrefix;
+
+    Logger(String prefix) {
+        mTag = "GarageModeTestApp";
+        mPrefix = prefix;
+    }
+
+    /** Passing message further to Log.v() */
+    public void v(String msg) {
+        Log.v(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.v() */
+    public void v(String msg, Exception ex) {
+        Log.v(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.i() */
+    public void i(String msg) {
+        Log.i(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.i() */
+    public void i(String msg, Exception ex) {
+        Log.i(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.d() */
+    public void d(String msg) {
+        Log.d(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.d() */
+    public void d(String msg, Exception ex) {
+        Log.d(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.w() */
+    public void w(String msg, Exception ex) {
+        Log.w(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.w() */
+    public void w(String msg) {
+        Log.w(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.e() */
+    public void e(String msg) {
+        Log.e(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.e() */
+    public void e(String msg, Exception ex) {
+        Log.e(mTag, buildMessage(msg), ex);
+    }
+
+    /** Passing message further to Log.e() */
+    public void wtf(String msg) {
+        Log.wtf(mTag, buildMessage(msg));
+    }
+
+    /** Passing message further to Log.e() */
+    public void wtf(String msg, Exception ex) {
+        Log.wtf(mTag, buildMessage(msg), ex);
+    }
+
+    private String buildMessage(String msg) {
+        return String.format("[%s]: %s", mPrefix, msg);
+    }
+}
diff --git a/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/MainActivity.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/MainActivity.java
new file mode 100644
index 0000000..55b7c03
--- /dev/null
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/MainActivity.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.android.car.garagemode.testapp;
+
+import android.os.Bundle;
+
+import androidx.car.drawer.CarDrawerActivity;
+import androidx.car.drawer.CarDrawerAdapter;
+import androidx.car.drawer.DrawerItemViewHolder;
+import androidx.fragment.app.Fragment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MainActivity extends CarDrawerActivity {
+    private static final Logger LOG = new Logger("MainActivity");
+
+    private final List<MenuEntry> mMenuEntries = new ArrayList<MenuEntry>() {
+        {
+            add("Offcar testing", OffcarTestingFragment.class);
+            add("Incar testing", IncarTestingFragment.class);
+            add("Quit", MainActivity.this::finish);
+        }
+
+        <T extends Fragment> void add(String text, Class<T> clazz) {
+            add(new FragmentMenuEntry(text, clazz));
+        }
+
+        void add(String text, ClickHandler onClick) {
+            add(new OnClickMenuEntry(text, onClick));
+        }
+    };
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setMainContent(R.layout.activity_content);
+        mMenuEntries.get(0).onClick();
+        getDrawerController().setRootAdapter(new DrawerAdapter());
+    }
+
+    private interface ClickHandler {
+        void onClick();
+    }
+
+    private abstract static class MenuEntry implements ClickHandler {
+        abstract String getText();
+    }
+
+    private final class OnClickMenuEntry extends MenuEntry {
+        private final String mText;
+        private final ClickHandler mClickHandler;
+
+        OnClickMenuEntry(String text, ClickHandler clickHandler) {
+            mText = text;
+            mClickHandler = clickHandler;
+        }
+
+        @Override
+        String getText() {
+            return mText;
+        }
+
+        @Override
+        public void onClick() {
+            mClickHandler.onClick();
+        }
+    }
+
+    private final class FragmentMenuEntry<T extends Fragment> extends MenuEntry {
+        private final class FragmentClassOrInstance<T extends Fragment> {
+            final Class<T> mClazz;
+            T mFragment = null;
+
+            FragmentClassOrInstance(Class<T> clazz) {
+                mClazz = clazz;
+            }
+
+            T getFragment() {
+                if (mFragment == null) {
+                    try {
+                        mFragment = mClazz.newInstance();
+                    } catch (InstantiationException | IllegalAccessException e) {
+                        LOG.e("unable to create fragment", e);
+                    }
+                }
+                return mFragment;
+            }
+        }
+
+        private final String mText;
+        private final FragmentClassOrInstance<T> mFragment;
+
+        FragmentMenuEntry(String text, Class<T> clazz) {
+            mText = text;
+            mFragment = new FragmentClassOrInstance<>(clazz);
+        }
+
+        @Override
+        String getText() {
+            return mText;
+        }
+
+        @Override
+        public void onClick() {
+            Fragment fragment = mFragment.getFragment();
+            if (fragment != null) {
+                MainActivity.this.showFragment(fragment);
+            } else {
+                LOG.e("cannot show fragment for " + getText());
+            }
+        }
+    }
+
+    private void showFragment(Fragment fragment) {
+        getSupportFragmentManager().beginTransaction()
+                .replace(R.id.activity_content, fragment)
+                .commit();
+    }
+
+    private final class DrawerAdapter extends CarDrawerAdapter {
+        DrawerAdapter() {
+            super(MainActivity.this, true /* showDisabledOnListOnEmpty */);
+            setTitle(getString(R.string.app_name));
+        }
+
+        @Override
+        protected int getActualItemCount() {
+            return mMenuEntries.size();
+        }
+
+        @Override
+        protected void populateViewHolder(DrawerItemViewHolder holder, int position) {
+            holder.getTitleView().setText(mMenuEntries.get(position).getText());
+            holder.itemView.setOnClickListener(v -> onItemClick(holder.getAdapterPosition()));
+        }
+
+        private void onItemClick(int position) {
+            if ((position < 0) || (position >= mMenuEntries.size())) {
+                LOG.wtf("Unknown menu item: " + position);
+                return;
+            }
+
+            mMenuEntries.get(position).onClick();
+
+            getDrawerController().closeDrawer();
+        }
+    }
+}
diff --git a/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/OffcarTestingFragment.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/OffcarTestingFragment.java
new file mode 100644
index 0000000..6d7a8ce
--- /dev/null
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/OffcarTestingFragment.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.android.car.garagemode.testapp;
+
+import android.app.job.JobInfo;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.ListView;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+public class OffcarTestingFragment extends Fragment implements AdapterView.OnItemSelectedListener {
+    private static final Logger LOG = new Logger("OffcarTestingFragment");
+
+    private String mNetworkRequirement;
+    private int mJobDurationSelected;
+
+    private CheckBox mRequirePersisted;
+    private CheckBox mRequireIdleness;
+    private CheckBox mRequireCharging;
+
+    private Spinner mJobDurationSpinner;
+    private Spinner mNetworkTypeSpinner;
+
+    private TextView mWatchdogTextView;
+    private ListView mJobsListView;
+
+    private Button mEnterGarageModeBtn;
+    private Button mExitGarageModeBtn;
+    private Button mAddJobBtn;
+
+    private Watchdog mWatchdog;
+    private JobSchedulerWrapper mJobSchedulerWrapper;
+
+    @Nullable
+    @Override
+    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
+            @Nullable Bundle savedInstanceState) {
+        View v = inflater.inflate(R.layout.offcar_testing, container, false);
+
+        defineViewsFromFragment(v);
+
+        populateNetworkTypeSpinner();
+        populateJobDurationSpinner();
+
+        defineButtonActions();
+
+        return v;
+    }
+
+    @Override
+    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+        String value = (String) parent.getItemAtPosition(pos);
+        switch (parent.getId()) {
+            case R.id.networkType:
+                applyNetworkTypeRequirement(value);
+                break;
+            case R.id.jobDuration:
+                applyJobDuration(value);
+                break;
+        }
+    }
+
+    @Override
+    public void onNothingSelected(AdapterView<?> adapterView) {
+
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        LOG.d("Resuming app");
+
+        mWatchdog = new Watchdog(getContext(), mWatchdogTextView);
+        mWatchdog.start();
+        mJobSchedulerWrapper = new JobSchedulerWrapper(
+                getContext(),
+                mJobsListView);
+        mJobSchedulerWrapper.setWatchdog(mWatchdog);
+        mJobSchedulerWrapper.start();
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        LOG.d("Pausing app");
+        mWatchdog.stop();
+        mWatchdog = null;
+        mJobSchedulerWrapper.stop();
+        mJobSchedulerWrapper = null;
+    }
+
+    private void defineViewsFromFragment(View v) {
+        mRequirePersisted = v.findViewById(R.id.requirePersistedCheckbox);
+        mRequireIdleness = v.findViewById(R.id.requireIdlenessCheckbox);
+        mRequireCharging = v.findViewById(R.id.requireChargingCheckbox);
+
+        mJobDurationSpinner = v.findViewById(R.id.jobDuration);
+        mNetworkTypeSpinner = v.findViewById(R.id.networkType);
+
+        mWatchdogTextView = v.findViewById(R.id.garageModeWatchdog);
+        mJobsListView = v.findViewById(R.id.jobsListView);
+
+        mEnterGarageModeBtn = v.findViewById(R.id.enterGarageModeBtn);
+        mExitGarageModeBtn = v.findViewById(R.id.exitGarageModeBtn);
+        mAddJobBtn = v.findViewById(R.id.addJobBtn);
+    }
+
+    private void defineButtonActions() {
+        mEnterGarageModeBtn.setOnClickListener(view -> onEnterGarageModeBtnClick());
+        mExitGarageModeBtn.setOnClickListener(view -> onExitGarageModeBtnClick());
+        mAddJobBtn.setOnClickListener(view -> onAddJobBtnClick());
+    }
+
+    private void onEnterGarageModeBtnClick() {
+        LOG.d("Entering garage mode...");
+        CarIdlenessTrackerWrapper.sendBroadcastToEnterGarageMode(getContext());
+        if (mWatchdog != null) {
+            mWatchdog.logEvent("Entering garage mode...");
+        }
+    }
+
+    private void onExitGarageModeBtnClick() {
+        LOG.d("Exiting garage mode...");
+        CarIdlenessTrackerWrapper.sendBroadcastToExitGarageMode(getContext());
+        if (mWatchdog != null) {
+            mWatchdog.logEvent("Exiting garage mode...");
+        }
+    }
+
+    private void onAddJobBtnClick() {
+        LOG.d("Adding a job...");
+        if (mJobSchedulerWrapper == null) {
+            LOG.e("JobSchedulerWrapper is not initialized yet. Try again later.");
+            return;
+        }
+        mJobSchedulerWrapper.scheduleAJob(
+                mJobDurationSelected,
+                parseNetworkRequirement(),
+                mRequireCharging.isChecked(),
+                mRequireIdleness.isChecked());
+    }
+
+    private void applyJobDuration(String value) {
+        String metric = value.split(" ")[1];
+        mJobDurationSelected = Integer.parseInt(value.split(" ")[0]);
+        if (metric.startsWith("minute")) {
+            mJobDurationSelected *= 60;
+        }
+        if (metric.startsWith("hour")) {
+            mJobDurationSelected *= 3600;
+        }
+        mWatchdog.logEvent("Job duration is now: " + mJobDurationSelected + "s");
+    }
+
+    private void applyNetworkTypeRequirement(String value) {
+        mNetworkRequirement = value;
+        mWatchdog.logEvent("Job network requirement changed to: " + value);
+    }
+
+    private int parseNetworkRequirement() {
+        if (mNetworkRequirement.equals("NONE")) {
+            return JobInfo.NETWORK_TYPE_NONE;
+        }
+        if (mNetworkRequirement.equals("UNMETERED")) {
+            return JobInfo.NETWORK_TYPE_UNMETERED;
+        }
+        if (mNetworkRequirement.equals("ANY")) {
+            return JobInfo.NETWORK_TYPE_ANY;
+        }
+        return JobInfo.NETWORK_BYTES_UNKNOWN;
+    }
+
+    private void populateJobDurationSpinner() {
+        populateSpinner(
+                mJobDurationSpinner,
+                ArrayAdapter.createFromResource(
+                        getContext(),
+                        R.array.duration_list,
+                        android.R.layout.simple_spinner_item));
+    }
+
+    private void populateNetworkTypeSpinner() {
+        populateSpinner(
+                mNetworkTypeSpinner,
+                ArrayAdapter.createFromResource(
+                        getContext(),
+                        R.array.network_types_list,
+                        android.R.layout.simple_spinner_item));
+    }
+
+    private void populateSpinner(Spinner spinner, ArrayAdapter adapter) {
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        spinner.setAdapter(adapter);
+        spinner.setOnItemSelectedListener(this);
+    }
+}
diff --git a/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/Watchdog.java b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/Watchdog.java
new file mode 100644
index 0000000..18ce8fa
--- /dev/null
+++ b/tests/GarageModeTestApp/src/com/google/android/car/garagemode/testapp/Watchdog.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.android.car.garagemode.testapp;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Handler;
+import android.widget.TextView;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.LinkedList;
+
+public class Watchdog {
+    private static final Logger LOG = new Logger("Watchdog");
+
+    private static final String PREFS_FILE_NAME = "garage_mode_watchdog";
+    private static final String PREFS_EVENTS_LIST = "events_list";
+    private static final String PREFS_EVENTS_LIST_SEPARATOR = "\n";
+    // TODO(serikb): Convert TextView to ListView with per row coloring
+    private TextView mView;
+    private LinkedList<String> mEvents;
+    private Handler mWatchdogHandler;
+    private Runnable mRefreshLoop;
+    private SharedPreferences mSharedPrefs;
+
+    public Watchdog(Context context, TextView view) {
+        this(
+                context,
+                view,
+                context.getSharedPreferences(PREFS_FILE_NAME, Context.MODE_PRIVATE));
+    }
+
+    public Watchdog(Context context, TextView view, SharedPreferences prefs) {
+        mView = view;
+        mSharedPrefs = prefs;
+        mEvents = getEventsFromSharedPrefs(prefs);
+    }
+
+    public void logEvent(String s) {
+        Date date = new Date();
+        SimpleDateFormat dateFormat = new SimpleDateFormat("[yyyy-MM-dd hh:mm:ss]");
+        mEvents.addFirst(dateFormat.format(date) + " " + s);
+        if (mEvents.size() > 10000) {
+            mEvents.pollLast();
+        }
+        saveEventsToSharedPrefs(mSharedPrefs, mEvents);
+    }
+
+    public synchronized String getEventsAsText() {
+        return String.join("\n", mEvents);
+    }
+
+    public synchronized void refresh() {
+        mView.setText(getEventsAsText());
+    }
+
+    public void start() {
+        LOG.d("Starting Watchdog");
+        mWatchdogHandler = new Handler();
+        mRefreshLoop = () -> {
+            refresh();
+            mWatchdogHandler.postDelayed(mRefreshLoop, 500);
+        };
+        mWatchdogHandler.postDelayed(mRefreshLoop, 500);
+    }
+
+    public void stop() {
+        LOG.d("Stopping Watchdog");
+        mWatchdogHandler.removeCallbacks(mRefreshLoop);
+        mWatchdogHandler = null;
+        mRefreshLoop = null;
+    }
+
+    private LinkedList<String> getEventsFromSharedPrefs(SharedPreferences prefs) {
+        LinkedList<String> list = new LinkedList<>();
+        String file = prefs.getString(PREFS_EVENTS_LIST, "");
+        for (String line : file.split(PREFS_EVENTS_LIST_SEPARATOR)) {
+            list.add(line);
+        }
+        return list;
+    }
+
+    private void saveEventsToSharedPrefs(SharedPreferences prefs, LinkedList<String> list) {
+        String file = "";
+        for (String item : list) {
+            if (!file.isEmpty()) {
+                file += PREFS_EVENTS_LIST_SEPARATOR + item;
+            } else {
+                file += item;
+            }
+        }
+        SharedPreferences.Editor editor = prefs.edit();
+        editor.putString(PREFS_EVENTS_LIST, file);
+        editor.commit();
+    }
+}
diff --git a/tests/UxRestrictionsSample/AndroidManifest.xml b/tests/UxRestrictionsSample/AndroidManifest.xml
index 4c702ca..43a6362 100644
--- a/tests/UxRestrictionsSample/AndroidManifest.xml
+++ b/tests/UxRestrictionsSample/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- Copyright (C) 2018 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,17 +14,21 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.google.android.car.uxr.sample" android:sharedUserId="android.uid.system">
+          package="com.google.android.car.uxr.sample" android:sharedUserId="android.uid.system">
 
-    <uses-permission android:name="android.car.permission.CAR_DRIVING_STATE" />
+    <uses-permission android:name="android.car.permission.CAR_DRIVING_STATE"/>
 
     <application android:label="UxRestrictions Sample">
-        <activity android:name=".MainActivity">
+        <activity android:name=".MainActivity" android:theme="@style/Theme.Car.NoActionBar">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
             <meta-data android:name="distractionOptimized" android:value="true"/>
         </activity>
+        <activity android:name=".SampleMessageActivity"
+                  android:theme="@style/Theme.Car.NoActionBar">
+            <meta-data android:name="distractionOptimized" android:value="true"/>
+        </activity>
     </application>
 </manifest>
diff --git a/tests/UxRestrictionsSample/res/layout/activity_sample_message.xml b/tests/UxRestrictionsSample/res/layout/activity_sample_message.xml
new file mode 100644
index 0000000..20c6465
--- /dev/null
+++ b/tests/UxRestrictionsSample/res/layout/activity_sample_message.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<androidx.car.moderator.SpeedBumpView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+        <Button
+            android:id="@+id/home_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/return_home"
+            android:textAllCaps="false"
+            android:textAppearance="?android:textAppearanceLarge"/>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+            <androidx.car.widget.PagedListView
+                android:id="@+id/paged_list_view"
+                android:layout_height="match_parent"
+                android:layout_width="wrap_content"
+                android:layout_weight="4"/>
+        </LinearLayout>
+    </LinearLayout>
+</androidx.car.moderator.SpeedBumpView>
diff --git a/tests/UxRestrictionsSample/res/layout/main_activity.xml b/tests/UxRestrictionsSample/res/layout/main_activity.xml
index ec0d226..695e93b 100644
--- a/tests/UxRestrictionsSample/res/layout/main_activity.xml
+++ b/tests/UxRestrictionsSample/res/layout/main_activity.xml
@@ -17,7 +17,6 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
-
     <LinearLayout
         android:orientation="horizontal"
         android:layout_width="match_parent"
@@ -27,41 +26,101 @@
             android:layout_height="match_parent"
             android:layout_width="0dp"
             android:layout_weight="1"
-            android:orientation="vertical"
-            android:gravity="center">
+            android:orientation="vertical">
+
+            <TextView
+                android:text="@string/status_header"
+                android:layout_gravity="center"
+                android:padding="@dimen/section_padding"
+                android:textSize="@dimen/header_text_size"
+                android:layout_width="match_parent"
+                android:textAppearance="?android:textAppearanceLarge"
+                android:layout_height="wrap_content" />
+
             <TextView
                 android:id="@+id/driving_state"
+                android:text="@string/driving_state"
+                android:textSize="@dimen/info_text_size"
                 android:layout_gravity="center"
+                android:padding="@dimen/section_padding"
                 android:layout_width="match_parent"
                 android:textAppearance="?android:textAppearanceLarge"
                 android:layout_height="wrap_content" />
+
             <TextView
                 android:id="@+id/do_status"
-                android:layout_gravity="center"
+                android:text="@string/is_do_reqd"
+                android:textSize="@dimen/info_text_size"
+                android:padding="@dimen/section_padding"
                 android:layout_width="match_parent"
                 android:textAppearance="?android:textAppearanceLarge"
                 android:layout_height="wrap_content" />
+
             <TextView
                 android:id="@+id/uxr_status"
-                android:layout_gravity="center"
+                android:text="@string/active_restrictions"
+                android:padding="@dimen/section_padding"
+                android:textSize="@dimen/info_text_size"
                 android:layout_width="match_parent"
                 android:textAppearance="?android:textAppearanceLarge"
                 android:layout_height="wrap_content" />
-            <Button
-                android:id="@+id/toggle_status"
+
+            <View
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:text="Disable Ux Restrictions"
-                android:textSize="32sp"/>
+                android:layout_height="1dp"
+                android:padding="@dimen/section_padding"
+                android:layout_marginBottom="10dp"
+                android:background="@android:color/darker_gray"/>
+
+            <TextView
+                android:text="@string/action_header"
+                android:padding="@dimen/section_padding"
+                android:textSize="@dimen/header_text_size"
+                android:layout_width="match_parent"
+                android:textAppearance="?android:textAppearanceLarge"
+                android:layout_height="wrap_content" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+                <Button
+                    android:id="@+id/toggle_status"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:padding="@dimen/section_padding"
+                    android:text="@string/disable_uxr"
+                    android:textAllCaps="false"
+                    android:textSize="@dimen/info_text_size" />
+            </LinearLayout>
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginTop="@dimen/section_padding"
+                android:layout_marginBottom="10dp"
+                android:background="@android:color/darker_gray"/>
+
+            <TextView
+                android:text="@string/sample_header"
+                android:padding="@dimen/section_padding"
+                android:textSize="@dimen/header_text_size"
+                android:layout_width="match_parent"
+                android:textAppearance="?android:textAppearanceLarge"
+                android:layout_height="wrap_content" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+                <Button
+                    android:id="@+id/launch_message"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/sample_msg_activity"
+                    android:textAllCaps="false"
+                    android:textSize="@dimen/info_text_size" />
+            </LinearLayout>
         </LinearLayout>
-
-        <androidx.car.widget.PagedListView
-            android:id="@+id/paged_list_view"
-            android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="4" />
     </LinearLayout>
-
 </androidx.car.moderator.SpeedBumpView>
 
 
diff --git a/tests/CarDiagnosticVerifier/res/values/strings.xml b/tests/UxRestrictionsSample/res/values/dimens.xml
similarity index 69%
rename from tests/CarDiagnosticVerifier/res/values/strings.xml
rename to tests/UxRestrictionsSample/res/values/dimens.xml
index ca6b33a..66f0aea 100644
--- a/tests/CarDiagnosticVerifier/res/values/strings.xml
+++ b/tests/UxRestrictionsSample/res/values/dimens.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- Copyright (C) 2018 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,7 +14,9 @@
      limitations under the License.
 -->
 <resources>
-    <string name="status_receiving">Receiving car diagnostic events...</string>
-    <string name="status_verifying">Verifying car diagnostic events...</string>
-    <string name="status_done">Done with verification</string>
+    <dimen name="section_padding">5dp</dimen>
+
+    <!-- Text size for the sample app -->
+    <dimen name="info_text_size">24sp</dimen>
+    <dimen name="header_text_size">32sp</dimen>
 </resources>
diff --git a/tests/UxRestrictionsSample/res/values/strings.xml b/tests/UxRestrictionsSample/res/values/strings.xml
new file mode 100644
index 0000000..612e251
--- /dev/null
+++ b/tests/UxRestrictionsSample/res/values/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="app_name">UxRestrictionsSample</string>
+    <string name="title_activity_main">MainActivity</string>
+    <string name="status_header"><u>Current Status</u></string>
+    <string name="driving_state">Driving State: </string>
+    <string name="is_do_reqd">Distraction Optimization Required? </string>
+    <string name="active_restrictions">Active UX Restrictions: </string>
+    <string name="action_header"><u>Available Actions</u></string>
+    <string name="disable_uxr">Disable Ux Restriction Engine</string>
+    <string name="sample_header"><u>Sample Activities</u></string>
+    <string name="sample_msg_activity">Sample Message Activity</string>
+    <string name="return_home"><u>Return Home</u></string>
+</resources>
diff --git a/tests/UxRestrictionsSample/src/com/google/android/car/uxr/sample/MainActivity.java b/tests/UxRestrictionsSample/src/com/google/android/car/uxr/sample/MainActivity.java
index ba82e6f..104e145 100644
--- a/tests/UxRestrictionsSample/src/com/google/android/car/uxr/sample/MainActivity.java
+++ b/tests/UxRestrictionsSample/src/com/google/android/car/uxr/sample/MainActivity.java
@@ -15,7 +15,6 @@
  */
 package com.google.android.car.uxr.sample;
 
-import android.annotation.DrawableRes;
 import android.app.Activity;
 import android.car.Car;
 import android.car.CarNotConnectedException;
@@ -25,29 +24,21 @@
 import android.car.drivingstate.CarUxRestrictions;
 import android.car.drivingstate.CarUxRestrictionsManager;
 import android.content.ComponentName;
+import android.content.Intent;
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.util.Log;
+import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;
 
-import androidx.car.widget.ListItem;
-import androidx.car.widget.ListItemAdapter;
-import androidx.car.widget.ListItemProvider;
-import androidx.car.widget.PagedListView;
-import androidx.car.widget.TextListItem;
-
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * Sample app that uses components in car support library to demonstrate Car drivingstate UXR
  * status.
  */
 public class MainActivity extends Activity {
     public static final String TAG = "drivingstate";
-
     private Car mCar;
     private CarDrivingStateManager mCarDrivingStateManager;
     private CarUxRestrictionsManager mCarUxRestrictionsManager;
@@ -56,8 +47,9 @@
     private TextView mDistractionOptStatus;
     private TextView mUxrStatus;
     private Button mToggleButton;
+    private Button mSampleMsgButton;
+
     private boolean mEnableUxR;
-    private PagedListView mPagedListView;
 
     private final ServiceConnection mCarConnectionListener =
             new ServiceConnection() {
@@ -163,68 +155,24 @@
         mDistractionOptStatus = findViewById(R.id.do_status);
         mUxrStatus = findViewById(R.id.uxr_status);
         mToggleButton = findViewById(R.id.toggle_status);
-        mPagedListView = findViewById(R.id.paged_list_view);
-
-        setUpPagedListView();
 
         mToggleButton.setOnClickListener(v -> {
             updateToggleUxREnable();
         });
 
+        mSampleMsgButton = findViewById(R.id.launch_message);
+        mSampleMsgButton.setOnClickListener(this::launchSampleMsgActivity);
+
         // Connect to car service
         mCar = Car.createCar(this, mCarConnectionListener);
         mCar.connect();
     }
 
-    private void setUpPagedListView() {
-        ListItemAdapter adapter = new ListItemAdapter(this, populateData());
-        mPagedListView.setAdapter(adapter);
+    private void launchSampleMsgActivity(View view) {
+        Intent msgIntent = new Intent(this, SampleMessageActivity.class);
+        startActivity(msgIntent);
     }
 
-    private ListItemProvider populateData() {
-        List<ListItem> items = new ArrayList<>();
-        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "alice",
-                "i have a really important message but it may hinder your ability to drive. "));
-
-        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "bob",
-                "hey this is a really long message that i have always wanted to say. but before " +
-                        "saying it i feel it's only appropriate if i lay some groundwork for it. "
-                        + ""));
-        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "mom",
-                "i think you are the best. i think you are the best. i think you are the best. " +
-                        "i think you are the best. i think you are the best. i think you are the "
-                        + "best. "
-                        +
-                        "i think you are the best. i think you are the best. i think you are the "
-                        + "best. "
-                        +
-                        "i think you are the best. i think you are the best. i think you are the "
-                        + "best. "
-                        +
-                        "i think you are the best. i think you are the best. i think you are the "
-                        + "best. "
-                        +
-                        "i think you are the best. i think you are the best. "));
-        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "john", "hello world"));
-        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "jeremy",
-                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor " +
-                        "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, " +
-                        "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " +
-                        "consequat. Duis aute irure dolor in reprehenderit in voluptate velit " +
-                        "esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat " +
-                        "cupidatat non proident, sunt in culpa qui officia deserunt mollit " +
-                        "anim id est laborum."));
-        return new ListItemProvider.ListProvider(items);
-    }
-
-    private TextListItem createMessage(@DrawableRes int profile, String contact, String message) {
-        TextListItem item = new TextListItem(this);
-        item.setPrimaryActionIcon(profile, false /* useLargeIcon */);
-        item.setTitle(contact);
-        item.setBody(message);
-        item.setSupplementalIcon(android.R.drawable.stat_notify_chat, false);
-        return item;
-    }
 
     @Override
     protected void onDestroy() {
diff --git a/tests/UxRestrictionsSample/src/com/google/android/car/uxr/sample/SampleMessageActivity.java b/tests/UxRestrictionsSample/src/com/google/android/car/uxr/sample/SampleMessageActivity.java
new file mode 100644
index 0000000..1c9bc95
--- /dev/null
+++ b/tests/UxRestrictionsSample/src/com/google/android/car/uxr/sample/SampleMessageActivity.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.android.car.uxr.sample;
+
+import android.annotation.DrawableRes;
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.car.widget.ListItem;
+import androidx.car.widget.ListItemAdapter;
+import androidx.car.widget.ListItemProvider;
+import androidx.car.widget.PagedListView;
+import androidx.car.widget.TextListItem;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A Sample Messaging Activity that illustrates how to truncate the string length on receiving the
+ * corresponding UX restriction.
+ */
+public class SampleMessageActivity extends Activity {
+    private Button mHomeButton;
+    private PagedListView mPagedListView;
+    private ListItemAdapter mAdapter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_sample_message);
+        mHomeButton = findViewById(R.id.home_button);
+        mHomeButton.setOnClickListener(this::returnHome);
+
+        mPagedListView = findViewById(R.id.paged_list_view);
+        setUpPagedListView();
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        if (mAdapter != null) {
+            mAdapter.start();
+        }
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        if (mAdapter != null) {
+            mAdapter.stop();
+        }
+    }
+
+    private void returnHome(View view) {
+        Intent homeIntent = new Intent(this, MainActivity.class);
+        startActivity(homeIntent);
+    }
+
+    private void setUpPagedListView() {
+        mAdapter = new ListItemAdapter(this, populateData());
+        mPagedListView.setAdapter(mAdapter);
+    }
+
+    private ListItemProvider populateData() {
+        List<ListItem> items = new ArrayList<>();
+        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "alice",
+                "i have a really important message but it may hinder your ability to drive. "));
+
+        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "bob",
+                "hey this is a really long message that i have always wanted to say. but before "
+                        + "saying it i feel it's only appropriate if i lay some groundwork for it. "
+                        + ""));
+        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "mom",
+                "i think you are the best. i think you are the best. i think you are the best. "
+                        + "i think you are the best. i think you are the best. i think you are the "
+                        + "best. "
+                        + "i think you are the best. i think you are the best. i think you are the "
+                        + "best. "
+                        + "i think you are the best. i think you are the best. i think you are the "
+                        + "best. "
+                        + "i think you are the best. i think you are the best. i think you are the "
+                        + "best. "
+                        + "i think you are the best. i think you are the best. "));
+        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "john", "hello world"));
+        items.add(createMessage(android.R.drawable.ic_menu_myplaces, "jeremy",
+                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor "
+                        + "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, "
+                        + "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo "
+                        + "consequat. Duis aute irure dolor in reprehenderit in voluptate velit "
+                        + "esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat "
+                        + "cupidatat non proident, sunt in culpa qui officia deserunt mollit "
+                        + "anim id est laborum."));
+        return new ListItemProvider.ListProvider(items);
+    }
+
+    private TextListItem createMessage(@DrawableRes int profile, String contact, String message) {
+        TextListItem item = new TextListItem(this);
+        item.setPrimaryActionIcon(profile, TextListItem.PRIMARY_ACTION_ICON_SIZE_SMALL);
+        item.setTitle(contact);
+        item.setBody(message);
+        item.setSupplementalIcon(android.R.drawable.stat_notify_chat, false);
+        return item;
+    }
+
+}
diff --git a/tests/VmsSubscriberClientSample/Android.mk b/tests/VmsSubscriberClientSample/Android.mk
index c577aaf..2568ffc 100644
--- a/tests/VmsSubscriberClientSample/Android.mk
+++ b/tests/VmsSubscriberClientSample/Android.mk
@@ -35,6 +35,4 @@
 
 LOCAL_JAVA_LIBRARIES += android.car
 
-include packages/services/Car/car-support-lib/car-support.mk
-
 include $(BUILD_PACKAGE)
\ No newline at end of file
diff --git a/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java b/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
index a82350b..41de024 100644
--- a/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
+++ b/tests/VmsSubscriberClientSample/src/com/google/android/car/vms/subscriber/VmsSubscriberClientSampleActivity.java
@@ -17,15 +17,19 @@
 package com.google.android.car.vms.subscriber;
 
 import android.app.Activity;
+import android.car.Car;
+import android.car.CarNotConnectedException;
 import android.car.vms.VmsAvailableLayers;
 import android.car.vms.VmsLayer;
 import android.car.vms.VmsSubscriberManager;
+import android.content.ComponentName;
+import android.content.ServiceConnection;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.car.Car;
-import android.support.car.CarConnectionCallback;
+import android.os.IBinder;
 import android.util.Log;
 import android.widget.TextView;
+
 import java.util.concurrent.Executor;
 
 /**
@@ -57,7 +61,7 @@
         setContentView(R.layout.activity_main);
         mTextView = (TextView) findViewById(R.id.textview);
         if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
-            mCarApi = Car.createCar(this, mCarConnectionCallback);
+            mCarApi = Car.createCar(this, mCarServiceConnection);
             mCarApi.connect();
         } else {
             Log.d(TAG, "No automotive feature.");
@@ -73,24 +77,24 @@
         Log.i(TAG, "onDestroy");
     }
 
-    private final CarConnectionCallback mCarConnectionCallback = new CarConnectionCallback() {
+    private final ServiceConnection mCarServiceConnection = new ServiceConnection() {
         @Override
-        public void onConnected(Car car) {
+        public void onServiceConnected(ComponentName name, IBinder service) {
             Log.d(TAG, "Connected to Car Service");
             mVmsSubscriberManager = getVmsSubscriberManager();
             configureSubscriptions(mVmsSubscriberManager);
         }
 
         @Override
-        public void onDisconnected(Car car) {
+        public void onServiceDisconnected(ComponentName name) {
             Log.d(TAG, "Disconnect from Car Service");
         }
 
         private VmsSubscriberManager getVmsSubscriberManager() {
             try {
                 return (VmsSubscriberManager) mCarApi.getCarManager(
-                        android.car.Car.VMS_SUBSCRIBER_SERVICE);
-            } catch (android.support.car.CarNotConnectedException e) {
+                        Car.VMS_SUBSCRIBER_SERVICE);
+            } catch (CarNotConnectedException e) {
                 Log.e(TAG, "Car is not connected!", e);
             }
             return null;
@@ -100,7 +104,7 @@
             try {
                 vmsSubscriberManager.setVmsSubscriberClientCallback(mExecutor, mClientCallback);
                 vmsSubscriberManager.subscribe(TEST_LAYER);
-            } catch (android.car.CarNotConnectedException e) {
+            } catch (CarNotConnectedException e) {
                 Log.e(TAG, "Car is not connected!", e);
             }
         }
diff --git a/tests/android_car_api_test/src/android/car/apitest/CarHvacManagerTest.java b/tests/android_car_api_test/src/android/car/apitest/CarHvacManagerTest.java
index 7196d14..2fc57eb 100644
--- a/tests/android_car_api_test/src/android/car/apitest/CarHvacManagerTest.java
+++ b/tests/android_car_api_test/src/android/car/apitest/CarHvacManagerTest.java
@@ -43,7 +43,7 @@
     public void testAllHvacProperties() throws Exception {
         List<CarPropertyConfig> properties = mHvacManager.getPropertyList();
         Set<Class> supportedTypes = new HashSet<>(Arrays.asList(
-                new Class[] { Integer.class, Float.class, Boolean.class }));
+                new Class[] { Integer.class, Float.class, Boolean.class, Integer[].class }));
 
         for (CarPropertyConfig property : properties) {
             if (supportedTypes.contains(property.getPropertyType())) {
@@ -80,7 +80,6 @@
                 break;
             case CarHvacManager.ID_ZONED_FAN_SPEED_SETPOINT: // zoned int
             case CarHvacManager.ID_ZONED_FAN_SPEED_RPM:
-            case CarHvacManager.ID_ZONED_FAN_DIRECTION_AVAILABLE:
             case CarHvacManager.ID_ZONED_SEAT_TEMP:
                 checkTypeAndGlobal(Integer.class, false, property);
                 checkIntMinMax(property);
@@ -88,6 +87,9 @@
             case CarHvacManager.ID_ZONED_FAN_DIRECTION:
                 checkTypeAndGlobal(Integer.class, false, property);
                 break;
+            case CarHvacManager.ID_ZONED_FAN_DIRECTION_AVAILABLE:
+                checkTypeAndGlobal(Integer[].class, false, property);
+                break;
             case CarHvacManager.ID_ZONED_AC_ON: // zoned boolean
             case CarHvacManager.ID_ZONED_AUTOMATIC_MODE_ON:
             case CarHvacManager.ID_ZONED_AIR_RECIRCULATION_ON:
@@ -103,10 +105,10 @@
 
     private void checkTypeAndGlobal(Class clazz, boolean global, CarPropertyConfig<Integer> property) {
         assertEquals("Wrong type, expecting " + clazz + " type for id:" + property.getPropertyId(),
-            clazz, property.getPropertyType());
+                clazz, property.getPropertyType());
         assertEquals("Wrong zone, should " + (global ? "" : "not ") + "be global for id: " +
-            property.getPropertyId() + ", area type:" + property.getAreaType(),
-            global, property.isGlobalProperty());
+                        property.getPropertyId() + ", area type:" + property.getAreaType(),
+                global, property.isGlobalProperty());
     }
 
     private void checkIntMinMax(CarPropertyConfig<Integer> property) {
diff --git a/tests/android_support_car_api_test/Android.mk b/tests/android_support_car_api_test/Android.mk
deleted file mode 100644
index 90aa767..0000000
--- a/tests/android_support_car_api_test/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := AndroidSupportCarApiTest
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# for system|privileged permission.
-LOCAL_CERTIFICATE := platform
-
-LOCAL_MODULE_TAGS := tests
-
-# When built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := junit
-LOCAL_STATIC_JAVA_LIBRARIES += android.support.car android-support-test
-
-LOCAL_JAVA_LIBRARIES := android.car android.test.runner android.test.base
-
-include $(BUILD_PACKAGE)
diff --git a/tests/android_support_car_api_test/AndroidManifest.xml b/tests/android_support_car_api_test/AndroidManifest.xml
deleted file mode 100644
index ba4a53e..0000000
--- a/tests/android_support_car_api_test/AndroidManifest.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
-        package="com.android.support.car.apitest"
-        android:sharedUserId="android.uid.system" >
-
-    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="23" />
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-            android:targetPackage="com.android.support.car.apitest"
-            android:label="Tests for Car APIs"/>
-
-    <application android:label="CarApiTest">
-        <uses-library android:name="android.test.runner" />
-        <activity android:name=".TestCarProxyActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-    </application>
-</manifest>
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarApiTestBase.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarApiTestBase.java
deleted file mode 100644
index 981de14..0000000
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarApiTestBase.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.support.car.apitest;
-
-import android.os.Looper;
-import android.support.car.Car;
-import android.support.car.CarConnectionCallback;
-import android.test.AndroidTestCase;
-
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-public class CarApiTestBase extends AndroidTestCase {
-    protected static final long DEFAULT_WAIT_TIMEOUT_MS = 1000;
-
-    private Car mCar;
-
-    private final DefaultCarConnectionCallback mConnectionCallbacks =
-            new DefaultCarConnectionCallback();
-
-    protected void assertMainThread() {
-        assertTrue(Looper.getMainLooper().isCurrentThread());
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mCar = Car.createCar(getContext(), mConnectionCallbacks);
-        mCar.connect();
-        mConnectionCallbacks.waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-        mCar.disconnect();
-    }
-
-    protected synchronized Car getCar() {
-        return mCar;
-    }
-
-    protected class DefaultCarConnectionCallback extends CarConnectionCallback {
-        private final Semaphore mConnectionWait = new Semaphore(0);
-
-        public void waitForConnection(long timeoutMs) throws InterruptedException {
-            mConnectionWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS);
-        }
-        @Override
-        public void onDisconnected(Car car) {
-            assertMainThread();
-        }
-
-        @Override
-        public void onConnected(Car car) {
-            assertMainThread();
-            mConnectionWait.release();
-        }
-    }
-}
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarAppFocusManagerTest.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarAppFocusManagerTest.java
deleted file mode 100644
index 2d58e56..0000000
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarAppFocusManagerTest.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.support.car.apitest;
-
-import android.support.car.Car;
-import android.support.car.CarAppFocusManager;
-import android.test.suitebuilder.annotation.MediumTest;
-import android.util.Log;
-
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@MediumTest
-public class CarAppFocusManagerTest extends CarApiTestBase {
-    private static final String TAG = CarAppFocusManagerTest.class.getSimpleName();
-    private CarAppFocusManager mManager;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mManager = (CarAppFocusManager) getCar().getCarManager(Car.APP_FOCUS_SERVICE);
-        assertNotNull(mManager);
-
-        // Request all application focuses and abandon them to ensure no active context is present
-        // when test starts.
-        int[] activeTypes =  {CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND};
-        FocusOwnershipCallback owner = new FocusOwnershipCallback();
-        for (int i = 0; i < activeTypes.length; i++) {
-            mManager.requestAppFocus(activeTypes[i], owner);
-            owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS, activeTypes[i]);
-            mManager.abandonAppFocus(owner, activeTypes[i]);
-            owner.waitForOwnershipLossAndAssert(
-                    DEFAULT_WAIT_TIMEOUT_MS, activeTypes[i]);
-        }
-    }
-
-    public void testSetActiveNullListener() throws Exception {
-        try {
-            mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, null);
-            fail();
-        } catch (IllegalArgumentException e) {
-            // expected
-        }
-    }
-
-    public void testRegisterNull() throws Exception {
-        try {
-            mManager.addFocusListener(null, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-            fail();
-        } catch (IllegalArgumentException e) {
-            // expected
-        }
-    }
-
-    public void testRegisterUnregister() throws Exception {
-        FocusChangedListener listener = new FocusChangedListener();
-        FocusChangedListener listener2 = new FocusChangedListener();
-        mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-        mManager.addFocusListener(listener2, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-        mManager.removeFocusListener(listener);
-        mManager.removeFocusListener(listener2);
-    }
-
-    public void testFocusChange() throws Exception {
-        DefaultCarConnectionCallback connectionCallbacks =
-                new DefaultCarConnectionCallback();
-        Car car2 = Car.createCar(getContext(), connectionCallbacks, null);
-        car2.connect();
-        connectionCallbacks.waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
-        CarAppFocusManager manager2 = (CarAppFocusManager)
-                car2.getCarManager(Car.APP_FOCUS_SERVICE);
-        assertNotNull(manager2);
-        final int[] emptyFocus = new int[0];
-
-        FocusChangedListener change = new FocusChangedListener();
-        FocusChangedListener change2 = new FocusChangedListener();
-        FocusOwnershipCallback owner = new FocusOwnershipCallback();
-        FocusOwnershipCallback owner2 = new FocusOwnershipCallback();
-        mManager.addFocusListener(change, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-        mManager.addFocusListener(change, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-        manager2.addFocusListener(change2, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-        manager2.addFocusListener(change2, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-
-        mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
-        assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
-
-        assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
-        assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner2));
-
-        assertTrue(change2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
-        assertTrue(change.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
-
-        mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner);
-        assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND));
-        assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
-        assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND,
-                owner2));
-        assertTrue(change2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, true));
-        assertTrue(change.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, true));
-
-        // this should be no-op
-        change.reset();
-        change2.reset();
-        mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
-        assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
-
-        assertFalse(change2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
-        assertFalse(change.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
-
-        manager2.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2);
-        assertTrue(owner2.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
-
-        assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
-        assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
-        assertTrue(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner2));
-        assertTrue(owner.waitForOwnershipLossAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
-
-        // no-op as it is not owning it
-        change.reset();
-        change2.reset();
-        mManager.abandonAppFocus(owner, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-        assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
-        assertTrue(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
-        assertTrue(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner2));
-
-        change.reset();
-        change2.reset();
-        mManager.abandonAppFocus(owner, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-        assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
-        assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
-        assertTrue(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner2));
-        assertTrue(change2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, false));
-        assertTrue(change.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, false));
-
-        change.reset();
-        change2.reset();
-        manager2.abandonAppFocus(owner2, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-        assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner));
-        assertFalse(mManager.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner2));
-        assertFalse(manager2.isOwningFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner2));
-        assertTrue(change.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, false));
-        mManager.removeFocusListener(change);
-        manager2.removeFocusListener(change2);
-    }
-
-    public void testFilter() throws Exception {
-        DefaultCarConnectionCallback connectionCallbacks =
-                new DefaultCarConnectionCallback();
-        Car car2 = Car.createCar(getContext(), connectionCallbacks);
-        car2.connect();
-        connectionCallbacks.waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
-        CarAppFocusManager manager2 = (CarAppFocusManager)
-                car2.getCarManager(Car.APP_FOCUS_SERVICE);
-        assertNotNull(manager2);
-
-        FocusChangedListener listener = new FocusChangedListener();
-        FocusChangedListener listener2 = new FocusChangedListener();
-        FocusOwnershipCallback owner = new FocusOwnershipCallback();
-        mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-        mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-        manager2.addFocusListener(listener2, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-
-        mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
-        assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
-
-        assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                 CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
-        assertTrue(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                 CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
-
-        listener.reset();
-        listener2.reset();
-        mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner);
-        assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND));
-
-        assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, true));
-        assertFalse(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, true));
-
-        listener.reset();
-        listener2.reset();
-        mManager.abandonAppFocus(owner, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-        assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, false));
-        assertFalse(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, false));
-
-        listener.reset();
-        listener2.reset();
-        mManager.abandonAppFocus(owner, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-        assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, false));
-        assertTrue(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, false));
-    }
-
-    public void testMultipleChangeListenersPerManager() throws Exception {
-        FocusChangedListener listener = new FocusChangedListener();
-        FocusChangedListener listener2 = new FocusChangedListener();
-        FocusOwnershipCallback owner = new FocusOwnershipCallback();
-        mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-        mManager.addFocusListener(listener, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-        mManager.addFocusListener(listener2, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-
-        mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, owner);
-        assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION));
-
-        assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                 CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
-        assertTrue(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                 CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, true));
-
-        listener.reset();
-        listener2.reset();
-        mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, owner);
-        assertTrue(owner.waitForOwnershipGrantAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND));
-
-        assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, true));
-        assertFalse(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, true));
-
-        listener.reset();
-        listener2.reset();
-        mManager.abandonAppFocus(owner, CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND);
-        assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, false));
-        assertFalse(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND, false));
-
-        listener.reset();
-        listener2.reset();
-        mManager.abandonAppFocus(owner, CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION);
-        assertTrue(listener.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, false));
-        assertTrue(listener2.waitForFocusChangeAndAssert(DEFAULT_WAIT_TIMEOUT_MS,
-                CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, false));
-    }
-
-    private class FocusChangedListener implements CarAppFocusManager.OnAppFocusChangedListener {
-        private int mLastChangeAppType;
-        private boolean mLastChangeAppActive;
-        private final Semaphore mChangeWait = new Semaphore(0);
-
-        public boolean waitForFocusChangeAndAssert(long timeoutMs, int expectedAppType,
-                boolean expectedAppActive) throws Exception {
-            if (!mChangeWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
-                return false;
-            }
-            assertEquals(expectedAppType, mLastChangeAppType);
-            assertEquals(expectedAppActive, mLastChangeAppActive);
-            return true;
-        }
-
-        public void reset() {
-            mLastChangeAppType = 0;
-            mLastChangeAppActive = false;
-        }
-
-        @Override
-        public void onAppFocusChanged(CarAppFocusManager manager, int appType, boolean active) {
-            Log.i(TAG, "onAppFocusChanged appType=" + appType + " active=" + active);
-            assertMainThread();
-            mLastChangeAppType = appType;
-            mLastChangeAppActive = active;
-            mChangeWait.release();
-        }
-    }
-
-    private class FocusOwnershipCallback
-            implements CarAppFocusManager.OnAppFocusOwnershipCallback {
-        private int mLastLossEvent;
-        private final Semaphore mLossEventWait = new Semaphore(0);
-
-        private int mLastGrantEvent;
-        private final Semaphore mGrantEventWait = new Semaphore(0);
-
-        public boolean waitForOwnershipLossAndAssert(long timeoutMs, int expectedAppType)
-                throws Exception {
-            if (!mLossEventWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
-                return false;
-            }
-            assertEquals(expectedAppType, mLastLossEvent);
-            return true;
-        }
-
-        public boolean waitForOwnershipGrantAndAssert(long timeoutMs, int expectedAppType)
-                throws Exception {
-            if (!mGrantEventWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
-                return false;
-            }
-            assertEquals(expectedAppType, mLastGrantEvent);
-            return true;
-        }
-
-        @Override
-        public void onAppFocusOwnershipLost(CarAppFocusManager manager, int appType) {
-            Log.i(TAG, "onAppFocusOwnershipLost " + appType);
-            assertMainThread();
-            mLastLossEvent = appType;
-            mLossEventWait.release();
-        }
-
-        @Override
-        public void onAppFocusOwnershipGranted(CarAppFocusManager manager, int appType) {
-            Log.i(TAG, "onAppFocusOwnershipGranted " + appType);
-            assertMainThread();
-            mLastGrantEvent = appType;
-            mGrantEventWait.release();
-        }
-    }
-}
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarNavigationStatusManagerTest.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarNavigationStatusManagerTest.java
deleted file mode 100644
index d57d9ee..0000000
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarNavigationStatusManagerTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.support.car.apitest;
-
-import static android.support.car.CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION;
-
-import android.os.Bundle;
-import android.support.car.Car;
-import android.support.car.CarAppFocusManager;
-import android.support.car.CarAppFocusManager.OnAppFocusChangedListener;
-import android.support.car.CarAppFocusManager.OnAppFocusOwnershipCallback;
-import android.support.car.navigation.CarNavigationInstrumentCluster;
-import android.support.car.navigation.CarNavigationStatusManager;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Unit tests for {@link android.support.car.navigation.CarNavigationStatusManager}
- */
-@MediumTest
-public class CarNavigationStatusManagerTest extends CarApiTestBase {
-
-    private CarNavigationStatusManager mCarNavigationStatusManager;
-    private CarAppFocusManager mCarAppFocusManager;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mCarNavigationStatusManager =
-                (CarNavigationStatusManager) getCar().getCarManager(Car.CAR_NAVIGATION_SERVICE);
-        assertNotNull(mCarNavigationStatusManager);
-        mCarAppFocusManager =
-                (CarAppFocusManager) getCar().getCarManager(Car.APP_FOCUS_SERVICE);
-        assertNotNull(mCarAppFocusManager);
-    }
-
-    public void testStart() throws Exception {
-        final CountDownLatch onStartLatch = new CountDownLatch(1);
-
-        mCarNavigationStatusManager.addListener(
-                new CarNavigationStatusManager.CarNavigationCallback() {
-            @Override
-            public void onInstrumentClusterStarted(CarNavigationStatusManager manager,
-                    CarNavigationInstrumentCluster instrumentCluster) {
-                // return type cannot be asserted.
-                instrumentCluster.supportsCustomImages();
-                instrumentCluster.getMinIntervalMillis();
-                onStartLatch.countDown();
-            }
-
-            @Override
-            public void onInstrumentClusterStopped(CarNavigationStatusManager manager) {
-              // TODO
-            }
-        });
-
-        assertTrue(onStartLatch.await(DEFAULT_WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-        try {
-            mCarNavigationStatusManager.sendEvent(1, new Bundle());
-            fail();
-        } catch (IllegalStateException expected) {
-            // Expected. Client should acquire focus ownership for APP_FOCUS_TYPE_NAVIGATION.
-        }
-
-        mCarAppFocusManager
-                .addFocusListener(new OnAppFocusChangedListener() {
-                    @Override
-                    public void onAppFocusChanged(CarAppFocusManager manager, int appType,
-                            boolean active) {
-                        // Nothing to do here.
-                    }
-                }, APP_FOCUS_TYPE_NAVIGATION);
-        CarAppFocusManager.OnAppFocusOwnershipCallback
-                ownershipCallback = new OnAppFocusOwnershipCallback() {
-            @Override
-            public void onAppFocusOwnershipLost(CarAppFocusManager manager, int focusType) {
-                // Nothing to do here.
-            }
-
-            @Override
-            public void onAppFocusOwnershipGranted(CarAppFocusManager manager, int focusType) {
-                // Nothing to do here.
-            }
-        };
-        mCarAppFocusManager.requestAppFocus(APP_FOCUS_TYPE_NAVIGATION, ownershipCallback);
-        assertTrue(mCarAppFocusManager.isOwningFocus(APP_FOCUS_TYPE_NAVIGATION, ownershipCallback));
-
-        // TODO: we should use mocked HAL to be able to verify this, right now just make sure that
-        // it is not crashing and logcat has appropriate traces.
-        mCarNavigationStatusManager.sendEvent(1, new Bundle());
-    }
-}
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarPackageManagerTest.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarPackageManagerTest.java
deleted file mode 100644
index c42a8cb..0000000
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarPackageManagerTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.support.car.apitest;
-
-import android.os.Looper;
-import android.support.car.Car;
-import android.support.car.CarConnectionCallback;
-import android.support.car.content.pm.CarPackageManager;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@MediumTest
-public class CarPackageManagerTest extends AndroidTestCase {
-    private static final long DEFAULT_WAIT_TIMEOUT_MS = 3000;
-
-    private final Semaphore mConnectionWait = new Semaphore(0);
-
-    private Car mCar;
-    private CarPackageManager mCarPackageManager;
-
-    private final CarConnectionCallback mConnectionCallbacks =
-            new CarConnectionCallback() {
-        @Override
-        public void onDisconnected(Car car) {
-            assertMainThread();
-        }
-
-
-        @Override
-        public void onConnected(Car car) {
-            assertMainThread();
-            mConnectionWait.release();
-        }
-    };
-
-    private void assertMainThread() {
-        assertTrue(Looper.getMainLooper().isCurrentThread());
-    }
-
-    private void waitForConnection(long timeoutMs) throws InterruptedException {
-        mConnectionWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mCar = Car.createCar(getContext(), mConnectionCallbacks);
-        mCar.connect();
-        waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
-        mCarPackageManager = (CarPackageManager) mCar.getCarManager(Car.PACKAGE_SERVICE);
-        assertNotNull(mCarPackageManager);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-        mCar.disconnect();
-    }
-
-    public void testCreate() throws Exception {
-        //nothing to do for now
-    }
-}
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarSensorManagerTest.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarSensorManagerTest.java
deleted file mode 100644
index bc97d67..0000000
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarSensorManagerTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.support.car.apitest;
-
-import static android.content.pm.PackageManager.FEATURE_AUTOMOTIVE;
-
-import android.os.Looper;
-import android.support.car.Car;
-import android.support.car.CarConnectionCallback;
-import android.support.car.hardware.CarSensorEvent;
-import android.support.car.hardware.CarSensorManager;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@MediumTest
-public class CarSensorManagerTest extends AndroidTestCase {
-    private static final long DEFAULT_WAIT_TIMEOUT_MS = 3000;
-
-    private final Semaphore mConnectionWait = new Semaphore(0);
-
-    private Car mCar;
-    private CarSensorManager mCarSensorManager;
-
-    private final CarConnectionCallback mConnectionCallbacks =
-            new CarConnectionCallback() {
-        @Override
-        public void onDisconnected(Car car) {
-            assertMainThread();
-        }
-
-        @Override
-        public void onConnected(Car car) {
-            assertMainThread();
-            mConnectionWait.release();
-        }
-    };
-
-    private void assertMainThread() {
-        assertTrue(Looper.getMainLooper().isCurrentThread());
-    }
-    private void waitForConnection(long timeoutMs) throws InterruptedException {
-        mConnectionWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mCar = Car.createCar(getContext(), mConnectionCallbacks);
-        mCar.connect();
-        waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
-        mCarSensorManager =
-                (CarSensorManager) mCar.getCarManager(Car.SENSOR_SERVICE);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-        mCar.disconnect();
-    }
-
-    public void testDrivingPolicy() throws Exception {
-        // Embedded does not support SENSOR_TYPE_DRIVING_STATUS.  Hence this test is not run in
-        // Android Auto Embedded.
-        if (getContext().getPackageManager().hasSystemFeature(FEATURE_AUTOMOTIVE)) {
-            return;
-        }
-
-        int[] supportedSensors = mCarSensorManager.getSupportedSensors();
-        assertNotNull(supportedSensors);
-        boolean found = false;
-        for (int sensor: supportedSensors) {
-            if (sensor == CarSensorManager.SENSOR_TYPE_DRIVING_STATUS) {
-                found = true;
-                break;
-            }
-        }
-        assertTrue(found);
-        assertTrue(mCarSensorManager.isSensorSupported(
-                CarSensorManager.SENSOR_TYPE_DRIVING_STATUS));
-        CarSensorEvent lastEvent = mCarSensorManager.getLatestSensorEvent(
-                CarSensorManager.SENSOR_TYPE_DRIVING_STATUS);
-        assertNotNull(lastEvent);
-    }
-
-    public void testSensorType() throws Exception {
-        List<Field> androidCarAllIntMembers = TestUtil.getAllPublicStaticFinalMembers(
-                android.car.hardware.CarSensorManager.class, int.class);
-        List<Field> supportCarAllIntMembers = TestUtil.getAllPublicStaticFinalMembers(
-                android.support.car.hardware.CarSensorManager.class, int.class);
-        List<Field> androidCarSensorTypes = filterSensorTypes(androidCarAllIntMembers);
-        List<Field> supportCarSensorTypes = filterSensorTypes(supportCarAllIntMembers);
-        Map<Integer, Field> androidCarSensorTypeToField = new HashMap<>();
-        for (Field androidCarSensorType : androidCarSensorTypes) {
-            androidCarSensorTypeToField.put(androidCarSensorType.getInt(null),
-                    androidCarSensorType);
-        }
-        StringBuilder builder = new StringBuilder();
-        boolean failed = false;
-        for (Field supportCarSensorType : supportCarSensorTypes) {
-            Field androidCarSensorType = androidCarSensorTypeToField.get(
-                    supportCarSensorType.getInt(null));
-            assertNotNull("Sensor type:" + supportCarSensorType.getName() +
-                    " not defined in android.car", androidCarSensorType);
-            if (supportCarSensorType.getName().equals(androidCarSensorType.getName())) {
-                // match ok
-            } else if (androidCarSensorType.getName().startsWith("SENSOR_TYPE_RESERVED")) {
-                // not used in android.car, ok
-            } else if (supportCarSensorType.getName().startsWith("SENSOR_TYPE_RESERVED")) {
-                // used in android.car but reserved in support.car
-            } else {
-                failed = true;
-                builder.append("android.support sensor has name:" + supportCarSensorType.getName() +
-                        " while android.car sensor has name:" + androidCarSensorType.getName() +
-                        "\n");
-            }
-            androidCarSensorTypeToField.remove(supportCarSensorType.getInt(null));
-        }
-        assertFalse(builder.toString(), failed);
-        assertTrue("android Car sensor has additional types defined:" + androidCarSensorTypeToField,
-                androidCarSensorTypeToField.size() == 0);
-    }
-
-    public void testSensorRate() throws Exception {
-        List<Field> androidCarAllIntMembers = TestUtil.getAllPublicStaticFinalMembers(
-                android.car.hardware.CarSensorManager.class, int.class);
-        List<Field> supportCarAllIntMembers = TestUtil.getAllPublicStaticFinalMembers(
-                android.support.car.hardware.CarSensorManager.class, int.class);
-        List<Field> androidCarSensorRates = filterSensorRates(androidCarAllIntMembers);
-        List<Field> supportCarSensorRates = filterSensorRates(supportCarAllIntMembers);
-        Map<Integer, Field> androidCarSensorRateToField = new HashMap<>();
-        for (Field androidCarSensorRate : androidCarSensorRates) {
-            androidCarSensorRateToField.put(androidCarSensorRate.getInt(null),
-                    androidCarSensorRate);
-        }
-        StringBuilder builder = new StringBuilder();
-        boolean failed = false;
-        for (Field supprotCarSensorRate : supportCarSensorRates) {
-            Field androidCarSensorRate = androidCarSensorRateToField.get(
-                    supprotCarSensorRate.getInt(null));
-            assertNotNull("Sensor rate:" + supprotCarSensorRate.getName() +
-                    " not defined in android.car", androidCarSensorRate);
-            if (supprotCarSensorRate.getName().equals(androidCarSensorRate.getName())) {
-                // match ok
-            } else {
-                failed = true;
-                builder.append("android.support sensor rate has name:" +
-                        supprotCarSensorRate.getName() +
-                        " while android.car sensor rate has name:" +
-                        androidCarSensorRate.getName());
-            }
-            androidCarSensorRateToField.remove(supprotCarSensorRate.getInt(null));
-        }
-        assertFalse(builder.toString(), failed);
-        assertTrue("android Car sensor has additional rates defined:" + androidCarSensorRateToField,
-                androidCarSensorRateToField.size() == 0);
-    }
-
-    private List<Field> filterSensorTypes(List<Field> fields) {
-        return filterFields(fields, "SENSOR_TYPE_");
-    }
-
-    private List<Field> filterSensorRates(List<Field> fields) {
-        return filterFields(fields, "SENSOR_RATE_");
-    }
-
-    private List<Field> filterFields(List<Field> fields, String prefix) {
-        List<Field> result = new LinkedList<>();
-        for (Field f : fields) {
-            if (f.getName().startsWith(prefix)) {
-                result.add(f);
-            }
-        }
-        return result;
-    }
-}
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarTest.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarTest.java
deleted file mode 100644
index d707253..0000000
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/CarTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.support.car.apitest;
-
-import android.os.Looper;
-import android.support.car.Car;
-import android.support.car.CarConnectionCallback;
-import android.support.car.hardware.CarSensorManager;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-@MediumTest
-public class CarTest extends AndroidTestCase {
-    private static final long DEFAULT_WAIT_TIMEOUT_MS = 3000;
-
-    private final Semaphore mConnectionWait = new Semaphore(0);
-
-    private final CarConnectionCallback mConnectionCallbacks =
-            new CarConnectionCallback() {
-
-        @Override
-        public void onDisconnected(Car car) {
-            assertMainThread();
-        }
-
-        @Override
-        public void onConnected(Car car) {
-            assertMainThread();
-            mConnectionWait.release();
-        }
-    };
-
-    private void assertMainThread() {
-        assertTrue(Looper.getMainLooper().isCurrentThread());
-    }
-
-    private void waitForConnection(long timeoutMs) throws InterruptedException {
-        mConnectionWait.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS);
-    }
-
-    public void testCarConnection() throws Exception {
-        Car car = Car.createCar(getContext(), mConnectionCallbacks);
-        assertFalse(car.isConnected());
-        assertFalse(car.isConnecting());
-        car.connect();
-        //TODO fix race here
-        assertTrue(car.isConnecting());
-        waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
-        assertTrue(car.isConnected());
-        assertFalse(car.isConnecting());
-        CarSensorManager carSensorManager =
-                (CarSensorManager) car.getCarManager(Car.SENSOR_SERVICE);
-        assertNotNull(carSensorManager);
-        CarSensorManager carSensorManager2 =
-                (CarSensorManager) car.getCarManager(Car.SENSOR_SERVICE);
-        assertEquals(carSensorManager, carSensorManager2);
-        Object noSuchService = car.getCarManager("No such service");
-        assertNull(noSuchService);
-        // double disconnect should be safe.
-        car.disconnect();
-        car.disconnect();
-        assertFalse(car.isConnected());
-        assertFalse(car.isConnecting());
-    }
-
-    public void testDoubleConnect() throws Exception {
-        Car car = Car.createCar(getContext(), mConnectionCallbacks);
-        assertFalse(car.isConnected());
-        assertFalse(car.isConnecting());
-        car.connect();
-        try {
-            car.connect();
-            fail("double connect should throw an exception");
-        } catch (IllegalStateException e) {
-            // expected
-        }
-        car.disconnect();
-    }
-}
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/TestAction.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/TestAction.java
deleted file mode 100644
index 472b825..0000000
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/TestAction.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.support.car.apitest;
-
-import android.util.Log;
-
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-import junit.framework.Assert;
-
-/**
- * A generic test action, whose run method will be called with a parameter.
- */
-public abstract class TestAction<T> {
-    /** for passing additional test specific parameters */
-    public volatile Object arg0;
-    public volatile Object arg1;
-    private static final String TAG = "CAR.TEST";
-    private Throwable mLastThrowable;
-    private Semaphore mWaitSemaphore = new Semaphore(0);
-
-    abstract public void run(T param);
-
-    public void doRun(T param) {
-        Log.i(TAG, "TestAction doRun " + this + " param:" + param);
-        try {
-            run(param);
-        } catch (Throwable t) {
-            Log.i(TAG, "TestAction doRun get exception", t);
-            mLastThrowable = t;
-        }
-        mWaitSemaphore.release();
-    }
-
-    public void assertTestRun(long timeoutMs) throws Throwable {
-        if (!mWaitSemaphore.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
-            Assert.fail("timeout");
-        }
-        if (mLastThrowable != null) {
-            throw mLastThrowable;
-        }
-    }
-
-    public void assertNotRun(long waitMs) throws Throwable {
-        if (!mWaitSemaphore.tryAcquire(waitMs, TimeUnit.MILLISECONDS)) {
-            return;
-        }
-        if (mLastThrowable != null) {
-            Log.e(TAG, "Action was run, but failed");
-            throw mLastThrowable;
-        }
-        Assert.fail("Action was run");
-    }
-
-    public boolean waitForTest(long timeoutMs) throws Throwable {
-        if (mWaitSemaphore.tryAcquire(timeoutMs, TimeUnit.MILLISECONDS)) {
-            if (mLastThrowable != null) {
-                throw mLastThrowable;
-            }
-            return true;
-        }
-        return false;
-    }
-
-    public void resetRunState() {
-        mWaitSemaphore.drainPermits();
-    }
-
-    public static <U> TestAction<U> buildEmptyAction() {
-        return new TestAction<U>() {
-            @Override
-            public void run(U param) {
-            }
-        };
-    }
-}
diff --git a/tests/android_support_car_api_test/src/com/android/support/car/apitest/TestUtil.java b/tests/android_support_car_api_test/src/com/android/support/car/apitest/TestUtil.java
deleted file mode 100644
index 71213ad..0000000
--- a/tests/android_support_car_api_test/src/com/android/support/car/apitest/TestUtil.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.support.car.apitest;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.LinkedList;
-import java.util.List;
-
-public class TestUtil {
-
-    public static List<Field> getAllPublicStaticFinalMembers(Class cls, Class typeClass) {
-        List<Field> result = new LinkedList<>();
-        for (Field f : cls.getDeclaredFields()) {
-            int mod = f.getModifiers();
-            if (Modifier.isPublic(mod) && Modifier.isStatic(mod) && Modifier.isFinal(mod)) {
-                result.add(f);
-            }
-        }
-        return result;
-    }
-}
diff --git a/tests/carservice_test/Android.mk b/tests/carservice_test/Android.mk
index d4c327c..0215cd1 100644
--- a/tests/carservice_test/Android.mk
+++ b/tests/carservice_test/Android.mk
@@ -38,16 +38,21 @@
 LOCAL_PROGUARD_ENABLED := disabled
 
 LOCAL_STATIC_JAVA_LIBRARIES := junit
-LOCAL_STATIC_JAVA_LIBRARIES += car-service-lib-for-test \
-                               vehicle-hal-support-lib \
-                               car-systemtest \
-                               mockito-target-inline \
-                               android-support-test \
-                               android.hardware.automotive.vehicle-V2.0-java \
-                               com.android.car.test.utils \
-                               truth-prebuilt
+LOCAL_STATIC_JAVA_LIBRARIES += \
+    car-service-lib-for-test \
+    vehicle-hal-support-lib \
+    car-systemtest \
+    mockito-target-inline \
+    android-support-test \
+    android.hardware.automotive.vehicle-V2.0-java \
+    com.android.car.test.utils \
+    truth-prebuilt
 
-LOCAL_JAVA_LIBRARIES := android.car android.test.runner android.test.base
+LOCAL_JAVA_LIBRARIES := \
+    android.car \
+    android.car.user \
+    android.test.runner \
+    android.test.base
 
 LOCAL_JNI_SHARED_LIBRARIES := libdexmakerjvmtiagent
 
diff --git a/tests/carservice_test/src/com/android/car/CarDrivingRestrictionsTest.java b/tests/carservice_test/src/com/android/car/CarDrivingRestrictionsTest.java
index 31ed4b2..7f94cbb 100644
--- a/tests/carservice_test/src/com/android/car/CarDrivingRestrictionsTest.java
+++ b/tests/carservice_test/src/com/android/car/CarDrivingRestrictionsTest.java
@@ -48,6 +48,16 @@
             .getSimpleName();
     private CarDrivingStateManager mCarDrivingStateManager;
     private CarUxRestrictionsManager mCarUxRManager;
+    // Currently set restrictions currently set in car_ux_restrictions_map.xml
+    private static final int UX_RESTRICTIONS_MOVING = CarUxRestrictions.UX_RESTRICTIONS_NO_DIALPAD
+            | CarUxRestrictions.UX_RESTRICTIONS_NO_FILTERING
+            | CarUxRestrictions.UX_RESTRICTIONS_LIMIT_STRING_LENGTH
+            | CarUxRestrictions.UX_RESTRICTIONS_NO_KEYBOARD
+            | CarUxRestrictions.UX_RESTRICTIONS_NO_VIDEO
+            | CarUxRestrictions.UX_RESTRICTIONS_LIMIT_CONTENT
+            | CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP
+            | CarUxRestrictions.UX_RESTRICTIONS_NO_TEXT_MESSAGE;
+
 
     @Override
     protected synchronized void configureMockedHal() {
@@ -128,8 +138,7 @@
         restrictions = listener.waitForUxRestrictionsChange();
         assertNotNull(restrictions);
         assertTrue(restrictions.isRequiresDistractionOptimization());
-        assertThat(restrictions.getActiveRestrictions())
-                .isEqualTo(CarUxRestrictions.UX_RESTRICTIONS_FULLY_RESTRICTED);
+        assertThat(restrictions.getActiveRestrictions()).isEqualTo(UX_RESTRICTIONS_MOVING);
 
         // Test Idling state and corresponding restrictions based on car_ux_restrictions_map.xml
         listener.reset();
diff --git a/tests/carservice_test/src/com/android/car/CarPackageManagerTest.java b/tests/carservice_test/src/com/android/car/CarPackageManagerTest.java
index 9c65555..84afde9 100644
--- a/tests/carservice_test/src/com/android/car/CarPackageManagerTest.java
+++ b/tests/carservice_test/src/com/android/car/CarPackageManagerTest.java
@@ -25,6 +25,7 @@
 import android.car.content.pm.CarAppBlockingPolicy;
 import android.car.content.pm.CarPackageManager;
 import android.support.test.filters.SmallTest;
+import android.support.test.filters.Suppress;
 import android.support.test.runner.AndroidJUnit4;
 import android.util.Log;
 
@@ -82,6 +83,9 @@
         assertFalse(mCarPm.isServiceDistractionOptimized(serviceClassName, null));
     }
 
+    // TODO(b/113531788): Suppress this temporarily. Need to find the cause of issue and re-evaluate
+    // if the test is necessary.
+    @Suppress
     @Test
     public void testSettingWhitelist() throws Exception {
         init(false);
diff --git a/tests/carservice_test/src/com/android/car/VmsHalServiceSubscriptionEventTest.java b/tests/carservice_test/src/com/android/car/VmsHalServiceSubscriptionEventTest.java
index 82c9361..16b0572 100644
--- a/tests/carservice_test/src/com/android/car/VmsHalServiceSubscriptionEventTest.java
+++ b/tests/carservice_test/src/com/android/car/VmsHalServiceSubscriptionEventTest.java
@@ -25,6 +25,8 @@
 import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyChangeMode;
+import android.hardware.automotive.vehicle.V2_0.VmsAvailabilityStateIntegerValuesIndex;
+import android.hardware.automotive.vehicle.V2_0.VmsBaseMessageIntegerValuesIndex;
 import android.hardware.automotive.vehicle.V2_0.VmsMessageType;
 import android.hardware.automotive.vehicle.V2_0.VmsMessageWithLayerIntegerValuesIndex;
 import android.hardware.automotive.vehicle.V2_0.VmsSubscriptionsStateIntegerValuesIndex;
@@ -66,9 +68,9 @@
 
     @Override
     public void setUp() throws Exception {
+        mHalHandlerSemaphore = new Semaphore(0);
         super.setUp();
         mHal = getMockedVehicleHal();
-        mHalHandlerSemaphore = new Semaphore(0);
     }
 
     @Test
@@ -99,19 +101,30 @@
      * responds with the same layers.
      */
     private void subscriptionTestLogic(List<VmsLayer> layers) throws Exception {
+        // Wait for availability change message that signals the service is ready.
+        assertTrue(mHalHandlerSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
+        // Validate response.
+        ArrayList<Integer> v = mHalHandler.getValues();
+        int messageType = v.get(VmsBaseMessageIntegerValuesIndex.MESSAGE_TYPE);
+        int sequenceNumber = v.get(VmsAvailabilityStateIntegerValuesIndex.SEQUENCE_NUMBER);
+        assertEquals(VmsMessageType.AVAILABILITY_CHANGE, messageType);
+        assertEquals(0, sequenceNumber);
+
         for (VmsLayer layer : layers) {
             subscribeViaHal(layer);
         }
         // Send subscription request.
         mHal.injectEvent(createHalSubscriptionRequest());
-        // Wait for response.
+
+        // Wait for subscription response
         assertTrue(mHalHandlerSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
+
         // Validate response.
-        ArrayList<Integer> v = mHalHandler.getValues();
-        int messageType = v.get(VmsSubscriptionsStateIntegerValuesIndex.MESSAGE_TYPE);
-        int sequenceNumber = v.get(VmsSubscriptionsStateIntegerValuesIndex.SEQUENCE_NUMBER);
-        int numberLayers = v.get(VmsSubscriptionsStateIntegerValuesIndex.NUMBER_OF_LAYERS);
+        v = mHalHandler.getValues();
+        messageType = v.get(VmsBaseMessageIntegerValuesIndex.MESSAGE_TYPE);
         assertEquals(VmsMessageType.SUBSCRIPTIONS_RESPONSE, messageType);
+        sequenceNumber = v.get(VmsSubscriptionsStateIntegerValuesIndex.SEQUENCE_NUMBER);
+        int numberLayers = v.get(VmsSubscriptionsStateIntegerValuesIndex.NUMBER_OF_LAYERS);
         assertEquals(layers.size(), numberLayers);
         List<VmsLayer> receivedLayers = new ArrayList<>();
         int start = VmsSubscriptionsStateIntegerValuesIndex.SUBSCRIPTIONS_START;
@@ -136,11 +149,11 @@
         assertTrue(mHalHandlerSemaphore.tryAcquire(2L, TimeUnit.SECONDS));
         // Validate response.
         ArrayList<Integer> v = mHalHandler.getValues();
-        int messsageType = v.get(VmsMessageWithLayerIntegerValuesIndex.MESSAGE_TYPE);
+        int messsageType = v.get(VmsBaseMessageIntegerValuesIndex.MESSAGE_TYPE);
+        assertEquals(VmsMessageType.SUBSCRIBE, messsageType);
         int layerId = v.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_TYPE);
         int layerVersion = v.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_VERSION);
         int fused = v.get(VmsMessageWithLayerIntegerValuesIndex.LAYER_SUBTYPE);
-        assertEquals(VmsMessageType.SUBSCRIBE, messsageType);
         assertEquals(layer.getType(), layerId);
         assertEquals(layer.getVersion(), layerVersion);
     }
@@ -173,4 +186,4 @@
             return mValues;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/tests/carservice_test/src/com/android/car/VmsOperationRecorderTest.java b/tests/carservice_test/src/com/android/car/VmsOperationRecorderTest.java
index 7820936..c05ec99 100644
--- a/tests/carservice_test/src/com/android/car/VmsOperationRecorderTest.java
+++ b/tests/carservice_test/src/com/android/car/VmsOperationRecorderTest.java
@@ -26,8 +26,6 @@
 import android.support.test.runner.AndroidJUnit4;
 import android.util.Log;
 
-import junit.framework.TestCase;
-
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -112,13 +110,13 @@
     @Test
     public void testSetLayersOffering0() throws Exception {
         mRecorder.setLayersOffering(layersOffering0);
-        assertJsonMsgEquals("{'setLayersOffering':{}}");
+        assertJsonMsgEquals("{'setLayersOffering':{'publisherId':66}}");
     }
 
     @Test
     public void testSetLayersOffering2() throws Exception {
         mRecorder.setLayersOffering(layersOffering2);
-        assertJsonMsgEquals("{'setLayersOffering':{'layerDependency':["
+        assertJsonMsgEquals("{'setLayersOffering':{'publisherId':66,'layerDependency':["
                 + "{'layer':{'type':3,'subtype':5,'version':4}},"
                 + "{'layer':{'type':1,'subtype':3,'version':2},'dependency':["
                 + "{'type':2,'subtype':4,'version':3},{'type':3,'subtype':5,'version':4}]}"
@@ -175,13 +173,13 @@
     @Test
     public void testSetPublisherLayersOffering() throws Exception {
         mRecorder.setPublisherLayersOffering(layersOffering1);
-        assertJsonMsgEquals("{'setPublisherLayersOffering':{'layerDependency':["
+        assertJsonMsgEquals("{'setPublisherLayersOffering':{'publisherId':66,'layerDependency':["
                 + "{'layer':{'type':3,'subtype':5,'version':4}}]}}");
     }
 
     @Test public void testSetHalPublisherLayersOffering() throws Exception {
         mRecorder.setHalPublisherLayersOffering(layersOffering1);
-        assertJsonMsgEquals("{'setHalPublisherLayersOffering':{'layerDependency':["
+        assertJsonMsgEquals("{'setHalPublisherLayersOffering':{'publisherId':66,'layerDependency':["
                 + "{'layer':{'type':3,'subtype':5,'version':4}}]}}");
     }
 
diff --git a/tests/carservice_test/src/com/android/car/VmsSubscriberManagerTest.java b/tests/carservice_test/src/com/android/car/VmsSubscriberManagerTest.java
index 643ffff..63b0e62 100644
--- a/tests/carservice_test/src/com/android/car/VmsSubscriberManagerTest.java
+++ b/tests/carservice_test/src/com/android/car/VmsSubscriberManagerTest.java
@@ -119,9 +119,9 @@
     @Override
     public void setUp() throws Exception {
         mExecutor = new ThreadPerTaskExecutor();
-        super.setUp();
         mSubscriberSemaphore = new Semaphore(0);
         mHalHandlerSemaphore = new Semaphore(0);
+        super.setUp();
     }
 
     // Test injecting a value in the HAL and verifying it propagates to a subscriber.
diff --git a/tests/carservice_test/src/com/android/car/garagemode/ControllerTest.java b/tests/carservice_test/src/com/android/car/garagemode/ControllerTest.java
new file mode 100644
index 0000000..d724161
--- /dev/null
+++ b/tests/carservice_test/src/com/android/car/garagemode/ControllerTest.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.garagemode;
+
+import static com.android.car.garagemode.GarageMode.ACTION_GARAGE_MODE_OFF;
+import static com.android.car.garagemode.GarageMode.ACTION_GARAGE_MODE_ON;
+import static com.android.car.garagemode.GarageMode.JOB_SNAPSHOT_INITIAL_UPDATE_MS;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.hardware.power.CarPowerManager;
+import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.Looper;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class ControllerTest {
+    private static final Logger LOG = new Logger("ControllerTest");
+
+    @Mock private Context mContextMock;
+    @Mock private Looper mLooperMock;
+    @Mock private Handler mHandlerMock;
+    @Mock private Car mCarMock;
+    @Mock private CarPowerManager mCarPowerManagerMock;
+    @Captor private ArgumentCaptor<Intent> mIntentCaptor;
+    @Captor private ArgumentCaptor<Integer> mIntegerCaptor;
+
+    private static final String[] sTemplateWakeupSchedule = new String[] {
+            "15m,1",
+            "6h,4",
+            "1d,1"};
+    private static final int[] sTemplateWakeupScheduleSeconds = new int[] {
+            15 * 60,
+            6 * 60 * 60,
+            6 * 60 * 60,
+            6 * 60 * 60,
+            6 * 60 * 60,
+            24 * 60 * 60};
+    private Controller mController;
+    private WakeupPolicy mWakeupPolicy;
+    private CompletableFuture<Void> mFuture;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mWakeupPolicy = new WakeupPolicy(sTemplateWakeupSchedule);
+        mController = new Controller(
+                mContextMock,
+                mLooperMock,
+                mWakeupPolicy,
+                mHandlerMock,
+                null,
+                mCarMock);
+        mController.setCarPowerManager(mCarPowerManagerMock);
+        mFuture = new CompletableFuture<>();
+    }
+
+    @Test
+    public void testOnSuspendEnter_shouldInitiateGarageMode() {
+        startAndAssertGarageModeWithSignal(CarPowerStateListener.SUSPEND_ENTER);
+        verify(mContextMock).sendBroadcast(mIntentCaptor.capture());
+        verifyGarageModeBroadcast(mIntentCaptor.getAllValues(), 1, ACTION_GARAGE_MODE_ON);
+    }
+
+    @Test
+    public void testOnShutdownEnter_shouldInitiateGarageMode() {
+        startAndAssertGarageModeWithSignal(CarPowerStateListener.SHUTDOWN_ENTER);
+        verify(mContextMock).sendBroadcast(mIntentCaptor.capture());
+        verifyGarageModeBroadcast(mIntentCaptor.getAllValues(), 1, ACTION_GARAGE_MODE_ON);
+    }
+
+    @Test
+    public void testOnShutdownCancelled_shouldCancelGarageMode() {
+        startAndAssertGarageModeWithSignal(CarPowerStateListener.SUSPEND_ENTER);
+
+        // Sending shutdown cancelled signal to controller, GarageMode should wrap up and stop
+        mController.onStateChanged(CarPowerStateListener.SHUTDOWN_CANCELLED, null);
+
+        // Verify that wake up counter is reset and GarageMode is not active anymore
+        assertThat(mController.mWakeupPolicy.mIndex).isEqualTo(0);
+        assertThat(mController.isGarageModeActive()).isFalse();
+
+        // Verify that monitoring thread has stopped
+        verify(mHandlerMock).removeCallbacks(any(Runnable.class));
+
+        // Verify that OFF signal broadcasted to JobScheduler
+        verify(mContextMock, times(2)).sendBroadcast(mIntentCaptor.capture());
+        verifyGarageModeBroadcast(mIntentCaptor.getAllValues(), 1, ACTION_GARAGE_MODE_ON);
+        verifyGarageModeBroadcast(mIntentCaptor.getAllValues(), 2, ACTION_GARAGE_MODE_OFF);
+
+        // Verify that bounded future got cancelled
+        assertThat(mFuture.isDone()).isTrue();
+        assertThat(mFuture.isCancelled()).isTrue();
+    }
+
+    @Test
+    public void testWakeupTimeProgression() throws CarNotConnectedException {
+        // Doing initial suspend
+        startAndAssertGarageModeWithSignal(CarPowerStateListener.SUSPEND_ENTER);
+
+        // Finish GarageMode and check next scheduled time
+        mController.finishGarageMode();
+        assertThat(mController.isGarageModeActive()).isFalse();
+
+        // Start GarageMode again without waking up car
+        mFuture = new CompletableFuture<>();
+        mController.onStateChanged(CarPowerStateListener.SUSPEND_ENTER, mFuture);
+
+        assertThat(mController.mWakeupPolicy.mIndex).isEqualTo(2);
+        assertThat(mController.isGarageModeActive()).isTrue();
+
+        // Finish GarageMode and check next scheduled time
+        mController.finishGarageMode();
+        assertThat(mController.isGarageModeActive()).isFalse();
+
+        for (int i = 0; i < 4; i++) {
+            mFuture = new CompletableFuture<>();
+            mController.onStateChanged(CarPowerStateListener.SUSPEND_ENTER, mFuture);
+            mController.finishGarageMode();
+            assertThat(mController.isGarageModeActive()).isFalse();
+            assertThat(mController.mWakeupPolicy.mIndex).isEqualTo(i + 3);
+        }
+        verify(mCarPowerManagerMock, times(6)).scheduleNextWakeupTime(mIntegerCaptor.capture());
+        verifyScheduledTimes(mIntegerCaptor.getAllValues());
+    }
+
+    private void verifyGarageModeBroadcast(List<Intent> intents, int times, String action) {
+        // Capture sent intent and verify that it is correct
+        Intent i = intents.get(times - 1);
+        assertThat(i.getAction()).isEqualTo(action);
+
+        // Verify that additional critical flags are bundled as well
+        final int flags = Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_NO_ABORT;
+        boolean areRequiredFlagsSet = ((flags & i.getFlags()) == flags);
+        assertThat(areRequiredFlagsSet).isTrue();
+    }
+
+    private void verifyScheduledTimes(List<Integer> ints) {
+        int idx = 0;
+        for (int i : ints) {
+            assertThat(i).isEqualTo(sTemplateWakeupScheduleSeconds[idx++]);
+        }
+    }
+
+    private void startAndAssertGarageModeWithSignal(int signal) {
+        assertThat(mController.mWakeupPolicy.mIndex).isEqualTo(0);
+
+        // Sending notification that state has changed
+        mController.onStateChanged(signal, mFuture);
+
+        // Assert that GarageMode has been started
+        assertThat(mController.isGarageModeActive()).isTrue();
+        assertThat(mController.mWakeupPolicy.mIndex).isEqualTo(1);
+
+        // Verify that worker that polls running jobs from JobScheduler is scheduled.
+        verify(mHandlerMock).postDelayed(any(), eq(JOB_SNAPSHOT_INITIAL_UPDATE_MS));
+    }
+}
diff --git a/tests/carservice_test/src/com/android/car/garagemode/GarageModeServiceTest.java b/tests/carservice_test/src/com/android/car/garagemode/GarageModeServiceTest.java
index 8a9a90d..b67c50d 100644
--- a/tests/carservice_test/src/com/android/car/garagemode/GarageModeServiceTest.java
+++ b/tests/carservice_test/src/com/android/car/garagemode/GarageModeServiceTest.java
@@ -16,286 +16,52 @@
 
 package com.android.car.garagemode;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
-import android.car.settings.CarSettings;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.ContentResolver;
 import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.HandlerThread;
-import android.os.Looper;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.annotation.UiThreadTest;
-import android.support.test.filters.MediumTest;
+import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
 
-import com.android.car.CarPowerManagementService;
-import com.android.car.DeviceIdleControllerWrapper;
-import com.android.car.R;
-
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 
+import java.io.PrintWriter;
 import java.util.List;
 
 @RunWith(AndroidJUnit4.class)
-@MediumTest
+@SmallTest
 public class GarageModeServiceTest {
-    private static final int WAIT_FOR_COMPLETION_TIME_MS = 3000;
+    @Mock private Context mMockContext;
+    @Mock private Controller mMockController;
+    @Mock private ContentResolver mMockContentResolver;
+    @Mock private PrintWriter mMockPrintWriter;
+    @Captor private ArgumentCaptor<String> mCaptorString;
 
-    @Test
-    @UiThreadTest
-    public void testMaintenanceActive() throws Exception {
-        MockCarPowerManagementService powerManagementService = new MockCarPowerManagementService();
-        MockDeviceIdleController controller = new MockDeviceIdleController(true);
-        GarageModeServiceForTest garageMode = new GarageModeServiceForTest(getContext(),
-                powerManagementService,
-                controller);
-        garageMode.init();
-        final int index1 = garageMode.getGarageModeIndex();
-        assertEquals(garageMode.getMaintenanceWindow(),
-                powerManagementService.doNotifyPrepareShutdown(false));
-        assertEquals(true, garageMode.isInGarageMode());
-        assertEquals(true, garageMode.isMaintenanceActive());
+    private GarageModeService mService;
 
-        controller.setMaintenanceActivity(false);
-        assertEquals(false, garageMode.isInGarageMode());
-        assertEquals(false, garageMode.isMaintenanceActive());
-        final int index2 = garageMode.getGarageModeIndex();
-
-        assertEquals(1, index2 - index1);
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mMockContext.getContentResolver()).thenReturn(mMockContentResolver);
+        mService = new GarageModeService(mMockContext, mMockController);
     }
 
     @Test
-    @UiThreadTest
-    public void testMaintenanceInactive() throws Exception {
-        MockCarPowerManagementService powerManagementService = new MockCarPowerManagementService();
-        MockDeviceIdleController controller = new MockDeviceIdleController(false);
-        GarageModeServiceForTest garageMode = new GarageModeServiceForTest(getContext(),
-                powerManagementService,
-                controller);
-        garageMode.init();
-        assertEquals(garageMode.getMaintenanceWindow(),
-                powerManagementService.doNotifyPrepareShutdown(false));
-        assertEquals(true, garageMode.isInGarageMode());
-        assertEquals(false, garageMode.isMaintenanceActive());
-    }
+    public void testDump_shouldSucceed() {
+        when(mMockController.isGarageModeActive()).thenReturn(true);
 
-    @Test
-    @UiThreadTest
-    public void testDisplayOn() throws Exception {
-        MockCarPowerManagementService powerManagementService = new MockCarPowerManagementService();
-        MockDeviceIdleController controller = new MockDeviceIdleController(true);
-        GarageModeServiceForTest garageMode = new GarageModeServiceForTest(getContext(),
-                powerManagementService,
-                controller);
-        garageMode.init();
-
-        powerManagementService.doNotifyPrepareShutdown(false);
-        assertTrue(garageMode.getGarageModeIndex() > 0);
-        powerManagementService.doNotifyPowerOn(true);
-        assertEquals(0, garageMode.getGarageModeIndex());
-    }
-
-    @Test
-    @UiThreadTest
-    public void testPolicyIndexing() throws Exception {
-        // Background processing of asynchronous messages.
-        HandlerThread thread = new HandlerThread("testPolicy");
-        thread.start();
-
-        // Test that the index is saved in the prefs and that this index is used to determine the
-        // next wakeup time.
-        MockCarPowerManagementService powerManagementService = new MockCarPowerManagementService();
-        MockDeviceIdleController controller = new MockDeviceIdleController(true);
-        GarageModeServiceForTest garageMode = new GarageModeServiceForTest(getContext(),
-                powerManagementService,
-                controller,
-                thread.getLooper());
-        GarageModePolicy policy = new GarageModePolicy(new String[] {
-                "15m,1",
-                "6h,8",
-                "1d,5",
-        });
-        SharedPreferences prefs =
-                getContext().getSharedPreferences("testPolicy", Context.MODE_PRIVATE);
-        prefs.edit().putInt("garage_mode_index", 0).apply();
-        garageMode.init(policy, prefs);
-
-        assertEquals(15 * 60, garageMode.getWakeupTime());
-        garageMode.onPrepareShutdown(false);
-        garageMode.onShutdown();
-        assertEquals(6 * 60 * 60, garageMode.getWakeupTime());
-        Thread.sleep(WAIT_FOR_COMPLETION_TIME_MS);
-        assertEquals(1, prefs.getInt("garage_mode_index", 0));
-
-        garageMode = new GarageModeServiceForTest(getContext(),
-                powerManagementService,
-                controller,
-                thread.getLooper());
-        // Jump ahead 8 restarts.
-        prefs = getContext().getSharedPreferences("testPolicy", Context.MODE_PRIVATE);
-        prefs.edit().putInt("garage_mode_index", 8).apply();
-        garageMode.init(policy, prefs);
-
-        assertEquals(6 * 60 * 60, garageMode.getWakeupTime());
-        garageMode.onPrepareShutdown(false);
-        garageMode.onShutdown();
-        assertEquals(24 * 60 * 60, garageMode.getWakeupTime());
-        Thread.sleep(WAIT_FOR_COMPLETION_TIME_MS);
-        assertEquals(9, prefs.getInt("garage_mode_index", 0));
-    }
-
-    @Test
-    public void testPolicyParserValid() throws Exception {
-        WakeupInterval[] expected = new WakeupInterval[] {
-            new WakeupInterval(15 * 60, 1),
-            new WakeupInterval(6 * 60 * 60, 8),
-            new WakeupInterval(24 * 60 * 60, 5),
-        };
-        List<WakeupInterval> received = new GarageModePolicy(new String[] {
-                "15m,1",
-                "6h,8",
-                "1d,5",
-        }).getWakeupIntervals();
-
-        assertEquals(expected.length, received.size());
-        for (int i = 0; i < expected.length; i++) {
-            assertEquals(expected[i].getWakeupInterval(), received.get(i).getWakeupInterval());
-            assertEquals(expected[i].getNumAttempts(), received.get(i).getNumAttempts());
-        }
-    }
-
-    @Test
-    public void testPolicyParser() {
-        GarageModePolicy policy;
-
-        policy = new GarageModePolicy(null);
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {""});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {"15,1"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {"15y,1"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {"15m"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {"15m,Q"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {"15m,-1"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {",1"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {"m,1"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {"Qm,1"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-        policy = new GarageModePolicy(new String[] {"-10m,1"});
-        assertEquals(0, policy.getWakeupIntervals().size());
-
-    }
-
-    @Test
-    public void testPolicyInResource() throws Exception {
-        // Test that the policy in the resource file parses fine.
-        GarageModePolicy policy = new GarageModePolicy(getContext().getResources().getStringArray(
-                R.array.config_garageModeCadence));
-        assertTrue(policy.getWakeupIntervals().size() > 0);
-    }
-
-    private static class MockCarPowerManagementService extends CarPowerManagementService {
-        public long doNotifyPrepareShutdown(boolean shuttingdown) {
-            return notifyPrepareShutdown(shuttingdown);
-        }
-
-        public void doNotifyPowerOn(boolean displayOn) {
-            notifyPowerOn(displayOn);
-        }
-    }
-
-    private static class GarageModeServiceForTest extends GarageModeService {
-        GarageModeServiceForTest(Context context,
-                CarPowerManagementService powerManagementService,
-                DeviceIdleControllerWrapper controllerWrapper,
-                Looper looper) {
-            super(context, powerManagementService, controllerWrapper, looper);
-        }
-
-        GarageModeServiceForTest(Context context,
-                CarPowerManagementService powerManagementService,
-                DeviceIdleControllerWrapper controllerWrapper) {
-            super(context, powerManagementService, controllerWrapper, Looper.myLooper());
-        }
-
-        public long getMaintenanceWindow() {
-            return CarSettings.DEFAULT_GARAGE_MODE_MAINTENANCE_WINDOW;
-        }
-
-        public boolean isInGarageMode() {
-            synchronized (this) {
-                return mInGarageMode;
-            }
-        }
-
-        public boolean isMaintenanceActive() {
-            synchronized (this) {
-                return mMaintenanceActive;
-            }
-        }
-
-        public int getGarageModeIndex() {
-            synchronized (this) {
-                return mGarageModeIndex;
-            }
-        }
-    }
-
-    private Context getContext() {
-        return InstrumentationRegistry.getTargetContext();
-    }
-
-    private static class MockDeviceIdleController extends DeviceIdleControllerWrapper {
-
-        private final boolean mInitialActive;
-
-        MockDeviceIdleController(boolean active) {
-            super();
-            mInitialActive = active;
-        }
-
-        @Override
-        protected boolean startLocked() {
-            return mInitialActive;
-        }
-
-        @Override
-        public void stopTracking() {
-            // nothing to clean up
-        }
-
-        @Override
-        protected void reportActiveLocked(final boolean active) {
-            // directly calling the callback instead of posting to handler, to make testing easier.
-            if (mListener.get() != null) {
-                mListener.get().onMaintenanceActivityChanged(active);
-            }
-        }
-
-        public void setMaintenanceActivity(boolean active) {
-            super.setMaintenanceActivity(active);
-        }
+        mService.dump(mMockPrintWriter);
+        verify(mMockPrintWriter).println(mCaptorString.capture());
+        List<String> strings = mCaptorString.getAllValues();
+        assertThat(strings.get(0)).isEqualTo("GarageModeInProgress true");
     }
 }
diff --git a/tests/carservice_test/src/com/android/car/garagemode/WakeupPolicyTest.java b/tests/carservice_test/src/com/android/car/garagemode/WakeupPolicyTest.java
new file mode 100644
index 0000000..0a36754
--- /dev/null
+++ b/tests/carservice_test/src/com/android/car/garagemode/WakeupPolicyTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.garagemode;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import com.android.car.R;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class WakeupPolicyTest {
+    @Test
+    public void testPolicyParser() {
+        WakeupPolicy policy;
+
+        policy = new WakeupPolicy(null);
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {""});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {"15,1"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {"15y,1"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {"15m"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {"15m,Q"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {"15m,-1"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {",1"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {"m,1"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {"Qm,1"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+
+        policy = new WakeupPolicy(new String[] {"-10m,1"});
+        assertThat(policy.getWakupIntervalsAmount()).isEqualTo(0);
+    }
+
+    @Test
+    public void testPolicyInResource() throws Exception {
+        // Test that the policy in the resource file parses fine.
+        WakeupPolicy policy = new WakeupPolicy(
+                getContext().getResources().getStringArray(R.array.config_garageModeCadence));
+        assertThat(policy.getWakupIntervalsAmount() > 0).isTrue();
+    }
+
+    private Context getContext() {
+        return InstrumentationRegistry.getTargetContext();
+    }
+}
diff --git a/tests/carservice_unit_test/Android.mk b/tests/carservice_unit_test/Android.mk
index 06e50b7..9ea3b6d 100644
--- a/tests/carservice_unit_test/Android.mk
+++ b/tests/carservice_unit_test/Android.mk
@@ -36,6 +36,7 @@
 
 LOCAL_JAVA_LIBRARIES := \
     android.car \
+    android.car.user \
     android.test.runner \
     android.test.base
 
diff --git a/tests/carservice_unit_test/src/com/android/car/CarLocationServiceTest.java b/tests/carservice_unit_test/src/com/android/car/CarLocationServiceTest.java
index b071e99..bee8282 100644
--- a/tests/carservice_unit_test/src/com/android/car/CarLocationServiceTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/CarLocationServiceTest.java
@@ -18,6 +18,7 @@
 
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
@@ -26,12 +27,14 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.car.Car;
 import android.car.hardware.CarPropertyValue;
 import android.car.hardware.CarSensorEvent;
 import android.car.hardware.CarSensorManager;
+import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
 import android.car.hardware.property.CarPropertyEvent;
 import android.car.hardware.property.ICarPropertyEventListener;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -62,6 +65,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
 import java.util.stream.Collectors;
 
@@ -74,7 +78,6 @@
  * 1. {@link Context} provides files and a mocked {@link LocationManager}.
  * 2. {@link LocationManager} provides dummy {@link Location}s.
  * 3. {@link CarPropertyService} registers a listener for ignition state events.
- * 3. {@link CarPowerManagementService} registers a handler for power events.
  * 4. {@link CarUserManagerHelper} tells whether or not the system user is headless.
  */
 @RunWith(AndroidJUnit4.class)
@@ -84,10 +87,10 @@
     private CarLocationService mCarLocationService;
     private Context mContext;
     private CountDownLatch mLatch;
+    private Car mCar;
     @Mock private Context mMockContext;
     @Mock private LocationManager mMockLocationManager;
     @Mock private CarPropertyService mMockCarPropertyService;
-    @Mock private CarPowerManagementService mMockCarPowerManagementService;
     @Mock private CarUserManagerHelper mMockCarUserManagerHelper;
 
     /**
@@ -98,8 +101,9 @@
         MockitoAnnotations.initMocks(this);
         mContext = InstrumentationRegistry.getTargetContext();
         mLatch = new CountDownLatch(1);
-        mCarLocationService = new CarLocationService(mMockContext, mMockCarPowerManagementService,
-                mMockCarPropertyService, mMockCarUserManagerHelper) {
+        mCar = new Car(mContext, null, null);
+        mCarLocationService = new CarLocationService(
+                mMockContext, mMockCarPropertyService, mMockCarUserManagerHelper, mCar) {
             @Override
             void asyncOperation(Runnable operation) {
                 super.asyncOperation(() -> {
@@ -143,8 +147,6 @@
     public void testRegistersToReceiveEvents() {
         ArgumentCaptor<IntentFilter> argument = ArgumentCaptor.forClass(IntentFilter.class);
         mCarLocationService.init();
-        verify(mMockCarPowerManagementService).registerPowerEventProcessingHandler(
-                mCarLocationService);
         verify(mMockContext).registerReceiver(eq(mCarLocationService), argument.capture());
         IntentFilter intentFilter = argument.getValue();
         assertEquals(4, intentFilter.countActions());
@@ -203,7 +205,7 @@
     }
 
     /**
-     * Test that the {@link CarLocationService} parses a location from a JSON seialization and then
+     * Test that the {@link CarLocationService} parses a location from a JSON serialization and then
      * injects it into the {@link LocationManager} upon user switch if the system user is headless.
      */
     @Test
@@ -366,10 +368,10 @@
 
     /**
      * Test that the {@link CarLocationService} stores the {@link LocationManager}'s last known
-     * location upon prepare-shutdown events.
+     * location upon power state-changed SUSPEND events.
      */
     @Test
-    public void testStoresLocationUponPrepareShutdown()
+    public void testStoresLocationUponStateChanged()
             throws IOException, RemoteException, InterruptedException {
         long currentTime = System.currentTimeMillis();
         long elapsedTime = SystemClock.elapsedRealtimeNanos();
@@ -385,9 +387,11 @@
                 .thenReturn(timbuktu);
         when(mMockContext.getFileStreamPath("location_cache.json"))
                 .thenReturn(mContext.getFileStreamPath(TEST_FILENAME));
-        mCarLocationService.onPrepareShutdown(true);
+        CompletableFuture<Void> future = new CompletableFuture<>();
+        mCarLocationService.onStateChanged(CarPowerStateListener.SUSPEND_ENTER, future);
         mLatch.await();
         verify(mMockLocationManager).getLastKnownLocation(LocationManager.GPS_PROVIDER);
+        assertTrue(future.isDone());
         String actualContents = readCacheFile();
         long oneDayMs = 24 * 60 * 60 * 1000;
         long granularCurrentTime = (currentTime / oneDayMs) * oneDayMs;
@@ -397,6 +401,18 @@
     }
 
     /**
+     * Test that the {@link CarLocationService} does not throw an exception on SUSPEND_EXIT events.
+     */
+    @Test
+    public void testDoesNotThrowExceptionUponStateChanged() {
+        try {
+            mCarLocationService.onStateChanged(CarPowerStateListener.SUSPEND_EXIT, null);
+        } catch (Exception e) {
+            fail("onStateChanged should not throw an exception: " + e);
+        }
+    }
+
+    /**
      * Test that the {@link CarLocationService} does not store null locations.
      */
     @Test
diff --git a/tests/carservice_unit_test/src/com/android/car/CarPowerManagementServiceTest.java b/tests/carservice_unit_test/src/com/android/car/CarPowerManagementServiceTest.java
index cb2b4b8..55ae88d 100644
--- a/tests/carservice_unit_test/src/com/android/car/CarPowerManagementServiceTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/CarPowerManagementServiceTest.java
@@ -16,12 +16,13 @@
 
 package com.android.car;
 
+import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
+import android.car.hardware.power.ICarPowerStateListener;
+import android.os.RemoteException;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.util.Log;
 
-import com.android.car.CarPowerManagementService.PowerEventProcessingHandler;
-import com.android.car.CarPowerManagementService.PowerServiceEventListener;
 import com.android.car.hal.PowerHalService;
 import com.android.car.hal.PowerHalService.PowerState;
 import com.android.car.systeminterface.DisplayInterface;
@@ -34,6 +35,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.time.Duration;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 
@@ -47,12 +49,12 @@
     private final MockSystemStateInterface mSystemStateInterface = new MockSystemStateInterface();
     private final MockWakeLockInterface mWakeLockInterface = new MockWakeLockInterface();
     private final MockIOInterface mIOInterface = new MockIOInterface();
+    private final PowerSignalListener mPowerSignalListener = new PowerSignalListener();
 
     private MockedPowerHalService mPowerHal;
     private SystemInterface mSystemInterface;
     private CarPowerManagementService mService;
-    private final PowerEventListener mPowerEventListener = new PowerEventListener();
-    private PowerEventProcessingHandlerImpl mPowerEventProcessingHandler;
+    private CompletableFuture<Void> mFuture;
 
     @Override
     protected void setUp() throws Exception {
@@ -78,23 +80,23 @@
     /**
      * Helper method to create mService and initialize a test case
      */
-    private void initTest(long processingTimeMs, int wakeupTime) throws Exception {
+    private void initTest(int wakeupTime) throws Exception {
         mService = new CarPowerManagementService(getContext(), mPowerHal, mSystemInterface);
         mService.init();
-        mService.registerPowerEventListener(mPowerEventListener);
-        mPowerEventProcessingHandler = new PowerEventProcessingHandlerImpl(processingTimeMs,
-                                                                           wakeupTime);
-        mService.registerPowerEventProcessingHandler(mPowerEventProcessingHandler);
+        mPowerHal.setSignalListener(mPowerSignalListener);
+        if (wakeupTime > 0) {
+            registerListenerToService();
+            mService.scheduleNextWakeupTime(wakeupTime);
+        }
         assertStateReceived(MockedPowerHalService.SET_BOOT_COMPLETE, 0);
-        mPowerEventProcessingHandler.waitForPowerOn(WAIT_TIMEOUT_MS);
     }
 
     public void testBootComplete() throws Exception {
-        initTest(0, 0);
+        initTest(0);
     }
 
     public void testDisplayOff() throws Exception {
-        initTest(0,0);
+        initTest(0);
         // it will call display on for initial state
         assertTrue(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
         mPowerHal.setCurrentPowerState(new PowerState(PowerHalService.STATE_ON_DISP_OFF, 0));
@@ -105,130 +107,148 @@
         // start with display off
         mSystemInterface.setDisplayState(false);
         mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS);
-        initTest(0,0);
+        initTest(0);
 
         // display should be turned on as it started with off state.
         assertTrue(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
     }
 
     public void testShutdown() throws Exception {
-        final int wakeupTime = 100;
-        initTest(0, wakeupTime);
+        initTest(0);
         assertTrue(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
 
-        mPowerHal.setCurrentPowerState(new PowerState(PowerHalService.STATE_SHUTDOWN_PREPARE,
-                PowerHalService.SHUTDOWN_IMMEDIATELY));
-        assertStateReceived(PowerHalService.SET_SHUTDOWN_START, wakeupTime);
+        mPowerHal.setCurrentPowerState(
+                new PowerState(
+                        PowerHalService.STATE_SHUTDOWN_PREPARE,
+                        PowerHalService.SHUTDOWN_IMMEDIATELY));
+        // Since modules have to manually schedule next wakeup, we should not schedule next wakeup
+        // To test module behavior, we need to actually implement mock listener module.
+        assertStateReceived(PowerHalService.SET_SHUTDOWN_START, 0);
         assertFalse(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
-        mPowerEventListener.waitForShutdown(WAIT_TIMEOUT_MS);
+        mPowerSignalListener.waitForShutdown(WAIT_TIMEOUT_MS);
         mSystemStateInterface.waitForShutdown(WAIT_TIMEOUT_MS);
     }
 
     public void testShutdownWithProcessing() throws Exception {
-        final long processingTimeMs = 3000;
         final int wakeupTime = 100;
-        initTest(processingTimeMs, wakeupTime);
+        initTest(wakeupTime);
         assertTrue(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
-
         mPowerHal.setCurrentPowerState(new PowerState(PowerHalService.STATE_SHUTDOWN_PREPARE, 0));
-        mPowerEventProcessingHandler.waitForPrepareShutdown(WAIT_TIMEOUT_MS);
-        assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_SHUTDOWN_START,
-                WAIT_TIMEOUT_LONG_MS, wakeupTime);
+        assertStateReceivedForShutdownOrSleepWithPostpone(
+                PowerHalService.SET_SHUTDOWN_START, WAIT_TIMEOUT_LONG_MS, wakeupTime);
         assertFalse(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
-        mPowerEventListener.waitForShutdown(WAIT_TIMEOUT_MS);
+        mPowerSignalListener.waitForShutdown(WAIT_TIMEOUT_MS);
         mSystemStateInterface.waitForShutdown(WAIT_TIMEOUT_MS);
     }
 
     public void testSleepEntryAndWakeup() throws Exception {
         final int wakeupTime = 100;
-        initTest(0, wakeupTime);
+        initTest(wakeupTime);
         assertTrue(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
-
         mPowerHal.setCurrentPowerState(new PowerState(PowerHalService.STATE_SHUTDOWN_PREPARE,
                 PowerHalService.SHUTDOWN_CAN_SLEEP));
+        assertStateReceivedForShutdownOrSleepWithPostpone(
+                PowerHalService.SET_DEEP_SLEEP_ENTRY, WAIT_TIMEOUT_LONG_MS, 0);
         assertFalse(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
-        assertStateReceived(PowerHalService.SET_DEEP_SLEEP_ENTRY, 0);
-        mPowerEventListener.waitForSleepEntry(WAIT_TIMEOUT_MS);
+        mPowerSignalListener.waitForSleepEntry(WAIT_TIMEOUT_MS);
         int wakeupTimeReceived = mSystemStateInterface.waitForSleepEntryAndWakeup(WAIT_TIMEOUT_MS);
         assertEquals(wakeupTime, wakeupTimeReceived);
         assertStateReceived(PowerHalService.SET_DEEP_SLEEP_EXIT, 0);
-        mPowerEventListener.waitForSleepExit(WAIT_TIMEOUT_MS);
+        mPowerSignalListener.waitForSleepExit(WAIT_TIMEOUT_MS);
 
     }
 
     public void testSleepEntryAndPowerOnWithProcessing() throws Exception {
-        final long processingTimeMs = 3000;
         final int wakeupTime = 100;
-        initTest(processingTimeMs, wakeupTime);
+        initTest(wakeupTime);
         assertTrue(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
 
         mPowerHal.setCurrentPowerState(new PowerState(PowerHalService.STATE_SHUTDOWN_PREPARE,
                 PowerHalService.SHUTDOWN_CAN_SLEEP));
-        mPowerEventProcessingHandler.waitForPrepareShutdown(WAIT_TIMEOUT_MS);
         assertFalse(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
-        assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_DEEP_SLEEP_ENTRY,
-                WAIT_TIMEOUT_LONG_MS, 0);
-        mPowerEventListener.waitForSleepEntry(WAIT_TIMEOUT_MS);
+        assertStateReceivedForShutdownOrSleepWithPostpone(
+                PowerHalService.SET_DEEP_SLEEP_ENTRY, WAIT_TIMEOUT_LONG_MS, 0);
+        mPowerSignalListener.waitForSleepEntry(WAIT_TIMEOUT_MS);
         // set power on here without notification. PowerManager should check the state after sleep
         // exit
         mPowerHal.setCurrentPowerState(new PowerState(PowerHalService.STATE_ON_DISP_OFF, 0), false);
         int wakeupTimeReceived = mSystemStateInterface.waitForSleepEntryAndWakeup(WAIT_TIMEOUT_MS);
         assertEquals(wakeupTime, wakeupTimeReceived);
         assertStateReceived(PowerHalService.SET_DEEP_SLEEP_EXIT, 0);
-        mPowerEventListener.waitForSleepExit(WAIT_TIMEOUT_MS);
-        mPowerEventProcessingHandler.waitForPowerOn(WAIT_TIMEOUT_MS);
+        mPowerSignalListener.waitForSleepExit(WAIT_TIMEOUT_MS);
     }
 
     public void testSleepEntryAndWakeUpForProcessing() throws Exception {
-        final long processingTimeMs = 3000;
         final int wakeupTime = 100;
-        initTest(processingTimeMs, wakeupTime);
+        initTest(wakeupTime);
         assertTrue(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
-
         mPowerHal.setCurrentPowerState(new PowerState(PowerHalService.STATE_SHUTDOWN_PREPARE,
                 PowerHalService.SHUTDOWN_CAN_SLEEP));
-        mPowerEventProcessingHandler.waitForPrepareShutdown(WAIT_TIMEOUT_MS);
         assertFalse(mDisplayInterface.waitForDisplayStateChange(WAIT_TIMEOUT_MS));
-        assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_DEEP_SLEEP_ENTRY,
-                WAIT_TIMEOUT_LONG_MS, 0);
-        mPowerEventListener.waitForSleepEntry(WAIT_TIMEOUT_MS);
+        assertStateReceivedForShutdownOrSleepWithPostpone(
+                PowerHalService.SET_DEEP_SLEEP_ENTRY, WAIT_TIMEOUT_LONG_MS, 0);
+        mPowerSignalListener.waitForSleepEntry(WAIT_TIMEOUT_MS);
         mSystemStateInterface.setWakeupCausedByTimer(true);
         int wakeupTimeReceived = mSystemStateInterface.waitForSleepEntryAndWakeup(WAIT_TIMEOUT_MS);
         assertEquals(wakeupTime, wakeupTimeReceived);
         assertStateReceived(PowerHalService.SET_DEEP_SLEEP_EXIT, 0);
-        mPowerEventListener.waitForSleepExit(WAIT_TIMEOUT_MS);
+        mPowerSignalListener.waitForSleepExit(WAIT_TIMEOUT_MS);
+        mService.scheduleNextWakeupTime(wakeupTime);
         // second processing after wakeup
         assertFalse(mDisplayInterface.getDisplayState());
-        mPowerEventProcessingHandler.waitForPrepareShutdown(WAIT_TIMEOUT_MS);
-        assertStateReceivedForShutdownOrSleepWithPostpone(PowerHalService.SET_DEEP_SLEEP_ENTRY,
-                WAIT_TIMEOUT_LONG_MS, 0);
-        mPowerEventListener.waitForSleepEntry(WAIT_TIMEOUT_MS);
+        assertStateReceivedForShutdownOrSleepWithPostpone(
+                PowerHalService.SET_DEEP_SLEEP_ENTRY, WAIT_TIMEOUT_LONG_MS, 0);
+        mPowerSignalListener.waitForSleepEntry(WAIT_TIMEOUT_MS);
         // PM will shutdown system as it was not woken-up due to timer and it is not power on.
         mSystemStateInterface.setWakeupCausedByTimer(false);
         wakeupTimeReceived = mSystemStateInterface.waitForSleepEntryAndWakeup(WAIT_TIMEOUT_MS);
         assertEquals(wakeupTime, wakeupTimeReceived);
         assertStateReceived(PowerHalService.SET_DEEP_SLEEP_EXIT, 0);
-        assertStateReceived(PowerHalService.SET_SHUTDOWN_START, wakeupTime);
-        mPowerEventListener.waitForShutdown(WAIT_TIMEOUT_MS);
+        // Since we just woke up from shutdown, wake up time will be 0
+        assertStateReceived(PowerHalService.SET_SHUTDOWN_START, 0);
+        mPowerSignalListener.waitForShutdown(WAIT_TIMEOUT_MS);
         mSystemStateInterface.waitForShutdown(WAIT_TIMEOUT_MS);
         assertFalse(mDisplayInterface.getDisplayState());
     }
 
+    private void registerListenerToService() {
+        ICarPowerStateListener listenerToService = new ICarPowerStateListener.Stub() {
+            @Override
+            public void onStateChanged(int state, int token) throws RemoteException {
+                if (state == CarPowerStateListener.SHUTDOWN_ENTER
+                        || state == CarPowerStateListener.SUSPEND_ENTER) {
+                    mFuture = new CompletableFuture<>();
+                    mFuture.whenComplete((res, ex) -> {
+                        if (ex == null) {
+                            mService.finished(this, token);
+                        }
+                    });
+                } else {
+                    mFuture = null;
+                }
+            }
+        };
+        mService.registerListener(listenerToService);
+    }
+
     private void assertStateReceived(int expectedState, int expectedParam) throws Exception {
         int[] state = mPowerHal.waitForSend(WAIT_TIMEOUT_MS);
         assertEquals(expectedState, state[0]);
         assertEquals(expectedParam, state[1]);
     }
 
-    private void assertStateReceivedForShutdownOrSleepWithPostpone(int lastState, long timeoutMs,
-            int expectedParamForShutdown) throws Exception {
+    private void assertStateReceivedForShutdownOrSleepWithPostpone(
+            int lastState, long timeoutMs, int expectedParamForShutdownOrSuspend) throws Exception {
         while (true) {
+            if (mFuture != null && !mFuture.isDone()) {
+                mFuture.complete(null);
+            }
             int[] state = mPowerHal.waitForSend(timeoutMs);
             if (state[0] == PowerHalService.SET_SHUTDOWN_POSTPONE) {
                 continue;
             }
             if (state[0] == lastState) {
-                assertEquals(expectedParamForShutdown, state[1]);
+                assertEquals(expectedParamForShutdownOrSuspend, state[1]);
                 return;
             }
         }
@@ -361,77 +381,37 @@
         }
     }
 
-    private class PowerEventListener implements PowerServiceEventListener {
+    private class PowerSignalListener implements MockedPowerHalService.SignalListener {
         private final Semaphore mShutdownWait = new Semaphore(0);
         private final Semaphore mSleepEntryWait = new Semaphore(0);
         private final Semaphore mSleepExitWait = new Semaphore(0);
 
-        @Override
-        public void onShutdown() {
-            mShutdownWait.release();
+        public void waitForSleepExit(long timeoutMs) throws Exception {
+            waitForSemaphore(mSleepExitWait, timeoutMs);
         }
 
         public void waitForShutdown(long timeoutMs) throws Exception {
             waitForSemaphore(mShutdownWait, timeoutMs);
         }
 
-        @Override
-        public void onSleepEntry() {
-            mSleepEntryWait.release();
-        }
-
         public void waitForSleepEntry(long timeoutMs) throws Exception {
             waitForSemaphore(mSleepEntryWait, timeoutMs);
         }
 
         @Override
-        public void onSleepExit() {
-            mSleepExitWait.release();
-        }
-
-        public void waitForSleepExit(long timeoutMs) throws Exception {
-            waitForSemaphore(mSleepExitWait, timeoutMs);
-        }
-    }
-
-    private class PowerEventProcessingHandlerImpl implements PowerEventProcessingHandler {
-        private final long mProcessingTime;
-        private final int mWakeupTime;
-        private final Semaphore mPrepareShutdownWait = new Semaphore(0);
-        private final Semaphore mOnPowerOnWait = new Semaphore(0);
-        private boolean mShuttingDown;
-        private boolean mDisplayOn;
-
-        private PowerEventProcessingHandlerImpl(long processingTime, int wakeupTime) {
-            mProcessingTime = processingTime;
-            mWakeupTime = wakeupTime;
-        }
-
-        @Override
-        public long onPrepareShutdown(boolean shuttingDown) {
-            mShuttingDown = shuttingDown;
-            mPrepareShutdownWait.release();
-            return mProcessingTime;
-        }
-        public boolean waitForPrepareShutdown(long timeoutMs) throws Exception {
-            waitForSemaphore(mPrepareShutdownWait, timeoutMs);
-            return mShuttingDown;
-        }
-
-        @Override
-        public void onPowerOn(boolean displayOn) {
-            mDisplayOn = displayOn;
-            mOnPowerOnWait.release();
-        }
-
-        public boolean waitForPowerOn(long timeoutMs) throws Exception {
-            waitForSemaphore(mOnPowerOnWait, timeoutMs);
-            return mDisplayOn;
-        }
-
-        @Override
-        public int getWakeupTime() {
-            return mWakeupTime;
+        public void sendingSignal(int signal) {
+            if (signal == PowerHalService.SET_SHUTDOWN_START) {
+                mShutdownWait.release();
+                return;
+            }
+            if (signal == PowerHalService.SET_DEEP_SLEEP_ENTRY) {
+                mSleepEntryWait.release();
+                return;
+            }
+            if (signal == PowerHalService.SET_DEEP_SLEEP_EXIT) {
+                mSleepExitWait.release();
+                return;
+            }
         }
     }
 }
diff --git a/tests/carservice_unit_test/src/com/android/car/CarUserManagerHelperTest.java b/tests/carservice_unit_test/src/com/android/car/CarUserManagerHelperTest.java
index 7f53da5..df2b2e1 100644
--- a/tests/carservice_unit_test/src/com/android/car/CarUserManagerHelperTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/CarUserManagerHelperTest.java
@@ -26,7 +26,7 @@
 import static org.mockito.Mockito.verify;
 
 import android.app.ActivityManager;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -486,6 +486,32 @@
     }
 
     @Test
+    public void testSwitchToId() {
+        int userIdToSwitchTo = mForegroundUserId + 2;
+        doReturn(true).when(mActivityManager).switchUser(userIdToSwitchTo);
+
+        assertThat(mCarUserManagerHelper.switchToUserId(userIdToSwitchTo)).isTrue();
+        verify(mActivityManager).switchUser(userIdToSwitchTo);
+    }
+
+    @Test
+    public void testSwitchToForegroundIdExitsEarly() {
+        doReturn(true).when(mActivityManager).switchUser(mForegroundUserId);
+
+        assertThat(mCarUserManagerHelper.switchToUserId(mForegroundUserId)).isFalse();
+        verify(mActivityManager, never()).switchUser(mForegroundUserId);
+    }
+
+    @Test
+    public void testCannotSwitchIfSwitchingNotAllowed() {
+        int userIdToSwitchTo = mForegroundUserId + 2;
+        doReturn(true).when(mActivityManager).switchUser(userIdToSwitchTo);
+        doReturn(true).when(mUserManager).hasUserRestriction(UserManager.DISALLOW_USER_SWITCH);
+        assertThat(mCarUserManagerHelper.switchToUserId(userIdToSwitchTo)).isFalse();
+        verify(mActivityManager, never()).switchUser(userIdToSwitchTo);
+    }
+
+    @Test
     public void testGetUserIcon() {
         mCarUserManagerHelper.getUserIcon(mCurrentProcessUser);
         verify(mUserManager).getUserIcon(mCurrentProcessUser.id);
diff --git a/tests/carservice_unit_test/src/com/android/car/MockedPowerHalService.java b/tests/carservice_unit_test/src/com/android/car/MockedPowerHalService.java
index 405c014..59b0694 100644
--- a/tests/carservice_unit_test/src/com/android/car/MockedPowerHalService.java
+++ b/tests/carservice_unit_test/src/com/android/car/MockedPowerHalService.java
@@ -30,9 +30,14 @@
     private final boolean mIsTimedWakeupAllowed;
     private PowerState mCurrentPowerState = new PowerState(PowerHalService.STATE_ON_FULL, 0);
     private PowerEventListener mListener;
+    private SignalListener mSignalListener;
 
     private final LinkedList<int[]> mSentStates = new LinkedList<>();
 
+    interface SignalListener {
+        void sendingSignal(int signal);
+    }
+
     public MockedPowerHalService(boolean isPowerStateSupported, boolean isDeepSleepAllowed,
             boolean isTimedWakeupAllowed) {
         super(new VehicleHal(null, null, null, null));
@@ -46,6 +51,11 @@
         mListener = listener;
     }
 
+    // For testing purposes only
+    public synchronized void setSignalListener(SignalListener listener) {
+        mSignalListener =  listener;
+    }
+
     @Override
     public void sendBootComplete() {
         Log.i(TAG, "sendBootComplete");
@@ -96,6 +106,13 @@
     }
 
     private synchronized void doSendState(int state, int param) {
+        SignalListener listener;
+        synchronized (this) {
+            listener = mSignalListener;
+        }
+        if (listener != null) {
+            listener.sendingSignal(state);
+        }
         int[] toSend = new int[] {state, param};
         mSentStates.addLast(toSend);
         notifyAll();
diff --git a/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java b/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java
index 48d447b..addb53c 100644
--- a/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java
@@ -22,7 +22,7 @@
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.verify;
 
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -40,7 +40,6 @@
 import org.mockito.MockitoAnnotations;
 
 import java.util.ArrayList;
-import java.util.List;
 
 /**
  * This class contains unit tests for the {@link CarUserService}.
@@ -107,20 +106,6 @@
     }
 
     /**
-     * Test that the {@link CarUserService} starts up a secondary admin user upon first run.
-     */
-    @Test
-    public void testStartsSecondaryAdminUserOnFirstRun() {
-        UserInfo admin = mockAdmin(/* adminId= */ 10);
-
-        mCarUserService.onReceive(mMockContext,
-                new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED));
-
-        verify(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME);
-        verify(mCarUserManagerHelper).switchToUser(admin);
-    }
-
-    /**
      * Test that the {@link CarUserService} disable modify account for user 0 upon first run.
      */
     @Test
@@ -154,47 +139,6 @@
     }
 
     /**
-     * Test that the {@link CarUserService} updates last active user to the first admin user
-     * on first run.
-     */
-    @Test
-    public void testUpdateLastActiveUserOnFirstRun() {
-        UserInfo admin = mockAdmin(/* adminId= */ 10);
-
-        mCarUserService.onReceive(mMockContext,
-                new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED));
-
-        verify(mCarUserManagerHelper)
-                .setLastActiveUser(admin.id, /* skipGlobalSetting= */ false);
-    }
-
-    /**
-     * Test that the {@link CarUserService} starts up the last active user on reboot.
-     */
-    @Test
-    public void testStartsLastActiveUserOnReboot() {
-        List<UserInfo> users = new ArrayList<>();
-
-        int adminUserId = 10;
-        UserInfo admin = new UserInfo(adminUserId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN);
-
-        int secUserId = 11;
-        UserInfo secUser =
-                new UserInfo(secUserId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN);
-
-        users.add(admin);
-        users.add(secUser);
-
-        doReturn(users).when(mCarUserManagerHelper).getAllUsers();
-        doReturn(secUserId).when(mCarUserManagerHelper).getInitialUser();
-
-        mCarUserService.onReceive(mMockContext,
-                new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED));
-
-        verify(mCarUserManagerHelper).switchToUserId(secUserId);
-    }
-
-    /**
      * Test that the {@link CarUserService} updates last active user on user switch intent.
      */
     @Test
@@ -226,8 +170,10 @@
     }
 
     private UserInfo mockAdmin(int adminId) {
-        UserInfo admin = new UserInfo(adminId, CarUserService.OWNER_NAME, UserInfo.FLAG_ADMIN);
-        doReturn(admin).when(mCarUserManagerHelper).createNewAdminUser(CarUserService.OWNER_NAME);
+        UserInfo admin = new UserInfo(adminId, CarUserManagerHelper.DEFAULT_FIRST_ADMIN_NAME,
+                UserInfo.FLAG_ADMIN);
+        doReturn(admin).when(mCarUserManagerHelper)
+                .createNewAdminUser(CarUserManagerHelper.DEFAULT_FIRST_ADMIN_NAME);
         return admin;
     }
 }
diff --git a/tests/robotests/Android.mk b/tests/robotests/Android.mk
index 3152109..413e192 100644
--- a/tests/robotests/Android.mk
+++ b/tests/robotests/Android.mk
@@ -34,6 +34,7 @@
 
 LOCAL_JAVA_LIBRARIES := \
     android.car \
+    android.car.user \
     robolectric_android-all-stub \
     Robolectric_all-target \
     mockito-robolectric-prebuilt \
diff --git a/tests/robotests/src/com/android/car/users/CarUserManagerHelperRoboTest.java b/tests/robotests/src/com/android/car/users/CarUserManagerHelperRoboTest.java
index fcfd6dc..6a90cdf 100644
--- a/tests/robotests/src/com/android/car/users/CarUserManagerHelperRoboTest.java
+++ b/tests/robotests/src/com/android/car/users/CarUserManagerHelperRoboTest.java
@@ -21,7 +21,7 @@
 import static org.mockito.Mockito.when;
 
 import android.app.ActivityManager;
-import android.car.user.CarUserManagerHelper;
+import android.car.userlib.CarUserManagerHelper;
 import android.content.Context;
 import android.content.pm.UserInfo;
 import android.os.UserManager;
diff --git a/tests/usb/AoapHostApp/Android.mk b/tests/usb/AoapHostApp/Android.mk
index 9fc286a..b020473 100644
--- a/tests/usb/AoapHostApp/Android.mk
+++ b/tests/usb/AoapHostApp/Android.mk
@@ -32,7 +32,7 @@
 
 LOCAL_PROGUARD_ENABLED := disabled
 
-LOCAL_STATIC_JAVA_LIBRARIES := junit
-include packages/services/Car/car-support-lib/car-support.mk
+LOCAL_STATIC_JAVA_LIBRARIES := junit \
+    android.car
 
 include $(BUILD_PACKAGE)
diff --git a/tests/vehiclehal_test/assets/car_diagnostic_test.json b/tests/vehiclehal_test/assets/car_diagnostic_test.json
new file mode 100644
index 0000000..d81926e
--- /dev/null
+++ b/tests/vehiclehal_test/assets/car_diagnostic_test.json
@@ -0,0 +1,2712 @@
+[
+    {
+        "timestamp": 1000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.22222, 64, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 2000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.22222, 64, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 3084, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 3000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 64, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3078, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 4000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 64, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 2873, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 5000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 65, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3078, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 6000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 65, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 2869, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 7000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [52, 66, 230.46875, 0.0, 0.0, 0.0, 0.0, 0.0, 3090, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 8000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [68.44444, 66, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 4110, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 9000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [51.11111, 66, 223.4375, 0.0, 0.0, 0.0, 0.0, 0.0, 3633, 5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 10000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [50.666668, 67, 230.46875, 0.0, 0.0, 0.0, 0.0, 0.0, 3135, 4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 11000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [48.444443, 67, 228.125, 0.0, 0.0, 0.0, 0.0, 0.0, 3125, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.450981, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 12000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [55.555557, 68, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 2857, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 13000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [82.666664, 68, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 4899, 6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.254902, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 14000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.333332, 68, 237.5, 0.0, 0.0, 0.0, 0.0, 0.0, 8483, 17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 15000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [28, 69, 188.28125, 0.0, 0.0, 0.0, 0.0, 0.0, 5158, 18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 16000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [36, 69, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 6184, 20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 17000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [31.11111, 70, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 6207, 21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 18000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [28.88889, 70, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 5409, 19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.47059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 19000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [92.888885, 71, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 5653, 18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.705883, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 20000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [31.555555, 71, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 7988, 26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 21000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [33.333332, 72, 176.5625, 0.0, 0.0, 0.0, 0.0, 0.0, 4134, 21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 22000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [49.333332, 72, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3109, 14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 23000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "P0420", 
+            "floatValues": [49.333332, 72, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3109, 14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896065
+    }, 
+    {
+        "timestamp": 24000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44.88889, 73, 223.4375, 0.0, 0.0, 0.0, 0.0, 0.0, 3635, 16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 25000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 73, 228.125, 0.0, 0.0, 0.0, 0.0, 0.0, 3619, 11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 26000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [36, 74, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 4637, 10, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 35.686275, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 27000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [36, 74, 228.125, 0.0, 0.0, 0.0, 0.0, 0.0, 7199, 15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 28000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [47.555557, 75, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 3894, 11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.705883, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 29000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [48, 75, 218.75, 0.0, 0.0, 0.0, 0.0, 0.0, 3108, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.450981, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 30000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 75, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 3087, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.450981, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 31000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 76, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3091, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 32000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 76, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 3090, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 33000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 77, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3083, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 34000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.333332, 77, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 35000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 77, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 3078, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 36000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 78, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 37000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 78, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 3078, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 38000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 78, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.37255, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 39000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.333332, 79, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 3076, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 40000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 79, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.588236, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 41000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 79, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 42000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 79, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3076, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 43000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 80, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 44000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 80, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 2877, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 45000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 80, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 3076, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 46000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 81, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 47000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 81, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 48000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 81, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 49000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 82, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 50000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 82, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 51000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 82, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 52000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 82, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 2877, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 53000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 83, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3079, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 54000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 83, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3073, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 55000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.666668, 83, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3078, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 56000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 83, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 57000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 84, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3073, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 58000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [47.11111, 84, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3075, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 59000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 84, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3081, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 60000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.22222, 85, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 2878, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 61000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.666668, 85, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 62000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.666668, 85, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 63000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [47.11111, 85, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 64000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [46.666668, 86, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3085, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 65000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [47.11111, 86, 188.28125, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.450981, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 66000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [49.77778, 86, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 7177, 11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.745098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 67000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 86, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 4126, 15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.745098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 68000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [77.333336, 86, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 6438, 20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.745098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 69000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [112.888885, 86, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 8746, 30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.627451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 70000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [103.111115, 86, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 14082, 44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.784313, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 71000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [73.333336, 86, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 15639, 54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 72000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [63.555557, 85, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 10268, 59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 73000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [24, 85, 146.09375, 0.0, 0.0, 0.0, 0.0, 0.0, 5928, 60, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.901962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 74000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [59.555557, 85, 188.28125, 0.0, 0.0, 0.0, 0.0, 0.0, 6418, 58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 75000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [34.22222, 85, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 6179, 59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 76000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [99.55556, 85, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 7483, 59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 77000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [96.888885, 86, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 6660, 63, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 78000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [54.666668, 86, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 8460, 66, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 79000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [20, 86, 167.1875, 0.0, 0.0, 0.0, 0.0, 0.0, 5431, 56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 80000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [15.111111, 86, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 4868, 48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [4, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 81000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [83.55556, 87, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 7195, 47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [4, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 82000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [104, 87, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 6423, 48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 83000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [112.888885, 87, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 11582, 55, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.745098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 84000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [113.333336, 87, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 13336, 67, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 182, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 85000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [24, 87, 174.21875, 0.0, 0.0, 0.0, 0.0, 0.0, 12304, 73, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.705883, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 86000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [20.88889, 87, 181.25, 0.0, 0.0, 0.0, 0.0, 0.0, 6717, 68, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 87000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [20.444445, 86, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 4654, 47, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [4, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 88000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [29.333334, 86, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3330, 30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.901962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 89000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 87, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3097, 13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.901962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 90000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [45.77778, 87, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3088, 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 91000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.666668, 88, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 3075, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 92000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 88, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 93000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 88, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 94000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.22222, 89, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 2873, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 33.333332, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 95000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.666668, 89, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 2878, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 96000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.666668, 89, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 97000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.666668, 90, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 2870, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 98000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.666668, 90, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 3075, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 99000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.11111, 90, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 2872, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 100000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.11111, 91, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 101000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.11111, 91, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 102000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.11111, 91, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 218, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 103000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 91, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 3079, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 104000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.11111, 91, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 2876, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 105000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 91, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 106000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 91, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 3078, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 107000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.11111, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 108000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 92, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3076, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 109000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 92, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 110000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2878, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 111000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 92, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 112000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44.444443, 92, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3076, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 238, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 113000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3075, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 114000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 92, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 2872, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 115000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44.444443, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 244, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 116000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44, 92, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3083, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 246, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 117000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44, 92, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 118000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44, 92, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 119000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44, 92, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3081, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 252, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 120000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44, 92, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 121000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44, 92, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 122000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44.444443, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3073, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 123000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44.444443, 92, 188.28125, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 260, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 124000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [44.444443, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3076, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 125000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [59.555557, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3104, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 126000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [100.888885, 92, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 8255, 15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.411765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 266, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 127000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [99.55556, 92, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 11276, 33, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.686275, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 128000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [90.666664, 92, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 15618, 50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 129000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [111.55556, 90, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 13109, 63, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 130000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [111.55556, 89, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 14343, 74, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.647058, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 274, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 131000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [21.777779, 88, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 15921, 83, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.803922, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 132000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [34.666668, 87, 183.59375, 0.0, 0.0, 0.0, 0.0, 0.0, 4400, 55, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 133000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [30.666666, 87, 183.59375, 0.0, 0.0, 0.0, 0.0, 0.0, 3117, 32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 134000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [29.333334, 87, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3108, 26, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 282, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 135000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [32.88889, 87, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3106, 21, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 284, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 136000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [111.111115, 88, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 4115, 17, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.254902, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 286, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 137000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [112.44444, 89, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 8991, 30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 138000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [95.55556, 89, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 9513, 43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 139000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [27.555555, 89, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 9518, 50, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.509804, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 140000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [19.555555, 89, 178.90625, 0.0, 0.0, 0.0, 0.0, 0.0, 6418, 49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 141000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [20.88889, 89, 188.28125, 0.0, 0.0, 0.0, 0.0, 0.0, 5173, 40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 142000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [28.444445, 89, 185.9375, 0.0, 0.0, 0.0, 0.0, 0.0, 4112, 32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 143000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [113.333336, 89, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 8720, 37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 300, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 144000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [109.333336, 89, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 16412, 52, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.54902, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 302, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 145000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [22.666666, 89, 178.90625, 0.0, 0.0, 0.0, 0.0, 0.0, 13828, 61, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 146000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [28.88889, 88, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 6447, 61, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 147000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [16.88889, 87, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 5657, 56, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 148000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [19.11111, 87, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 4873, 48, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 35.686275, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [4, 0, 0, 0, 0, 0, 0, 310, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 149000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [27.11111, 87, 185.9375, 0.0, 0.0, 0.0, 0.0, 0.0, 3613, 34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [4, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 150000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [30.222221, 88, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3131, 19, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.862747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 151000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [36.444443, 88, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 3844, 8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.901962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 316, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 152000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.555557, 88, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 318, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 153000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.666668, 89, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2866, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 154000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [76, 89, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 7457, 13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.588236, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 322, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 155000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [105.77778, 90, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 9272, 27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.686275, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 156000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [87.55556, 90, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 13585, 43, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 157000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.666668, 89, 190.625, 0.0, 0.0, 0.0, 0.0, 0.0, 11024, 53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.784313, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 158000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [18.222221, 88, 155.46875, 0.0, 0.0, 0.0, 0.0, 0.0, 6927, 51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 159000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [21.333334, 88, 157.8125, 0.0, 0.0, 0.0, 0.0, 0.0, 5148, 38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.11765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 332, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 160000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [26.222221, 88, 139.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 3594, 29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 334, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 161000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [48.88889, 88, 185.9375, 0.0, 0.0, 0.0, 0.0, 0.0, 3350, 25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.82353, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 162000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [79.55556, 88, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 8456, 34, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 338, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 163000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [30.666666, 89, 185.9375, 0.0, 0.0, 0.0, 0.0, 0.0, 6163, 40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 36.47059, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 164000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [24, 89, 188.28125, 0.0, 0.0, 0.0, 0.0, 0.0, 4886, 32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.588236, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 165000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [54.22222, 89, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 5130, 29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 166000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [112.888885, 89, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 9525, 38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 167000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [99.55556, 89, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 10513, 49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 348, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 168000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [76.888885, 89, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 8248, 54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 350, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 169000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [59.11111, 89, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 8484, 59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 352, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 170000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [74.22222, 89, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 5945, 61, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 354, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 171000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [23.11111, 89, 178.90625, 0.0, 0.0, 0.0, 0.0, 0.0, 6197, 61, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.901962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 356, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 172000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [20.88889, 89, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 5904, 59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.901962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [4, 0, 0, 0, 0, 0, 0, 358, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 173000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [35.11111, 89, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 6154, 60, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 360, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 174000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [16.88889, 90, 181.25, 0.0, 0.0, 0.0, 0.0, 0.0, 5636, 59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 362, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 175000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [54.666668, 90, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 5411, 54, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.705883, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [4, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 176000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [24.444445, 90, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 5688, 55, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 177000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [48.88889, 90, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 5903, 55, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 178000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [20.88889, 91, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 5162, 51, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 370, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 179000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [24, 91, 188.28125, 0.0, 0.0, 0.0, 0.0, 0.0, 4124, 44, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 372, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 180000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [23.555555, 91, 181.25, 0.0, 0.0, 0.0, 0.0, 0.0, 3132, 37, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.901962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 374, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 181000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [28, 91, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3128, 24, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 34.901962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 376, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 182000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [38.666668, 91, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3089, 15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 39.607845, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 378, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 183000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.666668, 91, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 2869, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 184000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.555557, 91, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2877, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 185000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.11111, 92, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 2871, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 384, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 186000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.11111, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2872, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 387, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 187000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.11111, 92, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 2870, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 389, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 188000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.555557, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3073, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 391, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 189000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.555557, 92, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 190000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2867, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 394, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 191000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40, 93, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 396, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 192000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40, 93, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3078, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 193000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40, 93, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2875, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.588236, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 194000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40, 93, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 195000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 93, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 2878, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 404, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 196000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 93, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3081, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 406, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 197000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 93, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3085, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 408, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 198000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 93, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 2877, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 410, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 199000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 93, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3079, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 200000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 93, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 414, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 201000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 94, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3079, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 202000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 418, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 203000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3076, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 204000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3075, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 422, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 205000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 424, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 206000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 426, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 207000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3081, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 428, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 208000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3085, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 430, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 209000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [84, 94, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3900, 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.372549, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 210000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [73.333336, 94, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 6937, 15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.254902, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 434, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 211000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [100.888885, 94, 211.71875, 0.0, 0.0, 0.0, 0.0, 0.0, 10253, 30, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.588236, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 436, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 212000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [104, 94, 214.0625, 0.0, 0.0, 0.0, 0.0, 0.0, 14653, 46, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.745098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 438, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 213000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [55.555557, 93, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 17934, 59, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 24.705883, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 214000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [28.444445, 91, 190.625, 0.0, 0.0, 0.0, 0.0, 0.0, 8757, 62, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.745098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 215000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [17.777779, 90, 188.28125, 0.0, 0.0, 0.0, 0.0, 0.0, 5642, 58, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 444, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 216000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [25.333334, 89, 171.875, 0.0, 0.0, 0.0, 0.0, 0.0, 3630, 38, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 217000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [25.777779, 89, 178.90625, 0.0, 0.0, 0.0, 0.0, 0.0, 3130, 27, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 448, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 218000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40, 90, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3091, 13, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 450, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 219000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [43.11111, 90, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 3340, 4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 220000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 91, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2874, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 30.19608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 454, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 221000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.555557, 91, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 2877, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.450981, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 456, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 222000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.11111, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 458, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 223000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.555557, 92, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2866, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 460, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 224000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.11111, 92, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 462, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 225000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [39.555557, 93, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 2873, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 464, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 226000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40, 93, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3076, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 227000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 93, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3073, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 468, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 228000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40, 93, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 470, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 229000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 93, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 472, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 230000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 93, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2873, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 474, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 231000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 93, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 476, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 232000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 93, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 478, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 233000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 94, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 234000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 482, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 235000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 94, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3079, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 484, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 236000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.444443, 94, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3074, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 486, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 237000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 488, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 238000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3073, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 490, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 239000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 240000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3080, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 241000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [40.88889, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 496, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 242000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3084, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 498, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 243000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3072, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 244000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 2878, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 502, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 245000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3082, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 504, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 246000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3073, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 247000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 94, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3079, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 508, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 248000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3075, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 510, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 249000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 190.625, 0.0, 0.0, 0.0, 0.0, 0.0, 2874, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 250000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.333332, 94, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3079, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 514, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 251000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.22222, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 516, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 252000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 2872, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 518, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 253000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 94, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 254000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 94, 190.625, 0.0, 0.0, 0.0, 0.0, 0.0, 2872, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 522, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 255000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 94, 195.3125, 0.0, 0.0, 0.0, 0.0, 0.0, 3079, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 256000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 2875, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 526, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 257000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 2879, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 528, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 258000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [42.22222, 94, 197.65625, 0.0, 0.0, 0.0, 0.0, 0.0, 3078, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.764706, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 530, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 259000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [41.77778, 94, 192.96875, 0.0, 0.0, 0.0, 0.0, 0.0, 3077, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.156864, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 532, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 260000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [51.555557, 95, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 5426, 5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 22.745098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 534, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 261000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [66.22222, 96, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 9000, 18, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.450981, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 262000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [53.333332, 95, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 7996, 24, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.82353, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 538, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 263000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [109.333336, 95, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 6195, 29, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.588236, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 540, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 264000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [61.77778, 94, 204.6875, 0.0, 0.0, 0.0, 0.0, 0.0, 12839, 40, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.529411, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 265000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [111.55556, 94, 207.03125, 0.0, 0.0, 0.0, 0.0, 0.0, 10757, 49, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.450981, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 544, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 266000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [85.77778, 93, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 12836, 61, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 28.62745, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 267000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [34.22222, 92, 200, 0.0, 0.0, 0.0, 0.0, 0.0, 10042, 65, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 32.941177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 548, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 268000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [111.55556, 92, 216.40625, 0.0, 0.0, 0.0, 0.0, 0.0, 9733, 66, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 26.27451, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 550, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 269000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [56.88889, 91, 202.34375, 0.0, 0.0, 0.0, 0.0, 0.0, 10302, 70, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.450981, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 552, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 270000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [111.111115, 91, 209.375, 0.0, 0.0, 0.0, 0.0, 0.0, 15104, 73, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.215687, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 554, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }, 
+    {
+        "timestamp": 271000000, 
+        "areaId": 0, 
+        "value": {
+            "stringValue": "", 
+            "floatValues": [75.111115, 91, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16423, 86, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
+            "int32Values": [2, 0, 0, 0, 0, 0, 0, 556, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+        }, 
+        "prop": 299896064
+    }
+]
diff --git a/tests/vehiclehal_test/assets/car_info_test.json b/tests/vehiclehal_test/assets/car_info_test.json
new file mode 100644
index 0000000..90c9bdc
--- /dev/null
+++ b/tests/vehiclehal_test/assets/car_info_test.json
@@ -0,0 +1,20 @@
+[
+    {
+        "timestamp": 1526063903356950016,
+        "areaId": 0,
+        "value": 15000,
+        "prop": 291504388
+    },
+    {
+        "timestamp": 1526063903358950016,
+        "areaId": 0,
+        "value": 150000,
+        "prop": 291504390
+    },
+    {
+        "timestamp": 1526063903360950016,
+        "areaId": 0,
+        "value": "Test Car",
+        "prop": 286261505
+    }
+]
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarDiagnosticTest.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarDiagnosticTest.java
new file mode 100644
index 0000000..b0dd2c7
--- /dev/null
+++ b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarDiagnosticTest.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.car.vehiclehal.test;
+
+import static junit.framework.Assert.assertTrue;
+
+import android.car.Car;
+import android.car.diagnostic.CarDiagnosticEvent;
+import android.car.diagnostic.CarDiagnosticManager;
+import android.car.diagnostic.FloatSensorIndex;
+import android.car.diagnostic.IntegerSensorIndex;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.CarSensorManager;
+import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
+import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
+import android.support.test.filters.LargeTest;
+import android.support.test.runner.AndroidJUnit4;
+import android.util.Log;
+import android.util.SparseIntArray;
+
+import com.android.car.vehiclehal.VehiclePropValueBuilder;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+import java.time.Duration;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class CarDiagnosticTest extends E2eCarTestBase {
+
+    private static final String TAG = Utils.concatTag(CarDiagnosticTest.class);
+
+    private static final Duration TEST_TIME_OUT = Duration.ofMinutes(5);
+
+    private static final String CAR_DIAGNOSTIC_TEST_JSON = "car_diagnostic_test.json";
+
+    private static final SparseIntArray DIAGNOSTIC_PROPERTY_MAP;
+
+    static {
+        DIAGNOSTIC_PROPERTY_MAP = new SparseIntArray();
+        DIAGNOSTIC_PROPERTY_MAP.append(
+                CarDiagnosticManager.FRAME_TYPE_LIVE, VehicleProperty.OBD2_LIVE_FRAME);
+        DIAGNOSTIC_PROPERTY_MAP.append(
+                CarDiagnosticManager.FRAME_TYPE_FREEZE, VehicleProperty.OBD2_FREEZE_FRAME);
+    }
+
+    private class CarDiagnosticListner implements CarDiagnosticManager.OnDiagnosticEventListener {
+
+        private VhalEventVerifier mVerifier;
+
+        CarDiagnosticListner(VhalEventVerifier verifier) {
+            mVerifier = verifier;
+        }
+
+        @Override
+        public void onDiagnosticEvent(CarDiagnosticEvent event) {
+            mVerifier.verify(fromCarDiagnosticEvent(event));
+        }
+    }
+
+    private static CarPropertyValue<VehiclePropValue.RawValue> fromCarDiagnosticEvent(
+            final CarDiagnosticEvent event) {
+        int prop = DIAGNOSTIC_PROPERTY_MAP.get(event.frameType);
+        VehiclePropValueBuilder builder = VehiclePropValueBuilder.newBuilder(prop);
+
+        for (int i = 0; i <= IntegerSensorIndex.LAST_SYSTEM; i++) {
+            builder.addIntValue(event.getSystemIntegerSensor(i, 0));
+        }
+        for (int i = 0; i <= FloatSensorIndex.LAST_SYSTEM; i++) {
+            builder.addFloatValue(event.getSystemFloatSensor(i, 0));
+        }
+
+        builder.setStringValue(event.dtc);
+        return new CarPropertyValue<>(prop, 0, builder.build().value);
+    }
+
+    @Test
+    public void testDiagnosticEvents() throws Exception {
+        Log.d(TAG, "Prepare Diagnostic test data");
+        List<CarPropertyValue> expectedEvents = getExpectedEvents(CAR_DIAGNOSTIC_TEST_JSON);
+        VhalEventVerifier verifier = new VhalEventVerifier(expectedEvents);
+
+        CarDiagnosticManager diagnosticManager = (CarDiagnosticManager) mCar.getCarManager(
+                Car.DIAGNOSTIC_SERVICE);
+
+        CarDiagnosticListner listner = new CarDiagnosticListner(verifier);
+
+        assertTrue("Failed to register for OBD2 diagnostic live frame.",
+                   diagnosticManager.registerListener(listner,
+                                                      CarDiagnosticManager.FRAME_TYPE_LIVE,
+                                                      CarSensorManager.SENSOR_RATE_NORMAL));
+        assertTrue("Failed to register for OBD2 diagnostic freeze frame.",
+                   diagnosticManager.registerListener(listner,
+                                                      CarDiagnosticManager.FRAME_TYPE_FREEZE,
+                                                      CarSensorManager.SENSOR_RATE_NORMAL));
+
+        File sharedJson = makeShareable(CAR_DIAGNOSTIC_TEST_JSON);
+        Log.d(TAG, "Send command to VHAL to start generation");
+        VhalEventGenerator diagnosticGenerator =
+                new JsonVhalEventGenerator(mVehicle).setJsonFile(sharedJson);
+        diagnosticGenerator.start();
+
+        Log.d(TAG, "Receiving and verifying VHAL events");
+        verifier.waitForEnd(TEST_TIME_OUT.toMillis());
+
+        Log.d(TAG, "Send command to VHAL to stop generation");
+        diagnosticGenerator.stop();
+        diagnosticManager.unregisterListener(listner);
+
+        assertTrue("Detected mismatched events: " + verifier.getResultString(),
+                    verifier.getMismatchedEvents().isEmpty());
+    }
+}
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarHvacTest.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarHvacTest.java
deleted file mode 100644
index 08544bd..0000000
--- a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarHvacTest.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.car.vehiclehal.test;
-
-import static org.junit.Assert.assertTrue;
-
-import static java.lang.Integer.toHexString;
-
-import android.car.Car;
-import android.car.hardware.CarPropertyConfig;
-import android.car.hardware.CarPropertyValue;
-import android.car.hardware.hvac.CarHvacManager;
-import android.car.hardware.hvac.CarHvacManager.CarHvacEventCallback;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
-import android.support.test.filters.LargeTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.util.ArraySet;
-import android.util.Log;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.io.File;
-import java.time.Duration;
-import java.util.Set;
-
-
-/**
- * The test suite will execute end-to-end Car HVAC API test by generating HVAC property data from
- * default VHAL and verify those data on the fly. The test data is coming from assets/ folder in the
- * test APK and will be shared with VHAL to execute the test.
- */
-@RunWith(AndroidJUnit4.class)
-@LargeTest
-public class CarHvacTest extends E2eCarTestBase {
-    private static final String TAG = Utils.concatTag(CarHvacTest.class);
-
-    // Test should be completed within 1 hour as it only covers a finite set of HVAC properties
-    private static final Duration TEST_TIME_OUT = Duration.ofHours(1);
-
-    private static final String CAR_HVAC_TEST_JSON = "car_hvac_test.json";
-
-    // Referred to hardware/interfaces/automotive/vehicle/2.0/types.hal, some of the HVAC properties
-    // are in CONTINUOUS mode. They should be omitted when testing ON_CHANGE properties.
-    private static final Set<Integer> CONTINUOUS_HVAC_PROPS;
-
-    private Integer mNumPropEventsToSkip;
-
-    static {
-        CONTINUOUS_HVAC_PROPS = new ArraySet<>();
-        CONTINUOUS_HVAC_PROPS.add(VehicleProperty.ENV_OUTSIDE_TEMPERATURE);
-    }
-
-
-    private class CarHvacOnChangeEventListener implements CarHvacEventCallback {
-        private VhalEventVerifier mVerifier;
-
-        CarHvacOnChangeEventListener(VhalEventVerifier verifier) {
-            mVerifier = verifier;
-        }
-
-        @Override
-        public void onChangeEvent(CarPropertyValue carPropertyValue) {
-            VehiclePropValue event = Utils.fromHvacPropertyValue(carPropertyValue);
-            if (!CONTINUOUS_HVAC_PROPS.contains(event.prop)) {
-                synchronized (mNumPropEventsToSkip) {
-                    if (mNumPropEventsToSkip == 0) {
-                        mVerifier.verify(Utils.fromHvacPropertyValue(carPropertyValue));
-                    } else {
-                        mNumPropEventsToSkip--;
-                    }
-                }
-            }
-        }
-
-        @Override
-        public void onErrorEvent(final int propertyId, final int zone) {
-            Assert.fail("Error: propertyId=" + toHexString(propertyId) + " zone=" + zone);
-        }
-    }
-
-    private Integer calculateNumPropEventsToSkip(CarHvacManager hvacMgr) {
-        int numToSkip = 0;
-        try {
-            for (CarPropertyConfig c: hvacMgr.getPropertyList()) {
-                if (!CONTINUOUS_HVAC_PROPS.contains(c.getPropertyId())) {
-                    numToSkip += c.getAreaCount();
-                }
-            }
-        } catch (Exception e) {
-            Log.d(TAG, "Unhandled exception thrown: ", e);
-        }
-        return Integer.valueOf(numToSkip);
-    }
-    @Test
-    public void testHvacOperations() throws Exception {
-        Log.d(TAG, "Prepare HVAC test data");
-        VhalEventVerifier verifier = new VhalEventVerifier(getExpectedEvents(CAR_HVAC_TEST_JSON));
-        File sharedJson = makeShareable(CAR_HVAC_TEST_JSON);
-
-        Log.d(TAG, "Start listening to the HAL");
-        CarHvacManager hvacMgr = (CarHvacManager) mCar.getCarManager(Car.HVAC_SERVICE);
-        // Calculate number of properties to skip due to registration event
-        mNumPropEventsToSkip = calculateNumPropEventsToSkip(hvacMgr);
-        CarHvacEventCallback callback = new CarHvacOnChangeEventListener(verifier);
-        hvacMgr.registerCallback(callback);
-
-        Log.d(TAG, "Send command to VHAL to start generation");
-        VhalEventGenerator hvacGenerator =
-                new JsonVhalEventGenerator(mVehicle).setJsonFile(sharedJson);
-        hvacGenerator.start();
-
-        Log.d(TAG, "Receiving and verifying VHAL events");
-        verifier.waitForEnd(TEST_TIME_OUT.toMillis());
-
-        Log.d(TAG, "Send command to VHAL to stop generation");
-        hvacGenerator.stop();
-        hvacMgr.unregisterCallback(callback);
-
-        assertTrue("Detected mismatched events: " + verifier.getResultString(),
-                    verifier.getMismatchedEvents().isEmpty());
-    }
-}
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarPropertyTest.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarPropertyTest.java
new file mode 100644
index 0000000..27579bd
--- /dev/null
+++ b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/CarPropertyTest.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.car.vehiclehal.test;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import static java.lang.Integer.toHexString;
+
+import android.car.Car;
+import android.car.hardware.CarPropertyConfig;
+import android.car.hardware.CarPropertyValue;
+import android.car.hardware.property.CarPropertyManager;
+import android.support.test.filters.LargeTest;
+import android.support.test.runner.AndroidJUnit4;
+import android.util.ArraySet;
+import android.util.Log;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+import java.time.Duration;
+import java.util.List;
+
+/**
+ * The test suite will execute end-to-end Car Property API test by generating VHAL property data
+ * from default VHAL and verify those data on the fly. The test data is coming from assets/ folder
+ * in the test APK and will be shared with VHAL to execute the test.
+ */
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class CarPropertyTest extends E2eCarTestBase {
+
+    private static final String TAG = Utils.concatTag(CarPropertyTest.class);
+
+    // Test should be completed within 10 minutes as it only covers a finite set of properties
+    private static final Duration TEST_TIME_OUT = Duration.ofMinutes(10);
+
+    private static final String CAR_HVAC_TEST_JSON = "car_hvac_test.json";
+    private static final String CAR_INFO_TEST_JSON = "car_info_test.json";
+
+    private class CarPropertyEventReceiver implements
+            CarPropertyManager.CarPropertyEventListener {
+
+        private VhalEventVerifier mVerifier;
+        private Integer mNumOfEventToSkip;
+
+        CarPropertyEventReceiver(VhalEventVerifier verifier, int numOfEventToSkip) {
+            mVerifier = verifier;
+            mNumOfEventToSkip = numOfEventToSkip;
+        }
+
+        @Override
+        public void onChangeEvent(CarPropertyValue carPropertyValue) {
+            Log.d(TAG, "Received event: " + carPropertyValue);
+            synchronized (mNumOfEventToSkip) {
+                if (mNumOfEventToSkip > 0) {
+                    mNumOfEventToSkip--;
+                    return;
+                }
+            }
+            mVerifier.verify(carPropertyValue);
+        }
+
+        @Override
+        public void onErrorEvent(final int propertyId, final int zone) {
+            Assert.fail("Error: propertyId=" + toHexString(propertyId) + " zone=" + zone);
+        }
+    }
+
+    private int countNumPropEventsToSkip(CarPropertyManager propMgr, ArraySet<Integer> props) {
+        int numToSkip = 0;
+        for (CarPropertyConfig c : propMgr.getPropertyList(props)) {
+            numToSkip += c.getAreaCount();
+        }
+        return numToSkip;
+    }
+
+    /**
+     * This test will let Default VHAL to generate HVAC data and verify on-the-fly in the test. It
+     * is simulating the HVAC actions coming from hard buttons in a car.
+     * @throws Exception
+     */
+    @Test
+    public void testHvacHardButtonOperations() throws Exception {
+        Log.d(TAG, "Prepare HVAC test data");
+        List<CarPropertyValue> expectedEvents = getExpectedEvents(CAR_HVAC_TEST_JSON);
+        VhalEventVerifier verifier = new VhalEventVerifier(expectedEvents);
+
+        CarPropertyManager propMgr = (CarPropertyManager) mCar.getCarManager(Car.PROPERTY_SERVICE);
+        assertNotNull("CarPropertyManager is null", propMgr);
+
+        ArraySet<Integer> props = new ArraySet<>();
+        for (CarPropertyValue event : expectedEvents) {
+            if (!props.contains(event.getPropertyId())) {
+                props.add(event.getPropertyId());
+            }
+        }
+
+        int numToSkip = countNumPropEventsToSkip(propMgr, props);
+        Log.d(TAG, String.format("Start listening to the HAL."
+                                 + " Skipping %d events for listener registration", numToSkip));
+        CarPropertyManager.CarPropertyEventListener receiver =
+                new CarPropertyEventReceiver(verifier, numToSkip);
+        for (Integer prop : props) {
+            propMgr.registerListener(receiver, prop, 0);
+        }
+
+        File sharedJson = makeShareable(CAR_HVAC_TEST_JSON);
+        Log.d(TAG, "Send command to VHAL to start generation");
+        VhalEventGenerator hvacGenerator =
+                new JsonVhalEventGenerator(mVehicle).setJsonFile(sharedJson);
+        hvacGenerator.start();
+
+        Log.d(TAG, "Receiving and verifying VHAL events");
+        verifier.waitForEnd(TEST_TIME_OUT.toMillis());
+
+        Log.d(TAG, "Send command to VHAL to stop generation");
+        hvacGenerator.stop();
+        propMgr.unregisterListener(receiver);
+
+        assertTrue("Detected mismatched events: " + verifier.getResultString(),
+                    verifier.getMismatchedEvents().isEmpty());
+    }
+
+    /**
+     * This test will exercise on "set" calls to inject HVAC data in order to test the Car Property
+     * API end-to-end functionality.
+     * @throws Exception
+     */
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testHvacSetGetOperations() throws Exception {
+        Log.d(TAG, "Prepare HVAC test data");
+        List<CarPropertyValue> expectedEvents = getExpectedEvents(CAR_HVAC_TEST_JSON);
+
+        CarPropertyManager propMgr = (CarPropertyManager) mCar.getCarManager(Car.PROPERTY_SERVICE);
+        assertNotNull("CarPropertyManager is null", propMgr);
+
+        final long waitForSetMillisecond = 2;
+        for (CarPropertyValue expectedEvent : expectedEvents) {
+            Class valueClass = expectedEvent.getValue().getClass();
+            propMgr.setProperty(valueClass,
+                                expectedEvent.getPropertyId(),
+                                expectedEvent.getAreaId(),
+                                expectedEvent.getValue());
+
+            Thread.sleep(waitForSetMillisecond);
+            CarPropertyValue receivedEvent = propMgr.getProperty(valueClass,
+                    expectedEvent.getPropertyId(), expectedEvent.getAreaId());
+            assertTrue("Mismatched events, expected: " + expectedEvent + ", received: "
+                    + receivedEvent, Utils.areCarPropertyValuesEqual(expectedEvent, receivedEvent));
+        }
+    }
+
+    /**
+     * This test will load static vehicle information from test data file and verify them through
+     * get calls.
+     * @throws Exception
+     */
+    @Test
+    public void testStaticInfoOperations() throws Exception {
+        Log.d(TAG, "Prepare static car information");
+
+        List<CarPropertyValue> expectedEvents = getExpectedEvents(CAR_INFO_TEST_JSON);
+        CarPropertyManager propMgr = (CarPropertyManager) mCar.getCarManager(Car.PROPERTY_SERVICE);
+        assertNotNull("CarPropertyManager is null", propMgr);
+
+        File sharedJson = makeShareable(CAR_INFO_TEST_JSON);
+        Log.d(TAG, "Send command to VHAL to start generation");
+        VhalEventGenerator infoGenerator =
+                new JsonVhalEventGenerator(mVehicle).setJsonFile(sharedJson);
+        infoGenerator.start();
+
+        // Wait for some time to ensure information is all loaded
+        // It is assuming the test data is not very large
+        Thread.sleep(2000);
+
+        Log.d(TAG, "Send command to VHAL to stop generation");
+        infoGenerator.stop();
+
+        for (CarPropertyValue expectedEvent : expectedEvents) {
+            CarPropertyValue actualEvent = propMgr.getProperty(
+                    expectedEvent.getPropertyId(), expectedEvent.getAreaId());
+            assertTrue(String.format(
+                    "Mismatched car information data, actual: %s, expected: %s",
+                    actualEvent, expectedEvent),
+                    Utils.areCarPropertyValuesEqual(actualEvent, expectedEvent));
+        }
+    }
+}
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/E2eCarTestBase.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/E2eCarTestBase.java
index 5960422..9485d80 100644
--- a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/E2eCarTestBase.java
+++ b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/E2eCarTestBase.java
@@ -19,12 +19,12 @@
 import static org.junit.Assume.assumeTrue;
 
 import android.car.Car;
+import android.car.hardware.CarPropertyValue;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.ServiceConnection;
 import android.hardware.automotive.vehicle.V2_0.IVehicle;
 import android.hardware.automotive.vehicle.V2_0.StatusCode;
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
 import android.os.ConditionVariable;
 import android.os.FileUtils;
 import android.os.IBinder;
@@ -82,7 +82,7 @@
         }
     }
 
-    protected List<VehiclePropValue> getExpectedEvents(String fileName)
+    protected List<CarPropertyValue> getExpectedEvents(String fileName)
             throws IOException, JSONException {
         try (InputStream in = mContext.getAssets().open(fileName)) {
             Log.d(TAG, "Reading golden test data" + fileName);
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/JsonVhalEventGenerator.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/JsonVhalEventGenerator.java
index 702f5f0..4560b8c 100644
--- a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/JsonVhalEventGenerator.java
+++ b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/JsonVhalEventGenerator.java
@@ -28,6 +28,9 @@
 
 class JsonVhalEventGenerator implements VhalEventGenerator {
 
+    // Exactly one iteration is required for JSON-based end-to-end test
+    private static final int NUM_OF_ITERATION = 1;
+
     private IVehicle mVehicle;
     private File mFile;
 
@@ -47,7 +50,7 @@
     public void start() throws RemoteException {
         VehiclePropValue request =
                 VehiclePropValueBuilder.newBuilder(GENERATE_FAKE_DATA_CONTROLLING_PROPERTY)
-                    .addIntValue(CMD_START_JSON)
+                    .addIntValue(CMD_START_JSON, NUM_OF_ITERATION)
                     .setStringValue(mFile.getAbsolutePath())
                     .build();
         assertEquals(StatusCode.OK, mVehicle.set(request));
@@ -58,6 +61,7 @@
         VehiclePropValue request =
                 VehiclePropValueBuilder.newBuilder(GENERATE_FAKE_DATA_CONTROLLING_PROPERTY)
                     .addIntValue(CMD_STOP_JSON)
+                    .setStringValue(mFile.getAbsolutePath())
                     .build();
         assertEquals(StatusCode.OK, mVehicle.set(request));
     }
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/Utils.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/Utils.java
index 6a4b496..496b504 100644
--- a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/Utils.java
+++ b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/Utils.java
@@ -16,13 +16,10 @@
 
 package com.android.car.vehiclehal.test;
 
-import static java.lang.Integer.toHexString;
-
 import android.car.hardware.CarPropertyValue;
 import android.hardware.automotive.vehicle.V2_0.IVehicle;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropConfig;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
-import android.os.HidlSupport;
 import android.os.RemoteException;
 import android.util.Log;
 
@@ -102,55 +99,13 @@
      * @param value2
      * @return true if equal
      */
-    static boolean areVehiclePropValuesEqual(final VehiclePropValue value1,
-            final VehiclePropValue value2) {
+    static boolean areCarPropertyValuesEqual(final CarPropertyValue value1,
+            final CarPropertyValue value2) {
         return value1 == value2
             || value1 != null
             && value2 != null
-            && value1.prop == value2.prop
-            && value1.areaId == value2.areaId
-            && HidlSupport.deepEquals(value1.value, value2.value);
-    }
-
-    /**
-     * The method will convert prop ID to hexadecimal format, and omit timestamp and status
-     *
-     * @param value
-     * @return String
-     */
-    static String vehiclePropValueToString(final VehiclePropValue value) {
-        return "{.prop = 0x" + toHexString(value.prop)
-               + ", .areaId = " + value.areaId
-               + ", .value = " + value.value + "}";
-    }
-
-    static VehiclePropValue fromHvacPropertyValue(CarPropertyValue value) {
-        VehiclePropValueBuilder builder =
-                VehiclePropValueBuilder.newBuilder(
-                    VhalPropMaps.getHvacVhalProp(value.getPropertyId()));
-        return fromCarPropertyValue(value, builder);
-    }
-
-    private static VehiclePropValue fromCarPropertyValue(
-            CarPropertyValue value, VehiclePropValueBuilder builder) {
-        builder.setAreaId(value.getAreaId()).setTimestamp(value.getTimestamp());
-
-        //TODO: Consider move this conversion to VehiclePropValueBuilder
-        Object o = value.getValue();
-        if (o instanceof Boolean) {
-            builder.addIntValue((boolean) o ? 1 : 0);
-        } else if (o instanceof Integer) {
-            builder.addIntValue((int) o);
-        } else if (o instanceof Float) {
-            builder.addFloatValue((float) o);
-        } else if (o instanceof Long) {
-            builder.setInt64Value((long) o);
-        } else if (o instanceof String) {
-            builder.setStringValue((String) o);
-        } else { //TODO: Add support for MIXED type
-            throw new IllegalArgumentException("Unrecognized car property value type, "
-                    + o.getClass());
-        }
-        return builder.build();
+            && value1.getPropertyId() == value2.getPropertyId()
+            && value1.getAreaId() == value2.getAreaId()
+            && value1.getValue().equals(value2.getValue());
     }
 }
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalEventVerifier.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalEventVerifier.java
index 5ac92ca..62dbf5c 100644
--- a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalEventVerifier.java
+++ b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalEventVerifier.java
@@ -15,7 +15,7 @@
  */
 package com.android.car.vehiclehal.test;
 
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
+import android.car.hardware.CarPropertyValue;
 import android.os.ConditionVariable;
 
 import java.util.ArrayList;
@@ -28,7 +28,7 @@
  * The verifier will provide formatted result for all mismatched events in sequence.
  */
 class VhalEventVerifier {
-    private List<VehiclePropValue> mExpectedEvents;
+    private List<CarPropertyValue> mExpectedEvents;
     // A pointer to keep track of the next expected event in the list
     private int mIdx;
     private List<MismatchedEventPair> mMismatchedEvents;
@@ -37,10 +37,10 @@
 
     static class MismatchedEventPair {
         public final int idx;
-        public final VehiclePropValue expectedEvent;
-        public final VehiclePropValue mismatchedEvent;
+        public final CarPropertyValue expectedEvent;
+        public final CarPropertyValue mismatchedEvent;
 
-        MismatchedEventPair(VehiclePropValue expectedEvent, VehiclePropValue mismatchedEvent,
+        MismatchedEventPair(CarPropertyValue expectedEvent, CarPropertyValue mismatchedEvent,
                                    int idx) {
             this.idx = idx;
             this.expectedEvent = expectedEvent;
@@ -48,7 +48,7 @@
         }
     }
 
-    VhalEventVerifier(List<VehiclePropValue> expectedEvents) {
+    VhalEventVerifier(List<CarPropertyValue> expectedEvents) {
         mExpectedEvents = expectedEvents;
         mIdx = 0;
         mMismatchedEvents = new ArrayList<>();
@@ -62,12 +62,12 @@
      *
      * @param nextEvent to be verified
      */
-    public void verify(VehiclePropValue nextEvent) {
+    public void verify(CarPropertyValue nextEvent) {
         if (mIdx >= mExpectedEvents.size()) {
             return;
         }
-        VehiclePropValue expectedEvent = mExpectedEvents.get(mIdx);
-        if (!Utils.areVehiclePropValuesEqual(expectedEvent, nextEvent)) {
+        CarPropertyValue expectedEvent = mExpectedEvents.get(mIdx);
+        if (!Utils.areCarPropertyValuesEqual(expectedEvent, nextEvent)) {
             mMismatchedEvents.add(new MismatchedEventPair(expectedEvent, nextEvent, mIdx));
         }
         if (++mIdx == mExpectedEvents.size()) {
@@ -87,8 +87,8 @@
         StringBuilder resultBuilder = new StringBuilder();
         for (MismatchedEventPair pair : mMismatchedEvents) {
             resultBuilder.append("Index " + pair.idx + ": Expected "
-                    + Utils.vehiclePropValueToString(pair.expectedEvent) + ", Received "
-                    + Utils.vehiclePropValueToString(pair.mismatchedEvent) + "\n");
+                    + pair.expectedEvent + ", Received "
+                    + pair.mismatchedEvent + "\n");
         }
         return resultBuilder.toString();
     }
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalJsonReader.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalJsonReader.java
index bf4e32f..7731273 100644
--- a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalJsonReader.java
+++ b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalJsonReader.java
@@ -17,7 +17,7 @@
 
 import static java.lang.Integer.toHexString;
 
-import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
+import android.car.hardware.CarPropertyValue;
 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyType;
 
 import com.android.car.vehiclehal.VehiclePropValueBuilder;
@@ -44,11 +44,15 @@
     private static final String JSON_FIELD_AREA_ID = "areaId";
     private static final String JSON_FIELD_TIMESTAMP = "timestamp";
     private static final String JSON_FIELD_VALUE = "value";
+    private static final String JSON_FIELD_INT32_VALUES = "int32Values";
+    private static final String JSON_FIELD_INT64_VALUES = "int64Values";
+    private static final String JSON_FIELD_FLOAT_VALUES = "floatValues";
+    private static final String JSON_FIELD_STRING_VALUE = "stringValue";
 
-    public static List<VehiclePropValue> readFromJson(InputStream in)
+    public static List<CarPropertyValue> readFromJson(InputStream in)
             throws IOException, JSONException {
         JSONArray rawEvents = new JSONArray(readJsonString(in));
-        List<VehiclePropValue> events = new ArrayList<>();
+        List<CarPropertyValue> events = new ArrayList<>();
         for (int i = 0; i < rawEvents.length(); i++) {
             events.add(getEvent(rawEvents.getJSONObject(i)));
         }
@@ -64,32 +68,64 @@
         return builder.toString();
     }
 
-    private static VehiclePropValue getEvent(JSONObject rawEvent) throws JSONException {
+    private static CarPropertyValue<?> getEvent(JSONObject rawEvent) throws JSONException {
         int prop = rawEvent.getInt(JSON_FIELD_PROP);
-        VehiclePropValueBuilder builder = VehiclePropValueBuilder.newBuilder(prop)
-                .setAreaId(rawEvent.getInt(JSON_FIELD_AREA_ID))
-                .setTimestamp(rawEvent.getLong(JSON_FIELD_TIMESTAMP));
+        int areaId = rawEvent.getInt(JSON_FIELD_AREA_ID);
+        long timestamp = rawEvent.getLong(JSON_FIELD_TIMESTAMP);
 
         switch (prop & VehiclePropertyType.MASK) {
             case VehiclePropertyType.BOOLEAN:
+                return new CarPropertyValue<>(prop, areaId, CarPropertyValue.STATUS_AVAILABLE,
+                                            timestamp, rawEvent.getInt(JSON_FIELD_VALUE) != 0);
             case VehiclePropertyType.INT32:
-                builder.addIntValue(rawEvent.getInt(JSON_FIELD_VALUE));
-                break;
+                return new CarPropertyValue<>(prop, areaId, CarPropertyValue.STATUS_AVAILABLE,
+                                            timestamp, rawEvent.getInt(JSON_FIELD_VALUE));
             case VehiclePropertyType.INT64:
-                builder.setInt64Value(rawEvent.getLong(JSON_FIELD_VALUE));
-                break;
+                return new CarPropertyValue<>(prop, areaId, CarPropertyValue.STATUS_AVAILABLE,
+                                            timestamp, rawEvent.getLong(JSON_FIELD_VALUE));
             case VehiclePropertyType.FLOAT:
-                builder.addFloatValue((float) rawEvent.getDouble(JSON_FIELD_VALUE));
-                break;
+                return new CarPropertyValue<>(prop, areaId,
+                                              CarPropertyValue.STATUS_AVAILABLE, timestamp,
+                                              (float) rawEvent.getDouble(JSON_FIELD_VALUE));
             case VehiclePropertyType.STRING:
-                builder.setStringValue(rawEvent.getString(JSON_FIELD_VALUE));
-                break;
-            //TODO: Add VehiclePropertyType.MIXED type support
+                return new CarPropertyValue<>(prop, areaId, CarPropertyValue.STATUS_AVAILABLE,
+                                            timestamp, rawEvent.getString(JSON_FIELD_VALUE));
+            // TODO: CarPropertyValue API has not supported VehiclePropertyType.MIXED type yet.
+            // Here is a temporary solution to use VehiclePropValue.RawValue
+            case VehiclePropertyType.MIXED:
+                VehiclePropValueBuilder builder = VehiclePropValueBuilder.newBuilder(prop);
+                JSONObject rawValueJson = rawEvent.getJSONObject(JSON_FIELD_VALUE);
+                copyValuesArray(
+                        builder, rawValueJson.optJSONArray(JSON_FIELD_INT32_VALUES), Integer.class);
+                copyValuesArray(
+                        builder, rawValueJson.optJSONArray(JSON_FIELD_INT64_VALUES), Long.class);
+                copyValuesArray(
+                        builder, rawValueJson.optJSONArray(JSON_FIELD_FLOAT_VALUES), Float.class);
+                builder.setStringValue(rawValueJson.getString(JSON_FIELD_STRING_VALUE));
+
+                return new CarPropertyValue<>(prop, areaId, CarPropertyValue.STATUS_AVAILABLE,
+                                              timestamp, builder.build().value);
             default:
                 throw new IllegalArgumentException("Property type 0x"
                         + toHexString(prop & VehiclePropertyType.MASK)
                         + " is not supported in the test.");
         }
-        return builder.build();
+    }
+
+    private static void copyValuesArray(VehiclePropValueBuilder builder, JSONArray jsonArray,
+            Class clazz) throws JSONException {
+        if (jsonArray == null) {
+            return;
+        }
+        for (int i = 0; i < jsonArray.length(); i++) {
+            if (clazz == Integer.class) {
+                builder.addIntValue(jsonArray.getInt(i));
+            } else if (clazz == Long.class) {
+                // It is really "add" the value
+                builder.setInt64Value(jsonArray.getLong(i));
+            } else if (clazz == Float.class) {
+                builder.addFloatValue((float) jsonArray.getDouble(i));
+            } // TODO: Add support for byte array if required
+        }
     }
 }
diff --git a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalPropMaps.java b/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalPropMaps.java
deleted file mode 100644
index f24cad6..0000000
--- a/tests/vehiclehal_test/src/com/android/car/vehiclehal/test/VhalPropMaps.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.car.vehiclehal.test;
-
-import android.car.hardware.hvac.CarHvacManager;
-import android.hardware.automotive.vehicle.V2_0.VehicleProperty;
-import android.util.SparseIntArray;
-
-class VhalPropMaps {
-
-    private static final SparseIntArray HVAC_PROP_MAP;
-
-    static {
-        HVAC_PROP_MAP = new SparseIntArray();
-        HVAC_PROP_MAP.put(CarHvacManager.ID_MIRROR_DEFROSTER_ON,
-                          VehicleProperty.HVAC_SIDE_MIRROR_HEAT);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_STEERING_WHEEL_HEAT,
-                          VehicleProperty.HVAC_STEERING_WHEEL_HEAT);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_OUTSIDE_AIR_TEMP,
-                          VehicleProperty.ENV_OUTSIDE_TEMPERATURE);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_TEMPERATURE_DISPLAY_UNITS,
-                          VehicleProperty.HVAC_TEMPERATURE_DISPLAY_UNITS);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_TEMP_SETPOINT,
-                          VehicleProperty.HVAC_TEMPERATURE_SET);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_TEMP_ACTUAL,
-                          VehicleProperty.HVAC_TEMPERATURE_CURRENT);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_FAN_SPEED_SETPOINT,
-                          VehicleProperty.HVAC_FAN_SPEED);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_FAN_SPEED_RPM,
-                          VehicleProperty.HVAC_ACTUAL_FAN_SPEED_RPM);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_FAN_DIRECTION_AVAILABLE,
-                          VehicleProperty.HVAC_FAN_DIRECTION_AVAILABLE);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_FAN_DIRECTION,
-                          VehicleProperty.HVAC_FAN_DIRECTION);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_SEAT_TEMP,
-                          VehicleProperty.HVAC_SEAT_TEMPERATURE);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_AC_ON,
-                          VehicleProperty.HVAC_AC_ON);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_AUTOMATIC_MODE_ON,
-                          VehicleProperty.HVAC_AUTO_ON);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_AIR_RECIRCULATION_ON,
-                          VehicleProperty.HVAC_RECIRC_ON);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_MAX_AC_ON,
-                          VehicleProperty.HVAC_MAX_AC_ON);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_DUAL_ZONE_ON,
-                          VehicleProperty.HVAC_DUAL_ON);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_MAX_DEFROST_ON,
-                          VehicleProperty.HVAC_MAX_DEFROST_ON);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_HVAC_POWER_ON,
-                          VehicleProperty.HVAC_POWER_ON);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_ZONED_HVAC_AUTO_RECIRC_ON,
-                          VehicleProperty.HVAC_AUTO_RECIRC_ON);
-        HVAC_PROP_MAP.put(CarHvacManager.ID_WINDOW_DEFROSTER_ON,
-                          VehicleProperty.HVAC_DEFROSTER);
-    }
-
-    static int getHvacVhalProp(final int hvacProp) {
-        return HVAC_PROP_MAP.get(hvacProp);
-    }
-}
diff --git a/tools/emulator/vhal_consts_2_0.py b/tools/emulator/vhal_consts_2_0.py
index a9d9990..85351c0 100644
--- a/tools/emulator/vhal_consts_2_0.py
+++ b/tools/emulator/vhal_consts_2_0.py
@@ -138,13 +138,6 @@
 STATUSCODE_ACCESS_DENIED = 0x4
 STATUSCODE_INTERNAL_ERROR = 0x5
 
-# Wheel
-WHEEL_UNKNOWN = 0x0
-WHEEL_LEFT_FRONT = 0x1
-WHEEL_RIGHT_FRONT = 0x2
-WHEEL_LEFT_REAR = 0x4
-WHEEL_RIGHT_REAR = 0x8
-
 # VehicleLightState
 VEHICLELIGHTSTATE_OFF = 0x0
 VEHICLELIGHTSTATE_ON = 0x1
@@ -266,17 +259,19 @@
 VEHICLETURNSIGNAL_LEFT = 0x2
 
 # EvConnectorType
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_UNKNOWN = 0x0
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_J1772 = 0x1
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_MENNEKES = 0x2
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_CHADEMO = 0x3
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_COMBO_1 = 0x4
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_COMBO_2 = 0x5
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_TESLA_ROADSTER = 0x6
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_TESLA_HPWC = 0x7
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_TESLA_SUPERCHARGER = 0x8
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_GBT = 0x9
-EVCONNECTORTYPE_EV_CONNECTOR_TYPE_OTHER = 0x65
+EVCONNECTORTYPE_UNKNOWN = 0x0
+EVCONNECTORTYPE_IEC_TYPE_1_AC = 0x1
+EVCONNECTORTYPE_IEC_TYPE_2_AC = 0x2
+EVCONNECTORTYPE_IEC_TYPE_3_AC = 0x3
+EVCONNECTORTYPE_IEC_TYPE_4_DC = 0x4
+EVCONNECTORTYPE_IEC_TYPE_1_CCS_DC = 0x5
+EVCONNECTORTYPE_IEC_TYPE_2_CCS_DC = 0x6
+EVCONNECTORTYPE_TESLA_ROADSTER = 0x7
+EVCONNECTORTYPE_TESLA_HPWC = 0x8
+EVCONNECTORTYPE_TESLA_SUPERCHARGER = 0x9
+EVCONNECTORTYPE_GBT_AC = 0xa
+EVCONNECTORTYPE_GBT_DC = 0xb
+EVCONNECTORTYPE_OTHER = 0x65
 
 # VehiclePropertyType
 VEHICLEPROPERTYTYPE_STRING = 0x100000
@@ -309,6 +304,13 @@
 OBD2SECONDARYAIRSTATUS_FROM_OUTSIDE_OR_OFF = 0x4
 OBD2SECONDARYAIRSTATUS_PUMP_ON_FOR_DIAGNOSTICS = 0x8
 
+# VehicleAreaWheel
+VEHICLEAREAWHEEL_UNKNOWN = 0x0
+VEHICLEAREAWHEEL_LEFT_FRONT = 0x1
+VEHICLEAREAWHEEL_RIGHT_FRONT = 0x2
+VEHICLEAREAWHEEL_LEFT_REAR = 0x4
+VEHICLEAREAWHEEL_RIGHT_REAR = 0x8
+
 # VehicleGear
 VEHICLEGEAR_GEAR_NEUTRAL = 0x1
 VEHICLEGEAR_GEAR_REVERSE = 0x2
@@ -410,7 +412,7 @@
 VEHICLEPROPERTY_EV_CHARGE_PORT_CONNECTED = 0x1120030b
 VEHICLEPROPERTY_EV_BATTERY_INSTANTANEOUS_CHARGE_RATE = 0x1160030c
 VEHICLEPROPERTY_RANGE_REMAINING = 0x11600308
-VEHICLEPROPERTY_TIRE_PRESSURE = 0x17e00309
+VEHICLEPROPERTY_TIRE_PRESSURE = 0x17600309
 VEHICLEPROPERTY_GEAR_SELECTION = 0x11400400
 VEHICLEPROPERTY_CURRENT_GEAR = 0x11400401
 VEHICLEPROPERTY_PARKING_BRAKE_ON = 0x11200402
@@ -442,7 +444,6 @@
 VEHICLEPROPERTY_HVAC_AUTO_RECIRC_ON = 0x15200512
 VEHICLEPROPERTY_HVAC_SEAT_VENTILATION = 0x15400513
 VEHICLEPROPERTY_ENV_OUTSIDE_TEMPERATURE = 0x11600703
-VEHICLEPROPERTY_ENV_CABIN_TEMPERATURE = 0x15600704
 VEHICLEPROPERTY_AP_POWER_STATE_REQ = 0x11410a00
 VEHICLEPROPERTY_AP_POWER_STATE_REPORT = 0x11410a01
 VEHICLEPROPERTY_AP_POWER_BOOTUP_REASON = 0x11400a02
diff --git a/user/car-user-lib/Android.bp b/user/car-user-lib/Android.bp
new file mode 100644
index 0000000..19024b8
--- /dev/null
+++ b/user/car-user-lib/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "android.car.user",
+    srcs: [
+        "src/**/*.java",
+    ],
+    product_variables: {
+        pdk: {
+            enabled: false,
+        },
+    },
+    installable: true,
+}
diff --git a/user/car-user-lib/Android.mk b/user/car-user-lib/Android.mk
new file mode 100644
index 0000000..566f999
--- /dev/null
+++ b/user/car-user-lib/Android.mk
@@ -0,0 +1,95 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+#disble build in PDK, missing aidl import breaks build
+ifneq ($(TARGET_BUILD_PDK),true)
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+car_user_lib_sources := $(call all-java-files-under, src)
+
+# API Check
+# ---------------------------------------------
+car_user_module := android.car.user
+car_user_module_src_files := $(car_user_lib_sources)
+car_user_module_api_dir := $(LOCAL_PATH)/api
+car_user_module_java_libraries := framework
+car_user_module_include_systemapi := true
+car_user_module_java_packages := android.car.user*
+include $(CAR_API_CHECK)
+
+# Build stubs jar for target android-support-car
+# ---------------------------------------------
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_JAVA_LIBRARIES := android.car.user
+
+LOCAL_ADDITIONAL_JAVA_DIR := $(call intermediates-dir-for,JAVA_LIBRARIES,android.car.user,,COMMON)/src
+
+android_car_user_stub_packages := \
+    android.car.user*
+
+android_car_user_api := \
+    $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/android.car.user_api.txt
+
+# Note: The make target is android.car.user-stub-docs
+LOCAL_MODULE := android.car.user-stub
+LOCAL_DROIDDOC_OPTIONS := \
+    -stubs $(call intermediates-dir-for,JAVA_LIBRARIES,android.car.user-stubs,,COMMON)/src \
+    -stubpackages $(subst $(space),:,$(android_car_user_stub_packages)) \
+    -api $(android_car_user_api) \
+    -nodocs
+
+LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/java/
+LOCAL_DROIDDOC_HTML_DIR :=
+
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+LOCAL_UNINSTALLABLE_MODULE := true
+
+include $(BUILD_DROIDDOC)
+
+$(android_car_user_api): $(full_target)
+
+android.car.user-stubs_stamp := $(full_target)
+
+###############################################
+# Build the stubs java files into a jar. This build rule relies on the
+# stubs_stamp make variable being set from the droiddoc rule.
+
+include $(CLEAR_VARS)
+
+# CAR_API_CHECK uses the same name to generate a module, but BUILD_DROIDDOC
+# appends "-docs" to module name.
+LOCAL_MODULE := android.car.user-stubs
+LOCAL_SOURCE_FILES_ALL_GENERATED := true
+
+# Make sure to run droiddoc first to generate the stub source files.
+LOCAL_ADDITIONAL_DEPENDENCIES := $(android.car.user-stubs_stamp)
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+android.car.user-stubs_stamp :=
+android_car_user_stub_packages :=
+android_car_user_api :=
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
+
+endif #TARGET_BUILD_PDK
\ No newline at end of file
diff --git a/car-support-lib/AndroidManifest.xml b/user/car-user-lib/AndroidManifest.xml
similarity index 72%
rename from car-support-lib/AndroidManifest.xml
rename to user/car-user-lib/AndroidManifest.xml
index f92f21b..1addd96 100644
--- a/car-support-lib/AndroidManifest.xml
+++ b/user/car-user-lib/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
+<!-- Copyright (C) 2018 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -15,8 +15,7 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
-        package="android.support.car.ui" >
-    <uses-sdk android:minSdkVersion="21"
-        android:targetSdkVersion="23" />
-</manifest>
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+    package="android.car.user" >
+  <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="23" />
+</manifest>
\ No newline at end of file
diff --git a/car-lib/src/android/car/user/CarUserManagerHelper.java b/user/car-user-lib/src/android/car/userlib/CarUserManagerHelper.java
similarity index 91%
rename from car-lib/src/android/car/user/CarUserManagerHelper.java
rename to user/car-user-lib/src/android/car/userlib/CarUserManagerHelper.java
index ce50943..a306d91 100644
--- a/car-lib/src/android/car/user/CarUserManagerHelper.java
+++ b/user/car-user-lib/src/android/car/userlib/CarUserManagerHelper.java
@@ -13,13 +13,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package android.car.user;
+
+package android.car.userlib;
 
 import android.Manifest;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.app.ActivityManager;
-import android.car.settings.CarSettings;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -57,6 +57,10 @@
 public class CarUserManagerHelper {
     private static final String TAG = "CarUserManagerHelper";
     private static final String HEADLESS_SYSTEM_USER = "android.car.systemuser.headless";
+
+    // Place holder for user name of the first user created.
+    public static final String DEFAULT_FIRST_ADMIN_NAME = "Driver";
+
     /**
      * Default set of restrictions for Non-Admin users.
      */
@@ -152,7 +156,7 @@
     public void setDefaultBootUser(int userId) {
         Settings.Global.putInt(
                 mContext.getContentResolver(),
-                CarSettings.Global.DEFAULT_USER_ID_TO_BOOT_INTO, userId);
+                Settings.Global.DEFAULT_USER_ID_TO_BOOT_INTO, userId);
     }
 
     /**
@@ -165,7 +169,7 @@
         mLastActiveUser = userId;
         if (!skipGlobalSetting) {
             Settings.Global.putInt(
-                    mContext.getContentResolver(), CarSettings.Global.LAST_ACTIVE_USER_ID, userId);
+                    mContext.getContentResolver(), Settings.Global.LAST_ACTIVE_USER_ID, userId);
         }
     }
 
@@ -177,7 +181,7 @@
     public int getDefaultBootUser() {
         // Make user 10 the original default boot user.
         return Settings.Global.getInt(
-            mContext.getContentResolver(), CarSettings.Global.DEFAULT_USER_ID_TO_BOOT_INTO,
+            mContext.getContentResolver(), Settings.Global.DEFAULT_USER_ID_TO_BOOT_INTO,
             /* default user id= */ 10);
     }
 
@@ -191,7 +195,7 @@
             return mLastActiveUser;
         }
         return Settings.Global.getInt(
-            mContext.getContentResolver(), CarSettings.Global.LAST_ACTIVE_USER_ID,
+            mContext.getContentResolver(), Settings.Global.LAST_ACTIVE_USER_ID,
             /* default user id= */ UserHandle.USER_SYSTEM);
     }
 
@@ -538,6 +542,13 @@
     }
 
     /**
+     * Checks if the foreground user is a demo user.
+     */
+    public boolean isForegroundUserDemo() {
+        return getCurrentForegroundUserInfo().isDemo();
+    }
+
+    /**
      * Checks if the foreground user is ephemeral.
      */
     public boolean isForegroundUserEphemeral() {
@@ -566,14 +577,23 @@
     }
 
     /**
+     * Returns whether a user has a restriction.
+     *
+     * @param restriction Restriction to check. Should be a UserManager.* restriction.
+     * @param userInfo the user whose restriction is to be checked
+     */
+    public boolean hasUserRestriction(String restriction, UserInfo userInfo) {
+        return mUserManager.hasUserRestriction(restriction, userInfo.getUserHandle());
+    }
+
+    /**
      * Return whether the foreground user has a restriction.
      *
      * @param restriction Restriction to check. Should be a UserManager.* restriction.
      * @return Whether that restriction exists for the foreground user.
      */
     public boolean foregroundUserHasUserRestriction(String restriction) {
-        return mUserManager.hasUserRestriction(
-            restriction, getCurrentForegroundUserInfo().getUserHandle());
+        return hasUserRestriction(restriction, getCurrentForegroundUserInfo());
     }
 
     /**
@@ -583,6 +603,23 @@
         return !foregroundUserHasUserRestriction(UserManager.DISALLOW_ADD_USER);
     }
 
+    /**
+     * Checks if the current process user can modify accounts. Demo and Guest users cannot modify
+     * accounts even if the DISALLOW_MODIFY_ACCOUNTS restriction is not applied.
+     */
+    public boolean canForegroundUserModifyAccounts() {
+        return !foregroundUserHasUserRestriction(UserManager.DISALLOW_MODIFY_ACCOUNTS)
+            && !isForegroundUserDemo()
+            && !isForegroundUserGuest();
+    }
+
+    /**
+     * Checks if the foreground user can switch to other users.
+     */
+    public boolean canForegroundUserSwitchUsers() {
+        return !foregroundUserHasUserRestriction(UserManager.DISALLOW_USER_SWITCH);
+    }
+
     // Current process user information accessors
 
     /**
@@ -774,10 +811,9 @@
             return false;
         }
 
-        // Not allow to delete the last admin user on the device for now.
+        // Try to create a new admin before deleting the current one.
         if (userInfo.isAdmin() && getAllAdminUsers().size() <= 1) {
-            Log.w(TAG, "User " + userInfo.id + " is the last admin user on device.");
-            return false;
+            return removeLastAdmin(userInfo);
         }
 
         if (!isCurrentProcessAdminUser() && !isCurrentProcessUser(userInfo)) {
@@ -787,12 +823,32 @@
         }
 
         if (userInfo.id == getCurrentForegroundUserId()) {
+            if (!canCurrentProcessSwitchUsers()) {
+                // If we can't switch to a different user, we can't exit this one and therefore
+                // can't delete it.
+                Log.w(TAG, "User switching is not allowed. Current user cannot be deleted");
+                return false;
+            }
             startNewGuestSession(guestUserName);
         }
 
         return mUserManager.removeUser(userInfo.id);
     }
 
+    private boolean removeLastAdmin(UserInfo userInfo) {
+        Log.i(TAG, "User " + userInfo.id
+                + " is the last admin user on device. Creating a new admin.");
+
+        UserInfo newAdmin = createNewAdminUser(DEFAULT_FIRST_ADMIN_NAME);
+        if (newAdmin == null) {
+            Log.w(TAG, "Couldn't create another admin, cannot delete current user.");
+            return false;
+        }
+
+        switchToUser(newAdmin);
+        return mUserManager.removeUser(userInfo.id);
+    }
+
     /**
      * Switches (logs in) to another user given user id.
      *
@@ -804,6 +860,12 @@
             // System User doesn't associate with real person, can not be switched to.
             return false;
         }
+        if (!canCurrentProcessSwitchUsers()) {
+            return false;
+        }
+        if (id == getCurrentForegroundUserId()) {
+            return false;
+        }
         return mActivityManager.switchUser(id);
     }
 
@@ -814,10 +876,6 @@
      * @return {@code true} if user switching succeed.
      */
     public boolean switchToUser(UserInfo userInfo) {
-        if (userInfo.id == getCurrentForegroundUserId()) {
-            return false;
-        }
-
         return switchToUserId(userInfo.id);
     }