Merge change 23023 into eclair

* changes:
  Armor string format tokens with translation placeholders.
diff --git a/api/current.xml b/api/current.xml
index b5617c2..403a961 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -1663,7 +1663,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843406"
+ value="16843407"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -2664,7 +2664,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843407"
+ value="16843408"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -4200,6 +4200,17 @@
  visibility="public"
 >
 </field>
+<field name="includeInGlobalSearch"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843374"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="indeterminate"
  type="int"
  transient="false"
@@ -6268,6 +6279,17 @@
  visibility="public"
 >
 </field>
+<field name="queryAfterZeroResults"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843394"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="radioButtonStyle"
  type="int"
  transient="false"
@@ -6422,6 +6444,17 @@
  visibility="public"
 >
 </field>
+<field name="required"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843406"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="resizeable"
  type="int"
  transient="false"
@@ -6763,6 +6796,17 @@
  visibility="public"
 >
 </field>
+<field name="searchSettingsDescription"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843402"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="searchSuggestAuthority"
  type="int"
  transient="false"
@@ -6818,6 +6862,17 @@
  visibility="public"
 >
 </field>
+<field name="searchSuggestThreshold"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843373"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="secondaryProgress"
  type="int"
  transient="false"
@@ -7449,7 +7504,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843414"
+ value="16843415"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8362,7 +8417,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843408"
+ value="16843409"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8538,7 +8593,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843412"
+ value="16843413"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8549,7 +8604,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843413"
+ value="16843414"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8560,7 +8615,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843410"
+ value="16843411"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8571,7 +8626,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843411"
+ value="16843412"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8780,7 +8835,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843409"
+ value="16843410"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -23440,6 +23495,17 @@
  visibility="public"
 >
 </field>
+<field name="INTENT_ACTION_WEB_SEARCH_SETTINGS"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.search.action.WEB_SEARCH_SETTINGS&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="MENU_KEY"
  type="char"
  transient="false"
@@ -23473,6 +23539,17 @@
  visibility="public"
 >
 </field>
+<field name="SHORTCUT_MIME_TYPE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;vnd.android.cursor.item/vnd.android.search.suggest&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SUGGEST_COLUMN_FORMAT"
  type="java.lang.String"
  transient="false"
@@ -23561,6 +23638,28 @@
  visibility="public"
 >
 </field>
+<field name="SUGGEST_COLUMN_SHORTCUT_ID"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;suggest_shortcut_id&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;suggest_spinner_while_refreshing&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SUGGEST_COLUMN_TEXT_1"
  type="java.lang.String"
  transient="false"
@@ -23594,6 +23693,17 @@
  visibility="public"
 >
 </field>
+<field name="SUGGEST_NEVER_MAKE_SHORTCUT"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;_-1&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SUGGEST_URI_PATH_QUERY"
  type="java.lang.String"
  transient="false"
@@ -23605,6 +23715,17 @@
  visibility="public"
 >
 </field>
+<field name="SUGGEST_URI_PATH_SHORTCUT"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;search_suggest_shortcut&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="USER_QUERY"
  type="java.lang.String"
  transient="false"
@@ -37578,6 +37699,134 @@
 >
 </field>
 </class>
+<class name="FeatureInfo"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<constructor name="FeatureInfo"
+ type="android.content.pm.FeatureInfo"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<constructor name="FeatureInfo"
+ type="android.content.pm.FeatureInfo"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="orig" type="android.content.pm.FeatureInfo">
+</parameter>
+</constructor>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGlEsVersion"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="dest" type="android.os.Parcel">
+</parameter>
+<parameter name="parcelableFlags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FLAG_REQUIRED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ES_VERSION_UNDEFINED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="flags"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="name"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="reqGlEsVersion"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
 <class name="InstrumentationInfo"
  extends="android.content.pm.PackageItemInfo"
  abstract="false"
@@ -37839,6 +38088,17 @@
  visibility="public"
 >
 </field>
+<field name="reqFeatures"
+ type="android.content.pm.FeatureInfo[]"
+ transient="false"
+ volatile="false"
+ value="null"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="requestedPermissions"
  type="java.lang.String[]"
  transient="false"
@@ -38708,6 +38968,17 @@
 <exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException">
 </exception>
 </method>
+<method name="getSystemAvailableFeatures"
+ return="android.content.pm.FeatureInfo[]"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getSystemSharedLibraryNames"
  return="java.lang.String[]"
  abstract="true"
@@ -47774,6 +48045,19 @@
  visibility="public"
 >
 </method>
+<method name="yieldIfContendedSafely"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="sleepAfterYieldDelay" type="long">
+</parameter>
+</method>
 <field name="CREATE_IF_NECESSARY"
  type="int"
  transient="false"
@@ -122919,6 +123203,17 @@
 <exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException">
 </exception>
 </method>
+<method name="getSystemAvailableFeatures"
+ return="android.content.pm.FeatureInfo[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getSystemSharedLibraryNames"
  return="java.lang.String[]"
  abstract="false"
diff --git a/cmds/stagefright/Android.mk b/cmds/stagefright/Android.mk
index 697d67a..ef67611 100644
--- a/cmds/stagefright/Android.mk
+++ b/cmds/stagefright/Android.mk
@@ -38,23 +38,3 @@
 LOCAL_MODULE:= record
 
 include $(BUILD_EXECUTABLE)
-
-################################################################################
-
-# include $(CLEAR_VARS)
-# 
-# LOCAL_SRC_FILES:=         \
-#         play.cpp
-# 
-# LOCAL_SHARED_LIBRARIES := \
-# 	libstagefright
-# 
-# LOCAL_C_INCLUDES:= \
-# 	frameworks/base/media/libstagefright \
-# 	$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include
-# 
-# LOCAL_CFLAGS += -Wno-multichar
-# 
-# LOCAL_MODULE:= play
-# 
-# include $(BUILD_EXECUTABLE)
diff --git a/cmds/stagefright/play.cpp b/cmds/stagefright/play.cpp
deleted file mode 100644
index c6e778e..0000000
--- a/cmds/stagefright/play.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <binder/ProcessState.h>
-#include <media/stagefright/OMXClient.h>
-#include <media/stagefright/TimedEventQueue.h>
-#include <media/stagefright/MPEG4Extractor.h>
-#include <media/stagefright/MediaSource.h>
-#include <media/stagefright/MetaData.h>
-#include <media/stagefright/MmapSource.h>
-#include <media/stagefright/OMXDecoder.h>
-
-using namespace android;
-
-struct NewPlayer {
-    NewPlayer();
-    ~NewPlayer();
-
-    void setSource(const char *uri);
-    void start();
-    void pause();
-    void stop();
-
-private:
-    struct PlayerEvent : public TimedEventQueue::Event {
-        PlayerEvent(NewPlayer *player,
-                    void (NewPlayer::*method)(int64_t realtime_us))
-            : mPlayer(player),
-              mMethod(method) {
-        }
-
-        virtual void fire(TimedEventQueue *queue, int64_t realtime_us) {
-            (mPlayer->*mMethod)(realtime_us);
-        }
-
-    private:
-        NewPlayer *mPlayer;
-        void (NewPlayer::*mMethod)(int64_t realtime_us);
-
-        PlayerEvent(const PlayerEvent &);
-        PlayerEvent &operator=(const PlayerEvent &);
-    };
-
-    struct PlayVideoFrameEvent : public TimedEventQueue::Event {
-        PlayVideoFrameEvent(NewPlayer *player, MediaBuffer *buffer)
-            : mPlayer(player),
-              mBuffer(buffer) {
-        }
-
-        virtual ~PlayVideoFrameEvent() {
-            if (mBuffer != NULL) {
-                mBuffer->release();
-                mBuffer = NULL;
-            }
-        }
-
-        virtual void fire(TimedEventQueue *queue, int64_t realtime_us) {
-            mPlayer->onPlayVideoFrame(realtime_us, mBuffer);
-            mBuffer = NULL;
-        }
-
-    private:
-        NewPlayer *mPlayer;
-        MediaBuffer *mBuffer;
-
-        PlayVideoFrameEvent(const PlayVideoFrameEvent &);
-        PlayVideoFrameEvent &operator=(const PlayVideoFrameEvent &);
-    };
-
-    OMXClient mClient;
-
-    MPEG4Extractor *mExtractor;
-    MediaSource *mAudioSource;
-    OMXDecoder *mAudioDecoder;
-    MediaSource *mVideoSource;
-    OMXDecoder *mVideoDecoder;
-
-    int32_t mVideoWidth, mVideoHeight;
-
-    TimedEventQueue mQueue;
-    wp<TimedEventQueue::Event> mPlayVideoFrameEvent;
-
-    int64_t mMediaTimeUsStart;
-    int64_t mRealTimeUsStart;
-
-    void setAudioSource(MediaSource *source);
-    void setVideoSource(MediaSource *source);
-
-    int64_t approxRealTime(int64_t mediatime_us) const;
-
-    void onStart(int64_t realtime_us);
-    void onPause(int64_t realtime_us);
-    void onFetchVideoFrame(int64_t realtime_us);
-    void onPlayVideoFrame(int64_t realtime_us, MediaBuffer *buffer);
-
-    static int64_t getMediaBufferTimeUs(MediaBuffer *buffer);
-
-    NewPlayer(const NewPlayer &);
-    NewPlayer &operator=(const NewPlayer &);
-};
-
-NewPlayer::NewPlayer()
-    : mExtractor(NULL),
-      mAudioSource(NULL),
-      mAudioDecoder(NULL),
-      mVideoSource(NULL),
-      mVideoDecoder(NULL),
-      mVideoWidth(0),
-      mVideoHeight(0) {
-    status_t err = mClient.connect();
-    assert(err == OK);
-}
-
-NewPlayer::~NewPlayer() {
-    stop();
-
-    mClient.disconnect();
-}
-
-void NewPlayer::setSource(const char *uri) {
-    stop();
-
-    mExtractor = new MPEG4Extractor(new MmapSource(uri));
-
-    int num_tracks;
-    status_t err = mExtractor->countTracks(&num_tracks);
-    assert(err == OK);
-
-    for (int i = 0; i < num_tracks; ++i) {
-        const sp<MetaData> meta = mExtractor->getTrackMetaData(i);
-        assert(meta != NULL);
-
-        const char *mime;
-        if (!meta->findCString(kKeyMIMEType, &mime)) {
-            continue;
-        }
-
-        bool is_audio = false;
-        bool is_acceptable = false;
-        if (!strncasecmp(mime, "audio/", 6)) {
-            is_audio = true;
-            is_acceptable = (mAudioSource == NULL);
-        } else if (!strncasecmp(mime, "video/", 6)) {
-            is_acceptable = (mVideoSource == NULL);
-        }
-
-        if (!is_acceptable) {
-            continue;
-        }
-
-        MediaSource *source;
-        if (mExtractor->getTrack(i, &source) != OK) {
-            continue;
-        }
-
-        if (is_audio) {
-            setAudioSource(source);
-        } else {
-            setVideoSource(source);
-        }
-    }
-}
-
-void NewPlayer::setAudioSource(MediaSource *source) {
-    mAudioSource = source;
-
-    sp<MetaData> meta = source->getFormat();
-
-    mAudioDecoder = OMXDecoder::Create(&mClient, meta);
-    mAudioDecoder->setSource(source);
-}
-
-void NewPlayer::setVideoSource(MediaSource *source) {
-    mVideoSource = source;
-
-    sp<MetaData> meta = source->getFormat();
-
-    bool success = meta->findInt32(kKeyWidth, &mVideoWidth);
-    assert(success);
-
-    success = meta->findInt32(kKeyHeight, &mVideoHeight);
-    assert(success);
-
-    mVideoDecoder = OMXDecoder::Create(&mClient, meta);
-    mVideoDecoder->setSource(source);
-}
-
-void NewPlayer::start() {
-    mQueue.start();
-    mQueue.postEvent(new PlayerEvent(this, &NewPlayer::onStart));
-}
-
-void NewPlayer::pause() {
-    mQueue.postEvent(new PlayerEvent(this, &NewPlayer::onPause));
-}
-
-void NewPlayer::stop() {
-    mQueue.stop();
-
-    delete mVideoDecoder;
-    mVideoDecoder = NULL;
-    delete mVideoSource;
-    mVideoSource = NULL;
-    mVideoWidth = mVideoHeight = 0;
-
-    delete mAudioDecoder;
-    mAudioDecoder = NULL;
-    delete mAudioSource;
-    mAudioSource = NULL;
-
-    delete mExtractor;
-    mExtractor = NULL;
-}
-
-int64_t NewPlayer::approxRealTime(int64_t mediatime_us) const {
-    return mRealTimeUsStart + (mediatime_us - mMediaTimeUsStart);
-}
-
-void NewPlayer::onStart(int64_t realtime_us) {
-    mRealTimeUsStart = TimedEventQueue::getRealTimeUs();
-
-    if (mVideoDecoder != NULL) {
-        mQueue.postEvent(new PlayerEvent(this, &NewPlayer::onFetchVideoFrame));
-    }
-}
-
-void NewPlayer::onFetchVideoFrame(int64_t realtime_us) {
-    MediaBuffer *buffer;
-    status_t err = mVideoDecoder->read(&buffer);
-    assert(err == OK);
-
-    int64_t mediatime_us = getMediaBufferTimeUs(buffer);
-
-    sp<TimedEventQueue::Event> event = new PlayVideoFrameEvent(this, buffer);
-    mPlayVideoFrameEvent = event;
-
-    mQueue.postTimedEvent(event, approxRealTime(mediatime_us));
-}
-
-// static
-int64_t NewPlayer::getMediaBufferTimeUs(MediaBuffer *buffer) {
-    int32_t units, scale;
-    bool success =
-        buffer->meta_data()->findInt32(kKeyTimeUnits, &units);
-    assert(success);
-    success =
-        buffer->meta_data()->findInt32(kKeyTimeScale, &scale);
-    assert(success);
-
-    return (int64_t)units * 1000000 / scale;
-}
-
-void NewPlayer::onPlayVideoFrame(int64_t realtime_us, MediaBuffer *buffer) {
-    LOGI("playing video frame (mediatime: %.2f sec)\n",
-         getMediaBufferTimeUs(buffer) / 1E6);
-    fflush(stdout);
-
-    buffer->release();
-    buffer = NULL;
-
-    mQueue.postEvent(new PlayerEvent(this, &NewPlayer::onFetchVideoFrame));
-}
-
-void NewPlayer::onPause(int64_t realtime_us) {
-}
-
-int main(int argc, char **argv) {
-    android::ProcessState::self()->startThreadPool();
-
-    if (argc != 2) {
-        fprintf(stderr, "usage: %s filename\n", argv[0]);
-        return 1;
-    }
-
-    NewPlayer player;
-    player.setSource(argv[1]);
-    player.start();
-    sleep(10);
-    player.stop();
-
-    return 0;
-}
diff --git a/cmds/stagefright/record.cpp b/cmds/stagefright/record.cpp
index cf2962b..9a2416b 100644
--- a/cmds/stagefright/record.cpp
+++ b/cmds/stagefright/record.cpp
@@ -26,7 +26,6 @@
 #include <media/stagefright/MmapSource.h>
 #include <media/stagefright/OMXClient.h>
 #include <media/stagefright/OMXCodec.h>
-#include <media/stagefright/OMXDecoder.h>
 
 using namespace android;
 
@@ -87,8 +86,6 @@
     DummySource &operator=(const DummySource &);
 };
 
-#define USE_OMX_CODEC   1
-
 sp<MediaSource> createSource(const char *filename) {
     sp<MediaSource> source;
 
@@ -140,13 +137,8 @@
 
     sp<MetaData> meta = source->getFormat();
 
-#if USE_OMX_CODEC
     sp<OMXCodec> decoder = OMXCodec::Create(
             client.interface(), meta, false /* createEncoder */, source);
-#else
-    sp<OMXDecoder> decoder = OMXDecoder::Create(
-            &client, meta, false /* createEncoder */, source);
-#endif
 
     int width, height;
     bool success = meta->findInt32(kKeyWidth, &width);
@@ -164,14 +156,9 @@
     enc_meta->setInt32(kKeyWidth, width);
     enc_meta->setInt32(kKeyHeight, height);
 
-#if USE_OMX_CODEC
     sp<OMXCodec> encoder =
         OMXCodec::Create(
                 client.interface(), enc_meta, true /* createEncoder */, decoder);
-#else
-    sp<OMXDecoder> encoder = OMXDecoder::Create(
-            &client, enc_meta, true /* createEncoder */, decoder);
-#endif
 
 #if 1
     sp<MPEG4Writer> writer = new MPEG4Writer("/sdcard/output.mp4");
diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp
index e927aae..54c6a0c 100644
--- a/cmds/stagefright/stagefright.cpp
+++ b/cmds/stagefright/stagefright.cpp
@@ -33,7 +33,6 @@
 #include <media/stagefright/MmapSource.h>
 #include <media/stagefright/OMXClient.h>
 #include <media/stagefright/OMXCodec.h>
-#include <media/stagefright/OMXDecoder.h>
 
 #include "JPEGSource.h"
 
@@ -50,18 +49,11 @@
     return (int64_t)tv.tv_usec + tv.tv_sec * 1000000;
 }
 
-#define USE_OMX_CODEC   1
-
 static void playSource(OMXClient *client, const sp<MediaSource> &source) {
     sp<MetaData> meta = source->getFormat();
 
-#if !USE_OMX_CODEC
-    sp<OMXDecoder> decoder = OMXDecoder::Create(
-            client, meta, false /* createEncoder */, source);
-#else
     sp<OMXCodec> decoder = OMXCodec::Create(
             client->interface(), meta, false /* createEncoder */, source);
-#endif
 
     if (decoder == NULL) {
         return;
@@ -104,7 +96,7 @@
 
             if (gReproduceBug == 1 && numFrames == 40) {
                 printf("seeking past the end now.");
-                options.setSeekTo(LONG_MAX);
+                options.setSeekTo(0x7fffffffL);
             }
         }
 
diff --git a/core/java/android/accounts/AccountAuthenticatorCache.java b/core/java/android/accounts/AccountAuthenticatorCache.java
index 2f52f40..82cadd5 100644
--- a/core/java/android/accounts/AccountAuthenticatorCache.java
+++ b/core/java/android/accounts/AccountAuthenticatorCache.java
@@ -21,6 +21,7 @@
 import android.content.res.TypedArray;
 import android.content.Context;
 import android.util.AttributeSet;
+import android.text.TextUtils;
 
 /**
  * A cache of services that export the {@link IAccountAuthenticator} interface. This cache
@@ -48,6 +49,9 @@
                     com.android.internal.R.styleable.AccountAuthenticator_label, 0);
             final int iconId = sa.getResourceId(
                     com.android.internal.R.styleable.AccountAuthenticator_icon, 0);
+            if (TextUtils.isEmpty(accountType)) {
+                return null;
+            }
             return new AuthenticatorDescription(accountType, packageName, labelId, iconId);
         } finally {
             sa.recycle();
diff --git a/core/java/android/accounts/AuthenticatorDescription.java b/core/java/android/accounts/AuthenticatorDescription.java
index f896bf8..672e648 100644
--- a/core/java/android/accounts/AuthenticatorDescription.java
+++ b/core/java/android/accounts/AuthenticatorDescription.java
@@ -10,6 +10,8 @@
     final public String packageName;
 
     public AuthenticatorDescription(String type, String packageName, int labelId, int iconId) {
+        if (type == null) throw new IllegalArgumentException("type cannot be null");
+        if (packageName == null) throw new IllegalArgumentException("packageName cannot be null");
         this.type = type;
         this.packageName = packageName;
         this.labelId = labelId;
@@ -17,6 +19,7 @@
     }
 
     public static AuthenticatorDescription newKey(String type) {
+        if (type == null) throw new IllegalArgumentException("type cannot be null");
         return new AuthenticatorDescription(type);
     }
 
diff --git a/core/java/android/app/ApplicationContext.java b/core/java/android/app/ApplicationContext.java
index 7c0d1d3..487cfda 100644
--- a/core/java/android/app/ApplicationContext.java
+++ b/core/java/android/app/ApplicationContext.java
@@ -40,6 +40,7 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ComponentInfo;
+import android.content.pm.FeatureInfo;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageInstallObserver;
@@ -1623,6 +1624,15 @@
         }
 
         @Override
+        public FeatureInfo[] getSystemAvailableFeatures() {
+            try {
+                return mPM.getSystemAvailableFeatures();
+            } catch (RemoteException e) {
+                throw new RuntimeException("Package manager has died", e);
+            }
+        }
+        
+        @Override
         public int checkPermission(String permName, String pkgName) {
             try {
                 return mPM.checkPermission(permName, pkgName);
diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java
index e43834a..b365d00 100644
--- a/core/java/android/app/SearchManager.java
+++ b/core/java/android/app/SearchManager.java
@@ -52,6 +52,8 @@
  * <li><a href="#HowSearchIsInvoked">How Search Is Invoked</a>
  * <li><a href="#ImplementingSearchForYourApp">Implementing Search for Your App</a>
  * <li><a href="#Suggestions">Search Suggestions</a>
+ * <li><a href="#ExposingSearchSuggestionsToQuickSearchBox">Exposing Search Suggestions to
+ * Quick Search Box</a></li>
  * <li><a href="#ActionKeys">Action Keys</a>
  * <li><a href="#SearchabilityMetadata">Searchability Metadata</a>
  * <li><a href="#PassingSearchContext">Passing Search Context</a>
@@ -247,6 +249,12 @@
  * <li>Summaries of possible results</li>
  * </ul>
  * 
+ * <p>Once an application is configured to provide search suggestions, those same suggestions can
+ * easily be made available to the system-wide Quick Search Box, providing faster access to its
+ * content from on central prominent place. See
+ * <a href="#ExposingSearchSuggestionsToQuickSearchBox">Exposing Search Suggestions to Quick Search
+ * Box</a> for more details.
+ * 
  * <p>The primary form of suggestions is known as <i>queried suggestions</i> and is based on query
  * text that the user has already typed.  This would generally be based on partial matches in
  * the available data.  In certain situations - for example, when no query text has been typed yet -
@@ -481,6 +489,26 @@
  *             {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH}, optional otherwise.</td>
  *     </tr>
  *
+ *     <tr><th>{@link #SUGGEST_COLUMN_SHORTCUT_ID}</th>
+ *         <td>This column is used to indicate whether a search suggestion should be stored as a
+ *             shortcut, and whether it should be validated.  Shortcuts are usually formed when the
+ *             user clicks a suggestion from Quick Search Box.  If missing, the result will be
+ *             stored as a shortcut and never refreshed.  If set to
+ *             {@link #SUGGEST_NEVER_MAKE_SHORTCUT}, the result will not be stored as a shortcut.
+ *             Otherwise, the shortcut id will be used to check back for for an up to date
+ *             suggestion using {@link #SUGGEST_URI_PATH_SHORTCUT}. Read more about shortcut
+ *             refreshing in the section about
+ *             <a href="#ExposingSearchSuggestionsToQuickSearchBox">exposing search suggestions to
+ *             Quick Search Box</a>.</td>
+ *         <td align="center">No.  Only applicable to sources included in Quick Search Box.</td>
+ *     </tr>
+ *
+ *     <tr><th>{@link #SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING}</th>
+ *         <td>This column is used to specify that a spinner should be shown in lieu of an icon2
+ *             while the shortcut of this suggestion is being refreshed.</td>
+ *         <td align="center">No.  Only applicable to sources included in Quick Search Box.</td>
+ *     </tr>
+ * 
  *     <tr><th><i>Other Columns</i></th>
  *         <td>Finally, if you have defined any <a href="#ActionKeys">Action Keys</a> and you wish 
  *             for them to have suggestion-specific definitions, you'll need to define one 
@@ -554,6 +582,59 @@
  * query text is provided and the SUGGEST_COLUMN_INTENT_DATA values are not suitable for user 
  * inspection and editing.</li></ul>
  *
+ * <a name="ExposingSearchSuggestionsToQuickSearchBox"></a>
+ * <h3>Exposing Search Suggestions to Quick Search Box</h3>
+ * 
+ * <p>Once your application is setup to provide search suggestions, making them available to the
+ * globally accessable Quick Search Box is as easy as setting android:includeInGlobalSearch to
+ * "true" in your searchable metadata file.  Beyond that, here are some more details of how
+ * suggestions interact with Quick Search Box, and optional ways that you may customize suggestions
+ * for your application.
+ *
+ * <p><b>Source Ranking:</b>  Once your application's search results are made available to Quick
+ * Search Box, how they surface to the user for a particular query will depend on how many
+ * other apps have results for that query, and how often the user has clicked on your results
+ * compared to the other apps'.  The apps with the best track record within Quick Search
+ * Box will get queried earlier and have a better chance of showing their results in the top few
+ * slots.  If there are more results than can be displayed to the user within a screen or two, the
+ * results may spill into a "more results" section that groups the remaining results by
+ * source.  The newest apps with little usage information are given middle of the road positioning
+ * until enough usage information is available to rank it as usual.  The exact formula for ranking
+ * the results is not set in stone, but suffice it is to say that providing quality results will
+ * increase the likelihood that your app's suggestions are provided in a prominent position, and
+ * apps that provide lower quality suggestions will be more likely to be pushed into the spillover
+ * area.
+ *
+ * <p><b>Search Settings:</b>  Each app that is available to Quick Search Box has an entry in the
+ * system settings where the user can enable or disable the inclusion of its results.  Below the
+ * name of the application, each application may provide a brief description of what kind of
+ * information will be made available via a search settings description string pointed to by the
+ * android:searchSettingsDescription attribute in the searchable metadata.
+ *
+ * <p><b>Shortcuts:</b>  Suggestions that are clicked on by the user are automatically made into
+ * shortcuts, or, copied so they can quickly be displayed to the user before querying any of
+ * the sources. Thereafter, the shortcutted suggestion will be displayed for the query that yielded
+ * the suggestion and for any prefixes of that query.  When multiple shortcuts are made available
+ * for a given query, they are ranked based on recency and the number of clicks they have received.
+ * You can control how your suggestions are made into shortcuts, and whether they are refreshed,
+ * using the {@link #SUGGEST_COLUMN_SHORTCUT_ID} column:
+ * <ul><li>Suggestions that do not include a shortcut id column will be made into shortcuts and
+ * never refreshed.  This makes sense for suggestions that refer to data that will never be changed
+ * or removed.</li>
+ * <li>Suggestions that include a shortcut id will be re-queried for a fresh version of the
+ * suggestion each time the shortcut is displayed.  The shortcut will be quickly displayed with
+ * whatever data was most recently available until the refresh query returns, after which the
+ * suggestion will be dynamically refreshed with the up to date information.  The shortcut refresh
+ * query will be sent to your suggestion provider with a uri of {@link #SUGGEST_URI_PATH_SHORTCUT}.
+ * The result should contain one suggestion using the same columns as the suggestion query, or be
+ * empty, indicating that the shortcut is no longer valid.  Shortcut ids make sense when referring
+ * to data that may change over time, such as a contact's presence status.  If a suggestion refers
+ * to data that could take longer to refresh, such as a network based refresh of a stock quote, you
+ * may include {@link #SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING} to show a progress spinner for the
+ * right hand icon until the refresh is complete.</li>
+ * <li>Finally, to prevent a suggestion from being copied into a shortcut, you may provide a
+ * shortcut id with a value of {@link #SUGGEST_NEVER_MAKE_SHORTCUT}.</li></ul>
+ * 
  * <a name="ActionKeys"></a>
  * <h3>Action Keys</h3>
  * 
@@ -870,6 +951,47 @@
  *     </tbody>
  * </table>
  *
+ * <p>Elements of search metadata that configure search suggestions being available to Quick Search
+ * Box:
+ * <table border="2" width="85%" align="center" frame="hsides" rules="rows">
+ *
+ *     <thead>
+ *     <tr><th>Attribute</th> <th>Description</th> <th>Required?</th></tr>
+ *     </thead>
+ *
+ *     <tr><th>android:includeInGlobalSearch</th>
+ *         <td>If true, indicates the search suggestions provided by your application should be
+ *             included in the globally accessible Quick Search Box.  The attributes below are only
+ *             applicable if this is set to true.</td>
+ *         <td align="center">Yes</td>
+ *     </tr>
+ *
+ *     <tr><th>android:searchSettingsDescription</th>
+ *         <td>If provided, provides a brief description of the search suggestions that are provided
+ *             by your application to Quick Search Box, and will be displayed in the search settings
+ *             entry for your application.</td>
+ *         <td align="center">No</td>
+ *     </tr>
+ *
+ *     <tr><th>android:queryAfterZeroResults</th>
+ *         <td>Indicates whether a source should be invoked for supersets of queries it has
+ *             returned zero results for in the past.  For example, if a source returned zero
+ *             results for "bo", it would be ignored for "bob".  If set to false, this source
+ *             will only be ignored for a single session; the next time the search dialog is
+ *             invoked, all sources will be queried.  The default value is false.</td>
+ *         <td align="center">No</td>
+ *     </tr>
+ *
+ *     <tr><th>android:searchSuggestThreshold</th>
+ *         <td>Indicates the minimum number of characters needed to trigger a source from Quick
+ *             Search Box.  Only guarantees that a source will not be queried for anything shorter
+ *             than the threshold.  The default value is 0.</td>
+ *         <td align="center">No</td>
+ *     </tr>
+ *
+ *     </tbody>
+ * </table>
+ *
  * <p><b>Additional metadata for search action keys.</b>  For each action key that you would like to
  * define, you'll need to add an additional element defining that key, and using the attributes
  * discussed in <a href="#ActionKeys">Action Keys</a>.  A simple example is shown here:
@@ -1247,16 +1369,12 @@
      * result indicates the shortcut refers to a no longer valid sugggestion.
      *
      * @see #SUGGEST_COLUMN_SHORTCUT_ID
-     *
-     * @hide pending enabling of global search for third parties
      */
     public final static String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut";
     
     /**
      * MIME type for shortcut validation.  You'll use this in your suggestions content provider
      * in the getType() function.
-     *
-     * @hide pending enabling of global search for third parties
      */
     public final static String SHORTCUT_MIME_TYPE = 
             "vnd.android.cursor.item/vnd.android.search.suggest";
@@ -1269,7 +1387,7 @@
      * In addition to the columns below, the suggestion columns are used to pass along the full
      * suggestion so it can be shortcutted.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SEARCH_CLICK_REPORT_AUTHORITY =
             "com.android.globalsearch.stats";
@@ -1277,21 +1395,21 @@
     /**
      * The path the write goes to.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SEARCH_CLICK_REPORT_URI_PATH = "click";
 
     /**
      * The column storing the query for the click.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SEARCH_CLICK_REPORT_COLUMN_QUERY = "query";
 
     /**
      * The column storing the component name of the application that was pivoted into.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SEARCH_CLICK_REPORT_COLUMN_COMPONENT = "component";
 
@@ -1376,7 +1494,7 @@
      *  {@link #COMPONENT_NAME_KEY}. For use by the global search system only - if other providers
      *  attempt to use this column, the value will be overwritten by global search.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SUGGEST_COLUMN_INTENT_COMPONENT_NAME = "suggest_intent_component";
     /**
@@ -1401,8 +1519,6 @@
      * {@link #SUGGEST_NEVER_MAKE_SHORTCUT}, the result will not be stored as a shortcut.
      * Otherwise, the shortcut id will be used to check back for an up to date suggestion using
      * {@link #SUGGEST_URI_PATH_SHORTCUT}.
-     *
-     * @hide pending reenabling of global search for third parties
      */
     public final static String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id";
 
@@ -1411,7 +1527,7 @@
      * cursor item's background color if it needs a non-default background color. A non-zero value
      * indicates a valid background color to override the default.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide For internal use, not part of the public API.
      */
     public final static String SUGGEST_COLUMN_BACKGROUND_COLOR = "suggest_background_color";
     
@@ -1419,8 +1535,6 @@
      * Column name for suggestions cursor. <i>Optional.</i> This column is used to specify
      * that a spinner should be shown in lieu of an icon2 while the shortcut of this suggestion
      * is being refreshed.
-     *
-     * @hide pending reenabling of global search for third parties
      */
     public final static String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING =
             "suggest_spinner_while_refreshing";
@@ -1428,8 +1542,6 @@
     /**
      * Column value for suggestion column {@link #SUGGEST_COLUMN_SHORTCUT_ID} when a suggestion
      * should not be stored as a shortcut in global search.
-     *
-     * @hide pending reenabling of global search for third parties
      */
     public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1";
 
@@ -1476,8 +1588,6 @@
      * Intent action for starting a web search provider's settings activity.
      * Web search providers should handle this intent if they have provider-specific
      * settings to implement.
-     *
-     * @hide implementation detail only relevent to web search providers
      */
     public final static String INTENT_ACTION_WEB_SEARCH_SETTINGS
             = "android.search.action.WEB_SEARCH_SETTINGS";
@@ -1492,7 +1602,8 @@
     
     /**
      * Intent action broadcasted to inform that the search settings have changed in some way.
-     * Either searchables have been enabled or disabled.
+     * Either searchables have been enabled or disabled, or a different web search provider
+     * has been chosen.
      */
     public final static String INTENT_ACTION_SEARCH_SETTINGS_CHANGED
             = "android.search.action.SETTINGS_CHANGED";
@@ -1501,7 +1612,7 @@
      * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION},
      * the search dialog will take no action.
      *
-     * @hide an implentation detail not part of the public api
+     * @hide
      */
     public final static String INTENT_ACTION_NONE = "android.search.action.ZILCH";
     
diff --git a/core/java/android/content/AbstractThreadedSyncAdapter.java b/core/java/android/content/AbstractThreadedSyncAdapter.java
index b01fc08..1edcb0a 100644
--- a/core/java/android/content/AbstractThreadedSyncAdapter.java
+++ b/core/java/android/content/AbstractThreadedSyncAdapter.java
@@ -64,6 +64,10 @@
         mAutoInitialize = autoInitialize;
     }
 
+    public Context getContext() {
+        return mContext;
+    }
+
     class ISyncAdapterImpl extends ISyncAdapter.Stub {
         public void startSync(ISyncContext syncContext, String authority, Account account,
                 Bundle extras) {
@@ -105,7 +109,8 @@
             // check it and when we use it
             synchronized (mSyncThreadLock) {
                 if (mSyncThread != null
-                        && mSyncThread.mSyncContext.getISyncContext() == syncContext) {
+                        && mSyncThread.mSyncContext.getISyncContext().asBinder()
+                        == syncContext.asBinder()) {
                     mSyncThread.interrupt();
                 }
             }
diff --git a/core/java/android/content/pm/ConfigurationInfo.java b/core/java/android/content/pm/ConfigurationInfo.java
index fb7a47f..8edd436 100755
--- a/core/java/android/content/pm/ConfigurationInfo.java
+++ b/core/java/android/content/pm/ConfigurationInfo.java
@@ -22,9 +22,9 @@
 /**
  * Information you can retrieve about hardware configuration preferences
  * declared by an application. This corresponds to information collected from the
- * AndroidManifest.xml's &lt;uses-configuration&gt; and the   &lt;uses-feature&gt;tags.
+ * AndroidManifest.xml's &lt;uses-configuration&gt; and &lt;uses-feature&gt; tags.
  */
-public class ConfigurationInfo implements Parcelable {    
+public class ConfigurationInfo implements Parcelable {
     /**
      * The kind of touch screen attached to the device.
      * One of: {@link android.content.res.Configuration#TOUCHSCREEN_NOTOUCH},
@@ -92,13 +92,13 @@
     }
 
     public String toString() {
-        return "ApplicationHardwarePreferences{"
+        return "ConfigurationInfo{"
             + Integer.toHexString(System.identityHashCode(this))
-            + ", touchscreen = " + reqTouchScreen + "}"
-            + ", inputMethod = " + reqKeyboardType + "}"
-            + ", navigation = " + reqNavigation + "}"
-            + ", reqInputFeatures = " + reqInputFeatures + "}"
-            + ", reqGlEsVersion = " + reqGlEsVersion + "}";
+            + " touchscreen = " + reqTouchScreen
+            + " inputMethod = " + reqKeyboardType
+            + " navigation = " + reqNavigation
+            + " reqInputFeatures = " + reqInputFeatures
+            + " reqGlEsVersion = " + reqGlEsVersion + "}";
     }
 
     public int describeContents() {
diff --git a/core/java/android/content/pm/FeatureInfo.aidl b/core/java/android/content/pm/FeatureInfo.aidl
new file mode 100755
index 0000000..d84a84c
--- /dev/null
+++ b/core/java/android/content/pm/FeatureInfo.aidl
@@ -0,0 +1,19 @@
+/*
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License"); 
+** you may not use this file except in compliance with the License. 
+** You may obtain a copy of the License at 
+**
+**     http://www.apache.org/licenses/LICENSE-2.0 
+**
+** Unless required by applicable law or agreed to in writing, software 
+** distributed under the License is distributed on an "AS IS" BASIS, 
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+** See the License for the specific language governing permissions and 
+** limitations under the License.
+*/
+
+package android.content.pm;
+
+parcelable FeatureInfo;
diff --git a/core/java/android/content/pm/FeatureInfo.java b/core/java/android/content/pm/FeatureInfo.java
new file mode 100644
index 0000000..57d61fd
--- /dev/null
+++ b/core/java/android/content/pm/FeatureInfo.java
@@ -0,0 +1,101 @@
+package android.content.pm;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.Parcelable.Creator;
+
+/**
+ * A single feature that can be requested by an application. This corresponds
+ * to information collected from the
+ * AndroidManifest.xml's &lt;uses-feature&gt; tag.
+ */
+public class FeatureInfo implements Parcelable {
+    /**
+     * The name of this feature, for example "android.hardware.camera".  If
+     * this is null, then this is an OpenGL ES version feature as described
+     * in {@link #reqGlEsVersion}.
+     */
+    public String name;
+    
+    /**
+     * Default value for {@link #reqGlEsVersion};
+     */
+    public static final int GL_ES_VERSION_UNDEFINED = 0;
+    
+    /**
+     * The GLES version used by an application. The upper order 16 bits represent the
+     * major version and the lower order 16 bits the minor version.  Only valid
+     * if {@link #name} is null.
+     */
+    public int reqGlEsVersion;
+
+    /**
+     * Set on {@link #flags} if this feature has been required by the application.
+     */
+    public static final int FLAG_REQUIRED = 0x0001;
+    
+    /**
+     * Additional flags.  May be zero or more of {@link #FLAG_REQUIRED}.
+     */
+    public int flags;
+    
+    public FeatureInfo() {
+    }
+
+    public FeatureInfo(FeatureInfo orig) {
+        name = orig.name;
+        reqGlEsVersion = orig.reqGlEsVersion;
+        flags = orig.flags;
+    }
+
+    public String toString() {
+        if (name != null) {
+            return "FeatureInfo{"
+                    + Integer.toHexString(System.identityHashCode(this))
+                    + " " + name + " fl=0x" + Integer.toHexString(flags) + "}";
+        } else {
+            return "FeatureInfo{"
+                    + Integer.toHexString(System.identityHashCode(this))
+                    + " glEsVers=" + getGlEsVersion()
+                    + " fl=0x" + Integer.toHexString(flags) + "}";
+        }
+    }
+
+    public int describeContents() {
+        return 0;
+    }
+
+    public void writeToParcel(Parcel dest, int parcelableFlags) {
+        dest.writeString(name);
+        dest.writeInt(reqGlEsVersion);
+        dest.writeInt(flags);
+    }
+
+    public static final Creator<FeatureInfo> CREATOR =
+        new Creator<FeatureInfo>() {
+        public FeatureInfo createFromParcel(Parcel source) {
+            return new FeatureInfo(source);
+        }
+        public FeatureInfo[] newArray(int size) {
+            return new FeatureInfo[size];
+        }
+    };
+
+    private FeatureInfo(Parcel source) {
+        name = source.readString();
+        reqGlEsVersion = source.readInt();
+        flags = source.readInt();
+    }
+
+    /**
+     * This method extracts the major and minor version of reqGLEsVersion attribute
+     * and returns it as a string. Say reqGlEsVersion value of 0x00010002 is returned
+     * as 1.2
+     * @return String representation of the reqGlEsVersion attribute
+     */
+    public String getGlEsVersion() {
+        int major = ((reqGlEsVersion & 0xffff0000) >> 16);
+        int minor = reqGlEsVersion & 0x0000ffff;
+        return String.valueOf(major)+"."+String.valueOf(minor);
+    }
+}
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 4fc4fb9..c322951 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -22,6 +22,7 @@
 import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.FeatureInfo;
 import android.content.pm.IPackageInstallObserver;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageDataObserver;
@@ -276,6 +277,12 @@
      */
     String[] getSystemSharedLibraryNames();
 
+    /**
+     * Get a list of features that are available on the
+     * system.
+     */
+    FeatureInfo[] getSystemAvailableFeatures();
+
     void enterSafeMode();
     boolean isSafeMode();
     void systemReady();
diff --git a/core/java/android/content/pm/PackageInfo.java b/core/java/android/content/pm/PackageInfo.java
index d9326f2..a8ce889 100644
--- a/core/java/android/content/pm/PackageInfo.java
+++ b/core/java/android/content/pm/PackageInfo.java
@@ -127,6 +127,11 @@
      */
     public ConfigurationInfo[] configPreferences;
 
+    /**
+     * The features that this application has said it requires.
+     */
+    public FeatureInfo[] reqFeatures;
+    
     public PackageInfo() {
     }
 
@@ -162,6 +167,7 @@
         dest.writeStringArray(requestedPermissions);
         dest.writeTypedArray(signatures, parcelableFlags);
         dest.writeTypedArray(configPreferences, parcelableFlags);
+        dest.writeTypedArray(reqFeatures, parcelableFlags);
     }
 
     public static final Parcelable.Creator<PackageInfo> CREATOR
@@ -195,5 +201,6 @@
         requestedPermissions = source.createStringArray();
         signatures = source.createTypedArray(Signature.CREATOR);
         configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);
+        reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);
     }
 }
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index fca005c..825eb85 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -159,8 +159,10 @@
     
     /**
      * {@link PackageInfo} flag: return information about
-     * hardware preferences
-     * {@link PackageInfo#configPreferences}
+     * hardware preferences in
+     * {@link PackageInfo#configPreferences PackageInfo.configPreferences} and
+     * requested features in {@link PackageInfo#reqFeatures
+     * PackageInfo.reqFeatures}. 
      */
     public static final int GET_CONFIGURATIONS = 0x00004000;
 
@@ -400,6 +402,14 @@
     public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16;
 
     /**
+     * Installation return code: this is passed to the {@link IPackageInstallObserver} by
+     * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
+     * the new package uses a feature that is not available.
+     * @hide
+     */
+    public static final int INSTALL_FAILED_MISSING_FEATURE = -17;
+
+    /**
      * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
      * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
      * if the parser was given a path that is not a file, or does not end with the expected
@@ -980,6 +990,16 @@
     public abstract String[] getSystemSharedLibraryNames();
 
     /**
+     * Get a list of features that are available on the
+     * system.
+     * 
+     * @return An array of FeatureInfo classes describing the features
+     * that are available on the system, or null if there are none(!!).
+     * 
+     */
+    public abstract FeatureInfo[] getSystemAvailableFeatures();
+
+    /**
      * Determine the best action to perform for a given Intent.  This is how
      * {@link Intent#resolveActivity} finds an activity if a class has not
      * been explicitly specified.
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 96c9486..4399df4 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -184,9 +184,12 @@
             int N = p.configPreferences.size();
             if (N > 0) {
                 pi.configPreferences = new ConfigurationInfo[N];
-                for (int i=0; i<N; i++) {
-                    pi.configPreferences[i] = p.configPreferences.get(i);
-                }
+                p.configPreferences.toArray(pi.configPreferences);
+            }
+            N = p.reqFeatures != null ? p.reqFeatures.size() : 0;
+            if (N > 0) {
+                pi.reqFeatures = new FeatureInfo[N];
+                p.reqFeatures.toArray(pi.reqFeatures);
             }
         }
         if ((flags&PackageManager.GET_ACTIVITIES) != 0) {
@@ -760,14 +763,32 @@
                 XmlUtils.skipCurrentTag(parser);
 
             } else if (tagName.equals("uses-feature")) {
-                ConfigurationInfo cPref = new ConfigurationInfo();
+                FeatureInfo fi = new FeatureInfo();
                 sa = res.obtainAttributes(attrs,
                         com.android.internal.R.styleable.AndroidManifestUsesFeature);
-                cPref.reqGlEsVersion = sa.getInt(
-                        com.android.internal.R.styleable.AndroidManifestUsesFeature_glEsVersion,
-                        ConfigurationInfo.GL_ES_VERSION_UNDEFINED);
+                fi.name = sa.getNonResourceString(
+                        com.android.internal.R.styleable.AndroidManifestUsesFeature_name);
+                if (fi.name == null) {
+                    fi.reqGlEsVersion = sa.getInt(
+                            com.android.internal.R.styleable.AndroidManifestUsesFeature_glEsVersion,
+                            FeatureInfo.GL_ES_VERSION_UNDEFINED);
+                }
+                if (sa.getBoolean(
+                        com.android.internal.R.styleable.AndroidManifestUsesFeature_required,
+                        true)) {
+                    fi.flags |= FeatureInfo.FLAG_REQUIRED;
+                }
                 sa.recycle();
-                pkg.configPreferences.add(cPref);
+                if (pkg.reqFeatures == null) {
+                    pkg.reqFeatures = new ArrayList<FeatureInfo>();
+                }
+                pkg.reqFeatures.add(fi);
+                
+                if (fi.name == null) {
+                    ConfigurationInfo cPref = new ConfigurationInfo();
+                    cPref.reqGlEsVersion = fi.reqGlEsVersion;
+                    pkg.configPreferences.add(cPref);
+                }
 
                 XmlUtils.skipCurrentTag(parser);
 
@@ -946,11 +967,6 @@
             }
         }
         
-        if (pkg.usesLibraries.size() > 0) {
-            pkg.usesLibraryFiles = new String[pkg.usesLibraries.size()];
-            pkg.usesLibraries.toArray(pkg.usesLibraryFiles);
-        }
-        
         if (supportsSmallScreens < 0 || (supportsSmallScreens > 0
                 && pkg.applicationInfo.targetSdkVersion
                         >= android.os.Build.VERSION_CODES.DONUT)) {
@@ -1436,11 +1452,28 @@
 
                 String lname = sa.getNonResourceString(
                         com.android.internal.R.styleable.AndroidManifestUsesLibrary_name);
+                boolean req = sa.getBoolean(
+                        com.android.internal.R.styleable.AndroidManifestUsesLibrary_required,
+                        true);
 
                 sa.recycle();
 
-                if (lname != null && !owner.usesLibraries.contains(lname)) {
-                    owner.usesLibraries.add(lname.intern());
+                if (lname != null) {
+                    if (req) {
+                        if (owner.usesLibraries == null) {
+                            owner.usesLibraries = new ArrayList<String>();
+                        }
+                        if (!owner.usesLibraries.contains(lname)) {
+                            owner.usesLibraries.add(lname.intern());
+                        }
+                    } else {
+                        if (owner.usesOptionalLibraries == null) {
+                            owner.usesOptionalLibraries = new ArrayList<String>();
+                        }
+                        if (!owner.usesOptionalLibraries.contains(lname)) {
+                            owner.usesOptionalLibraries.add(lname.intern());
+                        }
+                    }
                 }
 
                 XmlUtils.skipCurrentTag(parser);
@@ -2418,7 +2451,8 @@
 
         public ArrayList<String> protectedBroadcasts;
         
-        public final ArrayList<String> usesLibraries = new ArrayList<String>();
+        public ArrayList<String> usesLibraries = null;
+        public ArrayList<String> usesOptionalLibraries = null;
         public String[] usesLibraryFiles = null;
 
         // We store the application meta-data independently to avoid multiple unwanted references
@@ -2466,6 +2500,11 @@
         public final ArrayList<ConfigurationInfo> configPreferences =
                 new ArrayList<ConfigurationInfo>();
 
+        /*
+         *  Applications requested features
+         */
+        public ArrayList<FeatureInfo> reqFeatures = null;
+
         public Package(String _name) {
             packageName = _name;
             applicationInfo.packageName = _name;
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index 6143b6c..5d7af69d 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -519,7 +519,8 @@
      */
     @Deprecated
     public boolean yieldIfContended() {
-        return yieldIfContendedHelper(false /* do not check yielding */);
+        return yieldIfContendedHelper(false /* do not check yielding */,
+                -1 /* sleepAfterYieldDelay */);
     }
 
     /**
@@ -527,14 +528,29 @@
      * successful so far. Do not call setTransactionSuccessful before calling this. When this
      * returns a new transaction will have been created but not marked as successful. This assumes
      * that there are no nested transactions (beginTransaction has only been called once) and will
-     * through an exception if that is not the case.
+     * throw an exception if that is not the case.
      * @return true if the transaction was yielded
      */
     public boolean yieldIfContendedSafely() {
-        return yieldIfContendedHelper(true /* check yielding */);
+        return yieldIfContendedHelper(true /* check yielding */, -1 /* sleepAfterYieldDelay*/);
     }
 
-    private boolean yieldIfContendedHelper(boolean checkFullyYielded) {
+    /**
+     * Temporarily end the transaction to let other threads run. The transaction is assumed to be
+     * successful so far. Do not call setTransactionSuccessful before calling this. When this
+     * returns a new transaction will have been created but not marked as successful. This assumes
+     * that there are no nested transactions (beginTransaction has only been called once) and will
+     * throw an exception if that is not the case.
+     * @param sleepAfterYieldDelay if > 0, sleep this long before starting a new transaction if
+     *   the lock was actually yielded. This will allow other background threads to make some
+     *   more progress than they would if we started the transaction immediately.
+     * @return true if the transaction was yielded
+     */
+    public boolean yieldIfContendedSafely(long sleepAfterYieldDelay) {
+        return yieldIfContendedHelper(true /* check yielding */, sleepAfterYieldDelay);
+    }
+
+    private boolean yieldIfContendedHelper(boolean checkFullyYielded, long sleepAfterYieldDelay) {
         if (mLock.getQueueLength() == 0) {
             // Reset the lock acquire time since we know that the thread was willing to yield
             // the lock at this time.
@@ -550,6 +566,13 @@
                         "Db locked more than once. yielfIfContended cannot yield");
             }
         }
+        if (sleepAfterYieldDelay > 0) {
+            try {
+                Thread.sleep(sleepAfterYieldDelay);
+            } catch (InterruptedException e) {
+                Thread.interrupted();
+            }
+        }
         beginTransaction();
         return true;
     }
diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java
index a2add73..c615957 100644
--- a/core/java/android/server/search/Searchables.java
+++ b/core/java/android/server/search/Searchables.java
@@ -26,7 +26,6 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
-import android.content.pm.ApplicationInfo;
 import android.os.Bundle;
 import android.util.Log;
 
@@ -231,16 +230,14 @@
                         : webSearchInfoList.get(ii - search_count);
                 ActivityInfo ai = info.activityInfo;
                 // Check first to avoid duplicate entries.
-                if (newSearchablesMap.containsKey(new ComponentName(ai.packageName, ai.name))) {
-                    continue;
-                }
-                SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai);
-                if (searchable != null) {
-                    newSearchablesList.add(searchable);
-                    newSearchablesMap.put(searchable.getSearchActivity(), searchable);
-                    if (searchable.shouldIncludeInGlobalSearch()
-                            && isWhitelistedForGlobalSearch(pm, searchable.getSearchActivity())) {
-                        newSearchablesInGlobalSearchList.add(searchable);
+                if (newSearchablesMap.get(new ComponentName(ai.packageName, ai.name)) == null) {
+                    SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai);
+                    if (searchable != null) {
+                        newSearchablesList.add(searchable);
+                        newSearchablesMap.put(searchable.getSearchActivity(), searchable);
+                        if (searchable.shouldIncludeInGlobalSearch()) {
+                            newSearchablesInGlobalSearchList.add(searchable);
+                        }
                     }
                 }
             }
@@ -292,25 +289,6 @@
     }
 
     /**
-     * Determines whether an activity may be included in quick search box.  For now this is
-     * restricted to system installed apps.
-     *
-     * TODO: remove when we are ready to enable global search for third party applications.
-     *
-     * @param pm The package manager.
-     * @param searchActivity The component of the search activity.
-     * @return True if the search activity may include its search suggestions in quick search box.
-     */
-    private boolean isWhitelistedForGlobalSearch(PackageManager pm, ComponentName searchActivity) {
-        try {
-            ActivityInfo ai = pm.getActivityInfo(searchActivity, 0);
-            return ((ai.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
-        } catch (PackageManager.NameNotFoundException e) {
-            return false;
-        }
-    }
-
-    /**
      * Checks if the given activity component is present in the system and if so makes it the
      * preferred activity for handling ACTION_WEB_SEARCH.
      * @param component Name of the component to check and set as preferred.
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index 050a886..3c306bb 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -360,11 +360,13 @@
             // default to "en"
             buffer.append("en");
         }
-        
-        final String model = Build.MODEL;
-        if (model.length() > 0) {
-            buffer.append("; ");
-            buffer.append(model);
+        // add the model for the release build
+        if ("REL".equals(Build.VERSION.CODENAME)) {
+            final String model = Build.MODEL;
+            if (model.length() > 0) {
+                buffer.append("; ");
+                buffer.append(model);
+            }
         }
         final String id = Build.ID;
         if (id.length() > 0) {
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 196c66b..e39e3f1 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -1935,6 +1935,7 @@
         int mHeight;
         int mTextWrapWidth;
         float mScale;
+        boolean mIgnoreHeight;
     }
 
     /**
@@ -1969,6 +1970,7 @@
             data.mTextWrapWidth = mInZoomOverview ? Math.round(viewWidth
                     / mLastScale) : newWidth;
             data.mScale = mActualScale;
+            data.mIgnoreHeight = mZoomScale != 0 && !mHeightCanMeasure;
             mWebViewCore.sendMessage(EventHub.VIEW_SIZE_CHANGED, data);
             mLastWidthSent = newWidth;
             mLastHeightSent = newHeight;
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 25cb249..f474f15 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -418,7 +418,8 @@
         should this be called nativeSetViewPortSize?
     */
     private native void nativeSetSize(int width, int height, int screenWidth,
-            float scale, int realScreenWidth, int screenHeight);
+            float scale, int realScreenWidth, int screenHeight,
+            boolean ignoreHeight);
 
     private native int nativeGetContentMinPrefWidth();
 
@@ -918,7 +919,8 @@
                             WebView.ViewSizeData data =
                                     (WebView.ViewSizeData) msg.obj;
                             viewSizeChanged(data.mWidth, data.mHeight,
-                                    data.mTextWrapWidth, data.mScale);
+                                    data.mTextWrapWidth, data.mScale,
+                                    data.mIgnoreHeight);
                             break;
                         }
                         case SET_SCROLL_OFFSET:
@@ -1411,7 +1413,8 @@
     private float mCurrentViewScale = 1.0f;
 
     // notify webkit that our virtual view size changed size (after inv-zoom)
-    private void viewSizeChanged(int w, int h, int textwrapWidth, float scale) {
+    private void viewSizeChanged(int w, int h, int textwrapWidth, float scale,
+            boolean ignoreHeight) {
         if (DebugFlags.WEB_VIEW_CORE) {
             Log.v(LOGTAG, "viewSizeChanged w=" + w + "; h=" + h
                     + "; textwrapWidth=" + textwrapWidth + "; scale=" + scale);
@@ -1447,7 +1450,7 @@
             }
         }
         nativeSetSize(width, width == w ? h : Math.round((float) width * h / w),
-                textwrapWidth, scale, w, h);
+                textwrapWidth, scale, w, h, ignoreHeight);
         // Remember the current width and height
         boolean needInvalidate = (mCurrentViewWidth == 0);
         mCurrentViewWidth = w;
@@ -1905,6 +1908,7 @@
             // true. It is safe to use mWidth for mTextWrapWidth.
             data.mTextWrapWidth = data.mWidth;
             data.mScale = -1.0f;
+            data.mIgnoreHeight = false;
             mEventHub.sendMessageAtFrontOfQueue(Message.obtain(null,
                     EventHub.VIEW_SIZE_CHANGED, data));
         } else if (mSettings.getUseWideViewPort()) {
@@ -1926,6 +1930,7 @@
                         / mCurrentViewWidth;
                 data.mTextWrapWidth = Math.round(webViewWidth
                         / mRestoreState.mTextWrapScale);
+                data.mIgnoreHeight = false;
                 mEventHub.sendMessageAtFrontOfQueue(Message.obtain(null,
                         EventHub.VIEW_SIZE_CHANGED, data));
             }
diff --git a/core/res/res/drawable-hdpi/activity_title_bar.9.png b/core/res/res/drawable-hdpi/activity_title_bar.9.png
new file mode 100644
index 0000000..48d60c4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/activity_title_bar.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/arrow_down_float.png b/core/res/res/drawable-hdpi/arrow_down_float.png
new file mode 100644
index 0000000..2466c8f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/arrow_down_float.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/arrow_up_float.png b/core/res/res/drawable-hdpi/arrow_up_float.png
new file mode 100644
index 0000000..d1301c3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/arrow_up_float.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_charge_background.png b/core/res/res/drawable-hdpi/battery_charge_background.png
new file mode 100644
index 0000000..19023a9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_charge_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_charge_fill_empty.9.png b/core/res/res/drawable-hdpi/battery_charge_fill_empty.9.png
new file mode 100644
index 0000000..c4e70a8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_charge_fill_empty.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_charge_fill_full.9.png b/core/res/res/drawable-hdpi/battery_charge_fill_full.9.png
new file mode 100644
index 0000000..ac66f5a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_charge_fill_full.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_charge_fill_warning.9.png b/core/res/res/drawable-hdpi/battery_charge_fill_warning.9.png
new file mode 100644
index 0000000..32d99c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_charge_fill_warning.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_low_battery.png b/core/res/res/drawable-hdpi/battery_low_battery.png
new file mode 100644
index 0000000..d894f7b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_low_battery.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/blank_tile.png b/core/res/res/drawable-hdpi/blank_tile.png
new file mode 100644
index 0000000..e2a386c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/blank_tile.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/bottom_bar.png b/core/res/res/drawable-hdpi/bottom_bar.png
new file mode 100644
index 0000000..1f38f3c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/bottom_bar.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_buttonless_off.png b/core/res/res/drawable-hdpi/btn_check_buttonless_off.png
new file mode 100644
index 0000000..baf9010
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_buttonless_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_buttonless_on.png b/core/res/res/drawable-hdpi/btn_check_buttonless_on.png
new file mode 100644
index 0000000..2a77e4c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_buttonless_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_label_background.9.png b/core/res/res/drawable-hdpi/btn_check_label_background.9.png
new file mode 100644
index 0000000..97e6806
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off.png b/core/res/res/drawable-hdpi/btn_check_off.png
new file mode 100644
index 0000000..aad9ef7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disable.png b/core/res/res/drawable-hdpi/btn_check_off_disable.png
new file mode 100644
index 0000000..eaee9e0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png b/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png
new file mode 100644
index 0000000..6d2c293
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed.png b/core/res/res/drawable-hdpi/btn_check_off_pressed.png
new file mode 100644
index 0000000..1c442e9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_selected.png b/core/res/res/drawable-hdpi/btn_check_off_selected.png
new file mode 100644
index 0000000..b852b2c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on.png b/core/res/res/drawable-hdpi/btn_check_on.png
new file mode 100644
index 0000000..cd5c181
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disable.png b/core/res/res/drawable-hdpi/btn_check_on_disable.png
new file mode 100644
index 0000000..b4fc51a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png b/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png
new file mode 100644
index 0000000..bf34647
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed.png b/core/res/res/drawable-hdpi/btn_check_on_pressed.png
new file mode 100644
index 0000000..fa5c7a2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_selected.png b/core/res/res/drawable-hdpi/btn_check_on_selected.png
new file mode 100644
index 0000000..a6a21ad
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_disable.png b/core/res/res/drawable-hdpi/btn_circle_disable.png
new file mode 100644
index 0000000..d829716
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_disable_focused.png b/core/res/res/drawable-hdpi/btn_circle_disable_focused.png
new file mode 100644
index 0000000..c1b5b6e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_normal.png b/core/res/res/drawable-hdpi/btn_circle_normal.png
new file mode 100644
index 0000000..bf3fb5a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_pressed.png b/core/res/res/drawable-hdpi/btn_circle_pressed.png
new file mode 100644
index 0000000..50e22e6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_selected.png b/core/res/res/drawable-hdpi/btn_circle_selected.png
new file mode 100644
index 0000000..cfc68fb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_close_normal.png b/core/res/res/drawable-hdpi/btn_close_normal.png
new file mode 100644
index 0000000..df3d56c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_close_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_close_pressed.png b/core/res/res/drawable-hdpi/btn_close_pressed.png
new file mode 100644
index 0000000..ef88fe0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_close_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_code_lock_default.png b/core/res/res/drawable-hdpi/btn_code_lock_default.png
new file mode 100644
index 0000000..9f44d0f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_code_lock_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_code_lock_touched.png b/core/res/res/drawable-hdpi/btn_code_lock_touched.png
new file mode 100644
index 0000000..a4cc5bf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_code_lock_touched.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal.9.png b/core/res/res/drawable-hdpi/btn_default_normal.9.png
new file mode 100644
index 0000000..329ce6e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png b/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png
new file mode 100644
index 0000000..a518c6b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png b/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png
new file mode 100644
index 0000000..71a05b7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_pressed.9.png b/core/res/res/drawable-hdpi/btn_default_pressed.9.png
new file mode 100644
index 0000000..d9d02bf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_selected.9.png b/core/res/res/drawable-hdpi/btn_default_selected.9.png
new file mode 100644
index 0000000..ab7c612
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal.9.png
new file mode 100644
index 0000000..baafed6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png
new file mode 100644
index 0000000..175197b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png
new file mode 100644
index 0000000..ec1feff
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png b/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png
new file mode 100644
index 0000000..c1f9a0f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_selected.9.png b/core/res/res/drawable-hdpi/btn_default_small_selected.9.png
new file mode 100644
index 0000000..0ea3f40
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dialog_disable.png b/core/res/res/drawable-hdpi/btn_dialog_disable.png
new file mode 100644
index 0000000..2fc5d1a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dialog_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dialog_normal.png b/core/res/res/drawable-hdpi/btn_dialog_normal.png
new file mode 100644
index 0000000..c4a1026
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dialog_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dialog_pressed.png b/core/res/res/drawable-hdpi/btn_dialog_pressed.png
new file mode 100644
index 0000000..846f8bf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dialog_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dialog_selected.png b/core/res/res/drawable-hdpi/btn_dialog_selected.png
new file mode 100644
index 0000000..659c289
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dialog_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png b/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png
new file mode 100644
index 0000000..9392495
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png b/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png
new file mode 100644
index 0000000..beaba45
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png b/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png
new file mode 100644
index 0000000..ec51fc9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_erase_default.9.png b/core/res/res/drawable-hdpi/btn_erase_default.9.png
new file mode 100644
index 0000000..30984f4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_erase_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_erase_pressed.9.png b/core/res/res/drawable-hdpi/btn_erase_pressed.9.png
new file mode 100644
index 0000000..a8225e8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_erase_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_erase_selected.9.png b/core/res/res/drawable-hdpi/btn_erase_selected.9.png
new file mode 100644
index 0000000..f020f77
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_erase_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_global_search_normal.9.png b/core/res/res/drawable-hdpi/btn_global_search_normal.9.png
new file mode 100644
index 0000000..5bec4f8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_global_search_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png
new file mode 100644
index 0000000..5697369
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
new file mode 100644
index 0000000..9940245
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
new file mode 100644
index 0000000..5a26d83
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
new file mode 100644
index 0000000..089dbf3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
new file mode 100644
index 0000000..c10a3db
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
new file mode 100644
index 0000000..9e83ace
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player.9.png b/core/res/res/drawable-hdpi/btn_media_player.9.png
new file mode 100644
index 0000000..bf16315
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player_disabled.9.png b/core/res/res/drawable-hdpi/btn_media_player_disabled.9.png
new file mode 100644
index 0000000..d7b8ed5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player_disabled_selected.9.png b/core/res/res/drawable-hdpi/btn_media_player_disabled_selected.9.png
new file mode 100644
index 0000000..1a35c31
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player_disabled_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player_pressed.9.png b/core/res/res/drawable-hdpi/btn_media_player_pressed.9.png
new file mode 100644
index 0000000..17dd3fc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player_selected.9.png b/core/res/res/drawable-hdpi/btn_media_player_selected.9.png
new file mode 100644
index 0000000..a146d8f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_default.png b/core/res/res/drawable-hdpi/btn_minus_default.png
new file mode 100644
index 0000000..f2831af
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_disable.png b/core/res/res/drawable-hdpi/btn_minus_disable.png
new file mode 100644
index 0000000..24ce695
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_disable_focused.png b/core/res/res/drawable-hdpi/btn_minus_disable_focused.png
new file mode 100644
index 0000000..e92c2b1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_pressed.png b/core/res/res/drawable-hdpi/btn_minus_pressed.png
new file mode 100644
index 0000000..ba2ed26
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_selected.png b/core/res/res/drawable-hdpi/btn_minus_selected.png
new file mode 100644
index 0000000..6b938b3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_default.png b/core/res/res/drawable-hdpi/btn_plus_default.png
new file mode 100644
index 0000000..441d1fb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_disable.png b/core/res/res/drawable-hdpi/btn_plus_disable.png
new file mode 100644
index 0000000..4e965c1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_disable_focused.png b/core/res/res/drawable-hdpi/btn_plus_disable_focused.png
new file mode 100644
index 0000000..0c938eb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_pressed.png b/core/res/res/drawable-hdpi/btn_plus_pressed.png
new file mode 100644
index 0000000..8dd5a68
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_selected.png b/core/res/res/drawable-hdpi/btn_plus_selected.png
new file mode 100644
index 0000000..8fe30ed
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_label_background.9.png b/core/res/res/drawable-hdpi/btn_radio_label_background.9.png
new file mode 100644
index 0000000..45c5c6a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off.png b/core/res/res/drawable-hdpi/btn_radio_off.png
new file mode 100644
index 0000000..c0b14aa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_pressed.png b/core/res/res/drawable-hdpi/btn_radio_off_pressed.png
new file mode 100644
index 0000000..3189581
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_selected.png b/core/res/res/drawable-hdpi/btn_radio_off_selected.png
new file mode 100644
index 0000000..f337703
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on.png b/core/res/res/drawable-hdpi/btn_radio_on.png
new file mode 100644
index 0000000..c90d2eb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_pressed.png b/core/res/res/drawable-hdpi/btn_radio_on_pressed.png
new file mode 100644
index 0000000..d79450b8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_selected.png b/core/res/res/drawable-hdpi/btn_radio_on_selected.png
new file mode 100644
index 0000000..db50c43
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_off_normal.png b/core/res/res/drawable-hdpi/btn_rating_star_off_normal.png
new file mode 100644
index 0000000..d119807
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_off_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_off_pressed.png b/core/res/res/drawable-hdpi/btn_rating_star_off_pressed.png
new file mode 100644
index 0000000..6f76da3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_off_selected.png b/core/res/res/drawable-hdpi/btn_rating_star_off_selected.png
new file mode 100644
index 0000000..566090d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_on_normal.png b/core/res/res/drawable-hdpi/btn_rating_star_on_normal.png
new file mode 100644
index 0000000..c55c1f6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_on_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_on_pressed.png b/core/res/res/drawable-hdpi/btn_rating_star_on_pressed.png
new file mode 100644
index 0000000..89b8161
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_on_selected.png b/core/res/res/drawable-hdpi/btn_rating_star_on_selected.png
new file mode 100644
index 0000000..1a76a26
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_default.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_default.9.png
new file mode 100644
index 0000000..fe38843
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_pressed.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_pressed.9.png
new file mode 100644
index 0000000..e673b27
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_selected.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_selected.9.png
new file mode 100644
index 0000000..64b689d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_voice_default.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_voice_default.9.png
new file mode 100644
index 0000000..f65fa14
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_voice_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_voice_pressed.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_voice_pressed.9.png
new file mode 100644
index 0000000..17cc0dd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_voice_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_voice_selected.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_voice_selected.9.png
new file mode 100644
index 0000000..0509e14
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_voice_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_disabled.png b/core/res/res/drawable-hdpi/btn_square_overlay_disabled.png
new file mode 100644
index 0000000..71a037e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_disabled.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_disabled_focused.png b/core/res/res/drawable-hdpi/btn_square_overlay_disabled_focused.png
new file mode 100644
index 0000000..a474605
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_disabled_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_normal.png b/core/res/res/drawable-hdpi/btn_square_overlay_normal.png
new file mode 100644
index 0000000..bf5da22
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_pressed.png b/core/res/res/drawable-hdpi/btn_square_overlay_pressed.png
new file mode 100644
index 0000000..52a302d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_selected.png b/core/res/res/drawable-hdpi/btn_square_overlay_selected.png
new file mode 100644
index 0000000..e065682
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off.png b/core/res/res/drawable-hdpi/btn_star_big_off.png
new file mode 100644
index 0000000..4be0f5d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off_disable.png b/core/res/res/drawable-hdpi/btn_star_big_off_disable.png
new file mode 100644
index 0000000..faba665
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off_disable_focused.png b/core/res/res/drawable-hdpi/btn_star_big_off_disable_focused.png
new file mode 100644
index 0000000..fc8aca4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off_pressed.png b/core/res/res/drawable-hdpi/btn_star_big_off_pressed.png
new file mode 100644
index 0000000..b8c8e70
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off_selected.png b/core/res/res/drawable-hdpi/btn_star_big_off_selected.png
new file mode 100644
index 0000000..86250bb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on.png b/core/res/res/drawable-hdpi/btn_star_big_on.png
new file mode 100644
index 0000000..4213050
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on_disable.png b/core/res/res/drawable-hdpi/btn_star_big_on_disable.png
new file mode 100644
index 0000000..5629849
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on_disable_focused.png b/core/res/res/drawable-hdpi/btn_star_big_on_disable_focused.png
new file mode 100644
index 0000000..cb9f79c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on_pressed.png b/core/res/res/drawable-hdpi/btn_star_big_on_pressed.png
new file mode 100644
index 0000000..648cd1b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on_selected.png b/core/res/res/drawable-hdpi/btn_star_big_on_selected.png
new file mode 100644
index 0000000..cb15673
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_label_background.9.png b/core/res/res/drawable-hdpi/btn_star_label_background.9.png
new file mode 100644
index 0000000..6008067
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_toggle_off.9.png b/core/res/res/drawable-hdpi/btn_toggle_off.9.png
new file mode 100644
index 0000000..9e141d8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_toggle_off.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_toggle_on.9.png b/core/res/res/drawable-hdpi/btn_toggle_on.9.png
new file mode 100644
index 0000000..dba2fa5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_toggle_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_disabled.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_disabled.9.png
new file mode 100644
index 0000000..6441f4d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_disabled_focused.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_disabled_focused.9.png
new file mode 100644
index 0000000..cfb0613
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_normal.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_normal.9.png
new file mode 100644
index 0000000..b30f834
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_pressed.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_pressed.9.png
new file mode 100644
index 0000000..4ff9910
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_selected.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_selected.9.png
new file mode 100644
index 0000000..5542695
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_page_normal.png b/core/res/res/drawable-hdpi/btn_zoom_page_normal.png
new file mode 100644
index 0000000..15d60a0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_page_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_page_press.png b/core/res/res/drawable-hdpi/btn_zoom_page_press.png
new file mode 100644
index 0000000..28f437e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_page_press.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_disabled.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_disabled.9.png
new file mode 100644
index 0000000..9813201
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_disabled_focused.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_disabled_focused.9.png
new file mode 100644
index 0000000..8710c72
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_normal.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_normal.9.png
new file mode 100644
index 0000000..763d271
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_pressed.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_pressed.9.png
new file mode 100644
index 0000000..b77936a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_selected.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_selected.9.png
new file mode 100644
index 0000000..a8e4af1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/button_onoff_indicator_off.png b/core/res/res/drawable-hdpi/button_onoff_indicator_off.png
new file mode 100644
index 0000000..9af36e9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/button_onoff_indicator_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/button_onoff_indicator_on.png b/core/res/res/drawable-hdpi/button_onoff_indicator_on.png
new file mode 100644
index 0000000..bde297e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/button_onoff_indicator_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/call_contact.png b/core/res/res/drawable-hdpi/call_contact.png
new file mode 100644
index 0000000..57fea24
--- /dev/null
+++ b/core/res/res/drawable-hdpi/call_contact.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/checkbox_off_background.png b/core/res/res/drawable-hdpi/checkbox_off_background.png
new file mode 100644
index 0000000..a8e4785
--- /dev/null
+++ b/core/res/res/drawable-hdpi/checkbox_off_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/checkbox_on_background.png b/core/res/res/drawable-hdpi/checkbox_on_background.png
new file mode 100644
index 0000000..800d3d5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/checkbox_on_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/clock_dial.png b/core/res/res/drawable-hdpi/clock_dial.png
new file mode 100644
index 0000000..9de29bc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/clock_dial.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/clock_hand_hour.png b/core/res/res/drawable-hdpi/clock_hand_hour.png
new file mode 100644
index 0000000..9f7e5c0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/clock_hand_hour.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/clock_hand_minute.png b/core/res/res/drawable-hdpi/clock_hand_minute.png
new file mode 100644
index 0000000..2eec380
--- /dev/null
+++ b/core/res/res/drawable-hdpi/clock_hand_minute.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/code_lock_bottom.9.png b/core/res/res/drawable-hdpi/code_lock_bottom.9.png
new file mode 100644
index 0000000..e72d0f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/code_lock_bottom.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/code_lock_left.9.png b/core/res/res/drawable-hdpi/code_lock_left.9.png
new file mode 100644
index 0000000..76ff1f5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/code_lock_left.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/code_lock_top.9.png b/core/res/res/drawable-hdpi/code_lock_top.9.png
new file mode 100644
index 0000000..20af255
--- /dev/null
+++ b/core/res/res/drawable-hdpi/code_lock_top.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/compass_arrow.png b/core/res/res/drawable-hdpi/compass_arrow.png
new file mode 100644
index 0000000..6dbd900
--- /dev/null
+++ b/core/res/res/drawable-hdpi/compass_arrow.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/compass_base.png b/core/res/res/drawable-hdpi/compass_base.png
new file mode 100644
index 0000000..298fc09
--- /dev/null
+++ b/core/res/res/drawable-hdpi/compass_base.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/create_contact.png b/core/res/res/drawable-hdpi/create_contact.png
new file mode 100644
index 0000000..19d59b4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/create_contact.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/dark_header.9.png b/core/res/res/drawable-hdpi/dark_header.9.png
new file mode 100644
index 0000000..a2fa569
--- /dev/null
+++ b/core/res/res/drawable-hdpi/dark_header.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/dialog_divider_horizontal_light.9.png b/core/res/res/drawable-hdpi/dialog_divider_horizontal_light.9.png
new file mode 100644
index 0000000..441ef32
--- /dev/null
+++ b/core/res/res/drawable-hdpi/dialog_divider_horizontal_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png b/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png
new file mode 100644
index 0000000..c7803a2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png b/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png
new file mode 100644
index 0000000..d8d8aa9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png b/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png
new file mode 100644
index 0000000..63859f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png b/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png
new file mode 100644
index 0000000..ced2832
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_dim_dark.9.png b/core/res/res/drawable-hdpi/divider_horizontal_dim_dark.9.png
new file mode 100644
index 0000000..63859f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_dim_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_textfield.9.png b/core/res/res/drawable-hdpi/divider_horizontal_textfield.9.png
new file mode 100644
index 0000000..23b0b51
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_textfield.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_vertical_bright.9.png b/core/res/res/drawable-hdpi/divider_vertical_bright.9.png
new file mode 100644
index 0000000..128a4de
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_vertical_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/editbox_background_focus_yellow.9.png b/core/res/res/drawable-hdpi/editbox_background_focus_yellow.9.png
new file mode 100644
index 0000000..70cd52b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/editbox_background_focus_yellow.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/editbox_background_normal.9.png b/core/res/res/drawable-hdpi/editbox_background_normal.9.png
new file mode 100644
index 0000000..ce12b3b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/editbox_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/editbox_dropdown_background.9.png b/core/res/res/drawable-hdpi/editbox_dropdown_background.9.png
new file mode 100644
index 0000000..e7967d5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/editbox_dropdown_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/editbox_dropdown_background_dark.9.png b/core/res/res/drawable-hdpi/editbox_dropdown_background_dark.9.png
new file mode 100644
index 0000000..4cce373
--- /dev/null
+++ b/core/res/res/drawable-hdpi/editbox_dropdown_background_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_angel.png b/core/res/res/drawable-hdpi/emo_im_angel.png
new file mode 100644
index 0000000..10742a6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_angel.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_cool.png b/core/res/res/drawable-hdpi/emo_im_cool.png
new file mode 100644
index 0000000..e3c8654
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_cool.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_crying.png b/core/res/res/drawable-hdpi/emo_im_crying.png
new file mode 100644
index 0000000..b23791c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_crying.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_foot_in_mouth.png b/core/res/res/drawable-hdpi/emo_im_foot_in_mouth.png
new file mode 100644
index 0000000..050b7be
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_foot_in_mouth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_happy.png b/core/res/res/drawable-hdpi/emo_im_happy.png
new file mode 100644
index 0000000..69e3bed
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_happy.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_kissing.png b/core/res/res/drawable-hdpi/emo_im_kissing.png
new file mode 100644
index 0000000..0cca68e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_kissing.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_laughing.png b/core/res/res/drawable-hdpi/emo_im_laughing.png
new file mode 100644
index 0000000..8406ad0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_laughing.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_lips_are_sealed.png b/core/res/res/drawable-hdpi/emo_im_lips_are_sealed.png
new file mode 100644
index 0000000..222f175
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_lips_are_sealed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_money_mouth.png b/core/res/res/drawable-hdpi/emo_im_money_mouth.png
new file mode 100644
index 0000000..d711bfb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_money_mouth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_sad.png b/core/res/res/drawable-hdpi/emo_im_sad.png
new file mode 100644
index 0000000..40017f1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_sad.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_surprised.png b/core/res/res/drawable-hdpi/emo_im_surprised.png
new file mode 100644
index 0000000..4b2af7a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_surprised.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_tongue_sticking_out.png b/core/res/res/drawable-hdpi/emo_im_tongue_sticking_out.png
new file mode 100644
index 0000000..42ac80d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_tongue_sticking_out.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_undecided.png b/core/res/res/drawable-hdpi/emo_im_undecided.png
new file mode 100644
index 0000000..2cf5bd2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_undecided.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_winking.png b/core/res/res/drawable-hdpi/emo_im_winking.png
new file mode 100644
index 0000000..a3a0876
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_winking.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_wtf.png b/core/res/res/drawable-hdpi/emo_im_wtf.png
new file mode 100644
index 0000000..86c4bda
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_wtf.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_yelling.png b/core/res/res/drawable-hdpi/emo_im_yelling.png
new file mode 100644
index 0000000..cfd991a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_yelling.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_ic_maximized.9.png b/core/res/res/drawable-hdpi/expander_ic_maximized.9.png
new file mode 100644
index 0000000..4dcb984
--- /dev/null
+++ b/core/res/res/drawable-hdpi/expander_ic_maximized.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_ic_minimized.9.png b/core/res/res/drawable-hdpi/expander_ic_minimized.9.png
new file mode 100644
index 0000000..45b7322
--- /dev/null
+++ b/core/res/res/drawable-hdpi/expander_ic_minimized.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/focused_application_background_static.png b/core/res/res/drawable-hdpi/focused_application_background_static.png
new file mode 100644
index 0000000..6872f26
--- /dev/null
+++ b/core/res/res/drawable-hdpi/focused_application_background_static.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/frame_gallery_thumb.9.png b/core/res/res/drawable-hdpi/frame_gallery_thumb.9.png
new file mode 100644
index 0000000..8edbd3f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/frame_gallery_thumb.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/frame_gallery_thumb_pressed.9.png b/core/res/res/drawable-hdpi/frame_gallery_thumb_pressed.9.png
new file mode 100644
index 0000000..986e6d5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/frame_gallery_thumb_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/frame_gallery_thumb_selected.9.png b/core/res/res/drawable-hdpi/frame_gallery_thumb_selected.9.png
new file mode 100644
index 0000000..95f3ab5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/frame_gallery_thumb_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_selected_default.9.png b/core/res/res/drawable-hdpi/gallery_selected_default.9.png
new file mode 100644
index 0000000..99403aa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_selected_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_selected_focused.9.png b/core/res/res/drawable-hdpi/gallery_selected_focused.9.png
new file mode 100644
index 0000000..3aa2e17
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_selected_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_selected_pressed.9.png b/core/res/res/drawable-hdpi/gallery_selected_pressed.9.png
new file mode 100644
index 0000000..8f1e752
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_selected_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_unselected_default.9.png b/core/res/res/drawable-hdpi/gallery_unselected_default.9.png
new file mode 100644
index 0000000..855dca1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_unselected_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_unselected_pressed.9.png b/core/res/res/drawable-hdpi/gallery_unselected_pressed.9.png
new file mode 100644
index 0000000..5ec400c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_unselected_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/grid_selector_background_focus.9.png b/core/res/res/drawable-hdpi/grid_selector_background_focus.9.png
new file mode 100644
index 0000000..be2aeed
--- /dev/null
+++ b/core/res/res/drawable-hdpi/grid_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/grid_selector_background_pressed.9.png b/core/res/res/drawable-hdpi/grid_selector_background_pressed.9.png
new file mode 100644
index 0000000..27e455a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/grid_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/highlight_disabled.9.png b/core/res/res/drawable-hdpi/highlight_disabled.9.png
new file mode 100644
index 0000000..46f755d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/highlight_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/highlight_pressed.9.png b/core/res/res/drawable-hdpi/highlight_pressed.9.png
new file mode 100644
index 0000000..91d7db1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/highlight_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/highlight_selected.9.png b/core/res/res/drawable-hdpi/highlight_selected.9.png
new file mode 100644
index 0000000..6e92dd5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/highlight_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_round_more_disabled.png b/core/res/res/drawable-hdpi/ic_btn_round_more_disabled.png
new file mode 100644
index 0000000..0125944
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_round_more_disabled.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_round_more_normal.png b/core/res/res/drawable-hdpi/ic_btn_round_more_normal.png
new file mode 100644
index 0000000..33d7f89
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_round_more_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_search.png b/core/res/res/drawable-hdpi/ic_btn_search.png
new file mode 100644
index 0000000..23eebf5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_search.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_speak_now.png b/core/res/res/drawable-hdpi/ic_btn_speak_now.png
new file mode 100644
index 0000000..6dc01fb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_speak_now.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_disabled.png b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_disabled.png
new file mode 100644
index 0000000..19fe4d4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_disabled.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_normal.png b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_normal.png
new file mode 100644
index 0000000..c5a0594
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_disabled.png b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_disabled.png
new file mode 100644
index 0000000..e5b22e8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_disabled.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_normal.png b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_normal.png
new file mode 100644
index 0000000..0612d01
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_bullet_key_permission.png b/core/res/res/drawable-hdpi/ic_bullet_key_permission.png
new file mode 100644
index 0000000..98d95dc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_bullet_key_permission.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_contact_picture.png b/core/res/res/drawable-hdpi/ic_contact_picture.png
new file mode 100644
index 0000000..a60565a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_contact_picture.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_delete.png b/core/res/res/drawable-hdpi/ic_delete.png
new file mode 100644
index 0000000..f3e53d7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_delete.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_alert.png b/core/res/res/drawable-hdpi/ic_dialog_alert.png
new file mode 100644
index 0000000..7f905ba
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_alert.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_dialer.png b/core/res/res/drawable-hdpi/ic_dialog_dialer.png
new file mode 100644
index 0000000..2ded243
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_dialer.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_email.png b/core/res/res/drawable-hdpi/ic_dialog_email.png
new file mode 100644
index 0000000..faea271
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_email.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_info.png b/core/res/res/drawable-hdpi/ic_dialog_info.png
new file mode 100644
index 0000000..efee1ef
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_info.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_map.png b/core/res/res/drawable-hdpi/ic_dialog_map.png
new file mode 100644
index 0000000..f102b08
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_map.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_menu_generic.png b/core/res/res/drawable-hdpi/ic_dialog_menu_generic.png
new file mode 100644
index 0000000..ef8a877
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_menu_generic.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_time.png b/core/res/res/drawable-hdpi/ic_dialog_time.png
new file mode 100644
index 0000000..337a43a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_time.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_usb.png b/core/res/res/drawable-hdpi/ic_dialog_usb.png
new file mode 100644
index 0000000..e69e14a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_usb.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_emergency.png b/core/res/res/drawable-hdpi/ic_emergency.png
new file mode 100644
index 0000000..a2dd372
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_emergency.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_input_add.png b/core/res/res/drawable-hdpi/ic_input_add.png
new file mode 100644
index 0000000..d26ebac
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_input_add.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_input_delete.png b/core/res/res/drawable-hdpi/ic_input_delete.png
new file mode 100644
index 0000000..f35f89f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_input_delete.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_input_get.png b/core/res/res/drawable-hdpi/ic_input_get.png
new file mode 100644
index 0000000..e2b665a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_input_get.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_launcher_android.png b/core/res/res/drawable-hdpi/ic_launcher_android.png
new file mode 100644
index 0000000..d70b8ca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_launcher_android.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_airplane_mode.png b/core/res/res/drawable-hdpi/ic_lock_airplane_mode.png
new file mode 100644
index 0000000..610f9d0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_airplane_mode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_airplane_mode_off.png b/core/res/res/drawable-hdpi/ic_lock_airplane_mode_off.png
new file mode 100644
index 0000000..cd50647
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_airplane_mode_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_idle_alarm.png b/core/res/res/drawable-hdpi/ic_lock_idle_alarm.png
new file mode 100644
index 0000000..3f3af06
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_idle_alarm.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_idle_charging.png b/core/res/res/drawable-hdpi/ic_lock_idle_charging.png
new file mode 100644
index 0000000..42572ee
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_idle_charging.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_idle_lock.png b/core/res/res/drawable-hdpi/ic_lock_idle_lock.png
new file mode 100644
index 0000000..11163d8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_idle_lock.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_idle_low_battery.png b/core/res/res/drawable-hdpi/ic_lock_idle_low_battery.png
new file mode 100644
index 0000000..30ff905
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_idle_low_battery.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_lock.png b/core/res/res/drawable-hdpi/ic_lock_lock.png
new file mode 100644
index 0000000..0fc79e1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_lock.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_power_off.png b/core/res/res/drawable-hdpi/ic_lock_power_off.png
new file mode 100644
index 0000000..2f120c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_power_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_silent_mode.png b/core/res/res/drawable-hdpi/ic_lock_silent_mode.png
new file mode 100644
index 0000000..00e1960
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_silent_mode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_silent_mode_off.png b/core/res/res/drawable-hdpi/ic_lock_silent_mode_off.png
new file mode 100644
index 0000000..6b4ce89
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_silent_mode_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_maps_indicator_current_position.png b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position.png
new file mode 100644
index 0000000..bc9160d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim1.png b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim1.png
new file mode 100644
index 0000000..d3d9339
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim2.png b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim2.png
new file mode 100644
index 0000000..e32c223
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim3.png b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim3.png
new file mode 100644
index 0000000..cf2db7c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_ff.png b/core/res/res/drawable-hdpi/ic_media_ff.png
new file mode 100644
index 0000000..b0dc05b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_ff.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_next.png b/core/res/res/drawable-hdpi/ic_media_next.png
new file mode 100644
index 0000000..2552f4e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_next.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_pause.png b/core/res/res/drawable-hdpi/ic_media_pause.png
new file mode 100644
index 0000000..d4670c2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_pause.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_play.png b/core/res/res/drawable-hdpi/ic_media_play.png
new file mode 100644
index 0000000..e67ec80
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_play.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_previous.png b/core/res/res/drawable-hdpi/ic_media_previous.png
new file mode 100644
index 0000000..05eba71
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_previous.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_rew.png b/core/res/res/drawable-hdpi/ic_media_rew.png
new file mode 100644
index 0000000..88eed2e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_rew.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_account_list.png b/core/res/res/drawable-hdpi/ic_menu_account_list.png
new file mode 100644
index 0000000..f858d2c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_account_list.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_add.png b/core/res/res/drawable-hdpi/ic_menu_add.png
new file mode 100644
index 0000000..65cc01e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_add.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_agenda.png b/core/res/res/drawable-hdpi/ic_menu_agenda.png
new file mode 100644
index 0000000..6bb5cc8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_agenda.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_allfriends.png b/core/res/res/drawable-hdpi/ic_menu_allfriends.png
new file mode 100644
index 0000000..8d11ca1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_allfriends.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_always_landscape_portrait.png b/core/res/res/drawable-hdpi/ic_menu_always_landscape_portrait.png
new file mode 100644
index 0000000..7ae1760
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_always_landscape_portrait.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_archive.png b/core/res/res/drawable-hdpi/ic_menu_archive.png
new file mode 100644
index 0000000..9ca5c62
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_archive.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_attachment.png b/core/res/res/drawable-hdpi/ic_menu_attachment.png
new file mode 100644
index 0000000..8f11153
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_attachment.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_back.png b/core/res/res/drawable-hdpi/ic_menu_back.png
new file mode 100644
index 0000000..a6cd712
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_back.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_block.png b/core/res/res/drawable-hdpi/ic_menu_block.png
new file mode 100644
index 0000000..e1f9c2c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_block.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_blocked_user.png b/core/res/res/drawable-hdpi/ic_menu_blocked_user.png
new file mode 100644
index 0000000..3dd9a4a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_blocked_user.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_call.png b/core/res/res/drawable-hdpi/ic_menu_call.png
new file mode 100644
index 0000000..2ccc087
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_camera.png b/core/res/res/drawable-hdpi/ic_menu_camera.png
new file mode 100644
index 0000000..5a3850f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_camera.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_cc.png b/core/res/res/drawable-hdpi/ic_menu_cc.png
new file mode 100644
index 0000000..47905a5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_cc.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_chat_dashboard.png b/core/res/res/drawable-hdpi/ic_menu_chat_dashboard.png
new file mode 100644
index 0000000..dde6741
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_chat_dashboard.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_clear_playlist.png b/core/res/res/drawable-hdpi/ic_menu_clear_playlist.png
new file mode 100644
index 0000000..e6be48b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_clear_playlist.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_close_clear_cancel.png b/core/res/res/drawable-hdpi/ic_menu_close_clear_cancel.png
new file mode 100644
index 0000000..a54ea9d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_close_clear_cancel.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_compass.png b/core/res/res/drawable-hdpi/ic_menu_compass.png
new file mode 100644
index 0000000..104270f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_compass.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_compose.png b/core/res/res/drawable-hdpi/ic_menu_compose.png
new file mode 100644
index 0000000..6ad379e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_compose.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_crop.png b/core/res/res/drawable-hdpi/ic_menu_crop.png
new file mode 100644
index 0000000..0d4c9fe
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_crop.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_day.png b/core/res/res/drawable-hdpi/ic_menu_day.png
new file mode 100644
index 0000000..84429aa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_day.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_delete.png b/core/res/res/drawable-hdpi/ic_menu_delete.png
new file mode 100644
index 0000000..2aed26a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_delete.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_directions.png b/core/res/res/drawable-hdpi/ic_menu_directions.png
new file mode 100644
index 0000000..23f6eb3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_directions.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_edit.png b/core/res/res/drawable-hdpi/ic_menu_edit.png
new file mode 100644
index 0000000..602dd10
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_edit.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_emoticons.png b/core/res/res/drawable-hdpi/ic_menu_emoticons.png
new file mode 100644
index 0000000..2fab515
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_emoticons.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_end_conversation.png b/core/res/res/drawable-hdpi/ic_menu_end_conversation.png
new file mode 100644
index 0000000..c05a207
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_end_conversation.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_forward.png b/core/res/res/drawable-hdpi/ic_menu_forward.png
new file mode 100644
index 0000000..606e6aa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_forward.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_friendslist.png b/core/res/res/drawable-hdpi/ic_menu_friendslist.png
new file mode 100644
index 0000000..a90e573
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_friendslist.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_gallery.png b/core/res/res/drawable-hdpi/ic_menu_gallery.png
new file mode 100644
index 0000000..76dfbc3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_gallery.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_goto.png b/core/res/res/drawable-hdpi/ic_menu_goto.png
new file mode 100644
index 0000000..a1acecb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_goto.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_help.png b/core/res/res/drawable-hdpi/ic_menu_help.png
new file mode 100644
index 0000000..4300e86
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_help.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_home.png b/core/res/res/drawable-hdpi/ic_menu_home.png
new file mode 100644
index 0000000..35cb52a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_home.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_info_details.png b/core/res/res/drawable-hdpi/ic_menu_info_details.png
new file mode 100644
index 0000000..7696ceb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_info_details.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_invite.png b/core/res/res/drawable-hdpi/ic_menu_invite.png
new file mode 100644
index 0000000..3cb129f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_invite.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_login.png b/core/res/res/drawable-hdpi/ic_menu_login.png
new file mode 100644
index 0000000..d23ebf0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_login.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_manage.png b/core/res/res/drawable-hdpi/ic_menu_manage.png
new file mode 100644
index 0000000..c7c4cbce
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_manage.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_mapmode.png b/core/res/res/drawable-hdpi/ic_menu_mapmode.png
new file mode 100644
index 0000000..c895ccb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_mapmode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_mark.png b/core/res/res/drawable-hdpi/ic_menu_mark.png
new file mode 100644
index 0000000..724d787
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_mark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_month.png b/core/res/res/drawable-hdpi/ic_menu_month.png
new file mode 100644
index 0000000..3e55ae6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_month.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_more.png b/core/res/res/drawable-hdpi/ic_menu_more.png
new file mode 100644
index 0000000..ed4376f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_more.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_my_calendar.png b/core/res/res/drawable-hdpi/ic_menu_my_calendar.png
new file mode 100644
index 0000000..3d6ea1f3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_my_calendar.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_mylocation.png b/core/res/res/drawable-hdpi/ic_menu_mylocation.png
new file mode 100644
index 0000000..1bcb0cd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_mylocation.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_myplaces.png b/core/res/res/drawable-hdpi/ic_menu_myplaces.png
new file mode 100644
index 0000000..5f726d8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_myplaces.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_notifications.png b/core/res/res/drawable-hdpi/ic_menu_notifications.png
new file mode 100644
index 0000000..fb63937
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_notifications.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_play_clip.png b/core/res/res/drawable-hdpi/ic_menu_play_clip.png
new file mode 100644
index 0000000..ddde03a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_play_clip.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_preferences.png b/core/res/res/drawable-hdpi/ic_menu_preferences.png
new file mode 100644
index 0000000..64c42d2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_preferences.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_recent_history.png b/core/res/res/drawable-hdpi/ic_menu_recent_history.png
new file mode 100644
index 0000000..0dd1627
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_recent_history.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_refresh.png b/core/res/res/drawable-hdpi/ic_menu_refresh.png
new file mode 100644
index 0000000..53cacca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_refresh.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_report_image.png b/core/res/res/drawable-hdpi/ic_menu_report_image.png
new file mode 100644
index 0000000..b6aa5d6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_report_image.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_revert.png b/core/res/res/drawable-hdpi/ic_menu_revert.png
new file mode 100644
index 0000000..11860a4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_revert.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_rotate.png b/core/res/res/drawable-hdpi/ic_menu_rotate.png
new file mode 100644
index 0000000..85115af
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_rotate.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_save.png b/core/res/res/drawable-hdpi/ic_menu_save.png
new file mode 100644
index 0000000..fc26c5d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_save.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_search.png b/core/res/res/drawable-hdpi/ic_menu_search.png
new file mode 100644
index 0000000..f78234e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_search.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_send.png b/core/res/res/drawable-hdpi/ic_menu_send.png
new file mode 100644
index 0000000..2567b58
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_send.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_set_as.png b/core/res/res/drawable-hdpi/ic_menu_set_as.png
new file mode 100644
index 0000000..7e79c15
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_set_as.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_share.png b/core/res/res/drawable-hdpi/ic_menu_share.png
new file mode 100644
index 0000000..b41b348
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_share.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_slideshow.png b/core/res/res/drawable-hdpi/ic_menu_slideshow.png
new file mode 100644
index 0000000..53b1a6f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_slideshow.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_sort_alphabetically.png b/core/res/res/drawable-hdpi/ic_menu_sort_alphabetically.png
new file mode 100644
index 0000000..5d68998
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_sort_alphabetically.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_sort_by_size.png b/core/res/res/drawable-hdpi/ic_menu_sort_by_size.png
new file mode 100644
index 0000000..c9388fd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_sort_by_size.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_star.png b/core/res/res/drawable-hdpi/ic_menu_star.png
new file mode 100644
index 0000000..21a2c4b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_star.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_start_conversation.png b/core/res/res/drawable-hdpi/ic_menu_start_conversation.png
new file mode 100644
index 0000000..d63d3a7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_start_conversation.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_stop.png b/core/res/res/drawable-hdpi/ic_menu_stop.png
new file mode 100644
index 0000000..7c99ed4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_stop.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_today.png b/core/res/res/drawable-hdpi/ic_menu_today.png
new file mode 100644
index 0000000..4a9352d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_today.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_upload.png b/core/res/res/drawable-hdpi/ic_menu_upload.png
new file mode 100644
index 0000000..d845112
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_upload.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_upload_you_tube.png b/core/res/res/drawable-hdpi/ic_menu_upload_you_tube.png
new file mode 100644
index 0000000..df5fa7f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_upload_you_tube.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_view.png b/core/res/res/drawable-hdpi/ic_menu_view.png
new file mode 100644
index 0000000..75155d4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_view.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_week.png b/core/res/res/drawable-hdpi/ic_menu_week.png
new file mode 100644
index 0000000..c216eca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_week.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_zoom.png b/core/res/res/drawable-hdpi/ic_menu_zoom.png
new file mode 100644
index 0000000..9fa4d7e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_zoom.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_notification_clear_all.png b/core/res/res/drawable-hdpi/ic_notification_clear_all.png
new file mode 100644
index 0000000..6bff858
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_notification_clear_all.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_notification_overlay.9.png b/core/res/res/drawable-hdpi/ic_notification_overlay.9.png
new file mode 100644
index 0000000..744178f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_partial_secure.png b/core/res/res/drawable-hdpi/ic_partial_secure.png
new file mode 100644
index 0000000..70bd08d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_partial_secure.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_disk_full.png b/core/res/res/drawable-hdpi/ic_popup_disk_full.png
new file mode 100644
index 0000000..b3c00a7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_disk_full.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_reminder.png b/core/res/res/drawable-hdpi/ic_popup_reminder.png
new file mode 100644
index 0000000..9652dde
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_reminder.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_1.png b/core/res/res/drawable-hdpi/ic_popup_sync_1.png
new file mode 100644
index 0000000..a248f59
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_2.png b/core/res/res/drawable-hdpi/ic_popup_sync_2.png
new file mode 100644
index 0000000..756bfc6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_3.png b/core/res/res/drawable-hdpi/ic_popup_sync_3.png
new file mode 100644
index 0000000..e06825b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_4.png b/core/res/res/drawable-hdpi/ic_popup_sync_4.png
new file mode 100644
index 0000000..87ce8f6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_5.png b/core/res/res/drawable-hdpi/ic_popup_sync_5.png
new file mode 100644
index 0000000..635480c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_6.png b/core/res/res/drawable-hdpi/ic_popup_sync_6.png
new file mode 100644
index 0000000..b339eb2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_6.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_search_category_default.png b/core/res/res/drawable-hdpi/ic_search_category_default.png
new file mode 100644
index 0000000..4038129
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_search_category_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_secure.png b/core/res/res/drawable-hdpi/ic_secure.png
new file mode 100644
index 0000000..5fb62c2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_secure.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_text_dot.png b/core/res/res/drawable-hdpi/ic_text_dot.png
new file mode 100644
index 0000000..a7eaec5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_text_dot.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_vibrate.png b/core/res/res/drawable-hdpi/ic_vibrate.png
new file mode 100644
index 0000000..3d1e9a5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_vibrate.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume.png b/core/res/res/drawable-hdpi/ic_volume.png
new file mode 100644
index 0000000..ec555f1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_bluetooth_ad2p.png b/core/res/res/drawable-hdpi/ic_volume_bluetooth_ad2p.png
new file mode 100644
index 0000000..31851e1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_bluetooth_ad2p.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_bluetooth_in_call.png b/core/res/res/drawable-hdpi/ic_volume_bluetooth_in_call.png
new file mode 100644
index 0000000..108a9e1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_bluetooth_in_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_off.png b/core/res/res/drawable-hdpi/ic_volume_off.png
new file mode 100644
index 0000000..3ace6bf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_off_small.png b/core/res/res/drawable-hdpi/ic_volume_off_small.png
new file mode 100644
index 0000000..4b36677
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_off_small.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_small.png b/core/res/res/drawable-hdpi/ic_volume_small.png
new file mode 100644
index 0000000..538e304
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_small.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/icon_highlight_rectangle.9.png b/core/res/res/drawable-hdpi/icon_highlight_rectangle.9.png
new file mode 100644
index 0000000..a4da974
--- /dev/null
+++ b/core/res/res/drawable-hdpi/icon_highlight_rectangle.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/icon_highlight_square.9.png b/core/res/res/drawable-hdpi/icon_highlight_square.9.png
new file mode 100644
index 0000000..6f9a442
--- /dev/null
+++ b/core/res/res/drawable-hdpi/icon_highlight_square.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ime_qwerty.png b/core/res/res/drawable-hdpi/ime_qwerty.png
new file mode 100644
index 0000000..f9967cc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ime_qwerty.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_green_up.png b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_green_up.png
new file mode 100644
index 0000000..6560696
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_green_up.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png
new file mode 100644
index 0000000..698c3ec
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png
new file mode 100644
index 0000000..0102a61
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png
new file mode 100644
index 0000000..82ad8f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png
new file mode 100644
index 0000000..f9d0d33
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_input_error.png b/core/res/res/drawable-hdpi/indicator_input_error.png
new file mode 100644
index 0000000..213976c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_input_error.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_accessory_bg_landscape.9.png b/core/res/res/drawable-hdpi/keyboard_accessory_bg_landscape.9.png
new file mode 100644
index 0000000..5b0f6c5a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_accessory_bg_landscape.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_background.9.png b/core/res/res/drawable-hdpi/keyboard_background.9.png
new file mode 100644
index 0000000..7a03b8e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_key_feedback_background.9.png b/core/res/res/drawable-hdpi/keyboard_key_feedback_background.9.png
new file mode 100644
index 0000000..dc3e1f9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_key_feedback_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png b/core/res/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
new file mode 100644
index 0000000..c67ed53
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_popup_panel_background.9.png b/core/res/res/drawable-hdpi/keyboard_popup_panel_background.9.png
new file mode 100644
index 0000000..8e2461b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_popup_panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_textfield_selected.9.png b/core/res/res/drawable-hdpi/keyboard_textfield_selected.9.png
new file mode 100644
index 0000000..61db22c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_textfield_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/light_header.9.png b/core/res/res/drawable-hdpi/light_header.9.png
new file mode 100644
index 0000000..27db59d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/light_header.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png b/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png
new file mode 100644
index 0000000..c40233e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_focus.9.png b/core/res/res/drawable-hdpi/list_selector_background_focus.9.png
new file mode 100644
index 0000000..d8e16b9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/list_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png b/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png
new file mode 100644
index 0000000..1676ca7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png b/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png
new file mode 100644
index 0000000..ba79cf7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/loading_tile.png b/core/res/res/drawable-hdpi/loading_tile.png
new file mode 100644
index 0000000..691ca45
--- /dev/null
+++ b/core/res/res/drawable-hdpi/loading_tile.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/maps_google_logo.png b/core/res/res/drawable-hdpi/maps_google_logo.png
new file mode 100644
index 0000000..5956ee2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/maps_google_logo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_background.9.png b/core/res/res/drawable-hdpi/menu_background.9.png
new file mode 100644
index 0000000..cbe62af
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png b/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png
new file mode 100644
index 0000000..0812487
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_separator.9.png b/core/res/res/drawable-hdpi/menu_separator.9.png
new file mode 100644
index 0000000..3685b4e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menu_separator.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_submenu_background.9.png b/core/res/res/drawable-hdpi/menu_submenu_background.9.png
new file mode 100644
index 0000000..cbd4400
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menu_submenu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menuitem_background_focus.9.png b/core/res/res/drawable-hdpi/menuitem_background_focus.9.png
new file mode 100644
index 0000000..d8e16b9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menuitem_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menuitem_background_pressed.9.png b/core/res/res/drawable-hdpi/menuitem_background_pressed.9.png
new file mode 100644
index 0000000..ba79cf7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menuitem_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_solid_focused.9.png b/core/res/res/drawable-hdpi/menuitem_background_solid_focused.9.png
similarity index 100%
rename from core/res/res/drawable/menuitem_background_solid_focused.9.png
rename to core/res/res/drawable-hdpi/menuitem_background_solid_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_solid_pressed.9.png b/core/res/res/drawable-hdpi/menuitem_background_solid_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/menuitem_background_solid_pressed.9.png
rename to core/res/res/drawable-hdpi/menuitem_background_solid_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menuitem_checkbox_on.png b/core/res/res/drawable-hdpi/menuitem_checkbox_on.png
new file mode 100644
index 0000000..e90f631
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menuitem_checkbox_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/no_tile_128.png b/core/res/res/drawable-hdpi/no_tile_128.png
new file mode 100644
index 0000000..86b998d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/no_tile_128.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_background.9.png b/core/res/res/drawable-hdpi/panel_background.9.png
new file mode 100644
index 0000000..bfe5713
--- /dev/null
+++ b/core/res/res/drawable-hdpi/panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_picture_frame_bg_focus_blue.9.png b/core/res/res/drawable-hdpi/panel_picture_frame_bg_focus_blue.9.png
new file mode 100644
index 0000000..fdafdf5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/panel_picture_frame_bg_focus_blue.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_picture_frame_bg_normal.9.png b/core/res/res/drawable-hdpi/panel_picture_frame_bg_normal.9.png
new file mode 100644
index 0000000..a654277
--- /dev/null
+++ b/core/res/res/drawable-hdpi/panel_picture_frame_bg_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_picture_frame_bg_pressed_blue.9.png b/core/res/res/drawable-hdpi/panel_picture_frame_bg_pressed_blue.9.png
new file mode 100644
index 0000000..73162a5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/panel_picture_frame_bg_pressed_blue.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/pickerbox_background.png b/core/res/res/drawable-hdpi/pickerbox_background.png
new file mode 100644
index 0000000..9315a31
--- /dev/null
+++ b/core/res/res/drawable-hdpi/pickerbox_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/pickerbox_selected.9.png b/core/res/res/drawable-hdpi/pickerbox_selected.9.png
new file mode 100644
index 0000000..a88ec63
--- /dev/null
+++ b/core/res/res/drawable-hdpi/pickerbox_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/pickerbox_unselected.9.png b/core/res/res/drawable-hdpi/pickerbox_unselected.9.png
new file mode 100644
index 0000000..9f6b7cb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/pickerbox_unselected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/picture_emergency.png b/core/res/res/drawable-hdpi/picture_emergency.png
new file mode 100644
index 0000000..b0f10f9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/picture_emergency.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/picture_frame.9.png b/core/res/res/drawable-hdpi/picture_frame.9.png
new file mode 100644
index 0000000..c038b2a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/picture_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_bright.9.png b/core/res/res/drawable-hdpi/popup_bottom_bright.9.png
new file mode 100644
index 0000000..cca47d3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_bottom_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_dark.9.png b/core/res/res/drawable-hdpi/popup_bottom_dark.9.png
new file mode 100644
index 0000000..62a0bd0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_bottom_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_medium.9.png b/core/res/res/drawable-hdpi/popup_bottom_medium.9.png
new file mode 100644
index 0000000..6ebb4f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_bottom_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_bright.9.png b/core/res/res/drawable-hdpi/popup_center_bright.9.png
new file mode 100644
index 0000000..756e9ed
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_center_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_dark.9.png b/core/res/res/drawable-hdpi/popup_center_dark.9.png
new file mode 100644
index 0000000..77b4524
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_center_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_medium.9.png b/core/res/res/drawable-hdpi/popup_center_medium.9.png
new file mode 100644
index 0000000..de4be2a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_center_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_full_bright.9.png b/core/res/res/drawable-hdpi/popup_full_bright.9.png
new file mode 100644
index 0000000..6c30bec
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_full_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_full_dark.9.png b/core/res/res/drawable-hdpi/popup_full_dark.9.png
new file mode 100644
index 0000000..fc8c00e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_full_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_inline_error.9.png b/core/res/res/drawable-hdpi/popup_inline_error.9.png
new file mode 100644
index 0000000..b188d81
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_inline_error.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_inline_error_above.9.png b/core/res/res/drawable-hdpi/popup_inline_error_above.9.png
new file mode 100644
index 0000000..3d4e8ba
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_inline_error_above.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_top_bright.9.png b/core/res/res/drawable-hdpi/popup_top_bright.9.png
new file mode 100644
index 0000000..ddd30ab
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_top_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_top_dark.9.png b/core/res/res/drawable-hdpi/popup_top_dark.9.png
new file mode 100644
index 0000000..144d0fc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_top_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_away.png b/core/res/res/drawable-hdpi/presence_away.png
new file mode 100644
index 0000000..d4aa66b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_away.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_busy.png b/core/res/res/drawable-hdpi/presence_busy.png
new file mode 100644
index 0000000..4b27853
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_busy.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_invisible.png b/core/res/res/drawable-hdpi/presence_invisible.png
new file mode 100644
index 0000000..0e27fba
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_invisible.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_offline.png b/core/res/res/drawable-hdpi/presence_offline.png
new file mode 100644
index 0000000..e511aa4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_offline.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_online.png b/core/res/res/drawable-hdpi/presence_online.png
new file mode 100644
index 0000000..d787d2f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_online.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/pressed_application_background_static.png b/core/res/res/drawable-hdpi/pressed_application_background_static.png
new file mode 100644
index 0000000..dae96e6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/pressed_application_background_static.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/progressbar_indeterminate1.png b/core/res/res/drawable-hdpi/progressbar_indeterminate1.png
new file mode 100644
index 0000000..ea88e32
--- /dev/null
+++ b/core/res/res/drawable-hdpi/progressbar_indeterminate1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/progressbar_indeterminate2.png b/core/res/res/drawable-hdpi/progressbar_indeterminate2.png
new file mode 100644
index 0000000..436c48c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/progressbar_indeterminate2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/progressbar_indeterminate3.png b/core/res/res/drawable-hdpi/progressbar_indeterminate3.png
new file mode 100644
index 0000000..ea88e32
--- /dev/null
+++ b/core/res/res/drawable-hdpi/progressbar_indeterminate3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/radiobutton_off_background.png b/core/res/res/drawable-hdpi/radiobutton_off_background.png
new file mode 100644
index 0000000..5ce33cd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/radiobutton_off_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/radiobutton_on_background.png b/core/res/res/drawable-hdpi/radiobutton_on_background.png
new file mode 100644
index 0000000..0f46071
--- /dev/null
+++ b/core/res/res/drawable-hdpi/radiobutton_on_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_big_half.png b/core/res/res/drawable-hdpi/rate_star_big_half.png
new file mode 100644
index 0000000..61906a5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_big_half.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_big_off.png b/core/res/res/drawable-hdpi/rate_star_big_off.png
new file mode 100644
index 0000000..a688a45
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_big_on.png b/core/res/res/drawable-hdpi/rate_star_big_on.png
new file mode 100644
index 0000000..77cb067
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_small_half.png b/core/res/res/drawable-hdpi/rate_star_small_half.png
new file mode 100644
index 0000000..6b2efd9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_small_half.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_small_off.png b/core/res/res/drawable-hdpi/rate_star_small_off.png
new file mode 100644
index 0000000..8422919
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_small_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_small_on.png b/core/res/res/drawable-hdpi/rate_star_small_on.png
new file mode 100644
index 0000000..45e2324
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_small_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/reticle.png b/core/res/res/drawable-hdpi/reticle.png
new file mode 100644
index 0000000..a3e8c1b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/reticle.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/screen_progress_frame.9.png b/core/res/res/drawable-hdpi/screen_progress_frame.9.png
new file mode 100644
index 0000000..3f9d738
--- /dev/null
+++ b/core/res/res/drawable-hdpi/screen_progress_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/screen_progress_inner.9.png b/core/res/res/drawable-hdpi/screen_progress_inner.9.png
new file mode 100644
index 0000000..10c7da5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/screen_progress_inner.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrollbar_handle_accelerated_anim2.9.png b/core/res/res/drawable-hdpi/scrollbar_handle_accelerated_anim2.9.png
new file mode 100644
index 0000000..b540cd3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/scrollbar_handle_accelerated_anim2.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrollbar_handle_horizontal.9.png b/core/res/res/drawable-hdpi/scrollbar_handle_horizontal.9.png
new file mode 100644
index 0000000..cd206e2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/scrollbar_handle_horizontal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrollbar_handle_vertical.9.png b/core/res/res/drawable-hdpi/scrollbar_handle_vertical.9.png
new file mode 100644
index 0000000..3ec0791
--- /dev/null
+++ b/core/res/res/drawable-hdpi/scrollbar_handle_vertical.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/search_dropdown_background.9.png b/core/res/res/drawable-hdpi/search_dropdown_background.9.png
new file mode 100644
index 0000000..e6945db
--- /dev/null
+++ b/core/res/res/drawable-hdpi/search_dropdown_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/search_plate.9.png b/core/res/res/drawable-hdpi/search_plate.9.png
new file mode 100644
index 0000000..561c9fa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/search_plate.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/search_plate_global.9.png b/core/res/res/drawable-hdpi/search_plate_global.9.png
new file mode 100644
index 0000000..32c6dc3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/search_plate_global.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/seek_thumb_normal.png b/core/res/res/drawable-hdpi/seek_thumb_normal.png
new file mode 100644
index 0000000..cc83a7d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/seek_thumb_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/seek_thumb_pressed.png b/core/res/res/drawable-hdpi/seek_thumb_pressed.png
new file mode 100644
index 0000000..15f79ea
--- /dev/null
+++ b/core/res/res/drawable-hdpi/seek_thumb_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/seek_thumb_selected.png b/core/res/res/drawable-hdpi/seek_thumb_selected.png
new file mode 100644
index 0000000..8a7cf68
--- /dev/null
+++ b/core/res/res/drawable-hdpi/seek_thumb_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/settings_header_raw.9.png b/core/res/res/drawable-hdpi/settings_header_raw.9.png
new file mode 100644
index 0000000..6857c0f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/settings_header_raw.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_black_16.png b/core/res/res/drawable-hdpi/spinner_black_16.png
new file mode 100644
index 0000000..eb34867
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_black_16.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_black_20.png b/core/res/res/drawable-hdpi/spinner_black_20.png
new file mode 100644
index 0000000..dac06d7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_black_20.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_black_48.png b/core/res/res/drawable-hdpi/spinner_black_48.png
new file mode 100644
index 0000000..337f72a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_black_48.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_black_76.png b/core/res/res/drawable-hdpi/spinner_black_76.png
new file mode 100644
index 0000000..2edc3e7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_black_76.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_dropdown_background_down.9.png b/core/res/res/drawable-hdpi/spinner_dropdown_background_down.9.png
new file mode 100644
index 0000000..566543d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_dropdown_background_down.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_dropdown_background_up.9.png b/core/res/res/drawable-hdpi/spinner_dropdown_background_up.9.png
new file mode 100644
index 0000000..7b883cc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_dropdown_background_up.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_normal.9.png b/core/res/res/drawable-hdpi/spinner_normal.9.png
new file mode 100644
index 0000000..b1f25f0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_press.9.png b/core/res/res/drawable-hdpi/spinner_press.9.png
new file mode 100644
index 0000000..6aab271
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_press.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_select.9.png b/core/res/res/drawable-hdpi/spinner_select.9.png
new file mode 100644
index 0000000..9024d07
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_select.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_white_16.png b/core/res/res/drawable-hdpi/spinner_white_16.png
new file mode 100644
index 0000000..7914a68
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_white_16.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_white_48.png b/core/res/res/drawable-hdpi/spinner_white_48.png
new file mode 100644
index 0000000..faee8ca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_white_48.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_white_76.png b/core/res/res/drawable-hdpi/spinner_white_76.png
new file mode 100644
index 0000000..cd26379
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_white_76.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinnerbox_arrow_first.9.png b/core/res/res/drawable-hdpi/spinnerbox_arrow_first.9.png
new file mode 100644
index 0000000..af80855
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinnerbox_arrow_first.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinnerbox_arrow_last.9.png b/core/res/res/drawable-hdpi/spinnerbox_arrow_last.9.png
new file mode 100644
index 0000000..dc47275
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinnerbox_arrow_last.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinnerbox_arrow_middle.9.png b/core/res/res/drawable-hdpi/spinnerbox_arrow_middle.9.png
new file mode 100644
index 0000000..007f279
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinnerbox_arrow_middle.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinnerbox_arrow_single.9.png b/core/res/res/drawable-hdpi/spinnerbox_arrow_single.9.png
new file mode 100644
index 0000000..24592a3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinnerbox_arrow_single.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/star_big_off.png b/core/res/res/drawable-hdpi/star_big_off.png
new file mode 100644
index 0000000..ee6c942
--- /dev/null
+++ b/core/res/res/drawable-hdpi/star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/star_big_on.png b/core/res/res/drawable-hdpi/star_big_on.png
new file mode 100644
index 0000000..17b4d73
--- /dev/null
+++ b/core/res/res/drawable-hdpi/star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/star_off.png b/core/res/res/drawable-hdpi/star_off.png
new file mode 100644
index 0000000..e1897c7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/star_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/star_on.png b/core/res/res/drawable-hdpi/star_on.png
new file mode 100644
index 0000000..b7440ea
--- /dev/null
+++ b/core/res/res/drawable-hdpi/star_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_ecb_mode.png b/core/res/res/drawable-hdpi/stat_ecb_mode.png
new file mode 100644
index 0000000..91e6c1e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_ecb_mode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_alarm.png b/core/res/res/drawable-hdpi/stat_notify_alarm.png
new file mode 100644
index 0000000..adac8a9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_alarm.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_call_mute.png b/core/res/res/drawable-hdpi/stat_notify_call_mute.png
new file mode 100644
index 0000000..a43139b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_call_mute.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_chat.png b/core/res/res/drawable-hdpi/stat_notify_chat.png
new file mode 100644
index 0000000..7b837b3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_chat.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_disk_full.png b/core/res/res/drawable-hdpi/stat_notify_disk_full.png
new file mode 100644
index 0000000..2163fa7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_disk_full.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_error.png b/core/res/res/drawable-hdpi/stat_notify_error.png
new file mode 100644
index 0000000..9853cda
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_error.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_missed_call.png b/core/res/res/drawable-hdpi/stat_notify_missed_call.png
new file mode 100644
index 0000000..a313360
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_missed_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_more.png b/core/res/res/drawable-hdpi/stat_notify_more.png
new file mode 100644
index 0000000..bbbd59b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_more.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sdcard.png b/core/res/res/drawable-hdpi/stat_notify_sdcard.png
new file mode 100644
index 0000000..0161419
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sdcard.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sdcard_usb.png b/core/res/res/drawable-hdpi/stat_notify_sdcard_usb.png
new file mode 100644
index 0000000..23b2f0a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sdcard_usb.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sim_toolkit.png b/core/res/res/drawable-hdpi/stat_notify_sim_toolkit.png
new file mode 100644
index 0000000..401fbb0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sim_toolkit.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sync.png b/core/res/res/drawable-hdpi/stat_notify_sync.png
new file mode 100644
index 0000000..dacfc3a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sync.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sync_anim0.png b/core/res/res/drawable-hdpi/stat_notify_sync_anim0.png
new file mode 100644
index 0000000..00e2ebb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sync_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sync_error.png b/core/res/res/drawable-hdpi/stat_notify_sync_error.png
new file mode 100644
index 0000000..3083b44
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sync_error.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_voicemail.png b/core/res/res/drawable-hdpi/stat_notify_voicemail.png
new file mode 100644
index 0000000..7f62e94
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_voicemail.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png b/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png
new file mode 100644
index 0000000..712e071
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_0.png b/core/res/res/drawable-hdpi/stat_sys_battery_0.png
new file mode 100644
index 0000000..171b8b5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_10.png b/core/res/res/drawable-hdpi/stat_sys_battery_10.png
new file mode 100644
index 0000000..77e8793
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_10.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_100.png b/core/res/res/drawable-hdpi/stat_sys_battery_100.png
new file mode 100644
index 0000000..d13d083
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_100.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_20.png b/core/res/res/drawable-hdpi/stat_sys_battery_20.png
new file mode 100644
index 0000000..c14dc07
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_20.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_40.png b/core/res/res/drawable-hdpi/stat_sys_battery_40.png
new file mode 100644
index 0000000..a3077b0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_40.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_60.png b/core/res/res/drawable-hdpi/stat_sys_battery_60.png
new file mode 100644
index 0000000..621e905
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_60.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_80.png b/core/res/res/drawable-hdpi/stat_sys_battery_80.png
new file mode 100644
index 0000000..29830e9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_80.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim0.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim0.png
new file mode 100644
index 0000000..61556c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim1.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim1.png
new file mode 100644
index 0000000..985dc0f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim2.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim2.png
new file mode 100644
index 0000000..b319d07
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim3.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim3.png
new file mode 100644
index 0000000..cbf21c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim4.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim4.png
new file mode 100644
index 0000000..51565c3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim5.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim5.png
new file mode 100644
index 0000000..bf41a89
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_unknown.png b/core/res/res/drawable-hdpi/stat_sys_battery_unknown.png
new file mode 100644
index 0000000..8c5daba
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_unknown.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_bluetooth.png b/core/res/res/drawable-hdpi/stat_sys_data_bluetooth.png
new file mode 100644
index 0000000..7cf5962
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png b/core/res/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png
new file mode 100644
index 0000000..3e3f4f0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_connected_3g.png b/core/res/res/drawable-hdpi/stat_sys_data_connected_3g.png
new file mode 100644
index 0000000..42af121
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_connected_3g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_connected_e.png b/core/res/res/drawable-hdpi/stat_sys_data_connected_e.png
new file mode 100644
index 0000000..6106dd4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_connected_e.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_connected_g.png b/core/res/res/drawable-hdpi/stat_sys_data_connected_g.png
new file mode 100644
index 0000000..cc6e2849
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_connected_g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_in_3g.png b/core/res/res/drawable-hdpi/stat_sys_data_in_3g.png
new file mode 100644
index 0000000..5848981
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_in_3g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_in_e.png b/core/res/res/drawable-hdpi/stat_sys_data_in_e.png
new file mode 100644
index 0000000..e4c6c2b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_in_e.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_in_g.png b/core/res/res/drawable-hdpi/stat_sys_data_in_g.png
new file mode 100644
index 0000000..05a910b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_in_g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_inandout_3g.png b/core/res/res/drawable-hdpi/stat_sys_data_inandout_3g.png
new file mode 100644
index 0000000..b4383e2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_inandout_3g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_inandout_e.png b/core/res/res/drawable-hdpi/stat_sys_data_inandout_e.png
new file mode 100644
index 0000000..78b04db
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_inandout_e.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_inandout_g.png b/core/res/res/drawable-hdpi/stat_sys_data_inandout_g.png
new file mode 100644
index 0000000..9475159
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_inandout_g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_out_3g.png b/core/res/res/drawable-hdpi/stat_sys_data_out_3g.png
new file mode 100644
index 0000000..2f49d60
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_out_3g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_out_e.png b/core/res/res/drawable-hdpi/stat_sys_data_out_e.png
new file mode 100644
index 0000000..433fa8d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_out_e.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_out_g.png b/core/res/res/drawable-hdpi/stat_sys_data_out_g.png
new file mode 100644
index 0000000..eb43a91
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_out_g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_usb.png b/core/res/res/drawable-hdpi/stat_sys_data_usb.png
new file mode 100644
index 0000000..7a83544
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_usb.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim0.png b/core/res/res/drawable-hdpi/stat_sys_download_anim0.png
new file mode 100644
index 0000000..a907d79
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim1.png b/core/res/res/drawable-hdpi/stat_sys_download_anim1.png
new file mode 100644
index 0000000..e9f42ad
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim2.png b/core/res/res/drawable-hdpi/stat_sys_download_anim2.png
new file mode 100644
index 0000000..d1682e0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim3.png b/core/res/res/drawable-hdpi/stat_sys_download_anim3.png
new file mode 100644
index 0000000..70e757b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim4.png b/core/res/res/drawable-hdpi/stat_sys_download_anim4.png
new file mode 100644
index 0000000..3b2d7d1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim5.png b/core/res/res/drawable-hdpi/stat_sys_download_anim5.png
new file mode 100644
index 0000000..ced2bb2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_gps_acquiring.png b/core/res/res/drawable-hdpi/stat_sys_gps_acquiring.png
new file mode 100644
index 0000000..fe7b2cc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_gps_acquiring.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_gps_on.png b/core/res/res/drawable-hdpi/stat_sys_gps_on.png
new file mode 100644
index 0000000..6ab4720
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_gps_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_headset.png b/core/res/res/drawable-hdpi/stat_sys_headset.png
new file mode 100644
index 0000000..7a70aea
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_headset.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_no_sim.png b/core/res/res/drawable-hdpi/stat_sys_no_sim.png
new file mode 100644
index 0000000..48d1ca3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_no_sim.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_phone_call.png b/core/res/res/drawable-hdpi/stat_sys_phone_call.png
new file mode 100644
index 0000000..0aa15d6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_phone_call_bluetooth.png b/core/res/res/drawable-hdpi/stat_sys_phone_call_bluetooth.png
new file mode 100644
index 0000000..a143f87
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_phone_call_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_phone_call_forward.png b/core/res/res/drawable-hdpi/stat_sys_phone_call_forward.png
new file mode 100644
index 0000000..b1ab8ac
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_phone_call_on_hold.png b/core/res/res/drawable-hdpi/stat_sys_phone_call_on_hold.png
new file mode 100644
index 0000000..b881a67
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_phone_call_on_hold.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_0.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_0.png
new file mode 100644
index 0000000..938cca7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_0_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_0_cdma.png
new file mode 100644
index 0000000..5ddd177
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_0_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_1.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_1.png
new file mode 100644
index 0000000..6f82aa9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_1_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_1_cdma.png
new file mode 100644
index 0000000..fa4265c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_1_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_2.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_2.png
new file mode 100644
index 0000000..db9752a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_2_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_2_cdma.png
new file mode 100644
index 0000000..c99af17
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_2_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_3.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_3.png
new file mode 100644
index 0000000..70594e5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_3_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_3_cdma.png
new file mode 100644
index 0000000..5e0235f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_3_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_4.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_4.png
new file mode 100644
index 0000000..d361263
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_4_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_4_cdma.png
new file mode 100644
index 0000000..8b110a3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_4_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_0_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_0_cdma.png
new file mode 100644
index 0000000..84b9f94
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_0_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_1_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_1_cdma.png
new file mode 100644
index 0000000..657b572
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_1_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_2_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_2_cdma.png
new file mode 100644
index 0000000..236d44e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_2_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_3_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_3_cdma.png
new file mode 100644
index 0000000..e140735
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_3_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_4_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_4_cdma.png
new file mode 100644
index 0000000..0e4f854
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_4_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ringer_silent.png b/core/res/res/drawable-hdpi/stat_sys_ringer_silent.png
new file mode 100644
index 0000000..d5c301c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ringer_silent.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ringer_vibrate.png b/core/res/res/drawable-hdpi/stat_sys_ringer_vibrate.png
new file mode 100644
index 0000000..21c1c08
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ringer_vibrate.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_0.png b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_0.png
new file mode 100644
index 0000000..f7f5757
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim0.png b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim0.png
new file mode 100644
index 0000000..5f01083
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim1.png b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim1.png
new file mode 100644
index 0000000..f7f5757
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_0.png b/core/res/res/drawable-hdpi/stat_sys_signal_0.png
new file mode 100644
index 0000000..83ef6a3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_1.png b/core/res/res/drawable-hdpi/stat_sys_signal_1.png
new file mode 100644
index 0000000..a1ca717
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_2.png b/core/res/res/drawable-hdpi/stat_sys_signal_2.png
new file mode 100644
index 0000000..a478bd0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_3.png b/core/res/res/drawable-hdpi/stat_sys_signal_3.png
new file mode 100644
index 0000000..a3978de
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_4.png b/core/res/res/drawable-hdpi/stat_sys_signal_4.png
new file mode 100644
index 0000000..1b553e8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_flightmode.png b/core/res/res/drawable-hdpi/stat_sys_signal_flightmode.png
new file mode 100644
index 0000000..6ee35fb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_flightmode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_null.png b/core/res/res/drawable-hdpi/stat_sys_signal_null.png
new file mode 100644
index 0000000..6b103f5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_speakerphone.png b/core/res/res/drawable-hdpi/stat_sys_speakerphone.png
new file mode 100644
index 0000000..62eadb3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_speakerphone.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tty_mode.png b/core/res/res/drawable-hdpi/stat_sys_tty_mode.png
new file mode 100644
index 0000000..4e161c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_tty_mode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim0.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim0.png
new file mode 100644
index 0000000..4b7e942
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png
new file mode 100644
index 0000000..a416350
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim2.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim2.png
new file mode 100644
index 0000000..8d199dd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png
new file mode 100644
index 0000000..dfef071
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim4.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim4.png
new file mode 100644
index 0000000..abe56f1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim5.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim5.png
new file mode 100644
index 0000000..1e917c1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_vp_phone_call.png b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call.png
new file mode 100644
index 0000000..d6b25d2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_bluetooth.png b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_bluetooth.png
new file mode 100644
index 0000000..a143f87
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_on_hold.png b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_on_hold.png
new file mode 100644
index 0000000..53608cf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_on_hold.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_warning.png b/core/res/res/drawable-hdpi/stat_sys_warning.png
new file mode 100644
index 0000000..8f7bd5d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_warning.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_0.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_0.png
new file mode 100644
index 0000000..9a0aa21
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_1.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_1.png
new file mode 100644
index 0000000..39db490
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_2.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_2.png
new file mode 100644
index 0000000..5c0ae76
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_3.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_3.png
new file mode 100644
index 0000000..f7e0b38
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_4.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_4.png
new file mode 100644
index 0000000..5ad5d12
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_background.png b/core/res/res/drawable-hdpi/status_bar_background.png
new file mode 100644
index 0000000..e6a865a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_close_on.9.png b/core/res/res/drawable-hdpi/status_bar_close_on.9.png
new file mode 100644
index 0000000..5acf638
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_header_background.9.png b/core/res/res/drawable-hdpi/status_bar_header_background.9.png
new file mode 100644
index 0000000..be36ff2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_header_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_item_app_background_normal.9.png b/core/res/res/drawable-hdpi/status_bar_item_app_background_normal.9.png
new file mode 100644
index 0000000..4fbfa4f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_item_app_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_item_background_focus.9.png b/core/res/res/drawable-hdpi/status_bar_item_background_focus.9.png
new file mode 100644
index 0000000..0876bc6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_item_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_item_background_normal.9.png b/core/res/res/drawable-hdpi/status_bar_item_background_normal.9.png
new file mode 100644
index 0000000..c01c018
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_item_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_item_background_pressed.9.png b/core/res/res/drawable-hdpi/status_bar_item_background_pressed.9.png
new file mode 100644
index 0000000..343e4ca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_item_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/statusbar_background.png b/core/res/res/drawable-hdpi/statusbar_background.png
new file mode 100644
index 0000000..c2b3a5e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/statusbar_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/submenu_arrow_nofocus.png b/core/res/res/drawable-hdpi/submenu_arrow_nofocus.png
new file mode 100644
index 0000000..afc0891
--- /dev/null
+++ b/core/res/res/drawable-hdpi/submenu_arrow_nofocus.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_action_add.png b/core/res/res/drawable-hdpi/sym_action_add.png
new file mode 100644
index 0000000..6e028b2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_action_add.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_action_call.png b/core/res/res/drawable-hdpi/sym_action_call.png
new file mode 100644
index 0000000..105f7d0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_action_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_action_chat.png b/core/res/res/drawable-hdpi/sym_action_chat.png
new file mode 100644
index 0000000..7fd34f0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_action_chat.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_action_email.png b/core/res/res/drawable-hdpi/sym_action_email.png
new file mode 100644
index 0000000..1d933e4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_action_email.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_call_incoming.png b/core/res/res/drawable-hdpi/sym_call_incoming.png
new file mode 100644
index 0000000..83c75dc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_call_incoming.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_call_missed.png b/core/res/res/drawable-hdpi/sym_call_missed.png
new file mode 100644
index 0000000..abcbbbf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_call_missed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_call_outgoing.png b/core/res/res/drawable-hdpi/sym_call_outgoing.png
new file mode 100644
index 0000000..6cb8653
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_call_outgoing.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_contact_card.png b/core/res/res/drawable-hdpi/sym_contact_card.png
new file mode 100644
index 0000000..fe9c751
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_contact_card.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_def_app_icon.png b/core/res/res/drawable-hdpi/sym_def_app_icon.png
new file mode 100644
index 0000000..4b5384f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_def_app_icon.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_focus.9.png b/core/res/res/drawable-hdpi/tab_focus.9.png
new file mode 100644
index 0000000..0c3a9ee
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_focus_bar_left.9.png b/core/res/res/drawable-hdpi/tab_focus_bar_left.9.png
new file mode 100644
index 0000000..54e3022
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_focus_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_focus_bar_right.9.png b/core/res/res/drawable-hdpi/tab_focus_bar_right.9.png
new file mode 100644
index 0000000..34a85f0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_focus_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_press.9.png b/core/res/res/drawable-hdpi/tab_press.9.png
new file mode 100644
index 0000000..6b3c1c7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_press.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_press_bar_left.9.png b/core/res/res/drawable-hdpi/tab_press_bar_left.9.png
new file mode 100644
index 0000000..f998532
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_press_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_press_bar_right.9.png b/core/res/res/drawable-hdpi/tab_press_bar_right.9.png
new file mode 100644
index 0000000..43515bd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_press_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_selected.9.png b/core/res/res/drawable-hdpi/tab_selected.9.png
new file mode 100644
index 0000000..b128b48
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_selected_bar_left.9.png b/core/res/res/drawable-hdpi/tab_selected_bar_left.9.png
new file mode 100644
index 0000000..a49ef68
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_selected_bar_right.9.png b/core/res/res/drawable-hdpi/tab_selected_bar_right.9.png
new file mode 100644
index 0000000..472f839
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_unselected.9.png b/core/res/res/drawable-hdpi/tab_unselected.9.png
new file mode 100644
index 0000000..ed9e311
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_unselected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_default.9.png b/core/res/res/drawable-hdpi/textfield_default.9.png
new file mode 100644
index 0000000..a2f022a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_disabled.9.png b/core/res/res/drawable-hdpi/textfield_disabled.9.png
new file mode 100644
index 0000000..6a28cb4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_disabled_selected.9.png b/core/res/res/drawable-hdpi/textfield_disabled_selected.9.png
new file mode 100644
index 0000000..0de9cda
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_disabled_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_pressed.9.png b/core/res/res/drawable-hdpi/textfield_pressed.9.png
new file mode 100644
index 0000000..d5892c8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_search_default.9.png b/core/res/res/drawable-hdpi/textfield_search_default.9.png
new file mode 100644
index 0000000..db64da1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_search_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_search_pressed.9.png b/core/res/res/drawable-hdpi/textfield_search_pressed.9.png
new file mode 100644
index 0000000..cde51e4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_search_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_search_selected.9.png b/core/res/res/drawable-hdpi/textfield_search_selected.9.png
new file mode 100644
index 0000000..f4bf352
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_search_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_selected.9.png b/core/res/res/drawable-hdpi/textfield_selected.9.png
new file mode 100644
index 0000000..7a072dd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_disabled.9.png b/core/res/res/drawable-hdpi/timepicker_down_disabled.9.png
new file mode 100644
index 0000000..73b6915
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_disabled_focused.9.png b/core/res/res/drawable-hdpi/timepicker_down_disabled_focused.9.png
new file mode 100644
index 0000000..046e60f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_normal.9.png b/core/res/res/drawable-hdpi/timepicker_down_normal.9.png
new file mode 100644
index 0000000..9baf7cc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_pressed.9.png b/core/res/res/drawable-hdpi/timepicker_down_pressed.9.png
new file mode 100644
index 0000000..d95fdd3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_selected.9.png b/core/res/res/drawable-hdpi/timepicker_down_selected.9.png
new file mode 100644
index 0000000..a84448f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_input_disabled.9.png b/core/res/res/drawable-hdpi/timepicker_input_disabled.9.png
new file mode 100644
index 0000000..aa17a98
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_input_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_input_normal.9.png b/core/res/res/drawable-hdpi/timepicker_input_normal.9.png
new file mode 100644
index 0000000..be78a58
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_input_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_input_pressed.9.png b/core/res/res/drawable-hdpi/timepicker_input_pressed.9.png
new file mode 100644
index 0000000..b28f66c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_input_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_input_selected.9.png b/core/res/res/drawable-hdpi/timepicker_input_selected.9.png
new file mode 100644
index 0000000..2e175e8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_input_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_disabled.9.png b/core/res/res/drawable-hdpi/timepicker_up_disabled.9.png
new file mode 100644
index 0000000..348e48c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_disabled_focused.9.png b/core/res/res/drawable-hdpi/timepicker_up_disabled_focused.9.png
new file mode 100644
index 0000000..93cf3a0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_normal.9.png b/core/res/res/drawable-hdpi/timepicker_up_normal.9.png
new file mode 100644
index 0000000..b4acced
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_pressed.9.png b/core/res/res/drawable-hdpi/timepicker_up_pressed.9.png
new file mode 100644
index 0000000..bd29510
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_selected.9.png b/core/res/res/drawable-hdpi/timepicker_up_selected.9.png
new file mode 100644
index 0000000..a666998
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/title_bar_portrait.9.png b/core/res/res/drawable-hdpi/title_bar_portrait.9.png
new file mode 100644
index 0000000..161432f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/title_bar_portrait.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/title_bar_shadow.9.png b/core/res/res/drawable-hdpi/title_bar_shadow.9.png
new file mode 100644
index 0000000..e67f457
--- /dev/null
+++ b/core/res/res/drawable-hdpi/title_bar_shadow.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/title_bar_tall.png b/core/res/res/drawable-hdpi/title_bar_tall.png
new file mode 100644
index 0000000..f177440
--- /dev/null
+++ b/core/res/res/drawable-hdpi/title_bar_tall.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/toast_frame.9.png b/core/res/res/drawable-hdpi/toast_frame.9.png
new file mode 100644
index 0000000..8f5d811
--- /dev/null
+++ b/core/res/res/drawable-hdpi/toast_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/unknown_image.png b/core/res/res/drawable-hdpi/unknown_image.png
new file mode 100644
index 0000000..76341db
--- /dev/null
+++ b/core/res/res/drawable-hdpi/unknown_image.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/zoom_plate.9.png b/core/res/res/drawable-hdpi/zoom_plate.9.png
new file mode 100644
index 0000000..e97dac1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/zoom_plate.9.png
Binary files differ
diff --git a/core/res/res/drawable-land-hdpi/statusbar_background.png b/core/res/res/drawable-land-hdpi/statusbar_background.png
new file mode 100644
index 0000000..4a955c5
--- /dev/null
+++ b/core/res/res/drawable-land-hdpi/statusbar_background.png
Binary files differ
diff --git a/core/res/res/drawable-land-hdpi/title_bar_tall.png b/core/res/res/drawable-land-hdpi/title_bar_tall.png
new file mode 100644
index 0000000..96b5ffe
--- /dev/null
+++ b/core/res/res/drawable-land-hdpi/title_bar_tall.png
Binary files differ
diff --git a/core/res/res/drawable-land/statusbar_background.png b/core/res/res/drawable-land-mdpi/statusbar_background.png
similarity index 100%
rename from core/res/res/drawable-land/statusbar_background.png
rename to core/res/res/drawable-land-mdpi/statusbar_background.png
Binary files differ
diff --git a/core/res/res/drawable-land/title_bar_tall.png b/core/res/res/drawable-land-mdpi/title_bar_tall.png
similarity index 100%
rename from core/res/res/drawable-land/title_bar_tall.png
rename to core/res/res/drawable-land-mdpi/title_bar_tall.png
Binary files differ
diff --git a/core/res/res/drawable/activity_title_bar.9.png b/core/res/res/drawable-mdpi/activity_title_bar.9.png
similarity index 100%
rename from core/res/res/drawable/activity_title_bar.9.png
rename to core/res/res/drawable-mdpi/activity_title_bar.9.png
Binary files differ
diff --git a/core/res/res/drawable/arrow_down_float.png b/core/res/res/drawable-mdpi/arrow_down_float.png
similarity index 100%
rename from core/res/res/drawable/arrow_down_float.png
rename to core/res/res/drawable-mdpi/arrow_down_float.png
Binary files differ
diff --git a/core/res/res/drawable/arrow_up_float.png b/core/res/res/drawable-mdpi/arrow_up_float.png
similarity index 100%
rename from core/res/res/drawable/arrow_up_float.png
rename to core/res/res/drawable-mdpi/arrow_up_float.png
Binary files differ
diff --git a/core/res/res/drawable/battery_charge_background.png b/core/res/res/drawable-mdpi/battery_charge_background.png
similarity index 100%
rename from core/res/res/drawable/battery_charge_background.png
rename to core/res/res/drawable-mdpi/battery_charge_background.png
Binary files differ
diff --git a/core/res/res/drawable/battery_charge_fill_empty.9.png b/core/res/res/drawable-mdpi/battery_charge_fill_empty.9.png
similarity index 100%
rename from core/res/res/drawable/battery_charge_fill_empty.9.png
rename to core/res/res/drawable-mdpi/battery_charge_fill_empty.9.png
Binary files differ
diff --git a/core/res/res/drawable/battery_charge_fill_full.9.png b/core/res/res/drawable-mdpi/battery_charge_fill_full.9.png
similarity index 100%
rename from core/res/res/drawable/battery_charge_fill_full.9.png
rename to core/res/res/drawable-mdpi/battery_charge_fill_full.9.png
Binary files differ
diff --git a/core/res/res/drawable/battery_charge_fill_warning.9.png b/core/res/res/drawable-mdpi/battery_charge_fill_warning.9.png
similarity index 100%
rename from core/res/res/drawable/battery_charge_fill_warning.9.png
rename to core/res/res/drawable-mdpi/battery_charge_fill_warning.9.png
Binary files differ
diff --git a/core/res/res/drawable/battery_low_battery.png b/core/res/res/drawable-mdpi/battery_low_battery.png
similarity index 100%
rename from core/res/res/drawable/battery_low_battery.png
rename to core/res/res/drawable-mdpi/battery_low_battery.png
Binary files differ
diff --git a/core/res/res/drawable/blank_tile.png b/core/res/res/drawable-mdpi/blank_tile.png
similarity index 100%
rename from core/res/res/drawable/blank_tile.png
rename to core/res/res/drawable-mdpi/blank_tile.png
Binary files differ
diff --git a/core/res/res/drawable/bottom_bar.png b/core/res/res/drawable-mdpi/bottom_bar.png
similarity index 100%
rename from core/res/res/drawable/bottom_bar.png
rename to core/res/res/drawable-mdpi/bottom_bar.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_buttonless_off.png b/core/res/res/drawable-mdpi/btn_check_buttonless_off.png
similarity index 100%
rename from core/res/res/drawable/btn_check_buttonless_off.png
rename to core/res/res/drawable-mdpi/btn_check_buttonless_off.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_buttonless_on.png b/core/res/res/drawable-mdpi/btn_check_buttonless_on.png
similarity index 100%
rename from core/res/res/drawable/btn_check_buttonless_on.png
rename to core/res/res/drawable-mdpi/btn_check_buttonless_on.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_label_background.9.png b/core/res/res/drawable-mdpi/btn_check_label_background.9.png
similarity index 100%
rename from core/res/res/drawable/btn_check_label_background.9.png
rename to core/res/res/drawable-mdpi/btn_check_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off.png b/core/res/res/drawable-mdpi/btn_check_off.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off.png
rename to core/res/res/drawable-mdpi/btn_check_off.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off_disable.png b/core/res/res/drawable-mdpi/btn_check_off_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off_disable.png
rename to core/res/res/drawable-mdpi/btn_check_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off_disable_focused.png b/core/res/res/drawable-mdpi/btn_check_off_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_check_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off_pressed.png b/core/res/res/drawable-mdpi/btn_check_off_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off_pressed.png
rename to core/res/res/drawable-mdpi/btn_check_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off_selected.png b/core/res/res/drawable-mdpi/btn_check_off_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off_selected.png
rename to core/res/res/drawable-mdpi/btn_check_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on.png b/core/res/res/drawable-mdpi/btn_check_on.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on.png
rename to core/res/res/drawable-mdpi/btn_check_on.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on_disable.png b/core/res/res/drawable-mdpi/btn_check_on_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on_disable.png
rename to core/res/res/drawable-mdpi/btn_check_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on_disable_focused.png b/core/res/res/drawable-mdpi/btn_check_on_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_check_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on_pressed.png b/core/res/res/drawable-mdpi/btn_check_on_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on_pressed.png
rename to core/res/res/drawable-mdpi/btn_check_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on_selected.png b/core/res/res/drawable-mdpi/btn_check_on_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on_selected.png
rename to core/res/res/drawable-mdpi/btn_check_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_disable.png b/core/res/res/drawable-mdpi/btn_circle_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_disable.png
rename to core/res/res/drawable-mdpi/btn_circle_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_disable_focused.png b/core/res/res/drawable-mdpi/btn_circle_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_circle_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_normal.png b/core/res/res/drawable-mdpi/btn_circle_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_normal.png
rename to core/res/res/drawable-mdpi/btn_circle_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_pressed.png b/core/res/res/drawable-mdpi/btn_circle_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_pressed.png
rename to core/res/res/drawable-mdpi/btn_circle_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_selected.png b/core/res/res/drawable-mdpi/btn_circle_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_selected.png
rename to core/res/res/drawable-mdpi/btn_circle_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_close_normal.png b/core/res/res/drawable-mdpi/btn_close_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_close_normal.png
rename to core/res/res/drawable-mdpi/btn_close_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_close_pressed.png b/core/res/res/drawable-mdpi/btn_close_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_close_pressed.png
rename to core/res/res/drawable-mdpi/btn_close_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_code_lock_default.png b/core/res/res/drawable-mdpi/btn_code_lock_default.png
similarity index 100%
rename from core/res/res/drawable/btn_code_lock_default.png
rename to core/res/res/drawable-mdpi/btn_code_lock_default.png
Binary files differ
diff --git a/core/res/res/drawable/btn_code_lock_touched.png b/core/res/res/drawable-mdpi/btn_code_lock_touched.png
similarity index 100%
rename from core/res/res/drawable/btn_code_lock_touched.png
rename to core/res/res/drawable-mdpi/btn_code_lock_touched.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_normal.9.png b/core/res/res/drawable-mdpi/btn_default_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_normal.9.png
rename to core/res/res/drawable-mdpi/btn_default_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_normal_disable.9.png b/core/res/res/drawable-mdpi/btn_default_normal_disable.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_normal_disable.9.png
rename to core/res/res/drawable-mdpi/btn_default_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_normal_disable_focused.9.png b/core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_normal_disable_focused.9.png
rename to core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_pressed.9.png b/core/res/res/drawable-mdpi/btn_default_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_default_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_selected.9.png b/core/res/res/drawable-mdpi/btn_default_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_selected.9.png
rename to core/res/res/drawable-mdpi/btn_default_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_normal.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_normal.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_normal_disable.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_normal_disable.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_normal_disable_focused.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_normal_disable_focused.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_pressed.9.png b/core/res/res/drawable-mdpi/btn_default_small_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_selected.9.png b/core/res/res/drawable-mdpi/btn_default_small_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_selected.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dialog_disable.png b/core/res/res/drawable-mdpi/btn_dialog_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_dialog_disable.png
rename to core/res/res/drawable-mdpi/btn_dialog_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dialog_normal.png b/core/res/res/drawable-mdpi/btn_dialog_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_dialog_normal.png
rename to core/res/res/drawable-mdpi/btn_dialog_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dialog_pressed.png b/core/res/res/drawable-mdpi/btn_dialog_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_dialog_pressed.png
rename to core/res/res/drawable-mdpi/btn_dialog_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dialog_selected.png b/core/res/res/drawable-mdpi/btn_dialog_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_dialog_selected.png
rename to core/res/res/drawable-mdpi/btn_dialog_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dropdown_normal.9.png b/core/res/res/drawable-mdpi/btn_dropdown_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_dropdown_normal.9.png
rename to core/res/res/drawable-mdpi/btn_dropdown_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dropdown_pressed.9.png b/core/res/res/drawable-mdpi/btn_dropdown_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_dropdown_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_dropdown_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dropdown_selected.9.png b/core/res/res/drawable-mdpi/btn_dropdown_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_dropdown_selected.9.png
rename to core/res/res/drawable-mdpi/btn_dropdown_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_erase_default.9.png b/core/res/res/drawable-mdpi/btn_erase_default.9.png
similarity index 100%
rename from core/res/res/drawable/btn_erase_default.9.png
rename to core/res/res/drawable-mdpi/btn_erase_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_erase_pressed.9.png b/core/res/res/drawable-mdpi/btn_erase_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_erase_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_erase_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_erase_selected.9.png b/core/res/res/drawable-mdpi/btn_erase_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_erase_selected.9.png
rename to core/res/res/drawable-mdpi/btn_erase_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_global_search_normal.9.png b/core/res/res/drawable-mdpi/btn_global_search_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_global_search_normal.9.png
rename to core/res/res/drawable-mdpi/btn_global_search_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_normal.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_normal.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_normal_off.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_normal_off.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_normal_on.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_normal_on.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_pressed.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_pressed_off.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_pressed_off.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_pressed_on.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_pressed_on.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player.9.png b/core/res/res/drawable-mdpi/btn_media_player.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player.9.png
rename to core/res/res/drawable-mdpi/btn_media_player.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player_disabled.9.png b/core/res/res/drawable-mdpi/btn_media_player_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player_disabled.9.png
rename to core/res/res/drawable-mdpi/btn_media_player_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player_disabled_selected.9.png b/core/res/res/drawable-mdpi/btn_media_player_disabled_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player_disabled_selected.9.png
rename to core/res/res/drawable-mdpi/btn_media_player_disabled_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player_pressed.9.png b/core/res/res/drawable-mdpi/btn_media_player_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_media_player_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player_selected.9.png b/core/res/res/drawable-mdpi/btn_media_player_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player_selected.9.png
rename to core/res/res/drawable-mdpi/btn_media_player_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_default.png b/core/res/res/drawable-mdpi/btn_minus_default.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_default.png
rename to core/res/res/drawable-mdpi/btn_minus_default.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_disable.png b/core/res/res/drawable-mdpi/btn_minus_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_disable.png
rename to core/res/res/drawable-mdpi/btn_minus_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_disable_focused.png b/core/res/res/drawable-mdpi/btn_minus_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_minus_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_pressed.png b/core/res/res/drawable-mdpi/btn_minus_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_pressed.png
rename to core/res/res/drawable-mdpi/btn_minus_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_selected.png b/core/res/res/drawable-mdpi/btn_minus_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_selected.png
rename to core/res/res/drawable-mdpi/btn_minus_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_default.png b/core/res/res/drawable-mdpi/btn_plus_default.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_default.png
rename to core/res/res/drawable-mdpi/btn_plus_default.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_disable.png b/core/res/res/drawable-mdpi/btn_plus_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_disable.png
rename to core/res/res/drawable-mdpi/btn_plus_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_disable_focused.png b/core/res/res/drawable-mdpi/btn_plus_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_plus_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_pressed.png b/core/res/res/drawable-mdpi/btn_plus_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_pressed.png
rename to core/res/res/drawable-mdpi/btn_plus_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_selected.png b/core/res/res/drawable-mdpi/btn_plus_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_selected.png
rename to core/res/res/drawable-mdpi/btn_plus_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_label_background.9.png b/core/res/res/drawable-mdpi/btn_radio_label_background.9.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_label_background.9.png
rename to core/res/res/drawable-mdpi/btn_radio_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_off.png b/core/res/res/drawable-mdpi/btn_radio_off.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_off.png
rename to core/res/res/drawable-mdpi/btn_radio_off.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_off_pressed.png b/core/res/res/drawable-mdpi/btn_radio_off_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_off_pressed.png
rename to core/res/res/drawable-mdpi/btn_radio_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_off_selected.png b/core/res/res/drawable-mdpi/btn_radio_off_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_off_selected.png
rename to core/res/res/drawable-mdpi/btn_radio_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_on.png b/core/res/res/drawable-mdpi/btn_radio_on.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_on.png
rename to core/res/res/drawable-mdpi/btn_radio_on.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_on_pressed.png b/core/res/res/drawable-mdpi/btn_radio_on_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_on_pressed.png
rename to core/res/res/drawable-mdpi/btn_radio_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_on_selected.png b/core/res/res/drawable-mdpi/btn_radio_on_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_on_selected.png
rename to core/res/res/drawable-mdpi/btn_radio_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_off_normal.png b/core/res/res/drawable-mdpi/btn_rating_star_off_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_off_normal.png
rename to core/res/res/drawable-mdpi/btn_rating_star_off_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_off_pressed.png b/core/res/res/drawable-mdpi/btn_rating_star_off_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_off_pressed.png
rename to core/res/res/drawable-mdpi/btn_rating_star_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_off_selected.png b/core/res/res/drawable-mdpi/btn_rating_star_off_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_off_selected.png
rename to core/res/res/drawable-mdpi/btn_rating_star_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_on_normal.png b/core/res/res/drawable-mdpi/btn_rating_star_on_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_on_normal.png
rename to core/res/res/drawable-mdpi/btn_rating_star_on_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_on_pressed.png b/core/res/res/drawable-mdpi/btn_rating_star_on_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_on_pressed.png
rename to core/res/res/drawable-mdpi/btn_rating_star_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_on_selected.png b/core/res/res/drawable-mdpi/btn_rating_star_on_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_on_selected.png
rename to core/res/res/drawable-mdpi/btn_rating_star_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_default.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_default.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_default.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_pressed.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_selected.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_selected.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_voice_default.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_voice_default.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_voice_default.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_voice_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_voice_pressed.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_voice_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_voice_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_voice_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_voice_selected.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_voice_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_voice_selected.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_voice_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_disabled.png b/core/res/res/drawable-mdpi/btn_square_overlay_disabled.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_disabled.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_disabled.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_disabled_focused.png b/core/res/res/drawable-mdpi/btn_square_overlay_disabled_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_disabled_focused.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_disabled_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_normal.png b/core/res/res/drawable-mdpi/btn_square_overlay_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_normal.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_pressed.png b/core/res/res/drawable-mdpi/btn_square_overlay_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_pressed.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_selected.png b/core/res/res/drawable-mdpi/btn_square_overlay_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_selected.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off.png b/core/res/res/drawable-mdpi/btn_star_big_off.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off.png
rename to core/res/res/drawable-mdpi/btn_star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off_disable.png b/core/res/res/drawable-mdpi/btn_star_big_off_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off_disable.png
rename to core/res/res/drawable-mdpi/btn_star_big_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off_disable_focused.png b/core/res/res/drawable-mdpi/btn_star_big_off_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_star_big_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off_pressed.png b/core/res/res/drawable-mdpi/btn_star_big_off_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off_pressed.png
rename to core/res/res/drawable-mdpi/btn_star_big_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off_selected.png b/core/res/res/drawable-mdpi/btn_star_big_off_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off_selected.png
rename to core/res/res/drawable-mdpi/btn_star_big_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on.png b/core/res/res/drawable-mdpi/btn_star_big_on.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on.png
rename to core/res/res/drawable-mdpi/btn_star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on_disable.png b/core/res/res/drawable-mdpi/btn_star_big_on_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on_disable.png
rename to core/res/res/drawable-mdpi/btn_star_big_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on_disable_focused.png b/core/res/res/drawable-mdpi/btn_star_big_on_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_star_big_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on_pressed.png b/core/res/res/drawable-mdpi/btn_star_big_on_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on_pressed.png
rename to core/res/res/drawable-mdpi/btn_star_big_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on_selected.png b/core/res/res/drawable-mdpi/btn_star_big_on_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on_selected.png
rename to core/res/res/drawable-mdpi/btn_star_big_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_label_background.9.png b/core/res/res/drawable-mdpi/btn_star_label_background.9.png
similarity index 100%
rename from core/res/res/drawable/btn_star_label_background.9.png
rename to core/res/res/drawable-mdpi/btn_star_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_toggle_off.9.png b/core/res/res/drawable-mdpi/btn_toggle_off.9.png
similarity index 100%
rename from core/res/res/drawable/btn_toggle_off.9.png
rename to core/res/res/drawable-mdpi/btn_toggle_off.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_toggle_on.9.png b/core/res/res/drawable-mdpi/btn_toggle_on.9.png
similarity index 100%
rename from core/res/res/drawable/btn_toggle_on.9.png
rename to core/res/res/drawable-mdpi/btn_toggle_on.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_disabled.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_disabled.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_disabled_focused.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_disabled_focused.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_disabled_focused.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_normal.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_normal.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_pressed.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_selected.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_selected.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_page_normal.png b/core/res/res/drawable-mdpi/btn_zoom_page_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_page_normal.png
rename to core/res/res/drawable-mdpi/btn_zoom_page_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_page_press.png b/core/res/res/drawable-mdpi/btn_zoom_page_press.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_page_press.png
rename to core/res/res/drawable-mdpi/btn_zoom_page_press.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_disabled.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_disabled.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_disabled_focused.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_disabled_focused.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_disabled_focused.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_normal.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_normal.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_pressed.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_selected.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_selected.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/button_onoff_indicator_off.png b/core/res/res/drawable-mdpi/button_onoff_indicator_off.png
similarity index 100%
rename from core/res/res/drawable/button_onoff_indicator_off.png
rename to core/res/res/drawable-mdpi/button_onoff_indicator_off.png
Binary files differ
diff --git a/core/res/res/drawable/button_onoff_indicator_on.png b/core/res/res/drawable-mdpi/button_onoff_indicator_on.png
similarity index 100%
rename from core/res/res/drawable/button_onoff_indicator_on.png
rename to core/res/res/drawable-mdpi/button_onoff_indicator_on.png
Binary files differ
diff --git a/core/res/res/drawable/call_contact.png b/core/res/res/drawable-mdpi/call_contact.png
similarity index 100%
rename from core/res/res/drawable/call_contact.png
rename to core/res/res/drawable-mdpi/call_contact.png
Binary files differ
diff --git a/core/res/res/drawable/checkbox_off_background.png b/core/res/res/drawable-mdpi/checkbox_off_background.png
similarity index 100%
rename from core/res/res/drawable/checkbox_off_background.png
rename to core/res/res/drawable-mdpi/checkbox_off_background.png
Binary files differ
diff --git a/core/res/res/drawable/checkbox_on_background.png b/core/res/res/drawable-mdpi/checkbox_on_background.png
similarity index 100%
rename from core/res/res/drawable/checkbox_on_background.png
rename to core/res/res/drawable-mdpi/checkbox_on_background.png
Binary files differ
diff --git a/core/res/res/drawable/clock_dial.png b/core/res/res/drawable-mdpi/clock_dial.png
similarity index 100%
rename from core/res/res/drawable/clock_dial.png
rename to core/res/res/drawable-mdpi/clock_dial.png
Binary files differ
diff --git a/core/res/res/drawable/clock_hand_hour.png b/core/res/res/drawable-mdpi/clock_hand_hour.png
similarity index 100%
rename from core/res/res/drawable/clock_hand_hour.png
rename to core/res/res/drawable-mdpi/clock_hand_hour.png
Binary files differ
diff --git a/core/res/res/drawable/clock_hand_minute.png b/core/res/res/drawable-mdpi/clock_hand_minute.png
similarity index 100%
rename from core/res/res/drawable/clock_hand_minute.png
rename to core/res/res/drawable-mdpi/clock_hand_minute.png
Binary files differ
diff --git a/core/res/res/drawable/code_lock_bottom.9.png b/core/res/res/drawable-mdpi/code_lock_bottom.9.png
similarity index 100%
rename from core/res/res/drawable/code_lock_bottom.9.png
rename to core/res/res/drawable-mdpi/code_lock_bottom.9.png
Binary files differ
diff --git a/core/res/res/drawable/code_lock_left.9.png b/core/res/res/drawable-mdpi/code_lock_left.9.png
similarity index 100%
rename from core/res/res/drawable/code_lock_left.9.png
rename to core/res/res/drawable-mdpi/code_lock_left.9.png
Binary files differ
diff --git a/core/res/res/drawable/code_lock_top.9.png b/core/res/res/drawable-mdpi/code_lock_top.9.png
similarity index 100%
rename from core/res/res/drawable/code_lock_top.9.png
rename to core/res/res/drawable-mdpi/code_lock_top.9.png
Binary files differ
diff --git a/core/res/res/drawable/compass_arrow.png b/core/res/res/drawable-mdpi/compass_arrow.png
similarity index 100%
rename from core/res/res/drawable/compass_arrow.png
rename to core/res/res/drawable-mdpi/compass_arrow.png
Binary files differ
diff --git a/core/res/res/drawable/compass_base.png b/core/res/res/drawable-mdpi/compass_base.png
similarity index 100%
rename from core/res/res/drawable/compass_base.png
rename to core/res/res/drawable-mdpi/compass_base.png
Binary files differ
diff --git a/core/res/res/drawable/create_contact.png b/core/res/res/drawable-mdpi/create_contact.png
similarity index 100%
rename from core/res/res/drawable/create_contact.png
rename to core/res/res/drawable-mdpi/create_contact.png
Binary files differ
diff --git a/core/res/res/drawable/dark_header.9.png b/core/res/res/drawable-mdpi/dark_header.9.png
similarity index 100%
rename from core/res/res/drawable/dark_header.9.png
rename to core/res/res/drawable-mdpi/dark_header.9.png
Binary files differ
diff --git a/core/res/res/drawable/dialog_divider_horizontal_light.9.png b/core/res/res/drawable-mdpi/dialog_divider_horizontal_light.9.png
similarity index 100%
rename from core/res/res/drawable/dialog_divider_horizontal_light.9.png
rename to core/res/res/drawable-mdpi/dialog_divider_horizontal_light.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_bright.9.png b/core/res/res/drawable-mdpi/divider_horizontal_bright.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_bright.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_bright_opaque.9.png b/core/res/res/drawable-mdpi/divider_horizontal_bright_opaque.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_bright_opaque.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_bright_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_dark.9.png b/core/res/res/drawable-mdpi/divider_horizontal_dark.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_dark.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_dark_opaque.9.png b/core/res/res/drawable-mdpi/divider_horizontal_dark_opaque.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_dark_opaque.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_dark_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_dim_dark.9.png b/core/res/res/drawable-mdpi/divider_horizontal_dim_dark.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_dim_dark.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_dim_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_textfield.9.png b/core/res/res/drawable-mdpi/divider_horizontal_textfield.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_textfield.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_textfield.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_vertical_bright.9.png b/core/res/res/drawable-mdpi/divider_vertical_bright.9.png
similarity index 100%
rename from core/res/res/drawable/divider_vertical_bright.9.png
rename to core/res/res/drawable-mdpi/divider_vertical_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/editbox_background_focus_yellow.9.png b/core/res/res/drawable-mdpi/editbox_background_focus_yellow.9.png
similarity index 100%
rename from core/res/res/drawable/editbox_background_focus_yellow.9.png
rename to core/res/res/drawable-mdpi/editbox_background_focus_yellow.9.png
Binary files differ
diff --git a/core/res/res/drawable/editbox_background_normal.9.png b/core/res/res/drawable-mdpi/editbox_background_normal.9.png
similarity index 100%
rename from core/res/res/drawable/editbox_background_normal.9.png
rename to core/res/res/drawable-mdpi/editbox_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/editbox_dropdown_background.9.png b/core/res/res/drawable-mdpi/editbox_dropdown_background.9.png
similarity index 100%
rename from core/res/res/drawable/editbox_dropdown_background.9.png
rename to core/res/res/drawable-mdpi/editbox_dropdown_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/editbox_dropdown_background_dark.9.png b/core/res/res/drawable-mdpi/editbox_dropdown_background_dark.9.png
similarity index 100%
rename from core/res/res/drawable/editbox_dropdown_background_dark.9.png
rename to core/res/res/drawable-mdpi/editbox_dropdown_background_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_angel.png b/core/res/res/drawable-mdpi/emo_im_angel.png
similarity index 100%
rename from core/res/res/drawable/emo_im_angel.png
rename to core/res/res/drawable-mdpi/emo_im_angel.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_cool.png b/core/res/res/drawable-mdpi/emo_im_cool.png
similarity index 100%
rename from core/res/res/drawable/emo_im_cool.png
rename to core/res/res/drawable-mdpi/emo_im_cool.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_crying.png b/core/res/res/drawable-mdpi/emo_im_crying.png
similarity index 100%
rename from core/res/res/drawable/emo_im_crying.png
rename to core/res/res/drawable-mdpi/emo_im_crying.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_foot_in_mouth.png b/core/res/res/drawable-mdpi/emo_im_foot_in_mouth.png
similarity index 100%
rename from core/res/res/drawable/emo_im_foot_in_mouth.png
rename to core/res/res/drawable-mdpi/emo_im_foot_in_mouth.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_happy.png b/core/res/res/drawable-mdpi/emo_im_happy.png
similarity index 100%
rename from core/res/res/drawable/emo_im_happy.png
rename to core/res/res/drawable-mdpi/emo_im_happy.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_kissing.png b/core/res/res/drawable-mdpi/emo_im_kissing.png
similarity index 100%
rename from core/res/res/drawable/emo_im_kissing.png
rename to core/res/res/drawable-mdpi/emo_im_kissing.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_laughing.png b/core/res/res/drawable-mdpi/emo_im_laughing.png
similarity index 100%
rename from core/res/res/drawable/emo_im_laughing.png
rename to core/res/res/drawable-mdpi/emo_im_laughing.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_lips_are_sealed.png b/core/res/res/drawable-mdpi/emo_im_lips_are_sealed.png
similarity index 100%
rename from core/res/res/drawable/emo_im_lips_are_sealed.png
rename to core/res/res/drawable-mdpi/emo_im_lips_are_sealed.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_money_mouth.png b/core/res/res/drawable-mdpi/emo_im_money_mouth.png
similarity index 100%
rename from core/res/res/drawable/emo_im_money_mouth.png
rename to core/res/res/drawable-mdpi/emo_im_money_mouth.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_sad.png b/core/res/res/drawable-mdpi/emo_im_sad.png
similarity index 100%
rename from core/res/res/drawable/emo_im_sad.png
rename to core/res/res/drawable-mdpi/emo_im_sad.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_surprised.png b/core/res/res/drawable-mdpi/emo_im_surprised.png
similarity index 100%
rename from core/res/res/drawable/emo_im_surprised.png
rename to core/res/res/drawable-mdpi/emo_im_surprised.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_tongue_sticking_out.png b/core/res/res/drawable-mdpi/emo_im_tongue_sticking_out.png
similarity index 100%
rename from core/res/res/drawable/emo_im_tongue_sticking_out.png
rename to core/res/res/drawable-mdpi/emo_im_tongue_sticking_out.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_undecided.png b/core/res/res/drawable-mdpi/emo_im_undecided.png
similarity index 100%
rename from core/res/res/drawable/emo_im_undecided.png
rename to core/res/res/drawable-mdpi/emo_im_undecided.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_winking.png b/core/res/res/drawable-mdpi/emo_im_winking.png
similarity index 100%
rename from core/res/res/drawable/emo_im_winking.png
rename to core/res/res/drawable-mdpi/emo_im_winking.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_wtf.png b/core/res/res/drawable-mdpi/emo_im_wtf.png
similarity index 100%
rename from core/res/res/drawable/emo_im_wtf.png
rename to core/res/res/drawable-mdpi/emo_im_wtf.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_yelling.png b/core/res/res/drawable-mdpi/emo_im_yelling.png
similarity index 100%
rename from core/res/res/drawable/emo_im_yelling.png
rename to core/res/res/drawable-mdpi/emo_im_yelling.png
Binary files differ
diff --git a/core/res/res/drawable/expander_ic_maximized.9.png b/core/res/res/drawable-mdpi/expander_ic_maximized.9.png
similarity index 100%
rename from core/res/res/drawable/expander_ic_maximized.9.png
rename to core/res/res/drawable-mdpi/expander_ic_maximized.9.png
Binary files differ
diff --git a/core/res/res/drawable/expander_ic_minimized.9.png b/core/res/res/drawable-mdpi/expander_ic_minimized.9.png
similarity index 100%
rename from core/res/res/drawable/expander_ic_minimized.9.png
rename to core/res/res/drawable-mdpi/expander_ic_minimized.9.png
Binary files differ
diff --git a/core/res/res/drawable/focused_application_background_static.png b/core/res/res/drawable-mdpi/focused_application_background_static.png
similarity index 100%
rename from core/res/res/drawable/focused_application_background_static.png
rename to core/res/res/drawable-mdpi/focused_application_background_static.png
Binary files differ
diff --git a/core/res/res/drawable/frame_gallery_thumb.9.png b/core/res/res/drawable-mdpi/frame_gallery_thumb.9.png
similarity index 100%
rename from core/res/res/drawable/frame_gallery_thumb.9.png
rename to core/res/res/drawable-mdpi/frame_gallery_thumb.9.png
Binary files differ
diff --git a/core/res/res/drawable/frame_gallery_thumb_pressed.9.png b/core/res/res/drawable-mdpi/frame_gallery_thumb_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/frame_gallery_thumb_pressed.9.png
rename to core/res/res/drawable-mdpi/frame_gallery_thumb_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/frame_gallery_thumb_selected.9.png b/core/res/res/drawable-mdpi/frame_gallery_thumb_selected.9.png
similarity index 100%
rename from core/res/res/drawable/frame_gallery_thumb_selected.9.png
rename to core/res/res/drawable-mdpi/frame_gallery_thumb_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_selected_default.9.png b/core/res/res/drawable-mdpi/gallery_selected_default.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_selected_default.9.png
rename to core/res/res/drawable-mdpi/gallery_selected_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_selected_focused.9.png b/core/res/res/drawable-mdpi/gallery_selected_focused.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_selected_focused.9.png
rename to core/res/res/drawable-mdpi/gallery_selected_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_selected_pressed.9.png b/core/res/res/drawable-mdpi/gallery_selected_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_selected_pressed.9.png
rename to core/res/res/drawable-mdpi/gallery_selected_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_unselected_default.9.png b/core/res/res/drawable-mdpi/gallery_unselected_default.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_unselected_default.9.png
rename to core/res/res/drawable-mdpi/gallery_unselected_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_unselected_pressed.9.png b/core/res/res/drawable-mdpi/gallery_unselected_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_unselected_pressed.9.png
rename to core/res/res/drawable-mdpi/gallery_unselected_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/grid_selector_background_focus.9.png b/core/res/res/drawable-mdpi/grid_selector_background_focus.9.png
similarity index 100%
rename from core/res/res/drawable/grid_selector_background_focus.9.png
rename to core/res/res/drawable-mdpi/grid_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/grid_selector_background_pressed.9.png b/core/res/res/drawable-mdpi/grid_selector_background_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/grid_selector_background_pressed.9.png
rename to core/res/res/drawable-mdpi/grid_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/highlight_disabled.9.png b/core/res/res/drawable-mdpi/highlight_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/highlight_disabled.9.png
rename to core/res/res/drawable-mdpi/highlight_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/highlight_pressed.9.png b/core/res/res/drawable-mdpi/highlight_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/highlight_pressed.9.png
rename to core/res/res/drawable-mdpi/highlight_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/highlight_selected.9.png b/core/res/res/drawable-mdpi/highlight_selected.9.png
similarity index 100%
rename from core/res/res/drawable/highlight_selected.9.png
rename to core/res/res/drawable-mdpi/highlight_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_round_more_disabled.png b/core/res/res/drawable-mdpi/ic_btn_round_more_disabled.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_round_more_disabled.png
rename to core/res/res/drawable-mdpi/ic_btn_round_more_disabled.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_round_more_normal.png b/core/res/res/drawable-mdpi/ic_btn_round_more_normal.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_round_more_normal.png
rename to core/res/res/drawable-mdpi/ic_btn_round_more_normal.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_search.png b/core/res/res/drawable-mdpi/ic_btn_search.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_search.png
rename to core/res/res/drawable-mdpi/ic_btn_search.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_speak_now.png b/core/res/res/drawable-mdpi/ic_btn_speak_now.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_speak_now.png
rename to core/res/res/drawable-mdpi/ic_btn_speak_now.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_disabled.png b/core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_fit_page_disabled.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_disabled.png
rename to core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_fit_page_disabled.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_normal.png b/core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_fit_page_normal.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_normal.png
rename to core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_fit_page_normal.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_page_overview_disabled.png b/core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_page_overview_disabled.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_square_browser_zoom_page_overview_disabled.png
rename to core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_page_overview_disabled.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_page_overview_normal.png b/core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_page_overview_normal.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_square_browser_zoom_page_overview_normal.png
rename to core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_page_overview_normal.png
Binary files differ
diff --git a/core/res/res/drawable/ic_bullet_key_permission.png b/core/res/res/drawable-mdpi/ic_bullet_key_permission.png
similarity index 100%
rename from core/res/res/drawable/ic_bullet_key_permission.png
rename to core/res/res/drawable-mdpi/ic_bullet_key_permission.png
Binary files differ
diff --git a/core/res/res/drawable/ic_contact_picture.png b/core/res/res/drawable-mdpi/ic_contact_picture.png
similarity index 100%
rename from core/res/res/drawable/ic_contact_picture.png
rename to core/res/res/drawable-mdpi/ic_contact_picture.png
Binary files differ
diff --git a/core/res/res/drawable/ic_delete.png b/core/res/res/drawable-mdpi/ic_delete.png
similarity index 100%
rename from core/res/res/drawable/ic_delete.png
rename to core/res/res/drawable-mdpi/ic_delete.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_alert.png b/core/res/res/drawable-mdpi/ic_dialog_alert.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_alert.png
rename to core/res/res/drawable-mdpi/ic_dialog_alert.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_dialer.png b/core/res/res/drawable-mdpi/ic_dialog_dialer.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_dialer.png
rename to core/res/res/drawable-mdpi/ic_dialog_dialer.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_email.png b/core/res/res/drawable-mdpi/ic_dialog_email.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_email.png
rename to core/res/res/drawable-mdpi/ic_dialog_email.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_info.png b/core/res/res/drawable-mdpi/ic_dialog_info.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_info.png
rename to core/res/res/drawable-mdpi/ic_dialog_info.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_map.png b/core/res/res/drawable-mdpi/ic_dialog_map.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_map.png
rename to core/res/res/drawable-mdpi/ic_dialog_map.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_menu_generic.png b/core/res/res/drawable-mdpi/ic_dialog_menu_generic.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_menu_generic.png
rename to core/res/res/drawable-mdpi/ic_dialog_menu_generic.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_time.png b/core/res/res/drawable-mdpi/ic_dialog_time.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_time.png
rename to core/res/res/drawable-mdpi/ic_dialog_time.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_usb.png b/core/res/res/drawable-mdpi/ic_dialog_usb.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_usb.png
rename to core/res/res/drawable-mdpi/ic_dialog_usb.png
Binary files differ
diff --git a/core/res/res/drawable/ic_emergency.png b/core/res/res/drawable-mdpi/ic_emergency.png
similarity index 100%
rename from core/res/res/drawable/ic_emergency.png
rename to core/res/res/drawable-mdpi/ic_emergency.png
Binary files differ
diff --git a/core/res/res/drawable/ic_input_add.png b/core/res/res/drawable-mdpi/ic_input_add.png
similarity index 100%
rename from core/res/res/drawable/ic_input_add.png
rename to core/res/res/drawable-mdpi/ic_input_add.png
Binary files differ
diff --git a/core/res/res/drawable/ic_input_delete.png b/core/res/res/drawable-mdpi/ic_input_delete.png
similarity index 100%
rename from core/res/res/drawable/ic_input_delete.png
rename to core/res/res/drawable-mdpi/ic_input_delete.png
Binary files differ
diff --git a/core/res/res/drawable/ic_input_get.png b/core/res/res/drawable-mdpi/ic_input_get.png
similarity index 100%
rename from core/res/res/drawable/ic_input_get.png
rename to core/res/res/drawable-mdpi/ic_input_get.png
Binary files differ
diff --git a/core/res/res/drawable/ic_launcher_android.png b/core/res/res/drawable-mdpi/ic_launcher_android.png
similarity index 100%
rename from core/res/res/drawable/ic_launcher_android.png
rename to core/res/res/drawable-mdpi/ic_launcher_android.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_airplane_mode.png b/core/res/res/drawable-mdpi/ic_lock_airplane_mode.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_airplane_mode.png
rename to core/res/res/drawable-mdpi/ic_lock_airplane_mode.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_airplane_mode_off.png b/core/res/res/drawable-mdpi/ic_lock_airplane_mode_off.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_airplane_mode_off.png
rename to core/res/res/drawable-mdpi/ic_lock_airplane_mode_off.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_idle_alarm.png b/core/res/res/drawable-mdpi/ic_lock_idle_alarm.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_idle_alarm.png
rename to core/res/res/drawable-mdpi/ic_lock_idle_alarm.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_idle_charging.png b/core/res/res/drawable-mdpi/ic_lock_idle_charging.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_idle_charging.png
rename to core/res/res/drawable-mdpi/ic_lock_idle_charging.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_idle_lock.png b/core/res/res/drawable-mdpi/ic_lock_idle_lock.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_idle_lock.png
rename to core/res/res/drawable-mdpi/ic_lock_idle_lock.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_idle_low_battery.png b/core/res/res/drawable-mdpi/ic_lock_idle_low_battery.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_idle_low_battery.png
rename to core/res/res/drawable-mdpi/ic_lock_idle_low_battery.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_lock.png b/core/res/res/drawable-mdpi/ic_lock_lock.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_lock.png
rename to core/res/res/drawable-mdpi/ic_lock_lock.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_power_off.png b/core/res/res/drawable-mdpi/ic_lock_power_off.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_power_off.png
rename to core/res/res/drawable-mdpi/ic_lock_power_off.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_silent_mode.png b/core/res/res/drawable-mdpi/ic_lock_silent_mode.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_silent_mode.png
rename to core/res/res/drawable-mdpi/ic_lock_silent_mode.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_silent_mode_off.png b/core/res/res/drawable-mdpi/ic_lock_silent_mode_off.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_silent_mode_off.png
rename to core/res/res/drawable-mdpi/ic_lock_silent_mode_off.png
Binary files differ
diff --git a/core/res/res/drawable/ic_maps_indicator_current_position.png b/core/res/res/drawable-mdpi/ic_maps_indicator_current_position.png
similarity index 100%
rename from core/res/res/drawable/ic_maps_indicator_current_position.png
rename to core/res/res/drawable-mdpi/ic_maps_indicator_current_position.png
Binary files differ
diff --git a/core/res/res/drawable/ic_maps_indicator_current_position_anim1.png b/core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim1.png
similarity index 100%
rename from core/res/res/drawable/ic_maps_indicator_current_position_anim1.png
rename to core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/ic_maps_indicator_current_position_anim2.png b/core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim2.png
similarity index 100%
rename from core/res/res/drawable/ic_maps_indicator_current_position_anim2.png
rename to core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim2.png
Binary files differ
diff --git a/core/res/res/drawable/ic_maps_indicator_current_position_anim3.png b/core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim3.png
similarity index 100%
rename from core/res/res/drawable/ic_maps_indicator_current_position_anim3.png
rename to core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim3.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_ff.png b/core/res/res/drawable-mdpi/ic_media_ff.png
similarity index 100%
rename from core/res/res/drawable/ic_media_ff.png
rename to core/res/res/drawable-mdpi/ic_media_ff.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_next.png b/core/res/res/drawable-mdpi/ic_media_next.png
similarity index 100%
rename from core/res/res/drawable/ic_media_next.png
rename to core/res/res/drawable-mdpi/ic_media_next.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_pause.png b/core/res/res/drawable-mdpi/ic_media_pause.png
similarity index 100%
rename from core/res/res/drawable/ic_media_pause.png
rename to core/res/res/drawable-mdpi/ic_media_pause.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_play.png b/core/res/res/drawable-mdpi/ic_media_play.png
similarity index 100%
rename from core/res/res/drawable/ic_media_play.png
rename to core/res/res/drawable-mdpi/ic_media_play.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_previous.png b/core/res/res/drawable-mdpi/ic_media_previous.png
similarity index 100%
rename from core/res/res/drawable/ic_media_previous.png
rename to core/res/res/drawable-mdpi/ic_media_previous.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_rew.png b/core/res/res/drawable-mdpi/ic_media_rew.png
similarity index 100%
rename from core/res/res/drawable/ic_media_rew.png
rename to core/res/res/drawable-mdpi/ic_media_rew.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_account_list.png b/core/res/res/drawable-mdpi/ic_menu_account_list.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_account_list.png
rename to core/res/res/drawable-mdpi/ic_menu_account_list.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_add.png b/core/res/res/drawable-mdpi/ic_menu_add.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_add.png
rename to core/res/res/drawable-mdpi/ic_menu_add.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_agenda.png b/core/res/res/drawable-mdpi/ic_menu_agenda.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_agenda.png
rename to core/res/res/drawable-mdpi/ic_menu_agenda.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_allfriends.png b/core/res/res/drawable-mdpi/ic_menu_allfriends.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_allfriends.png
rename to core/res/res/drawable-mdpi/ic_menu_allfriends.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_always_landscape_portrait.png b/core/res/res/drawable-mdpi/ic_menu_always_landscape_portrait.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_always_landscape_portrait.png
rename to core/res/res/drawable-mdpi/ic_menu_always_landscape_portrait.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_archive.png b/core/res/res/drawable-mdpi/ic_menu_archive.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_archive.png
rename to core/res/res/drawable-mdpi/ic_menu_archive.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_attachment.png b/core/res/res/drawable-mdpi/ic_menu_attachment.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_attachment.png
rename to core/res/res/drawable-mdpi/ic_menu_attachment.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_back.png b/core/res/res/drawable-mdpi/ic_menu_back.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_back.png
rename to core/res/res/drawable-mdpi/ic_menu_back.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_block.png b/core/res/res/drawable-mdpi/ic_menu_block.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_block.png
rename to core/res/res/drawable-mdpi/ic_menu_block.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_blocked_user.png b/core/res/res/drawable-mdpi/ic_menu_blocked_user.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_blocked_user.png
rename to core/res/res/drawable-mdpi/ic_menu_blocked_user.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_call.png b/core/res/res/drawable-mdpi/ic_menu_call.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_call.png
rename to core/res/res/drawable-mdpi/ic_menu_call.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_camera.png b/core/res/res/drawable-mdpi/ic_menu_camera.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_camera.png
rename to core/res/res/drawable-mdpi/ic_menu_camera.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_cc.png b/core/res/res/drawable-mdpi/ic_menu_cc.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_cc.png
rename to core/res/res/drawable-mdpi/ic_menu_cc.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_chat_dashboard.png b/core/res/res/drawable-mdpi/ic_menu_chat_dashboard.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_chat_dashboard.png
rename to core/res/res/drawable-mdpi/ic_menu_chat_dashboard.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_clear_playlist.png b/core/res/res/drawable-mdpi/ic_menu_clear_playlist.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_clear_playlist.png
rename to core/res/res/drawable-mdpi/ic_menu_clear_playlist.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_close_clear_cancel.png b/core/res/res/drawable-mdpi/ic_menu_close_clear_cancel.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_close_clear_cancel.png
rename to core/res/res/drawable-mdpi/ic_menu_close_clear_cancel.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_compass.png b/core/res/res/drawable-mdpi/ic_menu_compass.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_compass.png
rename to core/res/res/drawable-mdpi/ic_menu_compass.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_compose.png b/core/res/res/drawable-mdpi/ic_menu_compose.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_compose.png
rename to core/res/res/drawable-mdpi/ic_menu_compose.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_crop.png b/core/res/res/drawable-mdpi/ic_menu_crop.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_crop.png
rename to core/res/res/drawable-mdpi/ic_menu_crop.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_day.png b/core/res/res/drawable-mdpi/ic_menu_day.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_day.png
rename to core/res/res/drawable-mdpi/ic_menu_day.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_delete.png b/core/res/res/drawable-mdpi/ic_menu_delete.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_delete.png
rename to core/res/res/drawable-mdpi/ic_menu_delete.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_directions.png b/core/res/res/drawable-mdpi/ic_menu_directions.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_directions.png
rename to core/res/res/drawable-mdpi/ic_menu_directions.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_edit.png b/core/res/res/drawable-mdpi/ic_menu_edit.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_edit.png
rename to core/res/res/drawable-mdpi/ic_menu_edit.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_emoticons.png b/core/res/res/drawable-mdpi/ic_menu_emoticons.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_emoticons.png
rename to core/res/res/drawable-mdpi/ic_menu_emoticons.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_end_conversation.png b/core/res/res/drawable-mdpi/ic_menu_end_conversation.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_end_conversation.png
rename to core/res/res/drawable-mdpi/ic_menu_end_conversation.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_forward.png b/core/res/res/drawable-mdpi/ic_menu_forward.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_forward.png
rename to core/res/res/drawable-mdpi/ic_menu_forward.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_friendslist.png b/core/res/res/drawable-mdpi/ic_menu_friendslist.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_friendslist.png
rename to core/res/res/drawable-mdpi/ic_menu_friendslist.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_gallery.png b/core/res/res/drawable-mdpi/ic_menu_gallery.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_gallery.png
rename to core/res/res/drawable-mdpi/ic_menu_gallery.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_goto.png b/core/res/res/drawable-mdpi/ic_menu_goto.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_goto.png
rename to core/res/res/drawable-mdpi/ic_menu_goto.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_help.png b/core/res/res/drawable-mdpi/ic_menu_help.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_help.png
rename to core/res/res/drawable-mdpi/ic_menu_help.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_home.png b/core/res/res/drawable-mdpi/ic_menu_home.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_home.png
rename to core/res/res/drawable-mdpi/ic_menu_home.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_info_details.png b/core/res/res/drawable-mdpi/ic_menu_info_details.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_info_details.png
rename to core/res/res/drawable-mdpi/ic_menu_info_details.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_invite.png b/core/res/res/drawable-mdpi/ic_menu_invite.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_invite.png
rename to core/res/res/drawable-mdpi/ic_menu_invite.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_login.png b/core/res/res/drawable-mdpi/ic_menu_login.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_login.png
rename to core/res/res/drawable-mdpi/ic_menu_login.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_manage.png b/core/res/res/drawable-mdpi/ic_menu_manage.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_manage.png
rename to core/res/res/drawable-mdpi/ic_menu_manage.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_mapmode.png b/core/res/res/drawable-mdpi/ic_menu_mapmode.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_mapmode.png
rename to core/res/res/drawable-mdpi/ic_menu_mapmode.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_mark.png b/core/res/res/drawable-mdpi/ic_menu_mark.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_mark.png
rename to core/res/res/drawable-mdpi/ic_menu_mark.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_month.png b/core/res/res/drawable-mdpi/ic_menu_month.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_month.png
rename to core/res/res/drawable-mdpi/ic_menu_month.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_more.png b/core/res/res/drawable-mdpi/ic_menu_more.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_more.png
rename to core/res/res/drawable-mdpi/ic_menu_more.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_my_calendar.png b/core/res/res/drawable-mdpi/ic_menu_my_calendar.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_my_calendar.png
rename to core/res/res/drawable-mdpi/ic_menu_my_calendar.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_mylocation.png b/core/res/res/drawable-mdpi/ic_menu_mylocation.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_mylocation.png
rename to core/res/res/drawable-mdpi/ic_menu_mylocation.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_myplaces.png b/core/res/res/drawable-mdpi/ic_menu_myplaces.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_myplaces.png
rename to core/res/res/drawable-mdpi/ic_menu_myplaces.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_notifications.png b/core/res/res/drawable-mdpi/ic_menu_notifications.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_notifications.png
rename to core/res/res/drawable-mdpi/ic_menu_notifications.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_play_clip.png b/core/res/res/drawable-mdpi/ic_menu_play_clip.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_play_clip.png
rename to core/res/res/drawable-mdpi/ic_menu_play_clip.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_preferences.png b/core/res/res/drawable-mdpi/ic_menu_preferences.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_preferences.png
rename to core/res/res/drawable-mdpi/ic_menu_preferences.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_recent_history.png b/core/res/res/drawable-mdpi/ic_menu_recent_history.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_recent_history.png
rename to core/res/res/drawable-mdpi/ic_menu_recent_history.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_refresh.png b/core/res/res/drawable-mdpi/ic_menu_refresh.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_refresh.png
rename to core/res/res/drawable-mdpi/ic_menu_refresh.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_report_image.png b/core/res/res/drawable-mdpi/ic_menu_report_image.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_report_image.png
rename to core/res/res/drawable-mdpi/ic_menu_report_image.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_revert.png b/core/res/res/drawable-mdpi/ic_menu_revert.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_revert.png
rename to core/res/res/drawable-mdpi/ic_menu_revert.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_rotate.png b/core/res/res/drawable-mdpi/ic_menu_rotate.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_rotate.png
rename to core/res/res/drawable-mdpi/ic_menu_rotate.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_save.png b/core/res/res/drawable-mdpi/ic_menu_save.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_save.png
rename to core/res/res/drawable-mdpi/ic_menu_save.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_search.png b/core/res/res/drawable-mdpi/ic_menu_search.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_search.png
rename to core/res/res/drawable-mdpi/ic_menu_search.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_send.png b/core/res/res/drawable-mdpi/ic_menu_send.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_send.png
rename to core/res/res/drawable-mdpi/ic_menu_send.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_set_as.png b/core/res/res/drawable-mdpi/ic_menu_set_as.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_set_as.png
rename to core/res/res/drawable-mdpi/ic_menu_set_as.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_share.png b/core/res/res/drawable-mdpi/ic_menu_share.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_share.png
rename to core/res/res/drawable-mdpi/ic_menu_share.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_slideshow.png b/core/res/res/drawable-mdpi/ic_menu_slideshow.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_slideshow.png
rename to core/res/res/drawable-mdpi/ic_menu_slideshow.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_sort_alphabetically.png b/core/res/res/drawable-mdpi/ic_menu_sort_alphabetically.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_sort_alphabetically.png
rename to core/res/res/drawable-mdpi/ic_menu_sort_alphabetically.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_sort_by_size.png b/core/res/res/drawable-mdpi/ic_menu_sort_by_size.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_sort_by_size.png
rename to core/res/res/drawable-mdpi/ic_menu_sort_by_size.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_star.png b/core/res/res/drawable-mdpi/ic_menu_star.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_star.png
rename to core/res/res/drawable-mdpi/ic_menu_star.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_start_conversation.png b/core/res/res/drawable-mdpi/ic_menu_start_conversation.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_start_conversation.png
rename to core/res/res/drawable-mdpi/ic_menu_start_conversation.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_stop.png b/core/res/res/drawable-mdpi/ic_menu_stop.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_stop.png
rename to core/res/res/drawable-mdpi/ic_menu_stop.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_today.png b/core/res/res/drawable-mdpi/ic_menu_today.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_today.png
rename to core/res/res/drawable-mdpi/ic_menu_today.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_upload.png b/core/res/res/drawable-mdpi/ic_menu_upload.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_upload.png
rename to core/res/res/drawable-mdpi/ic_menu_upload.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_upload_you_tube.png b/core/res/res/drawable-mdpi/ic_menu_upload_you_tube.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_upload_you_tube.png
rename to core/res/res/drawable-mdpi/ic_menu_upload_you_tube.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_view.png b/core/res/res/drawable-mdpi/ic_menu_view.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_view.png
rename to core/res/res/drawable-mdpi/ic_menu_view.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_week.png b/core/res/res/drawable-mdpi/ic_menu_week.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_week.png
rename to core/res/res/drawable-mdpi/ic_menu_week.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_zoom.png b/core/res/res/drawable-mdpi/ic_menu_zoom.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_zoom.png
rename to core/res/res/drawable-mdpi/ic_menu_zoom.png
Binary files differ
diff --git a/core/res/res/drawable/ic_notification_clear_all.png b/core/res/res/drawable-mdpi/ic_notification_clear_all.png
similarity index 100%
rename from core/res/res/drawable/ic_notification_clear_all.png
rename to core/res/res/drawable-mdpi/ic_notification_clear_all.png
Binary files differ
diff --git a/core/res/res/drawable/ic_notification_overlay.9.png b/core/res/res/drawable-mdpi/ic_notification_overlay.9.png
similarity index 100%
rename from core/res/res/drawable/ic_notification_overlay.9.png
rename to core/res/res/drawable-mdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/core/res/res/drawable/ic_partial_secure.png b/core/res/res/drawable-mdpi/ic_partial_secure.png
similarity index 100%
rename from core/res/res/drawable/ic_partial_secure.png
rename to core/res/res/drawable-mdpi/ic_partial_secure.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_disk_full.png b/core/res/res/drawable-mdpi/ic_popup_disk_full.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_disk_full.png
rename to core/res/res/drawable-mdpi/ic_popup_disk_full.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_reminder.png b/core/res/res/drawable-mdpi/ic_popup_reminder.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_reminder.png
rename to core/res/res/drawable-mdpi/ic_popup_reminder.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_1.png b/core/res/res/drawable-mdpi/ic_popup_sync_1.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_1.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_1.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_2.png b/core/res/res/drawable-mdpi/ic_popup_sync_2.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_2.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_2.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_3.png b/core/res/res/drawable-mdpi/ic_popup_sync_3.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_3.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_3.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_4.png b/core/res/res/drawable-mdpi/ic_popup_sync_4.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_4.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_4.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_5.png b/core/res/res/drawable-mdpi/ic_popup_sync_5.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_5.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_5.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_6.png b/core/res/res/drawable-mdpi/ic_popup_sync_6.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_6.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_6.png
Binary files differ
diff --git a/core/res/res/drawable/ic_search_category_default.png b/core/res/res/drawable-mdpi/ic_search_category_default.png
similarity index 100%
rename from core/res/res/drawable/ic_search_category_default.png
rename to core/res/res/drawable-mdpi/ic_search_category_default.png
Binary files differ
diff --git a/core/res/res/drawable/ic_secure.png b/core/res/res/drawable-mdpi/ic_secure.png
similarity index 100%
rename from core/res/res/drawable/ic_secure.png
rename to core/res/res/drawable-mdpi/ic_secure.png
Binary files differ
diff --git a/core/res/res/drawable/ic_text_dot.png b/core/res/res/drawable-mdpi/ic_text_dot.png
similarity index 100%
rename from core/res/res/drawable/ic_text_dot.png
rename to core/res/res/drawable-mdpi/ic_text_dot.png
Binary files differ
diff --git a/core/res/res/drawable/ic_vibrate.png b/core/res/res/drawable-mdpi/ic_vibrate.png
similarity index 100%
rename from core/res/res/drawable/ic_vibrate.png
rename to core/res/res/drawable-mdpi/ic_vibrate.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume.png b/core/res/res/drawable-mdpi/ic_volume.png
similarity index 100%
rename from core/res/res/drawable/ic_volume.png
rename to core/res/res/drawable-mdpi/ic_volume.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_bluetooth_ad2p.png b/core/res/res/drawable-mdpi/ic_volume_bluetooth_ad2p.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_bluetooth_ad2p.png
rename to core/res/res/drawable-mdpi/ic_volume_bluetooth_ad2p.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_bluetooth_in_call.png b/core/res/res/drawable-mdpi/ic_volume_bluetooth_in_call.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_bluetooth_in_call.png
rename to core/res/res/drawable-mdpi/ic_volume_bluetooth_in_call.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_off.png b/core/res/res/drawable-mdpi/ic_volume_off.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_off.png
rename to core/res/res/drawable-mdpi/ic_volume_off.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_off_small.png b/core/res/res/drawable-mdpi/ic_volume_off_small.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_off_small.png
rename to core/res/res/drawable-mdpi/ic_volume_off_small.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_small.png b/core/res/res/drawable-mdpi/ic_volume_small.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_small.png
rename to core/res/res/drawable-mdpi/ic_volume_small.png
Binary files differ
diff --git a/core/res/res/drawable/icon_highlight_rectangle.9.png b/core/res/res/drawable-mdpi/icon_highlight_rectangle.9.png
similarity index 100%
rename from core/res/res/drawable/icon_highlight_rectangle.9.png
rename to core/res/res/drawable-mdpi/icon_highlight_rectangle.9.png
Binary files differ
diff --git a/core/res/res/drawable/icon_highlight_square.9.png b/core/res/res/drawable-mdpi/icon_highlight_square.9.png
similarity index 100%
rename from core/res/res/drawable/icon_highlight_square.9.png
rename to core/res/res/drawable-mdpi/icon_highlight_square.9.png
Binary files differ
diff --git a/core/res/res/drawable/ime_qwerty.png b/core/res/res/drawable-mdpi/ime_qwerty.png
similarity index 100%
rename from core/res/res/drawable/ime_qwerty.png
rename to core/res/res/drawable-mdpi/ime_qwerty.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_drag_direction_green_up.png b/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_green_up.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_drag_direction_green_up.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_green_up.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_red_up.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_drag_direction_red_up.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_red_up.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_point_area_default.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_point_area_default.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_point_area_default.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_point_area_green.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_green.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_point_area_green.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_point_area_green.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_point_area_red.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_red.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_point_area_red.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_point_area_red.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_input_error.png b/core/res/res/drawable-mdpi/indicator_input_error.png
similarity index 100%
rename from core/res/res/drawable/indicator_input_error.png
rename to core/res/res/drawable-mdpi/indicator_input_error.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_accessory_bg_landscape.9.png b/core/res/res/drawable-mdpi/keyboard_accessory_bg_landscape.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_accessory_bg_landscape.9.png
rename to core/res/res/drawable-mdpi/keyboard_accessory_bg_landscape.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_background.9.png b/core/res/res/drawable-mdpi/keyboard_background.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_background.9.png
rename to core/res/res/drawable-mdpi/keyboard_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_key_feedback_background.9.png b/core/res/res/drawable-mdpi/keyboard_key_feedback_background.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_key_feedback_background.9.png
rename to core/res/res/drawable-mdpi/keyboard_key_feedback_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_key_feedback_more_background.9.png b/core/res/res/drawable-mdpi/keyboard_key_feedback_more_background.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_key_feedback_more_background.9.png
rename to core/res/res/drawable-mdpi/keyboard_key_feedback_more_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_popup_panel_background.9.png b/core/res/res/drawable-mdpi/keyboard_popup_panel_background.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_popup_panel_background.9.png
rename to core/res/res/drawable-mdpi/keyboard_popup_panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_textfield_selected.9.png b/core/res/res/drawable-mdpi/keyboard_textfield_selected.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_textfield_selected.9.png
rename to core/res/res/drawable-mdpi/keyboard_textfield_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/light_header.9.png b/core/res/res/drawable-mdpi/light_header.9.png
similarity index 100%
rename from core/res/res/drawable/light_header.9.png
rename to core/res/res/drawable-mdpi/light_header.9.png
Binary files differ
diff --git a/core/res/res/drawable/list_selector_background_disabled.9.png b/core/res/res/drawable-mdpi/list_selector_background_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/list_selector_background_disabled.9.png
rename to core/res/res/drawable-mdpi/list_selector_background_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/list_selector_background_focus.9.png b/core/res/res/drawable-mdpi/list_selector_background_focus.9.png
similarity index 100%
rename from core/res/res/drawable/list_selector_background_focus.9.png
rename to core/res/res/drawable-mdpi/list_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/list_selector_background_longpress.9.png b/core/res/res/drawable-mdpi/list_selector_background_longpress.9.png
similarity index 100%
rename from core/res/res/drawable/list_selector_background_longpress.9.png
rename to core/res/res/drawable-mdpi/list_selector_background_longpress.9.png
Binary files differ
diff --git a/core/res/res/drawable/list_selector_background_pressed.9.png b/core/res/res/drawable-mdpi/list_selector_background_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/list_selector_background_pressed.9.png
rename to core/res/res/drawable-mdpi/list_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/loading_tile.png b/core/res/res/drawable-mdpi/loading_tile.png
similarity index 100%
rename from core/res/res/drawable/loading_tile.png
rename to core/res/res/drawable-mdpi/loading_tile.png
Binary files differ
diff --git a/core/res/res/drawable/maps_google_logo.png b/core/res/res/drawable-mdpi/maps_google_logo.png
similarity index 100%
rename from core/res/res/drawable/maps_google_logo.png
rename to core/res/res/drawable-mdpi/maps_google_logo.png
Binary files differ
diff --git a/core/res/res/drawable/menu_background.9.png b/core/res/res/drawable-mdpi/menu_background.9.png
similarity index 100%
rename from core/res/res/drawable/menu_background.9.png
rename to core/res/res/drawable-mdpi/menu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/menu_background_fill_parent_width.9.png b/core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.png
similarity index 100%
rename from core/res/res/drawable/menu_background_fill_parent_width.9.png
rename to core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.png
Binary files differ
diff --git a/core/res/res/drawable/menu_separator.9.png b/core/res/res/drawable-mdpi/menu_separator.9.png
similarity index 100%
rename from core/res/res/drawable/menu_separator.9.png
rename to core/res/res/drawable-mdpi/menu_separator.9.png
Binary files differ
diff --git a/core/res/res/drawable/menu_submenu_background.9.png b/core/res/res/drawable-mdpi/menu_submenu_background.9.png
similarity index 100%
rename from core/res/res/drawable/menu_submenu_background.9.png
rename to core/res/res/drawable-mdpi/menu_submenu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_focus.9.png b/core/res/res/drawable-mdpi/menuitem_background_focus.9.png
similarity index 100%
rename from core/res/res/drawable/menuitem_background_focus.9.png
rename to core/res/res/drawable-mdpi/menuitem_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_pressed.9.png b/core/res/res/drawable-mdpi/menuitem_background_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/menuitem_background_pressed.9.png
rename to core/res/res/drawable-mdpi/menuitem_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_solid_focused.9.png b/core/res/res/drawable-mdpi/menuitem_background_solid_focused.9.png
similarity index 100%
copy from core/res/res/drawable/menuitem_background_solid_focused.9.png
copy to core/res/res/drawable-mdpi/menuitem_background_solid_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_solid_pressed.9.png b/core/res/res/drawable-mdpi/menuitem_background_solid_pressed.9.png
similarity index 100%
copy from core/res/res/drawable/menuitem_background_solid_pressed.9.png
copy to core/res/res/drawable-mdpi/menuitem_background_solid_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_checkbox_on.png b/core/res/res/drawable-mdpi/menuitem_checkbox_on.png
similarity index 100%
rename from core/res/res/drawable/menuitem_checkbox_on.png
rename to core/res/res/drawable-mdpi/menuitem_checkbox_on.png
Binary files differ
diff --git a/core/res/res/drawable/no_tile_128.png b/core/res/res/drawable-mdpi/no_tile_128.png
similarity index 100%
rename from core/res/res/drawable/no_tile_128.png
rename to core/res/res/drawable-mdpi/no_tile_128.png
Binary files differ
diff --git a/core/res/res/drawable/panel_background.9.png b/core/res/res/drawable-mdpi/panel_background.9.png
similarity index 100%
rename from core/res/res/drawable/panel_background.9.png
rename to core/res/res/drawable-mdpi/panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/panel_picture_frame_bg_focus_blue.9.png b/core/res/res/drawable-mdpi/panel_picture_frame_bg_focus_blue.9.png
similarity index 100%
rename from core/res/res/drawable/panel_picture_frame_bg_focus_blue.9.png
rename to core/res/res/drawable-mdpi/panel_picture_frame_bg_focus_blue.9.png
Binary files differ
diff --git a/core/res/res/drawable/panel_picture_frame_bg_normal.9.png b/core/res/res/drawable-mdpi/panel_picture_frame_bg_normal.9.png
similarity index 100%
rename from core/res/res/drawable/panel_picture_frame_bg_normal.9.png
rename to core/res/res/drawable-mdpi/panel_picture_frame_bg_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/panel_picture_frame_bg_pressed_blue.9.png b/core/res/res/drawable-mdpi/panel_picture_frame_bg_pressed_blue.9.png
similarity index 100%
rename from core/res/res/drawable/panel_picture_frame_bg_pressed_blue.9.png
rename to core/res/res/drawable-mdpi/panel_picture_frame_bg_pressed_blue.9.png
Binary files differ
diff --git a/core/res/res/drawable/pickerbox_background.png b/core/res/res/drawable-mdpi/pickerbox_background.png
similarity index 100%
rename from core/res/res/drawable/pickerbox_background.png
rename to core/res/res/drawable-mdpi/pickerbox_background.png
Binary files differ
diff --git a/core/res/res/drawable/pickerbox_selected.9.png b/core/res/res/drawable-mdpi/pickerbox_selected.9.png
similarity index 100%
rename from core/res/res/drawable/pickerbox_selected.9.png
rename to core/res/res/drawable-mdpi/pickerbox_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/pickerbox_unselected.9.png b/core/res/res/drawable-mdpi/pickerbox_unselected.9.png
similarity index 100%
rename from core/res/res/drawable/pickerbox_unselected.9.png
rename to core/res/res/drawable-mdpi/pickerbox_unselected.9.png
Binary files differ
diff --git a/core/res/res/drawable/picture_emergency.png b/core/res/res/drawable-mdpi/picture_emergency.png
similarity index 100%
rename from core/res/res/drawable/picture_emergency.png
rename to core/res/res/drawable-mdpi/picture_emergency.png
Binary files differ
diff --git a/core/res/res/drawable/picture_frame.9.png b/core/res/res/drawable-mdpi/picture_frame.9.png
similarity index 100%
rename from core/res/res/drawable/picture_frame.9.png
rename to core/res/res/drawable-mdpi/picture_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_bottom_bright.9.png b/core/res/res/drawable-mdpi/popup_bottom_bright.9.png
similarity index 100%
rename from core/res/res/drawable/popup_bottom_bright.9.png
rename to core/res/res/drawable-mdpi/popup_bottom_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_bottom_dark.9.png b/core/res/res/drawable-mdpi/popup_bottom_dark.9.png
similarity index 100%
rename from core/res/res/drawable/popup_bottom_dark.9.png
rename to core/res/res/drawable-mdpi/popup_bottom_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_bottom_medium.9.png b/core/res/res/drawable-mdpi/popup_bottom_medium.9.png
similarity index 100%
rename from core/res/res/drawable/popup_bottom_medium.9.png
rename to core/res/res/drawable-mdpi/popup_bottom_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_center_bright.9.png b/core/res/res/drawable-mdpi/popup_center_bright.9.png
similarity index 100%
rename from core/res/res/drawable/popup_center_bright.9.png
rename to core/res/res/drawable-mdpi/popup_center_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_center_dark.9.png b/core/res/res/drawable-mdpi/popup_center_dark.9.png
similarity index 100%
rename from core/res/res/drawable/popup_center_dark.9.png
rename to core/res/res/drawable-mdpi/popup_center_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_center_medium.9.png b/core/res/res/drawable-mdpi/popup_center_medium.9.png
similarity index 100%
rename from core/res/res/drawable/popup_center_medium.9.png
rename to core/res/res/drawable-mdpi/popup_center_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_full_bright.9.png b/core/res/res/drawable-mdpi/popup_full_bright.9.png
similarity index 100%
rename from core/res/res/drawable/popup_full_bright.9.png
rename to core/res/res/drawable-mdpi/popup_full_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_full_dark.9.png b/core/res/res/drawable-mdpi/popup_full_dark.9.png
similarity index 100%
rename from core/res/res/drawable/popup_full_dark.9.png
rename to core/res/res/drawable-mdpi/popup_full_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_inline_error.9.png b/core/res/res/drawable-mdpi/popup_inline_error.9.png
similarity index 100%
rename from core/res/res/drawable/popup_inline_error.9.png
rename to core/res/res/drawable-mdpi/popup_inline_error.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_inline_error_above.9.png b/core/res/res/drawable-mdpi/popup_inline_error_above.9.png
similarity index 100%
rename from core/res/res/drawable/popup_inline_error_above.9.png
rename to core/res/res/drawable-mdpi/popup_inline_error_above.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_top_bright.9.png b/core/res/res/drawable-mdpi/popup_top_bright.9.png
similarity index 100%
rename from core/res/res/drawable/popup_top_bright.9.png
rename to core/res/res/drawable-mdpi/popup_top_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_top_dark.9.png b/core/res/res/drawable-mdpi/popup_top_dark.9.png
similarity index 100%
rename from core/res/res/drawable/popup_top_dark.9.png
rename to core/res/res/drawable-mdpi/popup_top_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/presence_away.png b/core/res/res/drawable-mdpi/presence_away.png
similarity index 100%
rename from core/res/res/drawable/presence_away.png
rename to core/res/res/drawable-mdpi/presence_away.png
Binary files differ
diff --git a/core/res/res/drawable/presence_busy.png b/core/res/res/drawable-mdpi/presence_busy.png
similarity index 100%
rename from core/res/res/drawable/presence_busy.png
rename to core/res/res/drawable-mdpi/presence_busy.png
Binary files differ
diff --git a/core/res/res/drawable/presence_invisible.png b/core/res/res/drawable-mdpi/presence_invisible.png
similarity index 100%
rename from core/res/res/drawable/presence_invisible.png
rename to core/res/res/drawable-mdpi/presence_invisible.png
Binary files differ
diff --git a/core/res/res/drawable/presence_offline.png b/core/res/res/drawable-mdpi/presence_offline.png
similarity index 100%
rename from core/res/res/drawable/presence_offline.png
rename to core/res/res/drawable-mdpi/presence_offline.png
Binary files differ
diff --git a/core/res/res/drawable/presence_online.png b/core/res/res/drawable-mdpi/presence_online.png
similarity index 100%
rename from core/res/res/drawable/presence_online.png
rename to core/res/res/drawable-mdpi/presence_online.png
Binary files differ
diff --git a/core/res/res/drawable/pressed_application_background_static.png b/core/res/res/drawable-mdpi/pressed_application_background_static.png
similarity index 100%
rename from core/res/res/drawable/pressed_application_background_static.png
rename to core/res/res/drawable-mdpi/pressed_application_background_static.png
Binary files differ
diff --git a/core/res/res/drawable/progressbar_indeterminate1.png b/core/res/res/drawable-mdpi/progressbar_indeterminate1.png
similarity index 100%
rename from core/res/res/drawable/progressbar_indeterminate1.png
rename to core/res/res/drawable-mdpi/progressbar_indeterminate1.png
Binary files differ
diff --git a/core/res/res/drawable/progressbar_indeterminate2.png b/core/res/res/drawable-mdpi/progressbar_indeterminate2.png
similarity index 100%
rename from core/res/res/drawable/progressbar_indeterminate2.png
rename to core/res/res/drawable-mdpi/progressbar_indeterminate2.png
Binary files differ
diff --git a/core/res/res/drawable/progressbar_indeterminate3.png b/core/res/res/drawable-mdpi/progressbar_indeterminate3.png
similarity index 100%
rename from core/res/res/drawable/progressbar_indeterminate3.png
rename to core/res/res/drawable-mdpi/progressbar_indeterminate3.png
Binary files differ
diff --git a/core/res/res/drawable/radiobutton_off_background.png b/core/res/res/drawable-mdpi/radiobutton_off_background.png
similarity index 100%
rename from core/res/res/drawable/radiobutton_off_background.png
rename to core/res/res/drawable-mdpi/radiobutton_off_background.png
Binary files differ
diff --git a/core/res/res/drawable/radiobutton_on_background.png b/core/res/res/drawable-mdpi/radiobutton_on_background.png
similarity index 100%
rename from core/res/res/drawable/radiobutton_on_background.png
rename to core/res/res/drawable-mdpi/radiobutton_on_background.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_big_half.png b/core/res/res/drawable-mdpi/rate_star_big_half.png
similarity index 100%
rename from core/res/res/drawable/rate_star_big_half.png
rename to core/res/res/drawable-mdpi/rate_star_big_half.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_big_off.png b/core/res/res/drawable-mdpi/rate_star_big_off.png
similarity index 100%
rename from core/res/res/drawable/rate_star_big_off.png
rename to core/res/res/drawable-mdpi/rate_star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_big_on.png b/core/res/res/drawable-mdpi/rate_star_big_on.png
similarity index 100%
rename from core/res/res/drawable/rate_star_big_on.png
rename to core/res/res/drawable-mdpi/rate_star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_small_half.png b/core/res/res/drawable-mdpi/rate_star_small_half.png
similarity index 100%
rename from core/res/res/drawable/rate_star_small_half.png
rename to core/res/res/drawable-mdpi/rate_star_small_half.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_small_off.png b/core/res/res/drawable-mdpi/rate_star_small_off.png
similarity index 100%
rename from core/res/res/drawable/rate_star_small_off.png
rename to core/res/res/drawable-mdpi/rate_star_small_off.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_small_on.png b/core/res/res/drawable-mdpi/rate_star_small_on.png
similarity index 100%
rename from core/res/res/drawable/rate_star_small_on.png
rename to core/res/res/drawable-mdpi/rate_star_small_on.png
Binary files differ
diff --git a/core/res/res/drawable/reticle.png b/core/res/res/drawable-mdpi/reticle.png
similarity index 100%
rename from core/res/res/drawable/reticle.png
rename to core/res/res/drawable-mdpi/reticle.png
Binary files differ
diff --git a/core/res/res/drawable/screen_progress_frame.9.png b/core/res/res/drawable-mdpi/screen_progress_frame.9.png
similarity index 100%
rename from core/res/res/drawable/screen_progress_frame.9.png
rename to core/res/res/drawable-mdpi/screen_progress_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable/screen_progress_inner.9.png b/core/res/res/drawable-mdpi/screen_progress_inner.9.png
similarity index 100%
rename from core/res/res/drawable/screen_progress_inner.9.png
rename to core/res/res/drawable-mdpi/screen_progress_inner.9.png
Binary files differ
diff --git a/core/res/res/drawable/scrollbar_handle_accelerated_anim2.9.png b/core/res/res/drawable-mdpi/scrollbar_handle_accelerated_anim2.9.png
similarity index 100%
rename from core/res/res/drawable/scrollbar_handle_accelerated_anim2.9.png
rename to core/res/res/drawable-mdpi/scrollbar_handle_accelerated_anim2.9.png
Binary files differ
diff --git a/core/res/res/drawable/scrollbar_handle_horizontal.9.png b/core/res/res/drawable-mdpi/scrollbar_handle_horizontal.9.png
similarity index 100%
rename from core/res/res/drawable/scrollbar_handle_horizontal.9.png
rename to core/res/res/drawable-mdpi/scrollbar_handle_horizontal.9.png
Binary files differ
diff --git a/core/res/res/drawable/scrollbar_handle_vertical.9.png b/core/res/res/drawable-mdpi/scrollbar_handle_vertical.9.png
similarity index 100%
rename from core/res/res/drawable/scrollbar_handle_vertical.9.png
rename to core/res/res/drawable-mdpi/scrollbar_handle_vertical.9.png
Binary files differ
diff --git a/core/res/res/drawable/search_dropdown_background.9.png b/core/res/res/drawable-mdpi/search_dropdown_background.9.png
similarity index 100%
rename from core/res/res/drawable/search_dropdown_background.9.png
rename to core/res/res/drawable-mdpi/search_dropdown_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/search_plate.9.png b/core/res/res/drawable-mdpi/search_plate.9.png
similarity index 100%
rename from core/res/res/drawable/search_plate.9.png
rename to core/res/res/drawable-mdpi/search_plate.9.png
Binary files differ
diff --git a/core/res/res/drawable/search_plate_global.9.png b/core/res/res/drawable-mdpi/search_plate_global.9.png
similarity index 100%
rename from core/res/res/drawable/search_plate_global.9.png
rename to core/res/res/drawable-mdpi/search_plate_global.9.png
Binary files differ
diff --git a/core/res/res/drawable/seek_thumb_normal.png b/core/res/res/drawable-mdpi/seek_thumb_normal.png
similarity index 100%
rename from core/res/res/drawable/seek_thumb_normal.png
rename to core/res/res/drawable-mdpi/seek_thumb_normal.png
Binary files differ
diff --git a/core/res/res/drawable/seek_thumb_pressed.png b/core/res/res/drawable-mdpi/seek_thumb_pressed.png
similarity index 100%
rename from core/res/res/drawable/seek_thumb_pressed.png
rename to core/res/res/drawable-mdpi/seek_thumb_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/seek_thumb_selected.png b/core/res/res/drawable-mdpi/seek_thumb_selected.png
similarity index 100%
rename from core/res/res/drawable/seek_thumb_selected.png
rename to core/res/res/drawable-mdpi/seek_thumb_selected.png
Binary files differ
diff --git a/core/res/res/drawable/settings_header_raw.9.png b/core/res/res/drawable-mdpi/settings_header_raw.9.png
similarity index 100%
rename from core/res/res/drawable/settings_header_raw.9.png
rename to core/res/res/drawable-mdpi/settings_header_raw.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_black_16.png b/core/res/res/drawable-mdpi/spinner_black_16.png
similarity index 100%
rename from core/res/res/drawable/spinner_black_16.png
rename to core/res/res/drawable-mdpi/spinner_black_16.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_black_20.png b/core/res/res/drawable-mdpi/spinner_black_20.png
similarity index 100%
rename from core/res/res/drawable/spinner_black_20.png
rename to core/res/res/drawable-mdpi/spinner_black_20.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_black_48.png b/core/res/res/drawable-mdpi/spinner_black_48.png
similarity index 100%
rename from core/res/res/drawable/spinner_black_48.png
rename to core/res/res/drawable-mdpi/spinner_black_48.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_black_76.png b/core/res/res/drawable-mdpi/spinner_black_76.png
similarity index 100%
rename from core/res/res/drawable/spinner_black_76.png
rename to core/res/res/drawable-mdpi/spinner_black_76.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_dropdown_background_down.9.png b/core/res/res/drawable-mdpi/spinner_dropdown_background_down.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_dropdown_background_down.9.png
rename to core/res/res/drawable-mdpi/spinner_dropdown_background_down.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_dropdown_background_up.9.png b/core/res/res/drawable-mdpi/spinner_dropdown_background_up.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_dropdown_background_up.9.png
rename to core/res/res/drawable-mdpi/spinner_dropdown_background_up.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_normal.9.png b/core/res/res/drawable-mdpi/spinner_normal.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_normal.9.png
rename to core/res/res/drawable-mdpi/spinner_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_press.9.png b/core/res/res/drawable-mdpi/spinner_press.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_press.9.png
rename to core/res/res/drawable-mdpi/spinner_press.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_select.9.png b/core/res/res/drawable-mdpi/spinner_select.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_select.9.png
rename to core/res/res/drawable-mdpi/spinner_select.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_white_16.png b/core/res/res/drawable-mdpi/spinner_white_16.png
similarity index 100%
rename from core/res/res/drawable/spinner_white_16.png
rename to core/res/res/drawable-mdpi/spinner_white_16.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_white_48.png b/core/res/res/drawable-mdpi/spinner_white_48.png
similarity index 100%
rename from core/res/res/drawable/spinner_white_48.png
rename to core/res/res/drawable-mdpi/spinner_white_48.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_white_76.png b/core/res/res/drawable-mdpi/spinner_white_76.png
similarity index 100%
rename from core/res/res/drawable/spinner_white_76.png
rename to core/res/res/drawable-mdpi/spinner_white_76.png
Binary files differ
diff --git a/core/res/res/drawable/spinnerbox_arrow_first.9.png b/core/res/res/drawable-mdpi/spinnerbox_arrow_first.9.png
similarity index 100%
rename from core/res/res/drawable/spinnerbox_arrow_first.9.png
rename to core/res/res/drawable-mdpi/spinnerbox_arrow_first.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinnerbox_arrow_last.9.png b/core/res/res/drawable-mdpi/spinnerbox_arrow_last.9.png
similarity index 100%
rename from core/res/res/drawable/spinnerbox_arrow_last.9.png
rename to core/res/res/drawable-mdpi/spinnerbox_arrow_last.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinnerbox_arrow_middle.9.png b/core/res/res/drawable-mdpi/spinnerbox_arrow_middle.9.png
similarity index 100%
rename from core/res/res/drawable/spinnerbox_arrow_middle.9.png
rename to core/res/res/drawable-mdpi/spinnerbox_arrow_middle.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinnerbox_arrow_single.9.png b/core/res/res/drawable-mdpi/spinnerbox_arrow_single.9.png
similarity index 100%
rename from core/res/res/drawable/spinnerbox_arrow_single.9.png
rename to core/res/res/drawable-mdpi/spinnerbox_arrow_single.9.png
Binary files differ
diff --git a/core/res/res/drawable/star_big_off.png b/core/res/res/drawable-mdpi/star_big_off.png
similarity index 100%
rename from core/res/res/drawable/star_big_off.png
rename to core/res/res/drawable-mdpi/star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable/star_big_on.png b/core/res/res/drawable-mdpi/star_big_on.png
similarity index 100%
rename from core/res/res/drawable/star_big_on.png
rename to core/res/res/drawable-mdpi/star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable/star_off.png b/core/res/res/drawable-mdpi/star_off.png
similarity index 100%
rename from core/res/res/drawable/star_off.png
rename to core/res/res/drawable-mdpi/star_off.png
Binary files differ
diff --git a/core/res/res/drawable/star_on.png b/core/res/res/drawable-mdpi/star_on.png
similarity index 100%
rename from core/res/res/drawable/star_on.png
rename to core/res/res/drawable-mdpi/star_on.png
Binary files differ
diff --git a/core/res/res/drawable/stat_ecb_mode.png b/core/res/res/drawable-mdpi/stat_ecb_mode.png
similarity index 100%
rename from core/res/res/drawable/stat_ecb_mode.png
rename to core/res/res/drawable-mdpi/stat_ecb_mode.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_alarm.png b/core/res/res/drawable-mdpi/stat_notify_alarm.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_alarm.png
rename to core/res/res/drawable-mdpi/stat_notify_alarm.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_call_mute.png b/core/res/res/drawable-mdpi/stat_notify_call_mute.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_call_mute.png
rename to core/res/res/drawable-mdpi/stat_notify_call_mute.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_chat.png b/core/res/res/drawable-mdpi/stat_notify_chat.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_chat.png
rename to core/res/res/drawable-mdpi/stat_notify_chat.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_disk_full.png b/core/res/res/drawable-mdpi/stat_notify_disk_full.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_disk_full.png
rename to core/res/res/drawable-mdpi/stat_notify_disk_full.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_error.png b/core/res/res/drawable-mdpi/stat_notify_error.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_error.png
rename to core/res/res/drawable-mdpi/stat_notify_error.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_missed_call.png b/core/res/res/drawable-mdpi/stat_notify_missed_call.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_missed_call.png
rename to core/res/res/drawable-mdpi/stat_notify_missed_call.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_more.png b/core/res/res/drawable-mdpi/stat_notify_more.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_more.png
rename to core/res/res/drawable-mdpi/stat_notify_more.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sdcard.png b/core/res/res/drawable-mdpi/stat_notify_sdcard.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sdcard.png
rename to core/res/res/drawable-mdpi/stat_notify_sdcard.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sdcard_usb.png b/core/res/res/drawable-mdpi/stat_notify_sdcard_usb.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sdcard_usb.png
rename to core/res/res/drawable-mdpi/stat_notify_sdcard_usb.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sim_toolkit.png b/core/res/res/drawable-mdpi/stat_notify_sim_toolkit.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sim_toolkit.png
rename to core/res/res/drawable-mdpi/stat_notify_sim_toolkit.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sync.png b/core/res/res/drawable-mdpi/stat_notify_sync.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sync.png
rename to core/res/res/drawable-mdpi/stat_notify_sync.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sync_anim0.png b/core/res/res/drawable-mdpi/stat_notify_sync_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sync_anim0.png
rename to core/res/res/drawable-mdpi/stat_notify_sync_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sync_error.png b/core/res/res/drawable-mdpi/stat_notify_sync_error.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sync_error.png
rename to core/res/res/drawable-mdpi/stat_notify_sync_error.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_voicemail.png b/core/res/res/drawable-mdpi/stat_notify_voicemail.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_voicemail.png
rename to core/res/res/drawable-mdpi/stat_notify_voicemail.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_wifi_in_range.png b/core/res/res/drawable-mdpi/stat_notify_wifi_in_range.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_wifi_in_range.png
rename to core/res/res/drawable-mdpi/stat_notify_wifi_in_range.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_0.png b/core/res/res/drawable-mdpi/stat_sys_battery_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_0.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_10.png b/core/res/res/drawable-mdpi/stat_sys_battery_10.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_10.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_10.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_100.png b/core/res/res/drawable-mdpi/stat_sys_battery_100.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_100.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_100.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_20.png b/core/res/res/drawable-mdpi/stat_sys_battery_20.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_20.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_20.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_40.png b/core/res/res/drawable-mdpi/stat_sys_battery_40.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_40.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_40.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_60.png b/core/res/res/drawable-mdpi/stat_sys_battery_60.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_60.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_60.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_80.png b/core/res/res/drawable-mdpi/stat_sys_battery_80.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_80.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_80.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim0.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim0.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim1.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim1.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim2.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim2.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim3.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim3.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim4.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim4.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim5.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim5.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim5.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim5.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_unknown.png b/core/res/res/drawable-mdpi/stat_sys_battery_unknown.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_unknown.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_unknown.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_bluetooth.png b/core/res/res/drawable-mdpi/stat_sys_data_bluetooth.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_bluetooth.png
rename to core/res/res/drawable-mdpi/stat_sys_data_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_bluetooth_connected.png b/core/res/res/drawable-mdpi/stat_sys_data_bluetooth_connected.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_bluetooth_connected.png
rename to core/res/res/drawable-mdpi/stat_sys_data_bluetooth_connected.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_connected_3g.png b/core/res/res/drawable-mdpi/stat_sys_data_connected_3g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_connected_3g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_connected_3g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_connected_e.png b/core/res/res/drawable-mdpi/stat_sys_data_connected_e.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_connected_e.png
rename to core/res/res/drawable-mdpi/stat_sys_data_connected_e.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_connected_g.png b/core/res/res/drawable-mdpi/stat_sys_data_connected_g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_connected_g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_connected_g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_in_3g.png b/core/res/res/drawable-mdpi/stat_sys_data_in_3g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_in_3g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_in_3g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_in_e.png b/core/res/res/drawable-mdpi/stat_sys_data_in_e.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_in_e.png
rename to core/res/res/drawable-mdpi/stat_sys_data_in_e.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_in_g.png b/core/res/res/drawable-mdpi/stat_sys_data_in_g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_in_g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_in_g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_inandout_3g.png b/core/res/res/drawable-mdpi/stat_sys_data_inandout_3g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_inandout_3g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_inandout_3g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_inandout_e.png b/core/res/res/drawable-mdpi/stat_sys_data_inandout_e.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_inandout_e.png
rename to core/res/res/drawable-mdpi/stat_sys_data_inandout_e.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_inandout_g.png b/core/res/res/drawable-mdpi/stat_sys_data_inandout_g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_inandout_g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_inandout_g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_out_3g.png b/core/res/res/drawable-mdpi/stat_sys_data_out_3g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_out_3g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_out_3g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_out_e.png b/core/res/res/drawable-mdpi/stat_sys_data_out_e.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_out_e.png
rename to core/res/res/drawable-mdpi/stat_sys_data_out_e.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_out_g.png b/core/res/res/drawable-mdpi/stat_sys_data_out_g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_out_g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_out_g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_usb.png b/core/res/res/drawable-mdpi/stat_sys_data_usb.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_usb.png
rename to core/res/res/drawable-mdpi/stat_sys_data_usb.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim0.png b/core/res/res/drawable-mdpi/stat_sys_download_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim0.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim1.png b/core/res/res/drawable-mdpi/stat_sys_download_anim1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim1.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim2.png b/core/res/res/drawable-mdpi/stat_sys_download_anim2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim2.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim3.png b/core/res/res/drawable-mdpi/stat_sys_download_anim3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim3.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim4.png b/core/res/res/drawable-mdpi/stat_sys_download_anim4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim4.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim5.png b/core/res/res/drawable-mdpi/stat_sys_download_anim5.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim5.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim5.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_gps_acquiring.png b/core/res/res/drawable-mdpi/stat_sys_gps_acquiring.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_gps_acquiring.png
rename to core/res/res/drawable-mdpi/stat_sys_gps_acquiring.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_gps_on.png b/core/res/res/drawable-mdpi/stat_sys_gps_on.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_gps_on.png
rename to core/res/res/drawable-mdpi/stat_sys_gps_on.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_headset.png b/core/res/res/drawable-mdpi/stat_sys_headset.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_headset.png
rename to core/res/res/drawable-mdpi/stat_sys_headset.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_no_sim.png b/core/res/res/drawable-mdpi/stat_sys_no_sim.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_no_sim.png
rename to core/res/res/drawable-mdpi/stat_sys_no_sim.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_phone_call.png b/core/res/res/drawable-mdpi/stat_sys_phone_call.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_phone_call.png
rename to core/res/res/drawable-mdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_phone_call_bluetooth.png b/core/res/res/drawable-mdpi/stat_sys_phone_call_bluetooth.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_phone_call_bluetooth.png
rename to core/res/res/drawable-mdpi/stat_sys_phone_call_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_phone_call_forward.png b/core/res/res/drawable-mdpi/stat_sys_phone_call_forward.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_phone_call_forward.png
rename to core/res/res/drawable-mdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_phone_call_on_hold.png b/core/res/res/drawable-mdpi/stat_sys_phone_call_on_hold.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_phone_call_on_hold.png
rename to core/res/res/drawable-mdpi/stat_sys_phone_call_on_hold.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_0.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_0.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_0_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_0_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_0_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_0_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_1.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_1.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_1_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_1_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_1_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_1_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_2.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_2.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_2_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_2_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_2_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_2_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_3.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_3.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_3_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_3_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_3_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_3_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_4.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_4.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_4_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_4_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_4_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_4_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_0_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_0_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_0_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_0_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_1_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_1_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_1_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_1_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_2_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_2_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_2_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_2_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_3_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_3_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_3_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_3_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_4_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_4_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_4_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_4_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ringer_silent.png b/core/res/res/drawable-mdpi/stat_sys_ringer_silent.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ringer_silent.png
rename to core/res/res/drawable-mdpi/stat_sys_ringer_silent.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ringer_vibrate.png b/core/res/res/drawable-mdpi/stat_sys_ringer_vibrate.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ringer_vibrate.png
rename to core/res/res/drawable-mdpi/stat_sys_ringer_vibrate.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_roaming_cdma_0.png b/core/res/res/drawable-mdpi/stat_sys_roaming_cdma_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_roaming_cdma_0.png
rename to core/res/res/drawable-mdpi/stat_sys_roaming_cdma_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_roaming_cdma_flash_anim0.png b/core/res/res/drawable-mdpi/stat_sys_roaming_cdma_flash_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_roaming_cdma_flash_anim0.png
rename to core/res/res/drawable-mdpi/stat_sys_roaming_cdma_flash_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_roaming_cdma_flash_anim1.png b/core/res/res/drawable-mdpi/stat_sys_roaming_cdma_flash_anim1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_roaming_cdma_flash_anim1.png
rename to core/res/res/drawable-mdpi/stat_sys_roaming_cdma_flash_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_0.png b/core/res/res/drawable-mdpi/stat_sys_signal_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_0.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_1.png b/core/res/res/drawable-mdpi/stat_sys_signal_1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_1.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_2.png b/core/res/res/drawable-mdpi/stat_sys_signal_2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_2.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_3.png b/core/res/res/drawable-mdpi/stat_sys_signal_3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_3.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_4.png b/core/res/res/drawable-mdpi/stat_sys_signal_4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_4.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_flightmode.png b/core/res/res/drawable-mdpi/stat_sys_signal_flightmode.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_flightmode.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_flightmode.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_null.png b/core/res/res/drawable-mdpi/stat_sys_signal_null.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_null.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_speakerphone.png b/core/res/res/drawable-mdpi/stat_sys_speakerphone.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_speakerphone.png
rename to core/res/res/drawable-mdpi/stat_sys_speakerphone.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_tty_mode.png b/core/res/res/drawable-mdpi/stat_sys_tty_mode.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_tty_mode.png
rename to core/res/res/drawable-mdpi/stat_sys_tty_mode.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim0.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim0.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim1.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim1.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim2.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim2.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim3.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim3.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim4.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim4.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim5.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim5.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim5.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim5.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_vp_phone_call.png b/core/res/res/drawable-mdpi/stat_sys_vp_phone_call.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_vp_phone_call.png
rename to core/res/res/drawable-mdpi/stat_sys_vp_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_vp_phone_call_bluetooth.png b/core/res/res/drawable-mdpi/stat_sys_vp_phone_call_bluetooth.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_vp_phone_call_bluetooth.png
rename to core/res/res/drawable-mdpi/stat_sys_vp_phone_call_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_vp_phone_call_on_hold.png b/core/res/res/drawable-mdpi/stat_sys_vp_phone_call_on_hold.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_vp_phone_call_on_hold.png
rename to core/res/res/drawable-mdpi/stat_sys_vp_phone_call_on_hold.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_warning.png b/core/res/res/drawable-mdpi/stat_sys_warning.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_warning.png
rename to core/res/res/drawable-mdpi/stat_sys_warning.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_0.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_0.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_1.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_1.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_2.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_2.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_3.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_3.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_4.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_4.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_background.png b/core/res/res/drawable-mdpi/status_bar_background.png
similarity index 100%
rename from core/res/res/drawable/status_bar_background.png
rename to core/res/res/drawable-mdpi/status_bar_background.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_close_on.9.png b/core/res/res/drawable-mdpi/status_bar_close_on.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_close_on.9.png
rename to core/res/res/drawable-mdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_header_background.9.png b/core/res/res/drawable-mdpi/status_bar_header_background.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_header_background.9.png
rename to core/res/res/drawable-mdpi/status_bar_header_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_item_app_background_normal.9.png b/core/res/res/drawable-mdpi/status_bar_item_app_background_normal.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_item_app_background_normal.9.png
rename to core/res/res/drawable-mdpi/status_bar_item_app_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_item_background_focus.9.png b/core/res/res/drawable-mdpi/status_bar_item_background_focus.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_item_background_focus.9.png
rename to core/res/res/drawable-mdpi/status_bar_item_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_item_background_normal.9.png b/core/res/res/drawable-mdpi/status_bar_item_background_normal.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_item_background_normal.9.png
rename to core/res/res/drawable-mdpi/status_bar_item_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_item_background_pressed.9.png b/core/res/res/drawable-mdpi/status_bar_item_background_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_item_background_pressed.9.png
rename to core/res/res/drawable-mdpi/status_bar_item_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/statusbar_background.png b/core/res/res/drawable-mdpi/statusbar_background.png
similarity index 100%
rename from core/res/res/drawable/statusbar_background.png
rename to core/res/res/drawable-mdpi/statusbar_background.png
Binary files differ
diff --git a/core/res/res/drawable/submenu_arrow_nofocus.png b/core/res/res/drawable-mdpi/submenu_arrow_nofocus.png
similarity index 100%
rename from core/res/res/drawable/submenu_arrow_nofocus.png
rename to core/res/res/drawable-mdpi/submenu_arrow_nofocus.png
Binary files differ
diff --git a/core/res/res/drawable/sym_action_add.png b/core/res/res/drawable-mdpi/sym_action_add.png
similarity index 100%
rename from core/res/res/drawable/sym_action_add.png
rename to core/res/res/drawable-mdpi/sym_action_add.png
Binary files differ
diff --git a/core/res/res/drawable/sym_action_call.png b/core/res/res/drawable-mdpi/sym_action_call.png
similarity index 100%
rename from core/res/res/drawable/sym_action_call.png
rename to core/res/res/drawable-mdpi/sym_action_call.png
Binary files differ
diff --git a/core/res/res/drawable/sym_action_chat.png b/core/res/res/drawable-mdpi/sym_action_chat.png
similarity index 100%
rename from core/res/res/drawable/sym_action_chat.png
rename to core/res/res/drawable-mdpi/sym_action_chat.png
Binary files differ
diff --git a/core/res/res/drawable/sym_action_email.png b/core/res/res/drawable-mdpi/sym_action_email.png
similarity index 100%
rename from core/res/res/drawable/sym_action_email.png
rename to core/res/res/drawable-mdpi/sym_action_email.png
Binary files differ
diff --git a/core/res/res/drawable/sym_call_incoming.png b/core/res/res/drawable-mdpi/sym_call_incoming.png
similarity index 100%
rename from core/res/res/drawable/sym_call_incoming.png
rename to core/res/res/drawable-mdpi/sym_call_incoming.png
Binary files differ
diff --git a/core/res/res/drawable/sym_call_missed.png b/core/res/res/drawable-mdpi/sym_call_missed.png
similarity index 100%
rename from core/res/res/drawable/sym_call_missed.png
rename to core/res/res/drawable-mdpi/sym_call_missed.png
Binary files differ
diff --git a/core/res/res/drawable/sym_call_outgoing.png b/core/res/res/drawable-mdpi/sym_call_outgoing.png
similarity index 100%
rename from core/res/res/drawable/sym_call_outgoing.png
rename to core/res/res/drawable-mdpi/sym_call_outgoing.png
Binary files differ
diff --git a/core/res/res/drawable/sym_contact_card.png b/core/res/res/drawable-mdpi/sym_contact_card.png
similarity index 100%
rename from core/res/res/drawable/sym_contact_card.png
rename to core/res/res/drawable-mdpi/sym_contact_card.png
Binary files differ
diff --git a/core/res/res/drawable/sym_def_app_icon.png b/core/res/res/drawable-mdpi/sym_def_app_icon.png
similarity index 100%
rename from core/res/res/drawable/sym_def_app_icon.png
rename to core/res/res/drawable-mdpi/sym_def_app_icon.png
Binary files differ
diff --git a/core/res/res/drawable/tab_focus.9.png b/core/res/res/drawable-mdpi/tab_focus.9.png
similarity index 100%
rename from core/res/res/drawable/tab_focus.9.png
rename to core/res/res/drawable-mdpi/tab_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_focus_bar_left.9.png b/core/res/res/drawable-mdpi/tab_focus_bar_left.9.png
similarity index 100%
rename from core/res/res/drawable/tab_focus_bar_left.9.png
rename to core/res/res/drawable-mdpi/tab_focus_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_focus_bar_right.9.png b/core/res/res/drawable-mdpi/tab_focus_bar_right.9.png
similarity index 100%
rename from core/res/res/drawable/tab_focus_bar_right.9.png
rename to core/res/res/drawable-mdpi/tab_focus_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_press.9.png b/core/res/res/drawable-mdpi/tab_press.9.png
similarity index 100%
rename from core/res/res/drawable/tab_press.9.png
rename to core/res/res/drawable-mdpi/tab_press.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_press_bar_left.9.png b/core/res/res/drawable-mdpi/tab_press_bar_left.9.png
similarity index 100%
rename from core/res/res/drawable/tab_press_bar_left.9.png
rename to core/res/res/drawable-mdpi/tab_press_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_press_bar_right.9.png b/core/res/res/drawable-mdpi/tab_press_bar_right.9.png
similarity index 100%
rename from core/res/res/drawable/tab_press_bar_right.9.png
rename to core/res/res/drawable-mdpi/tab_press_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_selected.9.png b/core/res/res/drawable-mdpi/tab_selected.9.png
similarity index 100%
rename from core/res/res/drawable/tab_selected.9.png
rename to core/res/res/drawable-mdpi/tab_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_selected_bar_left.9.png b/core/res/res/drawable-mdpi/tab_selected_bar_left.9.png
similarity index 100%
rename from core/res/res/drawable/tab_selected_bar_left.9.png
rename to core/res/res/drawable-mdpi/tab_selected_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_selected_bar_right.9.png b/core/res/res/drawable-mdpi/tab_selected_bar_right.9.png
similarity index 100%
rename from core/res/res/drawable/tab_selected_bar_right.9.png
rename to core/res/res/drawable-mdpi/tab_selected_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_unselected.9.png b/core/res/res/drawable-mdpi/tab_unselected.9.png
similarity index 100%
rename from core/res/res/drawable/tab_unselected.9.png
rename to core/res/res/drawable-mdpi/tab_unselected.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_default.9.png b/core/res/res/drawable-mdpi/textfield_default.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_default.9.png
rename to core/res/res/drawable-mdpi/textfield_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_disabled.9.png b/core/res/res/drawable-mdpi/textfield_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_disabled.9.png
rename to core/res/res/drawable-mdpi/textfield_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_disabled_selected.9.png b/core/res/res/drawable-mdpi/textfield_disabled_selected.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_disabled_selected.9.png
rename to core/res/res/drawable-mdpi/textfield_disabled_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_pressed.9.png b/core/res/res/drawable-mdpi/textfield_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_pressed.9.png
rename to core/res/res/drawable-mdpi/textfield_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_search_default.9.png b/core/res/res/drawable-mdpi/textfield_search_default.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_search_default.9.png
rename to core/res/res/drawable-mdpi/textfield_search_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_search_pressed.9.png b/core/res/res/drawable-mdpi/textfield_search_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_search_pressed.9.png
rename to core/res/res/drawable-mdpi/textfield_search_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_search_selected.9.png b/core/res/res/drawable-mdpi/textfield_search_selected.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_search_selected.9.png
rename to core/res/res/drawable-mdpi/textfield_search_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_selected.9.png b/core/res/res/drawable-mdpi/textfield_selected.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_selected.9.png
rename to core/res/res/drawable-mdpi/textfield_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_disabled.9.png b/core/res/res/drawable-mdpi/timepicker_down_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_disabled.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_disabled_focused.9.png b/core/res/res/drawable-mdpi/timepicker_down_disabled_focused.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_disabled_focused.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_normal.9.png b/core/res/res/drawable-mdpi/timepicker_down_normal.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_normal.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_pressed.9.png b/core/res/res/drawable-mdpi/timepicker_down_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_pressed.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_selected.9.png b/core/res/res/drawable-mdpi/timepicker_down_selected.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_selected.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_input_disabled.9.png b/core/res/res/drawable-mdpi/timepicker_input_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_input_disabled.9.png
rename to core/res/res/drawable-mdpi/timepicker_input_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_input_normal.9.png b/core/res/res/drawable-mdpi/timepicker_input_normal.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_input_normal.9.png
rename to core/res/res/drawable-mdpi/timepicker_input_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_input_pressed.9.png b/core/res/res/drawable-mdpi/timepicker_input_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_input_pressed.9.png
rename to core/res/res/drawable-mdpi/timepicker_input_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_input_selected.9.png b/core/res/res/drawable-mdpi/timepicker_input_selected.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_input_selected.9.png
rename to core/res/res/drawable-mdpi/timepicker_input_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_disabled.9.png b/core/res/res/drawable-mdpi/timepicker_up_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_disabled.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_disabled_focused.9.png b/core/res/res/drawable-mdpi/timepicker_up_disabled_focused.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_disabled_focused.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_normal.9.png b/core/res/res/drawable-mdpi/timepicker_up_normal.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_normal.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_pressed.9.png b/core/res/res/drawable-mdpi/timepicker_up_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_pressed.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_selected.9.png b/core/res/res/drawable-mdpi/timepicker_up_selected.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_selected.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/title_bar_portrait.9.png b/core/res/res/drawable-mdpi/title_bar_portrait.9.png
similarity index 100%
rename from core/res/res/drawable/title_bar_portrait.9.png
rename to core/res/res/drawable-mdpi/title_bar_portrait.9.png
Binary files differ
diff --git a/core/res/res/drawable/title_bar_shadow.9.png b/core/res/res/drawable-mdpi/title_bar_shadow.9.png
similarity index 100%
rename from core/res/res/drawable/title_bar_shadow.9.png
rename to core/res/res/drawable-mdpi/title_bar_shadow.9.png
Binary files differ
diff --git a/core/res/res/drawable/title_bar_tall.png b/core/res/res/drawable-mdpi/title_bar_tall.png
similarity index 100%
rename from core/res/res/drawable/title_bar_tall.png
rename to core/res/res/drawable-mdpi/title_bar_tall.png
Binary files differ
diff --git a/core/res/res/drawable/toast_frame.9.png b/core/res/res/drawable-mdpi/toast_frame.9.png
similarity index 100%
rename from core/res/res/drawable/toast_frame.9.png
rename to core/res/res/drawable-mdpi/toast_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable/unknown_image.png b/core/res/res/drawable-mdpi/unknown_image.png
similarity index 100%
rename from core/res/res/drawable/unknown_image.png
rename to core/res/res/drawable-mdpi/unknown_image.png
Binary files differ
diff --git a/core/res/res/drawable/zoom_plate.9.png b/core/res/res/drawable-mdpi/zoom_plate.9.png
similarity index 100%
rename from core/res/res/drawable/zoom_plate.9.png
rename to core/res/res/drawable-mdpi/zoom_plate.9.png
Binary files differ
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index cd3f065..7e7bfca 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -2924,24 +2924,23 @@
             when the user clicks a suggestion.  <i>Optional attribute.</i> -->
         <attr name="searchSuggestIntentData" format="string" />
 
-        <!-- @hide If provided, this is the minimum number of characters needed to trigger
+        <!-- If provided, this is the minimum number of characters needed to trigger
              search suggestions. The default value is 0. <i>Optional attribute.</i> -->
         <attr name="searchSuggestThreshold" format="integer" />
 
-        <!-- @hide If provided and <code>true</code>, this searchable activity will be
+        <!-- If provided and <code>true</code>, this searchable activity will be
              included in any global lists of search targets.
-             The default value is <code>false</code>. <i>Optional attribute.</i>.-->
+             The default value is <code>false</code>. <i>Optional attribute.</i>. -->
         <attr name="includeInGlobalSearch" format="boolean" />
 
-        <!-- @hide If provided and <code>true</code>, this searchable activity will be invoked for all
+        <!-- If provided and <code>true</code>, this searchable activity will be invoked for all
              queries in a particular session. If set to <code>false</code> and the activity
              returned zero results for a query, it will not be invoked again in that session for
              supersets of that zero-results query. For example, if the activity returned zero
              results for "bo", it would not be queried again for "bob".
              The default value is <code>false</code>. <i>Optional attribute.</i>. -->
         <attr name="queryAfterZeroResults" format="boolean" />
-
-        <!-- @hide If provided, this string will be used to describe the searchable item in the
+        <!-- If provided, this string will be used to describe the searchable item in the
              searchable items settings within system search settings. <i>Optional
              attribute.</i> -->
         <attr name="searchSettingsDescription" format="string" />
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 442357e..ce421db 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -781,6 +781,15 @@
              represent the minor number. For example for GL 1.2 referring to
              0x00000102, the actual value should be set as 0x00010002. -->
         <attr name="glEsVersion" format="integer"/>
+        <!--  The name of the feature that is being used. -->
+        <attr name="name" />
+        <!--  Specify whether this feature is required for the application.
+              The default is true, meaning the application requires the
+              feature, and does not want to be installed on devices that
+              don't support it.  If you set this to false, then this will
+              not impose a restriction on where the application can be
+              installed. -->
+        <attr name="required" format="boolean" />
     </declare-styleable>
 
     <!-- The <code>uses-sdk</code> tag describes the SDK features that the
@@ -823,6 +832,14 @@
     <declare-styleable name="AndroidManifestUsesLibrary" parent="AndroidManifestApplication">
         <!-- Required name of the library you use. -->
         <attr name="name" />
+        <!--  Specify whether this library is required for the application.
+              The default is true, meaning the application requires the
+              library, and does not want to be installed on devices that
+              don't support it.  If you set this to false, then this will
+              allow the application to be installed even if the library
+              doesn't exist, and you will need to check for its presence
+              dynamically at runtime. -->
+        <attr name="required" />
     </declare-styleable>
     
     <!-- The <code>supports-screens</code> specifies the screen dimensions an
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 5f1c3c3..0fba0f6 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1094,9 +1094,7 @@
   <public type="attr" name="tension" id="0x0101026a" />
   <public type="attr" name="extraTension" id="0x0101026b" />
   <public type="attr" name="anyDensity" id="0x0101026c" />
-  <!-- {@hide} -->
   <public type="attr" name="searchSuggestThreshold" id="0x0101026d" />
-  <!-- {@hide} -->
   <public type="attr" name="includeInGlobalSearch" id="0x0101026e" />
   <public type="attr" name="onClick" id="0x0101026f" />
   <public type="attr" name="targetSdkVersion" id="0x01010270" />
@@ -1117,7 +1115,6 @@
   <public type="attr" name="backupAgent" id="0x0101027f" />
   <public type="attr" name="allowBackup" id="0x01010280" />
   <public type="attr" name="glEsVersion" id="0x01010281" />
-  <!-- {@hide} -->
   <public type="attr" name="queryAfterZeroResults" id="0x01010282" />
   <public type="attr" name="dropDownHeight" id="0x01010283" />
   <public type="attr" name="smallScreens" id="0x01010284" />
@@ -1126,7 +1123,6 @@
   <public type="attr" name="progressBarStyleInverse" id="0x01010287" />
   <public type="attr" name="progressBarStyleSmallInverse" id="0x01010288" />
   <public type="attr" name="progressBarStyleLargeInverse" id="0x01010289" />
-  <!-- {@hide} -->
   <public type="attr" name="searchSettingsDescription" id="0x0101028a" />
   <public type="attr" name="textColorPrimaryInverseDisableOnly" id="0x0101028b" />
   <public type="attr" name="autoUrlDetect" id="0x0101028c" />
@@ -1150,6 +1146,7 @@
      =============================================================== -->
   <eat-comment />
 
+  <public type="attr" name="required" id="0x0101028e" />
   <public type="attr" name="accountType" />
   <public type="attr" name="contentAuthority" />
   <public type="attr" name="userVisible" />
diff --git a/data/etc/android.hardware.camera.autofocus.xml b/data/etc/android.hardware.camera.autofocus.xml
new file mode 100644
index 0000000..d6e2b90
--- /dev/null
+++ b/data/etc/android.hardware.camera.autofocus.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- This is the standard set of features for an auto-focus camera. -->
+<permissions>
+    <feature name="android.hardware.camera" />
+    <feature name="android.hardware.camera.autofocus" />
+</permissions>
diff --git a/include/media/IOMX.h b/include/media/IOMX.h
index 58a74c7..0014d5c 100644
--- a/include/media/IOMX.h
+++ b/include/media/IOMX.h
@@ -119,12 +119,6 @@
         EMPTY_BUFFER_DONE,
         FILL_BUFFER_DONE,
 
-        // reserved for OMXDecoder use.
-        START,
-        INITIAL_FILL_BUFFER,
-
-        // reserved for OMXObserver use.
-        QUIT_OBSERVER,
     } type;
 
     IOMX::node_id node;
@@ -137,28 +131,21 @@
             OMX_U32 data2;
         } event_data;
 
-        // if type == EMPTY_BUFFER_DONE || type == FILL_BUFFER
-        //    || type == INITIAL_FILL_BUFFER
+        // if type == EMPTY_BUFFER_DONE
         struct {
             IOMX::buffer_id buffer;
         } buffer_data;
 
-        // if type == EMPTY_BUFFER || type == FILL_BUFFER_DONE
+        // if type == FILL_BUFFER_DONE
         struct {
             IOMX::buffer_id buffer;
             OMX_U32 range_offset;
             OMX_U32 range_length;
             OMX_U32 flags;
             OMX_TICKS timestamp;
-            OMX_PTR platform_private;  // ignored if type == EMPTY_BUFFER
+            OMX_PTR platform_private;
         } extended_buffer_data;
 
-        // if type == SEND_COMMAND
-        struct {
-            OMX_COMMANDTYPE cmd;
-            OMX_S32 param;
-        } send_command_data;
-
     } u;
 };
 
diff --git a/include/media/stagefright/OMXClient.h b/include/media/stagefright/OMXClient.h
index 7027e1b..2f14d06 100644
--- a/include/media/stagefright/OMXClient.h
+++ b/include/media/stagefright/OMXClient.h
@@ -20,62 +20,11 @@
 
 #include <media/IOMX.h>
 
-#include <utils/KeyedVector.h>
-#include <utils/List.h>
-#include <utils/threads.h>
-
 namespace android {
 
-class OMXObserver {
-public:
-    OMXObserver();
-    virtual ~OMXObserver();
-
-    void postMessage(const omx_message &msg);
-
-protected:
-    virtual void onOMXMessage(const omx_message &msg) = 0;
-
-private:
-    friend class OMXClient;
-
-    pthread_t mThread;
-    Mutex mLock;
-    Condition mQueueNotEmpty;
-    List<omx_message> mQueue;
-
-    void start();
-    void stop();
-
-    static void *ThreadWrapper(void *me);
-    void threadEntry();
-
-    OMXObserver(const OMXObserver &);
-    OMXObserver &operator=(const OMXObserver &);
-};
-
-class OMXClient;
-
-class OMXClientReflector : public BnOMXObserver {
-public:
-    OMXClientReflector(OMXClient *client);
-
-    virtual void on_message(const omx_message &msg);
-    void reset();
-
-private:
-    OMXClient *mClient;
-
-    OMXClientReflector(const OMXClientReflector &);
-    OMXClientReflector &operator=(const OMXClientReflector &);
-};
-
 class OMXClient {
 public:
-    friend class OMXClientReflector;
-
     OMXClient();
-    ~OMXClient();
 
     status_t connect();
     void disconnect();
@@ -84,18 +33,8 @@
         return mOMX;
     }
 
-    status_t registerObserver(IOMX::node_id node, OMXObserver *observer);
-    void unregisterObserver(IOMX::node_id node);
-
 private:
     sp<IOMX> mOMX;
-    Mutex mLock;
-
-    KeyedVector<IOMX::node_id, OMXObserver *> mObservers;
-
-    sp<OMXClientReflector> mReflector;
-
-    bool onOMXMessage(const omx_message &msg);
 
     OMXClient(const OMXClient &);
     OMXClient &operator=(const OMXClient &);
diff --git a/include/media/stagefright/OMXDecoder.h b/include/media/stagefright/OMXDecoder.h
deleted file mode 100644
index 99d803a..0000000
--- a/include/media/stagefright/OMXDecoder.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef OMX_DECODER_H_
-
-#define OMX_DECODER_H_
-
-#include <binder/MemoryDealer.h>
-#include <media/stagefright/MediaBuffer.h>
-#include <media/stagefright/MediaSource.h>
-#include <media/stagefright/OMXClient.h>
-#include <utils/KeyedVector.h>
-#include <utils/List.h>
-#include <utils/threads.h>
-
-#include <OMX_Video.h>
-
-namespace android {
-
-class OMXMediaBuffer;
-
-class OMXDecoder : public MediaSource,
-                   public OMXObserver,
-                   public MediaBufferObserver {
-public:
-    static sp<OMXDecoder> Create(
-            OMXClient *client, const sp<MetaData> &data,
-            bool createEncoder,
-            const sp<MediaSource> &source);
-
-    virtual status_t start(MetaData *params = NULL);
-    virtual status_t stop();
-
-    virtual sp<MetaData> getFormat();
-
-    virtual status_t read(
-            MediaBuffer **buffer, const ReadOptions *options = NULL);
-
-    void addCodecSpecificData(const void *data, size_t size);
-
-    // from OMXObserver
-    virtual void onOMXMessage(const omx_message &msg);
-
-    // from MediaBufferObserver
-    virtual void signalBufferReturned(MediaBuffer *buffer);
-
-protected:
-    virtual ~OMXDecoder();
-
-private:
-    enum {
-        kPortIndexInput  = 0,
-        kPortIndexOutput = 1
-    };
-
-    enum PortStatus {
-        kPortStatusActive             = 0,
-        kPortStatusDisabled           = 1,
-        kPortStatusShutdown           = 2,
-        kPortStatusFlushing           = 3,
-        kPortStatusFlushingToDisabled = 4,
-        kPortStatusFlushingToShutdown = 5,
-    };
-
-    enum Quirks {
-        kWantsNALFragments                   = 1,
-        kDoesntReturnBuffersOnDisable        = 2,
-        kDoesntFlushOnExecutingToIdle        = 4,
-        kDoesntProperlyFlushAllPortsAtOnce   = 8,
-        kRequiresAllocateBufferOnInputPorts  = 16,
-        kRequiresAllocateBufferOnOutputPorts = 32,
-        kRequiresLoadedToIdleAfterAllocation = 64,
-        kMeasuresTimeInMilliseconds          = 128,
-    };
-
-    OMXClient *mClient;
-    sp<IOMX> mOMX;
-    IOMX::node_id mNode;
-    char *mComponentName;
-    char *mMIME;
-    bool mIsMP3;
-    bool mIsAVC;
-    bool mIsEncoder;
-    uint32_t mQuirks;
-
-    sp<MediaSource> mSource;
-    sp<MetaData> mOutputFormat;
-
-    Mutex mLock;
-    Condition mOutputBufferAvailable;
-
-    List<MediaBuffer *> mOutputBuffers;
-
-    struct CodecSpecificData {
-        void *data;
-        size_t size;
-    };
-
-    List<CodecSpecificData> mCodecSpecificData;
-    List<CodecSpecificData>::iterator mCodecSpecificDataIterator;
-
-    volatile OMX_STATETYPE mState;
-    OMX_U32 mPortStatusMask;
-    bool mShutdownInitiated;
-
-    typedef List<IOMX::buffer_id> BufferList;
-    Vector<BufferList> mBuffers;
-
-    KeyedVector<IOMX::buffer_id, sp<IMemory> > mBufferMap;
-    KeyedVector<IOMX::buffer_id, OMXMediaBuffer *> mMediaBufferMap;
-
-    sp<MemoryDealer> mDealer;
-
-    bool mSeeking;
-    int64_t mSeekTimeUs;
-
-    bool mStarted;
-    status_t mErrorCondition;
-    bool mReachedEndOfInput;
-
-    OMXDecoder(OMXClient *client, IOMX::node_id node,
-               const char *mime, const char *codec,
-               bool is_encoder,
-               uint32_t quirks,
-               const sp<MediaSource> &source);
-
-    void setPortStatus(OMX_U32 port_index, PortStatus status);
-    PortStatus getPortStatus(OMX_U32 port_index) const;
-
-    void allocateBuffers(OMX_U32 port_index);
-
-    void setAMRFormat();
-    void setAACFormat();
-
-    status_t setVideoPortFormatType(
-            OMX_U32 portIndex,
-            OMX_VIDEO_CODINGTYPE compressionFormat,
-            OMX_COLOR_FORMATTYPE colorFormat);
-
-    void setVideoOutputFormat(const char *mime, OMX_U32 width, OMX_U32 height);
-    void setVideoInputFormat(const char *mime, OMX_U32 width, OMX_U32 height);
-    void setup();
-    void dumpPortDefinition(OMX_U32 port_index);
-
-    void onStart();
-    void onEvent(OMX_EVENTTYPE event, OMX_U32 data1, OMX_U32 data2);
-    void onEventCmdComplete(OMX_COMMANDTYPE type, OMX_U32 data);
-    void onEventPortSettingsChanged(OMX_U32 port_index);
-    void onStateChanged(OMX_STATETYPE to);
-    void onEmptyBufferDone(IOMX::buffer_id buffer);
-    void onFillBufferDone(const omx_message &msg);
-
-    void onRealEmptyBufferDone(IOMX::buffer_id buffer);
-    void onRealFillBufferDone(const omx_message &msg);
-
-    void initiateShutdown();
-
-    void freeInputBuffer(IOMX::buffer_id buffer);
-    void freeOutputBuffer(IOMX::buffer_id buffer);
-    void freePortBuffers(OMX_U32 port_index);
-
-    void postStart();
-    void postEmptyBufferDone(IOMX::buffer_id buffer);
-    void postInitialFillBuffer(IOMX::buffer_id buffer);
-
-    OMXDecoder(const OMXDecoder &);
-    OMXDecoder &operator=(const OMXDecoder &);
-};
-
-}  // namespace android
-
-#endif  // OMX_DECODER_H_
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index 0c40b91..20b0da2 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -26,7 +26,6 @@
         AudioPlayer.cpp           \
         ESDS.cpp                  \
         OMXClient.cpp             \
-        OMXDecoder.cpp            \
         string.cpp
 
 LOCAL_C_INCLUDES:= \
diff --git a/media/libstagefright/MediaPlayerImpl.cpp b/media/libstagefright/MediaPlayerImpl.cpp
index e5301bb..2e609e3 100644
--- a/media/libstagefright/MediaPlayerImpl.cpp
+++ b/media/libstagefright/MediaPlayerImpl.cpp
@@ -33,14 +33,11 @@
 #include <media/stagefright/MetaData.h>
 #include <media/stagefright/MmapSource.h>
 #include <media/stagefright/OMXCodec.h>
-#include <media/stagefright/OMXDecoder.h>
 #include <media/stagefright/ShoutcastSource.h>
 #include <media/stagefright/TimeSource.h>
 #include <ui/PixelFormat.h>
 #include <ui/Surface.h>
 
-#define USE_OMX_CODEC   1
-
 namespace android {
 
 MediaPlayerImpl::MediaPlayerImpl(const char *uri)
@@ -406,13 +403,8 @@
 
     sp<MetaData> meta = source->getFormat();
 
-#if !USE_OMX_CODEC
-    mAudioDecoder = OMXDecoder::Create(
-            &mClient, meta, false /* createEncoder */, source);
-#else
     mAudioDecoder = OMXCodec::Create(
             mClient.interface(), meta, false /* createEncoder */, source);
-#endif
 }
 
 void MediaPlayerImpl::setVideoSource(const sp<MediaSource> &source) {
@@ -427,13 +419,8 @@
     success = meta->findInt32(kKeyHeight, &mVideoHeight);
     CHECK(success);
 
-#if !USE_OMX_CODEC
-    mVideoDecoder = OMXDecoder::Create(
-            &mClient, meta, false /* createEncoder */, source);
-#else
     mVideoDecoder = OMXCodec::Create(
             mClient.interface(), meta, false /* createEncoder */, source);
-#endif
 
     if (mISurface.get() != NULL || mSurface.get() != NULL) {
         depopulateISurface();
diff --git a/media/libstagefright/OMXClient.cpp b/media/libstagefright/OMXClient.cpp
index 2a32b4c..dba7a2a 100644
--- a/media/libstagefright/OMXClient.cpp
+++ b/media/libstagefright/OMXClient.cpp
@@ -18,11 +18,8 @@
 #define LOG_TAG "OMXClient"
 #include <utils/Log.h>
 
-#include <sys/socket.h>
-
 #include <binder/IServiceManager.h>
 #include <media/IMediaPlayerService.h>
-#include <media/IOMX.h>
 #include <media/stagefright/MediaDebug.h>
 #include <media/stagefright/OMXClient.h>
 
@@ -31,13 +28,7 @@
 OMXClient::OMXClient() {
 }
 
-OMXClient::~OMXClient() {
-    disconnect();
-}
-
 status_t OMXClient::connect() {
-    Mutex::Autolock autoLock(mLock);
-
     sp<IServiceManager> sm = defaultServiceManager();
     sp<IBinder> binder = sm->getService(String16("media.player"));
     sp<IMediaPlayerService> service = interface_cast<IMediaPlayerService>(binder);
@@ -47,175 +38,10 @@
     mOMX = service->createOMX();
     CHECK(mOMX.get() != NULL);
 
-    mReflector = new OMXClientReflector(this);
-
     return OK;
 }
 
 void OMXClient::disconnect() {
-    Mutex::Autolock autoLock(mLock);
-
-    if (mReflector.get() != NULL) {
-        return;
-    }
-
-    CHECK(mObservers.isEmpty());
-
-    mReflector->reset();
-    mReflector.clear();
-}
-
-status_t OMXClient::registerObserver(
-        IOMX::node_id node, OMXObserver *observer) {
-    Mutex::Autolock autoLock(&mLock);
-
-    ssize_t index = mObservers.indexOfKey(node);
-    if (index >= 0) {
-        return UNKNOWN_ERROR;
-    }
-
-    mObservers.add(node, observer);
-    observer->start();
-
-    mOMX->observe_node(node, mReflector);
-
-    return OK;
-}
-
-void OMXClient::unregisterObserver(IOMX::node_id node) {
-    Mutex::Autolock autoLock(mLock);
-
-    ssize_t index = mObservers.indexOfKey(node);
-    CHECK(index >= 0);
-
-    if (index < 0) {
-        return;
-    }
-
-    OMXObserver *observer = mObservers.valueAt(index);
-    observer->stop();
-    mObservers.removeItemsAt(index);
-}
-
-bool OMXClient::onOMXMessage(const omx_message &msg) {
-    bool done = false;
-
-    switch (msg.type) {
-        case omx_message::EVENT:
-        {
-            LOGV("OnEvent node:%p event:%d data1:%ld data2:%ld",
-                 msg.u.event_data.node,
-                 msg.u.event_data.event,
-                 msg.u.event_data.data1,
-                 msg.u.event_data.data2);
-
-            break;
-        }
-
-        case omx_message::FILL_BUFFER_DONE:
-        {
-            LOGV("FillBufferDone %p", msg.u.extended_buffer_data.buffer);
-            break;
-        }
-
-        case omx_message::EMPTY_BUFFER_DONE:
-        {
-            LOGV("EmptyBufferDone %p", msg.u.buffer_data.buffer);
-            break;
-        }
-
-        default:
-            LOGE("received unknown omx_message type %d", msg.type);
-            break;
-    }
-
-    Mutex::Autolock autoLock(mLock);
-    ssize_t index = mObservers.indexOfKey(msg.node);
-
-    if (index >= 0) {
-        mObservers.editValueAt(index)->postMessage(msg);
-    }
-
-    return done;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-OMXObserver::OMXObserver() {
-}
-
-OMXObserver::~OMXObserver() {
-}
-
-void OMXObserver::start() {
-    pthread_attr_t attr;
-    pthread_attr_init(&attr);
-    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-
-    int err = pthread_create(&mThread, &attr, ThreadWrapper, this);
-    CHECK_EQ(err, 0);
-
-    pthread_attr_destroy(&attr);
-}
-
-void OMXObserver::stop() {
-    omx_message msg;
-    msg.type = omx_message::QUIT_OBSERVER;
-    postMessage(msg);
-
-    void *dummy;
-    pthread_join(mThread, &dummy);
-}
-
-void OMXObserver::postMessage(const omx_message &msg) {
-    Mutex::Autolock autoLock(mLock);
-    mQueue.push_back(msg);
-    mQueueNotEmpty.signal();
-}
-
-// static
-void *OMXObserver::ThreadWrapper(void *me) {
-    static_cast<OMXObserver *>(me)->threadEntry();
-
-    return NULL;
-}
-
-void OMXObserver::threadEntry() {
-    for (;;) {
-        omx_message msg;
-
-        {
-            Mutex::Autolock autoLock(mLock);
-            while (mQueue.empty()) {
-                mQueueNotEmpty.wait(mLock);
-            }
-
-            msg = *mQueue.begin();
-            mQueue.erase(mQueue.begin());
-        }
-
-        if (msg.type == omx_message::QUIT_OBSERVER) {
-            break;
-        }
-
-        onOMXMessage(msg);
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-OMXClientReflector::OMXClientReflector(OMXClient *client)
-    : mClient(client) {
-}
-
-void OMXClientReflector::on_message(const omx_message &msg) {
-    if (mClient != NULL) {
-        mClient->onOMXMessage(msg);
-    }
-}
-
-void OMXClientReflector::reset() {
-    mClient = NULL;
 }
 
 }  // namespace android
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 38b5e5b..91db766 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -499,15 +499,25 @@
     // Enabling this code appears to be the right thing(tm), but,...
     // the TI decoder then loses the ability to output YUV420 and only outputs
     // YCbYCr (16bit)
+
 #if 1
-    if (!strcmp("OMX.TI.Video.Decoder", mComponentName)
-        && !strcasecmp("video/avc", mime)) {
+    if (!strcmp("OMX.TI.Video.Decoder", mComponentName)) {
         OMX_PARAM_COMPONENTROLETYPE role;
         role.nSize = sizeof(role);
         role.nVersion.s.nVersionMajor = 1;
         role.nVersion.s.nVersionMinor = 1;
-        strncpy((char *)role.cRole, "video_decoder.avc",
-                OMX_MAX_STRINGNAME_SIZE - 1);
+
+        if (!strcasecmp("video/avc", mime)) {
+            strncpy((char *)role.cRole, "video_decoder.avc",
+                    OMX_MAX_STRINGNAME_SIZE - 1);
+        } else if (!strcasecmp("video/mp4v-es", mime)) {
+            strncpy((char *)role.cRole, "video_decoder.mpeg4",
+                    OMX_MAX_STRINGNAME_SIZE - 1);
+        } else if (!strcasecmp("video/3gpp", mime)) {
+            strncpy((char *)role.cRole, "video_decoder.h263",
+                    OMX_MAX_STRINGNAME_SIZE - 1);
+        }
+
         role.cRole[OMX_MAX_STRINGNAME_SIZE - 1] = '\0';
 
         status_t err = mOMX->set_parameter(
diff --git a/media/libstagefright/OMXDecoder.cpp b/media/libstagefright/OMXDecoder.cpp
deleted file mode 100644
index a3172ed..0000000
--- a/media/libstagefright/OMXDecoder.cpp
+++ /dev/null
@@ -1,1650 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//#define LOG_NDEBUG 0
-#define LOG_TAG "OMXDecoder"
-#include <utils/Log.h>
-
-#include <ctype.h>
-
-#include <OMX_Component.h>
-
-#include <media/stagefright/ESDS.h>
-#include <media/stagefright/MediaDebug.h>
-#include <media/stagefright/MetaData.h>
-#include <media/stagefright/OMXDecoder.h>
-
-namespace android {
-
-class OMXMediaBuffer : public MediaBuffer {
-public:
-    OMXMediaBuffer(IOMX::buffer_id buffer_id, const sp<IMemory> &mem)
-        : MediaBuffer(mem->pointer(),
-                      mem->size()),
-          mBufferID(buffer_id),
-          mMem(mem) {
-    }
-
-    IOMX::buffer_id buffer_id() const { return mBufferID; }
-
-private:
-    IOMX::buffer_id mBufferID;
-    sp<IMemory> mMem;
-
-    OMXMediaBuffer(const OMXMediaBuffer &);
-    OMXMediaBuffer &operator=(const OMXMediaBuffer &);
-};
-
-struct CodecInfo {
-    const char *mime;
-    const char *codec;
-};
-
-static const CodecInfo kDecoderInfo[] = {
-    { "audio/mpeg", "OMX.TI.MP3.decode" },
-    { "audio/mpeg", "OMX.PV.mp3dec" },
-    { "audio/3gpp", "OMX.TI.AMR.decode" },
-    { "audio/3gpp", "OMX.PV.amrdec" },
-    { "audio/mp4a-latm", "OMX.TI.AAC.decode" },
-    { "audio/mp4a-latm", "OMX.PV.aacdec" },
-    { "video/mp4v-es", "OMX.qcom.video.decoder.mpeg4" },
-    { "video/mp4v-es", "OMX.TI.Video.Decoder" },
-    { "video/mp4v-es", "OMX.PV.mpeg4dec" },
-    { "video/3gpp", "OMX.qcom.video.decoder.h263" },
-    { "video/3gpp", "OMX.TI.Video.Decoder" },
-    { "video/3gpp", "OMX.PV.h263dec" },
-    { "video/avc", "OMX.qcom.video.decoder.avc" },
-    { "video/avc", "OMX.TI.Video.Decoder" },
-    { "video/avc", "OMX.PV.avcdec" },
-};
-
-static const CodecInfo kEncoderInfo[] = {
-    { "audio/3gpp", "OMX.PV.amrencnb" },
-    { "audio/mp4a-latm", "OMX.PV.aacenc" },
-    { "video/mp4v-es", "OMX.qcom.video.encoder.mpeg4" },
-    { "video/mp4v-es", "OMX.TI.Video.encoder" },
-    { "video/mp4v-es", "OMX.PV.mpeg4enc" },
-    { "video/3gpp", "OMX.qcom.video.encoder.h263" },
-    { "video/3gpp", "OMX.TI.Video.encoder" },
-    { "video/3gpp", "OMX.PV.h263enc" },
-    { "video/avc", "OMX.TI.Video.encoder" },
-    { "video/avc", "OMX.PV.avcenc" },
-};
-
-static const char *GetCodec(const CodecInfo *info, size_t numInfos,
-                            const char *mime, int index) {
-    CHECK(index >= 0);
-    for(size_t i = 0; i < numInfos; ++i) {
-        if (!strcasecmp(mime, info[i].mime)) {
-            if (index == 0) {
-                return info[i].codec;
-            }
-
-            --index;
-        }
-    }
-
-    return NULL;
-}
-
-// static
-sp<OMXDecoder> OMXDecoder::Create(
-        OMXClient *client, const sp<MetaData> &meta,
-        bool createEncoder,
-        const sp<MediaSource> &source) {
-    const char *mime;
-    bool success = meta->findCString(kKeyMIMEType, &mime);
-    CHECK(success);
-
-    sp<IOMX> omx = client->interface();
-
-    const char *codec = NULL;
-    IOMX::node_id node = 0;
-    for (int index = 0;; ++index) {
-        if (createEncoder) {
-            codec = GetCodec(
-                    kEncoderInfo, sizeof(kEncoderInfo) / sizeof(kEncoderInfo[0]),
-                    mime, index);
-        } else {
-            codec = GetCodec(
-                    kDecoderInfo, sizeof(kDecoderInfo) / sizeof(kDecoderInfo[0]),
-                    mime, index);
-        }
-
-        if (!codec) {
-            return NULL;
-        }
-
-        LOGI("Attempting to allocate OMX node '%s'", codec);
-
-        status_t err = omx->allocate_node(codec, &node);
-        if (err == OK) {
-            break;
-        }
-    }
-
-    uint32_t quirks = 0;
-    if (!strcmp(codec, "OMX.PV.avcdec")) {
-        quirks |= kWantsNALFragments;
-    }
-    if (!strcmp(codec, "OMX.TI.AAC.decode")
-        || !strcmp(codec, "OMX.TI.MP3.decode")) {
-        quirks |= kDoesntReturnBuffersOnDisable;
-    }
-    if (!strcmp(codec, "OMX.TI.AAC.decode")) {
-        quirks |= kDoesntFlushOnExecutingToIdle;
-        quirks |= kDoesntProperlyFlushAllPortsAtOnce;
-    }
-    if (!strncmp(codec, "OMX.qcom.video.encoder.", 23)) {
-        quirks |= kRequiresAllocateBufferOnInputPorts;
-    }
-    if (!strncmp(codec, "OMX.qcom.video.decoder.", 23)) {
-        quirks |= kRequiresAllocateBufferOnOutputPorts;
-    }
-    if (!strncmp(codec, "OMX.qcom.video.", 15)) {
-        quirks |= kRequiresLoadedToIdleAfterAllocation;
-    }
-
-    sp<OMXDecoder> decoder = new OMXDecoder(
-            client, node, mime, codec, createEncoder, quirks,
-            source);
-
-    uint32_t type;
-    const void *data;
-    size_t size;
-    if (meta->findData(kKeyESDS, &type, &data, &size)) {
-        ESDS esds((const char *)data, size);
-        CHECK_EQ(esds.InitCheck(), OK);
-
-        const void *codec_specific_data;
-        size_t codec_specific_data_size;
-        esds.getCodecSpecificInfo(
-                &codec_specific_data, &codec_specific_data_size);
-
-        printf("found codec specific data of size %d\n",
-               codec_specific_data_size);
-
-        decoder->addCodecSpecificData(
-                codec_specific_data, codec_specific_data_size);
-    } else if (meta->findData(kKeyAVCC, &type, &data, &size)) {
-        printf("found avcc of size %d\n", size);
-
-        const uint8_t *ptr = (const uint8_t *)data + 6;
-        size -= 6;
-        while (size >= 2) {
-            size_t length = ptr[0] << 8 | ptr[1];
-
-            ptr += 2;
-            size -= 2;
-
-            // printf("length = %d, size = %d\n", length, size);
-
-            CHECK(size >= length);
-
-            decoder->addCodecSpecificData(ptr, length);
-
-            ptr += length;
-            size -= length;
-
-            if (size <= 1) {
-                break;
-            }
-
-            ptr++;  // XXX skip trailing 0x01 byte???
-            --size;
-        }
-    }
-
-    return decoder;
-}
-
-OMXDecoder::OMXDecoder(OMXClient *client, IOMX::node_id node,
-                       const char *mime, const char *codec,
-                       bool is_encoder,
-                       uint32_t quirks,
-                       const sp<MediaSource> &source)
-    : mClient(client),
-      mOMX(mClient->interface()),
-      mNode(node),
-      mComponentName(strdup(codec)),
-      mMIME(strdup(mime)),
-      mIsMP3(!strcasecmp(mime, "audio/mpeg")),
-      mIsAVC(!strcasecmp(mime, "video/avc")),
-      mIsEncoder(is_encoder),
-      mQuirks(quirks),
-      mSource(source),
-      mCodecSpecificDataIterator(mCodecSpecificData.begin()),
-      mState(OMX_StateLoaded),
-      mPortStatusMask(kPortStatusActive << 2 | kPortStatusActive),
-      mShutdownInitiated(false),
-      mDealer(new MemoryDealer(5 * 1024 * 1024)),
-      mSeeking(false),
-      mStarted(false),
-      mErrorCondition(OK),
-      mReachedEndOfInput(false) {
-    mClient->registerObserver(mNode, this);
-
-    mBuffers.push();  // input buffers
-    mBuffers.push();  // output buffers
-
-    setup();
-}
-
-OMXDecoder::~OMXDecoder() {
-    if (mStarted) {
-        stop();
-    }
-
-    for (List<CodecSpecificData>::iterator it = mCodecSpecificData.begin();
-         it != mCodecSpecificData.end(); ++it) {
-        free((*it).data);
-    }
-    mCodecSpecificData.clear();
-
-    mClient->unregisterObserver(mNode);
-
-    status_t err = mOMX->free_node(mNode);
-    CHECK_EQ(err, OK);
-    mNode = 0;
-
-    free(mMIME);
-    mMIME = NULL;
-
-    free(mComponentName);
-    mComponentName = NULL;
-}
-
-status_t OMXDecoder::start(MetaData *) {
-    CHECK(!mStarted);
-
-    // mDealer->dump("Decoder Dealer");
-
-    sp<MetaData> params = new MetaData;
-    if (mQuirks & kWantsNALFragments) {
-        params->setInt32(kKeyWantsNALFragments, true);
-    }
-
-    status_t err = mSource->start(params.get());
-
-    if (err != OK) {
-        return err;
-    }
-
-    postStart();
-
-    mStarted = true;
-
-    return OK;
-}
-
-status_t OMXDecoder::stop() {
-    CHECK(mStarted);
-
-    LOGI("Initiating OMX Node shutdown, busy polling.");
-    initiateShutdown();
-
-    // Important: initiateShutdown must be called first, _then_ release
-    // buffers we're holding onto.
-    while (!mOutputBuffers.empty()) {
-        MediaBuffer *buffer = *mOutputBuffers.begin();
-        mOutputBuffers.erase(mOutputBuffers.begin());
-
-        LOGV("releasing buffer %p.", buffer->data());
-
-        buffer->release();
-        buffer = NULL;
-    }
-
-    int attempt = 1;
-    while (mState != OMX_StateLoaded && attempt < 20) {
-        usleep(100000);
-
-        ++attempt;
-    }
-
-    if (mState != OMX_StateLoaded) {
-        LOGE("!!! OMX Node '%s' did NOT shutdown cleanly !!!", mComponentName);
-    } else {
-        LOGI("OMX Node '%s' has shutdown cleanly.", mComponentName);
-    }
-
-    mSource->stop();
-
-    mCodecSpecificDataIterator = mCodecSpecificData.begin();
-    mShutdownInitiated = false;
-    mSeeking = false;
-    mStarted = false;
-    mErrorCondition = OK;
-    mReachedEndOfInput = false;
-
-    return OK;
-}
-
-sp<MetaData> OMXDecoder::getFormat() {
-    return mOutputFormat;
-}
-
-status_t OMXDecoder::read(
-        MediaBuffer **out, const ReadOptions *options) {
-    CHECK(mStarted);
-
-    *out = NULL;
-
-    Mutex::Autolock autoLock(mLock);
-
-    if (mErrorCondition != OK && mErrorCondition != ERROR_END_OF_STREAM) {
-        // Errors are sticky.
-        return mErrorCondition;
-    }
-
-    int64_t seekTimeUs;
-    if (options && options->getSeekTo(&seekTimeUs)) {
-        LOGI("[%s] seeking to %lld us", mComponentName, seekTimeUs);
-
-        mErrorCondition = OK;
-        mReachedEndOfInput = false;
-
-        setPortStatus(kPortIndexInput, kPortStatusFlushing);
-        setPortStatus(kPortIndexOutput, kPortStatusFlushing);
-
-        mSeeking = true;
-        mSeekTimeUs = seekTimeUs;
-
-        while (!mOutputBuffers.empty()) {
-            OMXMediaBuffer *buffer =
-                static_cast<OMXMediaBuffer *>(*mOutputBuffers.begin());
-
-            // We could have used buffer->release() instead, but we're
-            // holding the lock and signalBufferReturned attempts to acquire
-            // the lock.
-            buffer->claim();
-            mBuffers.editItemAt(
-                    kPortIndexOutput).push_back(buffer->buffer_id());
-            buffer = NULL;
-
-            mOutputBuffers.erase(mOutputBuffers.begin());
-        }
-
-        // XXX One of TI's decoders appears to ignore a flush if it doesn't
-        // currently hold on to any buffers on the port in question and
-        // never sends the completion event... FIXME
-
-        status_t err = mOMX->send_command(mNode, OMX_CommandFlush, OMX_ALL);
-        CHECK_EQ(err, OK);
-
-        // Once flushing is completed buffers will again be scheduled to be
-        // filled/emptied.
-    }
-
-    while (mErrorCondition == OK && mOutputBuffers.empty()) {
-        mOutputBufferAvailable.wait(mLock);
-    }
-
-    if (!mOutputBuffers.empty()) {
-        MediaBuffer *buffer = *mOutputBuffers.begin();
-        mOutputBuffers.erase(mOutputBuffers.begin());
-
-        *out = buffer;
-
-        return OK;
-    } else {
-        CHECK(mErrorCondition != OK);
-        return mErrorCondition;
-    }
-}
-
-void OMXDecoder::addCodecSpecificData(const void *data, size_t size) {
-    CodecSpecificData specific;
-    specific.data = malloc(size);
-    memcpy(specific.data, data, size);
-    specific.size = size;
-
-    mCodecSpecificData.push_back(specific);
-    mCodecSpecificDataIterator = mCodecSpecificData.begin();
-}
-
-void OMXDecoder::onOMXMessage(const omx_message &msg) {
-    Mutex::Autolock autoLock(mLock);
-
-    switch (msg.type) {
-        case omx_message::START:
-        {
-            onStart();
-            break;
-        }
-
-        case omx_message::EVENT:
-        {
-            onEvent(msg.u.event_data.event, msg.u.event_data.data1,
-                    msg.u.event_data.data2);
-            break;
-        }
-
-        case omx_message::EMPTY_BUFFER_DONE:
-        {
-            onEmptyBufferDone(msg.u.buffer_data.buffer);
-            break;
-        }
-
-        case omx_message::FILL_BUFFER_DONE:
-        case omx_message::INITIAL_FILL_BUFFER:
-        {
-            onFillBufferDone(msg);
-            break;
-        }
-
-        default:
-            LOGE("received unknown omx_message type %d", msg.type);
-            break;
-    }
-}
-
-void OMXDecoder::setAMRFormat() {
-    OMX_AUDIO_PARAM_AMRTYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexInput;
-
-    status_t err =
-        mOMX->get_parameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
-
-    CHECK_EQ(err, NO_ERROR);
-
-    def.eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF;
-    def.eAMRBandMode = OMX_AUDIO_AMRBandModeNB0;
-
-    err = mOMX->set_parameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::setAACFormat() {
-    OMX_AUDIO_PARAM_AACPROFILETYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexInput;
-
-    status_t err =
-        mOMX->get_parameter(mNode, OMX_IndexParamAudioAac, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    def.eAACStreamFormat = OMX_AUDIO_AACStreamFormatMP4ADTS;
-
-    err = mOMX->set_parameter(mNode, OMX_IndexParamAudioAac, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-}
-
-status_t OMXDecoder::setVideoPortFormatType(
-        OMX_U32 portIndex,
-        OMX_VIDEO_CODINGTYPE compressionFormat,
-        OMX_COLOR_FORMATTYPE colorFormat) {
-    OMX_VIDEO_PARAM_PORTFORMATTYPE format;
-    format.nSize = sizeof(format);
-    format.nVersion.s.nVersionMajor = 1;
-    format.nVersion.s.nVersionMinor = 1;
-    format.nPortIndex = portIndex;
-    format.nIndex = 0;
-    bool found = false;
-
-    OMX_U32 index = 0;
-    for (;;) {
-        format.nIndex = index;
-        status_t err = mOMX->get_parameter(
-                mNode, OMX_IndexParamVideoPortFormat,
-                &format, sizeof(format));
-
-        if (err != OK) {
-            return err;
-        }
-
-        // The following CHECKion is violated by TI's video decoder.
-        // CHECK_EQ(format.nIndex, index);
-
-#if 1
-        LOGI("portIndex: %ld, index: %ld, eCompressionFormat=%d eColorFormat=%d",
-             portIndex,
-             index, format.eCompressionFormat, format.eColorFormat);
-#endif
-
-        if (!strcmp("OMX.TI.Video.encoder", mComponentName)) {
-            if (portIndex == kPortIndexInput
-                    && colorFormat == format.eColorFormat) {
-                // eCompressionFormat does not seem right.
-                found = true;
-                break;
-            }
-            if (portIndex == kPortIndexOutput
-                    && compressionFormat == format.eCompressionFormat) {
-                // eColorFormat does not seem right.
-                found = true;
-                break;
-            }
-        }
-
-        if (format.eCompressionFormat == compressionFormat
-            && format.eColorFormat == colorFormat) {
-            found = true;
-            break;
-        }
-
-        ++index;
-    }
-
-    if (!found) {
-        return UNKNOWN_ERROR;
-    }
-
-    LOGI("found a match.");
-    status_t err = mOMX->set_parameter(
-            mNode, OMX_IndexParamVideoPortFormat,
-            &format, sizeof(format));
-
-    return err;
-}
-
-void OMXDecoder::setVideoInputFormat(
-        const char *mime, OMX_U32 width, OMX_U32 height) {
-    LOGI("setVideoInputFormat width=%ld, height=%ld", width, height);
-
-    OMX_VIDEO_CODINGTYPE compressionFormat = OMX_VIDEO_CodingUnused;
-    if (!strcasecmp("video/avc", mMIME)) {
-        compressionFormat = OMX_VIDEO_CodingAVC;
-    } else if (!strcasecmp("video/mp4v-es", mMIME)) {
-        compressionFormat = OMX_VIDEO_CodingMPEG4;
-    } else if (!strcasecmp("video/3gpp", mMIME)) {
-        compressionFormat = OMX_VIDEO_CodingH263;
-    } else {
-        LOGE("Not a supported video mime type: %s", mime);
-        CHECK(!"Should not be here. Not a supported video mime type.");
-    }
-
-    OMX_COLOR_FORMATTYPE colorFormat =
-        0 ? OMX_COLOR_FormatYCbYCr : OMX_COLOR_FormatCbYCrY;
-
-    if (!strncmp("OMX.qcom.video.encoder.", mComponentName, 23)) {
-        colorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
-    }
-
-    setVideoPortFormatType(
-            kPortIndexInput, OMX_VIDEO_CodingUnused,
-            colorFormat);
-
-    setVideoPortFormatType(
-            kPortIndexOutput, compressionFormat, OMX_COLOR_FormatUnused);
-
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
-
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexOutput;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-
-    CHECK_EQ(err, NO_ERROR);
-
-    CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
-
-    video_def->nFrameWidth = width;
-    video_def->nFrameHeight = height;
-
-    video_def->eCompressionFormat = compressionFormat;
-    video_def->eColorFormat = OMX_COLOR_FormatUnused;
-
-    err = mOMX->set_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    ////////////////////////////////////////////////////////////////////////////
-
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexInput;
-
-    err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    def.nBufferSize = (width * height * 2); // (width * height * 3) / 2;
-    LOGI("setting nBufferSize = %ld", def.nBufferSize);
-
-    CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
-
-    video_def->nFrameWidth = width;
-    video_def->nFrameHeight = height;
-    video_def->eCompressionFormat = OMX_VIDEO_CodingUnused;
-    video_def->eColorFormat = colorFormat;
-
-    err = mOMX->set_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::setVideoOutputFormat(
-        const char *mime, OMX_U32 width, OMX_U32 height) {
-    LOGI("setVideoOutputFormat width=%ld, height=%ld", width, height);
-
-#if 1
-    // Enabling this code appears to be the right thing(tm), but,...
-    // the TI decoder then loses the ability to output YUV420 and only outputs
-    // YCbYCr (16bit)
-    if (!strcmp("OMX.TI.Video.Decoder", mComponentName)
-        && !strcasecmp("video/avc", mime)) {
-        OMX_PARAM_COMPONENTROLETYPE role;
-        role.nSize = sizeof(role);
-        role.nVersion.s.nVersionMajor = 1;
-        role.nVersion.s.nVersionMinor = 1;
-        strncpy((char *)role.cRole, "video_decoder.avc",
-                OMX_MAX_STRINGNAME_SIZE - 1);
-        role.cRole[OMX_MAX_STRINGNAME_SIZE - 1] = '\0';
-
-        status_t err = mOMX->set_parameter(
-                mNode, OMX_IndexParamStandardComponentRole,
-                &role, sizeof(role));
-        CHECK_EQ(err, OK);
-    }
-#endif
-
-    OMX_VIDEO_CODINGTYPE compressionFormat = OMX_VIDEO_CodingUnused;
-    if (!strcasecmp("video/avc", mime)) {
-        compressionFormat = OMX_VIDEO_CodingAVC;
-    } else if (!strcasecmp("video/mp4v-es", mime)) {
-        compressionFormat = OMX_VIDEO_CodingMPEG4;
-    } else if (!strcasecmp("video/3gpp", mime)) {
-        compressionFormat = OMX_VIDEO_CodingH263;
-    } else {
-        LOGE("Not a supported video mime type: %s", mime);
-        CHECK(!"Should not be here. Not a supported video mime type.");
-    }
-
-    setVideoPortFormatType(
-            kPortIndexInput, compressionFormat, OMX_COLOR_FormatUnused);
-
-#if 1
-    {
-        OMX_VIDEO_PARAM_PORTFORMATTYPE format;
-        format.nSize = sizeof(format);
-        format.nVersion.s.nVersionMajor = 1;
-        format.nVersion.s.nVersionMinor = 1;
-        format.nPortIndex = kPortIndexOutput;
-        format.nIndex = 0;
-
-        status_t err = mOMX->get_parameter(
-                mNode, OMX_IndexParamVideoPortFormat,
-                &format, sizeof(format));
-        CHECK_EQ(err, OK);
-
-        CHECK_EQ(format.eCompressionFormat, OMX_VIDEO_CodingUnused);
-
-        static const int OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00;
-
-        CHECK(format.eColorFormat == OMX_COLOR_FormatYUV420Planar
-               || format.eColorFormat == OMX_COLOR_FormatYUV420SemiPlanar
-               || format.eColorFormat == OMX_COLOR_FormatCbYCrY
-               || format.eColorFormat == OMX_QCOM_COLOR_FormatYVU420SemiPlanar);
-
-        err = mOMX->set_parameter(
-                mNode, OMX_IndexParamVideoPortFormat,
-                &format, sizeof(format));
-        CHECK_EQ(err, OK);
-    }
-#endif
-
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
-
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexInput;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-
-    CHECK_EQ(err, NO_ERROR);
-
-#if 1
-    // XXX Need a (much) better heuristic to compute input buffer sizes.
-    const size_t X = 64 * 1024;
-    if (def.nBufferSize < X) {
-        def.nBufferSize = X;
-    }
-#endif
-
-    CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
-
-    video_def->nFrameWidth = width;
-    video_def->nFrameHeight = height;
-
-    video_def->eColorFormat = OMX_COLOR_FormatUnused;
-
-    err = mOMX->set_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    ////////////////////////////////////////////////////////////////////////////
-
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexOutput;
-
-    err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
-
-#if 0
-    def.nBufferSize =
-        (((width + 15) & -16) * ((height + 15) & -16) * 3) / 2;  // YUV420
-#endif
-
-    video_def->nFrameWidth = width;
-    video_def->nFrameHeight = height;
-
-    err = mOMX->set_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::setup() {
-    const sp<MetaData> &meta = mSource->getFormat();
-
-    const char *mime;
-    bool success = meta->findCString(kKeyMIMEType, &mime);
-    CHECK(success);
-
-    if (!strcasecmp(mime, "audio/3gpp")) {
-        setAMRFormat();
-    } else if (!strcasecmp(mime, "audio/mp4a-latm")) {
-        setAACFormat();
-    } else if (!strncasecmp(mime, "video/", 6)) {
-        int32_t width, height;
-        bool success = meta->findInt32(kKeyWidth, &width);
-        success = success && meta->findInt32(kKeyHeight, &height);
-        CHECK(success);
-
-        if (mIsEncoder) {
-            setVideoInputFormat(mime, width, height);
-        } else {
-            setVideoOutputFormat(mime, width, height);
-        }
-    }
-
-    // dumpPortDefinition(0);
-    // dumpPortDefinition(1);
-
-    mOutputFormat = new MetaData;
-    mOutputFormat->setCString(kKeyDecoderComponent, mComponentName);
-
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexOutput;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    switch (def.eDomain) {
-        case OMX_PortDomainAudio:
-        {
-            OMX_AUDIO_PORTDEFINITIONTYPE *audio_def = &def.format.audio;
-
-            CHECK_EQ(audio_def->eEncoding, OMX_AUDIO_CodingPCM);
-
-            OMX_AUDIO_PARAM_PCMMODETYPE params;
-            params.nSize = sizeof(params);
-            params.nVersion.s.nVersionMajor = 1;
-            params.nVersion.s.nVersionMinor = 1;
-            params.nPortIndex = kPortIndexOutput;
-
-            err = mOMX->get_parameter(
-                    mNode, OMX_IndexParamAudioPcm, &params, sizeof(params));
-            CHECK_EQ(err, OK);
-
-            CHECK_EQ(params.eNumData, OMX_NumericalDataSigned);
-            CHECK_EQ(params.nBitPerSample, 16);
-            CHECK_EQ(params.ePCMMode, OMX_AUDIO_PCMModeLinear);
-
-            int32_t numChannels, sampleRate;
-            meta->findInt32(kKeyChannelCount, &numChannels);
-            meta->findInt32(kKeySampleRate, &sampleRate);
-
-            mOutputFormat->setCString(kKeyMIMEType, "audio/raw");
-            mOutputFormat->setInt32(kKeyChannelCount, numChannels);
-            mOutputFormat->setInt32(kKeySampleRate, sampleRate);
-            break;
-        }
-
-        case OMX_PortDomainVideo:
-        {
-            OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
-
-            if (video_def->eCompressionFormat == OMX_VIDEO_CodingUnused) {
-                mOutputFormat->setCString(kKeyMIMEType, "video/raw");
-            } else if (video_def->eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
-                mOutputFormat->setCString(kKeyMIMEType, "video/mp4v-es");
-            } else if (video_def->eCompressionFormat == OMX_VIDEO_CodingH263) {
-                mOutputFormat->setCString(kKeyMIMEType, "video/3gpp");
-            } else if (video_def->eCompressionFormat == OMX_VIDEO_CodingAVC) {
-                mOutputFormat->setCString(kKeyMIMEType, "video/avc");
-            } else {
-                CHECK(!"Unknown compression format.");
-            }
-
-            if (!strcmp(mComponentName, "OMX.PV.avcdec")) {
-                // This component appears to be lying to me.
-                mOutputFormat->setInt32(
-                        kKeyWidth, (video_def->nFrameWidth + 15) & -16);
-                mOutputFormat->setInt32(
-                        kKeyHeight, (video_def->nFrameHeight + 15) & -16);
-            } else {
-                mOutputFormat->setInt32(kKeyWidth, video_def->nFrameWidth);
-                mOutputFormat->setInt32(kKeyHeight, video_def->nFrameHeight);
-            }
-
-            mOutputFormat->setInt32(kKeyColorFormat, video_def->eColorFormat);
-            break;
-        }
-
-        default:
-        {
-            CHECK(!"should not be here, neither audio nor video.");
-            break;
-        }
-    }
-}
-
-void OMXDecoder::onStart() {
-    if (!(mQuirks & kRequiresLoadedToIdleAfterAllocation)) {
-        status_t err =
-            mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateIdle);
-        CHECK_EQ(err, NO_ERROR);
-    }
-
-    allocateBuffers(kPortIndexInput);
-    allocateBuffers(kPortIndexOutput);
-
-    if (mQuirks & kRequiresLoadedToIdleAfterAllocation) {
-        // XXX this should happen before AllocateBuffers, but qcom's
-        // h264 vdec disagrees.
-        status_t err =
-            mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateIdle);
-        CHECK_EQ(err, NO_ERROR);
-    }
-}
-
-void OMXDecoder::allocateBuffers(OMX_U32 port_index) {
-    CHECK(mBuffers[port_index].empty());
-
-    OMX_U32 num_buffers;
-    OMX_U32 buffer_size;
-
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nVersion.s.nRevision = 0;
-    def.nVersion.s.nStep = 0;
-    def.nPortIndex = port_index;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    num_buffers = def.nBufferCountActual;
-    buffer_size = def.nBufferSize;
-
-    LOGV("[%s] port %ld: allocating %ld buffers of size %ld each\n",
-           mComponentName, port_index, num_buffers, buffer_size);
-
-    for (OMX_U32 i = 0; i < num_buffers; ++i) {
-        sp<IMemory> mem = mDealer->allocate(buffer_size);
-        if (mem.get() == NULL) {
-            LOGE("[%s] allocating IMemory of size %ld FAILED.",
-                 mComponentName, buffer_size);
-        }
-        CHECK(mem.get() != NULL);
-
-        IOMX::buffer_id buffer;
-        status_t err;
-
-        if (port_index == kPortIndexInput
-                && (mQuirks & kRequiresAllocateBufferOnInputPorts)) {
-            // qcom's H.263 encoder appears to want to allocate its own input
-            // buffers.
-            err = mOMX->allocate_buffer_with_backup(mNode, port_index, mem, &buffer);
-            if (err != OK) {
-                LOGE("[%s] allocate_buffer_with_backup failed with error %d",
-                     mComponentName, err);
-            }
-        } else if (port_index == kPortIndexOutput
-                && (mQuirks & kRequiresAllocateBufferOnOutputPorts)) {
-#if 1
-            err = mOMX->allocate_buffer_with_backup(mNode, port_index, mem, &buffer);
-#else
-            // XXX This is fine as long as we are either running the player
-            // inside the media server process or we are using the
-            // QComHardwareRenderer to output the frames.
-            err = mOMX->allocate_buffer(mNode, port_index, buffer_size, &buffer);
-#endif
-            if (err != OK) {
-                LOGE("[%s] allocate_buffer_with_backup failed with error %d",
-                     mComponentName, err);
-            }
-        } else {
-            err = mOMX->use_buffer(mNode, port_index, mem, &buffer);
-            if (err != OK) {
-                LOGE("[%s] use_buffer failed with error %d",
-                     mComponentName, err);
-            }
-        }
-        CHECK_EQ(err, OK);
-
-        LOGV("allocated %s buffer %p.",
-             port_index == kPortIndexInput ? "INPUT" : "OUTPUT",
-             buffer);
-
-        mBuffers.editItemAt(port_index).push_back(buffer);
-        mBufferMap.add(buffer, mem);
-
-        if (port_index == kPortIndexOutput) {
-            OMXMediaBuffer *media_buffer = new OMXMediaBuffer(buffer, mem);
-            media_buffer->setObserver(this);
-
-            mMediaBufferMap.add(buffer, media_buffer);
-        }
-    }
-
-    LOGV("allocate %s buffers done.",
-         port_index == kPortIndexInput ? "INPUT" : "OUTPUT");
-}
-
-void OMXDecoder::onEvent(
-        OMX_EVENTTYPE event, OMX_U32 data1, OMX_U32 data2) {
-    LOGV("[%s] onEvent event=%d, data1=%ld, data2=%ld",
-         mComponentName, event, data1, data2);
-
-    switch (event) {
-        case OMX_EventCmdComplete: {
-            onEventCmdComplete(
-                    static_cast<OMX_COMMANDTYPE>(data1), data2);
-
-            break;
-        }
-
-        case OMX_EventPortSettingsChanged: {
-            onEventPortSettingsChanged(data1);
-            break;
-        }
-
-        case OMX_EventBufferFlag: {
-            // initiateShutdown();
-            break;
-        }
-
-        default:
-            break;
-    }
-}
-
-void OMXDecoder::onEventCmdComplete(OMX_COMMANDTYPE type, OMX_U32 data) {
-    switch (type) {
-        case OMX_CommandStateSet: {
-            OMX_STATETYPE state = static_cast<OMX_STATETYPE>(data);
-            onStateChanged(state);
-            break;
-        }
-
-        case OMX_CommandPortDisable: {
-            OMX_U32 port_index = data;
-            CHECK_EQ(getPortStatus(port_index), kPortStatusDisabled);
-
-            status_t err =
-                mOMX->send_command(mNode, OMX_CommandPortEnable, port_index);
-
-            allocateBuffers(port_index);
-
-            break;
-        }
-
-        case OMX_CommandPortEnable: {
-            OMX_U32 port_index = data;
-            CHECK(getPortStatus(port_index) ==kPortStatusDisabled);
-            setPortStatus(port_index, kPortStatusActive);
-
-            CHECK_EQ(port_index, kPortIndexOutput);
-
-            BufferList *obuffers = &mBuffers.editItemAt(kPortIndexOutput);
-            while (!obuffers->empty()) {
-                IOMX::buffer_id buffer = *obuffers->begin();
-                obuffers->erase(obuffers->begin());
-
-                mOMX->fill_buffer(mNode, buffer);
-            }
-
-            break;
-        }
-
-        case OMX_CommandFlush: {
-            OMX_U32 port_index = data;
-            LOGV("Port %ld flush complete.", port_index);
-
-            PortStatus status = getPortStatus(port_index);
-
-            CHECK(status == kPortStatusFlushing
-                    || status == kPortStatusFlushingToDisabled
-                    || status == kPortStatusFlushingToShutdown);
-
-            switch (status) {
-                case kPortStatusFlushing:
-                {
-                    // This happens when we're flushing before a seek.
-                    setPortStatus(port_index, kPortStatusActive);
-                    BufferList *buffers = &mBuffers.editItemAt(port_index);
-                    while (!buffers->empty()) {
-                        IOMX::buffer_id buffer = *buffers->begin();
-                        buffers->erase(buffers->begin());
-
-                        if (port_index == kPortIndexInput) {
-                            postEmptyBufferDone(buffer);
-                        } else {
-                            postInitialFillBuffer(buffer);
-                        }
-                    }
-                    break;
-                }
-
-                case kPortStatusFlushingToDisabled:
-                {
-                    // Port settings have changed and the (buggy) OMX component
-                    // does not properly return buffers on disabling, we need to
-                    // do a flush first and _then_ disable the port in question.
-
-                    setPortStatus(port_index, kPortStatusDisabled);
-                    status_t err = mOMX->send_command(
-                            mNode, OMX_CommandPortDisable, port_index);
-                    CHECK_EQ(err, OK);
-
-                    freePortBuffers(port_index);
-                    break;
-                }
-
-                default:
-                {
-                    CHECK_EQ(status, kPortStatusFlushingToShutdown);
-
-                    setPortStatus(port_index, kPortStatusShutdown);
-                    if (getPortStatus(kPortIndexInput) == kPortStatusShutdown
-                        && getPortStatus(kPortIndexOutput) == kPortStatusShutdown) {
-                        status_t err = mOMX->send_command(
-                                mNode, OMX_CommandStateSet, OMX_StateIdle);
-                        CHECK_EQ(err, OK);
-                    }
-                    break;
-                }
-            }
-            break;
-        }
-
-        default:
-            break;
-    }
-}
-
-void OMXDecoder::onEventPortSettingsChanged(OMX_U32 port_index) {
-    CHECK_EQ(getPortStatus(port_index), kPortStatusActive);
-
-    status_t err;
-
-    if (mQuirks & kDoesntReturnBuffersOnDisable) {
-        // Decoder does not properly return our buffers when disabled...
-        // Need to flush port instead and _then_ disable.
-
-        setPortStatus(port_index, kPortStatusFlushingToDisabled);
-
-        err = mOMX->send_command(mNode, OMX_CommandFlush, port_index);
-    } else {
-        setPortStatus(port_index, kPortStatusDisabled);
-
-        err = mOMX->send_command(mNode, OMX_CommandPortDisable, port_index);
-    }
-
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::onStateChanged(OMX_STATETYPE to) {
-    if (mState == OMX_StateLoaded) {
-        CHECK_EQ(to, OMX_StateIdle);
-
-        mState = to;
-
-        status_t err =
-            mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateExecuting);
-        CHECK_EQ(err, NO_ERROR);
-    } else if (mState == OMX_StateIdle) {
-        if (to == OMX_StateExecuting) {
-            mState = to;
-
-            BufferList *ibuffers = &mBuffers.editItemAt(kPortIndexInput);
-            while (!ibuffers->empty()) {
-                IOMX::buffer_id buffer = *ibuffers->begin();
-                ibuffers->erase(ibuffers->begin());
-
-                postEmptyBufferDone(buffer);
-            }
-
-            BufferList *obuffers = &mBuffers.editItemAt(kPortIndexOutput);
-            while (!obuffers->empty()) {
-                IOMX::buffer_id buffer = *obuffers->begin();
-                obuffers->erase(obuffers->begin());
-
-                postInitialFillBuffer(buffer);
-            }
-        } else {
-            CHECK_EQ(to, OMX_StateLoaded);
-
-            mState = to;
-
-            setPortStatus(kPortIndexInput, kPortStatusActive);
-            setPortStatus(kPortIndexOutput, kPortStatusActive);
-        }
-    } else if (mState == OMX_StateExecuting) {
-        CHECK_EQ(to, OMX_StateIdle);
-
-        mState = to;
-
-        LOGV("Executing->Idle complete, initiating Idle->Loaded");
-        status_t err =
-            mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateLoaded);
-        CHECK_EQ(err, NO_ERROR);
-
-        freePortBuffers(kPortIndexInput);
-        freePortBuffers(kPortIndexOutput);
-    }
-}
-
-void OMXDecoder::initiateShutdown() {
-    Mutex::Autolock autoLock(mLock);
-
-    if (mShutdownInitiated) {
-        return;
-    }
-
-    if (mState == OMX_StateLoaded) {
-        return;
-    }
-
-    CHECK_EQ(mState, OMX_StateExecuting);
-
-    mShutdownInitiated = true;
-
-    status_t err;
-    if (mQuirks & kDoesntFlushOnExecutingToIdle) {
-        if (mQuirks & kDoesntProperlyFlushAllPortsAtOnce) {
-            err = mOMX->send_command(mNode, OMX_CommandFlush, kPortIndexInput);
-            CHECK_EQ(err, OK);
-
-            err = mOMX->send_command(mNode, OMX_CommandFlush, kPortIndexOutput);
-        } else {
-            err = mOMX->send_command(mNode, OMX_CommandFlush, OMX_ALL);
-        }
-
-        setPortStatus(kPortIndexInput, kPortStatusFlushingToShutdown);
-        setPortStatus(kPortIndexOutput, kPortStatusFlushingToShutdown);
-    } else {
-        err = mOMX->send_command(
-                mNode, OMX_CommandStateSet, OMX_StateIdle);
-
-        setPortStatus(kPortIndexInput, kPortStatusShutdown);
-        setPortStatus(kPortIndexOutput, kPortStatusShutdown);
-    }
-    CHECK_EQ(err, OK);
-}
-
-void OMXDecoder::setPortStatus(OMX_U32 port_index, PortStatus status) {
-    int shift = 3 * port_index;
-
-    mPortStatusMask &= ~(7 << shift);
-    mPortStatusMask |= status << shift;
-}
-
-OMXDecoder::PortStatus OMXDecoder::getPortStatus(
-        OMX_U32 port_index) const {
-    int shift = 3 * port_index;
-
-    return static_cast<PortStatus>((mPortStatusMask >> shift) & 7);
-}
-
-void OMXDecoder::onEmptyBufferDone(IOMX::buffer_id buffer) {
-    LOGV("[%s] onEmptyBufferDone (%p)", mComponentName, buffer);
-
-    status_t err;
-    switch (getPortStatus(kPortIndexInput)) {
-        case kPortStatusDisabled:
-            freeInputBuffer(buffer);
-            err = NO_ERROR;
-            break;
-
-        case kPortStatusShutdown:
-            LOGV("We're shutting down, enqueue INPUT buffer %p.", buffer);
-            mBuffers.editItemAt(kPortIndexInput).push_back(buffer);
-            err = NO_ERROR;
-            break;
-
-        case kPortStatusFlushing:
-        case kPortStatusFlushingToDisabled:
-        case kPortStatusFlushingToShutdown:
-            LOGV("We're currently flushing, enqueue INPUT buffer %p.", buffer);
-            mBuffers.editItemAt(kPortIndexInput).push_back(buffer);
-            err = NO_ERROR;
-            break;
-
-        default:
-            onRealEmptyBufferDone(buffer);
-            err = NO_ERROR;
-            break;
-    }
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::onFillBufferDone(const omx_message &msg) {
-    IOMX::buffer_id buffer = msg.u.extended_buffer_data.buffer;
-
-    LOGV("[%s] on%sFillBufferDone (%p, size:%ld)", mComponentName,
-         msg.type == omx_message::INITIAL_FILL_BUFFER ? "Initial" : "",
-         buffer, msg.u.extended_buffer_data.range_length);
-
-    status_t err;
-    switch (getPortStatus(kPortIndexOutput)) {
-        case kPortStatusDisabled:
-            freeOutputBuffer(buffer);
-            err = NO_ERROR;
-            break;
-        case kPortStatusShutdown:
-            LOGV("We're shutting down, enqueue OUTPUT buffer %p.", buffer);
-            mBuffers.editItemAt(kPortIndexOutput).push_back(buffer);
-            err = NO_ERROR;
-            break;
-
-        case kPortStatusFlushing:
-        case kPortStatusFlushingToDisabled:
-        case kPortStatusFlushingToShutdown:
-            LOGV("We're currently flushing, enqueue OUTPUT buffer %p.", buffer);
-            mBuffers.editItemAt(kPortIndexOutput).push_back(buffer);
-            err = NO_ERROR;
-            break;
-
-        default:
-        {
-            if (msg.type == omx_message::INITIAL_FILL_BUFFER) {
-                mOMX->fill_buffer(mNode, buffer);
-            } else {
-                LOGV("[%s] Filled OUTPUT buffer %p, flags=0x%08lx.",
-                     mComponentName, buffer, msg.u.extended_buffer_data.flags);
-
-                onRealFillBufferDone(msg);
-            }
-            err = NO_ERROR;
-            break;
-        }
-    }
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::onRealEmptyBufferDone(IOMX::buffer_id buffer) {
-    if (mReachedEndOfInput) {
-        // We already sent the EOS notification.
-
-        mBuffers.editItemAt(kPortIndexInput).push_back(buffer);
-        return;
-    }
-
-    const sp<IMemory> mem = mBufferMap.valueFor(buffer);
-    CHECK(mem.get() != NULL);
-
-    static const uint8_t kNALStartCode[4] = { 0x00, 0x00, 0x00, 0x01 };
-
-    if (mCodecSpecificDataIterator != mCodecSpecificData.end()) {
-        List<CodecSpecificData>::iterator it = mCodecSpecificDataIterator;
-
-        size_t range_length = 0;
-
-        if (mIsAVC && !(mQuirks & kWantsNALFragments)) {
-            CHECK((*mCodecSpecificDataIterator).size + 4 <= mem->size());
-
-            memcpy(mem->pointer(), kNALStartCode, 4);
-
-            memcpy((uint8_t *)mem->pointer() + 4, (*it).data, (*it).size);
-            range_length = (*it).size + 4;
-        } else {
-            CHECK((*mCodecSpecificDataIterator).size <= mem->size());
-
-            memcpy((uint8_t *)mem->pointer(), (*it).data, (*it).size);
-            range_length = (*it).size;
-        }
-
-        ++mCodecSpecificDataIterator;
-
-        mOMX->empty_buffer(
-                mNode, buffer, 0, range_length, 
-                OMX_BUFFERFLAG_ENDOFFRAME | OMX_BUFFERFLAG_CODECCONFIG,
-                0);
-
-        return;
-    }
-
-    LOGV("[%s] waiting for input data", mComponentName);
-
-    MediaBuffer *input_buffer;
-    for (;;) {
-        status_t err;
-
-        if (mSeeking) {
-            MediaSource::ReadOptions options;
-            options.setSeekTo(mSeekTimeUs);
-
-            mSeeking = false;
-
-            err = mSource->read(&input_buffer, &options);
-        } else {
-            err = mSource->read(&input_buffer);
-        }
-        CHECK((err == OK && input_buffer != NULL)
-               || (err != OK && input_buffer == NULL));
-
-        if (err == ERROR_END_OF_STREAM) {
-            LOGE("[%s] Reached end of stream.", mComponentName);
-            mReachedEndOfInput = true;
-        } else {
-            LOGV("[%s] got input data", mComponentName);
-        }
-
-        if (err != OK) {
-            mOMX->empty_buffer(
-                    mNode, buffer, 0, 0, OMX_BUFFERFLAG_EOS, 0);
-
-            return;
-        }
-
-        if (mSeeking) {
-            input_buffer->release();
-            input_buffer = NULL;
-
-            continue;
-        }
-
-        break;
-    }
-
-    const uint8_t *src_data =
-        (const uint8_t *)input_buffer->data() + input_buffer->range_offset();
-
-    size_t src_length = input_buffer->range_length();
-    if (src_length == 195840) {
-        // When feeding the output of the AVC decoder into the H263 encoder,
-        // buffer sizes mismatch if width % 16 != 0 || height % 16 != 0.
-        src_length = 194400;  // XXX HACK
-    } else if (src_length == 115200) {
-        src_length = 114240;  // XXX HACK
-    }
-
-    if (src_length > mem->size()) {
-        LOGE("src_length=%d > mem->size() = %d\n",
-             src_length, mem->size());
-    }
-
-    CHECK(src_length <= mem->size());
-    memcpy(mem->pointer(), src_data, src_length);
-
-    OMX_U32 flags = 0;
-    if (!mIsMP3) {
-        // Only mp3 audio data may be streamed, all other data is assumed
-        // to be fed into the decoder at frame boundaries.
-        flags |= OMX_BUFFERFLAG_ENDOFFRAME;
-    }
-
-    int32_t units, scale;
-    bool success =
-        input_buffer->meta_data()->findInt32(kKeyTimeUnits, &units);
-
-    success = success &&
-        input_buffer->meta_data()->findInt32(kKeyTimeScale, &scale);
-
-    OMX_TICKS timestamp = 0;
-
-    if (success) {
-        if (mQuirks & kMeasuresTimeInMilliseconds) {
-            timestamp = ((OMX_S64)units * 1000) / scale;
-        } else {
-            timestamp = ((OMX_S64)units * 1000000) / scale;
-        }
-    }
-
-    input_buffer->release();
-    input_buffer = NULL;
-
-    LOGV("[%s] Calling EmptyBuffer on buffer %p size:%d flags:0x%08lx",
-         mComponentName, buffer, src_length, flags);
-
-    mOMX->empty_buffer(
-            mNode, buffer, 0, src_length, flags, timestamp);
-}
-
-void OMXDecoder::onRealFillBufferDone(const omx_message &msg) {
-    OMXMediaBuffer *media_buffer =
-        mMediaBufferMap.valueFor(msg.u.extended_buffer_data.buffer);
-
-    media_buffer->set_range(
-            msg.u.extended_buffer_data.range_offset,
-            msg.u.extended_buffer_data.range_length);
-
-    media_buffer->add_ref();
-
-    media_buffer->meta_data()->clear();
-
-    if (mQuirks & kMeasuresTimeInMilliseconds) {
-        media_buffer->meta_data()->setInt32(
-                kKeyTimeUnits,
-                msg.u.extended_buffer_data.timestamp);
-    } else {
-        media_buffer->meta_data()->setInt32(
-                kKeyTimeUnits,
-                (msg.u.extended_buffer_data.timestamp + 500) / 1000);
-    }
-
-    media_buffer->meta_data()->setInt32(kKeyTimeScale, 1000);
-
-    if (msg.u.extended_buffer_data.flags & OMX_BUFFERFLAG_SYNCFRAME) {
-        media_buffer->meta_data()->setInt32(kKeyIsSyncFrame, true);
-    }
-
-    media_buffer->meta_data()->setPointer(
-            kKeyPlatformPrivate,
-            msg.u.extended_buffer_data.platform_private);
-
-    media_buffer->meta_data()->setPointer(
-            kKeyBufferID,
-            msg.u.extended_buffer_data.buffer);
-
-    if (msg.u.extended_buffer_data.flags & OMX_BUFFERFLAG_EOS) {
-        mErrorCondition = ERROR_END_OF_STREAM;
-    }
-
-    mOutputBuffers.push_back(media_buffer);
-    mOutputBufferAvailable.signal();
-}
-
-void OMXDecoder::signalBufferReturned(MediaBuffer *_buffer) {
-    Mutex::Autolock autoLock(mLock);
-
-    OMXMediaBuffer *media_buffer = static_cast<OMXMediaBuffer *>(_buffer);
-
-    IOMX::buffer_id buffer = media_buffer->buffer_id();
-
-    PortStatus outputStatus = getPortStatus(kPortIndexOutput);
-    if (outputStatus == kPortStatusShutdown
-            || outputStatus == kPortStatusFlushing
-            || outputStatus == kPortStatusFlushingToDisabled
-            || outputStatus == kPortStatusFlushingToShutdown) {
-        mBuffers.editItemAt(kPortIndexOutput).push_back(buffer);
-    } else {
-        LOGV("[%s] Calling FillBuffer on buffer %p.", mComponentName, buffer);
-
-        mOMX->fill_buffer(mNode, buffer);
-    }
-}
-
-void OMXDecoder::freeInputBuffer(IOMX::buffer_id buffer) {
-    LOGV("freeInputBuffer %p", buffer);
-
-    status_t err = mOMX->free_buffer(mNode, kPortIndexInput, buffer);
-    CHECK_EQ(err, NO_ERROR);
-    mBufferMap.removeItem(buffer);
-
-    LOGV("freeInputBuffer %p done", buffer);
-}
-
-void OMXDecoder::freeOutputBuffer(IOMX::buffer_id buffer) {
-    LOGV("freeOutputBuffer %p", buffer);
-
-    status_t err = mOMX->free_buffer(mNode, kPortIndexOutput, buffer);
-    CHECK_EQ(err, NO_ERROR);
-    mBufferMap.removeItem(buffer);
-
-    ssize_t index = mMediaBufferMap.indexOfKey(buffer);
-    CHECK(index >= 0);
-    MediaBuffer *mbuffer = mMediaBufferMap.editValueAt(index);
-    mMediaBufferMap.removeItemsAt(index);
-    mbuffer->setObserver(NULL);
-    mbuffer->release();
-    mbuffer = NULL;
-
-    LOGV("freeOutputBuffer %p done", buffer);
-}
-
-void OMXDecoder::dumpPortDefinition(OMX_U32 port_index) {
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = port_index;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    LOGI("DumpPortDefinition on port %ld", port_index);
-    LOGI("nBufferCountActual = %ld, nBufferCountMin = %ld, nBufferSize = %ld",
-         def.nBufferCountActual, def.nBufferCountMin, def.nBufferSize);
-    switch (def.eDomain) {
-        case OMX_PortDomainAudio:
-        {
-            LOGI("eDomain = AUDIO");
-
-            if (port_index == kPortIndexOutput) {
-                OMX_AUDIO_PORTDEFINITIONTYPE *audio_def = &def.format.audio;
-                CHECK_EQ(audio_def->eEncoding, OMX_AUDIO_CodingPCM);
-
-                OMX_AUDIO_PARAM_PCMMODETYPE params;
-                params.nSize = sizeof(params);
-                params.nVersion.s.nVersionMajor = 1;
-                params.nVersion.s.nVersionMinor = 1;
-                params.nPortIndex = port_index;
-
-                err = mOMX->get_parameter(
-                        mNode, OMX_IndexParamAudioPcm, &params, sizeof(params));
-                CHECK_EQ(err, OK);
-
-                CHECK(params.nChannels == 1 || params.bInterleaved);
-                CHECK_EQ(params.eNumData, OMX_NumericalDataSigned);
-                CHECK_EQ(params.nBitPerSample, 16);
-                CHECK_EQ(params.ePCMMode, OMX_AUDIO_PCMModeLinear);
-
-                LOGI("nChannels = %ld, nSamplingRate = %ld",
-                     params.nChannels, params.nSamplingRate);
-            }
-
-            break;
-        }
-
-        case OMX_PortDomainVideo:
-        {
-            LOGI("eDomain = VIDEO");
-
-            OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
-            LOGI("nFrameWidth = %ld, nFrameHeight = %ld, nStride = %ld, "
-                 "nSliceHeight = %ld",
-                 video_def->nFrameWidth, video_def->nFrameHeight,
-                 video_def->nStride, video_def->nSliceHeight);
-            LOGI("nBitrate = %ld, xFrameRate = %.2f",
-                 video_def->nBitrate, video_def->xFramerate / 65536.0f);
-            LOGI("eCompressionFormat = %d, eColorFormat = %d",
-                 video_def->eCompressionFormat, video_def->eColorFormat);
-
-            break;
-        }
-
-        default:
-            LOGI("eDomain = UNKNOWN");
-            break;
-    }
-}
-
-void OMXDecoder::postStart() {
-    omx_message msg;
-    msg.type = omx_message::START;
-    postMessage(msg);
-}
-
-void OMXDecoder::postEmptyBufferDone(IOMX::buffer_id buffer) {
-    omx_message msg;
-    msg.type = omx_message::EMPTY_BUFFER_DONE;
-    msg.node = mNode;
-    msg.u.buffer_data.buffer = buffer;
-    postMessage(msg);
-}
-
-void OMXDecoder::postInitialFillBuffer(IOMX::buffer_id buffer) {
-    omx_message msg;
-    msg.type = omx_message::INITIAL_FILL_BUFFER;
-    msg.node = mNode;
-    msg.u.buffer_data.buffer = buffer;
-    postMessage(msg);
-}
-
-void OMXDecoder::freePortBuffers(OMX_U32 port_index) {
-    BufferList *buffers = &mBuffers.editItemAt(port_index);
-    while (!buffers->empty()) {
-        IOMX::buffer_id buffer = *buffers->begin();
-        buffers->erase(buffers->begin());
-
-        if (port_index == kPortIndexInput) {
-            freeInputBuffer(buffer);
-        } else {
-            freeOutputBuffer(buffer);
-        }
-    }
-}
-
-}  // namespace android
diff --git a/media/libstagefright/SampleTable.cpp b/media/libstagefright/SampleTable.cpp
index 5e32559..8efa7c7 100644
--- a/media/libstagefright/SampleTable.cpp
+++ b/media/libstagefright/SampleTable.cpp
@@ -272,7 +272,7 @@
 
         *offset = ntohl(offset32);
     } else {
-        CHECK_EQ(mChunkOffsetOffset, kChunkOffsetType64);
+        CHECK_EQ(mChunkOffsetType, kChunkOffsetType64);
 
         uint64_t offset64;
         if (mDataSource->read_at(
diff --git a/media/tests/MediaFrameworkTest/res/drawable-hdpi/icon.png b/media/tests/MediaFrameworkTest/res/drawable-hdpi/icon.png
new file mode 100644
index 0000000..a02138e
--- /dev/null
+++ b/media/tests/MediaFrameworkTest/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/media/tests/MediaFrameworkTest/res/drawable/icon.png b/media/tests/MediaFrameworkTest/res/drawable-mdpi/icon.png
similarity index 100%
rename from media/tests/MediaFrameworkTest/res/drawable/icon.png
rename to media/tests/MediaFrameworkTest/res/drawable-mdpi/icon.png
Binary files differ
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java
index 5a72fcd..2e11698 100755
--- a/packages/TtsService/src/android/tts/TtsService.java
+++ b/packages/TtsService/src/android/tts/TtsService.java
@@ -148,7 +148,7 @@
     @Override
     public void onCreate() {
         super.onCreate();
-        Log.i("TtsService", "TtsService.onCreate()");
+        Log.v("TtsService", "TtsService.onCreate()");
 
         mResolver = getContentResolver();
 
@@ -279,7 +279,6 @@
 
 
     private int isLanguageAvailable(String lang, String country, String variant) {
-        //Log.v("TtsService", "TtsService.isLanguageAvailable(" + lang + ", " + country + ", " +variant+")");
         int res = TextToSpeech.LANG_NOT_SUPPORTED;
         try {
             res = sNativeSynth.isLanguageAvailable(lang, country, variant);
@@ -462,6 +461,9 @@
                     result = TextToSpeech.SUCCESS;
                 }
                 Log.i("TtsService", "Stopped");
+            } else {
+                Log.e("TtsService", "TTS stop(): queue locked longer than expected");
+                result = TextToSpeech.ERROR;
             }
         } catch (InterruptedException e) {
           Log.e("TtsService", "TTS stop: tryLock interrupted");
@@ -575,6 +577,9 @@
                     result = TextToSpeech.SUCCESS;
                 }
                 Log.i("TtsService", "Stopped all");
+            } else {
+                Log.e("TtsService", "TTS stopAll(): queue locked longer than expected");
+                result = TextToSpeech.ERROR;
             }
         } catch (InterruptedException e) {
           Log.e("TtsService", "TTS stopAll: tryLock interrupted");
@@ -725,7 +730,7 @@
             }
         }
         Thread synth = (new Thread(new SynthThread()));
-        //synth.setPriority(Thread.MIN_PRIORITY);
+        synth.setPriority(Thread.MAX_PRIORITY);
         synth.start();
     }
 
@@ -799,7 +804,7 @@
             }
         }
         Thread synth = (new Thread(new SynthThread()));
-        //synth.setPriority(Thread.MIN_PRIORITY);
+        synth.setPriority(Thread.MAX_PRIORITY);
         synth.start();
     }
 
@@ -827,7 +832,7 @@
         if (cb == null){
             return;
         }
-        Log.i("TtsService", "TTS callback: dispatch started");
+        Log.v("TtsService", "TTS callback: dispatch started");
         // Broadcast to all clients the new value.
         final int N = mCallbacks.beginBroadcast();
         try {
@@ -837,7 +842,7 @@
             // the dead object for us.
         }
         mCallbacks.finishBroadcast();
-        Log.i("TtsService", "TTS callback: dispatch completed to " + N);
+        Log.v("TtsService", "TTS callback: dispatch completed to " + N);
     }
 
     private SpeechItem splitCurrentTextIfNeeded(SpeechItem currentSpeechItem){
@@ -888,7 +893,7 @@
             SoundResource sr = getSoundResource(mCurrentSpeechItem);
             // Synth speech as needed - synthesizer should call
             // processSpeechQueue to continue running the queue
-            Log.i("TtsService", "TTS processing: " + mCurrentSpeechItem.mText);
+            Log.v("TtsService", "TTS processing: " + mCurrentSpeechItem.mText);
             if (sr == null) {
                 if (mCurrentSpeechItem.mType == SpeechItem.TEXT) {
                     mCurrentSpeechItem = splitCurrentTextIfNeeded(mCurrentSpeechItem);
diff --git a/packages/VpnServices/src/com/android/server/vpn/VpnService.java b/packages/VpnServices/src/com/android/server/vpn/VpnService.java
index e3ac996..53167f6 100644
--- a/packages/VpnServices/src/com/android/server/vpn/VpnService.java
+++ b/packages/VpnServices/src/com/android/server/vpn/VpnService.java
@@ -56,10 +56,6 @@
     private static final String REMOTE_IP = "net.ipremote";
     private static final String DNS_DOMAIN_SUFFICES = "net.dns.search";
 
-    private static final int CHALLENGE_ERROR_CODE = 5;
-    private static final int REMOTE_HUNG_UP_ERROR_CODE = 7;
-    private static final int AUTH_ERROR_CODE = 51;
-
     private final String TAG = VpnService.class.getSimpleName();
 
     // FIXME: profile is only needed in connecting phase, so we can just save
@@ -202,7 +198,7 @@
 
     private void waitUntilConnectedOrTimedout() throws IOException {
         sleep(2000); // 2 seconds
-        for (int i = 0; i < 60; i++) {
+        for (int i = 0; i < 80; i++) {
             if (mState != VpnState.CONNECTING) {
                 break;
             } else if (VPN_IS_UP.equals(
@@ -464,22 +460,8 @@
 
         synchronized int getSocketError() {
             for (DaemonProxy s : mDaemonList) {
-                switch (getResultFromSocket(s)) {
-                    case 0:
-                        continue;
-
-                    case AUTH_ERROR_CODE:
-                        return VpnManager.VPN_ERROR_AUTH;
-
-                    case CHALLENGE_ERROR_CODE:
-                        return VpnManager.VPN_ERROR_CHALLENGE;
-
-                    case REMOTE_HUNG_UP_ERROR_CODE:
-                        return VpnManager.VPN_ERROR_REMOTE_HUNG_UP;
-
-                    default:
-                        return VpnManager.VPN_ERROR_CONNECTION_FAILED;
-                }
+                int errCode = getResultFromSocket(s);
+                if (errCode != 0) return errCode;
             }
             return 0;
         }
diff --git a/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java b/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
index 4892a7b..e5be847 100644
--- a/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
+++ b/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
@@ -91,7 +91,8 @@
 
     void removeStates() {
         try {
-            new File(STATES_FILE_PATH).delete();
+            File f = new File(STATES_FILE_PATH);
+            if (f.exists()) f.delete();
         } catch (Throwable e) {
             if (DBG) Log.d("VpnServiceBinder", "     remove states: " + e);
         }
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index 2f4d716..8ec6ec3 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -35,6 +35,7 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ComponentInfo;
+import android.content.pm.FeatureInfo;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageInstallObserver;
@@ -88,6 +89,7 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Enumeration;
@@ -221,6 +223,14 @@
     // etc/permissions.xml file.
     final HashMap<String, String> mSharedLibraries = new HashMap<String, String>();
     
+    // Temporary for building the final shared libraries for an .apk.
+    String[] mTmpSharedLibraries = null;
+    
+    // These are the features this devices supports that were read from the
+    // etc/permissions.xml file.
+    final HashMap<String, FeatureInfo> mAvailableFeatures =
+            new HashMap<String, FeatureInfo>();
+    
     // All available activities, for your resolving pleasure.
     final ActivityIntentResolver mActivities =
             new ActivityIntentResolver();
@@ -671,7 +681,21 @@
                                 + parser.getPositionDescription());
                     } else {
                         Log.i(TAG, "Got library " + lname + " in " + lfile);
-                        this.mSharedLibraries.put(lname, lfile);
+                        mSharedLibraries.put(lname, lfile);
+                    }
+                    XmlUtils.skipCurrentTag(parser);
+                    continue;
+                    
+                } else if ("feature".equals(name)) {
+                    String fname = parser.getAttributeValue(null, "name");
+                    if (fname == null) {
+                        Log.w(TAG, "<feature> without name at "
+                                + parser.getPositionDescription());
+                    } else {
+                        Log.i(TAG, "Got feature " + fname);
+                        FeatureInfo fi = new FeatureInfo();
+                        fi.name = fname;
+                        mAvailableFeatures.put(fname, fi);
                     }
                     XmlUtils.skipCurrentTag(parser);
                     continue;
@@ -1001,12 +1025,30 @@
         Set<String> libSet;
         synchronized (mPackages) {
             libSet = mSharedLibraries.keySet();
+            int size = libSet.size();
+            if (size > 0) {
+                String[] libs = new String[size];
+                libSet.toArray(libs);
+                return libs;
+            }
         }
-        int size = libSet.size();
-        if (size > 0) {
-            String[] libs = new String[size];
-            libSet.toArray(libs);
-            return libs;
+        return null;
+    }
+
+    public FeatureInfo[] getSystemAvailableFeatures() {
+        Collection<FeatureInfo> featSet;
+        synchronized (mPackages) {
+            featSet = mAvailableFeatures.values();
+            int size = featSet.size();
+            if (size > 0) {
+                FeatureInfo[] features = new FeatureInfo[size+1];
+                featSet.toArray(features);
+                FeatureInfo fi = new FeatureInfo();
+                fi.reqGlEsVersion = SystemProperties.getInt("ro.opengles.version",
+                        FeatureInfo.GL_ES_VERSION_UNDEFINED);
+                features[size] = fi;
+                return features;
+            }
         }
         return null;
     }
@@ -2065,17 +2107,62 @@
         
         synchronized (mPackages) {
             // Check all shared libraries and map to their actual file path.
-            if (pkg.usesLibraryFiles != null) {
-                for (int i=0; i<pkg.usesLibraryFiles.length; i++) {
-                    String file = mSharedLibraries.get(pkg.usesLibraryFiles[i]);
+            if (pkg.usesLibraries != null || pkg.usesOptionalLibraries != null) {
+                if (mTmpSharedLibraries == null ||
+                        mTmpSharedLibraries.length < mSharedLibraries.size()) {
+                    mTmpSharedLibraries = new String[mSharedLibraries.size()];
+                }
+                int num = 0;
+                int N = pkg.usesLibraries != null ? pkg.usesLibraries.size() : 0;
+                for (int i=0; i<N; i++) {
+                    String file = mSharedLibraries.get(pkg.usesLibraries.get(i));
                     if (file == null) {
                         Log.e(TAG, "Package " + pkg.packageName
                                 + " requires unavailable shared library "
-                                + pkg.usesLibraryFiles[i] + "; ignoring!");
+                                + pkg.usesLibraries.get(i) + "; failing!");
                         mLastScanError = PackageManager.INSTALL_FAILED_MISSING_SHARED_LIBRARY;
                         return null;
                     }
-                    pkg.usesLibraryFiles[i] = file;
+                    mTmpSharedLibraries[num] = file;
+                    num++;
+                }
+                N = pkg.usesOptionalLibraries != null ? pkg.usesOptionalLibraries.size() : 0;
+                for (int i=0; i<N; i++) {
+                    String file = mSharedLibraries.get(pkg.usesOptionalLibraries.get(i));
+                    if (file == null) {
+                        Log.w(TAG, "Package " + pkg.packageName
+                                + " desires unavailable shared library "
+                                + pkg.usesOptionalLibraries.get(i) + "; ignoring!");
+                    } else {
+                        mTmpSharedLibraries[num] = file;
+                        num++;
+                    }
+                }
+                if (num > 0) {
+                    pkg.usesLibraryFiles = new String[num];
+                    System.arraycopy(mTmpSharedLibraries, 0,
+                            pkg.usesLibraryFiles, 0, num);
+                }
+                
+                if (pkg.reqFeatures != null) {
+                    N = pkg.reqFeatures.size();
+                    for (int i=0; i<N; i++) {
+                        FeatureInfo fi = pkg.reqFeatures.get(i);
+                        if ((fi.flags&FeatureInfo.FLAG_REQUIRED) == 0) {
+                            // Don't care.
+                            continue;
+                        }
+                        
+                        if (fi.name != null) {
+                            if (mAvailableFeatures.get(fi.name) == null) {
+                                Log.e(TAG, "Package " + pkg.packageName
+                                        + " requires unavailable feature "
+                                        + fi.name + "; failing!");
+                                mLastScanError = PackageManager.INSTALL_FAILED_MISSING_FEATURE;
+                                return null;
+                            }
+                        }
+                    }
                 }
             }
             
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 1384ede..4321b0d 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -1217,7 +1217,8 @@
                     + w.isReadyForDisplay() + " drawpending=" + w.mDrawPending
                     + " commitdrawpending=" + w.mCommitDrawPending);
             if ((w.mAttrs.flags&FLAG_SHOW_WALLPAPER) != 0 && w.isReadyForDisplay()
-                    && !w.mDrawPending && !w.mCommitDrawPending) {
+                    && (mWallpaperTarget == w
+                            || (!w.mDrawPending && !w.mCommitDrawPending))) {
                 if (DEBUG_WALLPAPER) Log.v(TAG,
                         "Found wallpaper activity: #" + i + "=" + w);
                 foundW = w;
@@ -6779,10 +6780,10 @@
         }
 
         // This must be called while inside a transaction.
-        void commitFinishDrawingLocked(long currentTime) {
+        boolean commitFinishDrawingLocked(long currentTime) {
             //Log.i(TAG, "commitFinishDrawingLocked: " + mSurface);
             if (!mCommitDrawPending) {
-                return;
+                return false;
             }
             mCommitDrawPending = false;
             mReadyToShow = true;
@@ -6791,6 +6792,7 @@
             if (atoken == null || atoken.allDrawn || starting) {
                 performShowLocked();
             }
+            return true;
         }
 
         // This must be called while inside a transaction.
@@ -8639,6 +8641,7 @@
                 restart = false;
 
                 boolean tokenMayBeDrawn = false;
+                boolean wallpaperMayChange = false;
 
                 mPolicy.beginAnimationLw(dw, dh);
 
@@ -8649,7 +8652,12 @@
 
                     if (w.mSurface != null) {
                         // Execute animation.
-                        w.commitFinishDrawingLocked(currentTime);
+                        if (w.commitFinishDrawingLocked(currentTime)) {
+                            if ((w.mAttrs.flags
+                                    & WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER) != 0) {
+                                wallpaperMayChange = true;
+                            }
+                        }
                         if (w.stepAnimationLocked(currentTime, dw, dh)) {
                             animating = true;
                             //w.dump("  ");
@@ -8787,6 +8795,8 @@
                         mH.removeMessages(H.APP_TRANSITION_TIMEOUT);
 
                         adjustWallpaperWindowsLocked();
+                        wallpaperMayChange = false;
+                        
                         if (DEBUG_APP_TRANSITIONS) Log.v(TAG,
                                 "New wallpaper target=" + mWallpaperTarget
                                 + ", lower target=" + mLowerWallpaperTarget
@@ -8885,6 +8895,13 @@
                         restart = true;
                     }
                 }
+                
+                if (wallpaperMayChange) {
+                    if (adjustWallpaperWindowsLocked()) {
+                        assignLayersLocked();
+                    }
+                }
+                
             } while (restart);
 
             // THIRD LOOP: Update the surfaces of all windows.
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
index cfb465e..79c4b41 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -71,7 +71,7 @@
         DORMANT
     }
 
-    //***** Event Codes
+    /***** Event Codes *****/
     protected static final int EVENT_DATA_SETUP_COMPLETE = 1;
     protected static final int EVENT_RADIO_AVAILABLE = 3;
     protected static final int EVENT_RECORDS_LOADED = 4;
@@ -100,8 +100,9 @@
     public static final int EVENT_CLEAN_UP_CONNECTION = 34;
     protected static final int EVENT_CDMA_OTA_PROVISION = 35;
     protected static final int EVENT_RESTART_RADIO = 36;
+    private static final int EVENT_ENABLE_APN_REQUEST = 37;
 
-    //***** Constants
+    /***** Constants *****/
 
     protected static final int APN_INVALID_ID = -1;
     protected static final int APN_DEFAULT_ID = 0;
@@ -111,6 +112,9 @@
     protected static final int APN_HIPRI_ID = 4;
     protected static final int APN_NUM_TYPES = 5;
 
+    protected static final int APN_DISABLED = 0;
+    protected static final int APN_ENABLED = 1;
+
     protected boolean[] dataEnabled = new boolean[APN_NUM_TYPES];
     protected int enabledCount = 0;
 
@@ -247,7 +251,7 @@
     }
 
     // abstract handler methods
-    protected abstract void onTrySetupData(String reason);
+    protected abstract boolean onTrySetupData(String reason);
     protected abstract void onRoamingOff();
     protected abstract void onRoamingOn();
     protected abstract void onRadioAvailable();
@@ -258,10 +262,47 @@
     protected abstract void onVoiceCallEnded();
     protected abstract void onCleanUpConnection(boolean tearDown, String reason);
 
-  //***** Overridden from Handler
+    @Override
     public void handleMessage (Message msg) {
         switch (msg.what) {
 
+            case EVENT_ENABLE_APN_REQUEST:
+                int apnId = msg.arg1;
+                synchronized (this) {
+                    if (DBG) {
+                        Log.d(LOG_TAG, "got EVENT_ENABLE_APN_REQUEST with apnType = " + apnId +
+                                " and enable = " + msg.arg2);
+                        Log.d(LOG_TAG, "dataEnabled[apnId] = " + dataEnabled[apnId] +
+                                ", enabledCount = " + enabledCount);
+                    }
+                    if (msg.arg2 == APN_ENABLED) {
+                        // enable
+                        if (!dataEnabled[apnId]) {
+                            dataEnabled[apnId] = true;
+                            enabledCount++;
+                            if (enabledCount == 1) {
+                                if (onTrySetupData(null) == false) {
+                                    // failed to setup data - note we can't optimize by only adj
+                                    // these after a successfull call.  dataEnabled must be set
+                                    // prior or we think data is not available.
+                                    dataEnabled[apnId] = false;
+                                    enabledCount--;
+                                }
+                            }
+                        }
+                    } else {
+                        // disable
+                        if (dataEnabled[apnId]) {
+                            dataEnabled[apnId] = false;
+                            enabledCount--;
+                            if (enabledCount == 0) {
+                                onCleanUpConnection(true, Phone.REASON_DATA_DISABLED);
+                            }
+                        }
+                    }
+                }
+                break;
+
             case EVENT_TRY_SETUP_DATA:
                 String reason = null;
                 if (msg.obj instanceof String) {
@@ -322,7 +363,7 @@
      * @return {@code false} if data connectivity has been explicitly disabled,
      * {@code true} otherwise.
      */
-    public boolean getDataEnabled() {
+    public synchronized boolean getDataEnabled() {
         return dataEnabled[APN_DEFAULT_ID];
     }
 
@@ -379,7 +420,7 @@
 
     protected abstract void setState(State s);
 
-    protected boolean isEnabled(int id) {
+    protected synchronized boolean isEnabled(int id) {
         if (id != APN_INVALID_ID) {
             return dataEnabled[id];
         }
@@ -429,7 +470,7 @@
      * {@link Phone#APN_TYPE_MMS} and {@link Phone#APN_TYPE_SUPL}.
      * @return
      */
-    public int disableApnType(String type) {
+    public synchronized int disableApnType(String type) {
         if (DBG) Log.d(LOG_TAG, "disableApnType("+type+")");
         int id = apnTypeToId(type);
         if (id == APN_INVALID_ID) {
@@ -452,27 +493,14 @@
         }
     }
 
-    protected synchronized void setEnabled(int id, boolean enable) {
+    protected void setEnabled(int id, boolean enable) {
         if (DBG) Log.d(LOG_TAG, "setEnabled(" + id + ", " + enable + ") with old state = " +
                 dataEnabled[id] + " and enabledCount = " + enabledCount);
-        if (dataEnabled[id] != enable) {
-            dataEnabled[id] = enable;
 
-            // count the total number of enabled APN's
-            // if we just enabled the first APN, start our Data connection,
-            // if we disabled the last, stop our data connection
-            if (enable) {
-                enabledCount++;
-                if (enabledCount == 1) {
-                    setPrivateDataEnabled(true);
-                }
-            } else {
-                enabledCount--;
-                if (enabledCount == 0) {
-                    setPrivateDataEnabled(false);
-                }
-            }
-        }
+        Message msg = obtainMessage(EVENT_ENABLE_APN_REQUEST);
+        msg.arg1 = id;
+        msg.arg2 = (enable ? APN_ENABLED : APN_DISABLED);
+        sendMessage(msg);
     }
 
     /**
@@ -487,21 +515,9 @@
      * @return {@code true} if the operation succeeded
      */
     public boolean setDataEnabled(boolean enable) {
-        if (DBG) Log.d(LOG_TAG, "setDataEnabled("+enable+")");
+        if (DBG) Log.d(LOG_TAG, "setDataEnabled(" + enable + ")");
         setEnabled(APN_DEFAULT_ID, enable);
         return true;
     }
 
-    private void setPrivateDataEnabled(boolean enable) {
-        if (DBG) Log.d(LOG_TAG, "setPrivateDataEnabled("+enable+")");
-        if (enable) {
-            sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA));
-        } else {
-            Message msg = obtainMessage(EVENT_CLEAN_UP_CONNECTION);
-            msg.arg1 = 1; // tearDown is true
-            msg.obj = Phone.REASON_DATA_DISABLED;
-            sendMessage(msg);
-        }
-    }
-
 }
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index 2b78097..caf5a80 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -627,8 +627,8 @@
     /**
      * @override com.android.internal.telephony.DataConnectionTracker
      */
-    protected void onTrySetupData(String reason) {
-        trySetupData(reason);
+    protected boolean onTrySetupData(String reason) {
+        return trySetupData(reason);
     }
 
     /**
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index b9688f3..a9c6fad 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -1074,8 +1074,8 @@
         cleanUpConnection(true, Phone.REASON_APN_SWITCHED);
     }
 
-    protected void onTrySetupData(String reason) {
-        trySetupData(reason);
+    protected boolean onTrySetupData(String reason) {
+        return trySetupData(reason);
     }
 
     /**
diff --git a/telephony/java/com/android/internal/telephony/gsm/MccTable.java b/telephony/java/com/android/internal/telephony/gsm/MccTable.java
index 22b1f4f..9343f44 100644
--- a/telephony/java/com/android/internal/telephony/gsm/MccTable.java
+++ b/telephony/java/com/android/internal/telephony/gsm/MccTable.java
@@ -16,8 +16,342 @@
 
 package com.android.internal.telephony.gsm;
 
-import java.util.ArrayList;
-import java.util.Collections;
+import java.util.Arrays;
+
+/**
+ * The table below is built from two resources:
+ *
+ * 1) ITU "Mobile Network Code (MNC) for the international
+ *   identification plan for mobile terminals and mobile users"
+ *   which is available as an annex to the ITU operational bulletin
+ *   available here: http://www.itu.int/itu-t/bulletin/annex.html
+ *
+ * 2) The ISO 3166 country codes list, available here:
+ *    http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
+ *
+ * This table was verified (28 Aug 2009) against
+ * http://en.wikipedia.org/wiki/List_of_mobile_country_codes with the
+ * only unresolved discrepancy being that this list has an extra entry
+ * (461) for China.
+ *
+ * TODO: Complete the mappings for timezones and language/locale codes.
+ *
+ * The actual table data used in the Java code is generated from the
+ * below Python code for efficiency.  The information is expected to
+ * be static, but if changes are required, the table in the python
+ * code can be modified and the trailing code run to re-generate the
+ * tables that are to be used by Java.
+
+mcc_table = [
+  (202, 'gr', 2, 'Greece'),
+  (204, 'nl', 2, 'Europe/Amsterdam', 'nl', 13, 'Netherlands (Kingdom of the)'),
+  (206, 'be', 2, 'Belgium'),
+  (208, 'fr', 2, 'Europe/Paris', 'fr', 'France'),
+  (212, 'mc', 2, 'Monaco (Principality of)'),
+  (213, 'ad', 2, 'Andorra (Principality of)'),
+  (214, 'es', 2, 'Europe/Madrid', 'es', 'Spain'),
+  (216, 'hu', 2, 'Hungary (Republic of)'),
+  (218, 'ba', 2, 'Bosnia and Herzegovina'),
+  (219, 'hr', 2, 'Croatia (Republic of)'),
+  (220, 'rs', 2, 'Serbia and Montenegro'),
+  (222, 'it', 2, 'Europe/Rome', 'it', 'Italy'),
+  (225, 'va', 2, 'Europe/Rome', 'it', 'Vatican City State'),
+  (226, 'ro', 2, 'Romania'),
+  (228, 'ch', 2, 'Europe/Zurich', 'de', 'Switzerland (Confederation of)'),
+  (230, 'cz', 2, 'Europe/Prague', 'cs', 13, 'Czech Republic'),
+  (231, 'sk', 2, 'Slovak Republic'),
+  (232, 'at', 2, 'Europe/Vienna', 'de', 13, 'Austria'),
+  (234, 'gb', 2, 'Europe/London', 'en', 13, 'United Kingdom of Great Britain and Northern Ireland'),
+  (235, 'gb', 2, 'Europe/London', 'en', 13, 'United Kingdom of Great Britain and Northern Ireland'),
+  (238, 'dk', 2, 'Denmark'),
+  (240, 'se', 2, 'Sweden'),
+  (242, 'no', 2, 'Norway'),
+  (244, 'fi', 2, 'Finland'),
+  (246, 'lt', 2, 'Lithuania (Republic of)'),
+  (247, 'lv', 2, 'Latvia (Republic of)'),
+  (248, 'ee', 2, 'Estonia (Republic of)'),
+  (250, 'ru', 2, 'Russian Federation'),
+  (255, 'ua', 2, 'Ukraine'),
+  (257, 'by', 2, 'Belarus (Republic of)'),
+  (259, 'md', 2, 'Moldova (Republic of)'),
+  (260, 'pl', 2, 'Europe/Warsaw', 'Poland (Republic of)'),
+  (262, 'de', 2, 'Europe/Berlin', 'de', 13, 'Germany (Federal Republic of)'),
+  (266, 'gi', 2, 'Gibraltar'),
+  (268, 'pt', 2, 'Portugal'),
+  (270, 'lu', 2, 'Luxembourg'),
+  (272, 'ie', 2, 'Europe/Dublin', 'en', 'Ireland'),
+  (274, 'is', 2, 'Iceland'),
+  (276, 'al', 2, 'Albania (Republic of)'),
+  (278, 'mt', 2, 'Malta'),
+  (280, 'cy', 2, 'Cyprus (Republic of)'),
+  (282, 'ge', 2, 'Georgia'),
+  (283, 'am', 2, 'Armenia (Republic of)'),
+  (284, 'bg', 2, 'Bulgaria (Republic of)'),
+  (286, 'tr', 2, 'Turkey'),
+  (288, 'fo', 2, 'Faroe Islands'),
+  (289, 'ge', 2, 'Abkhazia (Georgia)'),
+  (290, 'gl', 2, 'Greenland (Denmark)'),
+  (292, 'sm', 2, 'San Marino (Republic of)'),
+  (293, 'sl', 2, 'Slovenia (Republic of)'),
+  (294, 'mk', 2, 'The Former Yugoslav Republic of Macedonia'),
+  (295, 'li', 2, 'Liechtenstein (Principality of)'),
+  (297, 'me', 2, 'Montenegro (Republic of)'),
+  (302, 'ca', 2, '', '', 11, 'Canada'),
+  (308, 'pm', 2, 'Saint Pierre and Miquelon (Collectivit territoriale de la Rpublique franaise)'),
+  (310, 'us', 3, '', 'en', 11, 'United States of America'),
+  (311, 'us', 3, '', 'en', 11, 'United States of America'),
+  (312, 'us', 3, '', 'en', 11, 'United States of America'),
+  (313, 'us', 3, '', 'en', 11, 'United States of America'),
+  (314, 'us', 3, '', 'en', 11, 'United States of America'),
+  (315, 'us', 3, '', 'en', 11, 'United States of America'),
+  (316, 'us', 3, '', 'en', 11, 'United States of America'),
+  (330, 'pr', 2, 'Puerto Rico'),
+  (332, 'vi', 2, 'United States Virgin Islands'),
+  (334, 'mx', 3, 'Mexico'),
+  (338, 'jm', 3, 'Jamaica'),
+  (340, 'gp', 2, 'Guadeloupe (French Department of)'),
+  (342, 'bb', 3, 'Barbados'),
+  (344, 'ag', 3, 'Antigua and Barbuda'),
+  (346, 'ky', 3, 'Cayman Islands'),
+  (348, 'vg', 3, 'British Virgin Islands'),
+  (350, 'bm', 2, 'Bermuda'),
+  (352, 'gd', 2, 'Grenada'),
+  (354, 'ms', 2, 'Montserrat'),
+  (356, 'kn', 2, 'Saint Kitts and Nevis'),
+  (358, 'lc', 2, 'Saint Lucia'),
+  (360, 'vc', 2, 'Saint Vincent and the Grenadines'),
+  (362, 'nl', 2, 'Netherlands Antilles'),
+  (363, 'aw', 2, 'Aruba'),
+  (364, 'bs', 2, 'Bahamas (Commonwealth of the)'),
+  (365, 'ai', 3, 'Anguilla'),
+  (366, 'dm', 2, 'Dominica (Commonwealth of)'),
+  (368, 'cu', 2, 'Cuba'),
+  (370, 'do', 2, 'Dominican Republic'),
+  (372, 'ht', 2, 'Haiti (Republic of)'),
+  (374, 'tt', 2, 'Trinidad and Tobago'),
+  (376, 'tc', 2, 'Turks and Caicos Islands'),
+  (400, 'az', 2, 'Azerbaijani Republic'),
+  (401, 'kz', 2, 'Kazakhstan (Republic of)'),
+  (402, 'bt', 2, 'Bhutan (Kingdom of)'),
+  (404, 'in', 2, 'India (Republic of)'),
+  (405, 'in', 2, 'India (Republic of)'),
+  (410, 'pk', 2, 'Pakistan (Islamic Republic of)'),
+  (412, 'af', 2, 'Afghanistan'),
+  (413, 'lk', 2, 'Sri Lanka (Democratic Socialist Republic of)'),
+  (414, 'mm', 2, 'Myanmar (Union of)'),
+  (415, 'lb', 2, 'Lebanon'),
+  (416, 'jo', 2, 'Jordan (Hashemite Kingdom of)'),
+  (417, 'sy', 2, 'Syrian Arab Republic'),
+  (418, 'iq', 2, 'Iraq (Republic of)'),
+  (419, 'kw', 2, 'Kuwait (State of)'),
+  (420, 'sa', 2, 'Saudi Arabia (Kingdom of)'),
+  (421, 'ye', 2, 'Yemen (Republic of)'),
+  (422, 'om', 2, 'Oman (Sultanate of)'),
+  (423, 'ps', 2, 'Palestine'),
+  (424, 'ae', 2, 'United Arab Emirates'),
+  (425, 'il', 2, 'Israel (State of)'),
+  (426, 'bh', 2, 'Bahrain (Kingdom of)'),
+  (427, 'qa', 2, 'Qatar (State of)'),
+  (428, 'mn', 2, 'Mongolia'),
+  (429, 'np', 2, 'Nepal'),
+  (430, 'ae', 2, 'United Arab Emirates'),
+  (431, 'ae', 2, 'United Arab Emirates'),
+  (432, 'ir', 2, 'Iran (Islamic Republic of)'),
+  (434, 'uz', 2, 'Uzbekistan (Republic of)'),
+  (436, 'tj', 2, 'Tajikistan (Republic of)'),
+  (437, 'kg', 2, 'Kyrgyz Republic'),
+  (438, 'tm', 2, 'Turkmenistan'),
+  (440, 'jp', 2, 'Asia/Tokyo', 'ja', 14, 'Japan'),
+  (441, 'jp', 2, 'Asia/Tokyo', 'ja', 14, 'Japan'),
+  (450, 'kr', 2, 'Korea (Republic of)'),
+  (452, 'vn', 2, 'Viet Nam (Socialist Republic of)'),
+  (454, 'hk', 2, '"Hong Kong, China"'),
+  (455, 'mo', 2, '"Macao, China"'),
+  (456, 'kh', 2, 'Cambodia (Kingdom of)'),
+  (457, 'la', 2, "Lao People's Democratic Republic"),
+  (460, 'cn', 2, "China (People's Republic of)"),
+  (461, 'cn', 2, "China (People's Republic of)"),
+  (466, 'tw', 2, "Taiwan (Republic of China)"),
+  (467, 'kp', 2, "Democratic People's Republic of Korea"),
+  (470, 'bd', 2, "Bangladesh (People's Republic of)"),
+  (472, 'mv', 2, 'Maldives (Republic of)'),
+  (502, 'my', 2, 'Malaysia'),
+  (505, 'au', 2, 'Australia/Sydney', 'en', 11, 'Australia'),
+  (510, 'id', 2, 'Indonesia (Republic of)'),
+  (514, 'tl', 2, 'Democratic Republic of Timor-Leste'),
+  (515, 'ph', 2, 'Philippines (Republic of the)'),
+  (520, 'th', 2, 'Thailand'),
+  (525, 'sg', 2, 'Singapore', 'en', 11, 'Singapore (Republic of)'),
+  (528, 'bn', 2, 'Brunei Darussalam'),
+  (530, 'nz', 2, 'Pacific/Auckland', 'en', 'New Zealand'),
+  (534, 'mp', 2, 'Northern Mariana Islands (Commonwealth of the)'),
+  (535, 'gu', 2, 'Guam'),
+  (536, 'nr', 2, 'Nauru (Republic of)'),
+  (537, 'pg', 2, 'Papua New Guinea'),
+  (539, 'to', 2, 'Tonga (Kingdom of)'),
+  (540, 'sb', 2, 'Solomon Islands'),
+  (541, 'vu', 2, 'Vanuatu (Republic of)'),
+  (542, 'fj', 2, 'Fiji (Republic of)'),
+  (543, 'wf', 2, "Wallis and Futuna (Territoire franais d'outre-mer)"),
+  (544, 'as', 2, 'American Samoa'),
+  (545, 'ki', 2, 'Kiribati (Republic of)'),
+  (546, 'nc', 2, "New Caledonia (Territoire franais d'outre-mer)"),
+  (547, 'pf', 2, "French Polynesia (Territoire franais d'outre-mer)"),
+  (548, 'ck', 2, 'Cook Islands'),
+  (549, 'ws', 2, 'Samoa (Independent State of)'),
+  (550, 'fm', 2, 'Micronesia (Federated States of)'),
+  (551, 'mh', 2, 'Marshall Islands (Republic of the)'),
+  (552, 'pw', 2, 'Palau (Republic of)'),
+  (602, 'eg', 2, 'Egypt (Arab Republic of)'),
+  (603, 'dz', 2, "Algeria (People's Democratic Republic of)"),
+  (604, 'ma', 2, 'Morocco (Kingdom of)'),
+  (605, 'tn', 2, 'Tunisia'),
+  (606, 'ly', 2, "Libya (Socialist People's Libyan Arab Jamahiriya)"),
+  (607, 'gm', 2, 'Gambia (Republic of the)'),
+  (608, 'sn', 2, 'Senegal (Republic of)'),
+  (609, 'mr', 2, 'Mauritania (Islamic Republic of)'),
+  (610, 'ml', 2, 'Mali (Republic of)'),
+  (611, 'gn', 2, 'Guinea (Republic of)'),
+  (612, 'ci', 2, "Cte d'Ivoire (Republic of)"),
+  (613, 'bf', 2, 'Burkina Faso'),
+  (614, 'ne', 2, 'Niger (Republic of the)'),
+  (615, 'tg', 2, 'Togolese Republic'),
+  (616, 'bj', 2, 'Benin (Republic of)'),
+  (617, 'mu', 2, 'Mauritius (Republic of)'),
+  (618, 'lr', 2, 'Liberia (Republic of)'),
+  (619, 'sl', 2, 'Sierra Leone'),
+  (620, 'gh', 2, 'Ghana'),
+  (621, 'ng', 2, 'Nigeria (Federal Republic of)'),
+  (622, 'td', 2, 'Chad (Republic of)'),
+  (623, 'cf', 2, 'Central African Republic'),
+  (624, 'cm', 2, 'Cameroon (Republic of)'),
+  (625, 'cv', 2, 'Cape Verde (Republic of)'),
+  (626, 'st', 2, 'Sao Tome and Principe (Democratic Republic of)'),
+  (627, 'gq', 2, 'Equatorial Guinea (Republic of)'),
+  (628, 'ga', 2, 'Gabonese Republic'),
+  (629, 'cg', 2, 'Congo (Republic of the)'),
+  (630, 'cg', 2, 'Democratic Republic of the Congo'),
+  (631, 'ao', 2, 'Angola (Republic of)'),
+  (632, 'gw', 2, 'Guinea-Bissau (Republic of)'),
+  (633, 'sc', 2, 'Seychelles (Republic of)'),
+  (634, 'sd', 2, 'Sudan (Republic of the)'),
+  (635, 'rw', 2, 'Rwanda (Republic of)'),
+  (636, 'et', 2, 'Ethiopia (Federal Democratic Republic of)'),
+  (637, 'so', 2, 'Somali Democratic Republic'),
+  (638, 'dj', 2, 'Djibouti (Republic of)'),
+  (639, 'ke', 2, 'Kenya (Republic of)'),
+  (640, 'tz', 2, 'Tanzania (United Republic of)'),
+  (641, 'ug', 2, 'Uganda (Republic of)'),
+  (642, 'bi', 2, 'Burundi (Republic of)'),
+  (643, 'mz', 2, 'Mozambique (Republic of)'),
+  (645, 'zm', 2, 'Zambia (Republic of)'),
+  (646, 'mg', 2, 'Madagascar (Republic of)'),
+  (647, 're', 2, 'Reunion (French Department of)'),
+  (648, 'zw', 2, 'Zimbabwe (Republic of)'),
+  (649, 'na', 2, 'Namibia (Republic of)'),
+  (650, 'mw', 2, 'Malawi'),
+  (651, 'ls', 2, 'Lesotho (Kingdom of)'),
+  (652, 'bw', 2, 'Botswana (Republic of)'),
+  (653, 'sz', 2, 'Swaziland (Kingdom of)'),
+  (654, 'km', 2, 'Comoros (Union of the)'),
+  (655, 'za', 2, 'Africa/Johannesburg', 'en', 'South Africa (Republic of)'),
+  (657, 'er', 2, 'Eritrea'),
+  (702, 'bz', 2, 'Belize'),
+  (704, 'gt', 2, 'Guatemala (Republic of)'),
+  (706, 'sv', 2, 'El Salvador (Republic of)'),
+  (708, 'hn', 3, 'Honduras (Republic of)'),
+  (710, 'ni', 2, 'Nicaragua'),
+  (712, 'cr', 2, 'Costa Rica'),
+  (714, 'pa', 2, 'Panama (Republic of)'),
+  (716, 'pe', 2, 'Peru'),
+  (722, 'ar', 3, 'Argentine Republic'),
+  (724, 'br', 2, 'Brazil (Federative Republic of)'),
+  (730, 'cl', 2, 'Chile'),
+  (732, 'co', 3, 'Colombia (Republic of)'),
+  (734, 've', 2, 'Venezuela (Bolivarian Republic of)'),
+  (736, 'bo', 2, 'Bolivia (Republic of)'),
+  (738, 'gy', 2, 'Guyana'),
+  (740, 'ec', 2, 'Ecuador'),
+  (742, 'gf', 2, 'French Guiana (French Department of)'),
+  (744, 'py', 2, 'Paraguay (Republic of)'),
+  (746, 'sr', 2, 'Suriname (Republic of)'),
+  (748, 'uy', 2, 'Uruguay (Eastern Republic of)'),
+  (750, 'fk', 2, 'Falkland Islands (Malvinas)')]
+
+get_mcc = lambda elt: elt[0]
+get_iso = lambda elt: elt[1]
+get_sd = lambda elt: elt[2]
+get_tz = lambda elt: len(elt) > 4 and elt[3] or ''
+get_lang = lambda elt: len(elt) > 5 and elt[4] or ''
+get_wifi = lambda elt: len(elt) > 6 and elt[5] or 0
+
+mcc_codes = ['0x%04x' % get_mcc(elt) for elt in mcc_table]
+tz_set = sorted(x for x in set(get_tz(elt) for elt in mcc_table))
+lang_set = sorted(x for x in set(get_lang(elt) for elt in mcc_table))
+
+def mk_ind_code(elt):
+  iso = get_iso(elt)
+  iso_code = ((ord(iso[0]) << 8) | ord(iso[1])) & 0xFFFF # 16 bits
+  wifi = get_wifi(elt) & 0x000F                          #  4 bits
+  sd = get_sd(elt) & 0x0003                              #  2 bits
+  tz_ind = tz_set.index(get_tz(elt)) & 0x001F            #  5 bits
+  lang_ind = lang_set.index(get_lang(elt)) & 0x000F      #  4 bits
+  return (iso_code << 16) | (wifi << 11) | (sd << 9) | (tz_ind << 4) | lang_ind
+
+ind_codes = ['0x%08x' % mk_ind_code(elt) for elt in mcc_table]
+
+def fmt_list(title, l, batch_sz):
+  sl = []
+  for i in range(len(l) / batch_sz + (len(l) % batch_sz and 1 or 0)):
+    j = i * batch_sz
+    sl.append((' ' * 8) + ', '.join(l[j:j + batch_sz]))
+  return '    private static final %s = {\n' % title + ',\n'.join(sl) + '\n    };\n'
+
+def do_autogen_comment(extra_desc=[]):
+  print '    /' + '**\n    * AUTO GENERATED (by the Python code above)'
+  for line in extra_desc:
+    print '    * %s' % line
+  print '    *' + '/'
+
+do_autogen_comment()
+print fmt_list('String[] TZ_STRINGS', ['"%s"' % x for x in tz_set], 1)
+do_autogen_comment()
+print fmt_list('String[] LANG_STRINGS', ['"%s"' % x for x in lang_set], 10)
+do_autogen_comment(['This table is a list of MCC codes.  The index in this table',
+                    'of a given MCC code is the index of extra information about',
+                    'that MCC in the IND_CODES table.'])
+print fmt_list('short[] MCC_CODES', mcc_codes, 10)
+do_autogen_comment(['The values in this table are broken down as follows (msb to lsb):',
+                    '    iso country code 16 bits',
+                    '    (unused)          1 bit',
+                    '    wifi channel      4 bits',
+                    '    smalled digit     2 bits',
+                    '    default timezone  5 bits',
+                    '    default language  4 bits'])
+print fmt_list('int[] IND_CODES', ind_codes, 6)
+
+def parse_ind_code(ind):
+  mcc = eval(mcc_codes[ind])
+  code = eval(ind_codes[ind])
+  iso_lsb = int((code >> 16) & 0x00FF)
+  iso_msb = int((code >> 24) & 0x00FF)
+  iso = '%s%s' % (chr(iso_msb), chr(iso_lsb))
+  wifi = int((code >> 11) & 0x000F)
+  sd = int((code >> 9) & 0x0003)
+  tz_ind = (code >> 4) & 0x001F
+  lang_ind = (code >> 0) & 0x000F
+  return (mcc, iso, sd, tz_set[tz_ind], lang_set[lang_ind], wifi)
+
+fmt_str = 'mcc = %s, iso = %s, sd = %s, tz = %s, lang = %s, wifi = %s'
+orig_table = [fmt_str % (get_mcc(elt), get_iso(elt), get_sd(elt),
+                         get_tz(elt), get_lang(elt), get_wifi(elt))
+              for elt in mcc_table]
+derived_table = [fmt_str % parse_ind_code(i) for i in range(len(ind_codes))]
+for i in range(len(orig_table)):
+  if orig_table[i] == derived_table[i]: continue
+  print 'MISMATCH ERROR : ', orig_table[i], " != ", derived_table[i]
+
+*/
 
 /**
  * Mobile Country Code
@@ -26,404 +360,197 @@
  */
 public final class MccTable
 {
-    static ArrayList<MccEntry> table;
+    /**
+    * AUTO GENERATED (by the Python code above)
+    */
+    private static final String[] TZ_STRINGS = {
+        "",
+        "Africa/Johannesburg",
+        "Asia/Tokyo",
+        "Australia/Sydney",
+        "Europe/Amsterdam",
+        "Europe/Berlin",
+        "Europe/Dublin",
+        "Europe/London",
+        "Europe/Madrid",
+        "Europe/Paris",
+        "Europe/Prague",
+        "Europe/Rome",
+        "Europe/Vienna",
+        "Europe/Warsaw",
+        "Europe/Zurich",
+        "Pacific/Auckland",
+        "Singapore"
+    };
 
-    static class MccEntry implements Comparable<MccEntry>
-    {
-        int mcc;
-        String iso;
-        int smallestDigitsMnc;
-        String timezone;
-        String language;
-        int wifiChannelsAllowed;
+    /**
+    * AUTO GENERATED (by the Python code above)
+    */
+    private static final String[] LANG_STRINGS = {
+        "", "cs", "de", "en", "es", "fr", "it", "ja", "nl"
+    };
 
-        MccEntry(int mnc, String iso, int smallestDigitsMCC) {
-            this(mnc, iso, smallestDigitsMCC, null);
-        }
+    /**
+    * AUTO GENERATED (by the Python code above)
+    * This table is a list of MCC codes.  The index in this table
+    * of a given MCC code is the index of extra information about
+    * that MCC in the IND_CODES table.
+    */
+    private static final short[] MCC_CODES = {
+        0x00ca, 0x00cc, 0x00ce, 0x00d0, 0x00d4, 0x00d5, 0x00d6, 0x00d8, 0x00da, 0x00db,
+        0x00dc, 0x00de, 0x00e1, 0x00e2, 0x00e4, 0x00e6, 0x00e7, 0x00e8, 0x00ea, 0x00eb,
+        0x00ee, 0x00f0, 0x00f2, 0x00f4, 0x00f6, 0x00f7, 0x00f8, 0x00fa, 0x00ff, 0x0101,
+        0x0103, 0x0104, 0x0106, 0x010a, 0x010c, 0x010e, 0x0110, 0x0112, 0x0114, 0x0116,
+        0x0118, 0x011a, 0x011b, 0x011c, 0x011e, 0x0120, 0x0121, 0x0122, 0x0124, 0x0125,
+        0x0126, 0x0127, 0x0129, 0x012e, 0x0134, 0x0136, 0x0137, 0x0138, 0x0139, 0x013a,
+        0x013b, 0x013c, 0x014a, 0x014c, 0x014e, 0x0152, 0x0154, 0x0156, 0x0158, 0x015a,
+        0x015c, 0x015e, 0x0160, 0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016b, 0x016c,
+        0x016d, 0x016e, 0x0170, 0x0172, 0x0174, 0x0176, 0x0178, 0x0190, 0x0191, 0x0192,
+        0x0194, 0x0195, 0x019a, 0x019c, 0x019d, 0x019e, 0x019f, 0x01a0, 0x01a1, 0x01a2,
+        0x01a3, 0x01a4, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x01a9, 0x01aa, 0x01ab, 0x01ac,
+        0x01ad, 0x01ae, 0x01af, 0x01b0, 0x01b2, 0x01b4, 0x01b5, 0x01b6, 0x01b8, 0x01b9,
+        0x01c2, 0x01c4, 0x01c6, 0x01c7, 0x01c8, 0x01c9, 0x01cc, 0x01cd, 0x01d2, 0x01d3,
+        0x01d6, 0x01d8, 0x01f6, 0x01f9, 0x01fe, 0x0202, 0x0203, 0x0208, 0x020d, 0x0210,
+        0x0212, 0x0216, 0x0217, 0x0218, 0x0219, 0x021b, 0x021c, 0x021d, 0x021e, 0x021f,
+        0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0226, 0x0227, 0x0228, 0x025a,
+        0x025b, 0x025c, 0x025d, 0x025e, 0x025f, 0x0260, 0x0261, 0x0262, 0x0263, 0x0264,
+        0x0265, 0x0266, 0x0267, 0x0268, 0x0269, 0x026a, 0x026b, 0x026c, 0x026d, 0x026e,
+        0x026f, 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277, 0x0278,
+        0x0279, 0x027a, 0x027b, 0x027c, 0x027d, 0x027e, 0x027f, 0x0280, 0x0281, 0x0282,
+        0x0283, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289, 0x028a, 0x028b, 0x028c, 0x028d,
+        0x028e, 0x028f, 0x0291, 0x02be, 0x02c0, 0x02c2, 0x02c4, 0x02c6, 0x02c8, 0x02ca,
+        0x02cc, 0x02d2, 0x02d4, 0x02da, 0x02dc, 0x02de, 0x02e0, 0x02e2, 0x02e4, 0x02e6,
+        0x02e8, 0x02ea, 0x02ec, 0x02ee
+    };
 
-        MccEntry(int mnc, String iso, int smallestDigitsMCC, String timezone) {
-            this(mnc, iso, smallestDigitsMCC, timezone, null);
-        }
+    /**
+    * AUTO GENERATED (by the Python code above)
+    * The values in this table are broken down as follows (msb to lsb):
+    *     iso country code 16 bits
+    *     (unused)          1 bit
+    *     wifi channel      4 bits
+    *     smalled digit     2 bits
+    *     default timezone  5 bits
+    *     default language  4 bits
+    */
+    private static final int[] IND_CODES = {
+        0x67720400, 0x6e6c6c48, 0x62650400, 0x66720495, 0x6d630400, 0x61640400,
+        0x65730484, 0x68750400, 0x62610400, 0x68720400, 0x72730400, 0x697404b6,
+        0x766104b6, 0x726f0400, 0x636804e2, 0x637a6ca1, 0x736b0400, 0x61746cc2,
+        0x67626c73, 0x67626c73, 0x646b0400, 0x73650400, 0x6e6f0400, 0x66690400,
+        0x6c740400, 0x6c760400, 0x65650400, 0x72750400, 0x75610400, 0x62790400,
+        0x6d640400, 0x706c04d0, 0x64656c52, 0x67690400, 0x70740400, 0x6c750400,
+        0x69650463, 0x69730400, 0x616c0400, 0x6d740400, 0x63790400, 0x67650400,
+        0x616d0400, 0x62670400, 0x74720400, 0x666f0400, 0x67650400, 0x676c0400,
+        0x736d0400, 0x736c0400, 0x6d6b0400, 0x6c690400, 0x6d650400, 0x63615c00,
+        0x706d0400, 0x75735e03, 0x75735e03, 0x75735e03, 0x75735e03, 0x75735e03,
+        0x75735e03, 0x75735e03, 0x70720400, 0x76690400, 0x6d780600, 0x6a6d0600,
+        0x67700400, 0x62620600, 0x61670600, 0x6b790600, 0x76670600, 0x626d0400,
+        0x67640400, 0x6d730400, 0x6b6e0400, 0x6c630400, 0x76630400, 0x6e6c0400,
+        0x61770400, 0x62730400, 0x61690600, 0x646d0400, 0x63750400, 0x646f0400,
+        0x68740400, 0x74740400, 0x74630400, 0x617a0400, 0x6b7a0400, 0x62740400,
+        0x696e0400, 0x696e0400, 0x706b0400, 0x61660400, 0x6c6b0400, 0x6d6d0400,
+        0x6c620400, 0x6a6f0400, 0x73790400, 0x69710400, 0x6b770400, 0x73610400,
+        0x79650400, 0x6f6d0400, 0x70730400, 0x61650400, 0x696c0400, 0x62680400,
+        0x71610400, 0x6d6e0400, 0x6e700400, 0x61650400, 0x61650400, 0x69720400,
+        0x757a0400, 0x746a0400, 0x6b670400, 0x746d0400, 0x6a707427, 0x6a707427,
+        0x6b720400, 0x766e0400, 0x686b0400, 0x6d6f0400, 0x6b680400, 0x6c610400,
+        0x636e0400, 0x636e0400, 0x74770400, 0x6b700400, 0x62640400, 0x6d760400,
+        0x6d790400, 0x61755c33, 0x69640400, 0x746c0400, 0x70680400, 0x74680400,
+        0x73675d03, 0x626e0400, 0x6e7a04f3, 0x6d700400, 0x67750400, 0x6e720400,
+        0x70670400, 0x746f0400, 0x73620400, 0x76750400, 0x666a0400, 0x77660400,
+        0x61730400, 0x6b690400, 0x6e630400, 0x70660400, 0x636b0400, 0x77730400,
+        0x666d0400, 0x6d680400, 0x70770400, 0x65670400, 0x647a0400, 0x6d610400,
+        0x746e0400, 0x6c790400, 0x676d0400, 0x736e0400, 0x6d720400, 0x6d6c0400,
+        0x676e0400, 0x63690400, 0x62660400, 0x6e650400, 0x74670400, 0x626a0400,
+        0x6d750400, 0x6c720400, 0x736c0400, 0x67680400, 0x6e670400, 0x74640400,
+        0x63660400, 0x636d0400, 0x63760400, 0x73740400, 0x67710400, 0x67610400,
+        0x63670400, 0x63670400, 0x616f0400, 0x67770400, 0x73630400, 0x73640400,
+        0x72770400, 0x65740400, 0x736f0400, 0x646a0400, 0x6b650400, 0x747a0400,
+        0x75670400, 0x62690400, 0x6d7a0400, 0x7a6d0400, 0x6d670400, 0x72650400,
+        0x7a770400, 0x6e610400, 0x6d770400, 0x6c730400, 0x62770400, 0x737a0400,
+        0x6b6d0400, 0x7a610413, 0x65720400, 0x627a0400, 0x67740400, 0x73760400,
+        0x686e0600, 0x6e690400, 0x63720400, 0x70610400, 0x70650400, 0x61720600,
+        0x62720400, 0x636c0400, 0x636f0600, 0x76650400, 0x626f0400, 0x67790400,
+        0x65630400, 0x67660400, 0x70790400, 0x73720400, 0x75790400, 0x666b0400
+    };
 
-        MccEntry(int mnc, String iso, int smallestDigitsMCC, String timezone, String language) {
-            this(mnc, iso, smallestDigitsMCC, timezone, language, 0);
-        }
-
-        MccEntry(int mnc, String iso, int smallestDigitsMCC, String timezone, String language, int wifiChannels) {
-            this.mcc = mnc;
-            this.iso = iso;
-            this.smallestDigitsMnc = smallestDigitsMCC;
-            this.timezone = timezone;
-            this.language = language;
-            this.wifiChannelsAllowed = wifiChannels;
-        }
-
-        public int compareTo(MccEntry o)
-        {
-            return mcc - o.mcc;
-        }
-    }
-
-    private static MccEntry
-    entryForMcc(int mcc)
-    {
-        int index;
-
-        MccEntry m;
-
-        m = new MccEntry(mcc, null, 0);
-
-        index = Collections.binarySearch(table, m);
-
+    /**
+     * Given a GSM Mobile Country Code, returns a default time zone ID
+     * if available.  Returns null if unavailable.
+     */
+    public static String defaultTimeZoneForMcc(int mcc) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
         if (index < 0) {
             return null;
-        } else {
-            return table.get(index);
         }
-    }
-
-    /**
-     * Returns a default time zone ID for the given MCC.
-     * @param mcc Mobile Country Code
-     * @return default TimeZone ID, or null if not specified
-     */
-    /* package */ static String defaultTimeZoneForMcc(int mcc) {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+        int indCode = IND_CODES[index];
+        int tzInd = (indCode >>> 4) & 0x001F;
+        String tz = TZ_STRINGS[tzInd];
+        if (tz == "") {
             return null;
-        } else {
-            return entry.timezone;
         }
+        return tz;
     }
 
     /**
-     * Given a GSM Mobile Country Code, returns
-     * an ISO two-character country code if available.
-     * Returns "" if unavailable.
+     * Given a GSM Mobile Country Code, returns an ISO two-character
+     * country code if available.  Returns "" if unavailable.
      */
-    public static String
-    countryCodeForMcc(int mcc)
-    {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+    public static String countryCodeForMcc(int mcc) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
+        if (index < 0) {
             return "";
-        } else {
-            return entry.iso;
         }
+        int indCode = IND_CODES[index];
+        byte[] iso = {(byte)((indCode >>> 24) & 0x00FF), (byte)((indCode >>> 16) & 0x00FF)};
+        return new String(iso);
     }
 
     /**
-     * Given a GSM Mobile Country Code, returns
-     * an ISO 2-3 character language code if available.
-     * Returns null if unavailable.
+     * Given a GSM Mobile Country Code, returns an ISO 2-3 character
+     * language code if available.  Returns null if unavailable.
      */
-    /* package */ static String defaultLanguageForMcc(int mcc) {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+    public static String defaultLanguageForMcc(int mcc) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
+        if (index < 0) {
             return null;
-        } else {
-            return entry.language;
         }
+        int indCode = IND_CODES[index];
+        int langInd = indCode & 0x000F;
+        String lang = LANG_STRINGS[langInd];
+        if (lang == "") {
+            return null;
+        }
+        return lang;
     }
 
     /**
-     * Given a GSM Mobile Country Code, returns
-     * the smallest number of digits that M if available.
-     * Returns "" if unavailable.
+     * Given a GSM Mobile Country Code, returns the corresponding
+     * smallest number of digits field.  Returns 2 if unavailable.
      */
-    public static int
-    smallestDigitsMccForMnc(int mcc)
-    {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+    public static int smallestDigitsMccForMnc(int mcc) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
+        if (index < 0) {
             return 2;
-        } else {
-            return entry.smallestDigitsMnc;
         }
+        int indCode = IND_CODES[index];
+        int smDig = (indCode >>> 9) & 0x0003;
+        return smDig;
     }
 
     /**
-     * Given a GSM Mobile Country Code, returns
-     * the number of wifi channels allowed in that country.
-     * Returns 0 if unavailable
+     * Given a GSM Mobile Country Code, returns the number of wifi
+     * channels allowed in that country.  Returns 0 if unavailable.
      */
     public static int wifiChannelsForMcc(int mcc) {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
+        if (index < 0) {
             return 0;
-        } else {
-            return entry.wifiChannelsAllowed;
         }
+        int indCode = IND_CODES[index];
+        int wifi = (indCode >>> 11) & 0x000F;
+        return wifi;
     }
 
-    static {
-        table = new ArrayList<MccEntry>(240);
-
-
-        /*
-         * The table below is built from two resources:
-         *
-         * 1) ITU "Mobile Network Code (MNC) for the international
-         *   identification plan for mobile terminals and mobile users"
-         *   which is available as an annex to the ITU operational bulletin
-         *   available here: http://www.itu.int/itu-t/bulletin/annex.html
-         *
-         * 2) The ISO 3166 country codes list, available here:
-         *    http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
-         *
-         * This table has not been verified.
-         *
-         * FIXME(mkf) this should be stored in a more efficient representation
-         */
-
-		table.add(new MccEntry(202,"gr",2));	//Greece
-		table.add(new MccEntry(204,"nl",2,"Europe/Amsterdam","nl",13)); //Netherlands (Kingdom of the)
-		table.add(new MccEntry(206,"be",2));	//Belgium
-		table.add(new MccEntry(208,"fr",2,"Europe/Paris","fr"));	//France
-		table.add(new MccEntry(212,"mc",2));	//Monaco (Principality of)
-		table.add(new MccEntry(213,"ad",2));	//Andorra (Principality of)
-		table.add(new MccEntry(214,"es",2,"Europe/Madrid","es"));	//Spain
-		table.add(new MccEntry(216,"hu",2));	//Hungary (Republic of)
-		table.add(new MccEntry(218,"ba",2));	//Bosnia and Herzegovina
-		table.add(new MccEntry(219,"hr",2));	//Croatia (Republic of)
-		table.add(new MccEntry(220,"rs",2));	//Serbia and Montenegro
-		table.add(new MccEntry(222,"it",2,"Europe/Rome","it"));	//Italy
-		table.add(new MccEntry(225,"va",2,"Europe/Rome","it"));	//Vatican City State
-		table.add(new MccEntry(226,"ro",2));	//Romania
-		table.add(new MccEntry(228,"ch",2,"Europe/Zurich","de"));	//Switzerland (Confederation of)
-		table.add(new MccEntry(230,"cz",2,"Europe/Prague","cs", 13));	//Czech Republic
-		table.add(new MccEntry(231,"sk",2));	//Slovak Republic
-		table.add(new MccEntry(232,"at",2,"Europe/Vienna","de", 13));   //Austria
-		table.add(new MccEntry(234,"gb",2,"Europe/London","en", 13));   //United Kingdom of Great Britain and Northern Ireland
-		table.add(new MccEntry(235,"gb",2,"Europe/London","en", 13));   //United Kingdom of Great Britain and Northern Ireland
-		table.add(new MccEntry(238,"dk",2));	//Denmark
-		table.add(new MccEntry(240,"se",2));	//Sweden
-		table.add(new MccEntry(242,"no",2));	//Norway
-		table.add(new MccEntry(244,"fi",2));	//Finland
-		table.add(new MccEntry(246,"lt",2));	//Lithuania (Republic of)
-		table.add(new MccEntry(247,"lv",2));	//Latvia (Republic of)
-		table.add(new MccEntry(248,"ee",2));	//Estonia (Republic of)
-		table.add(new MccEntry(250,"ru",2));	//Russian Federation
-		table.add(new MccEntry(255,"ua",2));	//Ukraine
-		table.add(new MccEntry(257,"by",2));	//Belarus (Republic of)
-		table.add(new MccEntry(259,"md",2));	//Moldova (Republic of)
-		table.add(new MccEntry(260,"pl",2,"Europe/Warsaw"));	//Poland (Republic of)
-		table.add(new MccEntry(262,"de",2,"Europe/Berlin","de", 13));   //Germany (Federal Republic of)
-		table.add(new MccEntry(266,"gi",2));	//Gibraltar
-		table.add(new MccEntry(268,"pt",2));	//Portugal
-		table.add(new MccEntry(270,"lu",2));	//Luxembourg
-		table.add(new MccEntry(272,"ie",2,"Europe/Dublin","en"));	//Ireland
-		table.add(new MccEntry(274,"is",2));	//Iceland
-		table.add(new MccEntry(276,"al",2));	//Albania (Republic of)
-		table.add(new MccEntry(278,"mt",2));	//Malta
-		table.add(new MccEntry(280,"cy",2));	//Cyprus (Republic of)
-		table.add(new MccEntry(282,"ge",2));	//Georgia
-		table.add(new MccEntry(283,"am",2));	//Armenia (Republic of)
-		table.add(new MccEntry(284,"bg",2));	//Bulgaria (Republic of)
-		table.add(new MccEntry(286,"tr",2));	//Turkey
-		table.add(new MccEntry(288,"fo",2));	//Faroe Islands
-		table.add(new MccEntry(290,"gl",2));	//Greenland (Denmark)
-		table.add(new MccEntry(292,"sm",2));	//San Marino (Republic of)
-		table.add(new MccEntry(293,"sl",2));	//Slovenia (Republic of)
-                table.add(new MccEntry(294,"mk",2));   //The Former Yugoslav Republic of Macedonia
-		table.add(new MccEntry(295,"li",2));	//Liechtenstein (Principality of)
-		table.add(new MccEntry(302,"ca",2, "", "", 11));        //Canada
-		table.add(new MccEntry(308,"pm",2));	//Saint Pierre and Miquelon (Collectivit territoriale de la Rpublique franaise)
-		table.add(new MccEntry(310,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(311,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(312,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(313,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(314,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(315,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(316,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(330,"pr",2));	//Puerto Rico
-		table.add(new MccEntry(332,"vi",2));	//United States Virgin Islands
-		table.add(new MccEntry(334,"mx",3));	//Mexico
-		table.add(new MccEntry(338,"jm",3));	//Jamaica
-		table.add(new MccEntry(340,"gp",2));	//Guadeloupe (French Department of)
-		table.add(new MccEntry(342,"bb",3));	//Barbados
-		table.add(new MccEntry(344,"ag",3));	//Antigua and Barbuda
-		table.add(new MccEntry(346,"ky",3));	//Cayman Islands
-		table.add(new MccEntry(348,"vg",3));	//British Virgin Islands
-		table.add(new MccEntry(350,"bm",2));	//Bermuda
-		table.add(new MccEntry(352,"gd",2));	//Grenada
-		table.add(new MccEntry(354,"ms",2));	//Montserrat
-		table.add(new MccEntry(356,"kn",2));	//Saint Kitts and Nevis
-		table.add(new MccEntry(358,"lc",2));	//Saint Lucia
-		table.add(new MccEntry(360,"vc",2));	//Saint Vincent and the Grenadines
-		table.add(new MccEntry(362,"nl",2));	//Netherlands Antilles
-		table.add(new MccEntry(363,"aw",2));	//Aruba
-		table.add(new MccEntry(364,"bs",2));	//Bahamas (Commonwealth of the)
-		table.add(new MccEntry(365,"ai",3));	//Anguilla
-		table.add(new MccEntry(366,"dm",2));	//Dominica (Commonwealth of)
-		table.add(new MccEntry(368,"cu",2));	//Cuba
-		table.add(new MccEntry(370,"do",2));	//Dominican Republic
-		table.add(new MccEntry(372,"ht",2));	//Haiti (Republic of)
-		table.add(new MccEntry(374,"tt",2));	//Trinidad and Tobago
-		table.add(new MccEntry(376,"tc",2));	//Turks and Caicos Islands
-		table.add(new MccEntry(400,"az",2));	//Azerbaijani Republic
-		table.add(new MccEntry(401,"kz",2));	//Kazakhstan (Republic of)
-		table.add(new MccEntry(402,"bt",2));	//Bhutan (Kingdom of)
-		table.add(new MccEntry(404,"in",2));	//India (Republic of)
-		table.add(new MccEntry(405,"in",2));	//India (Republic of)
-		table.add(new MccEntry(410,"pk",2));	//Pakistan (Islamic Republic of)
-		table.add(new MccEntry(412,"af",2));	//Afghanistan
-		table.add(new MccEntry(413,"lk",2));	//Sri Lanka (Democratic Socialist Republic of)
-		table.add(new MccEntry(414,"mm",2));	//Myanmar (Union of)
-		table.add(new MccEntry(415,"lb",2));	//Lebanon
-		table.add(new MccEntry(416,"jo",2));	//Jordan (Hashemite Kingdom of)
-		table.add(new MccEntry(417,"sy",2));	//Syrian Arab Republic
-		table.add(new MccEntry(418,"iq",2));	//Iraq (Republic of)
-		table.add(new MccEntry(419,"kw",2));	//Kuwait (State of)
-		table.add(new MccEntry(420,"sa",2));	//Saudi Arabia (Kingdom of)
-		table.add(new MccEntry(421,"ye",2));	//Yemen (Republic of)
-		table.add(new MccEntry(422,"om",2));	//Oman (Sultanate of)
-		table.add(new MccEntry(424,"ae",2));	//United Arab Emirates
-		table.add(new MccEntry(425,"il",2));	//Israel (State of)
-		table.add(new MccEntry(426,"bh",2));	//Bahrain (Kingdom of)
-		table.add(new MccEntry(427,"qa",2));	//Qatar (State of)
-		table.add(new MccEntry(428,"mn",2));	//Mongolia
-		table.add(new MccEntry(429,"np",2));	//Nepal
-		table.add(new MccEntry(430,"ae",2));	//United Arab Emirates
-		table.add(new MccEntry(431,"ae",2));	//United Arab Emirates
-		table.add(new MccEntry(432,"ir",2));	//Iran (Islamic Republic of)
-		table.add(new MccEntry(434,"uz",2));	//Uzbekistan (Republic of)
-		table.add(new MccEntry(436,"tj",2));	//Tajikistan (Republic of)
-		table.add(new MccEntry(437,"kg",2));	//Kyrgyz Republic
-		table.add(new MccEntry(438,"tm",2));	//Turkmenistan
-		table.add(new MccEntry(440,"jp",2,"Asia/Tokyo","ja", 14));              //Japan
-		table.add(new MccEntry(441,"jp",2,"Asia/Tokyo","ja", 14));              //Japan
-		table.add(new MccEntry(450,"kr",2));	//Korea (Republic of)
-		table.add(new MccEntry(452,"vn",2));	//Viet Nam (Socialist Republic of)
-		table.add(new MccEntry(454,"hk",2));	//"Hong Kong, China"
-		table.add(new MccEntry(455,"mo",2));	//"Macao, China"
-		table.add(new MccEntry(456,"kh",2));	//Cambodia (Kingdom of)
-		table.add(new MccEntry(457,"la",2));	//Lao People's Democratic Republic
-		table.add(new MccEntry(460,"cn",2));	//China (People's Republic of)
-		table.add(new MccEntry(461,"cn",2));	//China (People's Republic of)
-		table.add(new MccEntry(466,"tw",2));	//"Taiwan, China"
-		table.add(new MccEntry(467,"kp",2));	//Democratic People's Republic of Korea
-		table.add(new MccEntry(470,"bd",2));	//Bangladesh (People's Republic of)
-		table.add(new MccEntry(472,"mv",2));	//Maldives (Republic of)
-		table.add(new MccEntry(502,"my",2));	//Malaysia
-		table.add(new MccEntry(505,"au",2,"Australia/Sydney","en", 11));        //Australia
-		table.add(new MccEntry(510,"id",2));	//Indonesia (Republic of)
-		table.add(new MccEntry(514,"tl",2));	//Democratic Republic of Timor-Leste
-		table.add(new MccEntry(515,"ph",2));	//Philippines (Republic of the)
-		table.add(new MccEntry(520,"th",2));	//Thailand
-		table.add(new MccEntry(525,"sg",2,"Singapore","en", 11));               //Singapore (Republic of)
-		table.add(new MccEntry(528,"bn",2));	//Brunei Darussalam
-		table.add(new MccEntry(530,"nz",2,"Pacific/Auckland", "en"));	//New Zealand
-		table.add(new MccEntry(534,"mp",2));	//Northern Mariana Islands (Commonwealth of the)
-		table.add(new MccEntry(535,"gu",2));	//Guam
-		table.add(new MccEntry(536,"nr",2));	//Nauru (Republic of)
-		table.add(new MccEntry(537,"pg",2));	//Papua New Guinea
-		table.add(new MccEntry(539,"to",2));	//Tonga (Kingdom of)
-		table.add(new MccEntry(540,"sb",2));	//Solomon Islands
-		table.add(new MccEntry(541,"vu",2));	//Vanuatu (Republic of)
-		table.add(new MccEntry(542,"fj",2));	//Fiji (Republic of)
-		table.add(new MccEntry(543,"wf",2));	//Wallis and Futuna (Territoire franais d'outre-mer)
-		table.add(new MccEntry(544,"as",2));	//American Samoa
-		table.add(new MccEntry(545,"ki",2));	//Kiribati (Republic of)
-		table.add(new MccEntry(546,"nc",2));	//New Caledonia (Territoire franais d'outre-mer)
-		table.add(new MccEntry(547,"pf",2));	//French Polynesia (Territoire franais d'outre-mer)
-		table.add(new MccEntry(548,"ck",2));	//Cook Islands
-		table.add(new MccEntry(549,"ws",2));	//Samoa (Independent State of)
-		table.add(new MccEntry(550,"fm",2));	//Micronesia (Federated States of)
-		table.add(new MccEntry(551,"mh",2));	//Marshall Islands (Republic of the)
-		table.add(new MccEntry(552,"pw",2));	//Palau (Republic of)
-		table.add(new MccEntry(602,"eg",2));	//Egypt (Arab Republic of)
-		table.add(new MccEntry(603,"dz",2));	//Algeria (People's Democratic Republic of)
-		table.add(new MccEntry(604,"ma",2));	//Morocco (Kingdom of)
-		table.add(new MccEntry(605,"tn",2));	//Tunisia
-		table.add(new MccEntry(606,"ly",2));	//Libya (Socialist People's Libyan Arab Jamahiriya)
-		table.add(new MccEntry(607,"gm",2));	//Gambia (Republic of the)
-		table.add(new MccEntry(608,"sn",2));	//Senegal (Republic of)
-		table.add(new MccEntry(609,"mr",2));	//Mauritania (Islamic Republic of)
-		table.add(new MccEntry(610,"ml",2));	//Mali (Republic of)
-		table.add(new MccEntry(611,"gn",2));	//Guinea (Republic of)
-		table.add(new MccEntry(612,"ci",2));	//Cte d'Ivoire (Republic of)
-		table.add(new MccEntry(613,"bf",2));	//Burkina Faso
-		table.add(new MccEntry(614,"ne",2));	//Niger (Republic of the)
-		table.add(new MccEntry(615,"tg",2));	//Togolese Republic
-		table.add(new MccEntry(616,"bj",2));	//Benin (Republic of)
-		table.add(new MccEntry(617,"mu",2));	//Mauritius (Republic of)
-		table.add(new MccEntry(618,"lr",2));	//Liberia (Republic of)
-		table.add(new MccEntry(619,"sl",2));	//Sierra Leone
-		table.add(new MccEntry(620,"gh",2));	//Ghana
-		table.add(new MccEntry(621,"ng",2));	//Nigeria (Federal Republic of)
-		table.add(new MccEntry(622,"td",2));	//Chad (Republic of)
-		table.add(new MccEntry(623,"cf",2));	//Central African Republic
-		table.add(new MccEntry(624,"cm",2));	//Cameroon (Republic of)
-		table.add(new MccEntry(625,"cv",2));	//Cape Verde (Republic of)
-		table.add(new MccEntry(626,"st",2));	//Sao Tome and Principe (Democratic Republic of)
-		table.add(new MccEntry(627,"gq",2));	//Equatorial Guinea (Republic of)
-		table.add(new MccEntry(628,"ga",2));	//Gabonese Republic
-		table.add(new MccEntry(629,"cg",2));	//Congo (Republic of the)
-		table.add(new MccEntry(630,"cg",2));	//Democratic Republic of the Congo
-		table.add(new MccEntry(631,"ao",2));	//Angola (Republic of)
-		table.add(new MccEntry(632,"gw",2));	//Guinea-Bissau (Republic of)
-		table.add(new MccEntry(633,"sc",2));	//Seychelles (Republic of)
-		table.add(new MccEntry(634,"sd",2));	//Sudan (Republic of the)
-		table.add(new MccEntry(635,"rw",2));	//Rwanda (Republic of)
-		table.add(new MccEntry(636,"et",2));	//Ethiopia (Federal Democratic Republic of)
-		table.add(new MccEntry(637,"so",2));	//Somali Democratic Republic
-		table.add(new MccEntry(638,"dj",2));	//Djibouti (Republic of)
-		table.add(new MccEntry(639,"ke",2));	//Kenya (Republic of)
-		table.add(new MccEntry(640,"tz",2));	//Tanzania (United Republic of)
-		table.add(new MccEntry(641,"ug",2));	//Uganda (Republic of)
-		table.add(new MccEntry(642,"bi",2));	//Burundi (Republic of)
-		table.add(new MccEntry(643,"mz",2));	//Mozambique (Republic of)
-		table.add(new MccEntry(645,"zm",2));	//Zambia (Republic of)
-		table.add(new MccEntry(646,"mg",2));	//Madagascar (Republic of)
-		table.add(new MccEntry(647,"re",2));	//Reunion (French Department of)
-		table.add(new MccEntry(648,"zw",2));	//Zimbabwe (Republic of)
-		table.add(new MccEntry(649,"na",2));	//Namibia (Republic of)
-		table.add(new MccEntry(650,"mw",2));	//Malawi
-		table.add(new MccEntry(651,"ls",2));	//Lesotho (Kingdom of)
-		table.add(new MccEntry(652,"bw",2));	//Botswana (Republic of)
-		table.add(new MccEntry(653,"sz",2));	//Swaziland (Kingdom of)
-		table.add(new MccEntry(654,"km",2));	//Comoros (Union of the)
-		table.add(new MccEntry(655,"za",2,"Africa/Johannesburg","en"));	//South Africa (Republic of)
-		table.add(new MccEntry(657,"er",2));	//Eritrea
-		table.add(new MccEntry(702,"bz",2));	//Belize
-		table.add(new MccEntry(704,"gt",2));	//Guatemala (Republic of)
-		table.add(new MccEntry(706,"sv",2));	//El Salvador (Republic of)
-		table.add(new MccEntry(708,"hn",3));	//Honduras (Republic of)
-		table.add(new MccEntry(710,"ni",2));	//Nicaragua
-		table.add(new MccEntry(712,"cr",2));	//Costa Rica
-		table.add(new MccEntry(714,"pa",2));	//Panama (Republic of)
-		table.add(new MccEntry(716,"pe",2));	//Peru
-		table.add(new MccEntry(722,"ar",3));	//Argentine Republic
-		table.add(new MccEntry(724,"br",2));	//Brazil (Federative Republic of)
-		table.add(new MccEntry(730,"cl",2));	//Chile
-		table.add(new MccEntry(732,"co",3));	//Colombia (Republic of)
-		table.add(new MccEntry(734,"ve",2));	//Venezuela (Bolivarian Republic of)
-		table.add(new MccEntry(736,"bo",2));	//Bolivia (Republic of)
-		table.add(new MccEntry(738,"gy",2));	//Guyana
-		table.add(new MccEntry(740,"ec",2));	//Ecuador
-		table.add(new MccEntry(742,"gf",2));	//French Guiana (French Department of)
-		table.add(new MccEntry(744,"py",2));	//Paraguay (Republic of)
-		table.add(new MccEntry(746,"sr",2));	//Suriname (Republic of)
-		table.add(new MccEntry(748,"uy",2));	//Uruguay (Eastern Republic of)
-		table.add(new MccEntry(750,"fk",2));	//Falkland Islands (Malvinas)
-        //table.add(new MccEntry(901,"",2));	//"International Mobile, shared code"
-
-        Collections.sort(table);
-    }
 }
diff --git a/test-runner/android/test/mock/MockPackageManager.java b/test-runner/android/test/mock/MockPackageManager.java
index 4a50c5d..beb9044 100644
--- a/test-runner/android/test/mock/MockPackageManager.java
+++ b/test-runner/android/test/mock/MockPackageManager.java
@@ -22,6 +22,7 @@
 import android.content.IntentSender;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.FeatureInfo;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageInstallObserver;
@@ -424,6 +425,11 @@
     }
     
     @Override
+    public FeatureInfo[] getSystemAvailableFeatures() {
+        throw new UnsupportedOperationException();
+    }
+    
+    @Override
     public boolean isSafeMode() {
         throw new UnsupportedOperationException();
     }
diff --git a/tests/AndroidTests/src/com/android/unit_tests/MccTableTest.java b/tests/AndroidTests/src/com/android/unit_tests/MccTableTest.java
new file mode 100644
index 0000000..875376a
--- /dev/null
+++ b/tests/AndroidTests/src/com/android/unit_tests/MccTableTest.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.unit_tests;
+
+import com.android.internal.telephony.gsm.MccTable;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import android.util.Log;
+
+public class MccTableTest extends AndroidTestCase {
+    private final static String LOG_TAG = "GSM";
+
+    @SmallTest
+    public void testTimeZone() throws Exception {
+        assertEquals(MccTable.defaultTimeZoneForMcc(208), "Europe/Paris");
+        assertEquals(MccTable.defaultTimeZoneForMcc(232), "Europe/Vienna");
+        assertEquals(MccTable.defaultTimeZoneForMcc(655), "Africa/Johannesburg");
+        assertEquals(MccTable.defaultTimeZoneForMcc(440), "Asia/Tokyo");
+        assertEquals(MccTable.defaultTimeZoneForMcc(441), "Asia/Tokyo");
+        assertEquals(MccTable.defaultTimeZoneForMcc(525), "Singapore");
+        assertEquals(MccTable.defaultTimeZoneForMcc(240), null);  // tz not defined, hence default
+        assertEquals(MccTable.defaultTimeZoneForMcc(0), null);    // mcc not defined, hence default
+        assertEquals(MccTable.defaultTimeZoneForMcc(2000), null); // mcc not defined, hence default
+    }
+
+    @SmallTest
+    public void testCountryCode() throws Exception {
+        assertEquals(MccTable.countryCodeForMcc(270), "lu");
+        assertEquals(MccTable.countryCodeForMcc(202), "gr");
+        assertEquals(MccTable.countryCodeForMcc(750), "fk");
+        assertEquals(MccTable.countryCodeForMcc(646), "mg");
+        assertEquals(MccTable.countryCodeForMcc(314), "us");
+        assertEquals(MccTable.countryCodeForMcc(300), "");  // mcc not defined, hence default
+        assertEquals(MccTable.countryCodeForMcc(0), "");    // mcc not defined, hence default
+        assertEquals(MccTable.countryCodeForMcc(2000), ""); // mcc not defined, hence default
+    }
+
+    @SmallTest
+    public void testLang() throws Exception {
+        assertEquals(MccTable.defaultLanguageForMcc(311), "en");
+        assertEquals(MccTable.defaultLanguageForMcc(232), "de");
+        assertEquals(MccTable.defaultLanguageForMcc(230), "cs");
+        assertEquals(MccTable.defaultLanguageForMcc(204), "nl");
+        assertEquals(MccTable.defaultLanguageForMcc(274), null);  // lang not defined, hence default
+        assertEquals(MccTable.defaultLanguageForMcc(0), null);    // mcc not defined, hence default
+        assertEquals(MccTable.defaultLanguageForMcc(2000), null); // mcc not defined, hence default
+    }
+
+    @SmallTest
+    public void testSmDigits() throws Exception {
+        assertEquals(MccTable.smallestDigitsMccForMnc(312), 3);
+        assertEquals(MccTable.smallestDigitsMccForMnc(430), 2);
+        assertEquals(MccTable.smallestDigitsMccForMnc(365), 3);
+        assertEquals(MccTable.smallestDigitsMccForMnc(536), 2);
+        assertEquals(MccTable.smallestDigitsMccForMnc(352), 2);  // sd not defined, hence default
+        assertEquals(MccTable.smallestDigitsMccForMnc(0), 2);    // mcc not defined, hence default
+        assertEquals(MccTable.smallestDigitsMccForMnc(2000), 2); // mcc not defined, hence default
+    }
+
+    @SmallTest
+    public void testWifi() throws Exception {
+        assertEquals(MccTable.wifiChannelsForMcc(262), 13);
+        assertEquals(MccTable.wifiChannelsForMcc(234), 13);
+        assertEquals(MccTable.wifiChannelsForMcc(505), 11);
+        assertEquals(MccTable.wifiChannelsForMcc(313), 11);
+        assertEquals(MccTable.wifiChannelsForMcc(330), 0);  // wifi not defined, hence default
+        assertEquals(MccTable.wifiChannelsForMcc(0), 0);    // mcc not defined, hence default
+        assertEquals(MccTable.wifiChannelsForMcc(2000), 0); // mcc not defined, hence default
+
+    }
+}
diff --git a/tests/FrameworkTest/res/drawable-hdpi/big_drawable_background.9.png b/tests/FrameworkTest/res/drawable-hdpi/big_drawable_background.9.png
new file mode 100644
index 0000000..53470b8
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/big_drawable_background.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/black_square.png b/tests/FrameworkTest/res/drawable-hdpi/black_square.png
new file mode 100644
index 0000000..77521031
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/black_square.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/black_square_stretchable.9.png b/tests/FrameworkTest/res/drawable-hdpi/black_square_stretchable.9.png
new file mode 100644
index 0000000..4988163
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/black_square_stretchable.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/drawable_background.9.png b/tests/FrameworkTest/res/drawable-hdpi/drawable_background.9.png
new file mode 100644
index 0000000..f692d38
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/drawable_background.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_pause_1.png b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_pause_1.png
new file mode 100644
index 0000000..9edb064
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_pause_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_backward_1.png b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_backward_1.png
new file mode 100644
index 0000000..c4b6b92
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_backward_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_forward_1.png b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_forward_1.png
new file mode 100644
index 0000000..03140f5
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_forward_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/big_drawable_background.9.png b/tests/FrameworkTest/res/drawable-mdpi/big_drawable_background.9.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/big_drawable_background.9.png
rename to tests/FrameworkTest/res/drawable-mdpi/big_drawable_background.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/black_square.png b/tests/FrameworkTest/res/drawable-mdpi/black_square.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/black_square.png
rename to tests/FrameworkTest/res/drawable-mdpi/black_square.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/black_square_stretchable.9.png b/tests/FrameworkTest/res/drawable-mdpi/black_square_stretchable.9.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/black_square_stretchable.9.png
rename to tests/FrameworkTest/res/drawable-mdpi/black_square_stretchable.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/drawable_background.9.png b/tests/FrameworkTest/res/drawable-mdpi/drawable_background.9.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/drawable_background.9.png
rename to tests/FrameworkTest/res/drawable-mdpi/drawable_background.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/sym_now_playing_pause_1.png b/tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_pause_1.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/sym_now_playing_pause_1.png
rename to tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_pause_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/sym_now_playing_skip_backward_1.png b/tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_skip_backward_1.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/sym_now_playing_skip_backward_1.png
rename to tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_skip_backward_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/sym_now_playing_skip_forward_1.png b/tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_skip_forward_1.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/sym_now_playing_skip_forward_1.png
rename to tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_skip_forward_1.png
Binary files differ
diff --git a/tests/appwidgets/AppWidgetHostTest/res/drawable-hdpi/oh_hai_icon.png b/tests/appwidgets/AppWidgetHostTest/res/drawable-hdpi/oh_hai_icon.png
new file mode 100644
index 0000000..2ddde94
--- /dev/null
+++ b/tests/appwidgets/AppWidgetHostTest/res/drawable-hdpi/oh_hai_icon.png
Binary files differ
diff --git a/tests/appwidgets/AppWidgetHostTest/res/drawable/oh_hai_icon.png b/tests/appwidgets/AppWidgetHostTest/res/drawable-mdpi/oh_hai_icon.png
similarity index 100%
rename from tests/appwidgets/AppWidgetHostTest/res/drawable/oh_hai_icon.png
rename to tests/appwidgets/AppWidgetHostTest/res/drawable-mdpi/oh_hai_icon.png
Binary files differ
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index d8215e7..790b474 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -332,9 +332,11 @@
     TARGET_SDK_VERSION_ATTR = 0x01010270,
     TEST_ONLY_ATTR = 0x01010272,
     DENSITY_ATTR = 0x0101026c,
+    GL_ES_VERSION_ATTR = 0x01010281,
     SMALL_SCREEN_ATTR = 0x01010284,
     NORMAL_SCREEN_ATTR = 0x01010285,
     LARGE_SCREEN_ATTR = 0x01010286,
+    REQUIRED_ATTR = 0x0101028e,
 };
 
 const char *getComponentName(String8 &pkgName, String8 &componentName) {
@@ -520,6 +522,8 @@
             bool actWidgetReceivers = false;
             bool actImeService = false;
             bool actWallpaperService = false;
+            bool specCameraFeature = false;
+            bool hasCameraPermission = false;
             int targetSdk = 0;
             int smallScreen = 1;
             int normalScreen = 1;
@@ -706,6 +710,35 @@
                                 NORMAL_SCREEN_ATTR, NULL, 1);
                         largeScreen = getIntegerAttribute(tree,
                                 LARGE_SCREEN_ATTR, NULL, 1);
+                    } else if (tag == "uses-feature") {
+                        String8 name = getAttribute(tree, NAME_ATTR, &error);
+                        if (error == "") {
+                            int req = getIntegerAttribute(tree,
+                                    REQUIRED_ATTR, NULL, 1);
+                            if (name == "android.hardware.camera") {
+                                specCameraFeature = true;
+                            }
+                            printf("uses-feature%s:'%s'\n",
+                                    req ? "" : "-not-required", name.string());
+                        } else {
+                            int vers = getIntegerAttribute(tree,
+                                    GL_ES_VERSION_ATTR, &error);
+                            if (error == "") {
+                                printf("uses-gl-es:'0x%x'\n", vers);
+                            }
+                        }
+                    } else if (tag == "uses-permission") {
+                        String8 name = getAttribute(tree, NAME_ATTR, &error);
+                        if (error == "") {
+                            if (name == "android.permission.CAMERA") {
+                                hasCameraPermission = true;
+                            }
+                            printf("uses-permission:'%s'\n", name.string());
+                        } else {
+                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
+                                    error.string());
+                            goto bail;
+                        }
                     }
                 } else if (depth == 3 && withinApplication) {
                     withinActivity = false;
@@ -737,7 +770,10 @@
                             fprintf(stderr, "ERROR getting 'android:name' attribute for uses-library: %s\n", error.string());
                             goto bail;
                         }
-                        printf("uses-library:'%s'\n", libraryName.string());
+                        int req = getIntegerAttribute(tree,
+                                REQUIRED_ATTR, NULL, 1);
+                        printf("uses-library%s:'%s'\n",
+                                req ? "" : "-not-required", libraryName.string());
                     } else if (tag == "receiver") {
                         withinReceiver = true;
                         receiverName = getAttribute(tree, NAME_ATTR, &error);
@@ -803,6 +839,15 @@
                 }
             }
 
+            if (!specCameraFeature && hasCameraPermission) {
+                // For applications that have not explicitly stated their
+                // camera feature requirements, but have requested the camera
+                // permission, we are going to give them compatibility treatment
+                // of requiring the equivalent to original android devices.
+                printf("uses-feature:'android.hardware.camera'\n");
+                printf("uses-feature:'android.hardware.camera.autofocus'\n");
+            }
+            
             if (hasMainActivity) {
                 printf("main\n");
             }
diff --git a/vpn/java/android/net/vpn/VpnManager.java b/vpn/java/android/net/vpn/VpnManager.java
index f71bbea..6df612e 100644
--- a/vpn/java/android/net/vpn/VpnManager.java
+++ b/vpn/java/android/net/vpn/VpnManager.java
@@ -45,18 +45,25 @@
     /** Key to the error code of a connectivity broadcast event. */
     public static final String BROADCAST_ERROR_CODE = "err";
     /** Error code to indicate an error from authentication. */
-    public static final int VPN_ERROR_AUTH = 1;
+    public static final int VPN_ERROR_AUTH = 51;
     /** Error code to indicate the connection attempt failed. */
-    public static final int VPN_ERROR_CONNECTION_FAILED = 2;
+    public static final int VPN_ERROR_CONNECTION_FAILED = 101;
     /** Error code to indicate the server is not known. */
-    public static final int VPN_ERROR_UNKNOWN_SERVER = 3;
+    public static final int VPN_ERROR_UNKNOWN_SERVER = 102;
     /** Error code to indicate an error from challenge response. */
-    public static final int VPN_ERROR_CHALLENGE = 4;
+    public static final int VPN_ERROR_CHALLENGE = 5;
     /** Error code to indicate an error of remote server hanging up. */
-    public static final int VPN_ERROR_REMOTE_HUNG_UP = 5;
+    public static final int VPN_ERROR_REMOTE_HUNG_UP = 7;
+    /** Error code to indicate an error of remote PPP server hanging up. */
+    public static final int VPN_ERROR_REMOTE_PPP_HUNG_UP = 48;
+    /** Error code to indicate a PPP negotiation error. */
+    public static final int VPN_ERROR_PPP_NEGOTIATION_FAILED = 42;
     /** Error code to indicate an error of losing connectivity. */
-    public static final int VPN_ERROR_CONNECTION_LOST = 6;
-    private static final int VPN_ERROR_NO_ERROR = 0;
+    public static final int VPN_ERROR_CONNECTION_LOST = 103;
+    /** Largest error code used by VPN. */
+    public static final int VPN_ERROR_LARGEST = 200;
+    /** Error code to indicate a successful connection. */
+    public static final int VPN_ERROR_NO_ERROR = 0;
 
     public static final String PROFILES_PATH = "/data/misc/vpn/profiles";