angler: remove USE_CLANG_PLATFORM_BUILD
am: 40d2796a7f

Change-Id: I89027ad332ef8431a5ab1f409a32b52f895cd7ec
diff --git a/AnglerLayout/res/values-bn-rBD/strings.xml b/AnglerLayout/res/values-bn/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-bn-rBD/strings.xml
rename to AnglerLayout/res/values-bn/strings.xml
diff --git a/AnglerLayout/res/values-et-rEE/strings.xml b/AnglerLayout/res/values-et/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-et-rEE/strings.xml
rename to AnglerLayout/res/values-et/strings.xml
diff --git a/AnglerLayout/res/values-eu-rES/strings.xml b/AnglerLayout/res/values-eu/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-eu-rES/strings.xml
rename to AnglerLayout/res/values-eu/strings.xml
diff --git a/AnglerLayout/res/values-gl-rES/strings.xml b/AnglerLayout/res/values-gl/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-gl-rES/strings.xml
rename to AnglerLayout/res/values-gl/strings.xml
diff --git a/AnglerLayout/res/values-gu-rIN/strings.xml b/AnglerLayout/res/values-gu/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-gu-rIN/strings.xml
rename to AnglerLayout/res/values-gu/strings.xml
diff --git a/AnglerLayout/res/values-hy-rAM/strings.xml b/AnglerLayout/res/values-hy/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-hy-rAM/strings.xml
rename to AnglerLayout/res/values-hy/strings.xml
diff --git a/AnglerLayout/res/values-is-rIS/strings.xml b/AnglerLayout/res/values-is/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-is-rIS/strings.xml
rename to AnglerLayout/res/values-is/strings.xml
diff --git a/AnglerLayout/res/values-ka-rGE/strings.xml b/AnglerLayout/res/values-ka/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ka-rGE/strings.xml
rename to AnglerLayout/res/values-ka/strings.xml
diff --git a/AnglerLayout/res/values-kk-rKZ/strings.xml b/AnglerLayout/res/values-kk/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-kk-rKZ/strings.xml
rename to AnglerLayout/res/values-kk/strings.xml
diff --git a/AnglerLayout/res/values-km-rKH/strings.xml b/AnglerLayout/res/values-km/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-km-rKH/strings.xml
rename to AnglerLayout/res/values-km/strings.xml
diff --git a/AnglerLayout/res/values-kn-rIN/strings.xml b/AnglerLayout/res/values-kn/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-kn-rIN/strings.xml
rename to AnglerLayout/res/values-kn/strings.xml
diff --git a/AnglerLayout/res/values-ky-rKG/strings.xml b/AnglerLayout/res/values-ky/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ky-rKG/strings.xml
rename to AnglerLayout/res/values-ky/strings.xml
diff --git a/AnglerLayout/res/values-lo-rLA/strings.xml b/AnglerLayout/res/values-lo/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-lo-rLA/strings.xml
rename to AnglerLayout/res/values-lo/strings.xml
diff --git a/AnglerLayout/res/values-mk-rMK/strings.xml b/AnglerLayout/res/values-mk/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-mk-rMK/strings.xml
rename to AnglerLayout/res/values-mk/strings.xml
diff --git a/AnglerLayout/res/values-ml-rIN/strings.xml b/AnglerLayout/res/values-ml/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ml-rIN/strings.xml
rename to AnglerLayout/res/values-ml/strings.xml
diff --git a/AnglerLayout/res/values-mn-rMN/strings.xml b/AnglerLayout/res/values-mn/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-mn-rMN/strings.xml
rename to AnglerLayout/res/values-mn/strings.xml
diff --git a/AnglerLayout/res/values-mr-rIN/strings.xml b/AnglerLayout/res/values-mr/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-mr-rIN/strings.xml
rename to AnglerLayout/res/values-mr/strings.xml
diff --git a/AnglerLayout/res/values-ms-rMY/strings.xml b/AnglerLayout/res/values-ms/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ms-rMY/strings.xml
rename to AnglerLayout/res/values-ms/strings.xml
diff --git a/AnglerLayout/res/values-my-rMM/strings.xml b/AnglerLayout/res/values-my/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-my-rMM/strings.xml
rename to AnglerLayout/res/values-my/strings.xml
diff --git a/AnglerLayout/res/values-ne-rNP/strings.xml b/AnglerLayout/res/values-ne/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ne-rNP/strings.xml
rename to AnglerLayout/res/values-ne/strings.xml
diff --git a/AnglerLayout/res/values-pa-rIN/strings.xml b/AnglerLayout/res/values-pa/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-pa-rIN/strings.xml
rename to AnglerLayout/res/values-pa/strings.xml
diff --git a/AnglerLayout/res/values-si-rLK/strings.xml b/AnglerLayout/res/values-si/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-si-rLK/strings.xml
rename to AnglerLayout/res/values-si/strings.xml
diff --git a/AnglerLayout/res/values-sq-rAL/strings.xml b/AnglerLayout/res/values-sq/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-sq-rAL/strings.xml
rename to AnglerLayout/res/values-sq/strings.xml
diff --git a/AnglerLayout/res/values-ta-rIN/strings.xml b/AnglerLayout/res/values-ta/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ta-rIN/strings.xml
rename to AnglerLayout/res/values-ta/strings.xml
diff --git a/AnglerLayout/res/values-te-rIN/strings.xml b/AnglerLayout/res/values-te/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-te-rIN/strings.xml
rename to AnglerLayout/res/values-te/strings.xml
diff --git a/AnglerLayout/res/values-ur-rPK/strings.xml b/AnglerLayout/res/values-ur/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-ur-rPK/strings.xml
rename to AnglerLayout/res/values-ur/strings.xml
diff --git a/AnglerLayout/res/values-uz-rUZ/strings.xml b/AnglerLayout/res/values-uz/strings.xml
similarity index 100%
rename from AnglerLayout/res/values-uz-rUZ/strings.xml
rename to AnglerLayout/res/values-uz/strings.xml
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 6697461..26724c5 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -35,6 +35,8 @@
 BOARD_RAMDISK_OFFSET     := 0x02000000
 
 BOARD_KERNEL_CMDLINE := androidboot.hardware=angler androidboot.console=ttyHSL0 msm_rtb.filter=0x37 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 boot_cpus=0-3 no_console_suspend
+BOARD_KERNEL_CMDLINE += loop.max_part=7
+
 BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET)
 
 BOARD_USES_ALSA_AUDIO := true
@@ -64,8 +66,13 @@
 USE_OPENGL_RENDERER := true
 TARGET_USES_ION := true
 TARGET_USES_C2D_COMPOSITION := true
+TARGET_USES_GRALLOC1_ADAPTER := true
 TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS := true
 MAX_VIRTUAL_DISPLAY_DIMENSION := 2048
+TARGET_USES_HWC2 := true
+VSYNC_EVENT_PHASE_OFFSET_NS := 2000000
+SF_VSYNC_EVENT_PHASE_OFFSET_NS := 6000000
+NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
 
 HAVE_ADRENO_SOURCE:= false
 
@@ -78,12 +85,15 @@
 BOARD_BOOTIMAGE_PARTITION_SIZE := 33554432
 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 33554432
 BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472
+BOARD_SYSTEMIMAGE_JOURNAL_SIZE := 0
+# as of 3765811, inode usage was xxxx, use 4096 to be safe
+BOARD_SYSTEMIMAGE_EXTFS_INODE_COUNT := 4096
 BOARD_USERDATAIMAGE_PARTITION_SIZE := 26503790080
 BOARD_CACHEIMAGE_PARTITION_SIZE := 104857600
 BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
 BOARD_FLASH_BLOCK_SIZE := 131072
 
-BOARD_HAL_STATIC_LIBRARIES := libdumpstate.angler
+TARGET_AUX_OS_VARIANT_LIST := angler
 
 TARGET_RECOVERY_FSTAB = device/huawei/angler/fstab.angler
 TARGET_COPY_OUT_VENDOR := vendor
diff --git a/aosp_angler.mk b/aosp_angler.mk
index e59b338..f250a8a 100644
--- a/aosp_angler.mk
+++ b/aosp_angler.mk
@@ -37,7 +37,8 @@
 $(call inherit-product-if-exists, vendor/huawei/angler/device-vendor.mk)
 
 PRODUCT_PACKAGES += \
-    Launcher3
+    Launcher3 \
+    WallpaperPicker
 
 PRODUCT_PACKAGES += \
     AOSPLinks
diff --git a/audio_effects.conf b/audio_effects.conf
index 55b318e..dac9c80 100644
--- a/audio_effects.conf
+++ b/audio_effects.conf
@@ -16,7 +16,7 @@
     path /vendor/lib/soundfx/libvisualizer.so
   }
   visualizer_hw {
-    path /system/lib/soundfx/libqcomvisualizer.so
+    path /vendor/lib/soundfx/libqcomvisualizer.so
   }
   downmix {
     path /vendor/lib/soundfx/libdownmix.so
@@ -25,10 +25,10 @@
     path /vendor/lib/soundfx/libeffectproxy.so
   }
   offload_bundle {
-    path /system/lib/soundfx/libqcompostprocbundle.so
+    path /vendor/lib/soundfx/libqcompostprocbundle.so
   }
   qcom_pre_processing {
-    path /system/lib/soundfx/libqcomvoiceprocessing.so
+    path /vendor/lib/soundfx/libqcomvoiceprocessing.so
   }
   loudness_enhancer {
     path /vendor/lib/soundfx/libldnhncr.so
diff --git a/audio_platform_info.xml b/audio_platform_info.xml
index 0c0d478..47ab7a4 100755
--- a/audio_platform_info.xml
+++ b/audio_platform_info.xml
@@ -56,6 +56,8 @@
         <device name="SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE" backend="speaker-and-headphones" interface="QUAT_MI2S_RX-and-SLIMBUS_0_RX"/>
         <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="QUAT_MI2S_RX-and-SLIMBUS_0_RX"/>
         <device name="SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES" backend="speaker-and-headphones" interface="QUAT_MI2S_RX-and-SLIMBUS_0_RX"/>
+        <device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="QUAT_MI2S_RX-and-SEC_AUX_PCM_RX"/>
+        <device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="QUAT_MI2S_RX-and-SEC_AUX_PCM_RX"/>
         <device name="SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET" backend="speaker" interface="QUAT_MI2S_RX"/>
     </backend_names>
 
diff --git a/audio_policy.conf b/audio_policy.conf
deleted file mode 100644
index 7c64117..0000000
--- a/audio_policy.conf
+++ /dev/null
@@ -1,146 +0,0 @@
-# Global configuration section:
-# - lists input and output devices always present on the device
-# as well as the output device selected by default.
-# Devices are designated by a string that corresponds to the enum in audio.h
-# - defines whether the speaker output path uses DRC
-# "TRUE" means DRC is enabled, "FALSE" or omission means DRC isn't used.
-
-global_configuration {
-  attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_TELEPHONY_TX
-  default_output_device AUDIO_DEVICE_OUT_SPEAKER
-  attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_TELEPHONY_RX
-  speaker_drc_enabled TRUE
-}
-
-# audio hardware module section: contains descriptors for all audio hw modules present on the
-# device. Each hw module node is named after the corresponding hw module library base name.
-# For instance, "primary" corresponds to audio.primary.<device>.so.
-# The "primary" module is mandatory and must include at least one output with
-# AUDIO_OUTPUT_FLAG_PRIMARY flag.
-# Each module descriptor contains one or more output profile descriptors and zero or more
-# input profile descriptors. Each profile lists all the parameters supported by a given output
-# or input stream category.
-# The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding
-# to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n".
-
-audio_hw_modules {
-  primary {
-    outputs {
-      primary {
-        sampling_rates 44100|48000
-        channel_masks AUDIO_CHANNEL_OUT_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_LINE|AUDIO_DEVICE_OUT_ALL_SCO
-        flags AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_PRIMARY
-      }
-      raw {
-        sampling_rates 48000
-        channel_masks AUDIO_CHANNEL_OUT_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_LINE|AUDIO_DEVICE_OUT_ALL_SCO
-        flags AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_RAW
-      }
-      deep_buffer {
-         sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000
-         channel_masks AUDIO_CHANNEL_OUT_STEREO
-         formats AUDIO_FORMAT_PCM_16_BIT
-         devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_LINE|AUDIO_DEVICE_OUT_ALL_SCO
-         flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER
-      }
-      compress_offload {
-        sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000
-        channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO
-        formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2
-        devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_LINE
-        flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
-      }
-      voice_tx {
-        sampling_rates 8000|16000|48000
-        channel_masks AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_MONO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_OUT_TELEPHONY_TX
-      }
-      tts {
-        sampling_rates 48000
-        channel_masks AUDIO_CHANNEL_OUT_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_OUT_SPEAKER
-        flags AUDIO_OUTPUT_FLAG_TTS
-      }
-    }
-    inputs {
-      primary {
-        sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000
-        channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK|AUDIO_CHANNEL_INDEX_MASK_3
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_VOICE_CALL|AUDIO_DEVICE_IN_BACK_MIC
-      }
-      voice_rx {
-        sampling_rates 8000|16000|48000
-        channel_masks AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_MONO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_IN_TELEPHONY_RX
-      }
-    }
-  }
-  a2dp {
-    outputs {
-      a2dp {
-        sampling_rates 44100
-        channel_masks AUDIO_CHANNEL_OUT_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_OUT_ALL_A2DP
-      }
-    }
-    inputs {
-      a2dp {
-        sampling_rates 44100|48000
-        channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_IN_BLUETOOTH_A2DP
-      }
-    }
-  }
-  usb {
-    outputs {
-      usb_accessory {
-        sampling_rates 44100
-        channel_masks AUDIO_CHANNEL_OUT_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_OUT_USB_ACCESSORY
-      }
-      usb_device {
-        sampling_rates dynamic
-        channel_masks dynamic
-        formats dynamic
-        devices AUDIO_DEVICE_OUT_USB_DEVICE
-      }
-    }
-    inputs {
-      usb_device {
-        sampling_rates dynamic
-        channel_masks dynamic
-        formats dynamic
-        devices AUDIO_DEVICE_IN_USB_DEVICE
-      }
-    }
-  }
-  r_submix {
-    outputs {
-      submix {
-        sampling_rates 48000
-        channel_masks AUDIO_CHANNEL_OUT_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX
-      }
-    }
-    inputs {
-      submix {
-        sampling_rates 48000
-        channel_masks AUDIO_CHANNEL_IN_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
-        devices AUDIO_DEVICE_IN_REMOTE_SUBMIX
-      }
-    }
-  }
-}
diff --git a/camera/QCamera2/HAL/QCamera2HWI.cpp b/camera/QCamera2/HAL/QCamera2HWI.cpp
index 1d75233..8a4e8e2 100644
--- a/camera/QCamera2/HAL/QCamera2HWI.cpp
+++ b/camera/QCamera2/HAL/QCamera2HWI.cpp
@@ -38,7 +38,6 @@
 #include <utils/Errors.h>
 #include <utils/Trace.h>
 #include <gralloc_priv.h>
-#include <gui/Surface.h>
 
 #include "QCamera2HWI.h"
 #include "QCameraMem.h"
@@ -1719,13 +1718,14 @@
         {
             if (isNoDisplayMode()) {
                 mem = new QCameraStreamMemory(mGetMemory,
+                        mCallbackCookie,
                         bCachedMem,
                         (bPoolMem) ? &m_memoryPool : NULL,
                         stream_type);
             } else {
                 cam_dimension_t dim;
                 QCameraGrallocMemory *grallocMemory =
-                    new QCameraGrallocMemory(mGetMemory);
+                    new QCameraGrallocMemory(mGetMemory, mCallbackCookie);
 
                 mParameters.getStreamDimension(stream_type, dim);
                 if (grallocMemory)
@@ -1739,11 +1739,11 @@
     case CAM_STREAM_TYPE_POSTVIEW:
         {
             if (isNoDisplayMode() || isPreviewRestartEnabled()) {
-                mem = new QCameraStreamMemory(mGetMemory, bCachedMem);
+                mem = new QCameraStreamMemory(mGetMemory, mCallbackCookie, bCachedMem);
             } else {
                 cam_dimension_t dim;
                 QCameraGrallocMemory *grallocMemory =
-                        new QCameraGrallocMemory(mGetMemory);
+                        new QCameraGrallocMemory(mGetMemory, mCallbackCookie);
 
                 mParameters.getStreamDimension(stream_type, dim);
                 if (grallocMemory)
@@ -1760,6 +1760,7 @@
     case CAM_STREAM_TYPE_METADATA:
     case CAM_STREAM_TYPE_OFFLINE_PROC:
         mem = new QCameraStreamMemory(mGetMemory,
+                mCallbackCookie,
                 bCachedMem,
                 (bPoolMem) ? &m_memoryPool : NULL,
                 stream_type);
@@ -1771,7 +1772,7 @@
                 bCachedMem = QCAMERA_ION_USE_NOCACHE;
             }
             CDBG_HIGH("%s: vidoe buf using cached memory = %d", __func__, bCachedMem);
-            mem = new QCameraVideoMemory(mGetMemory, bCachedMem);
+            mem = new QCameraVideoMemory(mGetMemory, mCallbackCookie, bCachedMem);
         }
         break;
     case CAM_STREAM_TYPE_DEFAULT:
@@ -2072,7 +2073,7 @@
     switch (streamInfo->stream_type) {
     case CAM_STREAM_TYPE_VIDEO: {
         QCameraVideoMemory *video_mem = new QCameraVideoMemory(
-                mGetMemory, FALSE, CAM_STREAM_BUF_TYPE_USERPTR);
+                mGetMemory, mCallbackCookie, FALSE, CAM_STREAM_BUF_TYPE_USERPTR);
         video_mem->allocateMeta(streamInfo->num_bufs);
         mem = static_cast<QCameraMemory *>(video_mem);
     }
diff --git a/camera/QCamera2/HAL/QCameraChannel.cpp b/camera/QCamera2/HAL/QCameraChannel.cpp
index 3ce8535..91fbef2 100644
--- a/camera/QCamera2/HAL/QCameraChannel.cpp
+++ b/camera/QCamera2/HAL/QCameraChannel.cpp
@@ -33,6 +33,7 @@
 #include "QCameraParameters.h"
 #include "QCamera2HWI.h"
 #include "QCameraChannel.h"
+#include <media/hardware/HardwareAPI.h>
 
 using namespace android;
 
@@ -804,6 +805,17 @@
     }
 
     int32_t rc = pVideoStream->bufDone(opaque, isMetaData);
+
+    const VideoNativeHandleMetadata *packet =
+            static_cast<const VideoNativeHandleMetadata *> (opaque);
+    if (kMetadataBufferTypeNativeHandleSource == packet->eType) {
+        native_handle_close(packet->pHandle);
+        native_handle_delete(packet->pHandle);
+    } else {
+        ALOGE("%s Received unexpected video buffer type: %d",
+                __func__, packet->eType);
+    }
+
     return rc;
 }
 
diff --git a/camera/QCamera2/HAL/QCameraMem.cpp b/camera/QCamera2/HAL/QCameraMem.cpp
index 47e1eff..bf4703e 100644
--- a/camera/QCamera2/HAL/QCameraMem.cpp
+++ b/camera/QCamera2/HAL/QCameraMem.cpp
@@ -37,7 +37,7 @@
 #include <utils/Trace.h>
 #include <utils/Log.h>
 #include <gralloc_priv.h>
-#include <QComOMXMetadata.h>
+#include <media/hardware/HardwareAPI.h>
 #include "QCamera2HWI.h"
 #include "QCameraMem.h"
 #include "QCameraParameters.h"
@@ -517,7 +517,7 @@
     memInfo.heap_id = heap_id;
 
     ALOGD("%s : ION buffer %lx with size %d allocated",
-            __func__, (unsigned long)memInfo.handle, alloc.len);
+                __func__, (unsigned long)memInfo.handle, alloc.len);
     return OK;
 
 ION_MAP_FAILED:
