diff --git a/BoardConfig.mk b/BoardConfig.mk
index 17fe2f4..0bc3a04 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -59,10 +59,9 @@
 BOARD_USES_GENERIC_INVENSENSE := false
 
 # RenderScript
-# OVERRIDE_RS_DRIVER := libnvRSDriver.so
+OVERRIDE_RS_DRIVER := libnvRSDriver.so
 BOARD_OVERRIDE_RS_CPU_VARIANT_32 := cortex-a15
 BOARD_OVERRIDE_RS_CPU_VARIANT_64 := cortex-a57
-# DISABLE_RS_64_BIT_DRIVER := true
 
 # Bluetooth
 BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/htc/flounder/bluetooth
diff --git a/VolantisLayout/res/values-af/strings.xml b/VolantisLayout/res/values-af/strings.xml
deleted file mode 100644
index d0e9c00..0000000
--- a/VolantisLayout/res/values-af/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9-tuisskerm"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Skep"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Speel"</string>
-</resources>
diff --git a/VolantisLayout/res/values-am/strings.xml b/VolantisLayout/res/values-am/strings.xml
deleted file mode 100644
index ac2663a..0000000
--- a/VolantisLayout/res/values-am/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"የNexus 9 መነሻ ማያ ገጽ"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"ፍጠር"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"አጫውት"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ar/strings.xml b/VolantisLayout/res/values-ar/strings.xml
deleted file mode 100644
index 973b23f..0000000
--- a/VolantisLayout/res/values-ar/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"‏شاشة جهاز Nexus 9 الرئيسية"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"إنشاء"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"تشغيل"</string>
-</resources>
diff --git a/VolantisLayout/res/values-bg/strings.xml b/VolantisLayout/res/values-bg/strings.xml
deleted file mode 100644
index ad07260..0000000
--- a/VolantisLayout/res/values-bg/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Начален екран на Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Googlе"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Създаване"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Google Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-bn-rBD/strings.xml b/VolantisLayout/res/values-bn-rBD/strings.xml
deleted file mode 100644
index 9ff54fb..0000000
--- a/VolantisLayout/res/values-bn-rBD/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 হোম স্ক্রীন"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"তৈরি করুন"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ca/strings.xml b/VolantisLayout/res/values-ca/strings.xml
deleted file mode 100644
index 474bad6..0000000
--- a/VolantisLayout/res/values-ca/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Pantalla d\'inici de Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Creació"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-cs/strings.xml b/VolantisLayout/res/values-cs/strings.xml
deleted file mode 100644
index 8e794b0..0000000
--- a/VolantisLayout/res/values-cs/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Plocha tabletu Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Vytvořit"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-da/strings.xml b/VolantisLayout/res/values-da/strings.xml
deleted file mode 100644
index de2084b..0000000
--- a/VolantisLayout/res/values-da/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Startskærm for Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Opret"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-de/strings.xml b/VolantisLayout/res/values-de/strings.xml
deleted file mode 100644
index a31a835..0000000
--- a/VolantisLayout/res/values-de/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9-Startbildschirm"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Erstellen"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-el/strings.xml b/VolantisLayout/res/values-el/strings.xml
deleted file mode 100644
index 182d3bb..0000000
--- a/VolantisLayout/res/values-el/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Αρχική οθόνη Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Δημιουργία"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Αναπαραγωγή"</string>
-</resources>
diff --git a/VolantisLayout/res/values-es-rUS/strings.xml b/VolantisLayout/res/values-es-rUS/strings.xml
deleted file mode 100644
index c6211cf..0000000
--- a/VolantisLayout/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Pantalla principal de Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Crear"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-es/strings.xml b/VolantisLayout/res/values-es/strings.xml
deleted file mode 100644
index f330fa6..0000000
--- a/VolantisLayout/res/values-es/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Pantalla de inicio de Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Crear"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-et-rEE/strings.xml b/VolantisLayout/res/values-et-rEE/strings.xml
deleted file mode 100644
index f46a006..0000000
--- a/VolantisLayout/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 avaekraan"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Loomine"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-eu-rES/strings.xml b/VolantisLayout/res/values-eu-rES/strings.xml
deleted file mode 100644
index 3fd5ce1..0000000
--- a/VolantisLayout/res/values-eu-rES/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 hasierako pantaila"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Sortu"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Erreproduzitu"</string>
-</resources>
diff --git a/VolantisLayout/res/values-fa/strings.xml b/VolantisLayout/res/values-fa/strings.xml
deleted file mode 100644
index 69c4304..0000000
--- a/VolantisLayout/res/values-fa/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"‏صفحه اصلی Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"ایجاد"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-fi/strings.xml b/VolantisLayout/res/values-fi/strings.xml
deleted file mode 100644
index d0696bf..0000000
--- a/VolantisLayout/res/values-fi/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9:n aloitusruutu"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Luo"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Toista"</string>
-</resources>
diff --git a/VolantisLayout/res/values-fr-rCA/strings.xml b/VolantisLayout/res/values-fr-rCA/strings.xml
deleted file mode 100644
index 2ce651a..0000000
--- a/VolantisLayout/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Écran d\'accueil de la Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Créer"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Lecture"</string>
-</resources>
diff --git a/VolantisLayout/res/values-fr/strings.xml b/VolantisLayout/res/values-fr/strings.xml
deleted file mode 100644
index ab2456a..0000000
--- a/VolantisLayout/res/values-fr/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Écran d\'accueil de la Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Créer"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-gl-rES/strings.xml b/VolantisLayout/res/values-gl-rES/strings.xml
deleted file mode 100644
index f330fa6..0000000
--- a/VolantisLayout/res/values-gl-rES/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Pantalla de inicio de Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Crear"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-hi/strings.xml b/VolantisLayout/res/values-hi/strings.xml
deleted file mode 100644
index b3962e7..0000000
--- a/VolantisLayout/res/values-hi/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 होम स्क्रीन"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"बनाएं"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-hr/strings.xml b/VolantisLayout/res/values-hr/strings.xml
deleted file mode 100644
index 87359a9..0000000
--- a/VolantisLayout/res/values-hr/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Početni zaslon Nexusa 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Izrada"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-hu/strings.xml b/VolantisLayout/res/values-hu/strings.xml
deleted file mode 100644
index dd3b691..0000000
--- a/VolantisLayout/res/values-hu/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 kezdőképernyője"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Létrehozás"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Lejátszás"</string>
-</resources>
diff --git a/VolantisLayout/res/values-hy-rAM/strings.xml b/VolantisLayout/res/values-hy-rAM/strings.xml
deleted file mode 100644
index 7a47265..0000000
--- a/VolantisLayout/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 հիմնական էկրան"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Ստեղծել"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-in/strings.xml b/VolantisLayout/res/values-in/strings.xml
deleted file mode 100644
index e9ca0c5..0000000
--- a/VolantisLayout/res/values-in/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Layar Utama Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Buat"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Putar"</string>
-</resources>
diff --git a/VolantisLayout/res/values-is-rIS/strings.xml b/VolantisLayout/res/values-is-rIS/strings.xml
deleted file mode 100644
index 638fdb1..0000000
--- a/VolantisLayout/res/values-is-rIS/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Heimaskjár Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Búa til"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-it/strings.xml b/VolantisLayout/res/values-it/strings.xml
deleted file mode 100644
index e6376ed..0000000
--- a/VolantisLayout/res/values-it/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Schermata Home del Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Crea"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Riproduci"</string>
-</resources>
diff --git a/VolantisLayout/res/values-iw/strings.xml b/VolantisLayout/res/values-iw/strings.xml
deleted file mode 100644
index 0c23528..0000000
--- a/VolantisLayout/res/values-iw/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"‏מסך דף הבית של Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"צור"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ja/strings.xml b/VolantisLayout/res/values-ja/strings.xml
deleted file mode 100644
index 37866db..0000000
--- a/VolantisLayout/res/values-ja/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9ホーム画面"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"作成"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ka-rGE/strings.xml b/VolantisLayout/res/values-ka-rGE/strings.xml
deleted file mode 100644
index 4496306..0000000
--- a/VolantisLayout/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 მთავარი ეკრანი"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"შექმნა"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"დაკვრა"</string>
-</resources>
diff --git a/VolantisLayout/res/values-kk-rKZ/strings.xml b/VolantisLayout/res/values-kk-rKZ/strings.xml
deleted file mode 100644
index dd2b67f..0000000
--- a/VolantisLayout/res/values-kk-rKZ/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 негізгі экраны"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Жасау"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Ойнату"</string>
-</resources>
diff --git a/VolantisLayout/res/values-km-rKH/strings.xml b/VolantisLayout/res/values-km-rKH/strings.xml
deleted file mode 100644
index 8497941..0000000
--- a/VolantisLayout/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"អេក្រង់​ដើម Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"បង្កើត"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"ចាក់"</string>
-</resources>
diff --git a/VolantisLayout/res/values-kn-rIN/strings.xml b/VolantisLayout/res/values-kn-rIN/strings.xml
deleted file mode 100644
index 84cb50e..0000000
--- a/VolantisLayout/res/values-kn-rIN/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 ಮುಖಪುಟದ ಪರದೆ"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"ರಚಿಸಿ"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"ಪ್ಲೇ ಮಾಡು"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ko/strings.xml b/VolantisLayout/res/values-ko/strings.xml
deleted file mode 100644
index f5e8910..0000000
--- a/VolantisLayout/res/values-ko/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 메인 스크린"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"만들기"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ky-rKG/strings.xml b/VolantisLayout/res/values-ky-rKG/strings.xml
deleted file mode 100644
index 2e40b71..0000000
--- a/VolantisLayout/res/values-ky-rKG/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 Башкы экраны"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Түзүү"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Ойнотуу"</string>
-</resources>
diff --git a/VolantisLayout/res/values-lt/strings.xml b/VolantisLayout/res/values-lt/strings.xml
deleted file mode 100644
index 56cc53e..0000000
--- a/VolantisLayout/res/values-lt/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Pagrindinis „Nexus 9“ ekranas"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Sukurti"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Google Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-lv/strings.xml b/VolantisLayout/res/values-lv/strings.xml
deleted file mode 100644
index 078253e..0000000
--- a/VolantisLayout/res/values-lv/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 sākuma ekrāns"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Izveidot"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-mk-rMK/strings.xml b/VolantisLayout/res/values-mk-rMK/strings.xml
deleted file mode 100644
index 93d1953..0000000
--- a/VolantisLayout/res/values-mk-rMK/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Почетен екран на Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Создај"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Пушти"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ml-rIN/strings.xml b/VolantisLayout/res/values-ml-rIN/strings.xml
deleted file mode 100644
index 288e56f..0000000
--- a/VolantisLayout/res/values-ml-rIN/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 ഹോം സ്ക്രീൻ"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"സൃഷ്‌ടിക്കുക"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-mr-rIN/strings.xml b/VolantisLayout/res/values-mr-rIN/strings.xml
deleted file mode 100644
index 772fd69..0000000
--- a/VolantisLayout/res/values-mr-rIN/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 मुख्य स्क्रीन"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"तयार करा"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"प्ले करा"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ms-rMY/strings.xml b/VolantisLayout/res/values-ms-rMY/strings.xml
deleted file mode 100644
index d8cf760..0000000
--- a/VolantisLayout/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Skrin Utama Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Buat"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-my-rMM/strings.xml b/VolantisLayout/res/values-my-rMM/strings.xml
deleted file mode 100644
index 88c04f7..0000000
--- a/VolantisLayout/res/values-my-rMM/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 ပင်မ စာမျက်နှာ"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"ဖန်တီးရန်"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"ဖွင့်ရန်"</string>
-</resources>
diff --git a/VolantisLayout/res/values-nb/strings.xml b/VolantisLayout/res/values-nb/strings.xml
deleted file mode 100644
index 95d233d..0000000
--- a/VolantisLayout/res/values-nb/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Startside for Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google-apper"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Opprett"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Spill av"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ne-rNP/strings.xml b/VolantisLayout/res/values-ne-rNP/strings.xml
deleted file mode 100644
index 37ed751..0000000
--- a/VolantisLayout/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"नेक्सस ९ गृह स्क्रिन"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"सिर्जना गर्नुहोस्"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"बजाउनुहोस्"</string>
-</resources>
diff --git a/VolantisLayout/res/values-nl/strings.xml b/VolantisLayout/res/values-nl/strings.xml
deleted file mode 100644
index 72245c7..0000000
--- a/VolantisLayout/res/values-nl/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9-startscherm"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Maken"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Google Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-pl/strings.xml b/VolantisLayout/res/values-pl/strings.xml
deleted file mode 100644
index 408cb54..0000000
--- a/VolantisLayout/res/values-pl/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Ekran główny Nexusa 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Utwórz"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-pt-rPT/strings.xml b/VolantisLayout/res/values-pt-rPT/strings.xml
deleted file mode 100644
index 4386a22..0000000
--- a/VolantisLayout/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Ecrã principal do Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Criar"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-pt/strings.xml b/VolantisLayout/res/values-pt/strings.xml
deleted file mode 100644
index cebb9ea..0000000
--- a/VolantisLayout/res/values-pt/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Tela inicial do Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Criar"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ro/strings.xml b/VolantisLayout/res/values-ro/strings.xml
deleted file mode 100644
index 9bec3bd..0000000
--- a/VolantisLayout/res/values-ro/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Ecranul de pornire Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Creați"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Redați"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ru/strings.xml b/VolantisLayout/res/values-ru/strings.xml
deleted file mode 100644
index f5cac9d..0000000
--- a/VolantisLayout/res/values-ru/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Главный экран Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Создать"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Google Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-si-rLK/strings.xml b/VolantisLayout/res/values-si-rLK/strings.xml
deleted file mode 100644
index 2831e43..0000000
--- a/VolantisLayout/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 මුල් තිරය"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"සාදන්න"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"ධාවනය කරන්න"</string>
-</resources>
diff --git a/VolantisLayout/res/values-sk/strings.xml b/VolantisLayout/res/values-sk/strings.xml
deleted file mode 100644
index 3f40f6f..0000000
--- a/VolantisLayout/res/values-sk/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Plocha zariadenia Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Vytvoriť"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-sl/strings.xml b/VolantisLayout/res/values-sl/strings.xml
deleted file mode 100644
index 2375091..0000000
--- a/VolantisLayout/res/values-sl/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Začetni zaslon Nexusa 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Ustvarjanje"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Google Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-sr/strings.xml b/VolantisLayout/res/values-sr/strings.xml
deleted file mode 100644
index 67cf9f3..0000000
--- a/VolantisLayout/res/values-sr/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Почетни екран Nexus-а 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Прављење"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-sv/strings.xml b/VolantisLayout/res/values-sv/strings.xml
deleted file mode 100644
index cacf610..0000000
--- a/VolantisLayout/res/values-sv/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Startskärm för Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Skapa"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Spela upp"</string>
-</resources>
diff --git a/VolantisLayout/res/values-sw/strings.xml b/VolantisLayout/res/values-sw/strings.xml
deleted file mode 100644
index c1c278a..0000000
--- a/VolantisLayout/res/values-sw/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Skrini ya Kwanza ya Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Unda"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Google Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ta-rIN/strings.xml b/VolantisLayout/res/values-ta-rIN/strings.xml
deleted file mode 100644
index fb2683a..0000000
--- a/VolantisLayout/res/values-ta-rIN/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 முகப்புத் திரை"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"உருவாக்கு"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-te-rIN/strings.xml b/VolantisLayout/res/values-te-rIN/strings.xml
deleted file mode 100644
index 849cd22..0000000
--- a/VolantisLayout/res/values-te-rIN/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 హోమ్ స్క్రీన్"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"సృష్టించండి"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-th/strings.xml b/VolantisLayout/res/values-th/strings.xml
deleted file mode 100644
index 441c532..0000000
--- a/VolantisLayout/res/values-th/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"หน้าจอหลักของ Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"สร้าง"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-tl/strings.xml b/VolantisLayout/res/values-tl/strings.xml
deleted file mode 100644
index dcb56c6..0000000
--- a/VolantisLayout/res/values-tl/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Home Screen ng Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Gumawa"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-tr/strings.xml b/VolantisLayout/res/values-tr/strings.xml
deleted file mode 100644
index d98679d..0000000
--- a/VolantisLayout/res/values-tr/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 Ana Ekranı"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Oluştur"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Google Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-uk/strings.xml b/VolantisLayout/res/values-uk/strings.xml
deleted file mode 100644
index becfe65..0000000
--- a/VolantisLayout/res/values-uk/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Головний екран Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Створити"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-ur-rPK/strings.xml b/VolantisLayout/res/values-ur-rPK/strings.xml
deleted file mode 100644
index 02605b2..0000000
--- a/VolantisLayout/res/values-ur-rPK/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"‏Nexus 9 کی ہوم اسکرین"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"بنائیں"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-uz-rUZ/strings.xml b/VolantisLayout/res/values-uz-rUZ/strings.xml
deleted file mode 100644
index 981b920..0000000
--- a/VolantisLayout/res/values-uz-rUZ/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 bosh ekrani"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Yaratish"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-vi/strings.xml b/VolantisLayout/res/values-vi/strings.xml
deleted file mode 100644
index 3fd2142..0000000
--- a/VolantisLayout/res/values-vi/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Màn hình chính Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Tạo"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-zh-rCN/strings.xml b/VolantisLayout/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 8f0defb..0000000
--- a/VolantisLayout/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9主屏幕"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"创建"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-zh-rHK/strings.xml b/VolantisLayout/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 50f07d5..0000000
--- a/VolantisLayout/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 主螢幕"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"建立"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"播放"</string>
-</resources>
diff --git a/VolantisLayout/res/values-zh-rTW/strings.xml b/VolantisLayout/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 261efe3..0000000
--- a/VolantisLayout/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Nexus 9 主螢幕"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"建立"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Play"</string>
-</resources>
diff --git a/VolantisLayout/res/values-zu/strings.xml b/VolantisLayout/res/values-zu/strings.xml
deleted file mode 100644
index 56ab44d..0000000
--- a/VolantisLayout/res/values-zu/strings.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="4333089353149619778">"Isikrini Sasekhaya se-Nexus 9"</string>
-    <string name="google_folder_title" msgid="375890659159312012">"I-Google"</string>
-    <string name="create_folder_title" msgid="5720573466924789097">"Dala"</string>
-    <string name="play_folder_title" msgid="3260420724119064282">"Dlala"</string>
-</resources>
diff --git a/audio/hal/audio_hw.c b/audio/hal/audio_hw.c
index 71ee583..2557619 100644
--- a/audio/hal/audio_hw.c
+++ b/audio/hal/audio_hw.c
@@ -47,6 +47,8 @@
 
 #include "sound/compress_params.h"
 