@@ -975,11 +975,13 @@
  * RETURN     : none
  *==========================================================================*/
 QCameraStreamMemory::QCameraStreamMemory(camera_request_memory memory,
+        void* cbCookie,
         bool cached,
         QCameraMemoryPool *pool,
         cam_stream_type_t streamType, cam_stream_buf_type bufType)
     :QCameraMemory(cached, pool, streamType),
-     mGetMemory(memory)
+     mGetMemory(memory),
+     mCallbackCookie(cbCookie)
 {
     for (int i = 0; i < MM_CAMERA_MAX_NUM_FRAMES; i ++)
         mCameraMemory[i] = NULL;
@@ -1023,7 +1025,7 @@
         if (isSecure == SECURE) {
             mCameraMemory[i] = 0;
         } else {
-            mCameraMemory[i] = mGetMemory(mMemInfo[i].fd, mMemInfo[i].size, 1, this);
+            mCameraMemory[i] = mGetMemory(mMemInfo[i].fd, mMemInfo[i].size, 1, mCallbackCookie);
         }
     }
     mBufferCount = count;
@@ -1053,7 +1055,7 @@
         return rc;
 
     for (int i = mBufferCount; i < mBufferCount + count; i++) {
-        mCameraMemory[i] = mGetMemory(mMemInfo[i].fd, mMemInfo[i].size, 1, this);
+        mCameraMemory[i] = mGetMemory(mMemInfo[i].fd, mMemInfo[i].size, 1, mCallbackCookie);
     }
     mBufferCount = (uint8_t)(mBufferCount + count);
     traceLogAllocEnd((size * count));
@@ -1202,8 +1204,9 @@
  * RETURN     : none
  *==========================================================================*/
 QCameraVideoMemory::QCameraVideoMemory(camera_request_memory memory,
+                                       void* cbCookie,
                                        bool cached, cam_stream_buf_type bufType)
-    : QCameraStreamMemory(memory, cached)
+    : QCameraStreamMemory(memory, cbCookie, cached)
 {
     memset(mMetadata, 0, sizeof(mMetadata));
     mMetaBufCount = 0;
@@ -1250,12 +1253,13 @@
         }
 
         for (int i = 0; i < count; i ++) {
-            struct encoder_media_buffer_type * packet =
-                    (struct encoder_media_buffer_type *)mMetadata[i]->data;
+            VideoNativeHandleMetadata *packet =
+                    static_cast<VideoNativeHandleMetadata *> (mMetadata[i]->data);
             //1     fd, 1 offset, 1 size, 1 color transform
-            packet->meta_handle = native_handle_create(1, 3);
-            packet->buffer_type = kMetadataBufferTypeCameraSource;
-            native_handle_t * nh = const_cast<native_handle_t *>(packet->meta_handle);
+            mNativeHandles[i] = native_handle_create(1, 3);
+            packet->pHandle =  mNativeHandles[i];
+            packet->eType = kMetadataBufferTypeNativeHandleSource;
+            native_handle_t * nh = packet->pHandle;
             if (!nh) {
                 ALOGE("%s: Error in getting video native handle", __func__);
                 return NO_MEMORY;
@@ -1294,7 +1298,7 @@
     if (mBufType != CAM_STREAM_BUF_TYPE_USERPTR) {
         for (int i = mBufferCount; i < count + mBufferCount; i ++) {
             mMetadata[i] = mGetMemory(-1,
-                    sizeof(struct encoder_media_buffer_type), 1, this);
+                    sizeof(struct VideoNativeHandleMetadata), 1, mCallbackCookie);
             if (!mMetadata[i]) {
                 ALOGE("allocation of video metadata failed.");
                 for (int j = mBufferCount; j <= i-1; j ++) {
@@ -1305,11 +1309,12 @@
                 }
                 return NO_MEMORY;
             }
-            struct encoder_media_buffer_type * packet =
-                    (struct encoder_media_buffer_type *)mMetadata[i]->data;
-            packet->meta_handle = native_handle_create(1, 2); //1 fd, 1 offset and 1 size
-            packet->buffer_type = kMetadataBufferTypeCameraSource;
-            native_handle_t * nh = const_cast<native_handle_t *>(packet->meta_handle);
+            VideoNativeHandleMetadata *packet =
+                    static_cast<VideoNativeHandleMetadata *>(mMetadata[i]->data);
+            mNativeHandles[i] = native_handle_create(1, 2); //1 fd, 1 offset and 1 size
+            packet->pHandle = mNativeHandles[i];
+            packet->eType = kMetadataBufferTypeNativeHandleSource;
+            native_handle_t * nh = packet->pHandle;
             if (!nh) {
                 ALOGE("%s: Error in getting video native handle", __func__);
                 return NO_MEMORY;
@@ -1343,7 +1348,7 @@
 
     for (int i = 0; i < buf_cnt; i++) {
         mMetadata[i] = mGetMemory(-1,
-                sizeof(struct encoder_media_buffer_type), 1, this);
+                sizeof(struct VideoNativeHandleMetadata), 1, mCallbackCookie);
         if (!mMetadata[i]) {
             ALOGE("allocation of video metadata failed.");
             for (int j = (i - 1); j >= 0; j--) {
@@ -1388,19 +1393,13 @@
 {
     if (mBufType != CAM_STREAM_BUF_TYPE_USERPTR) {
         for (int i = 0; i < mBufferCount; i ++) {
-            struct encoder_media_buffer_type * packet =
-                    (struct encoder_media_buffer_type *)mMetadata[i]->data;
-            if (NULL != packet) {
-                native_handle_t * nh = const_cast<native_handle_t *>(packet->meta_handle);
-                if (NULL != nh) {
-                   if (native_handle_delete(nh)) {
-                       ALOGE("Unable to delete native handle");
-                   }
-                } else {
-                   ALOGE("native handle not available");
-                }
+            native_handle_t * nh = mNativeHandles[i];
+            if (NULL != nh) {
+               if (native_handle_delete(nh)) {
+                   ALOGE("Unable to delete native handle");
+               }
             } else {
-                ALOGE("packet not available");
+               ALOGE("native handle not available");
             }
         }
     }
@@ -1430,10 +1429,14 @@
     if (index >= mMetaBufCount || (!metadata && index >= mBufferCount))
         return NULL;
 
-    if (metadata)
+    if (metadata) {
+        VideoNativeHandleMetadata *packet =
+                static_cast<VideoNativeHandleMetadata *> (mMetadata[index]->data);
+        packet->pHandle =  mNativeHandles[index];
         return mMetadata[index];
-    else
+    } else {
         return mCameraMemory[index];
+    }
 }
 
 /*===========================================================================
@@ -1482,7 +1485,7 @@
  *
  * RETURN     : none
  *==========================================================================*/
-QCameraGrallocMemory::QCameraGrallocMemory(camera_request_memory memory)
+QCameraGrallocMemory::QCameraGrallocMemory(camera_request_memory memory, void* cbCookie)
         : QCameraMemory(true), mColorSpace(ITU_R_601_FR)
 {
     mMinUndequeuedBuffers = 0;
@@ -1490,6 +1493,7 @@
     mWidth = mHeight = mStride = mScanline = 0;
     mFormat = HAL_PIXEL_FORMAT_YCrCb_420_SP;
     mGetMemory = memory;
+    mCallbackCookie = cbCookie;
     for (int i = 0; i < MM_CAMERA_MAX_NUM_FRAMES; i ++) {
         mBufferHandle[i] = NULL;
         mLocalFlag[i] = BUFFER_NOT_OWNED;
@@ -1746,7 +1750,7 @@
             mGetMemory(mPrivateHandle[cnt]->fd,
                     (size_t)mPrivateHandle[cnt]->size,
                     1,
-                    (void *)this);
+                    mCallbackCookie);
         CDBG_HIGH("%s: idx = %d, fd = %d, size = %d, offset = %d",
               __func__, cnt, mPrivateHandle[cnt]->fd,
               mPrivateHandle[cnt]->size,
diff --git a/camera/QCamera2/HAL/QCameraMem.h b/camera/QCamera2/HAL/QCameraMem.h
index dbb401b..067a164 100644
--- a/camera/QCamera2/HAL/QCameraMem.h
+++ b/camera/QCamera2/HAL/QCameraMem.h
@@ -171,6 +171,7 @@
 class QCameraStreamMemory : public QCameraMemory {
 public:
     QCameraStreamMemory(camera_request_memory getMemory,
+                        void* cbCookie,
                         bool cached,
                         QCameraMemoryPool *pool = NULL,
                         cam_stream_type_t streamType = CAM_STREAM_TYPE_DEFAULT,
@@ -188,6 +189,7 @@
 
 protected:
     camera_request_memory mGetMemory;
+    void* mCallbackCookie;
     camera_memory_t *mCameraMemory[MM_CAMERA_MAX_NUM_FRAMES];
 };
 
@@ -195,7 +197,8 @@
 // framework. They are allocated from /dev/ion or gralloc.
 class QCameraVideoMemory : public QCameraStreamMemory {
 public:
-    QCameraVideoMemory(camera_request_memory getMemory, bool cached,
+    QCameraVideoMemory(camera_request_memory getMemory,
+            void* cbCookie, bool cached,
             cam_stream_buf_type bufType = CAM_STREAM_BUF_TYPE_MPLANE);
     virtual ~QCameraVideoMemory();
 
@@ -209,6 +212,7 @@
 
 private:
     camera_memory_t *mMetadata[MM_CAMERA_MAX_NUM_FRAMES];
+    native_handle_t *mNativeHandles[MM_CAMERA_MAX_NUM_FRAMES];
     uint8_t mMetaBufCount;
 };
 
@@ -220,7 +224,7 @@
         BUFFER_OWNED,
     };
 public:
-    QCameraGrallocMemory(camera_request_memory getMemory);
+    QCameraGrallocMemory(camera_request_memory getMemory, void* cbCookie);
     void setNativeWindow(preview_stream_ops_t *anw);
     virtual ~QCameraGrallocMemory();
 
@@ -247,6 +251,7 @@
     preview_stream_ops_t *mWindow;
     int mWidth, mHeight, mFormat, mStride, mScanline;
     camera_request_memory mGetMemory;
+    void* mCallbackCookie;
     camera_memory_t *mCameraMemory[MM_CAMERA_MAX_NUM_FRAMES];
     int mMinUndequeuedBuffers;
     enum ColorSpace_t mColorSpace;
diff --git a/camera/QCamera2/HAL/QCameraParameters.h b/camera/QCamera2/HAL/QCameraParameters.h
index e248313..855c93c 100644
--- a/camera/QCamera2/HAL/QCameraParameters.h
+++ b/camera/QCamera2/HAL/QCameraParameters.h
@@ -42,7 +42,7 @@
 static const char ExifUndefinedPrefix[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };   // "\0\0\0\0\0\0\0\0"
 
 #define EXIF_ASCII_PREFIX_SIZE           8   //(sizeof(ExifAsciiPrefix))
-#define FOCAL_LENGTH_DECIMAL_PRECISION   100
+#define FOCAL_LENGTH_DECIMAL_PRECISION   1000
 
 #define CAMERA_MIN_BATCH_COUNT           1
 
diff --git a/camera/QCamera2/HAL3/QCamera3Channel.cpp b/camera/QCamera2/HAL3/QCamera3Channel.cpp
index 52acc1c..cb31953 100644
--- a/camera/QCamera2/HAL3/QCamera3Channel.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Channel.cpp
@@ -3571,6 +3571,8 @@
         *frame = *super_frame;
 
         /* Since reprocessing is done, send the callback to release the input buffer */
+        // Release offline buffers.
+        obj->releaseOfflineMemory(resultFrameNumber);
         if (mChannelCB) {
             mChannelCB(NULL, NULL, resultFrameNumber, true, mUserData);
         }
@@ -4242,6 +4244,14 @@
         ALOGE("%s: Input buffer memory map failed: %d", __func__, rc);
     }
 
+    if (rc != NO_ERROR) {
+        //Try to recover by returning input with error status
+        camera3_stream_buffer_t result;
+        memset(&result, 0, sizeof(result));
+        result.status = CAMERA3_BUFFER_STATUS_ERROR;
+        mChannelCB(NULL, &result, frame->frameNumber, true, mUserData);
+    }
+
     return rc;
 }
 
diff --git a/camera/QCamera2/HAL3/QCamera3Channel.h b/camera/QCamera2/HAL3/QCamera3Channel.h
index 3bf4125..b1edece 100644
--- a/camera/QCamera2/HAL3/QCamera3Channel.h
+++ b/camera/QCamera2/HAL3/QCamera3Channel.h
@@ -198,13 +198,13 @@
     int32_t getStreamSize(cam_dimension_t &dim);
 
     QCamera3PostProcessor m_postprocessor; // post processor
+    int32_t releaseOfflineMemory(uint32_t resultFrameNumber);
 
 protected:
     bool isWNREnabled() {return m_bWNROn;};
     void startPostProc(const reprocess_config_t &reproc_cfg);
     void issueChannelCb(buffer_handle_t *resultBuffer,
             uint32_t resultFrameNumber);
-    int32_t releaseOfflineMemory(uint32_t resultFrameNumber);
 
     QCamera3StreamMem mMemory; //output buffer allocated by fwk
     camera3_stream_t *mCamera3Stream;
diff --git a/camera/QCamera2/HAL3/QCamera3HALHeader.h b/camera/QCamera2/HAL3/QCamera3HALHeader.h
index 4502b8a..1c730ad 100644
--- a/camera/QCamera2/HAL3/QCamera3HALHeader.h
+++ b/camera/QCamera2/HAL3/QCamera3HALHeader.h
@@ -41,6 +41,10 @@
 #define MAX(a, b) ((a) > (b) ? (a) : (b))
 #define MIN(a, b) ((a) < (b) ? (a) : (b))
 
+#define IS_USAGE_VIDEO(usage)  (((usage) & (GRALLOC_USAGE_HW_VIDEO_ENCODER)) \
+                         == GRALLOC_USAGE_HW_VIDEO_ENCODER)
+#define IS_USAGE_PREVIEW(usage) (((usage) & (GRALLOC_USAGE_HW_TEXTURE)) \
+                         == GRALLOC_USAGE_HW_TEXTURE)
 #define IS_USAGE_ZSL(usage)  (((usage) & (GRALLOC_USAGE_HW_CAMERA_ZSL)) \
         == (GRALLOC_USAGE_HW_CAMERA_ZSL))
 
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 8b74e30..1893800 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -917,6 +917,55 @@
     return rc;
 }
 
+/*===========================================================================
+ * FUNCTION   : validateUsageFlags
+ *
+ * DESCRIPTION: Check if the configuration usage flags are supported
+ *
+ * PARAMETERS :
+ *   @stream_list : streams to be configured
+ *
+ * RETURN     :
+ *   NO_ERROR if the usage flags are supported
+ *   error code if usage flags are not supported
+ *
+ *==========================================================================*/
+int QCamera3HardwareInterface::validateUsageFlags(
+        const camera3_stream_configuration_t* streamList)
+{
+    for (size_t j = 0; j < streamList->num_streams; j++) {
+        const camera3_stream_t *newStream = streamList->streams[j];
+
+        if (newStream->format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED ||
+            (newStream->stream_type != CAMERA3_STREAM_OUTPUT &&
+             newStream->stream_type != CAMERA3_STREAM_BIDIRECTIONAL)) {
+            continue;
+        }
+
+        bool isVideo = IS_USAGE_VIDEO(newStream->usage);
+        bool isPreview = IS_USAGE_PREVIEW(newStream->usage);
+        bool isZSL = IS_USAGE_ZSL(newStream->usage);
+
+        // Color space for this camera device is guaranteed to be ITU_R_601_FR.
+        // So color spaces will always match.
+
+        // Check whether underlying formats of shared streams match.
+        if (isVideo && isPreview) {
+            ALOGE("Combined video and preview usage flag is not supported");
+            return -EINVAL;
+        }
+        if (isPreview && isZSL) {
+            ALOGE("Combined preview and zsl usage flag is not supported");
+            return -EINVAL;
+        }
+        if (isVideo && isZSL) {
+            ALOGE("Combined video and zsl usage flag is not supported");
+            return -EINVAL;
+        }
+    }
+    return NO_ERROR;
+}
+
 /*==============================================================================
  * FUNCTION   : isSupportChannelNeeded
  *
@@ -1120,6 +1169,11 @@
         return BAD_VALUE;
     }
 
+    rc = validateUsageFlags(streamList);
+    if (rc != NO_ERROR) {
+        return rc;
+    }
+
     mOpMode = streamList->operation_mode;
     CDBG("%s: mOpMode: %d", __func__, mOpMode);
 
@@ -1831,7 +1885,8 @@
 
                 default:
                     ALOGE("%s: not a supported format 0x%x", __func__, newStream->format);
-                    break;
+                    pthread_mutex_unlock(&mMutex);
+                    return -EINVAL;
                 }
             } else if (newStream->stream_type == CAMERA3_STREAM_INPUT) {
                 newStream->max_buffers = MAX_INFLIGHT_REPROCESS_REQUESTS;
@@ -2393,7 +2448,8 @@
         pthread_mutex_lock(&mMutex);
         handleMetadataWithLock(metadata_buf,
                 false /* free_and_bufdone_meta_buf */,
-                (i == 0) /* first metadata in the batch metadata */);
+                (i == urgentFrameNumDiff-1), /* last urgent metadata in the batch */
+                (i == frameNumDiff-1) /* last metadata in the batch metadata */);
         pthread_mutex_unlock(&mMutex);
     }
 
@@ -2413,15 +2469,17 @@
  * PARAMETERS : @metadata_buf: metadata buffer
  *              @free_and_bufdone_meta_buf: Buf done on the meta buf and free
  *                 the meta buf in this method
- *              @firstMetadataInBatch: Boolean to indicate whether this is the
- *                  first metadata in a batch. Valid only for batch mode
+ *              @lastUrgentMetadataInBatch: Boolean to indicate whether this is the
+ *                  last urgent metadata in a batch. Always true for non-batch mode
+ *              @lastMetadataInBatch: Boolean to indicate whether this is the
+ *                  last metadata in a batch. Always true for non-batch mode
  *
  * RETURN     :
  *
  *==========================================================================*/
 void QCamera3HardwareInterface::handleMetadataWithLock(
     mm_camera_super_buf_t *metadata_buf, bool free_and_bufdone_meta_buf,
-    bool firstMetadataInBatch)
+    bool lastUrgentMetadataInBatch, bool lastMetadataInBatch)
 {
     ATRACE_CALL();
 
@@ -2476,6 +2534,7 @@
                 (i->partial_result_cnt == 0)) {
                 ALOGE("%s: Error: HAL missed urgent metadata for frame number %d",
                     __func__, i->frame_number);
+                i->partial_result_cnt++;
             }
 
             if (i->frame_number == urgent_frame_number &&
@@ -2487,8 +2546,8 @@
                 i->partial_result_cnt++;
                 i->bUrgentReceived = 1;
                 // Extract 3A metadata
-                result.result =
-                    translateCbUrgentMetadataToResultMetadata(metadata);
+                result.result = translateCbUrgentMetadataToResultMetadata(
+                        metadata, lastUrgentMetadataInBatch);
                 // Populate metadata result
                 result.frame_number = urgent_frame_number;
                 result.num_output_buffers = 0;
@@ -2585,8 +2644,6 @@
                 ALOGE("%s: Missing metadata buffer for frame number %d, reporting CAMERA3_MSG_ERROR_RESULT",
                      __func__, i->frame_number);
 
-                mPendingLiveRequest--;
-
                 CameraMetadata dummyMetadata;
                 dummyMetadata.update(ANDROID_REQUEST_ID, &(i->request_id), 1);
                 result.result = dummyMetadata.release();
@@ -2598,6 +2655,11 @@
                 notify_msg.message.error.error_stream = NULL;
                 notify_msg.message.error.frame_number = i->frame_number;
                 mCallbackOps->notify(mCallbackOps, &notify_msg);
+
+                // partial_result should be PARTIAL_RESULT_CNT in case of
+                // ERROR_RESULT.
+                i->partial_result_cnt = PARTIAL_RESULT_COUNT;
+                result.partial_result = PARTIAL_RESULT_COUNT;
             }
         } else {
             i->partial_result_cnt++;
@@ -2647,7 +2709,7 @@
             result.result = translateFromHalMetadata(metadata,
                     i->timestamp, i->request_id, i->jpegMetadata, i->pipeline_depth,
                     i->capture_intent, i->hybrid_ae_enable, internalPproc, i->need_dynamic_blklvl,
-                    firstMetadataInBatch);
+                    lastMetadataInBatch);
 
             saveExifParams(metadata);
 
@@ -2815,12 +2877,15 @@
  *
  * DESCRIPTION: Handles input buffer and shutter callback with mMutex lock held.
  *
- * PARAMETERS : @frame_number: frame number of the input buffer
+ * PARAMETERS :
+ *  @buffer: contains status information about the processed buffer
+ *  @frame_number: frame number of the input buffer
  *
  * RETURN     :
  *
  *==========================================================================*/
-void QCamera3HardwareInterface::handleInputBufferWithLock(uint32_t frame_number)
+void QCamera3HardwareInterface::handleInputBufferWithLock(
+        camera3_stream_buffer_t *buffer, uint32_t frame_number)
 {
     ATRACE_CALL();
     pendingRequestIterator i = mPendingRequestsList.begin();
@@ -2863,14 +2928,55 @@
            }
         }
 
-        camera3_capture_result result;
-        memset(&result, 0, sizeof(camera3_capture_result));
-        result.frame_number = frame_number;
-        result.result = i->settings;
-        result.input_buffer = i->input_buffer;
-        result.partial_result = PARTIAL_RESULT_COUNT;
+        if ((nullptr != buffer) && (CAMERA3_BUFFER_STATUS_OK != buffer->status)) {
+            camera3_notify_msg_t notify_msg;
+            memset(&notify_msg, 0, sizeof(camera3_notify_msg_t));
+            notify_msg.type = CAMERA3_MSG_ERROR;
+            notify_msg.message.error.error_code = CAMERA3_MSG_ERROR_REQUEST;
+            notify_msg.message.error.error_stream = NULL;
+            notify_msg.message.error.frame_number = frame_number;
+            mCallbackOps->notify(mCallbackOps, &notify_msg);
 
-        mCallbackOps->process_capture_result(mCallbackOps, &result);
+            Vector<camera3_stream_buffer_t> pendingBuffers;
+            camera3_stream_buffer_t pending;
+            memset(&pending, 0, sizeof(pending));
+            pending.acquire_fence = -1;
+            pending.release_fence = -1;
+            pending.status = CAMERA3_BUFFER_STATUS_ERROR;
+            for (List<PendingBufferInfo>::iterator k =
+                    mPendingBuffersMap.mPendingBufferList.begin();
+                    k != mPendingBuffersMap.mPendingBufferList.end();) {
+                if (k->frame_number == frame_number) {
+                    pending.buffer = k->buffer;
+                    pending.stream = k->stream;
+                    pendingBuffers.add(pending);
+
+                    mPendingBuffersMap.num_buffers--;
+                    k = mPendingBuffersMap.mPendingBufferList.erase(k);
+                } else {
+                    k++;
+                }
+            }
+
+            camera3_capture_result result;
+            memset(&result, 0, sizeof(camera3_capture_result));
+            result.input_buffer = i->input_buffer;
+            result.num_output_buffers = pendingBuffers.size();
+            result.output_buffers = pendingBuffers.array();
+            result.result = NULL;
+            result.frame_number = frame_number;
+            mCallbackOps->process_capture_result(mCallbackOps, &result);
+        } else {
+            camera3_capture_result result;
+            memset(&result, 0, sizeof(camera3_capture_result));
+            result.frame_number = frame_number;
+            result.result = i->settings;
+            result.input_buffer = i->input_buffer;
+
+            result.partial_result = PARTIAL_RESULT_COUNT;
+
+            mCallbackOps->process_capture_result(mCallbackOps, &result);
+        }
         CDBG("%s: Input request metadata and input buffer frame_number = %u",
                        __func__, i->frame_number);
         i = erasePendingRequest(i);