+#define MIXER_CTL_COMPRESS_PLAYBACK_VOLUME "Compress Playback Volume"
+
 /* TODO: the following PCM device profiles could be read from a config file */
 struct pcm_device_profile pcm_device_playback_hs = {
     .config = {
@@ -110,7 +112,7 @@
         .period_count = PLAYBACK_PERIOD_COUNT,
         .format = PCM_FORMAT_S16_LE,
         .start_threshold = PLAYBACK_START_THRESHOLD,
-        .stop_threshold = INT_MAX,
+        .stop_threshold = PLAYBACK_STOP_THRESHOLD,
         .silence_threshold = 0,
         .avail_min = PLAYBACK_AVAILABLE_MIN,
     },
@@ -2108,8 +2110,6 @@
 /* must be called iwth out->lock locked */
 static void stop_compressed_output_l(struct stream_out *out)
 {
-    out->offload_state = OFFLOAD_STATE_IDLE;
-    out->playback_started = 0;
     out->send_new_metadata = 1;
     if (out->compr != NULL) {
         compress_stop(out->compr);
@@ -2124,9 +2124,6 @@
     struct stream_out *out = (struct stream_out *) context;
     struct listnode *item;
 
-    out->offload_state = OFFLOAD_STATE_IDLE;
-    out->playback_started = 0;
-
     setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_AUDIO);
     set_sched_policy(0, SP_FOREGROUND);
     prctl(PR_SET_NAME, (unsigned long)"Offload Callback", 0, 0, 0);
@@ -2221,7 +2218,6 @@
 static int destroy_offload_callback_thread(struct stream_out *out)
 {
     pthread_mutex_lock(&out->lock);
-    stop_compressed_output_l(out);
     send_offload_cmd_l(out, OFFLOAD_CMD_EXIT);
 
     pthread_mutex_unlock(&out->lock);
@@ -2350,43 +2346,29 @@
     return ret;
 }
 
-static int stop_output_stream(struct stream_out *out)
+static int disable_output_path_l(struct stream_out *out)
 {
-    int i, ret = 0;
-    struct audio_usecase *uc_info;
     struct audio_device *adev = out->dev;
+    struct audio_usecase *uc_info;
 
-    ALOGV("%s: enter: usecase(%d: %s)", __func__,
-          out->usecase, use_case_table[out->usecase]);
     uc_info = get_usecase_from_id(adev, out->usecase);
     if (uc_info == NULL) {
         ALOGE("%s: Could not find the usecase (%d) in the list",
-              __func__, out->usecase);
+             __func__, out->usecase);
         return -EINVAL;
     }
-
-    if (out->usecase == USECASE_AUDIO_PLAYBACK_OFFLOAD &&
-            adev->offload_fx_stop_output != NULL)
-        adev->offload_fx_stop_output(out->handle);
-
     disable_snd_device(adev, uc_info, uc_info->out_snd_device, true);
-
     uc_release_pcm_devices(uc_info);
     list_remove(&uc_info->adev_list_node);
     free(uc_info);
 
-    ALOGV("%s: exit: status(%d)", __func__, ret);
-    return ret;
+    return 0;
 }
 
-int start_output_stream(struct stream_out *out)
+static void enable_output_path_l(struct stream_out *out)
 {
-    int ret = 0;
-    struct audio_usecase *uc_info;
     struct audio_device *adev = out->dev;
-
-    ALOGV("%s: enter: usecase(%d: %s) devices(%#x) channels(%d)",
-          __func__, out->usecase, use_case_table[out->usecase], out->devices, out->config.channels);
+    struct audio_usecase *uc_info;
 
     uc_info = (struct audio_usecase *)calloc(1, sizeof(struct audio_usecase));
     uc_info->id = out->usecase;
@@ -2400,6 +2382,42 @@
     list_add_tail(&adev->usecase_list, &uc_info->adev_list_node);
 
     select_devices(adev, out->usecase);
+}
+
+static int stop_output_stream(struct stream_out *out)
+{
+    int ret = 0;
+    struct audio_device *adev = out->dev;
+    bool do_disable = true;
+
+    ALOGV("%s: enter: usecase(%d: %s)", __func__,
+          out->usecase, use_case_table[out->usecase]);
+
+    if (out->usecase == USECASE_AUDIO_PLAYBACK_OFFLOAD &&
+            adev->offload_fx_stop_output != NULL) {
+        adev->offload_fx_stop_output(out->handle);
+
+        if (out->offload_state == OFFLOAD_STATE_PAUSED ||
+                out->offload_state == OFFLOAD_STATE_PAUSED_FLUSHED)
+            do_disable = false;
+        out->offload_state = OFFLOAD_STATE_IDLE;
+    }
+    if (do_disable)
+        ret = disable_output_path_l(out);
+
+    ALOGV("%s: exit: status(%d)", __func__, ret);
+    return ret;
+}
+
+int start_output_stream(struct stream_out *out)
+{
+    int ret = 0;
+    struct audio_device *adev = out->dev;
+
+    ALOGV("%s: enter: usecase(%d: %s) devices(%#x) channels(%d)",
+          __func__, out->usecase, use_case_table[out->usecase], out->devices, out->config.channels);
+
+    enable_output_path_l(out);
 
     if (out->usecase != USECASE_AUDIO_PLAYBACK_OFFLOAD) {
         out->compr = NULL;
@@ -2842,15 +2860,37 @@
                           float right)
 {
     struct stream_out *out = (struct stream_out *)stream;
-    int volume[2];
+    struct audio_device *adev = out->dev;
+    int offload_volume[2];//For stereo
 
     if (out->usecase == USECASE_AUDIO_PLAYBACK_MULTI_CH) {
         /* only take left channel into account: the API is for stereo anyway */
         out->muted = (left == 0.0f);
         return 0;
     } else if (out->usecase == USECASE_AUDIO_PLAYBACK_OFFLOAD) {
-        (void)right;
-        /* TODO */
+        struct mixer_ctl *ctl;
+        struct mixer *mixer = NULL;
+
+        offload_volume[0] = (int)(left * COMPRESS_PLAYBACK_VOLUME_MAX);
+        offload_volume[1] = (int)(right * COMPRESS_PLAYBACK_VOLUME_MAX);
+
+        mixer = mixer_open(MIXER_CARD);
+        if (!mixer) {
+            ALOGE("%s unable to open the mixer for card %d, aborting.",
+                    __func__, MIXER_CARD);
+            return -EINVAL;
+        }
+        ctl = mixer_get_ctl_by_name(mixer, MIXER_CTL_COMPRESS_PLAYBACK_VOLUME);
+        if (!ctl) {
+            ALOGE("%s: Could not get ctl for mixer cmd - %s",
+                  __func__, MIXER_CTL_COMPRESS_PLAYBACK_VOLUME);
+            mixer_close(mixer);
+            return -EINVAL;
+        }
+        ALOGD("out_set_volume set offload volume (%f, %f)", left, right);
+        mixer_ctl_set_array(ctl, offload_volume,
+                            sizeof(offload_volume)/sizeof(offload_volume[0]));
+        mixer_close(mixer);
         return 0;
     }
 
@@ -2886,6 +2926,7 @@
     size_t frame_size = audio_stream_out_frame_size(stream);
     size_t frames_wr = 0, frames_rq = 0;
     unsigned char *data = NULL;
+    struct pcm_config config;
 #ifdef PREPROCESSING_ENABLED
     size_t in_frames = bytes / frame_size;
     size_t out_frames = in_frames;
@@ -2937,6 +2978,14 @@
 
     if (out->usecase == USECASE_AUDIO_PLAYBACK_OFFLOAD) {
         ALOGVV("%s: writing buffer (%d bytes) to compress device", __func__, bytes);
+
+        if (out->offload_state == OFFLOAD_STATE_PAUSED_FLUSHED) {
+            ALOGV("start offload write from pause state");
+            pthread_mutex_lock(&adev->lock);
+            enable_output_path_l(out);
+            pthread_mutex_unlock(&adev->lock);
+        }
+
         if (out->send_new_metadata) {
             ALOGVV("send new gapless metadata");
             compress_set_gapless_metadata(out->compr, &out->gapless_mdata);
@@ -2948,9 +2997,8 @@
         if (ret >= 0 && ret < (ssize_t)bytes) {
             send_offload_cmd_l(out, OFFLOAD_CMD_WAIT_FOR_BUFFER);
         }
-        if (!out->playback_started) {
+        if (out->offload_state != OFFLOAD_STATE_PLAYING) {
             compress_start(out->compr);
-            out->playback_started = 1;
             out->offload_state = OFFLOAD_STATE_PLAYING;
         }
         pthread_mutex_unlock(&out->lock);
@@ -3014,27 +3062,71 @@
                     out->echo_reference->write(out->echo_reference, &b);
                  }
 #endif
-                if (out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
-                    pthread_mutex_lock(&adev->tfa9895_lock);
-                    if (adev->tfa9895_mode_change == 0x1) {
+                if (adev->tfa9895_mode_change == 0x1) {
+                    if (out->devices & AUDIO_DEVICE_OUT_SPEAKER) {
+                        pthread_mutex_lock(&adev->tfa9895_lock);
                         data = (unsigned char *)
                                 calloc(pcm_frames_to_bytes(pcm_device->pcm, out->config.period_size),
                                         sizeof(unsigned char));
                         if (data) {
                             int i;
-                            for (i = out->config.period_count; i > 0; i--)
-                                pcm_write(pcm_device->pcm, (void *)data,
-                                    pcm_frames_to_bytes(pcm_device->pcm, out->config.period_size));
-                            /* TODO: Hold on 100 ms and wait i2s signal ready
+
+                            // reopen pcm with stop_threshold = INT_MAX/2
+                            memcpy(&config, &pcm_device->pcm_profile->config,
+                                    sizeof(struct pcm_config));
+                            config.stop_threshold = INT_MAX/2;
+
+                            if (pcm_device->pcm)
+                                pcm_close(pcm_device->pcm);
+
+                            for (i = 0; i < RETRY_NUMBER; i++) {
+                                pcm_device->pcm = pcm_open(pcm_device->pcm_profile->card,
+                                        pcm_device->pcm_profile->id,
+                                        PCM_OUT | PCM_MONOTONIC, &config);
+                                if (pcm_device->pcm != NULL && pcm_is_ready(pcm_device->pcm))
+                                    break;
+                                else
+                                    usleep(10000);
+                            }
+                            if (i >= RETRY_NUMBER)
+                                ALOGE("%s: failed to reopen pcm device", __func__);
+
+                            if (pcm_device->pcm) {
+                                for (i = out->config.period_count; i > 0; i--)
+                                    pcm_write(pcm_device->pcm, (void *)data,
+                                           pcm_frames_to_bytes(pcm_device->pcm,
+                                           out->config.period_size));
+                                /* TODO: Hold on 100 ms and wait i2s signal ready
                                      before giving dsp related i2c commands */
-                            usleep(100000);
-                            adev->tfa9895_mode_change &= ~0x1;
-                            ALOGD("@@##checking - 2: tfa9895_config_thread: "
+                                usleep(100000);
+                                adev->tfa9895_mode_change &= ~0x1;
+                                ALOGD("@@##checking - 2: tfa9895_config_thread: "
                                     "adev->tfa9895_mode_change=%d", adev->tfa9895_mode_change);
-                            adev->tfa9895_init =
-                                adev->htc_acoustic_set_amp_mode(adev->mode, AUDIO_DEVICE_OUT_SPEAKER,
-                                                                    0, 0, false);
+                                adev->tfa9895_init =
+                                        adev->htc_acoustic_set_amp_mode(
+                                                adev->mode, AUDIO_DEVICE_OUT_SPEAKER, 0, 0, false);
+                            }
                             free(data);
+
+                            // reopen pcm with normal stop_threshold
+                            if (pcm_device->pcm)
+                                pcm_close(pcm_device->pcm);
+
+                            for (i = 0; i < RETRY_NUMBER; i++) {
+                                pcm_device->pcm = pcm_open(pcm_device->pcm_profile->card,
+                                        pcm_device->pcm_profile->id,
+                                        PCM_OUT | PCM_MONOTONIC, &pcm_device->pcm_profile->config);
+                                if (pcm_device->pcm != NULL && pcm_is_ready(pcm_device->pcm))
+                                    break;
+                                else
+                                    usleep(10000);
+                            }
+                            if (i >= RETRY_NUMBER) {
+                                ALOGE("%s: failed to reopen pcm device, error return", __func__);
+                                pthread_mutex_unlock(&adev->tfa9895_lock);
+                                pthread_mutex_unlock(&out->lock);
+                                return -1;
+                            }
                         }
                     }
                     pthread_mutex_unlock(&adev->tfa9895_lock);
@@ -3198,6 +3290,9 @@
         if (out->compr != NULL && out->offload_state == OFFLOAD_STATE_PLAYING) {
             status = compress_pause(out->compr);
             out->offload_state = OFFLOAD_STATE_PAUSED;
+            pthread_mutex_lock(&out->dev->lock);
+            status = disable_output_path_l(out);
+            pthread_mutex_unlock(&out->dev->lock);
         }
         pthread_mutex_unlock(&out->lock);
     }
@@ -3213,6 +3308,9 @@
         status = 0;
         pthread_mutex_lock(&out->lock);
         if (out->compr != NULL && out->offload_state == OFFLOAD_STATE_PAUSED) {
+            pthread_mutex_lock(&out->dev->lock);
+            enable_output_path_l(out);
+            pthread_mutex_unlock(&out->dev->lock);
             status = compress_resume(out->compr);
             out->offload_state = OFFLOAD_STATE_PLAYING;
         }
@@ -3243,7 +3341,15 @@
     ALOGV("%s", __func__);
     if (out->usecase == USECASE_AUDIO_PLAYBACK_OFFLOAD) {
         pthread_mutex_lock(&out->lock);
-        stop_compressed_output_l(out);
+        if (out->offload_state == OFFLOAD_STATE_PLAYING) {
+            ALOGE("out_flush() called in wrong state %d", out->offload_state);
+            pthread_mutex_unlock(&out->lock);
+            return -ENOSYS;
+        }
+        if (out->offload_state == OFFLOAD_STATE_PAUSED) {
+            stop_compressed_output_l(out);
+            out->offload_state = OFFLOAD_STATE_PAUSED_FLUSHED;
+        }
         pthread_mutex_unlock(&out->lock);
         return 0;
     }
@@ -3751,8 +3857,7 @@
                 get_snd_codec_id(config->offload_info.format);
         out->compr_config.fragment_size = COMPRESS_OFFLOAD_FRAGMENT_SIZE;
         out->compr_config.fragments = COMPRESS_OFFLOAD_NUM_FRAGMENTS;
-        out->compr_config.codec->sample_rate =
-                    compress_get_alsa_rate(config->offload_info.sample_rate);
+        out->compr_config.codec->sample_rate = config->offload_info.sample_rate;
         out->compr_config.codec->bit_rate =
                     config->offload_info.bit_rate;
         out->compr_config.codec->ch_in =
@@ -3764,6 +3869,8 @@
 
         out->send_new_metadata = 1;
         create_offload_callback_thread(out);
+        out->offload_state = OFFLOAD_STATE_IDLE;
+
         ALOGV("%s: offloaded output offload_info version %04x bit rate %d",
                 __func__, config->offload_info.version,
                 config->offload_info.bit_rate);
diff --git a/audio/hal/audio_hw.h b/audio/hal/audio_hw.h
index 63a0c1d..fb818f4 100644
--- a/audio/hal/audio_hw.h
+++ b/audio/hal/audio_hw.h
@@ -141,12 +141,12 @@
 #define PLAYBACK_AVAILABLE_MIN 1
 
 
-#define SCO_PERIOD_SIZE 86
+#define SCO_PERIOD_SIZE 168
 #define SCO_PERIOD_COUNT 2
 #define SCO_DEFAULT_CHANNEL_COUNT 2
 #define SCO_DEFAULT_SAMPLING_RATE 8000
-#define SCO_START_THRESHOLD 171
-#define SCO_STOP_THRESHOLD 172
+#define SCO_START_THRESHOLD 335
+#define SCO_STOP_THRESHOLD 336
 #define SCO_AVAILABLE_MIN 1
 
 #define PLAYBACK_HDMI_MULTI_PERIOD_SIZE  1024
@@ -173,7 +173,7 @@
 #define COMPRESS_OFFLOAD_NUM_FRAGMENTS 4
 /* ToDo: Check and update a proper value in msec */
 #define COMPRESS_OFFLOAD_PLAYBACK_LATENCY 96
-#define COMPRESS_PLAYBACK_VOLUME_MAX 0x2000
+#define COMPRESS_PLAYBACK_VOLUME_MAX 0x10000 //NV suggested value
 
 #define DEEP_BUFFER_OUTPUT_SAMPLING_RATE 48000
 #define DEEP_BUFFER_OUTPUT_PERIOD_SIZE 480
@@ -225,6 +225,7 @@
     OFFLOAD_STATE_IDLE,
     OFFLOAD_STATE_PLAYING,
     OFFLOAD_STATE_PAUSED,
+    OFFLOAD_STATE_PAUSED_FLUSHED,
 };
 
 typedef enum {
@@ -283,7 +284,6 @@
     audio_io_handle_t           handle;
 
     int                         non_blocking;
-    int                         playback_started;
     int                         offload_state;
     pthread_cond_t              offload_cond;
     pthread_t                   offload_thread;
diff --git a/audio/soundtrigger/sound_trigger_hw.c b/audio/soundtrigger/sound_trigger_hw.c
index 802e12e..2f5aaac 100644
--- a/audio/soundtrigger/sound_trigger_hw.c
+++ b/audio/soundtrigger/sound_trigger_hw.c
@@ -167,7 +167,7 @@
 
     ret = ioctl(stdev->vad_fd, RT_WRITE_CODEC_DSP_IOCTL, &cmd);
     if (ret)
-        ALOGE("Error VAD write ioctl");
+        ALOGE("Error VAD write ioctl: %d", ret);
     return ret;
 }
 
@@ -288,7 +288,7 @@
         err = poll(fds, 2, -1);
         pthread_mutex_lock(&stdev->lock);
         if ((err < 0) || (stdev->recognition_callback == NULL)) {
-            ALOGE("Error in hotplug CPU poll: %d", errno);
+            ALOGE_IF(err < 0, "Error in hotplug CPU poll: %d", errno);
             break;
         }
 
@@ -383,6 +383,9 @@
     ret = vad_load_sound_model(stdev,
                                (char *)sound_model + sound_model->data_offset,
                                sound_model->data_size);
+    if (ret)
+        goto exit;
+
     stdev->model_handle = 1;
     stdev->sound_model_callback = callback;
     stdev->sound_model_cookie = cookie;
diff --git a/audio_policy.conf b/audio_policy.conf
index ef136a7..fc0de34 100644
--- a/audio_policy.conf
+++ b/audio_policy.conf
@@ -72,8 +72,8 @@
     inputs {
       usb_device {
         sampling_rates dynamic
-        channel_masks AUDIO_CHANNEL_IN_STEREO
-        formats AUDIO_FORMAT_PCM_16_BIT
+        channel_masks dynamic
+        formats dynamic
         devices AUDIO_DEVICE_IN_USB_DEVICE
       }
     }
diff --git a/board-info.txt b/board-info.txt
index 0b6ce58..2436d81 100644
--- a/board-info.txt
+++ b/board-info.txt
@@ -1,2 +1,2 @@
 board=flounder|flounder_lte
-require version-bootloader=3.43.0.0114
+require version-bootloader=3.44.0.0121
diff --git a/device-lte.mk b/device-lte.mk
index 63349ba..1a151ab 100644
--- a/device-lte.mk
+++ b/device-lte.mk
@@ -23,7 +23,7 @@
 
 # LTE, CDMA, GSM/WCDMA
 PRODUCT_PROPERTY_OVERRIDES += \
-    ro.telephony.default_network=10 \
+    ro.telephony.default_network=9 \
     telephony.lteOnCdmaDevice=1
 
 DEVICE_PACKAGE_OVERLAYS += \
diff --git a/device.mk b/device.mk
index 40e9837..5015819 100644
--- a/device.mk
+++ b/device.mk
@@ -21,7 +21,11 @@
     wpa_supplicant.conf
 
 ifeq ($(TARGET_PREBUILT_KERNEL),)
+ifeq ($(USE_SVELTE_KERNEL), true)
+LOCAL_KERNEL := device/htc/flounder_svelte-kernel/Image.gz-dtb
+else
 LOCAL_KERNEL := device/htc/flounder-kernel/Image.gz-dtb
+endif # USE_SVELTE_KERNEL
 else
 LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
 endif
@@ -56,10 +60,6 @@
     $(LOCAL_PATH)/ueventd.flounder.rc:root/ueventd.flounder64.rc
 
 PRODUCT_COPY_FILES += \
-    $(LOCAL_PATH)/touch/touch_fusion.cfg:$(TARGET_COPY_OUT_VENDOR)/firmware/touch_fusion.cfg \
-    $(LOCAL_PATH)/touch/maxim_fp35.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/maxim_fp35.bin \
-    $(LOCAL_PATH)/touch/touch_fusion.idc:system/usr/idc/touch_fusion.idc \
-    $(LOCAL_PATH)/touch/touch_fusion:$(TARGET_COPY_OUT_VENDOR)/bin/touch_fusion \
     $(LOCAL_PATH)/touch/synaptics_dsx.idc:system/usr/idc/synaptics_dsx.idc
 
 # headset keylayout
@@ -81,6 +81,7 @@
     frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \
     frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \
     frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \
+    frameworks/native/data/etc/android.hardware.camera.full.xml:system/etc/permissions/android.hardware.camera.full.xml \
     frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
     frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
     frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
diff --git a/dumpstate/dumpstate.c b/dumpstate/dumpstate.c
index a3019ca..8e142fa 100644
--- a/dumpstate/dumpstate.c
+++ b/dumpstate/dumpstate.c
@@ -33,4 +33,6 @@
     dump_file("shrinkers", "/d/shrinker");
     dump_file("wlan", "/sys/module/bcmdhd/parameters/info_string");
     dump_file("display controller", "/d/tegradc.0/stats");
+    dump_file("sensor_hub version", "/sys/devices/virtual/htc_sensorhub/sensor_hub/firmware_version");
+    dump_file("audio nvavp", "/d/nvavp/refs");
 };
diff --git a/gps/qct/lib64/libloc_api_v02.so b/gps/qct/lib64/libloc_api_v02.so
index 7152529..853c600 100644
--- a/gps/qct/lib64/libloc_api_v02.so
+++ b/gps/qct/lib64/libloc_api_v02.so
Binary files differ
diff --git a/gps/qct/libloc_api_v02.so b/gps/qct/libloc_api_v02.so
index d7ceb09..c595413 100644
--- a/gps/qct/libloc_api_v02.so
+++ b/gps/qct/libloc_api_v02.so
Binary files differ
diff --git a/init.flounder.rc b/init.flounder.rc
index ba34fd5..da2101a 100644
--- a/init.flounder.rc
+++ b/init.flounder.rc
@@ -1,4 +1,5 @@
 import init.flounder.usb.rc
+import init.flounder_svelte.rc
 
 on init
     start watchdogd
@@ -165,6 +166,7 @@
 
 on property:ro.boot.baseband=ROW
     stop ril-daemon
+    setprop persist.radio.apm_sim_not_pwdn 1
     enable kickstart
     mkdir /dev/socket/qmux_radio 0770 radio radio
     chmod 2770 /dev/socket/qmux_radio
@@ -173,9 +175,11 @@
     enable netmgrd
     setprop rild.libpath /vendor/lib64/libril-qc-qmi-1.so
     setprop rild.libargs "-e wwan0"
+    setprop persist.radio.snapshot_enabled 1
 
 on property:ro.boot.baseband=US
     stop ril-daemon
+    setprop persist.radio.apm_sim_not_pwdn 1
     enable kickstart
     mkdir /dev/socket/qmux_radio 0770 radio radio
     chmod 2770 /dev/socket/qmux_radio
@@ -184,6 +188,7 @@
     enable netmgrd
     setprop rild.libpath /vendor/lib64/libril-qc-qmi-1.so
     setprop rild.libargs "-e wwan0"
+    setprop persist.radio.snapshot_enabled 1
 
 # bugreport is triggered by holding down volume down, volume up and power
 service bugreport /system/bin/dumpstate -d -p -B \
diff --git a/init.flounder_svelte.rc b/init.flounder_svelte.rc
new file mode 100644
index 0000000..704daf3
--- /dev/null
+++ b/init.flounder_svelte.rc
@@ -0,0 +1,18 @@
+on property:ro.boot.svelte=1
+   # Configure and enable KSM
+   write /sys/kernel/mm/ksm/pages_to_scan 100
+   write /sys/kernel/mm/ksm/sleep_millisecs 500
+   write /sys/kernel/mm/ksm/run 1
+
+   # Reduce screen resolution
+   setprop ro.config.density_override 144
+   setprop ro.config.size_override 768,1024
+
+   # Set CPU frequency for PowerHAL
+   setprop ro.config.svelte.max_cpu_freq 1190400
+   setprop ro.config.svelte.low_power_max_cpu_freq 1190400
+
+   # Cap GPU frequency, possible values:
+   # 72000 108000 180000 252000 324000 396000 468000 540000 612000 648000 684000 708000 756000 804000 852000 (kHz) 
+   write /d/clock/cap.gbus/state 1
+   write /d/clock/cap.gbus/max 648000000
diff --git a/lte_only_overlay/packages/apps/Settings/res/drawable/regulatory_info.png b/lte_only_overlay/packages/apps/Settings/res/drawable/regulatory_info.png
index 05a35d1..e282685 100755
--- a/lte_only_overlay/packages/apps/Settings/res/drawable/regulatory_info.png
+++ b/lte_only_overlay/packages/apps/Settings/res/drawable/regulatory_info.png
Binary files differ
diff --git a/nfc/libnfc-brcm-20795a10.conf b/nfc/libnfc-brcm-20795a10.conf
index b22ca69..3cac07b 100644
--- a/nfc/libnfc-brcm-20795a10.conf
+++ b/nfc/libnfc-brcm-20795a10.conf
@@ -25,13 +25,13 @@
 #  By default, LPTD is enabled and default settings are used.
 #                  00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23x24x25 26 27 28x29x30 31 32x33x34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79x80x81 82 83 84 85 86 87 88 89 90 91 92 93
 #LPTD_CFG={66:B9:64:01:00:FF:FF:40:00:8B:13:00:10:00:04:00:00:00:00:03:00:00:00:03:00:0C:00:04:00:00:00:00:03:00:00:00:03:00:0C:00:00:0D:00:00:00:00:00:00:00:00:00:00:33:23:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:03:00:02:53:3B:0F:00:00:00:00:00:00:00:00:00:00:00:00:04:00:00:00:0E:00:00:00}
-LPTD_CFG={66:B9:64:01:00:FF:FF:50:00:8B:13:00:10:00:22:00:00:00:00:03:00:00:00:03:00:0C:00:04:00:00:00:00:03:00:00:00:03:00:0C:00:00:0D:00:00:00:00:00:00:00:00:00:00:33:23:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:03:00:02:53:3B:0F:00:00:00:00:00:00:00:00:00:00:00:00:04:00:00:00:0E:00:00:00}
+LPTD_CFG={66:B9:64:01:00:FF:FF:50:00:8B:13:00:10:00:22:00:00:00:00:00:FF:00:00:00:FF:0C:00:04:00:00:00:00:03:00:00:00:03:00:0C:00:00:0D:00:00:00:00:00:00:00:00:00:00:33:23:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:03:00:02:53:3B:0F:00:00:00:00:00:00:00:00:00:00:00:00:04:00:00:00:0E:00:00:00}
 
 ###############################################################################
 # Startup Configuration (256 bytes maximum)
 #
 # This is applied at stack startup.
-NFA_DM_START_UP_CFG={AA:80:01:01:B0:05:01:03:03:03:08:B5:03:01:03:FF:C9:0D:24:00:00:00:01:00:BB:00:E4:00:0A:01:02:D6:0D:00:02:02:00:00:00:00:01:00:01:59:00:85:B2:02:A1:05:C8:1E:06:1F:00:0A:09:30:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:59:01:00:00:40:04:D7:01:07:DD:32:06:00:00:10:22:08:08:06:04:03:02:00:09:27:0A:72:20:00:74:20:00:00:00:01:85:00:00:32:1F:1D:1D:14:14:12:00:02:55:55:55:55:55:55:55:55:55:55:55:55:55:1D:CA:20:00:00:00:00:08:E8:03:00:00:90:01:00:00:FF:FF:00:00:00:00:00:00:00:00:00:00:00:20:14:01:00:00:00}
+NFA_DM_START_UP_CFG={AA:80:01:01:B0:05:01:03:03:03:08:B5:03:01:03:FF:C9:0D:24:00:00:00:01:00:BB:00:E4:00:0A:01:02:D6:0D:00:02:02:00:00:00:00:01:00:01:59:00:85:B2:02:A1:05:C8:1E:06:1F:00:0A:09:30:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:59:01:00:00:40:04:D7:01:07:DD:32:06:00:00:10:22:08:08:06:04:03:02:00:09:27:0A:6D:20:00:74:20:00:00:00:01:85:00:00:32:1F:1D:1D:14:14:12:00:02:55:55:55:55:55:55:55:55:55:55:55:55:55:1E:CA:20:00:00:00:00:08:E8:03:00:00:90:01:00:00:FF:FF:00:00:00:00:00:00:00:00:00:00:00:20:14:01:00:00:00}
 
 ###############################################################################
 # Pre-Discovery Startup Configuration (256 bytes maximum)
diff --git a/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc02/config.xml b/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc02/config.xml
new file mode 100644
index 0000000..d4791b9
--- /dev/null
+++ b/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc02/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds. -->
+<resources>
+    <!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
+    <bool name="config_show4GForLTE">true</bool>
+</resources>
+
diff --git a/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc10/config.xml b/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc10/config.xml
new file mode 100644
index 0000000..d4791b9
--- /dev/null
+++ b/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc10/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds. -->
+<resources>
+    <!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
+    <bool name="config_show4GForLTE">true</bool>
+</resources>
+
diff --git a/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc58/config.xml b/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc58/config.xml
new file mode 100644
index 0000000..d4791b9
--- /dev/null
+++ b/overlay/frameworks/base/packages/SystemUI/res/values-mcc234-mnc58/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds. -->
+<resources>
+    <!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
+    <bool name="config_show4GForLTE">true</bool>
+</resources>
+
diff --git a/overlay/frameworks/base/packages/SystemUI/res/values-mcc272-mnc02/config.xml b/overlay/frameworks/base/packages/SystemUI/res/values-mcc272-mnc02/config.xml
new file mode 100644
index 0000000..d4791b9
--- /dev/null
+++ b/overlay/frameworks/base/packages/SystemUI/res/values-mcc272-mnc02/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds. -->
+<resources>
+    <!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
+    <bool name="config_show4GForLTE">true</bool>
+</resources>
+
diff --git a/overlay/packages/apps/Nfc/res/values/provisioning.xml b/overlay/packages/apps/Nfc/res/values/provisioning.xml
new file mode 100644
index 0000000..921f72c
--- /dev/null
+++ b/overlay/packages/apps/Nfc/res/values/provisioning.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- NFC resources that may need to be customized
+     for different hardware or product builds. -->
+<resources>
+    <!-- Whether the device can receive NFC data in setup wizard -->
+    <bool name="enable_nfc_provisioning">true</bool>
+
+    <!-- The accepted mime-types when NFC is enabled in setup wizard.
+         Mime-types must be lower case, wildcards are *not* accepted. -->
+    <string-array name="provisioning_mime_types">
+       <item>application/vnd.com.google.android.nfcprovision</item>
+       <item>application/com.android.managedprovisioning</item>
+    </string-array>
+</resources>
diff --git a/overlay/packages/apps/Settings/res/drawable/regulatory_info.png b/overlay/packages/apps/Settings/res/drawable/regulatory_info.png
index 1d54cb1..22782b2 100755
--- a/overlay/packages/apps/Settings/res/drawable/regulatory_info.png
+++ b/overlay/packages/apps/Settings/res/drawable/regulatory_info.png
Binary files differ
diff --git a/power/power_flounder.c b/power/power_flounder.c
index c738a58..a0115fb 100644
--- a/power/power_flounder.c
+++ b/power/power_flounder.c
@@ -23,6 +23,7 @@
 #include <unistd.h>
 #include <stdlib.h>
 #include <stdbool.h>
+#include <cutils/properties.h>
 //#define LOG_NDEBUG 0
 
 #define LOG_TAG "FlounderPowerHAL"
@@ -35,11 +36,15 @@
 #define CPU_MAX_FREQ_PATH "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq"
 #define FACEDOWN_PATH "/sys/class/htc_sensorhub/sensor_hub/facedown_enabled"
 #define TOUCH_SYNA_INTERACTIVE_PATH "/sys/devices/platform/spi-tegra114.2/spi_master/spi2/spi2.0/input/input0/interactive"
+#define WAKE_GESTURE_PATH "/sys/devices/platform/spi-tegra114.2/spi_master/spi2/spi2.0/input/input0/wake_gesture"
 #define GPU_BOOST_PATH "/dev/constraint_gpu_freq"
 #define IO_IS_BUSY_PATH "/sys/devices/system/cpu/cpufreq/interactive/io_is_busy"
 #define LOW_POWER_MAX_FREQ "1020000"
 #define NORMAL_MAX_FREQ "2901000"
 #define GPU_FREQ_CONSTRAINT "852000 852000 -1 2000"
+#define SVELTE_PROP "ro.boot.svelte"
+#define SVELTE_MAX_FREQ_PROP "ro.config.svelte.max_cpu_freq"
+#define SVELTE_LOW_POWER_MAX_FREQ_PROP "ro.config.svelte.low_power_max_cpu_freq"
 
 struct flounder_power_module {
     struct power_module base;
@@ -50,6 +55,9 @@
 
 static bool low_power_mode = false;
 
+static char *max_cpu_freq = NORMAL_MAX_FREQ;
+static char *low_power_max_cpu_freq = LOW_POWER_MAX_FREQ;
+
 static void sysfs_write(const char *path, char *s)
 {
     char buf[80];
@@ -71,6 +79,18 @@
     close(fd);
 }
 
+static void calculate_max_cpu_freq() {
+    int32_t is_svelte = property_get_int32(SVELTE_PROP, 0);
+
+    if (is_svelte) {
+        char prop_buffer[PROPERTY_VALUE_MAX];
+        int len = property_get(SVELTE_MAX_FREQ_PROP, prop_buffer, LOW_POWER_MAX_FREQ);
+        max_cpu_freq = strndup(prop_buffer, len);
+        len = property_get(SVELTE_LOW_POWER_MAX_FREQ_PROP, prop_buffer, LOW_POWER_MAX_FREQ);
+        low_power_max_cpu_freq = strndup(prop_buffer, len);
+    }
+}
+
 static void power_init(struct power_module __unused *module)
 {
     sysfs_write("/sys/devices/system/cpu/cpufreq/interactive/timer_rate",
@@ -90,6 +110,8 @@
     sysfs_write("/sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration",
                 "1000000");
     sysfs_write("/sys/devices/system/cpu/cpufreq/interactive/io_is_busy", "0");
+
+    calculate_max_cpu_freq();
 }
 
 static void power_set_interactive(struct power_module __unused *module, int on)
@@ -100,7 +122,7 @@
      * Lower maximum frequency when screen is off.
      */
     sysfs_write(CPU_MAX_FREQ_PATH,
-                (!on || low_power_mode) ? LOW_POWER_MAX_FREQ : NORMAL_MAX_FREQ);
+                (!on || low_power_mode) ? low_power_max_cpu_freq : max_cpu_freq);
     sysfs_write(IO_IS_BUSY_PATH, on ? "1" : "0");
     sysfs_write(FACEDOWN_PATH, on ? "0" : "1");
     sysfs_write(TOUCH_SYNA_INTERACTIVE_PATH, on ? "1" : "0");
@@ -147,6 +169,22 @@
     return flounder->boostpulse_fd;
 }
 
+static void set_feature(struct power_module *module, feature_t feature, int state)
+{
+    struct flounder_power_module *flounder =
+            (struct flounder_power_module *) module;
+    switch (feature) {
+    case POWER_FEATURE_DOUBLE_TAP_TO_WAKE:
+        pthread_mutex_lock(&flounder->lock);
+        sysfs_write(WAKE_GESTURE_PATH, state ? "1" : "0");
+        pthread_mutex_unlock(&flounder->lock);
+        break;
+    default:
+        ALOGW("Error setting the feature, it doesn't exist %d\n", feature);
+        break;
+    }
+}
+
 static void flounder_power_hint(struct power_module *module, power_hint_t hint,
                                 void *data)
 {
@@ -174,9 +212,9 @@
     case POWER_HINT_LOW_POWER:
         pthread_mutex_lock(&flounder->lock);
         if (data) {
-            sysfs_write(CPU_MAX_FREQ_PATH, LOW_POWER_MAX_FREQ);
+            sysfs_write(CPU_MAX_FREQ_PATH, low_power_max_cpu_freq);
         } else {
-            sysfs_write(CPU_MAX_FREQ_PATH, NORMAL_MAX_FREQ);
+            sysfs_write(CPU_MAX_FREQ_PATH, max_cpu_freq);
         }
         low_power_mode = data;
         pthread_mutex_unlock(&flounder->lock);
@@ -206,6 +244,7 @@
         init: power_init,
         setInteractive: power_set_interactive,
         powerHint: flounder_power_hint,
+        setFeature: set_feature,
     },
 
     lock: PTHREAD_MUTEX_INITIALIZER,
diff --git a/product_svelte.mk b/product_svelte.mk
new file mode 100644
index 0000000..0b884e9
--- /dev/null
+++ b/product_svelte.mk
@@ -0,0 +1,41 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This file includes overrides to make a Hammerhead act like a low memory device
+# to test low memory situations
+#
+
+PRODUCT_RUNTIMES := runtime_libart_default
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+$(call inherit-product, device/htc/flounder/device.mk)
+
+PRODUCT_COPY_FILES += \
+	device/htc/flounder/init.flounder_svelte.rc:root/init.flounder_svelte.rc:google \
+
+# Copy flounder files as flounder64 so ${ro.hardware} can find them
+PRODUCT_COPY_FILES += \
+	device/htc/flounder/init.flounder_svelte.rc:root/init.flounder64_svelte.rc:google \
+
+#TODO: figure out if we need an overlay
+#DEVICE_PACKAGE_OVERLAYS := vendor/lge/hammerhead/svelte-overlay
+
+PRODUCT_PROPERTY_OVERRIDES += \
+	ro.config.low_ram=true \
+	ro.logd.size=64K \
+	ro.sf.lcd_density=144
+
+PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.jit.codecachesize=0
+
diff --git a/proprietary-blobs.txt b/proprietary-blobs.txt
new file mode 100644
index 0000000..7a3bb1e
--- /dev/null
+++ b/proprietary-blobs.txt
@@ -0,0 +1,17 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file is generated by device/common/generate-blob-lists.sh - DO NOT EDIT
+
+/IMAGES/vendor.img
diff --git a/self-extractors/Android.mk b/self-extractors/Android.mk
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/self-extractors/Android.mk
diff --git a/self-extractors/PART1 b/self-extractors/PART1
new file mode 100644
index 0000000..935267e
--- /dev/null
+++ b/self-extractors/PART1
@@ -0,0 +1,12 @@
+#
+# Usage is subject to the enclosed license agreement
+
+echo
+echo The license for this software will now be displayed.
+echo You must agree to this license before using this software.
+echo
+echo -n Press Enter to view the license
+read dummy
+echo
+
+more << __EOF__
diff --git a/self-extractors/PART2 b/self-extractors/PART2
new file mode 100644
index 0000000..30e8d43
--- /dev/null
+++ b/self-extractors/PART2
@@ -0,0 +1,22 @@
+__EOF__
+
+if test $? != 0
+then
+  echo ERROR: Couldn\'t display license file 1>&2
+  exit 1
+fi
+
+echo
+
+echo -n Type \"I ACCEPT\" if you agree to the terms of the license:\ 
+read typed
+
+if test "$typed" != I\ ACCEPT
+then
+  echo
+  echo You didn\'t accept the license. Extraction aborted.
+  exit 2
+fi
+
+echo
+
diff --git a/self-extractors/PART3 b/self-extractors/PART3
new file mode 100644
index 0000000..6847be5
--- /dev/null
+++ b/self-extractors/PART3
@@ -0,0 +1,12 @@
+
+if test $? != 0
+then
+  echo
+  echo ERROR: Couldn\'t extract files. 1>&2
+  exit 3
+else
+  echo
+  echo Files extracted successfully.
+fi
+exit 0
+
diff --git a/self-extractors/PROLOGUE b/self-extractors/PROLOGUE
new file mode 100644
index 0000000..c856ef1
--- /dev/null
+++ b/self-extractors/PROLOGUE
@@ -0,0 +1,2 @@
+#!/bin/bash
+#
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
new file mode 100644
index 0000000..45f42a8
--- /dev/null
+++ b/self-extractors/extract-lists.txt
@@ -0,0 +1,5 @@
+  htc)
+    TO_EXTRACT="\
+            IMAGES/vendor.img \
+            "
+    ;;
diff --git a/self-extractors/htc/COPYRIGHT b/self-extractors/htc/COPYRIGHT
new file mode 100644
index 0000000..59ab4c3
--- /dev/null
+++ b/self-extractors/htc/COPYRIGHT
@@ -0,0 +1 @@
+# (C) HTC Corporation
diff --git a/self-extractors/htc/LICENSE b/self-extractors/htc/LICENSE
new file mode 100644
index 0000000..6f5eba9
--- /dev/null
+++ b/self-extractors/htc/LICENSE
@@ -0,0 +1,264 @@
+THIS DEVELOPER SOFTWARE LICENSE AGREEMENT (THE "AGREEMENT") IS A LEGALLY
+BINDING AGREEMENT BETWEEN HTC Corporation ("LICENSOR") AND
+YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY
+TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
+AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS.
+IF YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION
+PROCESS AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE
+SOFTWARE OR DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS
+SUBJECT TO THE TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE
+SOFTWARE IS INSTALLED ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL
+ENTITY, THEN YOU REPRESENT AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND
+SUCH ENTITY TO THE TERMS AND CONDITIONS OF THIS AGREEMENT.
+
+   1.  Special Definitions
+
+      a.  The term "Android" means the open source mobile platform, software
+          stack, operating system, middleware, application programming
+          interfaces and mobile applications under the trade-name "Android"
+          distributed at Android.com.
+
+      b.  The term "Android Applications" means a software application or
+          open-source contribution developed by You, designed to operate with
+          Android that does not contain or incorporate any of the Software.
+
+      c.  The term "Authorized Android Enabled Device" means only the device
+          identified on the site from which You downloaded the Software.
+          The term "Software" means the Licensor's proprietary software and
+          libraries in object code form, designed for use on the Authorized
+          Android Enabled Device.
+
+      d.  The term "Authorized Android Enabled Device Software" means a
+          packaged build for Authorized Android Enabled Devices, consisting
+          of files suitable for installation on an Authorized Android Enabled
+          Device using a mechanism such as fastboot mode or recovery mode.
+
+   2.  License Grant
+
+      a.  Subject to the terms of this Agreement, Licensor hereby grants to
+          You, free of charge, a non-exclusive, non-sublicensable,
+          non-transferable, limited copyright license, during the term of
+          this Agreement, to download, install and use the Software
+          internally in machine-readable (i.e., object code) form and the
+          Documentation for non-commercial use on an Authorized Android
+          Enabled Device and non-commercial redistribution for academic
+          purposes only of a reasonable number of copies of the Authorized
+          Android Enabled Device Software (the "Limited Purpose"). You may
+          grant your end users the right to use the Software for
+          non-commercial purposes on an Authorized Android Enabled Device.
+          The license to the Software granted to You hereunder is solely for
+          the Limited Purpose set forth in this section, and the Software
+          shall not be used for any other purpose.
+
+   3.  Restrictions
+
+      a.  Retention of Rights. The entire right, title and interest in the
+          Software shall remain with Licensor and, unless specified in
+          writing hereunder, no rights are granted to any of the Software.
+          Except for the right to use the Software for the Limited Purpose,
+          the delivery of the Software to You does not convey to You any
+          intellectual property rights in the Software, including, but not
+          limited to any rights under any patent, trademark, copyright, or
+          trade secret. Neither the delivery of the Software to You nor any
+          terms set forth herein shall be construed to grant to You, either
+          expressly, by implication or by way of estoppel, any license under
+          any patents or other intellectual property rights covering or
+          relating to any other product or invention or any combination of
+          the Software with any other product. Any rights not expressly
+          granted to You herein are reserved by Licensor.
+
+      b.  No Commercialization or Distribution of the Software and
+          Documentation. Except as expressly provided in Section 2 of this
+          Agreement, You shall have no right to (i) copy, disclose,
+          distribute, publically perform, publically display, transfer,
+          alter, modify, translate, disassemble, decompile, reverse engineer,
+          or adapt the Software and Documentation, or any portion thereof, or
+          create any derivative works based thereon; (ii) rent, lease,
+          assign, sublicense, resell, disclose or otherwise transfer the
+          Software and Documentation in whole or in part to any third party
+          (iii) use the Software and Documentation except for the Limited
+          Purpose, (iv) remove or alter any of the copyright or proprietary
+          notices contained in any of the Software and Documentation. For the
+          purposes of clarity, nothing in this Agreement prohibits You from
+          making and distributing Android Applications under commercial or
+          non-commercial terms, provided that You shall not contain,
+          incorporate, and/or compile the Software or any of its derivative
+          works, in whole or in part, into Your Android Applications and/or
+          any software/devices created by You or by third parties acting on
+          Your behalf. You and any such third party shall comply with all of
+          the terms and conditions of this Agreement.
+
+      c.  No Reverse Engineering. Except for any portions of the Software
+          provided to You in source code format and except for any third
+          party code distributed with the Software that is licensed under
+          contrary terms, You will not reverse engineer, disassemble,
+          decompile, or translate the Software, or otherwise attempt to
+          derive the source code version of the Software, except if and to
+          the extent expressly permitted under any applicable law.
+
+      d.  Third Party Software. You agree that Android may contain third
+          party software. You agree that you may not distribute such third
+          party software for any purpose without appropriate licenses from
+          the applicable third party or parties.
+
+      e.  No Transfer or Assignment. You shall not assign any of its rights
+          or obligations under this Agreement. Any attempted assignment in
+          contravention of this Section shall be void.
+
+      f.  Licensor shall retain all title, ownership and Intellectual
+          Property Rights in and to the Software and any derivative thereof.
+          "Intellectual Property Rights" shall mean all patent, copyright,
+          trade secret, trademark and other proprietary and intellectual
+          property rights, including moral rights.
+
+      g.  Neither this Agreement, nor any act by Licensor or its Affiliates
+          persuant to this Agreement or relating to the Software (including,
+          without limitation, the provision by Licensor or its Affiliates of
+          the Software) shall provide to You any license or any other rights
+          whatsoever under any patents, trademarks, trade secrets, copyrights
+          or any other intellectual property rights of Licensor or its
+          Affiliates, except for the copyrights expressly set forth in this
+          Agreement. You understand and agree that:
+
+      h.  Neither this Agreement, nor delivery of the Software alone or in
+          combination with any Licensor ASIC grants you any right to
+          practice, or any other right at all with respect to, any patent of
+          Licensor or its Affiliates, and
+
+      i.  A separating license agreement from Motorola Incorporated is needed
+          to use or practice any patent of Licensor or its Affiliates.
+
+      j.  You agree not to contend in any context that, as a result of the
+          provision or use of this software, either Licensor or Affiliate has
+          any obligation to extend, or Licensor or any other party has
+          obtained any right to, any license, whether express or implied,
+          with respect to any patent of Licensor or its Affiliates for any
+          purpose. For the purposes of this agreement, "Affiliate" means
+          (i) any corporation or any other legal entity that owns, directly
+          or indirectly, more than fifty percent (50%) of the shares, equity
+          interest or other securities of any entity entitled to vote for
+          election of directors (or other managing authority), or (ii) any
+          corporation or any other legal entity fifty percent (50%) or more
+          of whose shares, equity interest, or other securities entitled to
+          vote for election of directors (or other managing authority) is
+          owned or controlled by an entity, either directly or indirectly.
+
+   4.  Indemnity
+
+      a.  You agree to indemnify and hold harmless Licensor, Google, and
+          their officers, directors, customers, employees and successors and
+          assigns (each an "Indemnified Party") against any and all claims,
+          demands, causes of action, losses, liabilities, damages, costs and
+          expenses, incurred by the Indemnified Party (including but not
+          limited to costs of defense, investigation and reasonable
+          attorney's fees) arising out of, resulting from or related to
+          (i) any software, products, documentation, content, materials or
+          derivative works created or developed by You using the Software
+          which causes an infringement of any patent, copyright, trademark,
+          trade secret, or other property, publicity or privacy rights of any
+          third parties arising in any jurisdiction anywhere in the world,
+          (ii) the download, distribution, installation, storage, execution,
+          use or transfer of such software, products, documentation, content,
+          materials or derivative works by any person or entity, and/or
+          (iii) any breach of this Agreement by You. If requested by an
+          Indemnified Party, You agree to defend such Indemnified Party in
+          connection with any third party claims, demands, or causes of
+          action resulting from, arising out of or in connection with any of
+          the foregoing.
+
+   5.  Limitation of Liability
+
+      a.  TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO
+          CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL
+          LICENSOR, GOOGLE, THEIR AFFILIATES AND/OR ITS DIRECTORS, OFFICERS,
+          EMPLOYEES OR AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL,
+          SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT
+          LIMITED TO DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
+          INTERRUPTION, LOSS OF BUSINESS INFORMATION AND THE LIKE) ARISING
+          OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ANY DOWNLOAD,
+          INSTALLATION OR USE OF, OR INABILITY TO USE, THE SOFTWARE, EVEN IF
+          LICENSOR OR GOOGLE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
+          DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR
+          EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO
+          THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE LIMITED.
+          IN NO EVENT SHALL LICENSOR'S OR GOOGLE'S TOTAL AGGREGATE LIABILITY
+          TO YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF
+          ACTIONS (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE,
+          INDEMNIFICATION OR OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS
+          (US$100). THE LIMITATIONS SET FORTH IN THIS PARAGRAPH SHALL BE
+          DEEMED TO APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW.
+          THE PARTIES HAVE FULLY CONSIDERED THE FOREGOING ALLOCATION OF RISK
+          AND FIND IT REASONABLE, AND THAT THE FOREGOING LIMITATIONS IN THIS
+          PARAGRAPH ARE AN ESSENTIAL BASIS OF THE BARGAIN BETWEEN THE
+          PARTIES.
+
+   6.  No Warranty
+
+      a.  LICENSOR AND GOOGLE MAKE NO WARRANTIES, EXPRESS OR IMPLIED, WITH
+          RESPECT TO THE SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS
+          AGREEMENT, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF
+          MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR AGAINST
+          INFRINGEMENT, OR ANY EXPRESS OR IMPLIED WARRANTY ARISING OUT OF
+          TRADE USAGE OR OUT OF A COURSE OF DEALING OR COURSE OF PERFORMANCE.
+          NOTHING CONTAINED IN THIS AGREEMENT SHALL BE CONSTRUED AS A
+          WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE VALIDITY OR
+          SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT
+          AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM INFRINGEMENT
+          OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY RIGHTS OF
+          OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO MAKE SUCH
+          DETERMINATION AS IS NECESSARY WITH RESPECT TO THE ACQUISITION OF
+          LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY OF THIRD
+          PARTIES. LICENSOR AND GOOGLE SHALL NOT HAVE ANY OBLIGATION TO
+          PROVIDE ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
+
+   7.  Term and Termination
+
+      a.  This Agreement shall be effective on the date You accept this
+          Agreement and shall remain in effect until terminated as provided
+          herein. You may terminate the Agreement at any time by deleting and
+          destroying all copies of the Software and all related information
+          in Your possession or control. This Agreement terminates
+          immediately and automatically, with or without notice, if You fail
+          to comply with any provision hereof. Additionally, Licensor may at
+          any time terminate this Agreement, without cause, upon notice to
+          You. Upon termination You must delete or destroy all copies of the
+          Software in Your possession, and the license granted to You in this
+          Agreement shall terminate. Sections 3, 4, 5, 6 and 8 shall survive
+          the termination of this Agreement.
+
+   8.  Miscellaneous
+
+      a.  Governing Law. This Agreement is governed and interpreted in
+          accordance with the laws of the State of California without giving
+          effect to its conflict of laws provisions. The United Nations
+          Convention on Contracts for the International Sale of Goods is
+          expressly disclaimed and shall not apply. Any claim arising out of
+          or related to this Agreement must be brought exclusively in a
+          federal or state court located in Santa Clara County, California
+          and You consent to the jurisdiction and venue of such courts.
+
+      b.  Waiver and Severability. The failure of either party to require
+          performance by the other party of any provision of this Agreement
+          shall not affect the full right to require such performance at any
+          time thereafter; nor shall the waiver by either party of a breach
+          of any provision of this Agreement be taken or held to be a waiver
+          of the provision itself. Severability. If any provision of this
+          Agreement is unenforceable or invalid under any applicable law or
+          is so held by applicable court decision, such unenforceability or
+          invalidity shall not render this Agreement unenforceable or invalid
+          as a whole, and such provision shall be changed and interpreted so
+          as to best accomplish the objectives of such unenforceable or
+          invalid provision within the limits of applicable law or
+          applicable court decisions.
+
+      c.  Amendment and Modification. This Agreement and any of its terms and
+          provisions may only be amended, modified, supplemented or waived in
+          a writing signed by both parties hereto.
+
+      d.  Compliance with Laws. You shall comply with all applicable laws,
+          rules, and regulations in connection with its activities under this
+          Agreement.
+
+      e.  Entire Agreement. This Agreement completely and exclusively states
+          the agreement between You and Licensor regarding this subject
+          matter.
diff --git a/self-extractors/htc/staging/BoardConfigPartial.mk b/self-extractors/htc/staging/BoardConfigPartial.mk
new file mode 100644
index 0000000..cbb9830
--- /dev/null
+++ b/self-extractors/htc/staging/BoardConfigPartial.mk
@@ -0,0 +1,13 @@
+# Copyright 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
diff --git a/self-extractors/htc/staging/device-partial.mk b/self-extractors/htc/staging/device-partial.mk
new file mode 100644
index 0000000..5152cfc
--- /dev/null
+++ b/self-extractors/htc/staging/device-partial.mk
@@ -0,0 +1,18 @@
+# Copyright 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Vendor blob(s) necessary for Flounder hardware
+PRODUCT_COPY_FILES := \
+    vendor/htc/flounder/proprietary/vendor.img:vendor.img:htc \
+
diff --git a/self-extractors/root/BoardConfigVendor.mk b/self-extractors/root/BoardConfigVendor.mk
new file mode 100644
index 0000000..b9a59d9
--- /dev/null
+++ b/self-extractors/root/BoardConfigVendor.mk
@@ -0,0 +1,17 @@
+# Copyright 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_STEM := flounder/BoardConfigPartial.mk
+
+-include vendor/htc/$(LOCAL_STEM)
diff --git a/self-extractors/root/device-vendor.mk b/self-extractors/root/device-vendor.mk
new file mode 100644
index 0000000..0fcad9c
--- /dev/null
+++ b/self-extractors/root/device-vendor.mk
@@ -0,0 +1,17 @@
+# Copyright 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_STEM := flounder/device-partial.mk
+
+$(call inherit-product-if-exists, vendor/htc/$(LOCAL_STEM))
diff --git a/sensor_hub/libsensors/CwMcuSensor.cpp b/sensor_hub/libsensors/CwMcuSensor.cpp
index ee12179..c874f8a 100644
--- a/sensor_hub/libsensors/CwMcuSensor.cpp
+++ b/sensor_hub/libsensors/CwMcuSensor.cpp
@@ -1050,7 +1050,7 @@
 }
 
 int CwMcuSensor::readEvents(sensors_event_t* data, int count) {
-    int64_t mtimestamp = getTimestamp();
+    uint64_t mtimestamp;
 
     if (count < 1) {
         return -EINVAL;
@@ -1087,6 +1087,8 @@
 
             if (event_mcu_time < last_mcu_timestamp[id]) {
                 ALOGE("Do syncronization due to wrong delta mcu_timestamp\n");
+                ALOGE("curr_ts = %" PRIu64 " ns, last_ts = %" PRIu64 " ns",
+                    event_mcu_time, last_mcu_timestamp[id]);
                 sync_time_thread_in_class();
             }
 
@@ -1101,12 +1103,11 @@
                 int64_t event_cpu_diff = event_mcu_diff * time_slope;
                 event_cpu_time = last_cpu_timestamp[id] + event_cpu_diff;
             }
-            last_mcu_timestamp[id] = event_mcu_time;
-            last_cpu_timestamp[id] = event_cpu_time;
             pthread_mutex_unlock(&sync_timestamp_algo_mutex);
 
             pthread_mutex_lock(&last_timestamp_mutex);
 
+            mtimestamp = getTimestamp();
             ALOGV("readEvents: id = %d, accuracy = %d\n"
                   , id
                   , mPendingEvents[id].acceleration.status);
@@ -1118,9 +1119,11 @@
                   id,
                   event_mcu_time / NS_PER_MS,
                   event_cpu_time,
-                  (event_cpu_time - last_timestamp[id]) / NS_PER_US,
-                  getTimestamp());
-            last_timestamp[id] = event_cpu_time;
+                  (event_cpu_time - last_cpu_timestamp[id]) / NS_PER_US,
+                  mtimestamp);
+            event_cpu_time = (mtimestamp > event_cpu_time) ? event_cpu_time : mtimestamp;
+            last_mcu_timestamp[id] = event_mcu_time;
+            last_cpu_timestamp[id] = event_cpu_time;
             pthread_mutex_unlock(&last_timestamp_mutex);
             /*** The algorithm which parsed mcu_time into cpu_time for each event ***/
 
diff --git a/sensor_hub/libsensors/CwMcuSensor.h b/sensor_hub/libsensors/CwMcuSensor.h
index 5d1ea14..8ebae8c 100644
--- a/sensor_hub/libsensors/CwMcuSensor.h
+++ b/sensor_hub/libsensors/CwMcuSensor.h
@@ -106,7 +106,6 @@
         bool offset_reset[numSensors];
         uint64_t last_mcu_timestamp[numSensors];
         uint64_t last_cpu_timestamp[numSensors];
-        uint64_t last_timestamp[numSensors];
         pthread_t sync_time_thread;
 
         bool init_trigger_done;
diff --git a/touch/maxim_fp35.bin b/touch/maxim_fp35.bin
deleted file mode 100644
index 0194801..0000000
--- a/touch/maxim_fp35.bin
+++ /dev/null
Binary files differ
diff --git a/touch/touch_fusion b/touch/touch_fusion
deleted file mode 100755
index cd92451..0000000
--- a/touch/touch_fusion
+++ /dev/null
Binary files differ
diff --git a/touch/touch_fusion.cfg b/touch/touch_fusion.cfg
deleted file mode 100644
index 4648518..0000000
--- a/touch/touch_fusion.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-[chip]
-type=fp35
diff --git a/touch/touch_fusion.idc b/touch/touch_fusion.idc
deleted file mode 100644
index 97ef515..0000000
--- a/touch/touch_fusion.idc
+++ /dev/null
@@ -1,2 +0,0 @@
-touch.deviceType = touchScreen
-touch.orientationAware = 1
diff --git a/ueventd.flounder.rc b/ueventd.flounder.rc
index c2cb4d9..7a00ac2 100644
--- a/ueventd.flounder.rc
+++ b/ueventd.flounder.rc
@@ -82,7 +82,7 @@
 /sys/devices/virtual/htc_sensorhub/sensor_hub  enable                    0660 system system
 /sys/devices/virtual/htc_sensorhub/sensor_hub  batch_enable              0660 system system
 /sys/devices/virtual/htc_sensorhub/sensor_hub  flush                     0660 system system
-/sys/devices/virtual/htc_sensorhub/sensor_hub  firmware_version          0660 system system
+/sys/devices/virtual/htc_sensorhub/sensor_hub  firmware_version          0664 system system
 /sys/devices/virtual/htc_sensorhub/sensor_hub  hall_sensor               0660 system system
 /sys/devices/virtual/htc_sensorhub/sensor_hub  sensor_hub_rdata          0660 system system
 /sys/devices/virtual/htc_sensorhub/sensor_hub  facedown_enabled          0660 system system
diff --git a/vendor_owner_info.txt b/vendor_owner_info.txt
new file mode 100644
index 0000000..2e133b4
--- /dev/null
+++ b/vendor_owner_info.txt
@@ -0,0 +1 @@
+IMAGES/vendor.img:htc
diff --git a/vendorsetup.sh b/vendorsetup.sh
new file mode 100644
index 0000000..a73d1df
--- /dev/null
+++ b/vendorsetup.sh
@@ -0,0 +1,17 @@
+#
+# Copyright 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+add_lunch_combo aosp_flounder-userdebug