@@ -4039,12 +4145,13 @@
             pthread_mutex_lock(&mMutex);
             handleMetadataWithLock(metadata_buf,
                     true /* free_and_bufdone_meta_buf */,
-                    false /* first frame of batch metadata */ );
+                    true /* last urgent frame of batch metadata */,
+                    true /* last frame of batch metadata */ );
             pthread_mutex_unlock(&mMutex);
         }
     } else if (isInputBuffer) {
         pthread_mutex_lock(&mMutex);
-        handleInputBufferWithLock(frame_number);
+        handleInputBufferWithLock(buffer, frame_number);
         pthread_mutex_unlock(&mMutex);
     } else {
         pthread_mutex_lock(&mMutex);
@@ -4199,6 +4306,8 @@
  *   @hybrid_ae_enable: whether hybrid ae is enabled
  *   @jpegMetadata: additional jpeg metadata
  *   @pprocDone: whether internal offline postprocsesing is done
+ *   @lastMetadataInBatch: Boolean to indicate whether this is the last metadata
+ *                         in a batch. Always true for non-batch mode.
  *
  * RETURN     : camera_metadata_t*
  *              metadata in a format specified by fwk
@@ -4214,16 +4323,15 @@
                                  uint8_t hybrid_ae_enable,
                                  bool pprocDone,
                                  bool dynamic_blklvl,
-                                 bool firstMetadataInBatch)
+                                 bool lastMetadataInBatch)
 {
     CameraMetadata camMetadata;
     camera_metadata_t *resultMetadata;
 
-    if (mBatchSize && !firstMetadataInBatch) {
-        /* In batch mode, use cached metadata from the first metadata
-            in the batch */
-        camMetadata.clear();
-        camMetadata = mCachedMetadata;
+    if (!lastMetadataInBatch) {
+        /* In batch mode, use empty metadata if this is not the last in batch*/
+        resultMetadata = allocate_camera_metadata(0, 0);
+        return resultMetadata;
     }
 
     if (jpegMetadata.entryCount())
@@ -4235,12 +4343,6 @@
     camMetadata.update(ANDROID_CONTROL_CAPTURE_INTENT, &capture_intent, 1);
     camMetadata.update(NEXUS_EXPERIMENTAL_2016_HYBRID_AE_ENABLE, &hybrid_ae_enable, 1);
 
-    if (mBatchSize && !firstMetadataInBatch) {
-        /* In batch mode, use cached metadata instead of parsing metadata buffer again */
-        resultMetadata = camMetadata.release();
-        return resultMetadata;
-    }
-
     IF_META_AVAILABLE(uint32_t, frame_number, CAM_INTF_META_FRAME_NUMBER, metadata) {
         int64_t fwk_frame_number = *frame_number;
         camMetadata.update(ANDROID_SYNC_FRAME_NUMBER, &fwk_frame_number, 1);
@@ -5038,12 +5140,6 @@
         camMetadata.update(ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST, &postRawSensitivity, 1);
     }
 
-    /* In batch mode, cache the first metadata in the batch */
-    if (mBatchSize && firstMetadataInBatch) {
-        mCachedMetadata.clear();
-        mCachedMetadata = camMetadata;
-    }
-
     resultMetadata = camMetadata.release();
     return resultMetadata;
 }
@@ -5111,17 +5207,26 @@
  *
  * PARAMETERS :
  *   @metadata : metadata information from callback
+ *   @lastUrgentMetadataInBatch: Boolean to indicate whether this is the last
+ *                               urgent metadata in a batch. Always true for
+ *                               non-batch mode.
  *
  * RETURN     : camera_metadata_t*
  *              metadata in a format specified by fwk
  *==========================================================================*/
 camera_metadata_t*
 QCamera3HardwareInterface::translateCbUrgentMetadataToResultMetadata
-                                (metadata_buffer_t *metadata)
+                                (metadata_buffer_t *metadata, bool lastUrgentMetadataInBatch)
 {
     CameraMetadata camMetadata;
     camera_metadata_t *resultMetadata;
 
+    if (!lastUrgentMetadataInBatch) {
+        /* In batch mode, use empty metadata if this is not the last in batch
+         */
+        resultMetadata = allocate_camera_metadata(0, 0);
+        return resultMetadata;
+    }
 
     IF_META_AVAILABLE(uint32_t, whiteBalanceState, CAM_INTF_META_AWB_STATE, metadata) {
         uint8_t fwk_whiteBalanceState = (uint8_t) *whiteBalanceState;
@@ -9330,6 +9435,21 @@
     for (size_t j = 0; j < streamList->num_streams; j++){
         camera3_stream_t *newStream = streamList->streams[j];
 
+        switch(newStream->rotation) {
+            case CAMERA3_STREAM_ROTATION_0:
+            case CAMERA3_STREAM_ROTATION_90:
+            case CAMERA3_STREAM_ROTATION_180:
+            case CAMERA3_STREAM_ROTATION_270:
+                //Expected values
+                break;
+            default:
+                ALOGE("%s: Error: Unsupported rotation of %d requested for stream"
+                        "type:%d and stream format:%d", __func__,
+                        newStream->rotation, newStream->stream_type,
+                        newStream->format);
+                return -EINVAL;
+        }
+
         bool isRotated = (newStream->rotation != CAMERA3_STREAM_ROTATION_0);
         bool isImplDef = (newStream->format ==
                 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED);
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.h b/camera/QCamera2/HAL3/QCamera3HWI.h
index eb75f97..e22cb29 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.h
+++ b/camera/QCamera2/HAL3/QCamera3HWI.h
@@ -169,13 +169,13 @@
     int translateToHalMetadata(const camera3_capture_request_t *request,
             metadata_buffer_t *parm, uint32_t snapshotStreamId);
     camera_metadata_t* translateCbUrgentMetadataToResultMetadata (
-                             metadata_buffer_t *metadata);
+                             metadata_buffer_t *metadata, bool lastUrgentMetadataInBatch);
     camera_metadata_t* translateFromHalMetadata(metadata_buffer_t *metadata,
                             nsecs_t timestamp, int32_t request_id,
                             const CameraMetadata& jpegMetadata, uint8_t pipeline_depth,
                             uint8_t capture_intent, uint8_t hybrid_ae_enable,
                             bool pprocDone, bool dynamic_blklvl,
-                            bool firstMetadataInBatch);
+                            bool lastMetadataInBatch);
     camera_metadata_t* saveRequestSettings(const CameraMetadata& jpegMetadata,
                             camera3_capture_request_t *request);
     int initParameters();
@@ -231,17 +231,20 @@
     int validateCaptureRequest(camera3_capture_request_t *request);
     int validateStreamDimensions(camera3_stream_configuration_t *streamList);
     int validateStreamRotations(camera3_stream_configuration_t *streamList);
+    int validateUsageFlags(const camera3_stream_configuration_t *streamList);
     void deriveMinFrameDuration();
     int32_t handlePendingReprocResults(uint32_t frame_number);
     int64_t getMinFrameDuration(const camera3_capture_request_t *request);
     void handleMetadataWithLock(mm_camera_super_buf_t *metadata_buf,
             bool free_and_bufdone_meta_buf,
-            bool firstMetadataInBatch);
+            bool lastUrgentMetadataInBatch,
+            bool lastMetadataInBatch);
     void handleBatchMetadata(mm_camera_super_buf_t *metadata_buf,
             bool free_and_bufdone_meta_buf);
     void handleBufferWithLock(camera3_stream_buffer_t *buffer,
             uint32_t frame_number);
-    void handleInputBufferWithLock(uint32_t frame_number);
+    void handleInputBufferWithLock(camera3_stream_buffer_t *buffer,
+            uint32_t frame_number);
     void unblockRequestIfNecessary();
     void dumpMetadataToFile(tuning_params_t &meta, uint32_t &dumpFrameCount,
             bool enabled, const char *type, uint32_t frameNumber);
@@ -437,7 +440,6 @@
     uint32_t mLdafCalib[2];
     bool mPowerHintEnabled;
     int32_t mLastCustIntentFrmNum;
-    CameraMetadata  mCachedMetadata;
 
     static const QCameraMap<camera_metadata_enum_android_control_effect_mode_t,
             cam_effect_mode_type> EFFECT_MODES_MAP[];
diff --git a/camera/QCamera2/QCamera2Hal.cpp b/camera/QCamera2/QCamera2Hal.cpp
index 81fbc9b..569c86c 100755
--- a/camera/QCamera2/QCamera2Hal.cpp
+++ b/camera/QCamera2/QCamera2Hal.cpp
@@ -48,7 +48,7 @@
     .get_camera_info = qcamera::QCamera2Factory::get_camera_info,
     .set_callbacks = qcamera::QCamera2Factory::set_callbacks,
     .get_vendor_tag_ops = qcamera::QCamera3VendorTags::get_vendor_tag_ops,
-    .open_legacy = qcamera::QCamera2Factory::open_legacy,
+    .open_legacy = NULL,
     .set_torch_mode = qcamera::QCamera2Factory::set_torch_mode,
     .init  = NULL,
     .reserved = {0}
diff --git a/camera/QCamera2/stack/mm-jpeg-interface/Android.mk b/camera/QCamera2/stack/mm-jpeg-interface/Android.mk
index 90527f5..cc270e2 100644
--- a/camera/QCamera2/stack/mm-jpeg-interface/Android.mk
+++ b/camera/QCamera2/stack/mm-jpeg-interface/Android.mk
@@ -58,7 +58,7 @@
 
 LOCAL_MODULE           := libmmjpeg_interface
 LOCAL_PRELINK_MODULE   := false
-LOCAL_SHARED_LIBRARIES := libdl libcutils liblog libqomx_core
+LOCAL_SHARED_LIBRARIES := libdl libcutils liblog libqomx_core liblog
 LOCAL_MODULE_TAGS := optional
 
 LOCAL_32_BIT_ONLY := $(BOARD_QTI_CAMERA_32BIT_ONLY)
diff --git a/camera/QCamera2/stack/mm-jpeg-interface/src/mm_jpeg.c b/camera/QCamera2/stack/mm-jpeg-interface/src/mm_jpeg.c
index 9fa8b89..4a09dc2 100755
--- a/camera/QCamera2/stack/mm-jpeg-interface/src/mm_jpeg.c
+++ b/camera/QCamera2/stack/mm-jpeg-interface/src/mm_jpeg.c
@@ -2211,6 +2211,7 @@
 
   if (!p_session->meta_enc_key) {
     CDBG_ERROR("%s:%d] error", __func__, __LINE__);
+    fclose(fp);
     return -1;
   }
 
diff --git a/camera/QCamera2/stack/mm-jpeg-interface/test/Android.mk b/camera/QCamera2/stack/mm-jpeg-interface/test/Android.mk
index b995e61..f7cbda3 100644
--- a/camera/QCamera2/stack/mm-jpeg-interface/test/Android.mk
+++ b/camera/QCamera2/stack/mm-jpeg-interface/test/Android.mk
@@ -33,7 +33,7 @@
 LOCAL_32_BIT_ONLY := $(BOARD_QTI_CAMERA_32BIT_ONLY)
 LOCAL_MODULE           := mm-jpeg-interface-test
 LOCAL_PRELINK_MODULE   := false
-LOCAL_SHARED_LIBRARIES := libcutils libdl libmmjpeg_interface
+LOCAL_SHARED_LIBRARIES := libcutils libdl libmmjpeg_interface liblog
 
 include $(BUILD_EXECUTABLE)
 
@@ -72,7 +72,7 @@
 LOCAL_32_BIT_ONLY := $(BOARD_QTI_CAMERA_32BIT_ONLY)
 LOCAL_MODULE           := mm-jpegdec-interface-test
 LOCAL_PRELINK_MODULE   := false
-LOCAL_SHARED_LIBRARIES := libcutils libdl libmmjpeg_interface
+LOCAL_SHARED_LIBRARIES := libcutils libdl libmmjpeg_interface liblog
 
 include $(BUILD_EXECUTABLE)
 
diff --git a/camera/QCamera2/util/QCameraFlash.cpp b/camera/QCamera2/util/QCameraFlash.cpp
index 2ca8fb4..e5d3c4c 100644
--- a/camera/QCamera2/util/QCameraFlash.cpp
+++ b/camera/QCamera2/util/QCameraFlash.cpp
@@ -156,7 +156,7 @@
         ALOGE("%s: No flash available for camera id: %d",
                 __func__,
                 camera_id);
-        retVal = -EINVAL;
+        retVal = -ENOSYS;
     } else if (m_cameraOpen[camera_id]) {
         ALOGE("%s: Camera in use for camera id: %d",
                 __func__,
diff --git a/device.mk b/device.mk
index f6ad2da..31bf0a1 100644
--- a/device.mk
+++ b/device.mk
@@ -23,7 +23,7 @@
 TARGET_USES_CHINOOK_SENSORHUB := false
 
 ifeq ($(TARGET_PREBUILT_KERNEL),)
-    LOCAL_KERNEL := device/huawei/angler-kernel/Image.gz-dtb
+  LOCAL_KERNEL := device/huawei/angler-kernel/Image.gz-dtb
 else
   LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
 endif
@@ -38,7 +38,10 @@
     device/huawei/angler/ueventd.angler.rc:root/ueventd.angler.rc \
     device/huawei/angler/init.recovery.angler.rc:root/init.recovery.angler.rc \
     device/huawei/angler/init.angler.power.sh:system/bin/init.angler.power.sh \
-    device/huawei/angler/uinput-fpc.kl:system/usr/keylayout/uinput-fpc.kl
+    device/huawei/angler/uinput-fpc.kl:system/usr/keylayout/uinput-fpc.kl \
+    device/huawei/angler/uinput-fpc.idc:system/usr/idc/uinput-fpc.idc \
+    device/huawei/angler/init.qcom.devwait.sh:system/bin/init.qcom.devwait.sh \
+    device/huawei/angler/init.qcom.devstart.sh:system/bin/init.qcom.devstart.sh
 
 ifeq ($(TARGET_USES_CHINOOK_SENSORHUB),true)
 PRODUCT_COPY_FILES += \
@@ -58,6 +61,10 @@
 PRODUCT_COPY_FILES += \
     device/huawei/angler/thermal-engine-angler.conf:system/etc/thermal-engine.conf
 
+# Vendor Interface Manifest
+PRODUCT_COPY_FILES += \
+    device/huawei/angler/manifest.xml:vendor/manifest.xml
+
 # Media
 PRODUCT_COPY_FILES += \
     frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:system/etc/media_codecs_google_audio.xml \
@@ -93,9 +100,10 @@
 PRODUCT_PACKAGES += \
     AnglerLayout
 
-# include fingerprintd
+# Fingerprint Sensor
 PRODUCT_PACKAGES += \
-    fingerprintd
+    fingerprint.angler \
+    android.hardware.biometrics.fingerprint@2.1-service
 
 # Delegation for OEM customization
 PRODUCT_OEM_PROPERTIES := \
@@ -115,7 +123,8 @@
     device/huawei/angler/bcmdhd.cal:system/etc/wifi/bcmdhd.cal \
     device/huawei/angler/bcmdhd-pme.cal:system/etc/wifi/bcmdhd-pme.cal \
     device/huawei/angler/bcmdhd-high.cal:system/etc/wifi/bcmdhd-high.cal \
-    device/huawei/angler/bcmdhd-low.cal:system/etc/wifi/bcmdhd-low.cal
+    device/huawei/angler/bcmdhd-low.cal:system/etc/wifi/bcmdhd-low.cal \
+    device/huawei/angler/filter_ie:system/etc/wifi/filter_ie
 
 # These are the hardware-specific features
 PRODUCT_COPY_FILES += \
@@ -152,7 +161,6 @@
     frameworks/native/data/etc/android.software.verified_boot.xml:system/etc/permissions/android.software.verified_boot.xml \
     frameworks/native/data/etc/com.nxp.mifare.xml:system/etc/permissions/com.nxp.mifare.xml \
     frameworks/native/data/etc/android.hardware.opengles.aep.xml:system/etc/permissions/android.hardware.opengles.aep.xml \
-    frameworks/native/data/etc/android.hardware.vr.high_performance.xml:system/etc/permissions/android.hardware.vr.high_performance.xml \
     frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:system/etc/permissions/android.hardware.vulkan.level.xml \
     frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:system/etc/permissions/android.hardware.vulkan.version.xml
 
@@ -180,10 +188,25 @@
 
 PRODUCT_PACKAGES += \
     gralloc.msm8994 \
+    android.hardware.graphics.allocator@2.0-impl \
+    android.hardware.graphics.allocator@2.0-service \
+    android.hardware.graphics.mapper@2.0-impl \
     hwcomposer.msm8994 \
     libgenlock \
     memtrack.msm8994 \
-    lights.angler
+    android.hardware.memtrack@1.0-impl
+
+# Light HAL
+PRODUCT_PACKAGES += \
+    lights.angler \
+    android.hardware.light@2.0-impl
+
+# RenderScript HAL
+PRODUCT_PACKAGES += \
+    android.hardware.renderscript@1.0-impl
+
+PRODUCT_PACKAGES += \
+    android.hardware.drm@1.0-impl \
 
 USE_XML_AUDIO_POLICY_CONF := 1
 PRODUCT_PACKAGES += \
@@ -197,12 +220,6 @@
 PRODUCT_PACKAGES += \
     android.hardware.soundtrigger@2.0-impl
 
-# TODO(b/31817599) remove when angler_treble goes away
-ifeq ($(TARGET_PRODUCT), angler_treble)
-PRODUCT_PACKAGES += \
-    android.hardware.audio@2.0-service
-endif
-
 # Audio effects
 PRODUCT_PACKAGES += \
     libqcomvisualizer \
@@ -219,8 +236,16 @@
     libOmxVdecHevc \
     libOmxVenc
 
+PRODUCT_PACKAGES += \
+    android.hardware.audio@2.0-impl \
+    android.hardware.audio.effect@2.0-impl \
+    android.hardware.broadcastradio@1.0-impl \
+    android.hardware.soundtrigger@2.0-impl
+
 #CAMERA
 PRODUCT_PACKAGES += \
+    camera.device@3.2-impl \
+    android.hardware.camera.provider@2.4-impl \
     camera.msm8994 \
     libcamera \
     libmmcamera_interface \
@@ -234,6 +259,9 @@
     libgps.utils \
     gps.msm8994
 
+PRODUCT_PACKAGES += \
+    android.hardware.graphics.composer@2.1-impl
+
 # Sensor & activity_recognition HAL
 TARGET_USES_NANOHUB_SENSORHAL := true
 NANOHUB_SENSORHAL_LID_STATE_ENABLED := true
@@ -243,7 +271,13 @@
 PRODUCT_PACKAGES += \
     sensors.angler \
     activity_recognition.angler \
-    context_hub.default
+    context_hub.default \
+    android.hardware.sensors@1.0-impl \
+    android.hardware.contexthub@1.0-impl \
+
+# new gatekeeper HAL
+PRODUCT_PACKAGES += \
+    android.hardware.gatekeeper@1.0-impl
 
 ifeq ($(TARGET_USES_CHINOOK_SENSORHUB),true)
 PRODUCT_PACKAGES += \
@@ -271,6 +305,7 @@
     hostapd \
     wlutil \
     wificond \
+    wifilogd \
     wpa_supplicant \
     wpa_supplicant.conf
 
@@ -282,16 +317,36 @@
 # NFC
 PRODUCT_PACKAGES += \
     libnfc-nci \
-    nfc_nci.angler \
     NfcNci \
     Tag \
+    nfc_nci.angler \
     android.hardware.nfc@1.0-impl \
 
+# Keymaster HAL
+PRODUCT_PACKAGES += \
+    android.hardware.keymaster@3.0-impl
+
+# Vibrator
+PRODUCT_PACKAGES += \
+    android.hardware.vibrator@1.0-impl
+
 # Power HAL
 PRODUCT_PACKAGES += \
     power.angler \
-    thermal.angler
+    android.hardware.power@1.0-impl \
 
+# Thermal HAL
+PRODUCT_PACKAGES += \
+    thermal.angler \
+    android.hardware.thermal@1.0-impl
+
+#GNSS HAL
+PRODUCT_PACKAGES += \
+    android.hardware.gnss@1.0-impl
+
+#USB HAL
+PRODUCT_PACKAGES += \
+    android.hardware.usb@1.0-service
 # Library used for VTS tests  (only for userdebug and eng builds)
 ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
 # For VTS profiling.
@@ -323,6 +378,15 @@
 PRODUCT_PROPERTY_OVERRIDES += \
 	persist.radio.data_con_rprt=true
 
+# Write Manufacturer & Model information in created media files.
+# IMPORTANT: ONLY SET THIS PROPERTY TO TRUE FOR PUBLIC DEVICES
+ifneq ($(filter aosp_angler% angler%, $(TARGET_PRODUCT)),)
+PRODUCT_PROPERTY_OVERRIDES += \
+    media.recorder.show_manufacturer_and_model=true
+else
+$(error "you must decide whether to write manufacturer and model information into created media files for this device. ONLY ENABLE IT FOR PUBLIC DEVICE.")
+endif  #TARGET_PRODUCT
+
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.hwui.texture_cache_size=72 \
     ro.hwui.layer_cache_size=48 \
@@ -336,10 +400,6 @@
     ro.hwui.text_large_cache_width=2048 \
     ro.hwui.text_large_cache_height=1024
 
-# VR HAL
-PRODUCT_PACKAGES += \
-    vr.angler
-
 # Enable low power video mode for 4K encode
 PRODUCT_PROPERTY_OVERRIDES += \
     vidc.debug.perf.mode=2 \
@@ -419,6 +479,10 @@
     persist.audio.product.identify="angler" \
     persist.audio.fluence.speaker=true
 
+# Default OMX service to non-Treble
+PRODUCT_PROPERTY_OVERRIDES += \
+    persist.media.treble_omx=false
+
 # Enable AAC 5.1 output
 PRODUCT_PROPERTY_OVERRIDES += \
     media.aac_51_output_enabled=true
@@ -459,7 +523,7 @@
 ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
 ifeq (,$(filter aosp_angler, $(TARGET_PRODUCT)))
 PRODUCT_PACKAGES += \
-    QXDMLoggerV2
+    NexusLogger
 endif # aosp_angler
 
 PRODUCT_COPY_FILES += \
@@ -517,3 +581,7 @@
 # b/29995499
 $(call add-product-sanitizer-module-config,cameraserver,never)
 $(call add-product-sanitizer-module-config,mm-qcamera-daemon,never)
+
+# b/36201281
+$(call add-product-sanitizer-module-config,thermal-engine,never)
+$(call add-product-sanitizer-module-config,qmuxd,never)
diff --git a/dumpstate/Android.mk b/dumpstate/Android.mk
index 3800e19..0ab008b 100644
--- a/dumpstate/Android.mk
+++ b/dumpstate/Android.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2015 The Android Open Source Project
+# 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.
@@ -12,15 +12,28 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-LOCAL_PATH:= $(call my-dir)
+LOCAL_PATH := $(call my-dir)
+
 include $(CLEAR_VARS)
+LOCAL_MODULE := android.hardware.dumpstate@1.0-service.angler
+LOCAL_INIT_RC := android.hardware.dumpstate@1.0-service.angler.rc
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_SRC_FILES := \
+    DumpstateDevice.cpp \
+    service.cpp
 
-LOCAL_C_INCLUDES := frameworks/native/cmds/dumpstate
-
-LOCAL_SRC_FILES := dumpstate.cpp
-
-LOCAL_MODULE := libdumpstate.angler
+LOCAL_SHARED_LIBRARIES := \
+    android.hardware.dumpstate@1.0 \
+    libbase \
+    libcutils \
+    libdumpstateutil \
+    libhidlbase \
+    libhidltransport \
+    libhwbinder \
+    liblog \
+    libutils
 
 LOCAL_MODULE_TAGS := optional
+LOCAL_PROPRIETARY_MODULE := true
 
-include $(BUILD_STATIC_LIBRARY)
+include $(BUILD_EXECUTABLE)
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
new file mode 100644
index 0000000..62e14be
--- /dev/null
+++ b/dumpstate/DumpstateDevice.cpp
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "dumpstate"
+
+#include "DumpstateDevice.h"
+
+#include <log/log.h>
+
+#include "DumpstateUtil.h"
+
+using android::os::dumpstate::CommandOptions;
+using android::os::dumpstate::DumpFileToFd;
+using android::os::dumpstate::RunCommandToFd;
+
+namespace android {
+namespace hardware {
+namespace dumpstate {
+namespace V1_0 {
+namespace implementation {
+
+// Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
+Return<void> DumpstateDevice::dumpstateBoard(const hidl_handle& handle) {
+    if (handle->numFds < 1) {
+        ALOGE("no FDs\n");
+        return Void();
+    }
+
+    int fd = handle->data[0];
+    if (fd < 0) {
+        ALOGE("invalid FD: %d\n", handle->data[0]);
+        return Void();
+    }
+
+    DumpFileToFd(fd, "INTERRUPTS", "/proc/interrupts");
+    DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats");
+    DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats");
+    RunCommandToFd(fd, "SUBSYSTEM TOMBSTONES", {"ls", "-l", "/data/tombstones/ramdump"}, CommandOptions::AS_ROOT);
+    DumpFileToFd(fd, "BAM DMUX Log", "/d/ipc_logging/bam_dmux/log");
+    DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log");
+    DumpFileToFd(fd, "SMD PKT Log", "/d/ipc_logging/smd_pkt/log");
+    DumpFileToFd(fd, "IPC Router Log", "/d/ipc_logging/ipc_router/log");
+    DumpFileToFd(fd, "Enabled Clocks", "/d/clk/enabled_clocks");
+    DumpFileToFd(fd, "wlan", "/sys/module/bcmdhd/parameters/info_string");
+    RunCommandToFd(fd, "ION HEAPS", {"/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done"}, CommandOptions::AS_ROOT);
+    RunCommandToFd(fd, "Temperatures", {"/system/bin/sh", "-c", "for f in die_temp emmc_therm msm_therm pa_therm1 quiet_therm ; do echo -n \"$f : \" ; cat /sys/class/hwmon/hwmon1/device/$f ; done ; for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done"}, CommandOptions::AS_ROOT);
+    DumpFileToFd(fd, "dmesg-ramoops-0", "/sys/fs/pstore/dmesg-ramoops-0");
+    DumpFileToFd(fd, "dmesg-ramoops-1", "/sys/fs/pstore/dmesg-ramoops-1");
+    DumpFileToFd(fd, "LITTLE cluster time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state");
+    RunCommandToFd(fd, "LITTLE cluster cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}, CommandOptions::AS_ROOT);
+    DumpFileToFd(fd, "big cluster time-in-state", "/sys/devices/system/cpu/cpu4/cpufreq/stats/time_in_state");
+    RunCommandToFd(fd,"big cluster cpuidle", {"/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu4/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done"}, CommandOptions::AS_ROOT);
+    DumpFileToFd(fd, "Battery:", "/sys/class/power_supply/bms/uevent");
+    RunCommandToFd(fd, "Battery:", {"/system/bin/sh", "-c", "for f in 1 2 3 4 5 6 7 8; do echo $f > /sys/class/power_supply/bms/cycle_count_id; echo \"$f: `cat /sys/class/power_supply/bms/cycle_count`\"; done"}, CommandOptions::AS_ROOT);
+
+    return Void();
+}
+
+}  // namespace implementation
+}  // namespace V1_0
+}  // namespace dumpstate
+}  // namespace hardware
+}  // namespace android
diff --git a/dumpstate/DumpstateDevice.h b/dumpstate/DumpstateDevice.h
new file mode 100644
index 0000000..f8585f5
--- /dev/null
+++ b/dumpstate/DumpstateDevice.h
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+#ifndef ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
+#define ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
+
+#include <android/hardware/dumpstate/1.0/IDumpstateDevice.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+
+namespace android {
+namespace hardware {
+namespace dumpstate {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hardware::dumpstate::V1_0::IDumpstateDevice;
+using ::android::hardware::hidl_array;
+using ::android::hardware::hidl_handle;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::sp;
+
+struct DumpstateDevice : public IDumpstateDevice {
+    // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
+    Return<void> dumpstateBoard(const hidl_handle& h) override;
+
+};
+
+}  // namespace implementation
+}  // namespace V1_0
+}  // namespace dumpstate
+}  // namespace hardware
+}  // namespace android
+
+#endif  // ANDROID_HARDWARE_DUMPSTATE_V1_0_DUMPSTATEDEVICE_H
diff --git a/dumpstate/NOTICE b/dumpstate/NOTICE
index 1a5b8e4..e48dd6b 100644
--- a/dumpstate/NOTICE
+++ b/dumpstate/NOTICE
@@ -1,5 +1,5 @@
 
-   Copyright (C) 2015 The Android Open Source Project
+   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.
diff --git a/dumpstate/android.hardware.dumpstate@1.0-service.angler.rc b/dumpstate/android.hardware.dumpstate@1.0-service.angler.rc
new file mode 100644
index 0000000..8fd84b2
--- /dev/null
+++ b/dumpstate/android.hardware.dumpstate@1.0-service.angler.rc
@@ -0,0 +1,4 @@
+service dumpstate-1-0 /vendor/bin/hw/android.hardware.dumpstate@1.0-service.angler
+    class hal
+    user system
+    group system
diff --git a/dumpstate/dumpstate.cpp b/dumpstate/dumpstate.cpp
deleted file mode 100644
index a0a498d..0000000
--- a/dumpstate/dumpstate.cpp
+++ /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.
- */
-
-#include <dumpstate.h>
-
-void dumpstate_board()
-{
-    dump_file("INTERRUPTS", "/proc/interrupts");
-    dump_file("RPM Stats", "/d/rpm_stats");
-    dump_file("Power Management Stats", "/d/rpm_master_stats");
-    run_command("SUBSYSTEM TOMBSTONES", 5, SU_PATH, "root", "ls", "-l", "/data/tombstones/ramdump", NULL);
-    dump_file("BAM DMUX Log", "/d/ipc_logging/bam_dmux/log");
-    dump_file("SMD Log", "/d/ipc_logging/smd/log");
-    dump_file("SMD PKT Log", "/d/ipc_logging/smd_pkt/log");
-    dump_file("IPC Router Log", "/d/ipc_logging/ipc_router/log");
-    dump_file("Enabled Clocks", "/d/clk/enabled_clocks");
-    dump_file("wlan", "/sys/module/bcmdhd/parameters/info_string");
-    run_command("ION HEAPS", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for d in $(ls -d /d/ion/*); do for f in $(ls $d); do echo --- $d/$f; cat $d/$f; done; done", NULL);
-    run_command("Temperatures", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for f in die_temp emmc_therm msm_therm pa_therm1 quiet_therm ; do echo -n \"$f : \" ; cat /sys/class/hwmon/hwmon1/device/$f ; done ; for f in `ls /sys/class/thermal` ; do type=`cat /sys/class/thermal/$f/type` ; temp=`cat /sys/class/thermal/$f/temp` ; echo \"$type: $temp\" ; done", NULL);
-    dump_file("dmesg-ramoops-0", "/sys/fs/pstore/dmesg-ramoops-0");
-    dump_file("dmesg-ramoops-1", "/sys/fs/pstore/dmesg-ramoops-1");
-    dump_file("LITTLE cluster time-in-state", "/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state");
-    run_command("LITTLE cluster cpuidle", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu0/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done", NULL);
-    dump_file("big cluster time-in-state", "/sys/devices/system/cpu/cpu4/cpufreq/stats/time_in_state");
-    run_command("big cluster cpuidle", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for d in $(ls -d /sys/devices/system/cpu/cpu4/cpuidle/state*); do echo \"$d: `cat $d/name` `cat $d/desc` `cat $d/time` `cat $d/usage`\"; done", NULL);
-    dump_file("Battery:", "/sys/class/power_supply/bms/uevent");
-    run_command("Battery:", 5, SU_PATH, "root", "/system/bin/sh", "-c", "for f in 1 2 3 4 5 6 7 8; do echo $f > /sys/class/power_supply/bms/cycle_count_id; echo \"$f: `cat /sys/class/power_supply/bms/cycle_count`\"; done", NULL);
-};
diff --git a/dumpstate/service.cpp b/dumpstate/service.cpp
new file mode 100644
index 0000000..46f68b1
--- /dev/null
+++ b/dumpstate/service.cpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+#define LOG_TAG "android.hardware.dumpstate@1.0-service.angler"
+
+#include <hidl/HidlSupport.h>
+#include <hidl/HidlTransportSupport.h>
+
+#include "DumpstateDevice.h"
+
+using ::android::hardware::configureRpcThreadpool;
+using ::android::hardware::dumpstate::V1_0::IDumpstateDevice;
+using ::android::hardware::dumpstate::V1_0::implementation::DumpstateDevice;
+using ::android::hardware::joinRpcThreadpool;
+using ::android::OK;
+using ::android::sp;
+
+int main(int /* argc */, char* /* argv */ []) {
+    sp<IDumpstateDevice> dumpstate = new DumpstateDevice;
+    configureRpcThreadpool(1, true /* will join */);
+    if (dumpstate->registerAsService() != OK) {
+        ALOGE("Could not register service.");
+        return 1;
+    }
+    joinRpcThreadpool();
+
+    ALOGE("Service exited!");
+    return 1;
+}
diff --git a/filter_ie b/filter_ie
new file mode 100644
index 0000000..7c10dcd
--- /dev/null
+++ b/filter_ie
@@ -0,0 +1,3 @@
+0
+1
+3
diff --git a/fstab.angler b/fstab.angler
index de0e0b1..1b4bf5e 100644
--- a/fstab.angler
+++ b/fstab.angler
@@ -5,9 +5,9 @@
 
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/system       /system         ext4    ro,barrier=1,inode_readahead_blks=8                             wait,verify=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor       /vendor         ext4    ro,barrier=1,inode_readahead_blks=8                             wait,verify=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
-/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata     /data           ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,discard,errors=panic,inode_readahead_blks=8 wait,check,forcefdeorfbe=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
+/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata     /data           ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic,inode_readahead_blks=8 wait,check,forcefdeorfbe=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/cache        /cache          ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic wait,check
-/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist      /persist        ext4    nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim
+/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist      /persist        ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/modem        /firmware       vfat    ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0        wait
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/boot         /boot           emmc    defaults                                                        defaults
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/recovery     /recovery       emmc    defaults                                                        defaults
diff --git a/fstab.aosp_angler b/fstab.aosp_angler
index ab57d3a..70a03ae 100644
--- a/fstab.aosp_angler
+++ b/fstab.aosp_angler
@@ -5,9 +5,9 @@
 
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/system       /system         ext4    ro,barrier=1,inode_readahead_blks=8                             wait,verify=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor       /vendor         ext4    ro,barrier=1,inode_readahead_blks=8                             wait
-/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata     /data           ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,discard,errors=panic,inode_readahead_blks=8 wait,check,forcefdeorfbe=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
+/dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata     /data           ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic,inode_readahead_blks=8 wait,check,forcefdeorfbe=/dev/block/platform/soc.0/f9824900.sdhci/by-name/metadata
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/cache        /cache          ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic wait,check
-/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist      /persist        ext4    nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim
+/dev/block/platform/soc.0/f9824900.sdhci/by-name/persist      /persist        ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic wait,notrim
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/modem        /firmware       vfat    ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0        wait
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/boot         /boot           emmc    defaults                                                        defaults
 /dev/block/platform/soc.0/f9824900.sdhci/by-name/recovery     /recovery       emmc    defaults                                                        defaults
diff --git a/init.angler.nanohub.rc b/init.angler.nanohub.rc
index b936ad8..b0f18f2 100644
--- a/init.angler.nanohub.rc
+++ b/init.angler.nanohub.rc
@@ -5,6 +5,11 @@
     ## Update Nanohub FW if needed
     start flash-nanohub-fw
 
-service flash-nanohub-fw /system/bin/nanoapp_cmd download
+on post-fs-data
+    mkdir /data/vendor/sensor
+    chown root system /data/vendor/sensor
+    chmod 0770 /data/vendor/sensor
+
+service flash-nanohub-fw /vendor/bin/nanoapp_cmd download
     oneshot
     disabled
diff --git a/init.angler.qseecomd.sh b/init.angler.qseecomd.sh
index f126a77..25a477d 100644
--- a/init.angler.qseecomd.sh
+++ b/init.angler.qseecomd.sh
@@ -1,5 +1,6 @@
 #!/system/bin/sh
 
+registered="`getprop sys.listeners.registered`"
 while [ "$registered" != "true" ]
 do
     sleep 0.1
diff --git a/init.angler.rc b/init.angler.rc
index e46fdd5..775344a 100755
--- a/init.angler.rc
+++ b/init.angler.rc
@@ -60,6 +60,9 @@
     # Update dm-verity state and set partition.*.verified properties
     verity_update_state
 
+    # Busy loop to wait for devices booted by devstart_sh just in case device not ready
+    exec - root root system -- /system/bin/init.qcom.devwait.sh
+
 on boot
     # execute script to set initial CPU settings
     # don't run as a service to avoid race conditions
@@ -140,8 +143,8 @@
     chown root system /sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency
     chmod 0660 /sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency
 
-    write /sys/block/mmcblk0/queue/rq_affinity 0
-    write /sys/block/mmcblk0/queue/scheduler noop
+    # Wifi firmware reload path
+    chown wifi wifi /sys/module/bcmdhd/parameters/firmware_path
 
     # Wifi firmware reload path
     chown wifi wifi /sys/module/bcmdhd/parameters/firmware_path
@@ -156,10 +159,21 @@
     symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice
 
     start qseecomd
+    # Busy loop to wait for qseecomd started
     exec - root root system -- /system/bin/init.angler.qseecomd.sh
+    # Start devices by sysfs trigger
+    start devstart_sh
 
 on post-fs-data
-    write /sys/kernel/boot_adsp/boot 1
+    # boot time fs tune
+    write /sys/block/mmcblk0/queue/iostats 0
+    write /sys/block/mmcblk0/queue/scheduler cfq
+    write /sys/block/mmcblk0/queue/iosched/slice_idle 0
+    write /sys/block/mmcblk0/queue/read_ahead_kb 2048
+    write /sys/block/mmcblk0/queue/nr_requests 256
+    write /sys/block/dm-0/queue/read_ahead_kb 2048
+    write /sys/block/dm-1/queue/read_ahead_kb 2048
+    write /sys/block/dm-2/queue/read_ahead_kb 2048
 
     # Ecc_Handler qcril.db
     mkdir /data/misc/radio 0770 system radio
@@ -213,6 +227,7 @@
 
     # Create nfc local data
     mkdir /data/nfc 0770 nfc nfc
+    mkdir /data/vendor/nfc 0770 nfc nfc
 
     #modify access for speaker calibdata
     chown system system /persist/audio/speaker_calibdata.bin
@@ -265,6 +280,15 @@
 on property:sys.boot_completed=1
      #allow CPUs to go in deeper idle state than C0
      write /sys/module/lpm_levels/parameters/sleep_disabled 0
+     #end boot time fs tune
+     write /sys/block/mmcblk0/queue/scheduler noop
+     write /sys/block/mmcblk0/queue/rq_affinity 0
+     write /sys/block/mmcblk0/queue/read_ahead_kb 128
+     write /sys/block/mmcblk0/queue/nr_requests 128
+     write /sys/block/dm-0/queue/read_ahead_kb 128
+     write /sys/block/dm-1/queue/read_ahead_kb 128
+     write /sys/block/dm-2/queue/read_ahead_kb 128
+     write /sys/block/mmcblk0/queue/iostats 1
 
 # Search the laser device under /dev/input, then create symlink
 service InputEventFind /vendor/bin/InputEventFind
@@ -291,10 +315,10 @@
 on property:persist.sys.ssr.enable_ramdumps=0
     write /sys/module/subsystem_restart/parameters/enable_ramdumps 0
 
-service charger /sbin/healthd -c
+service charger /charger
     class charger
     group log
-    seclabel u:r:healthd:s0
+    seclabel u:r:charger:s0
     writepid /dev/cpuset/system-background/tasks
 
 service per_mgr /vendor/bin/pm-service
@@ -386,12 +410,6 @@
     group camera system inet input graphics
     writepid /dev/cpuset/camera-daemon/tasks
 
-service fingerprintd /system/bin/fingerprintd
-    class late_start
-    user system
-    group input
-    writepid /dev/cpuset/system-background/tasks
-
 service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
         -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
         -I/system/etc/wifi/p2p_supplicant_overlay.conf \
@@ -500,3 +518,9 @@
 on property:ro.boot.mode=hw-factory
     start diag_test_server
 
+service devstart_sh /system/bin/init.qcom.devstart.sh
+    class main
+    user root
+    group root system
+    disabled
+    oneshot
diff --git a/init.angler.usb.rc b/init.angler.usb.rc
index 90ad8e8..d186220 100644
--- a/init.angler.usb.rc
+++ b/init.angler.usb.rc
@@ -21,13 +21,20 @@
     write /sys/class/android_usb/android0/iSerial ${ro.serialno}
     write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
     write /sys/class/android_usb/android0/iProduct ${ro.product.model}
+    chown root system /sys/class/dual_role_usb/otg_default/mode
+    chmod 664 /sys/class/dual_role_usb/otg_default/mode
     write /sys/module/dwc3/boot_finished 1
 
 on post-fs
-    mkdir /dev/usb-ffs 0770 shell shell
+    mkdir /dev/usb-ffs 0775 shell shell
     mkdir /dev/usb-ffs/adb 0770 shell shell
     mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
-    write /sys/class/android_usb/android0/f_ffs/aliases adb
+    mkdir /dev/usb-ffs/mtp 0770 mtp mtp
+    mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
+    write /sys/class/android_usb/android0/f_ffs/aliases adb,mtp
+    setprop sys.usb.ffs.max_write 262144
+    setprop sys.usb.ffs.max_read 262144
+    setprop sys.usb.mtp.device_type 3
 
 on charger
     setprop persist.sys.usb.config charging
@@ -91,7 +98,7 @@
     write /sys/class/android_usb/android0/bDeviceClass 0
     write /sys/class/android_usb/android0/bDeviceSubClass 0
     write /sys/class/android_usb/android0/bDeviceProtocol 0
-    write /sys/class/android_usb/android0/functions ptp
+    write /sys/class/android_usb/android0/functions mtp
     write /sys/class/android_usb/android0/enable 1
     setprop sys.usb.state ${sys.usb.config}
 
@@ -102,7 +109,7 @@
     write /sys/class/android_usb/android0/bDeviceClass 0
     write /sys/class/android_usb/android0/bDeviceSubClass 0
     write /sys/class/android_usb/android0/bDeviceProtocol 0
-    write /sys/class/android_usb/android0/functions ptp,adb
+    write /sys/class/android_usb/android0/functions mtp,adb
     write /sys/class/android_usb/android0/enable 1
     start adbd
     setprop sys.usb.state ${sys.usb.config}
diff --git a/init.qcom.devstart.sh b/init.qcom.devstart.sh
new file mode 100755
index 0000000..8e8cff5
--- /dev/null
+++ b/init.qcom.devstart.sh
@@ -0,0 +1,4 @@
+#!/system/bin/sh
+
+echo 1 > /sys/kernel/boot_adsp/boot
+setprop sys.qcom.devup 1
diff --git a/init.qcom.devwait.sh b/init.qcom.devwait.sh
new file mode 100755
index 0000000..aeee1d4
--- /dev/null
+++ b/init.qcom.devwait.sh
@@ -0,0 +1,8 @@
+#!/system/bin/sh
+
+up="`getprop sys.qcom.devup`"
+while [ "$up" != "1" ]
+do
+    sleep 0.1
+    up="`getprop sys.qcom.devup`"
+done
diff --git a/manifest.xml b/manifest.xml
new file mode 100644
index 0000000..4d2a5cf
--- /dev/null
+++ b/manifest.xml
@@ -0,0 +1,29 @@
+<manifest version="1.0" type="device">
+    <hal format="hidl">
+        <name>android.hardware.graphics.allocator</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IAllocator</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.wifi</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IWifi</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.wifi.supplicant</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISupplicant</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+</manifest>
diff --git a/media_codecs.xml b/media_codecs.xml
index 49e6cba..9ca7d80 100644
--- a/media_codecs.xml
+++ b/media_codecs.xml
@@ -159,11 +159,11 @@
         <MediaCodec name="OMX.qcom.video.decoder.avc.secure" type="video/avc" >
             <Quirk name="requires-allocate-on-input-ports" />
             <Quirk name="requires-allocate-on-output-ports" />
-            <Limit name="size" min="64x64" max="4096x2160" />
+            <Limit name="size" min="64x64" max="1920x1088" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="1" max="972000" />
-            <Limit name="bitrate" range="1-100000000" />
+            <Limit name="blocks-per-second" min="1" max="489600" />
+            <Limit name="bitrate" range="1-60000000" />
             <Feature name="adaptive-playback" />
             <Feature name="secure-playback" required="true" />
             <Limit name="concurrent-instances" max="6" />
@@ -215,11 +215,11 @@
         <MediaCodec name="OMX.qcom.video.decoder.hevc.secure" type="video/hevc" >
             <Quirk name="requires-allocate-on-input-ports" />
             <Quirk name="requires-allocate-on-output-ports" />
-            <Limit name="size" min="64x64" max="4096x2160" />
+            <Limit name="size" min="64x64" max="1920x1088" />
             <Limit name="alignment" value="2x2" />
             <Limit name="block-size" value="16x16" />
-            <Limit name="blocks-per-second" min="1" max="972000" />
-            <Limit name="bitrate" range="1-100000000" />
+            <Limit name="blocks-per-second" min="1" max="489600" />
+            <Limit name="bitrate" range="1-60000000" />
             <Feature name="adaptive-playback" />
             <Feature name="secure-playback" required="true" />
             <Limit name="concurrent-instances" max="6" />
diff --git a/media_codecs_performance.xml b/media_codecs_performance.xml
index 34d63cd..1658834 100644
--- a/media_codecs_performance.xml
+++ b/media_codecs_performance.xml
@@ -32,7 +32,7 @@
             <Limit name="measured-frame-rate-1280x720" range="62-62" /> <!-- N=40 v95%=1.5 -->
             <Limit name="measured-frame-rate-1920x1080" range="30-30" /> <!-- N=40 v95%=1.4 -->
             <!-- measured 95%:5-20 med:9 SLOW -->
-            <Limit name="measured-frame-rate-3840x2160" range="8-11" /> <!-- N=40 v95%=1.9 -->
+            <Limit name="measured-frame-rate-3840x2160" range="8-16" /> <!-- TWEAKED -->
         </MediaCodec>
         <MediaCodec name="OMX.qcom.video.encoder.mpeg4" type="video/mp4v-es" update="true">
             <Limit name="measured-frame-rate-176x144" range="380-380" /> <!-- N=40 v95%=1.0 -->
@@ -54,7 +54,7 @@
             <Limit name="measured-frame-rate-720x480" range="76-76" /> <!-- N=40 v95%=1.6 -->
             <!-- measured 95%:21-53 med:26 SLOW -->
             <Limit name="measured-frame-rate-1280x720" range="25-34" /> <!-- N=40 v95%=1.6 -->
-            <Limit name="measured-frame-rate-1920x1080" range="12-12" /> <!-- N=40 v95%=1.1 -->
+            <Limit name="measured-frame-rate-1920x1080" range="12-17.5" /> <!-- TWEAKED -->
         </MediaCodec>
         <MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" update="true">
             <Limit name="measured-frame-rate-176x144" range="275-293" /> <!-- N=40 v93%=1.2 -->
diff --git a/mixer_paths.xml b/mixer_paths.xml
index 96f3722..2d0c894 100755
--- a/mixer_paths.xml
+++ b/mixer_paths.xml
@@ -465,6 +465,16 @@
         <path name="deep-buffer-playback" />
     </path>
 
+    <path name="deep-buffer-playback speaker-and-bt-sco">
+      <path name="deep-buffer-playback speaker" />
+      <path name="deep-buffer-playback bt-sco" />
+    </path>
+
+    <path name="deep-buffer-playback speaker-and-bt-sco-wb">
+      <path name="deep-buffer-playback speaker" />
+      <path name="deep-buffer-playback bt-sco-wb" />
+    </path>
+
     <path name="low-latency-playback">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia5" value="1" />
     </path>
@@ -513,6 +523,16 @@
         <path name="low-latency-playback" />
     </path>
 
+    <path name="low-latency-playback speaker-and-bt-sco">
+      <path name="low-latency-playback speaker" />
+      <path name="low-latency-playback bt-sco"  />
+    </path>
+
+    <path name="low-latency-playback speaker-and-bt-sco-wb">
+      <path name="low-latency-playback speaker" />
+      <path name="low-latency-playback bt-sco-wb"  />
+    </path>
+
     <path name="audio-ull-playback">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia3" value="1" />
     </path>
@@ -552,6 +572,16 @@
       <ctl name="AFE_PCM_RX Audio Mixer MultiMedia3" value="1" />
     </path>
 
+    <path name="audio-ull-playback speaker-and-bt-sco">
+      <path name="audio-ull-playback speaker" />
+      <path name="audio-ull-playback bt-sco"  />
+    </path>
+
+    <path name="audio-ull-playback speaker-and-bt-sco-wb">
+      <path name="audio-ull-playback speaker" />
+      <path name="audio-ull-playback bt-sco-wb"  />
+    </path>
+
     <path name="multi-channel-playback hdmi">
         <ctl name="HDMI Mixer MultiMedia2" value="1" />
     </path>
@@ -608,6 +638,16 @@
         <path name="compress-offload-playback" />
     </path>
 
+    <path name="compress-offload-playback speaker-and-bt-sco">
+      <path name="compress-offload-playback speaker" />
+      <path name="compress-offload-playback bt-sco"  />
+    </path>
+
+    <path name="compress-offload-playback speaker-and-bt-sco-wb">
+      <path name="compress-offload-playback speaker" />
+      <path name="compress-offload-playback bt-sco-wb"  />
+    </path>
+
     <path name="compress-offload-playback2">
         <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia7" value="1" />
     </path>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc202-mnc05/config.xml b/overlay/frameworks/base/core/res/res/values-mcc202-mnc05/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc202-mnc05/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc202-mnc05/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc204-mnc04/config.xml b/overlay/frameworks/base/core/res/res/values-mcc204-mnc04/config.xml
index ee36992..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc204-mnc04/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc204-mnc04/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
@@ -34,7 +31,4 @@
         <item>INTERMEDIATE_POS=0</item>
         <item>SUPL_ES=0</item>
     </string-array>
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>+31654501233</item>
-    </string-array>
 </resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc206-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc206-mnc01/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc206-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc206-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc214-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc214-mnc01/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc214-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc214-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc216-mnc70/config.xml b/overlay/frameworks/base/core/res/res/values-mcc216-mnc70/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc216-mnc70/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc216-mnc70/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc219-mnc10/config.xml b/overlay/frameworks/base/core/res/res/values-mcc219-mnc10/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc219-mnc10/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc219-mnc10/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc222-mnc10/config.xml b/overlay/frameworks/base/core/res/res/values-mcc222-mnc10/config.xml
index d455066..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc222-mnc10/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc222-mnc10/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
@@ -34,7 +31,4 @@
         <item>INTERMEDIATE_POS=0</item>
         <item>SUPL_ES=0</item>
     </string-array>
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>42020</item>
-    </string-array>
 </resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc226-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc226-mnc01/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc226-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc226-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc228-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc228-mnc01/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc228-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc228-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc230-mnc03/config.xml b/overlay/frameworks/base/core/res/res/values-mcc230-mnc03/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc230-mnc03/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc230-mnc03/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc232-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc232-mnc01/config.xml
index 595a62b..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc232-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc232-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
@@ -34,7 +31,4 @@
         <item>INTERMEDIATE_POS=0</item>
         <item>SUPL_ES=0</item>
     </string-array>
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>66477</item>
-    </string-array>
 </resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc10/config.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc10/config.xml
deleted file mode 100755
index a389824..0000000
--- a/overlay/frameworks/base/core/res/res/values-mcc234-mnc10/config.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 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.
-*/
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>901</item>
-    </string-array>
-</resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc15/config.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc15/config.xml
index 6fe0c05..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc234-mnc15/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc234-mnc15/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
@@ -34,7 +31,4 @@
         <item>INTERMEDIATE_POS=0</item>
         <item>SUPL_ES=0</item>
     </string-array>
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>121</item>
-    </string-array>
 </resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-bn-rBD/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-bn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-bn-rBD/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-bn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-et-rEE/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-et/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-et-rEE/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-et/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-eu-rES/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-eu/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-eu-rES/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-eu/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gl-rES/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gl/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gl-rES/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gl/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gu-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gu/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gu-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-gu/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-hy-rAM/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-hy/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-hy-rAM/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-hy/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-is-rIS/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-is/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-is-rIS/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-is/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ka-rGE/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ka/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ka-rGE/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ka/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kk-rKZ/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kk/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kk-rKZ/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kk/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-km-rKH/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-km/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-km-rKH/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-km/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kn-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kn-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-kn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ky-rKG/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ky/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ky-rKG/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ky/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-lo-rLA/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-lo/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-lo-rLA/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-lo/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mk-rMK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mk/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mk-rMK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mk/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ml-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ml/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ml-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ml/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mn-rMN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mn-rMN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mr-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mr/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mr-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-mr/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ms-rMY/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ms/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ms-rMY/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ms/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-my-rMM/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-my/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-my-rMM/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-my/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ne-rNP/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ne/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ne-rNP/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ne/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-pa-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-pa/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-pa-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-pa/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-si-rLK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-si/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-si-rLK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-si/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-sq-rAL/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-sq/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-sq-rAL/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-sq/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ta-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ta/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ta-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ta/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-te-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-te/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-te-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-te/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ur-rPK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ur/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ur-rPK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-ur/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-uz-rUZ/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc30-uz/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc30-uz-rUZ/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc30-uz/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-bn-rBD/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-bn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-bn-rBD/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-bn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-et-rEE/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-et/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-et-rEE/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-et/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-eu-rES/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-eu/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-eu-rES/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-eu/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gl-rES/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gl/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gl-rES/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gl/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gu-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gu/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gu-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-gu/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-hy-rAM/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-hy/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-hy-rAM/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-hy/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-is-rIS/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-is/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-is-rIS/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-is/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ka-rGE/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ka/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ka-rGE/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ka/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kk-rKZ/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kk/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kk-rKZ/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kk/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-km-rKH/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-km/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-km-rKH/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-km/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kn-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kn-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-kn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ky-rKG/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ky/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ky-rKG/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ky/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-lo-rLA/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-lo/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-lo-rLA/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-lo/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mk-rMK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mk/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mk-rMK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mk/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ml-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ml/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ml-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ml/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mn-rMN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mn/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mn-rMN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mn/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mr-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mr/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mr-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-mr/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ms-rMY/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ms/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ms-rMY/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ms/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-my-rMM/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-my/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-my-rMM/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-my/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ne-rNP/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ne/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ne-rNP/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ne/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-pa-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-pa/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-pa-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-pa/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-si-rLK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-si/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-si-rLK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-si/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-sq-rAL/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-sq/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-sq-rAL/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-sq/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ta-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ta/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ta-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ta/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-te-rIN/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-te/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-te-rIN/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-te/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ur-rPK/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ur/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ur-rPK/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-ur/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-uz-rUZ/strings.xml b/overlay/frameworks/base/core/res/res/values-mcc234-mnc33-uz/strings.xml
similarity index 100%
rename from overlay/frameworks/base/core/res/res/values-mcc234-mnc33-uz-rUZ/strings.xml
rename to overlay/frameworks/base/core/res/res/values-mcc234-mnc33-uz/strings.xml
diff --git a/overlay/frameworks/base/core/res/res/values-mcc262-mnc02/config.xml b/overlay/frameworks/base/core/res/res/values-mcc262-mnc02/config.xml
index 701aa17..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc262-mnc02/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc262-mnc02/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
@@ -34,7 +31,4 @@
         <item>INTERMEDIATE_POS=0</item>
         <item>SUPL_ES=0</item>
     </string-array>
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>5500</item>
-    </string-array>
 </resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc268-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc268-mnc01/config.xml
index 043040d..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc268-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc268-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
@@ -34,7 +31,4 @@
         <item>INTERMEDIATE_POS=0</item>
         <item>SUPL_ES=0</item>
     </string-array>
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>123</item>
-    </string-array>
 </resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc272-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc272-mnc01/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc272-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc272-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc276-mnc02/config.xml b/overlay/frameworks/base/core/res/res/values-mcc276-mnc02/config.xml
index 8244a45..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc276-mnc02/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc276-mnc02/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
@@ -34,7 +31,4 @@
         <item>INTERMEDIATE_POS=0</item>
         <item>SUPL_ES=0</item>
     </string-array>
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>135</item>
-    </string-array>
 </resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc284-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc284-mnc01/config.xml
index 7f4ce0e..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc284-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc284-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
@@ -34,6 +31,4 @@
         <item>INTERMEDIATE_POS=0</item>
         <item>SUPL_ES=0</item>
     </string-array>
-    <string-array translatable="false" name="config_default_vm_number">
-    </string-array>
 </resources>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc286-mnc02/config.xml b/overlay/frameworks/base/core/res/res/values-mcc286-mnc02/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc286-mnc02/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc286-mnc02/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc302-mnc220/config.xml b/overlay/frameworks/base/core/res/res/values-mcc302-mnc220/config.xml
index 25d8630..9ead607 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc302-mnc220/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc302-mnc220/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=http://supl.telusmobility.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc302-mnc221/config.xml b/overlay/frameworks/base/core/res/res/values-mcc302-mnc221/config.xml
index aa4e680..ada91cd 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc302-mnc221/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc302-mnc221/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=http://supl.telusmobility.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc302-mnc370/config.xml b/overlay/frameworks/base/core/res/res/values-mcc302-mnc370/config.xml
index 56d7bec..7787e15 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc302-mnc370/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc302-mnc370/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc302-mnc660/config.xml b/overlay/frameworks/base/core/res/res/values-mcc302-mnc660/config.xml
index 56d7bec..7787e15 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc302-mnc660/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc302-mnc660/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc302-mnc720/config.xml b/overlay/frameworks/base/core/res/res/values-mcc302-mnc720/config.xml
index 56d7bec..7787e15 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc302-mnc720/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc302-mnc720/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc000/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc000/config.xml
index 2096304..ffc2f67 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc000/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc000/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml
index 2096304..ffc2f67 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc004/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc070/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc070/config.xml
index 9a2b7c9..43d658d 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc070/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc070/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc090/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc090/config.xml
index 9a2b7c9..43d658d 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc090/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc090/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml
index 845b42a..9ad99e4 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc120/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=0</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc150/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc150/config.xml
index 9a2b7c9..43d658d 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc150/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc150/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc160/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc160/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc160/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc160/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc170/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc170/config.xml
index 9a2b7c9..43d658d 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc170/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc170/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc200/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc200/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc200/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc200/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc210/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc210/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc210/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc210/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc220/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc220/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc220/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc220/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc230/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc230/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc230/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc230/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc240/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc240/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc240/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc240/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc250/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc250/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc250/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc250/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc260/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc260/config.xml
index 036addd..7aff29e 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc260/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc260/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc270/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc270/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc270/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc270/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc300/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc300/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc300/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc300/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc310/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc310/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc310/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc310/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc380/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc380/config.xml
index 9a2b7c9..43d658d 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc380/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc380/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml
index cf653f2..b066794 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc410/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc490/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc490/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc490/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc490/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc530/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc530/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc530/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc530/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc560/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc560/config.xml
index 9a2b7c9..43d658d 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc560/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc560/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc580/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc580/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc580/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc580/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc590/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc590/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc590/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc590/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc640/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc640/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc640/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc640/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc660/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc660/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc660/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc660/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc680/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc680/config.xml
index 9a2b7c9..43d658d 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc680/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc680/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc310-mnc800/config.xml b/overlay/frameworks/base/core/res/res/values-mcc310-mnc800/config.xml
index 47f0c62..7b2e167 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc310-mnc800/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc310-mnc800/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=lbs.geo.t-mobile.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc180/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc180/config.xml
index 9a2b7c9..43d658d 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc180/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc180/config.xml
@@ -28,9 +28,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=NONE</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml b/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml
index 1944c36..f7931a1 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc311-mnc480/config.xml
@@ -17,17 +17,11 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>*86</item>
-    </string-array>
 
     <!-- Values for GPS configuration (Verizon) -->
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc440-mnc20/config.xml b/overlay/frameworks/base/core/res/res/values-mcc440-mnc20/config.xml
index 1373d47..e939de8 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc440-mnc20/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc440-mnc20/config.xml
@@ -20,9 +20,6 @@
 <!-- These resources are around just to allow their values to be customized
      for different hardware and product builds.  Do not translate. -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string-array translatable="false" name="config_default_vm_number">
-        <item>1416</item>
-    </string-array>
 
     <string-array translatable= "false" name= "config_mobile_hotspot_provision_app">
         <item>com.huawei.entitlement</item>
@@ -36,9 +33,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc450-mnc02/config.xml b/overlay/frameworks/base/core/res/res/values-mcc450-mnc02/config.xml
index 32009c7..2c51882 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc450-mnc02/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc450-mnc02/config.xml
@@ -24,9 +24,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc450-mnc05/config.xml b/overlay/frameworks/base/core/res/res/values-mcc450-mnc05/config.xml
index 9893d5e..8c04a67 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc450-mnc05/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc450-mnc05/config.xml
@@ -24,9 +24,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=wpde.nate.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc450-mnc06/config.xml b/overlay/frameworks/base/core/res/res/values-mcc450-mnc06/config.xml
index 8438f34..2f598c2 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc450-mnc06/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc450-mnc06/config.xml
@@ -24,9 +24,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc450-mnc08/config.xml b/overlay/frameworks/base/core/res/res/values-mcc450-mnc08/config.xml
index 32009c7..2c51882 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc450-mnc08/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc450-mnc08/config.xml
@@ -24,9 +24,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc450-mnc11/config.xml b/overlay/frameworks/base/core/res/res/values-mcc450-mnc11/config.xml
index cc8b714..4a931b9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc450-mnc11/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc450-mnc11/config.xml
@@ -24,9 +24,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=wpde.nate.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc505-mnc03/config.xml b/overlay/frameworks/base/core/res/res/values-mcc505-mnc03/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc505-mnc03/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc505-mnc03/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values-mcc655-mnc01/config.xml b/overlay/frameworks/base/core/res/res/values-mcc655-mnc01/config.xml
index 732ac3c..bc45ff9 100755
--- a/overlay/frameworks/base/core/res/res/values-mcc655-mnc01/config.xml
+++ b/overlay/frameworks/base/core/res/res/values-mcc655-mnc01/config.xml
@@ -21,9 +21,6 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.vodafone.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=3</item>
         <item>SUPL_VER=0x20000</item>
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 130d5e8..0503379 100755
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -177,6 +177,9 @@
          device does not support multiple advertisement-->
     <integer translatable="false" name="config_bluetooth_max_advertisers">4</integer>
 
+    <!-- Boolean indicating if current platform supports HFP inband ringing -->
+    <bool name="config_bluetooth_hfp_inband_ringing_support">true</bool>
+
     <!-- Array of allowable ConnectivityManager network types for tethering -->
     <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
          [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
@@ -348,9 +351,9 @@
     <string-array translatable="false" name="config_gpsParameters">
         <item>SUPL_HOST=supl.google.com</item>
         <item>SUPL_PORT=7275</item>
-        <item>XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin</item>
-        <item>XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin</item>
+        <item>XTRA_SERVER_1=https://xtrapath1.izatcloud.net/xtra3grc.bin</item>
+        <item>XTRA_SERVER_2=https://xtrapath2.izatcloud.net/xtra3grc.bin</item>
+        <item>XTRA_SERVER_3=https://xtrapath3.izatcloud.net/xtra3grc.bin</item>
         <item>NTP_SERVER=north-america.pool.ntp.org</item>
         <item>SUPL_MODE=1</item>
         <item>SUPL_VER=0x20000</item>
@@ -391,9 +394,13 @@
     <!-- Default list of files pinned by the Pinner Service -->
     <string-array translatable="false" name="config_defaultPinnerServiceFiles">
         <item>"/system/framework/arm64/boot-framework.oat"</item>
+        <item>"/system/framework/arm64/boot-framework.vdex"</item>
         <item>"/system/framework/oat/arm64/services.odex"</item>
+        <item>"/system/framework/oat/arm64/services.vdex"</item>
         <item>"/system/framework/arm64/boot.oat"</item>
+        <item>"/system/framework/arm64/boot.vdex"</item>
         <item>"/system/framework/arm64/boot-core-libart.oat"</item>
+        <item>"/system/framework/arm64/boot-core-libart.vdex"</item>
     </string-array>
 
     <!-- Enable system navigation keys. -->
diff --git a/overlay/packages/apps/CarrierConfig/res/xml/vendor.xml b/overlay/packages/apps/CarrierConfig/res/xml/vendor.xml
index 30ea475..b6c97e9 100755
--- a/overlay/packages/apps/CarrierConfig/res/xml/vendor.xml
+++ b/overlay/packages/apps/CarrierConfig/res/xml/vendor.xml
@@ -17,11 +17,10 @@
         <string name="ci_action_on_sys_update_extra_val_string">com.vzwdmserver</string>
         <boolean name="config_wifi_disable_in_ecbm" value="true" />
         <boolean name="disable_cdma_activation_code_bool" value="true" />
-        <string-array name="signal_redirection_receiver_string_array" num="1">
-            <item value="com.google.android.carrierentitlement/.VzwActivationReceiver" />
-        </string-array>
-        <string-array name="signal_dcfailure_receiver_string_array" num="1">
-            <item value="com.google.android.carrierentitlement/.VzwActivationReceiver" />
+        <string-array name="carrier_app_wake_signal_config" num="1">
+            <item value="com.google.android.carriersetup/.VzwActivationReceiver:
+            com.android.internal.telephony.CARRIER_SIGNAL_REDIRECTED,
+            com.android.internal.telephony.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED" />
         </string-array>
     </carrier_config>
 
@@ -685,11 +684,10 @@
         <string name="ci_action_on_sys_update_extra_val_string">com.vzwdmserver</string>
         <boolean name="config_wifi_disable_in_ecbm" value="true" />
         <boolean name="disable_cdma_activation_code_bool" value="true" />
-        <string-array name="signal_redirection_receiver_string_array" num="1">
-            <item value="com.google.android.carrierentitlement/.VzwActivationReceiver" />
-        </string-array>
-        <string-array name="signal_dcfailure_receiver_string_array" num="1">
-            <item value="com.google.android.carrierentitlement/.VzwActivationReceiver" />
+        <string-array name="carrier_app_wake_signal_config" num="1">
+            <item value="com.google.android.carriersetup/.VzwActivationReceiver:
+            com.android.internal.telephony.CARRIER_SIGNAL_REDIRECTED,
+            com.android.internal.telephony.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED" />
         </string-array>
     </carrier_config>
 
@@ -712,11 +710,10 @@
         <string name="ci_action_on_sys_update_extra_val_string">com.vzwdmserver</string>
         <boolean name="config_wifi_disable_in_ecbm" value="true" />
         <boolean name="disable_cdma_activation_code_bool" value="true" />
-        <string-array name="signal_redirection_receiver_string_array" num="1">
-            <item value="com.google.android.carrierentitlement/.VzwActivationReceiver" />
-        </string-array>
-        <string-array name="signal_dcfailure_receiver_string_array" num="1">
-            <item value="com.google.android.carrierentitlement/.VzwActivationReceiver" />
+        <string-array name="carrier_app_wake_signal_config" num="1">
+            <item value="com.google.android.carriersetup/.VzwActivationReceiver:
+            com.android.internal.telephony.CARRIER_SIGNAL_REDIRECTED,
+            com.android.internal.telephony.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED" />
         </string-array>
     </carrier_config>
 
diff --git a/power/power.c b/power/power.c
index cc1aba2..8442a4b 100644
--- a/power/power.c
+++ b/power/power.c
@@ -97,14 +97,9 @@
 static int slack_node_rw_failed = 0;
 static int display_hint_sent;
 static int sustained_performance_mode = 0;
-static int vr_mode = 0;
 int display_boost;
 static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
 
-static struct hw_module_methods_t power_module_methods = {
-    .open = NULL,
-};
-
 static void power_init(struct power_module *module)
 {
     ALOGI("QCOM power HAL initing.");
@@ -268,10 +263,10 @@
             int duration_hint = 0;
             static struct timespec previous_boost_timespec = {0, 0};
 
-            // If we are in sustained performance mode or VR mode, touch boost
+            // If we are in sustained performance mode, touch boost
             // should be ignored.
             pthread_mutex_lock(&lock);
-            if (sustained_performance_mode || vr_mode) {
+            if (sustained_performance_mode) {
                 pthread_mutex_unlock(&lock);
                 return;
             }
@@ -376,52 +371,19 @@
                                         sizeof(resources)/sizeof(resources[0]),
                                         resources);
                 sysfs_write(GPU_MAX_FREQ_PATH, "305000000");
-                if (vr_mode == 0) {
-                    handle_hotplug = interaction_with_handle(handle_hotplug, duration,
-                                        sizeof(resources_hotplug)/sizeof(resources_hotplug[0]),
-                                        resources_hotplug);
-                }
+                handle_hotplug = interaction_with_handle(handle_hotplug, duration,
+                                    sizeof(resources_hotplug)/sizeof(resources_hotplug[0]),
+                                    resources_hotplug);
                 sustained_performance_mode = 1;
             } else if (sustained_performance_mode == 1){
                 release_request(handle);
                 sysfs_write(GPU_MAX_FREQ_PATH, "600000000");
-                if (vr_mode == 0) {
-                    release_request(handle_hotplug);
-                }
+                release_request(handle_hotplug);
                 sustained_performance_mode = 0;
            }
            pthread_mutex_unlock(&lock);
         }
         break;
-        case POWER_HINT_VR_MODE:
-        {
-            static int handle_vr = 0;
-            pthread_mutex_lock(&lock);
-            if (data && vr_mode == 0) {
-                int resources[] = {0x206};
-                int duration = 0;
-                handle_vr = interaction_with_handle(handle_vr, duration,
-                                        sizeof(resources)/sizeof(resources[0]),
-                                        resources);
-                sysfs_write(GPU_MIN_FREQ_PATH, "305000000");
-                sysfs_write(BUS_SPEED_PATH, "7904");
-                if (sustained_performance_mode == 0) {
-                    handle_hotplug = interaction_with_handle(handle_hotplug, duration,
-                                        sizeof(resources_hotplug)/sizeof(resources_hotplug[0]),
-                                        resources_hotplug);
-                }
-                vr_mode = 1;
-            } else if (vr_mode == 1){
-                release_request(handle_vr);
-                sysfs_write(GPU_MIN_FREQ_PATH, "180000000");
-                sysfs_write(BUS_SPEED_PATH, "0");
-                if (sustained_performance_mode == 0) {
-                    release_request(handle_hotplug);
-                }
-                vr_mode = 0;
-            }
-            pthread_mutex_unlock(&lock);
-        }
     }
 }
 
@@ -750,6 +712,44 @@
     return 0;
 }
 
+static int power_open(const hw_module_t* module, const char* name,
+                    hw_device_t** device)
+{
+    ALOGD("%s: enter; name=%s", __FUNCTION__, name);
+    int retval = 0; /* 0 is ok; -1 is error */
+
+    if (strcmp(name, POWER_HARDWARE_MODULE_ID) == 0) {
+        power_module_t *dev = (power_module_t *)calloc(1,
+                sizeof(power_module_t));
+
+        if (dev) {
+            /* Common hw_device_t fields */
+            dev->common.tag = HARDWARE_DEVICE_TAG;
+            dev->common.module_api_version = POWER_MODULE_API_VERSION_0_5;
+            dev->common.hal_api_version = HARDWARE_HAL_API_VERSION;
+
+            dev->init = power_init;
+            dev->powerHint = power_hint;
+            dev->setInteractive = set_interactive;
+            dev->get_number_of_platform_modes = get_number_of_platform_modes;
+            dev->get_platform_low_power_stats = get_platform_low_power_stats;
+            dev->get_voter_list = get_voter_list;
+
+            *device = (hw_device_t*)dev;
+        } else
+            retval = -ENOMEM;
+    } else {
+        retval = -EINVAL;
+    }
+
+    ALOGD("%s: exit %d", __FUNCTION__, retval);
+    return retval;
+}
+
+static struct hw_module_methods_t power_module_methods = {
+    .open = power_open,
+};
+
 struct power_module HAL_MODULE_INFO_SYM = {
     .common = {
         .tag = HARDWARE_MODULE_TAG,
diff --git a/proprietary-blobs.txt b/proprietary-blobs.txt
index 4a84098..fe9a7ae 100644
--- a/proprietary-blobs.txt
+++ b/proprietary-blobs.txt
@@ -37,7 +37,6 @@
 /system/bin/ssr_setup
 /system/bin/subsystem_ramdump
 /system/bin/test_diag
-/system/etc/diag/Angler_Radio-general.cfg
 /system/etc/permissions/cneapiclient.xml
 /system/etc/permissions/embms.xml
 /system/etc/permissions/qcrilhook.xml
@@ -45,9 +44,7 @@
 /system/framework/embmslibrary.jar
 /system/framework/qcrilhook.jar
 /system/lib64/libiperf.so
-/system/lib64/libtinyxml.so
 /system/lib/libiperf.so
 /system/lib/libmm-qcamera.so
-/system/lib/libtinyxml.so
 /system/xbin/iperf3
 /IMAGES/vendor.img
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
index edf6ae3..6730310 100644
--- a/self-extractors/extract-lists.txt
+++ b/self-extractors/extract-lists.txt
@@ -28,7 +28,6 @@
             system/bin/ssr_setup \
             system/bin/subsystem_ramdump \
             system/bin/test_diag \
-            system/etc/diag/Angler_Radio-general.cfg \
             system/etc/permissions/cneapiclient.xml \
             system/etc/permissions/embms.xml \
             system/etc/permissions/qcrilhook.xml \
@@ -36,10 +35,12 @@
             system/framework/embmslibrary.jar \
             system/framework/qcrilhook.jar \
             system/lib64/libiperf.so \
-            system/lib64/libtinyxml.so \
             system/lib/libiperf.so \
             system/lib/libmm-qcamera.so \
-            system/lib/libtinyxml.so \
             system/xbin/iperf3 \
+            system/lib64/android.hardware.biometrics.fingerprint@2.1.so \
+            system/lib64/android.hardware.configstore@1.0.so \
+            system/lib64/android.hardware.usb@1.0.so \
+            system/lib64/android.hardware.wifi@1.0.so \
             "
     ;;
diff --git a/self-extractors/qcom/staging/device-partial.mk b/self-extractors/qcom/staging/device-partial.mk
index 09660c9..4b5ba4e 100644
--- a/self-extractors/qcom/staging/device-partial.mk
+++ b/self-extractors/qcom/staging/device-partial.mk
@@ -37,7 +37,6 @@
     vendor/qcom/angler/proprietary/ssr_setup:system/bin/ssr_setup:qcom \
     vendor/qcom/angler/proprietary/subsystem_ramdump:system/bin/subsystem_ramdump:qcom \
     vendor/qcom/angler/proprietary/test_diag:system/bin/test_diag:qcom \
-    vendor/qcom/angler/proprietary/Angler_Radio-general.cfg:system/etc/diag/Angler_Radio-general.cfg:qcom \
     vendor/qcom/angler/proprietary/cneapiclient.xml:system/etc/permissions/cneapiclient.xml:qcom \
     vendor/qcom/angler/proprietary/embms.xml:system/etc/permissions/embms.xml:qcom \
     vendor/qcom/angler/proprietary/qcrilhook.xml:system/etc/permissions/qcrilhook.xml:qcom \
@@ -45,9 +44,10 @@
     vendor/qcom/angler/proprietary/embmslibrary.jar:system/framework/embmslibrary.jar:qcom \
     vendor/qcom/angler/proprietary/qcrilhook.jar:system/framework/qcrilhook.jar:qcom \
     vendor/qcom/angler/proprietary/lib64/libiperf.so:system/lib64/libiperf.so:qcom \
-    vendor/qcom/angler/proprietary/lib64/libtinyxml.so:system/lib64/libtinyxml.so:qcom \
     vendor/qcom/angler/proprietary/libiperf.so:system/lib/libiperf.so:qcom \
     vendor/qcom/angler/proprietary/libmm-qcamera.so:system/lib/libmm-qcamera.so:qcom \
-    vendor/qcom/angler/proprietary/libtinyxml.so:system/lib/libtinyxml.so:qcom \
     vendor/qcom/angler/proprietary/iperf3:system/xbin/iperf3:qcom \
-
+    vendor/qcom/angler/proprietary/lib64/android.hardware.biometrics.fingerprint@2.1.so:system/lib64/android.hardware.biometrics.fingerprint@2.1.so:qcom \
+    vendor/qcom/angler/proprietary/lib64/android.hardware.configstore@1.0.so:system/lib64/android.hardware.configstore@1.0.so:qcom \
+    vendor/qcom/angler/proprietary/lib64/android.hardware.usb@1.0.so:system/lib64/android.hardware.usb@1.0.so:qcom \
+    vendor/qcom/angler/proprietary/lib64/android.hardware.wifi@1.0.so:system/lib64/android.hardware.wifi@1.0.so:qcom \
diff --git a/sensorhal/sensorlist.cpp b/sensorhal/sensorlist.cpp
index 5c7ea88..07218e3 100644
--- a/sensorhal/sensorlist.cpp
+++ b/sensorhal/sensorlist.cpp
@@ -26,12 +26,14 @@
 
 const float kMinSampleRateHzAccel = 6.250f;
 const float kMaxSampleRateHzAccel = 400.0f;
+extern const float kScaleAccel = (8.0f * 9.81f / 32768.0f);
 
 const float kMinSampleRateHzGyro = 6.250f;
 const float kMaxSampleRateHzGyro = 400.0f;
 
 const float kMinSampleRateHzMag = 3.125f;
 const float kMaxSampleRateHzMag = 50.0f;
+extern const float kScaleMag = 0.0625f;         // 1.0f / 16.0f
 
 const float kMinSampleRateHzPolling = 0.1f;
 const float kMaxSampleRateHzPolling = 25.0f;
@@ -507,6 +509,24 @@
         SENSOR_FLAG_ON_CHANGE_MODE,
         { NULL, NULL }
     },
+    {
+        "BMI160 accelerometer (uncalibrated)",
+        "Bosch",
+        kVersion,
+        COMMS_SENSOR_ACCEL_UNCALIBRATED,
+        SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED,
+        GRAVITY_EARTH * 8.0f,                      // maxRange
+        GRAVITY_EARTH * 8.0f / 32768.0f,           // resolution
+        0.0f,                                      // XXX power
+        (int32_t)(1.0E6f / kMaxSampleRateHzAccel), // minDelay
+        3000,                                      // XXX fifoReservedEventCount
+        kMaxRawThreeAxisEventCount,                // XXX fifoMaxEventCount
+        SENSOR_STRING_TYPE_ACCELEROMETER_UNCALIBRATED,
+        "",                                        // requiredPermission
+        (long)(1.0E6f / kMinSampleRateHzAccel),    // maxDelay
+        SENSOR_FLAG_CONTINUOUS_MODE,
+        { NULL, NULL }
+    },
 };
 
 extern const size_t kSensorCount = sizeof(kSensorList) / sizeof(sensor_t);
diff --git a/sepolicy/camera.te b/sepolicy/camera.te
index d27c292..fdf6394 100644
--- a/sepolicy/camera.te
+++ b/sepolicy/camera.te
@@ -30,3 +30,5 @@
 allow camera persist_data_file:file r_file_perms;
 
 allow camera { cameraserver surfaceflinger }:fd use;
+hal_client_domain(camera, hal_graphics_allocator)
+allow camera hal_renderscript_hwservice:hwservice_manager find;
diff --git a/sepolicy/device_domain_deprecated.te b/sepolicy/device_domain_deprecated.te
index bbe0b71..c74fc2b 100644
--- a/sepolicy/device_domain_deprecated.te
+++ b/sepolicy/device_domain_deprecated.te
@@ -8,6 +8,9 @@
 allow device_domain_deprecated system_file:dir r_dir_perms;
 allow device_domain_deprecated system_file:file r_file_perms;
 allow device_domain_deprecated system_file:lnk_file r_file_perms;
+allow device_domain_deprecated vendor_file_type:dir r_dir_perms;
+allow device_domain_deprecated vendor_file_type:file r_file_perms;
+allow device_domain_deprecated vendor_file_type:lnk_file r_file_perms;
 allow device_domain_deprecated system_data_file:file { getattr read };
 allow device_domain_deprecated system_data_file:lnk_file r_file_perms;
 allow device_domain_deprecated apk_data_file:dir { getattr search };
diff --git a/sepolicy/file.te b/sepolicy/file.te
index eee487e..1b98df5 100644
--- a/sepolicy/file.te
+++ b/sepolicy/file.te
@@ -18,6 +18,7 @@
 type qmuxd_socket, file_type;
 type ssr_data_file, file_type, data_file_type;
 type sysfs_gpu_tuning, sysfs_type, fs_type;
+type sysfs_hal_gralloc, sysfs_type, fs_type;
 type sysfs_fingerprintd, sysfs_type, fs_type;
 type sysfs_msm_subsys, sysfs_type, fs_type;
 type sysfs_msm_subsys_toggle, sysfs_type, fs_type;
@@ -34,3 +35,5 @@
 
 type sysfs_wifi_sar, fs_type, sysfs_type;
 type sysfs_lcd_mipi, fs_type, sysfs_type;
+
+type nfc_vendor_data_file, file_type, data_file_type;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 4a2e2dc..62020e4 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -79,6 +79,7 @@
 /persist/sensors(/.*)?                                              u:object_r:persist_sensors_file:s0
 
 /sys/bus/msm_subsys(/.*)?                                                                                  u:object_r:sysfs_msm_subsys:s0
+/sys/kernel/boot_adsp/boot                                                                                 u:object_r:sysfs_msm_subsys:s0
 /sys/devices/bt_bcm4358\.[0-9]+/rfkill/rfkill0/state                                                           u:object_r:sysfs_bluetooth_writable:s0
 /sys/devices/soc\.0/\w+\.qcom,\w+/subsys[0-9]/restart_level                                                u:object_r:sysfs_msm_subsys_toggle:s0
 /sys/devices/soc\.0/fd900000\.qcom,mdss_mdp/qcom,mdss_fb_primary\.[0-9]+/leds(/.*)?                        u:object_r:sysfs_leds:s0
@@ -101,6 +102,10 @@
 /sys/devices/virtual/graphics/fb1/vendor_name  --                   u:object_r:sysfs_surfaceflinger:s0
 /sys/devices/virtual/graphics/fb1/product_description       --      u:object_r:sysfs_surfaceflinger:s0
 
+# Sysfs files used by gralloc hal
+/sys/devices/virtual/graphics/fb[0-1]/msm_.*        u:object_r:sysfs_hal_gralloc:s0
+/sys/devices/soc.0/fd900000.qcom,mdss_mdp/caps      u:object_r:sysfs_hal_gralloc:s0
+
 # Sysfs files used by qmuxd
 /sys/devices/virtual/smdpkt/smdcntl([0-9])+/open_timeout                                                   u:object_r:sysfs_smdcntl_open_timeout:s0
 /sys/devices/virtual/thermal(/.*)?                                                                         u:object_r:sysfs_thermal:s0
@@ -120,12 +125,15 @@
 # System files
 /vendor/bin/ATFWD-daemon                 u:object_r:atfwd_exec:s0
 /vendor/bin/cnd                          u:object_r:cnd_exec:s0
+/vendor/bin/hw/android\.hardware\.dumpstate@1\.0-service.angler      u:object_r:hal_dumpstate_default_exec:s0
 /vendor/bin/imscmservice                 u:object_r:ims_exec:s0
 /vendor/bin/imsdatadaemon                u:object_r:ims_exec:s0
 /vendor/bin/imsqmidaemon                 u:object_r:ims_exec:s0
 /vendor/bin/ims_rtp_daemon               u:object_r:ims_exec:s0
 /system/bin/init\.angler\.power\.sh      u:object_r:init-power-sh_exec:s0
 /system/bin/init\.angler\.qseecomd\.sh   u:object_r:init-angler-qseecomd-sh_exec:s0
+/system/bin/init\.qcom\.devstart\.sh     u:object_r:init-qcom-devstart-sh_exec:s0
+/system/bin/init\.qcom\.devwait\.sh      u:object_r:init-qcom-devwait-sh_exec:s0
 /system/bin/init\.mcfg\.sh               u:object_r:init-mcfg-sh_exec:s0
 /system/bin/init\.radio\.sh              u:object_r:init-radio-sh_exec:s0
 /vendor/bin/irsc_util                    u:object_r:irsc_util_exec:s0
@@ -146,7 +154,7 @@
 /system/bin/subsystem_ramdump            u:object_r:ssr_exec:s0
 /vendor/bin/thermal-engine               u:object_r:thermald_exec:s0
 /vendor/bin/time_daemon                  u:object_r:time_exec:s0
-/system/bin/nanoapp_cmd                  u:object_r:nanoapp_cmd_exec:s0
+/vendor/bin/nanoapp_cmd                  u:object_r:nanoapp_cmd_exec:s0
 /vendor/bin/diag_test_server             u:object_r:diag_exec:s0
 /vendor/bin/InputEventFind               u:object_r:inputeventfind_exec:s0
 /vendor/bin/oem_qmi_server               u:object_r:oem_qmi_server_exec:s0
@@ -160,6 +168,7 @@
 /data/misc/perfd(/.*)?           u:object_r:perfd_data_file:s0
 /data/misc/radio(/.*)?           u:object_r:radio_data_file:s0
 /data/nfc(/.*)?                  u:object_r:nfc_data_file:s0
+/data/vendor/nfc(/.*)?           u:object_r:nfc_vendor_data_file:s0
 /data/ramdump(/.*)?              u:object_r:ssr_data_file:s0
 /data/system/perfd(/.*)?         u:object_r:perfd_data_file:s0
 /data/time(/.*)?                 u:object_r:time_data_file:s0
@@ -175,3 +184,5 @@
 # Sysfs files used by nanoapp_cmd
 /sys/devices/virtual/nanohub/nanohub(/.*)? u:object_r:sysfs_nanoapp_cmd:s0
 
+# NFC hal
+/system/bin/hw/nfc_hal_pn54x    u:object_r:nfc_hal_pn54x_exec:s0
diff --git a/sepolicy/fingerprintd.te b/sepolicy/fingerprintd.te
deleted file mode 100644
index f5160aa..0000000
--- a/sepolicy/fingerprintd.te
+++ /dev/null
@@ -1,12 +0,0 @@
-allow fingerprintd tee_device:chr_file rw_file_perms;
-# read/open /dev/input
-allow fingerprintd input_device:dir r_dir_perms;
-# read/open /dev/input/event6
-allow fingerprintd input_device:chr_file r_file_perms;
-# write /sys/bus/spi/devices/spi12.0/spi_prepare
-allow fingerprintd sysfs_fingerprintd:file rw_file_perms;
-allow fingerprintd sysfs_fingerprintd:dir search;
-allow fingerprintd sysfs_fingerprintd:dir r_dir_perms;
-# open/write/ioctl /dev/uinput
-allow fingerprintd uhid_device:chr_file rw_file_perms;
-allow fingerprintd fingerprintd_data_file:sock_file create_file_perms;
diff --git a/sepolicy/hal_dumpstate_impl.te b/sepolicy/hal_dumpstate_impl.te
new file mode 100644
index 0000000..14b262d
--- /dev/null
+++ b/sepolicy/hal_dumpstate_impl.te
@@ -0,0 +1,10 @@
+type hal_dumpstate_impl, domain;
+hal_server_domain(hal_dumpstate_impl, hal_dumpstate)
+
+type hal_dumpstate_impl_exec, exec_type, file_type;
+init_daemon_domain(hal_dumpstate_impl)
+
+# Access to files for dumping
+allow hal_dumpstate_impl proc_interrupts:file { open read };
+allow hal_dumpstate_impl pstorefs:dir search;
+allow hal_dumpstate_impl sysfs:file { open read };
diff --git a/sepolicy/hal_fingerprint.te b/sepolicy/hal_fingerprint.te
new file mode 100644
index 0000000..659a8f7
--- /dev/null
+++ b/sepolicy/hal_fingerprint.te
@@ -0,0 +1,17 @@
+# Access to /dev/tee
+allow hal_fingerprint tee_device:chr_file rw_file_perms;
+
+# Read /dev/input
+allow hal_fingerprint input_device:dir r_dir_perms;
+allow hal_fingerprint input_device:chr_file r_file_perms;
+
+# for SW20.6 navigation
+allow hal_fingerprint uhid_device:chr_file rw_file_perms;
+
+# write /sys/bus/spi/devices/spi12.0/spi_prepare
+allow hal_fingerprint sysfs_fingerprintd:file rw_file_perms;
+allow hal_fingerprint sysfs_fingerprintd:dir search;
+allow hal_fingerprint sysfs_fingerprintd:dir r_dir_perms;
+
+# read sysfs (required for fpc driver to read SOC files)
+allow hal_fingerprint sysfs:dir { read open };
diff --git a/sepolicy/hal_graphics_allocator.te b/sepolicy/hal_graphics_allocator.te
new file mode 100644
index 0000000..a4479de
--- /dev/null
+++ b/sepolicy/hal_graphics_allocator.te
@@ -0,0 +1,2 @@
+
+allow hal_graphics_allocator sysfs_hal_gralloc:file r_file_perms;
diff --git a/sepolicy/ims.te b/sepolicy/ims.te
index 4b20d87..2fe22a6 100644
--- a/sepolicy/ims.te
+++ b/sepolicy/ims.te
@@ -10,6 +10,7 @@
 set_prop(ims, qcom_ims_prop)
 qmux_socket(ims)
 unix_socket_connect(ims, cnd, cnd)
+allowxperm ims self:udp_socket ioctl SIOCDEVPRIVATE_D;
 
 allow ims ims_service:service_manager add;
 
diff --git a/sepolicy/init-devstart-sh.te b/sepolicy/init-devstart-sh.te
new file mode 100644
index 0000000..24004d2
--- /dev/null
+++ b/sepolicy/init-devstart-sh.te
@@ -0,0 +1,15 @@
+type init-qcom-devstart-sh, domain;
+type init-qcom-devstart-sh_exec, exec_type, file_type;
+
+init_daemon_domain(init-qcom-devstart-sh)
+
+allow init-qcom-devstart-sh shell_exec:file rx_file_perms;
+
+# execute toybox/toolbox
+allow init-qcom-devstart-sh toolbox_exec:file rx_file_perms;
+
+# Set the sys.qcom.devup property
+set_prop(init-qcom-devstart-sh, system_prop)
+
+# Set boot_adsp and boot_slpi to 1
+allow init-qcom-devstart-sh sysfs_msm_subsys:file w_file_perms;
diff --git a/sepolicy/init-devwait-sh.te b/sepolicy/init-devwait-sh.te
new file mode 100644
index 0000000..1529536
--- /dev/null
+++ b/sepolicy/init-devwait-sh.te
@@ -0,0 +1,9 @@
+type init-qcom-devwait-sh, domain;
+type init-qcom-devwait-sh_exec, exec_type, file_type;
+
+init_daemon_domain(init-qcom-devwait-sh)
+
+allow init-qcom-devwait-sh shell_exec:file rx_file_perms;
+
+# execute toybox/toolbox
+allow init-qcom-devwait-sh toolbox_exec:file rx_file_perms;
diff --git a/sepolicy/init-power-sh.te b/sepolicy/init-power-sh.te
index fac3d25..957d9ff 100644
--- a/sepolicy/init-power-sh.te
+++ b/sepolicy/init-power-sh.te
@@ -14,6 +14,7 @@
 # allow labeling of interactive /sys files created post-initial restorecon
 allow init-power-sh sysfs:{ dir file lnk_file } relabelfrom;
 allow init-power-sh sysfs_devices_system_cpu:{ dir file lnk_file } relabelto;
+allow init-power-sh file_contexts_file:file r_file_perms;
 
 # allow writes to sysfs files that have not yet been labeled
 allow init-power-sh sysfs:file rw_file_perms;
diff --git a/sepolicy/netmgrd.te b/sepolicy/netmgrd.te
index 9e135e1..e8eed07 100644
--- a/sepolicy/netmgrd.te
+++ b/sepolicy/netmgrd.te
@@ -24,6 +24,7 @@
 
 allow netmgrd shell_exec:file rx_file_perms;
 allow netmgrd system_file:file rx_file_perms;
+allow netmgrd vendor_file_type:file rx_file_perms;
 
 allow netmgrd sysfs_msm_subsys:dir r_dir_perms;
 allow netmgrd sysfs_msm_subsys:lnk_file r_file_perms;
diff --git a/sepolicy/nfc.te b/sepolicy/nfc.te
new file mode 100644
index 0000000..90488a1
--- /dev/null
+++ b/sepolicy/nfc.te
@@ -0,0 +1,2 @@
+# allow NFC process to call into the NFC HAL
+binder_call(nfc, nfc_hal_pn54x)
diff --git a/sepolicy/nfc_hal_pn54x.te b/sepolicy/nfc_hal_pn54x.te
new file mode 100644
index 0000000..264bed6
--- /dev/null
+++ b/sepolicy/nfc_hal_pn54x.te
@@ -0,0 +1,30 @@
+# nfc subsystem
+type nfc_hal_pn54x, domain;
+type nfc_hal_pn54x_exec, exec_type, file_type;
+
+# may be started by init
+init_daemon_domain(nfc_hal_pn54x)
+
+allow nfc_hal_pn54x nfc_hal_pn54x_exec:file rx_file_perms;
+
+# hwbinder access
+hwbinder_use(nfc_hal_pn54x)
+
+# call into NFC process (callbacks)
+binder_call(nfc_hal_pn54x, nfc)
+
+# Set NFC properties
+set_prop(nfc_hal_pn54x, nfc_prop)
+
+# NFC device access.
+allow nfc_hal_pn54x nfc_device:chr_file rw_file_perms;
+
+# Data file accesses.
+allow nfc_hal_pn54x nfc_vendor_data_file:dir create_dir_perms;
+allow nfc_hal_pn54x nfc_vendor_data_file:notdevfile_class_set create_file_perms;
+
+allow nfc_hal_pn54x sysfs_nfc_power_writable:file rw_file_perms;
+allow nfc_hal_pn54x sysfs:file write;
+
+# TODO: added to match above sysfs rule. Remove me?
+allow nfc_hal_pn54x sysfs_usb:file write;
diff --git a/sepolicy/platform_app.te b/sepolicy/platform_app.te
index 7510eed..1bb447c 100644
--- a/sepolicy/platform_app.te
+++ b/sepolicy/platform_app.te
@@ -1,8 +1,8 @@
 userdebug_or_eng(`
    # qxdmlogger rundiag perms
-   allow platform_app diag_logs:dir rw_dir_perms;
+   allow platform_app diag_logs:dir create_dir_perms;
    allow platform_app diag_logs:file create_file_perms;
    allow platform_app diag_device:chr_file rw_file_perms;
 ')
 
-allow platform_app oem_qmi_server:unix_stream_socket connectto;
\ No newline at end of file
+allow platform_app oem_qmi_server:unix_stream_socket connectto;
diff --git a/thermal-engine-angler.conf b/thermal-engine-angler.conf
index 9f58ad6..2408fb7 100644
--- a/thermal-engine-angler.conf
+++ b/thermal-engine-angler.conf
@@ -67,7 +67,7 @@
 sampling 250
 sensor gpu
 device gpu
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
@@ -76,7 +76,7 @@
 sampling 10
 sensor pop_mem
 device cluster1
-set_point 80000
+set_point 70000
 set_point_clr 55000
 time_constant 16
 
@@ -85,7 +85,7 @@
 sampling 10
 sensor cpu7
 device cluster1
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
@@ -94,7 +94,7 @@
 sampling 10
 sensor cpu6
 device cluster1
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
@@ -103,7 +103,7 @@
 sampling 10
 sensor cpu5
 device cluster1
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
@@ -112,7 +112,7 @@
 sampling 10
 sensor cpu4
 device cluster1
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
@@ -121,7 +121,7 @@
 sampling 10
 sensor cpu3
 device cluster0
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
@@ -130,7 +130,7 @@
 sampling 10
 sensor cpu2
 device cluster0
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
@@ -139,7 +139,7 @@
 sampling 10
 sensor cpu1
 device cluster0
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
@@ -148,7 +148,7 @@
 sampling 10
 sensor cpu0
 device cluster0
-set_point 85000
+set_point 75000
 set_point_clr 55000
 time_constant 0
 
diff --git a/thermal/Android.mk b/thermal/Android.mk
index 48b7465..25a15cc 100644
--- a/thermal/Android.mk
+++ b/thermal/Android.mk
@@ -19,6 +19,7 @@
 include $(CLEAR_VARS)
 LOCAL_CFLAGS := -Wno-unused-parameter
 LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_PROPRIETARY_MODULE := true
 LOCAL_SRC_FILES := thermal.c
 LOCAL_SHARED_LIBRARIES := liblog libcutils
 LOCAL_MODULE_TAGS := optional
diff --git a/vr/Android.mk b/uinput-fpc.idc
similarity index 62%
rename from vr/Android.mk
rename to uinput-fpc.idc
index b35f550..526d0e8 100644
--- a/vr/Android.mk
+++ b/uinput-fpc.idc
@@ -1,4 +1,4 @@
-# Copyright 2016 The Android Open Source Project
+# 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.
@@ -12,15 +12,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-LOCAL_PATH:= $(call my-dir)
+#
+# Fingerprint navigation configuration file
+#
+keyboard.orientationAware = 1
+keyboard.builtIn = 1
 
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := vr.c
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SHARED_LIBRARIES := liblog libcutils
-LOCAL_CFLAGS += -Wno-unused-parameter
-LOCAL_MODULE := vr.angler
-LOCAL_MODULE_TAGS := optional
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/uinput-fpc.kl b/uinput-fpc.kl
index 2bc2054..c8f0acd 100644
--- a/uinput-fpc.kl
+++ b/uinput-fpc.kl
@@ -1,4 +1,4 @@
-key 105   SYSTEM_NAVIGATION_LEFT
+key 106   SYSTEM_NAVIGATION_LEFT
 key 108   SYSTEM_NAVIGATION_DOWN
 key 103   SYSTEM_NAVIGATION_UP
-key 106   SYSTEM_NAVIGATION_RIGHT
+key 105   SYSTEM_NAVIGATION_RIGHT
diff --git a/vendor_owner_info.txt b/vendor_owner_info.txt
index 151fac8..e1c783a 100644
--- a/vendor_owner_info.txt
+++ b/vendor_owner_info.txt
@@ -21,7 +21,6 @@
 system/bin/ssr_setup:qcom
 system/bin/subsystem_ramdump:qcom
 system/bin/test_diag:qcom
-system/etc/diag/Angler_Radio-general.cfg:qcom
 system/etc/permissions/cneapiclient.xml:qcom
 system/etc/permissions/embms.xml:qcom
 system/etc/permissions/qcrilhook.xml:qcom
@@ -29,9 +28,7 @@
 system/framework/embmslibrary.jar:qcom
 system/framework/qcrilhook.jar:qcom
 system/lib64/libiperf.so:qcom
-system/lib64/libtinyxml.so:qcom
 system/lib/libiperf.so:qcom
 system/lib/libmm-qcamera.so:qcom
-system/lib/libtinyxml.so:qcom
 system/xbin/iperf3:qcom
 IMAGES/vendor.img:huawei
diff --git a/vr/vr.c b/vr/vr.c
deleted file mode 100644
index 8857f9a..0000000
--- a/vr/vr.c
+++ /dev/null
@@ -1,148 +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.
- */
-
-#define LOG_TAG "VrHALImpl"
-
-#include <cutils/log.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-
-#include <hardware/vr.h>
-#include <hardware/hardware.h>
-
-
-// Angler has two inflight numbers. By default, inflight=15 and inflight_low_latency=4.
-// Inflight is only used when there is a single GL context, when there is more than one
-// context, inflight_low_latency is used. Since we are only interested in affecting
-// performance when there is context preemption, we only have to modify the low latency
-// parameter.
-static const int DEFAULT_GPU_INFLIGHT = 4;
-static const int VR_MODE_GPU_INFLIGHT = 2;
-static const char* GPU_INFLIGHT_PATH = "/sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency";
-
-/**
- * Write 'len' characters from 'input' character array into file at path 'outFile.'
- *
- * Return 0 on success, or a negative error code.
- */
-static int write_string(const char* input, size_t len, const char* outFile) {
-    int fd = -1;
-    ssize_t err = 0;
-
-    // Check input strings.
-    if (input == NULL || outFile == NULL) {
-        ALOGE("%s: Invalid input to write", __FUNCTION__);
-        return -1;
-    }
-
-    // Open file, check for errors.
-    fd = open(outFile, O_WRONLY);
-    if (fd < 0) {
-        ALOGE("%s: Failed to open file %s, error %s (%d)", __FUNCTION__, outFile, strerror(errno),
-              -errno);
-        return -errno;
-    }
-
-    // Write file, check for errors.
-    err = write(fd, input, len);
-    if (err < 0) {
-        ALOGE("%s: Failed to write file %s, error %s (%d)", __FUNCTION__, outFile, strerror(errno),
-              -errno);
-        close(fd);
-        return -errno;
-    }
-
-    // Close and return success.
-    close(fd);
-    return 0;
-}
-
-/**
- * Write integer 'input' formatted as a character string into the file at path 'outFile.'
- *
- * Return 0 on success, or a negative error code.
- */
-static int write_int(int input, const char* outFile) {
-    char buffer[128] = {0,};
-    int bytes = snprintf(buffer, sizeof(buffer), "%d", input);
-
-    if (bytes < 0 || (size_t) bytes >= sizeof(buffer)) {
-        ALOGE("%s: Failed to format integer %d", __FUNCTION__, input);
-        return -EINVAL;
-    }
-
-    return write_string(buffer, (size_t) bytes, outFile);
-}
-
-// Set global display/GPU/scheduler configuration to used for VR apps.
-static void set_vr_performance_configuration() {
-    int err = 0;
-
-    // Set in-flight buffers to 2.
-    err = write_int(VR_MODE_GPU_INFLIGHT, GPU_INFLIGHT_PATH);
-
-    if (err < 0) {
-        ALOGW("%s: Error while setting configuration for VR mode.", __FUNCTION__);
-    }
-}
-
-// Reset to default global display/GPU/scheduler configuration.
-static void unset_vr_performance_configuration() {
-    int err = 0;
-
-    // Set in-flight buffers back to default (15).
-    err = write_int(DEFAULT_GPU_INFLIGHT, GPU_INFLIGHT_PATH);
-
-    if (err < 0) {
-        ALOGW("%s: Error while setting configuration for VR mode.", __FUNCTION__);
-    }
-}
-
-static void vr_init(struct vr_module *module) {
-    // NOOP
-}
-
-static void vr_set_vr_mode(struct vr_module *module, bool enabled) {
-    if (enabled) {
-        set_vr_performance_configuration();
-    } else {
-        unset_vr_performance_configuration();
-    }
-}
-
-static struct hw_module_methods_t vr_module_methods = {
-    .open = NULL, // There are no devices for this HAL interface.
-};
-
-
-vr_module_t HAL_MODULE_INFO_SYM = {
-    .common = {
-        .tag                = HARDWARE_MODULE_TAG,
-        .module_api_version = VR_MODULE_API_VERSION_1_0,
-        .hal_api_version    = HARDWARE_HAL_API_VERSION,
-        .id                 = VR_HARDWARE_MODULE_ID,
-        .name               = "Angler VR HAL",
-        .author             = "The Android Open Source Project",
-        .methods            = &vr_module_methods,
-    },
-
-    .init = vr_init,
-    .set_vr_mode = vr_set_vr_mode,
-};